/* Public website styles. Brand colours come from Admin → Settings (CSS variables set in the layout). */
:root {
  --brand: #22306b;
  --accent: #f2a900;
  --ink: #171b2e;
  --muted: #5d6480;
  --paper: #f4f6fb;
  --line: #dfe3ee;
  --madder: #b3362c;
  --font-head: "Anek Latin", "Anek Devanagari", "Mukta", system-ui, sans-serif;
  --font-body: "Mukta", "Noto Sans Devanagari", system-ui, sans-serif;
}
body { font-family: var(--font-body); color: var(--ink); background: #fff; font-size: 1.0625rem; line-height: 1.65; }
h1, h2, h3, h4, h5, .display-font { font-family: var(--font-head); font-weight: 700; letter-spacing: -.01em; line-height: 1.15; color: var(--ink); }
a { color: var(--brand); }
a:focus-visible, button:focus-visible, .btn:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; box-shadow: none; }
.skip-link { position: absolute; left: -999px; top: 0; background: var(--accent); color: #000; padding: .5rem 1rem; z-index: 2000; }
.skip-link:focus { left: 0; }

.btn { font-family: var(--font-head); font-weight: 600; border-radius: 6px; padding: .55rem 1.15rem; }
.btn-brand { background: var(--brand); color: #fff; border: 2px solid var(--brand); }
.btn-brand:hover, .btn-brand:focus { background: color-mix(in srgb, var(--brand) 82%, #000); border-color: color-mix(in srgb, var(--brand) 82%, #000); color: #fff; }
.btn-accent { background: var(--accent); color: #1b1400; border: 2px solid var(--accent); }
.btn-accent:hover, .btn-accent:focus { background: color-mix(in srgb, var(--accent) 86%, #000); border-color: color-mix(in srgb, var(--accent) 86%, #000); color: #1b1400; }
.btn-outline-brand { border: 2px solid var(--brand); color: var(--brand); background: transparent; }
.btn-outline-brand:hover { background: var(--brand); color: #fff; }

/* running-stitch motif (the site's one decorative device) */
.stitch { border: 0; height: 0; border-top: 3px dashed var(--accent); width: 72px; margin: .9rem 0 1.4rem; opacity: 1; }
.text-center > .stitch, .stitch.mx-auto { margin-left: auto; margin-right: auto; }

/* header */
.topbar { background: var(--brand); color: #dfe4f7; font-size: .92rem; }
.topbar a { color: #fff; text-decoration: none; }
.topbar a:hover { text-decoration: underline; }
.brandbar { background: #fff; }
.brand { display: flex; align-items: center; gap: .8rem; text-decoration: none; color: var(--ink); min-width: 0; }
.brand img { height: 58px; width: auto; }
.brand-mark { width: 54px; height: 54px; flex: none; border-radius: 12px; background: var(--brand); color: var(--accent); display: grid; place-items: center; font-family: var(--font-head); font-weight: 800; font-size: 1.5rem; }
.brand-name { font-family: var(--font-head); font-weight: 800; font-size: clamp(1.15rem, 2.6vw, 1.7rem); line-height: 1.1; }
.brand-sub { color: var(--muted); font-size: .92rem; line-height: 1.2; }
.mainnav { background: #fff; border-top: 1px solid var(--line); border-bottom: 3px dashed var(--accent); }
.mainnav .nav-link { font-family: var(--font-head); font-weight: 600; color: var(--ink); padding: .8rem .95rem; }
.mainnav .nav-link:hover, .mainnav .nav-link.active { color: var(--brand); background: var(--paper); }
.mainnav .dropdown-menu { border-radius: 8px; border-color: var(--line); box-shadow: 0 12px 30px rgba(23, 27, 46, .12); }
.mainnav .dropdown-item { padding: .5rem 1rem; }
.mainnav .dropdown-item:active { background: var(--brand); }

/* hero */
.hero { position: relative; background: var(--brand); }
.hero .carousel-item { height: clamp(360px, 52vw, 540px); }
.hero .carousel-item img { width: 100%; height: 100%; object-fit: cover; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(14, 18, 44, .78) 0%, rgba(14, 18, 44, .35) 55%, rgba(14, 18, 44, 0) 100%); }
.hero-caption { position: absolute; inset: 0; display: flex; align-items: center; }
.hero-caption h1, .hero-caption .h1 { color: #fff; font-size: clamp(1.9rem, 4.6vw, 3.5rem); font-weight: 800; max-width: 15ch; }
.hero-caption p { color: #e8ebf8; font-size: clamp(1rem, 1.6vw, 1.25rem); max-width: 42ch; }
.verify-strip { background: var(--ink); color: #fff; }
.verify-strip label { font-family: var(--font-head); font-weight: 600; }
.verify-strip .form-control { border: 0; border-radius: 6px 0 0 6px; }
.verify-strip .btn { border-radius: 0 6px 6px 0; }

/* sections */
.section { padding: clamp(2.5rem, 6vw, 4.5rem) 0; }
.section-tint { background: var(--paper); }
.section-title { font-size: clamp(1.6rem, 3.2vw, 2.3rem); margin: 0; }
.section-lead { color: var(--muted); font-size: 1.1rem; margin: .3rem 0 0; }
.prose { max-width: 72ch; }
.prose h4 { margin-top: 1.6rem; font-size: 1.25rem; }
.prose img { max-width: 100%; height: auto; }

.page-head { background: var(--brand); color: #fff; padding: 2.2rem 0; border-bottom: 3px dashed var(--accent); }
.page-head h1 { color: #fff; font-size: clamp(1.6rem, 3.6vw, 2.4rem); margin: 0; }
.page-head p { margin: .3rem 0 0; color: #d7dcf3; }
.page-head .breadcrumb { margin: 0 0 .5rem; font-size: .92rem; }
.page-head .breadcrumb a, .page-head .breadcrumb-item.active, .page-head .breadcrumb-item::before { color: #c9cff0; }

/* course tiles */
.course-tile { display: block; text-decoration: none; color: inherit; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: #fff; height: 100%; }
.course-tile:hover { border-color: var(--brand); }
.course-tile:hover h3 { color: var(--brand); }
.course-tile .thumb { aspect-ratio: 16 / 10; width: 100%; object-fit: cover; display: block; background: var(--brand); }
.course-tile .body { padding: 1.1rem 1.2rem 1.3rem; }
.course-tile h3 { font-size: 1.3rem; margin: 0 0 .35rem; }
.course-meta { display: flex; flex-wrap: wrap; gap: .35rem 1.1rem; color: var(--muted); font-size: .95rem; margin-top: .7rem; }

/* notice board */
.noticeboard { border: 1px solid var(--line); border-radius: 10px; background: #fff; overflow: hidden; }
.noticeboard-head { background: var(--brand); color: #fff; padding: .8rem 1.1rem; font-family: var(--font-head); font-weight: 700; font-size: 1.15rem; display: flex; justify-content: space-between; align-items: center; }
.noticeboard-list { max-height: 420px; overflow-y: auto; margin: 0; padding: 0; list-style: none; }
.noticeboard-list li + li { border-top: 1px dashed var(--line); }
.noticeboard-list a { display: grid; grid-template-columns: 64px 1fr; gap: .9rem; padding: .85rem 1.1rem; text-decoration: none; color: var(--ink); }
.noticeboard-list a:hover { background: var(--paper); }
.date-chip { text-align: center; border: 2px solid var(--brand); border-radius: 8px; line-height: 1.05; padding: .3rem 0; color: var(--brand); font-family: var(--font-head); align-self: start; }
.date-chip b { display: block; font-size: 1.35rem; }
.date-chip span { font-size: .78rem; font-weight: 600; }
.notice-title { font-weight: 600; }
.notice-excerpt { color: var(--muted); font-size: .95rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* counters */
.counter-band { background: var(--brand); color: #fff; }
.counter { padding: 1.6rem .5rem; text-align: center; }
.counter .num { font-family: var(--font-head); font-weight: 800; font-size: clamp(2rem, 5vw, 3.1rem); line-height: 1; color: var(--accent); }
.counter .lbl { font-family: var(--font-head); font-weight: 600; font-size: 1.1rem; margin-top: .35rem; }
.counter .sub { color: #c9cff0; font-size: .9rem; }

/* learner process: a real sequence, drawn as a stitched path */
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; position: relative; counter-reset: step; padding: 0; margin: 0; list-style: none; }
.steps::before { content: ""; position: absolute; left: 6%; right: 6%; top: 27px; border-top: 3px dashed var(--accent); }
.steps li { position: relative; text-align: center; counter-increment: step; }
.steps li::before { content: counter(step); display: grid; place-items: center; width: 56px; height: 56px; margin: 0 auto .9rem; border-radius: 50%; background: var(--brand); color: #fff; font-family: var(--font-head); font-weight: 800; font-size: 1.4rem; position: relative; box-shadow: 0 0 0 8px var(--paper); }
.steps h3 { font-size: 1.15rem; margin: 0 0 .25rem; }
.steps p { color: var(--muted); margin: 0; font-size: .98rem; }
@media (max-width: 767px) {
  .steps { grid-template-columns: 1fr; gap: 1.4rem; }
  .steps::before { left: 27px; right: auto; top: 10px; bottom: 10px; border-top: 0; border-left: 3px dashed var(--accent); }
  .steps li { text-align: left; padding-left: 80px; min-height: 56px; }
  .steps li::before { position: absolute; left: 0; top: 0; margin: 0; }
}

.affiliation { display: grid; place-items: center; height: 96px; padding: .8rem; border: 1px solid var(--line); border-radius: 10px; background: #fff; text-align: center; font-weight: 600; color: var(--muted); text-decoration: none; }
.affiliation img { max-height: 100%; max-width: 100%; object-fit: contain; }

/* generic cards + forms */
.panel { border: 1px solid var(--line); border-radius: 10px; background: #fff; padding: clamp(1.1rem, 3vw, 1.8rem); }
.form-label { font-weight: 600; margin-bottom: .25rem; }
.form-control, .form-select { border-color: #c9cfe0; border-radius: 6px; padding: .55rem .75rem; }
.form-control:focus, .form-select:focus { border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent); }
fieldset.form-block { border: 1px solid var(--line); border-radius: 10px; padding: 1.3rem 1.3rem .6rem; margin-bottom: 1.5rem; background: #fff; }
fieldset.form-block > legend { float: none; width: auto; font-family: var(--font-head); font-weight: 700; font-size: 1.15rem; padding: 0 .6rem; margin: 0 0 .4rem -.6rem; color: var(--brand); }
.req::after { content: " *"; color: var(--madder); }
.table thead th { font-family: var(--font-head); background: var(--paper); border-bottom: 2px solid var(--brand); white-space: nowrap; }
.pagination .page-link { color: var(--brand); }
.pagination .active .page-link { background: var(--brand); border-color: var(--brand); color: #fff; }

/* verification result */
.verify-result { border: 2px solid #1b7f4b; border-radius: 12px; overflow: hidden; }
.verify-result.invalid { border-color: var(--madder); }
.verify-result-head { background: #1b7f4b; color: #fff; padding: .9rem 1.3rem; font-family: var(--font-head); font-weight: 700; font-size: 1.2rem; }
.verify-result.invalid .verify-result-head { background: var(--madder); }
.detail-list { display: grid; grid-template-columns: max-content 1fr; gap: .45rem 1.4rem; margin: 0; }
.detail-list dt { color: var(--muted); font-weight: 500; }
.detail-list dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
@media (max-width: 575px) { .detail-list { grid-template-columns: 1fr; gap: 0; } .detail-list dd { margin-bottom: .6rem; } }

/* footer */
.site-footer { background: var(--ink); color: #c5cae0; border-top: 3px dashed var(--accent); }
.site-footer h2 { color: #fff; font-size: 1.15rem; margin-bottom: .9rem; }
.site-footer a { color: #c5cae0; text-decoration: none; }
.site-footer a:hover { color: var(--accent); }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: .4rem; }
.footer-bottom { border-top: 1px solid rgba(255, 255, 255, .12); font-size: .92rem; }
.social a { display: inline-grid; place-items: center; width: 38px; height: 38px; border: 1px solid rgba(255, 255, 255, .25); border-radius: 50%; margin-right: .4rem; font-size: 1.1rem; }

.whatsapp-fab { position: fixed; right: 18px; bottom: 18px; width: 54px; height: 54px; border-radius: 50%; background: #1faa59; color: #fff; display: grid; place-items: center; font-size: 1.7rem; z-index: 1000; text-decoration: none; }

/* poster generator */
.poster { width: 100%; max-width: 520px; aspect-ratio: 1 / 1.414; margin: 0 auto; background: #fff; border: 10px solid var(--brand); outline: 3px dashed var(--accent); outline-offset: -18px; padding: 2.4rem 2rem; display: flex; flex-direction: column; text-align: center; }
.poster .p-org { font-family: var(--font-head); font-weight: 800; font-size: 1.5rem; color: var(--brand); }
.poster .p-type { align-self: center; background: var(--accent); color: #1b1400; font-family: var(--font-head); font-weight: 700; padding: .2rem 1rem; border-radius: 99px; margin: .8rem 0; }
.poster .p-name { font-family: var(--font-head); font-weight: 800; font-size: 2rem; line-height: 1.1; margin: auto 0 .4rem; overflow-wrap: anywhere; }
.poster .p-addr { color: var(--muted); overflow-wrap: anywhere; }
.poster .p-foot { margin-top: auto; border-top: 2px dashed var(--line); padding-top: .9rem; font-weight: 600; overflow-wrap: anywhere; }
@media print {
  body.print-poster * { visibility: hidden; }
  body.print-poster .poster, body.print-poster .poster * { visibility: visible; }
  body.print-poster .poster { position: fixed; inset: 0; max-width: none; width: 100%; height: 100%; aspect-ratio: auto; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }

/* wide Bootstrap gutters must not cause sideways scroll on phones */
main, .site-footer { overflow-x: clip; }

/* ---------- coaching-centre home ---------- */
.ticker { background: var(--accent); color: #1b1400; font-weight: 600; overflow: hidden; }
.ticker .label { background: var(--ink); color: #fff; padding: .45rem 1rem; font-family: var(--font-head); white-space: nowrap; position: relative; z-index: 1; }
.ticker-track { display: flex; gap: 3rem; white-space: nowrap; padding: .45rem 0; animation: ticker 40s linear infinite; }
.ticker:hover .ticker-track, .ticker:focus-within .ticker-track { animation-play-state: paused; }
.ticker a { color: #1b1400; text-decoration: none; }
.ticker a:hover { text-decoration: underline; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }

.hero-coach { position: relative; background: var(--brand); color: #fff; overflow: hidden; }
.hero-coach .bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; }
.hero-coach::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, color-mix(in srgb, var(--brand) 96%, #000) 0%, color-mix(in srgb, var(--brand) 80%, transparent) 55%, color-mix(in srgb, var(--brand) 55%, transparent) 100%); }
.hero-coach .container { position: relative; z-index: 1; padding-top: clamp(2.2rem, 6vw, 4.5rem); padding-bottom: clamp(2.2rem, 6vw, 4.5rem); }
.hero-badge { display: inline-flex; align-items: center; gap: .5rem; background: var(--accent); color: #1b1400; font-family: var(--font-head); font-weight: 700; padding: .3rem .9rem; border-radius: 99px; font-size: .95rem; }
.hero-coach h1 { color: #fff; font-weight: 800; font-size: clamp(2.1rem, 5.2vw, 3.9rem); margin: 1rem 0 .9rem; max-width: 14ch; }
.hero-coach .lead { color: #e3e7f8; font-size: clamp(1.05rem, 1.6vw, 1.25rem); max-width: 46ch; }
.hero-points { list-style: none; padding: 0; margin: 1.4rem 0 0; display: flex; flex-wrap: wrap; gap: .5rem 1.6rem; color: #fff; font-weight: 500; }
.hero-points i { color: var(--accent); margin-right: .35rem; }
.enquiry-card { background: #fff; color: var(--ink); border-radius: 14px; padding: 1.5rem; border-top: 6px solid var(--accent); box-shadow: 0 24px 60px rgba(8, 12, 36, .35); }
.enquiry-card h2 { font-size: 1.4rem; margin: 0 0 .2rem; }
.enquiry-card p { color: var(--muted); margin-bottom: 1rem; }

.stat-strip { background: var(--ink); color: #fff; }
.stat-strip .counter { padding: 1.3rem .5rem; }
.stat-strip .col-6 + .col-6 { border-left: 1px dashed rgba(255, 255, 255, .18); }
@media (max-width: 767px) { .stat-strip .col-6:nth-child(odd) { border-left: 0; } .stat-strip .col-6:nth-child(n+3) { border-top: 1px dashed rgba(255, 255, 255, .18); } }

.course-tile .ribbon { position: absolute; top: .8rem; left: .8rem; background: var(--accent); color: #1b1400; font-family: var(--font-head); font-weight: 700; font-size: .85rem; padding: .15rem .7rem; border-radius: 99px; }
.course-tile { position: relative; display: flex; flex-direction: column; }
.course-tile .body { flex: 1; display: flex; flex-direction: column; }
.course-tile .foot { margin-top: auto; padding-top: .9rem; display: flex; justify-content: space-between; align-items: center; border-top: 1px dashed var(--line); }
.course-tile .fee { font-family: var(--font-head); font-weight: 800; font-size: 1.25rem; color: var(--brand); }

.feature-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); background: #fff; border-radius: 12px; overflow: hidden; }
.feature { padding: 1.5rem 1.4rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); display: grid; grid-template-columns: 52px 1fr; gap: 1rem; }
.feature i { width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center; font-size: 1.5rem; background: color-mix(in srgb, var(--accent) 22%, #fff); color: var(--brand); }
.feature h3 { font-size: 1.15rem; margin: 0 0 .25rem; }
.feature p { margin: 0; color: var(--muted); font-size: .98rem; }
@media (max-width: 991px) { .feature-list { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .feature-list { grid-template-columns: 1fr; } }

.faculty { text-align: center; }
.faculty .photo { width: 132px; height: 132px; border-radius: 50%; object-fit: cover; border: 4px solid #fff; outline: 3px dashed var(--accent); outline-offset: 3px; margin: 6px auto 1rem; display: grid; place-items: center; background: var(--brand); color: var(--accent); font-family: var(--font-head); font-weight: 800; font-size: 2.4rem; }
.faculty h3 { font-size: 1.15rem; margin: 0; }
.faculty .role { color: var(--brand); font-weight: 600; }
.faculty .meta { color: var(--muted); font-size: .95rem; }

.review { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 1.4rem; height: 100%; display: flex; flex-direction: column; border-left: 5px solid var(--accent); }
.review .stars { color: var(--accent); letter-spacing: .1em; }
.review blockquote { margin: .6rem 0 1rem; font-size: 1.05rem; flex: 1; }
.review .who { display: flex; align-items: center; gap: .8rem; }
.review .who img, .review .who .ph { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; background: var(--brand); color: #fff; display: grid; place-items: center; font-family: var(--font-head); font-weight: 700; }
.review .who b { display: block; line-height: 1.2; }
.review .who span { color: var(--muted); font-size: .92rem; }

.gallery-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .8rem; }
.gallery-grid a { display: block; aspect-ratio: 4 / 3; border-radius: 10px; overflow: hidden; background: var(--paper); position: relative; }
.gallery-grid img { width: 100%; height: 100%; object-fit: cover; }
.gallery-grid span { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.2rem .7rem .5rem; color: #fff; font-size: .9rem; background: linear-gradient(transparent, rgba(0, 0, 0, .7)); }
@media (max-width: 767px) { .gallery-grid { grid-template-columns: repeat(2, 1fr); } }

.accordion-button { font-family: var(--font-head); font-weight: 600; font-size: 1.08rem; }
.accordion-button:not(.collapsed) { background: color-mix(in srgb, var(--accent) 18%, #fff); color: var(--ink); box-shadow: none; }
.accordion-button:focus { box-shadow: none; }

.cta-band { background: var(--accent); color: #1b1400; }
.cta-band h2 { color: #1b1400; font-size: clamp(1.5rem, 3vw, 2.1rem); margin: 0; }
.cta-band .btn-brand { background: var(--ink); border-color: var(--ink); }
.subject-list { list-style: none; padding: 0; margin: 0; counter-reset: sub; }
.subject-list li { counter-increment: sub; display: flex; justify-content: space-between; gap: 1rem; padding: .55rem 0; border-bottom: 1px dashed var(--line); }
.subject-list li::before { content: counter(sub) "."; color: var(--muted); width: 1.6rem; flex: none; }

/* ---------- responsive public portal home ---------- */
:root { --portal-ink: #193c37; --portal-green: #16634d; --portal-lime: #d2df68; --portal-paper: #f6f8f3; --portal-border: #dce5de; }
.portal-topbar { background: #123d35; color: #eff7f2; min-height: 38px; }
.portal-topbar a { color: inherit; text-decoration: none; }
.portal-topbar a:hover { color: var(--portal-lime); }
.portal-skip-inline { font-weight: 600; }
.portal-text-tools { display: flex; align-items: center; gap: 3px; padding-right: .65rem; border-right: 1px solid rgba(255,255,255,.25); }
.portal-text-tools button { border: 0; background: transparent; color: inherit; padding: .12rem .28rem; line-height: 1; font-weight: 700; }
.portal-text-tools button:hover, .portal-text-tools button:focus-visible { color: var(--portal-lime); outline: 1px solid currentColor; }
.portal-brandbar { background: #fff; border-bottom: 1px solid var(--portal-border); }
.portal-brandbar .brand-mark { background: #e7f0e9; color: var(--portal-green); border-radius: 50%; }
.portal-brandbar .brand-name { color: var(--portal-ink); font-size: clamp(1.35rem, 2.6vw, 2rem); }
.portal-brand-overline { color: #64786f; text-transform: uppercase; letter-spacing: .09em; font-weight: 700; font-size: .73rem; }
.portal-mainnav { background: #fff; border-bottom: 3px solid var(--portal-lime); box-shadow: 0 5px 16px rgba(25,60,55,.06); }
.portal-mainnav .nav-link { color: var(--portal-ink); font-weight: 600; padding: .85rem .9rem; }
.portal-mainnav .nav-link:hover, .portal-mainnav .nav-link.active { color: var(--portal-green); background: #eff5ef; }
.portal-mainnav .dropdown-menu { border-color: var(--portal-border); box-shadow: 0 12px 32px rgba(25,60,55,.13); }
.portal-mainnav .dropdown-item:hover { color: var(--portal-green); background: #eff5ef; }
.portal-alert { background: var(--portal-lime); color: var(--portal-ink); overflow: hidden; }
.portal-alert .container { min-height: 48px; }
.portal-alert-label { flex: none; display: inline-flex; align-items: center; gap: .45rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; font-size: .78rem; }
.portal-alert-viewport { overflow: hidden; flex: 1; min-width: 0; }
.portal-alert-track { display: flex; width: max-content; gap: 2.5rem; animation: portal-marquee 48s linear infinite; }
.portal-alert:hover .portal-alert-track, .portal-alert:focus-within .portal-alert-track { animation-play-state: paused; }
.portal-alert-track a { color: var(--portal-ink); font-weight: 600; text-decoration: none; white-space: nowrap; }
.portal-alert-track a:hover { text-decoration: underline; }
.portal-alert-track span { font-size: .82rem; font-weight: 500; opacity: .75; }
.portal-alert-more { flex: none; color: var(--portal-ink); font-weight: 700; text-decoration: none; font-size: .88rem; }
@keyframes portal-marquee { to { transform: translateX(-50%); } }
.portal-hero { position: relative; background: #163f37; color: white; }
.portal-hero .carousel-item, .portal-hero-static { position: relative; min-height: clamp(420px, 48vw, 620px); overflow: hidden; }
.portal-hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.portal-hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(11,47,41,.91) 0%, rgba(18,69,58,.76) 48%, rgba(18,69,58,.17) 100%); }
.portal-hero-content { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; min-height: inherit; padding-top: 4rem; padding-bottom: 5rem; }
.portal-hero-content h1 { color: #fff; max-width: 15ch; font-size: clamp(2.2rem, 5.5vw, 4.5rem); line-height: 1.04; margin: 1rem 0; font-weight: 800; }
.portal-hero-content p { max-width: 56ch; color: #e5f0e9; font-size: clamp(1.05rem, 1.7vw, 1.25rem); margin: 0; }
.portal-eyebrow, .portal-kicker { display: inline-flex; align-items: center; gap: .45rem; color: var(--portal-green); font-weight: 800; text-transform: uppercase; letter-spacing: .12em; font-size: .76rem; }
.portal-eyebrow { color: #f0f6bf; }
.btn-portal-primary { background: var(--portal-lime); color: #203c31; border-color: var(--portal-lime); font-weight: 700; }
.btn-portal-primary:hover { background: #e0e99a; border-color: #e0e99a; color: #17342c; }
.btn-portal-light { background: rgba(255,255,255,.12); color: #fff; border-color: rgba(255,255,255,.72); font-weight: 700; }
.btn-portal-light:hover { background: #fff; color: var(--portal-ink); }
.portal-hero .carousel-indicators { z-index: 3; }
.portal-hero .carousel-control-prev, .portal-hero .carousel-control-next { width: 8%; z-index: 3; }
.portal-hero-bottom { position: relative; z-index: 2; background: #123d35; color: #eef5ef; padding: .85rem 0; font-size: .9rem; }
.portal-hero-bottom .container > span { display: inline-flex; gap: .55rem; align-items: center; }
.portal-hero-bottom a { color: var(--portal-lime); font-weight: 700; text-decoration: none; }
.portal-quicklinks { position: relative; z-index: 4; margin-top: -1px; background: #fff; border-bottom: 1px solid var(--portal-border); }
.portal-quick-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.portal-quick-grid > a { display: flex; align-items: center; gap: .8rem; min-width: 0; padding: 1.2rem .9rem; color: var(--portal-ink); text-decoration: none; border-right: 1px solid var(--portal-border); }
.portal-quick-grid > a:first-child { border-left: 1px solid var(--portal-border); }
.portal-quick-grid > a:hover { background: #f2f7f1; }
.portal-quick-icon { width: 44px; height: 44px; flex: none; display: grid; place-items: center; border-radius: 50%; background: #e9f2e9; color: var(--portal-green); font-size: 1.25rem; }
.portal-quick-grid b, .portal-quick-grid small { display: block; }
.portal-quick-grid b { line-height: 1.2; }
.portal-quick-grid small { color: #687a71; margin-top: .2rem; font-size: .8rem; }
.portal-quick-arrow { margin-left: auto; color: #809188; }
.portal-section { padding: clamp(3.2rem, 6vw, 5.5rem) 0; }
.portal-section h2, .portal-stats h2, .portal-partners h2 { color: var(--portal-ink); font-size: clamp(1.8rem, 3.2vw, 2.55rem); line-height: 1.12; margin: .5rem 0 .75rem; font-weight: 800; }
.portal-section-heading { display: flex; justify-content: space-between; align-items: end; gap: 1.5rem; margin-bottom: 1.8rem; }
.portal-section-heading p, .portal-section-lead { color: #61756b; max-width: 68ch; margin: 0; font-size: 1.05rem; }
.portal-text-link { color: var(--portal-green); font-weight: 800; text-decoration: none; white-space: nowrap; }
.portal-text-link:hover { color: #0b4937; text-decoration: underline; }
.portal-about { background: var(--portal-paper); }
.portal-prose { color: #465c52; line-height: 1.8; }
.portal-prose > :last-child { margin-bottom: 0; }
.portal-about-image { border-radius: 18px; overflow: hidden; box-shadow: 0 20px 48px rgba(25,60,55,.16); transform: rotate(1.2deg); }
.portal-about-image img { width: 100%; min-height: 300px; max-height: 420px; object-fit: cover; display: block; }
.portal-about-card { min-height: 300px; border-radius: 18px; padding: clamp(2rem, 5vw, 3.2rem); color: #fff; background: radial-gradient(circle at 90% 15%, rgba(210,223,104,.35), transparent 30%), linear-gradient(135deg,#155a47,#183a34); box-shadow: 0 20px 48px rgba(25,60,55,.15); }
.portal-about-card h3 { color: #fff; font-size: 1.7rem; margin: 1.1rem 0 .5rem; }
.portal-about-card p { color: #d7e9dc; margin: 0; }
.portal-about-emblem { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--portal-lime); color: var(--portal-ink); font-size: 1.8rem; }
.portal-stats { padding: 3.5rem 0; background: #163f37; color: #fff; }
.portal-stats-heading { text-align: center; margin-bottom: 2rem; }
.portal-stats .portal-kicker { color: #dce99a; }
.portal-stats h2 { color: #fff; margin-bottom: 0; }
.portal-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.portal-stat { text-align: center; padding: 1rem 1.5rem; border-right: 1px solid rgba(255,255,255,.18); }
.portal-stat:last-child { border: 0; }
.portal-stat-icon { display: inline-grid; place-items: center; width: 45px; height: 45px; border-radius: 50%; color: #183d32; background: var(--portal-lime); font-size: 1.25rem; }
.portal-stat-number { color: #e0e99a; font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; line-height: 1.2; margin-top: .55rem; }
.portal-stat-label { font-size: 1.05rem; font-weight: 700; }
.portal-stat small { color: #bed2c6; }
.portal-panel { height: 100%; border: 1px solid var(--portal-border); border-radius: 12px; background: #fff; overflow: hidden; }
.portal-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 1.25rem; background: #f2f6f1; border-bottom: 1px solid var(--portal-border); }
.portal-panel-head h3 { margin: 0; color: var(--portal-ink); font-size: 1.15rem; font-weight: 800; }
.portal-panel-head h3 i { color: var(--portal-green); margin-right: .35rem; }
.portal-panel-head > span { color: #65786e; font-size: .82rem; }
.portal-panel-head > a { color: var(--portal-green); white-space: nowrap; text-decoration: none; font-weight: 700; font-size: .9rem; }
.portal-notice-list { max-height: 470px; overflow-y: auto; }
.portal-notice { display: grid; grid-template-columns: 58px 1fr 20px; gap: .9rem; align-items: center; padding: .95rem 1.2rem; color: var(--portal-ink); text-decoration: none; border-bottom: 1px solid #edf1ed; }
.portal-notice:last-child { border-bottom: 0; }
.portal-notice:hover { background: #f8faf7; }
.portal-date { text-align: center; padding: .35rem .2rem; background: #edf4ec; border-radius: 8px; color: var(--portal-green); }
.portal-date b, .portal-date small { display: block; line-height: 1.1; }
.portal-date b { font-size: 1.35rem; }
.portal-date small { font-size: .7rem; }
.portal-notice-content b, .portal-notice-content small { display: block; }
.portal-notice-content b { line-height: 1.25; }
.portal-notice-content small { color: #6a7b72; margin-top: .25rem; line-height: 1.35; }
.portal-notice > i { color: #82938a; }
.portal-story { display: grid; grid-template-columns: 104px 1fr; gap: .9rem; padding: .9rem 1rem; color: var(--portal-ink); text-decoration: none; border-bottom: 1px solid #edf1ed; }
.portal-story:last-child { border-bottom: 0; }
.portal-story:hover { background: #f8faf7; }
.portal-story > img, .portal-story-placeholder { width: 104px; height: 88px; object-fit: cover; border-radius: 7px; background: #e7f0e9; }
.portal-story-placeholder { display: grid; place-items: center; color: var(--portal-green); font-size: 1.6rem; }
.portal-story > span:last-child { min-width: 0; }
.portal-story small, .portal-story b, .portal-story em { display: block; }
.portal-story small { color: #718178; font-size: .77rem; margin-bottom: .18rem; }
.portal-story b { line-height: 1.2; }
.portal-story em { color: #687b71; font-style: normal; font-size: .86rem; line-height: 1.3; margin-top: .2rem; }
.portal-empty { padding: 2rem 1.2rem; color: #6b7e74; }
.portal-tint { background: var(--portal-paper); }
.portal-feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.portal-feature { background: #fff; border: 1px solid var(--portal-border); border-radius: 12px; padding: 1.5rem; }
.portal-feature > span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: #e9f2e9; color: var(--portal-green); font-size: 1.4rem; }
.portal-feature h3 { margin: 1rem 0 .4rem; color: var(--portal-ink); font-size: 1.15rem; }
.portal-feature p { margin: 0; color: #687b71; }
.portal-feature-copy { margin-top: 1.5rem; }
.portal-resource-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.portal-resource { display: flex; position: relative; min-height: 125px; gap: 1rem; align-items: center; padding: 1rem 2.5rem 1rem 1rem; border: 1px solid var(--portal-border); border-radius: 12px; color: var(--portal-ink); text-decoration: none; background: #fff; transition: transform .18s ease, box-shadow .18s ease; }
.portal-resource:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(25,60,55,.1); }
.portal-resource > img, .portal-resource-icon { width: 72px; height: 72px; flex: none; object-fit: cover; border-radius: 10px; }
.portal-resource-icon { display: grid; place-items: center; background: #e9f2e9; color: var(--portal-green); font-size: 1.7rem; }
.portal-resource-copy { display: block; min-width: 0; }
.portal-resource-copy small, .portal-resource-copy b, .portal-resource-copy em { display: block; }
.portal-resource-copy small { text-transform: uppercase; letter-spacing: .06em; color: var(--portal-green); font-size: .68rem; font-weight: 800; }
.portal-resource-copy b { margin: .2rem 0; }
.portal-resource-copy em { color: #697b72; font-size: .86rem; line-height: 1.3; font-style: normal; }
.portal-resource-arrow { position: absolute; top: 1rem; right: 1rem; color: #71847a; }
.portal-gallery-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 190px; gap: .9rem; }
.portal-gallery-grid a { position: relative; border-radius: 12px; overflow: hidden; background: #dde8df; }
.portal-gallery-grid a:nth-child(1) { grid-row: span 2; }
.portal-gallery-grid img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.portal-gallery-grid a:hover img { transform: scale(1.04); }
.portal-gallery-grid a span { position: absolute; left: 0; right: 0; bottom: 0; padding: 2rem .9rem .75rem; color: #fff; font-weight: 700; background: linear-gradient(transparent, rgba(14,41,32,.8)); }
.portal-partners { background: #fff; padding: 3rem 0; border-top: 1px solid var(--portal-border); }
.portal-partners .portal-section-heading { margin-bottom: 1.2rem; }
.portal-partners h2 { font-size: 1.7rem; }
.portal-partner-grid { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem; }
.portal-partner { min-width: 130px; height: 72px; display: grid; place-items: center; padding: .7rem 1.2rem; border: 1px solid var(--portal-border); border-radius: 8px; text-decoration: none; color: #4f665b; font-weight: 700; }
.portal-partner img { max-width: 150px; max-height: 48px; object-fit: contain; }
.portal-cta { padding: 3rem 0; background: var(--portal-lime); color: var(--portal-ink); }
.portal-cta .portal-kicker { color: #476242; }
.portal-cta h2 { font-size: clamp(1.8rem, 3.5vw, 2.6rem); font-weight: 800; margin: .35rem 0; }
.portal-cta p { margin: 0; }
.portal-cta .btn-portal-primary { background: #173f36; border-color: #173f36; color: #fff; }
.portal-cta .btn-portal-primary:hover { background: #0e3028; border-color: #0e3028; }
.portal-cta .btn-portal-primary:focus-visible, .portal-text-link:focus-visible, .portal-resource:focus-visible, .portal-quick-grid a:focus-visible { outline: 3px solid #bc6d28; outline-offset: 3px; }
.portal-brand-copy { min-width: 0; }
@media (max-width: 991px) {
  .portal-quick-grid { grid-template-columns: repeat(2, 1fr); }
  .portal-quick-grid > a:nth-child(3) { border-left: 1px solid var(--portal-border); }
  .portal-quick-grid > a:nth-child(n+3) { border-top: 1px solid var(--portal-border); }
  .portal-resource-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .portal-alert-more { display: none; }
  .portal-hero .carousel-item, .portal-hero-static { min-height: 470px; }
  .portal-hero-content { padding-top: 3.5rem; padding-bottom: 4rem; }
  .portal-hero-shade { background: linear-gradient(90deg, rgba(11,47,41,.87), rgba(18,69,58,.44)); }
  .portal-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .portal-stat:nth-child(2) { border-right: 0; }
  .portal-stat:nth-child(n+3) { border-top: 1px solid rgba(255,255,255,.18); }
  .portal-feature-grid { grid-template-columns: repeat(2, 1fr); }
  .portal-gallery-grid { grid-auto-rows: 150px; }
}
@media (max-width: 575px) {
  .portal-topbar .container { justify-content: center !important; }
  .portal-topbar .container > div:first-child { display: none !important; }
  .portal-topbar .container > div:last-child { width: 100%; justify-content: space-between; }
  .portal-brandbar .container { align-items: flex-start !important; }
  .portal-brandbar .brand { align-items: flex-start; }
  .portal-brandbar .brand img { max-width: 48px; max-height: 48px; }
  .portal-brand-overline { font-size: .61rem; }
  .portal-quick-grid > a { padding: .9rem .55rem; gap: .5rem; }
  .portal-quick-icon { width: 36px; height: 36px; font-size: 1rem; }
  .portal-quick-grid b { font-size: .87rem; }
  .portal-quick-grid small { font-size: .72rem; }
  .portal-quick-arrow { display: none; }
  .portal-section-heading { align-items: flex-start; flex-direction: column; gap: .75rem; }
  .portal-notice { grid-template-columns: 48px 1fr; gap: .65rem; padding: .85rem; }
  .portal-notice > i { display: none; }
  .portal-story { grid-template-columns: 78px 1fr; gap: .7rem; padding: .8rem; }
  .portal-story > img, .portal-story-placeholder { width: 78px; height: 76px; }
  .portal-feature-grid, .portal-resource-grid { grid-template-columns: 1fr; }
  .portal-feature { padding: 1.2rem; }
  .portal-gallery-grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 125px; }
  .portal-gallery-grid a:nth-child(1) { grid-row: span 1; }
  .portal-gallery-grid a:nth-child(1) { grid-column: span 2; }
  .portal-stat { padding: .8rem .5rem; }
  .portal-hero-bottom .container { align-items: flex-start !important; }
}
@media (prefers-reduced-motion: reduce) { .portal-alert-track { animation: none; } .portal-resource, .portal-gallery-grid img { transition: none; } }
.subject-list li span:first-of-type { flex: 1; font-weight: 600; }
