/* =====================================================================
   RGGDC Shimla — public site. Colours come from theme.css (blue + white).
   ===================================================================== */
:root {
  --radius: 10px;
  --wrap: 1200px;
  --ridge: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath fill='%23ffffff' fill-opacity='.07' d='M0 120V78l90-30 70 22 110-52 95 40 80-26 120 46 90-34 130 50 100-36 95 28 120-48 110 40 90-22 130 44v38z'/%3E%3Cpath fill='%23ffffff' fill-opacity='.10' d='M0 120V96l120-24 80 16 140-38 110 34 90-14 150 30 120-28 140 32 110-20 130 22 140-30 90 20v44z'/%3E%3C/svg%3E");
}
html { font-size: 100%; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
html.fs-1 { font-size: 90%; } html.fs1 { font-size: 112.5%; } html.fs2 { font-size: 125%; }
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-family: var(--font); font-size: 1.0625rem; line-height: 1.6; color: var(--text-600); background: var(--white); }
html[lang=hi] body, [lang=hi] { font-family: var(--font-hi); }
img { max-width: 100%; height: auto; }
a { color: var(--blue-700); text-underline-offset: 2px; }
a:hover { color: var(--blue-800); text-decoration: underline; }
.prose a:visited, .page-body p a:visited, .page-body li a:visited { color: var(--blue-800); }
:focus-visible { outline: 3px solid var(--blue-400); outline-offset: 2px; border-radius: 2px; }
.topbar :focus-visible, .mainnav :focus-visible, .page-hero :focus-visible, .hero :focus-visible, .dash-band :focus-visible, .footer :focus-visible { outline-color: #fff; }
h1, h2, h3 { line-height: 1.25; color: var(--blue-800); font-weight: 700; }
.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 16px; }
.sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.muted { color: var(--text-600); }
.nowrap { white-space: nowrap; }
.skip-link { position: absolute; left: 12px; top: -80px; z-index: 100; background: #fff; color: var(--blue-700); padding: 10px 16px; border-radius: 0 0 8px 8px; font-weight: 700; }
.skip-link:focus { top: 0; }
main:focus { outline: none; }

/* ---------- top bar ---------- */
.topbar { background: var(--blue-900); color: #E6F0FC; font-size: .8125rem; }
.topbar-in { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 40px; flex-wrap: wrap; }
.topbar ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.topbar a { color: #fff; text-decoration: none; }
.topbar a:hover { text-decoration: underline; color: #fff; }
.topbar .ico { opacity: .8; }
.emergency .pill { display: inline-block; background: var(--blue-700); border: 1px solid rgba(255,255,255,.35); padding: 3px 10px; border-radius: 999px; }
.top-tools button, .lang-link { font: inherit; color: #fff; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.25); border-radius: 6px; min-width: 30px; height: 28px; padding: 0 7px; cursor: pointer; }
.top-tools button:hover, .lang-link:hover { background: rgba(255,255,255,.2); }
.font-tools div { display: flex; gap: 4px; }
.lang-link { display: inline-flex; align-items: center; font-weight: 700; background: #fff; border-color: #fff; color: var(--blue-900) !important; }
.lang-link:hover { background: var(--blue-100); }

/* ---------- masthead ---------- */
.masthead { background: #fff; border-bottom: 1px solid var(--border); }
.masthead-in { padding: 14px 16px; }
.brand { display: flex; align-items: center; gap: 16px; text-decoration: none; color: inherit; }
.brand:hover, .brand:focus { text-decoration: none; color: inherit; }
.brand img { width: 84px; height: 84px; object-fit: contain; }
.brand-text { display: flex; flex-direction: column; }
.brand .govt { font-size: .8125rem; font-weight: 700; color: var(--blue-700); letter-spacing: .04em; text-transform: uppercase; }
html[lang=hi] .brand .govt { text-transform: none; letter-spacing: 0; }
.brand .name { font-size: 1.6rem; font-weight: 700; color: var(--blue-800); line-height: 1.2; }
.brand .affil { font-size: .8125rem; color: var(--text-600); }

/* ---------- main nav ---------- */
.mainnav { background: var(--blue-800); position: sticky; top: 0; z-index: 40; box-shadow: 0 2px 8px rgba(0,0,0,.12); }
.menu { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; }
.menu > li > a { display: block; padding: 13px 13px; color: #fff; text-decoration: none; font-weight: 600; font-size: .9rem; border-bottom: 3px solid transparent; }
.menu > li > a:hover, .menu > li > a[aria-current] { background: var(--blue-700); border-bottom-color: #fff; color: #fff; }
.nav-toggle { display: none; }

/* ---------- page hero ---------- */
.page-hero { background: var(--ridge) bottom / 100% 70px no-repeat, linear-gradient(135deg, var(--blue-900) 0%, var(--blue-800) 60%, var(--blue-700) 100%); color: #fff; padding: 28px 0 56px; }
.page-hero h1 { color: #fff; margin: 6px 0 8px; font-size: 2rem; max-width: 900px; }
.page-hero h1.h1-long { font-size: 1.55rem; }
.page-hero .crumbs { font-size: .85rem; color: var(--blue-200); }
.page-hero .crumbs a { color: #fff; }
.hero-sub { margin: 0; color: #E6F0FC; max-width: 820px; }
.hero-ref { margin: 6px 0 0; font-size: .8125rem; color: var(--blue-200); }
.hero-kicker { margin: 10px 0 0; text-transform: uppercase; letter-spacing: .06em; font-size: .75rem; color: var(--blue-200); font-weight: 700; }
.page-body { padding-top: 28px; padding-bottom: 40px; }

/* ---------- buttons ---------- */
.btn { display: inline-flex; align-items: center; gap: 8px; font: inherit; font-weight: 600; padding: 10px 18px; min-height: 44px; border-radius: 8px; border: 1px solid var(--blue-700); background: #fff; color: var(--blue-700); text-decoration: none; cursor: pointer; }
.btn:hover { background: var(--blue-50); color: var(--blue-800); }
.btn-primary { background: var(--blue-700); border-color: var(--blue-700); color: #fff; }
.btn-primary:hover { background: var(--blue-600); border-color: var(--blue-600); color: #fff; }

/* ---------- nodal officer box ---------- */
.nodal-box { display: flex; gap: 14px; align-items: center; background: var(--blue-50); border: 1px solid var(--blue-200); border-left: 5px solid var(--blue-700); border-radius: var(--radius); padding: 14px 18px; margin: 0 0 22px; }
.nodal-box p { margin: 0; }
.nodal-ico { width: 48px; height: 48px; border-radius: 50%; background: #fff; color: var(--blue-700); display: grid; place-items: center; flex: none; }
.nodal-label { font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: var(--blue-800); font-weight: 700; }
html[lang=hi] .nodal-label { text-transform: none; letter-spacing: 0; }
.nodal-name { font-weight: 700; font-size: 1.05rem; }
.nodal-name span { font-weight: 400; color: var(--text-600); }
.nodal-contact { display: flex; flex-wrap: wrap; gap: 4px 18px; font-size: .9rem; }

/* ---------- NDC table ---------- */
.ndc-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.ndc-actions p { margin: 0; color: var(--text-600); }
.table-wrap { overflow-x: auto; margin: 0 0 18px; }
.data-table { width: 100%; border-collapse: collapse; font-size: .95rem; background: #fff; }
.data-table caption { text-align: left; }
.data-table th, .data-table td { border: 1px solid var(--border); padding: 10px 12px; text-align: left; vertical-align: top; }
.data-table thead th { background: var(--blue-800); color: #fff; font-weight: 600; border-color: var(--blue-800); }
.data-table tbody tr:nth-child(even) { background: var(--blue-50); }
.data-table tbody th { background: var(--blue-100); font-weight: 600; }
.data-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.data-table tr.total td, .data-table tr.total th { background: var(--blue-50); font-weight: 700; }
.data-table small { color: var(--text-600); }
.ndc-table .col-sr { width: 70px; text-align: center; font-weight: 700; color: var(--blue-700); }
.ndc-table thead th.col-sr { color: #fff; }
.ndc-table .col-att { width: 32%; }
.ndc-table .col-date { width: 150px; white-space: nowrap; }
.ndc-link { font-weight: 600; color: var(--text-900); text-decoration: none; }
.ndc-link:hover { color: var(--blue-700); text-decoration: underline; }
.att-mini { list-style: none; margin: 0; padding: 0; }
.att-mini li + li { margin-top: 6px; }
.att-mini a { text-decoration: none; font-size: .9rem; }
.att-mini a:hover { text-decoration: underline; }
.pdf-badge { display: inline-block; font-size: .65rem; font-weight: 800; letter-spacing: .03em; color: #fff; background: var(--blue-700); border-radius: 3px; padding: 1px 4px; vertical-align: 1px; font-family: var(--font); }

.dash-callout { display: flex; align-items: center; gap: 16px; padding: 18px 20px; margin: 8px 0 24px; border-radius: var(--radius); background: var(--blue-100); border: 1px solid var(--blue-200); color: var(--text-900); text-decoration: none; }
.dash-callout:hover { border-color: var(--blue-600); color: var(--text-900); }
.dash-ico { width: 52px; height: 52px; border-radius: 12px; background: var(--blue-800); color: #fff; display: grid; place-items: center; flex: none; }
.dash-callout .arrow { margin-left: auto; font-size: 1.5rem; color: var(--blue-600); }

/* ---------- item page ---------- */
.prose { max-width: 900px; }
.prose h3 { margin: 22px 0 8px; font-size: 1.1rem; }
.prose table { margin-bottom: 12px; }
.auto-data { max-width: none; }
.doc-list { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 10px; }
.doc-list a { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; padding: 12px 16px; border: 1px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text-900); background: #fff; }
.doc-list a:hover { border-color: var(--blue-700); box-shadow: 0 2px 10px rgba(0,0,0,.06); }
.doc-title { font-weight: 600; }
.doc-meta { color: var(--text-600); font-size: .85rem; white-space: nowrap; }
.archive summary { cursor: pointer; font-weight: 600; color: var(--blue-800); margin-bottom: 10px; }
.doc-list-archived a { background: var(--blue-50); }
.pager-nav { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-top: 1px solid var(--border); padding-top: 16px; margin: 28px 0 24px; font-size: .9rem; }
.pager-nav a { text-decoration: none; }

/* ---------- digital clinical dashboard ---------- */
:root { --series: var(--blue-700); --accent-mark: var(--blue-900); --grid: var(--border); --chart-surface: var(--white); }
.period-form { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 16px; }
.period-form label { font-weight: 600; }
.period-form select { font: inherit; min-height: 44px; padding: 8px 12px; border-radius: 8px; border: 0; min-width: 200px; }
.hero-updated { color: #E6F0FC; }
.privacy-note { background: var(--blue-100); border: 1px solid var(--blue-200); border-radius: var(--radius); padding: 10px 14px; font-size: .9rem; margin: 0 0 24px; }
.section-h { font-size: 1.3rem; margin: 0 0 14px; }
.section-h .muted { font-weight: 400; font-size: 1rem; }
.section-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin: 30px 0 4px; }
.section-head .section-h { margin: 0; }
.downloads { display: flex; gap: 8px; flex-wrap: wrap; }
.csv-badge { background: var(--blue-800); }
.empty-state { text-align: center; padding: 48px 16px; border: 1px dashed var(--border); border-radius: var(--radius); background: var(--blue-50); }

.tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 28px; }
.tile { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; box-shadow: var(--shadow-soft); }
.tile p { margin: 0; }
.tile-hero { grid-row: span 2; background: linear-gradient(160deg, #fff 0%, var(--blue-100) 100%); border-color: var(--blue-200); display: flex; flex-direction: column; justify-content: center; }
.tile-label { font-size: .85rem; color: var(--text-600); font-weight: 600; }
.tile-value { font-size: 3.25rem; font-weight: 700; line-height: 1.1; color: var(--blue-700); margin: 4px 0 !important; }
.tile-value-sm { font-size: 1.75rem; }
.tile-delta { font-size: .85rem; color: var(--text-900); }
.tile-sub { font-size: .8rem; color: var(--text-600); margin-top: 8px !important; }
.tile-info { background: var(--blue-50); border-color: var(--blue-200); }
.tile-text { font-weight: 600; margin-top: 4px !important; }

.chart-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 18px; margin-bottom: 8px; }
.chart-card { margin: 0; background: var(--chart-surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow-soft); }
.chart-title { font-size: 1.05rem; margin: 0; }
.chart-sub { font-size: .82rem; color: var(--text-600); margin: 2px 0 14px; }

/* column chart (trend) */
.colchart { position: relative; height: 240px; margin-left: 34px; }
.col-grid { position: absolute; inset: 0 0 34px 0; }
.col-grid span { position: absolute; left: 0; right: 0; border-top: 1px solid var(--grid); }
.col-grid i { position: absolute; right: calc(100% + 6px); top: -.6em; font-style: normal; font-size: .72rem; color: var(--text-600); font-variant-numeric: tabular-nums; }
.cols { position: absolute; inset: 0; list-style: none; margin: 0; padding: 0; display: flex; gap: 2px; }
.col { flex: 1; display: flex; flex-direction: column; min-width: 0; cursor: default; border-radius: 4px; outline-offset: 0; }
.col-plot { flex: 1; position: relative; display: flex; align-items: flex-end; justify-content: center; }
.col-bar { position: relative; width: min(24px, 70%); background: var(--series); border-radius: 4px 4px 0 0; min-height: 2px; transition: filter .15s; }
.col.is-current .col-bar { background: repeating-linear-gradient(135deg, var(--accent-mark) 0 6px, var(--blue-400) 6px 8px); }
.col-val { position: absolute; bottom: calc(100% + 3px); left: 50%; transform: translateX(-50%); font-size: .75rem; font-weight: 700; color: var(--text-900); white-space: nowrap; }
.col-x { height: 34px; text-align: center; font-size: .72rem; color: var(--text-600); line-height: 1.2; padding-top: 5px; }
.col-x small { font-size: .65rem; }
.col.is-current .col-x { color: var(--text-900); font-weight: 700; }
.col:hover .col-bar, .col:focus-visible .col-bar { filter: brightness(1.18); }
.col:hover, .col:focus-visible { background: rgba(0, 0, 0, .03); }
.table-view { margin-top: 10px; font-size: .85rem; }
.table-view summary { cursor: pointer; color: var(--blue-700); }
.table-view table { margin-top: 8px; font-size: .85rem; }

/* horizontal bars (department-wise) */
.hbars { list-style: none; margin: 0; padding: 0; }
.hbars li { padding: 5px 4px; border-radius: 6px; }
.hbars li:hover, .hbars li:focus-visible { background: rgba(0, 0, 0, .03); }
.hb-label { display: block; font-size: .85rem; font-weight: 600; line-height: 1.3; }
.hb-label small { font-weight: 400; color: var(--text-600); }
.hb-track { display: flex; align-items: center; gap: 6px; height: 18px; margin-top: 3px; }
.hb-bar { display: block; height: 14px; background: var(--series); border-radius: 0 4px 4px 0; transition: filter .15s; }
.hbars li:hover .hb-bar, .hbars li:focus-visible .hb-bar { filter: brightness(1.18); }
.hb-val { font-size: .8rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* tooltip: value leads, label follows */
.chart-tip { position: fixed; z-index: 60; pointer-events: none; background: #fff; border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.15); padding: 6px 10px; font-size: .85rem; max-width: 260px; }
.chart-tip strong { display: block; font-size: 1rem; font-variant-numeric: tabular-nums; }
.chart-tip span { color: var(--text-600); }

.dept-table .dept-group { border-top: 2px solid var(--blue-600); }
.dept-table tbody th { width: 30%; }
.dept-table tbody:nth-of-type(even) tr { background: var(--blue-50); }
.dept-table tbody tr:nth-child(even) { background: inherit; }
.archive-block { margin-top: 30px; }
.month-archive { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.month-archive li { display: flex; justify-content: space-between; gap: 8px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px; font-size: .9rem; }
.month-archive li.is-current { border-color: var(--blue-600); background: var(--blue-100); font-weight: 700; }
.month-archive span { font-size: .8rem; }
@media (max-width: 1000px) { .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tile-hero { grid-column: span 2; grid-row: auto; } .chart-grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) {
  .tile-value { font-size: 2.6rem; } .tile-value-sm { font-size: 1.4rem; }
  .colchart { height: 200px; } .col-x { font-size: .62rem; } .col-val { font-size: .65rem; }
  .dept-table .col-sr { display: none; }
  .dept-table th, .dept-table td { padding: 8px; }
}
html.hc .tile, html.hc .chart-card, html.hc .privacy-note, html.hc .month-archive li, html.hc .chart-tip { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .tile-value, html.hc .tile-label, html.hc .chart-sub, html.hc .col-x, html.hc .col-grid i, html.hc .hb-label small, html.hc .chart-tip span, html.hc .col-val, html.hc .hb-val { color: #fff !important; }
html.hc .col-bar, html.hc .hb-bar { background: #fff !important; }
html.hc .col.is-current .col-bar { background: #FFD700 !important; }
@media (forced-colors: active) { .col-bar, .hb-bar { background: CanvasText; forced-color-adjust: none; } .col.is-current .col-bar { background: Highlight; } }

/* ---------- footer ---------- */
.footer { background: var(--ridge) top / 100% 60px no-repeat, var(--blue-900); color: #E6F0FC; margin-top: 20px; padding-top: 50px; font-size: .9rem; }
.footer h2 { color: #fff; font-size: 1rem; margin: 0 0 10px; }
.footer a { color: var(--blue-200); }
.footer a:hover { color: #fff; }
.footer-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 28px; padding-bottom: 26px; }
.footer-links { list-style: none; padding: 0; margin: 0; }
.footer-links li + li { margin-top: 6px; }
.footer-bottom { background: var(--blue-800); font-size: .8125rem; }
.footer-bottom-in { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-top: 10px; padding-bottom: 10px; }
.footer-bottom p { margin: 0; }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  .footer-grid { grid-template-columns: 1fr; }

}
@media (max-width: 640px) {
  .hide-sm { display: none !important; }
  .topbar-in { padding-block: 6px; row-gap: 6px; }
  .topbar .top-contacts { row-gap: 4px; column-gap: 12px; }
  .top-contacts li { line-height: 1.5; }
  .brand img { width: 60px; height: 60px; }
  .brand .name { font-size: 1.15rem; }
  .brand .affil { display: none; }
  .page-hero h1 { font-size: 1.45rem; }
  .page-hero h1.h1-long { font-size: 1.2rem; }
  .ndc-table thead { display: none; }
  .ndc-table, .ndc-table tbody, .ndc-table tr, .ndc-table td { display: block; width: 100% !important; }
  .ndc-table tr { border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 12px; padding: 10px 12px; background: #fff !important; }
  .ndc-table td { border: 0; padding: 4px 0; text-align: left !important; }
  .ndc-table td::before { content: attr(data-label); display: block; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-600); }
  .ndc-table td.col-sr::before { display: inline; margin-right: 6px; }
  .doc-list a { grid-template-columns: auto 1fr; }
  .doc-meta { grid-column: 2; white-space: normal; }
  .nodal-box { align-items: flex-start; }
  .nodal-ico { display: none; }
}

/* ---------- high contrast (GIGW) ---------- */
html.hc body, html.hc .masthead, html.hc .data-table, html.hc .doc-list a, html.hc .nodal-box, html.hc .dash-callout, html.hc .data-table tbody tr { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .topbar, html.hc .mainnav, html.hc .page-hero, html.hc .footer, html.hc .data-table thead th, html.hc .data-table tbody th, html.hc .data-table tr.total td { background: #000 !important; color: #fff !important; }
html.hc a, html.hc .ndc-link, html.hc .brand .name, html.hc .menu > li > a { color: #FFD700 !important; }
html.hc h1, html.hc h2, html.hc h3, html.hc .muted, html.hc .ndc-table .col-sr, html.hc .nodal-label, html.hc .ndc-actions p, html.hc .hero-ref, html.hc .hero-kicker, html.hc .nodal-name span, html.hc .doc-meta, html.hc .brand .affil, html.hc .brand .govt, html.hc .hero-sub { color: #fff !important; }
html.hc .menu a.menu-ndc, html.hc .lang-link, html.hc .pdf-badge, html.hc .btn-primary, html.hc .emergency .pill { background: #FFD700 !important; color: #000 !important; }
html.hc .page-hero, html.hc .footer { background-image: none !important; }
html.hc .data-table th, html.hc .data-table td { border-color: #fff !important; }

/* =====================================================================
   Stage 5 — site components
   ===================================================================== */
.icon { flex: none; vertical-align: -3px; }
.small { font-size: .85rem; }
.btn-light { background: #fff; border-color: #fff; color: var(--blue-700); }
.btn-light:hover { background: var(--blue-100); border-color: var(--blue-100); color: var(--blue-800); }
.btn-ghost-light { background: transparent; border-color: #fff; color: #fff; }
.btn-ghost-light:hover { background: rgba(255,255,255,.18); color: #fff; }
.top-contacts .icon { color: var(--blue-200); }

/* masthead side pills */
.masthead-in { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.masthead-side { display: flex; flex-direction: column; gap: 8px; }
.ndc-pill, .dash-pill { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; font-weight: 600; font-size: .85rem; text-decoration: none; }
.ndc-pill { background: var(--blue-700); color: #fff; border: 1px solid var(--blue-700); }
.ndc-pill:hover { background: var(--blue-600); color: #fff; text-decoration: underline; }
.dash-pill { background: #fff; color: var(--blue-700); border: 1px solid var(--blue-700); }
.dash-pill:hover { background: var(--blue-50); color: var(--blue-800); text-decoration: underline; }

/* ---------- main menu with dropdowns & mega menu ---------- */
.mainnav-in { position: relative; }
.menu-item { position: relative; display: flex; align-items: stretch; }
.mainnav .wrap { max-width: 1440px; }
.menu { flex-wrap: nowrap; justify-content: center; }
.menu .menu-item > a, .menu .menu-label { display: flex; align-items: center; padding: 13px 6px; color: #fff; text-decoration: none; font-weight: 600; font-size: .8rem; border-bottom: 3px solid transparent; white-space: nowrap; }
.menu .menu-item > a:hover, .menu .menu-item > a[aria-current] { background: var(--blue-700); border-bottom-color: #fff; color: #fff; }
/* NDC item: a filled blue pill (with its toggle) so it stands out without another colour */
.menu .menu-item > a.menu-ndc { background: var(--blue-700); color: #fff; border: 1px solid rgba(255,255,255,.55); border-right: 0; border-radius: 999px 0 0 999px; margin: 7px 0; padding-left: 12px; }
.menu .menu-item > a.menu-ndc:hover, .menu .menu-item > a.menu-ndc[aria-current] { background: var(--blue-600); color: #fff; border-bottom-color: rgba(255,255,255,.55); }
.sub-toggle { background: none; border: 0; color: #E6F0FC; padding: 0 4px 0 0; margin-left: -4px; cursor: pointer; display: flex; align-items: center; }
.menu-ndc + .sub-toggle { background: var(--blue-700); color: #fff; margin: 7px 4px 7px 0; padding: 0 10px 0 2px; border: 1px solid rgba(255,255,255,.55); border-left: 0; border-radius: 0 999px 999px 0; }
.menu-ndc:hover + .sub-toggle, .menu-ndc[aria-current] + .sub-toggle { background: var(--blue-600); }
.sub-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.submenu { list-style: none; margin: 0; padding: 8px; position: absolute; top: 100%; left: 0; min-width: 250px; background: #fff; border-radius: 0 0 10px 10px; box-shadow: 0 14px 34px rgba(0,0,0,.18); z-index: 60; display: none; border-top: 3px solid var(--blue-700); }
.submenu a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 8px; color: var(--text-900); font-weight: 600; text-decoration: none; font-size: .9rem; }
.submenu a:hover, .submenu a[aria-current] { background: var(--blue-100); color: var(--blue-800); }
.menu-item.has-sub:hover > .submenu, .menu-item.has-sub:focus-within > .submenu, .menu-item.open > .submenu { display: block; }
.submenu.mega { display: none; grid-template-columns: repeat(3, minmax(220px, 1fr)); gap: 4px; min-width: 760px; padding: 14px; }
.menu-item.has-sub:hover > .submenu.mega, .menu-item.has-sub:focus-within > .submenu.mega, .menu-item.open > .submenu.mega { display: grid; }
.mega-ico { width: 34px; height: 34px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); display: grid; place-items: center; flex: none; }
.mega-all { grid-column: 1 / -1; border-top: 1px solid var(--border); margin-top: 6px; padding-top: 6px; }
.mega-all a { font-weight: 700; color: var(--blue-700); }
.menu-item:last-child .submenu { left: auto; right: 0; }

/* ---------- hero slider ---------- */
.hero { position: relative; background: var(--blue-900); color: #fff; overflow: hidden; }
.hero-track { position: relative; height: clamp(320px, 42vw, 520px); }
.hero-slide { position: absolute; inset: 0; opacity: 0; transition: opacity .8s ease; }
.hero-slide.is-active { opacity: 1; }
.hero-slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10,42,94,.85) 0%, rgba(10,42,94,.7) 38%, rgba(10,42,94,0) 85%); display: flex; align-items: center; }
.hero-copy { max-width: var(--wrap); width: 100%; }
.hero-eyebrow { color: var(--blue-200); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; font-size: .8rem; margin: 0 0 10px; }
html[lang=hi] .hero-eyebrow { text-transform: none; letter-spacing: 0; }
.hero-title { color: #fff; font-size: clamp(1.7rem, 3.6vw, 2.9rem); max-width: 720px; margin: 0 0 12px; line-height: 1.15; }
.hero-lede { font-size: 1.1rem; max-width: 600px; color: #E6F0FC; margin: 0 0 22px; }
.hero-cta { display: flex; flex-wrap: wrap; gap: 12px; }
.hero-controls { position: absolute; left: 0; right: 0; bottom: 22px; display: flex; justify-content: flex-end; gap: 8px; margin: 0 auto; }
.hero-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid #fff; background: rgba(10,42,94,.55); color: #fff; display: grid; place-items: center; cursor: pointer; }
.hero-btn:hover { background: var(--blue-700); }

/* ---------- ticker ---------- */
.ticker { background: #fff; border-bottom: 1px solid var(--border); }
.ticker-in { display: flex; align-items: center; gap: 12px; min-height: 50px; }
.ticker-label { margin: 0; font-size: .82rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: #fff; background: var(--blue-700); padding: 6px 12px; border-radius: 6px; flex: none; }
html[lang=hi] .ticker-label { text-transform: none; }
.ticker-viewport { flex: 1; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 3%, #000 97%, transparent); }
.ticker-list { list-style: none; margin: 0; padding: 0; display: flex; gap: 42px; width: max-content; animation: ticker 60s linear infinite; }
.ticker-list li { white-space: nowrap; }
.ticker-list a { color: var(--text-900); text-decoration: none; font-size: .92rem; }
.ticker-list a:hover { color: var(--blue-700); text-decoration: underline; }
.ticker:hover .ticker-list, .ticker:focus-within .ticker-list, .ticker.paused .ticker-list { animation-play-state: paused; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.ticker-btn { width: 44px; height: 44px; border-radius: 8px; border: 1px solid var(--border); background: #fff; display: grid; place-items: center; cursor: pointer; flex: none; }
.ticker-all { font-weight: 700; font-size: .85rem; white-space: nowrap; }
.new-badge { display: inline-block; background: var(--blue-600); color: #fff; font-size: .62rem; font-weight: 800; letter-spacing: .04em; padding: 2px 6px; border-radius: 4px; vertical-align: 2px; margin-left: 6px; }
.ticker-list .new-badge { margin: 0 4px 0 0; }

/* ---------- quick links ---------- */
.quick { position: relative; z-index: 5; margin-top: -1px; background: linear-gradient(180deg, #fff 0%, var(--blue-50) 100%); padding: 22px 0; }
.quick-grid { list-style: none; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 12px; padding-top: 0; padding-bottom: 0; }
.quick-grid a { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 16px 8px; background: #fff; border: 1px solid var(--border); border-radius: 12px; text-decoration: none; color: var(--text-900); font-weight: 600; font-size: .85rem; text-align: center; height: 100%; transition: transform .15s, box-shadow .15s; }
.quick-grid a:hover { transform: translateY(-3px); box-shadow: 0 10px 22px rgba(13,59,122,.12); color: var(--blue-700); }
.quick-ico { width: 52px; height: 52px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); display: grid; place-items: center; }
.quick-grid a:hover .quick-ico { background: var(--blue-700); color: #fff; }

/* ---------- section bands ---------- */
.band { padding: 56px 0; }
.band-alt { background: var(--blue-50); }
.kicker { color: var(--blue-700); font-weight: 700; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; margin: 0 0 6px; }
html[lang=hi] .kicker { text-transform: none; letter-spacing: 0; }
.kicker-light { color: var(--blue-200); }
.h-section { font-size: clamp(1.4rem, 2.4vw, 1.9rem); margin: 0 0 18px; }
.h-light { color: #fff; }
.h-section-sm { font-size: 1.3rem; margin: 30px 0 14px; padding-bottom: 8px; border-bottom: 2px solid var(--blue-100); }
.section-head-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.section-head-row .h-section { margin: 0; }
.link-arrow { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; text-decoration: none; }
.link-arrow:hover { text-decoration: underline; }

/* welcome (about) */
.welcome-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 56px; align-items: center; }
.welcome-media { position: relative; margin: 0 0 18px 18px; }
.welcome-media::before { content: ""; position: absolute; inset: 18px 18px -18px -18px; border-radius: 18px; background: var(--blue-100); border: 1px solid var(--blue-200); }
.welcome-media img { position: relative; display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 16px; box-shadow: var(--shadow-lift); }
.welcome-badge { position: absolute; right: -14px; bottom: 22px; margin: 0; background: var(--blue-800); color: #fff; border-radius: 14px; padding: 12px 18px; text-align: center; box-shadow: var(--shadow-lift); border: 3px solid #fff; }
.welcome-badge strong { display: block; font-size: 1.7rem; line-height: 1; }
.welcome-badge span { font-size: .78rem; color: var(--blue-100); }
.welcome-text .h-section { margin-bottom: 12px; }
.lead { font-size: 1.05rem; color: var(--text-600); }
.welcome-points { list-style: none; padding: 0; margin: 22px 0 26px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 22px; }
.welcome-points li { display: flex; gap: 12px; align-items: flex-start; }
.welcome-points .icon { flex: none; width: 40px; height: 40px; padding: 10px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); }
.welcome-points strong { display: block; color: var(--blue-800); font-size: .98rem; line-height: 1.3; }
.welcome-points span { font-size: .86rem; color: var(--text-600); line-height: 1.4; }
.welcome-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }

/* stats */
.stats { background: var(--blue-50); color: var(--text-600); padding: 40px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.stats-grid { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; text-align: center; }
.stats-grid li { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 22px 14px; box-shadow: var(--shadow-soft); }
.stats-grid strong { display: block; font-size: clamp(2.2rem, 4vw, 3.2rem); font-weight: 800; line-height: 1; color: var(--blue-700); }
.stats-grid span { display: block; margin-top: 8px; color: var(--text-600); font-size: .92rem; }

/* departments */
.dept-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.dept-card { position: relative; display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; gap: 2px 14px; align-items: center; padding: 18px 46px 18px 18px; background: #fff; border: 1px solid var(--border); border-radius: 14px; text-decoration: none; color: var(--text-900); height: 100%; transition: border-color .15s, box-shadow .15s; }
.dept-card:hover { border-color: var(--blue-600); box-shadow: 0 10px 24px rgba(13,59,122,.10); color: var(--text-900); }
.dept-ico { grid-row: span 2; width: 52px; height: 52px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); display: grid; place-items: center; }
.dept-name { font-weight: 700; line-height: 1.3; }
.dept-meta { font-size: .82rem; color: var(--text-600); }
.dept-go { position: absolute; right: 16px; top: 50%; transform: translateY(-50%); color: var(--blue-600); }
.dept-card:hover .dept-go { color: var(--blue-700); }
.dept-card-sm { padding: 12px 40px 12px 12px; }
.dept-card-sm .dept-ico { width: 40px; height: 40px; border-radius: 50%; }
.dept-card-sm .dept-name { grid-row: span 2; font-size: .92rem; }

/* courses */
.course-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; align-items: start; }
.course-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 20px; border-top: 4px solid var(--blue-600); }
.course-wide { grid-column: span 2; grid-row: span 2; border-top-color: var(--blue-700); }
.course-code { display: inline-block; font-weight: 800; font-size: .78rem; letter-spacing: .06em; color: var(--blue-700); background: var(--blue-100); padding: 3px 9px; border-radius: 6px; }
.course-card h3 { font-size: 1.05rem; margin: 10px 0 4px; }
.course-meta { margin: 0; color: var(--text-600); font-size: .85rem; }
.course-seats { margin: 14px 0 6px; }
.course-seats strong { font-size: 2rem; color: var(--blue-800); margin-right: 4px; }
.course-seats small { display: block; color: var(--text-600); }
.seat-table { width: 100%; border-collapse: collapse; font-size: .88rem; margin-top: 8px; }
.seat-table th, .seat-table td { padding: 7px 8px; border-bottom: 1px solid var(--border); text-align: left; }
.seat-table thead th { color: var(--text-600); font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; }
.seat-table .num { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }

/* dashboard snapshot */
.dash-band { background: var(--ridge) bottom / 100% 70px no-repeat, linear-gradient(135deg, var(--blue-900) 0%, var(--blue-800) 100%); color: #fff; }
.dash-snap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px; align-items: center; }
.dash-lede { color: var(--blue-200); margin: -8px 0 18px; }
.dash-figs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 0 24px; }
.dash-figs div { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.15); border-radius: 12px; padding: 12px 14px; }
.dash-figs dt { font-size: .78rem; color: var(--blue-200); }
.dash-figs dd { margin: 4px 0 0; font-size: 1.6rem; font-weight: 800; }
.mini-chart { margin: 0; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.15); border-radius: 16px; padding: 18px 18px 10px; }
.mini-chart figcaption { color: var(--blue-200); font-size: .85rem; margin-bottom: 10px; }
.mini-chart ol { list-style: none; margin: 0; padding: 0; display: flex; align-items: flex-end; gap: 10px; height: 200px; }
.mini-chart li { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; border-radius: 6px; }
.mini-chart li:hover, .mini-chart li:focus-visible { background: rgba(255,255,255,.06); }
.mc-bar { width: min(28px, 70%); background: var(--blue-200); border-radius: 4px 4px 0 0; min-height: 2px; }
.mini-chart li.is-current .mc-bar { background: repeating-linear-gradient(135deg, #fff 0 6px, var(--blue-200) 6px 8px); }
.mc-x { font-size: .75rem; color: var(--blue-200); padding: 6px 0 2px; }

/* tabs + notice list */
.tablist { display: flex; gap: 4px; background: var(--blue-800); border-radius: 10px 10px 0 0; padding: 6px 6px 0; margin-bottom: 14px; overflow-x: auto; }
.tablist [role=tab] { font: inherit; font-weight: 700; background: none; border: 0; padding: 10px 16px; color: #E6F0FC; border-radius: 8px 8px 0 0; cursor: pointer; white-space: nowrap; min-height: 44px; }
.tablist [role=tab][aria-selected=true] { background: #fff; color: var(--blue-800); }
.tablist [role=tab]:hover { background: var(--blue-700); color: #fff; }
.tablist [role=tab][aria-selected=true]:hover { background: #fff; color: var(--blue-800); }
.tablist :focus-visible { outline-color: #fff; outline-offset: -4px; }
.notice-list { list-style: none; padding: 0; margin: 0 0 14px; }
.notice-list li { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.notice-list time { flex: none; width: 62px; text-align: center; background: var(--blue-100); border-radius: 10px; padding: 6px 4px; line-height: 1.1; }
.notice-list time .d { display: block; font-size: 1.25rem; font-weight: 800; color: var(--blue-800); }
.notice-list time .m { display: block; font-size: .68rem; color: var(--text-600); text-transform: uppercase; }
.notice-list a { color: var(--text-900); text-decoration: none; font-weight: 600; }
.notice-list a:hover { color: var(--blue-700); text-decoration: underline; }
.notice-list.compact time { width: 54px; }
.notice-list.compact time .d { font-size: 1.05rem; }

/* messages */
.msg-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.msg-card { display: flex; gap: 18px; background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 18px; }
.msg-card img { width: 96px; height: 115px; object-fit: cover; border-radius: 10px; flex: none; }
.msg-card h3 { font-size: 1rem; margin: 0 0 6px; }
.msg-text { color: var(--text-600); font-size: .92rem; margin: 0 0 8px; }
.msg-links { margin: 0; font-size: .88rem; }
.avatar-lg { width: 96px; height: 115px; border-radius: 10px; background: var(--blue-100); color: var(--blue-600); display: grid; place-items: center; flex: none; }

/* events */
.event-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.event-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
.event-card img { width: 100%; height: 170px; object-fit: cover; display: block; }
.event-card > div { padding: 14px 16px; }
.event-card h2, .event-card h3 { font-size: 1.02rem; margin: 4px 0; }
.event-type { color: var(--blue-700); font-weight: 700; font-size: .78rem; margin: 0; }

/* gallery */
.photo-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.photo-grid a { display: block; position: relative; border-radius: 12px; overflow: hidden; aspect-ratio: 4 / 3; background: var(--border); }
.photo-grid img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s; }
.photo-grid a:hover img { transform: scale(1.05); }
.video-tile .play { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; background: rgba(0,0,0,.25); }
.video-tile .cap { margin: 6px 2px 0; font-size: .85rem; }
.photo-grid-lg { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.album-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.album-card { display: block; border-radius: 14px; overflow: hidden; border: 1px solid var(--border); background: #fff; text-decoration: none; color: var(--text-900); }
.album-card img, .album-empty { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: grid; place-items: center; background: var(--blue-100); color: var(--blue-600); }
.album-text { display: flex; flex-direction: column; padding: 12px 14px; }
.album-text span { color: var(--text-600); font-size: .85rem; }
.album-card:hover { box-shadow: 0 10px 24px rgba(13,59,122,.12); }
.lightbox { border: 0; padding: 0; max-width: 96vw; max-height: 94vh; background: transparent; overflow: visible; }
.lightbox::backdrop { background: rgba(0,0,0,.88); }
.lightbox figure { margin: 0; text-align: center; }
.lightbox img { max-width: 92vw; max-height: 82vh; border-radius: 8px; display: block; margin: 0 auto; }
.lightbox figcaption { color: #fff; margin-top: 10px; }
.lb-close, .lb-nav { position: fixed; background: rgba(255,255,255,.12); color: #fff; border: 1px solid rgba(255,255,255,.4); border-radius: 50%; width: 48px; height: 48px; display: grid; place-items: center; cursor: pointer; font-size: 1.6rem; }
.lb-close { top: 16px; right: 16px; }
.lb-prev { left: 16px; top: 50%; }
.lb-next { right: 16px; top: 50%; }

/* important links */
.important { background: #fff; border-top: 1px solid var(--border); }
.link-pills { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.link-pills a { display: flex; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--border); border-radius: 12px; text-decoration: none; color: var(--text-900); font-weight: 600; font-size: .88rem; height: 100%; background: #fff; }
.link-pills a:hover { border-color: var(--blue-600); color: var(--blue-800); }
.link-pills img { width: 40px; height: 40px; object-fit: contain; }
.link-pills small { display: block; font-weight: 400; color: var(--text-600); }
.link-pills .ext { margin-left: auto; color: var(--text-600); }
.pill-ico { width: 40px; height: 40px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); display: grid; place-items: center; flex: none; }
.link-pills-lg { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }

/* ---------- footer (4 columns) ---------- */
.footer-grid { grid-template-columns: 1.3fr 1fr 1fr 1.1fr; }
.f-line { display: flex; gap: 10px; align-items: flex-start; margin: 0 0 10px; }
.f-line .icon { margin-top: 4px; color: var(--blue-200); }
.footer-links.cols-2 { columns: 2; column-gap: 16px; }
.footer-links.cols-2 li { break-inside: avoid; margin: 0 0 6px; }
.footer-map iframe { width: 100%; height: 170px; border: 0; border-radius: 10px; }
.map-card { display: flex; align-items: center; gap: 12px; padding: 16px; border-radius: 12px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.18); text-decoration: none; }
.map-card small { display: block; color: var(--blue-200); font-size: .78rem; }

/* ---------- inner pages ---------- */
.update-note { display: flex; gap: 14px; align-items: flex-start; background: var(--blue-50); border: 1px solid var(--blue-200); border-left: 5px solid var(--blue-700); border-radius: var(--radius); padding: 16px 18px; color: var(--text-900); }
.update-note p { margin: 0; }
.prose { max-width: 860px; }
.prose img { border-radius: 10px; margin: 6px 6px 6px 0; max-height: 260px; width: auto; height: auto; display: inline-block; vertical-align: top; }
.prose table { border-collapse: collapse; width: 100%; margin: 12px 0; font-size: .95rem; }
.prose th, .prose td { border: 1px solid var(--border); padding: 8px 10px; text-align: left; }
.prose thead th { background: var(--blue-100); }
.services-prose h3 { margin: 26px 0 10px; padding-left: 12px; border-left: 4px solid var(--blue-700); }
.page-updated { color: var(--text-600); font-size: .85rem; margin-top: 30px; border-top: 1px solid var(--border); padding-top: 10px; }
.link-cards { list-style: none; padding: 0; margin: 22px 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.link-cards a { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 12px; text-decoration: none; font-weight: 600; }
.simple-people { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 24px; }
.simple-people.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.simple-people li { display: flex; flex-direction: column; padding: 10px 0; border-bottom: 1px solid var(--border); }
.simple-people span { color: var(--text-600); font-size: .88rem; }
.simple-list { padding-left: 18px; }
.message-full { display: grid; grid-template-columns: 220px 1fr; gap: 28px; padding: 24px 0; border-bottom: 1px solid var(--border); scroll-margin-top: 80px; }
.message-full img { width: 220px; height: 264px; object-fit: cover; border-radius: 14px; }
.message-full h2 { margin-top: 0; }
.signature { margin-top: 18px; }
.table-wrap .cap-left { caption-side: top; text-align: left; font-weight: 700; padding: 6px 0; color: var(--blue-800); }
.stat-inline { display: flex; align-items: baseline; gap: 12px; }
.stat-inline strong { font-size: 2.4rem; color: var(--blue-800); }

/* department page */
.dept-hero { background: var(--ridge) bottom / 100% 70px no-repeat, linear-gradient(135deg, rgba(10,42,94,.94), rgba(13,59,122,.86)), var(--banner, none) center / cover; }
.dept-layout { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 36px; align-items: start; }
.dept-toc { position: sticky; top: 64px; border-left: 3px solid var(--blue-100); padding-left: 14px; }
.dept-toc p { font-weight: 700; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; color: var(--text-600); margin: 0 0 8px; }
.dept-toc ul { list-style: none; padding: 0; margin: 0; }
.dept-toc a { display: block; padding: 5px 0; text-decoration: none; color: var(--text-900); font-size: .92rem; }
.dept-toc a:hover { color: var(--blue-700); }
.dept-main section { scroll-margin-top: 70px; }
.dept-main section:first-child .h-section-sm { margin-top: 0; }
.contact-strip { background: var(--blue-50); border-radius: var(--radius); padding: 4px 18px 10px; margin-top: 30px; }

/* people cards */
.people-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; }
.people-grid-lg { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.people-grid-one { grid-template-columns: minmax(0, 260px); margin-bottom: 10px; }
.person { background: #fff; border: 1px solid var(--border); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; }
.person-photo { position: relative; display: block; aspect-ratio: 4 / 5; background: linear-gradient(135deg, var(--blue-100), var(--blue-200)); }
.person-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.initials { width: 100%; height: 100%; display: grid; place-items: center; font-size: 2.6rem; font-weight: 800; color: var(--blue-600); }
.initials-lg { width: 240px; height: 300px; border-radius: 14px; background: var(--blue-100); }
.role-tag { position: absolute; left: 10px; bottom: 10px; background: var(--blue-700); color: #fff; font-size: .72rem; font-weight: 700; padding: 3px 9px; border-radius: 999px; }
.person-body { padding: 12px 14px 14px; }
.person-body h3 { font-size: 1rem; margin: 0 0 2px; }
.person-body h3 a { color: var(--text-900); text-decoration: none; }
.person-body h3 a:hover { color: var(--blue-700); text-decoration: underline; }
.person-body p { margin: 2px 0; font-size: .85rem; }
.person-desig { color: var(--blue-800); font-weight: 600; }
.person-dept, .person-qual { color: var(--text-600); }
.person-contact a { color: var(--text-600); text-decoration: none; overflow-wrap: anywhere; }
.filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-bottom: 20px; padding: 14px 16px; background: var(--blue-50); border-radius: var(--radius); }
.filter-bar label { font-weight: 700; }
.filter-bar select, .site-form input, .site-form textarea { font: inherit; color: inherit; min-height: 44px; padding: 9px 12px; border: 1px solid var(--input-border); border-radius: 8px; background: #fff; }
.filter-bar select { min-width: 260px; }
.filter-count { margin: 0 0 0 auto; color: var(--text-600); }
.profile { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 34px; align-items: start; }
.profile-card { background: #fff; border: 1px solid var(--border); border-radius: 16px; padding: 18px; position: sticky; top: 64px; }
.profile-card img { width: 100%; height: auto; border-radius: 12px; display: block; }
.profile-card dl { margin: 14px 0; font-size: .92rem; }
.profile-card dt { color: var(--text-600); font-size: .78rem; margin-top: 8px; }
.profile-card dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.pub-list li { margin-bottom: 10px; }
.pub-list .muted { display: block; font-size: .85rem; }

/* committees */
.committee-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.committee { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 18px; }
.committee h2 { font-size: 1.05rem; margin: 0 0 6px; }
.committee-head span { color: var(--text-600); font-size: .8rem; display: block; }

/* hubs */
.hub-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 24px 0; }
.hub-grid-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.hub-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 18px; }
.hub-card h2 { font-size: 1.1rem; margin: 0 0 10px; display: flex; gap: 8px; align-items: center; color: var(--blue-800); }
.hub-links { list-style: none; padding: 0; margin: 0; }
.hub-links a { display: block; padding: 9px 0; border-bottom: 1px solid var(--border); text-decoration: none; font-weight: 600; }
.hub-tile { display: flex; flex-direction: column; gap: 6px; padding: 20px; background: #fff; border: 1px solid var(--border); border-radius: 14px; text-decoration: none; color: var(--text-900); }
.hub-tile .icon { color: var(--blue-700); }
.hub-tile span { color: var(--text-600); font-size: .88rem; }
.hub-tile:hover { border-color: var(--blue-600); box-shadow: 0 10px 22px rgba(13,59,122,.10); color: var(--text-900); }

/* notices page */
.pill-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.pill-nav a { padding: 8px 14px; border-radius: 999px; border: 1px solid var(--border); text-decoration: none; color: var(--text-900); font-weight: 600; font-size: .88rem; }
.pill-nav a:hover { border-color: var(--blue-600); }
.pill-nav a[aria-current] { background: var(--blue-800); border-color: var(--blue-800); color: #fff; }
.pin-badge { display: inline-block; background: var(--blue-50); color: var(--blue-800); font-size: .7rem; font-weight: 700; padding: 1px 6px; border-radius: 4px; margin-left: 4px; }
.notice-table td:first-child { width: 110px; }
.pager { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 16px; }
.pager a { min-width: 40px; min-height: 40px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 8px; text-decoration: none; }
.pager a[aria-current] { background: var(--blue-800); color: #fff; border-color: var(--blue-800); }

/* contact + forms */
.contact-layout, .form-layout { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 36px; align-items: start; }
.contact-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.contact-card { display: flex; gap: 12px; padding: 16px; border: 1px solid var(--border); border-radius: 14px; background: #fff; }
.contact-card .icon { color: var(--blue-700); margin-top: 2px; }
.contact-card > div { min-width: 0; overflow-wrap: anywhere; }
.contact-card h2 { font-size: .95rem; margin: 0 0 4px; }
.contact-card p { margin: 0; font-size: .92rem; }
.form-card { background: #fff; border: 1px solid var(--border); border-radius: 16px; padding: 22px; box-shadow: 0 12px 30px rgba(13,59,122,.06); scroll-margin-top: 70px; }
.form-card h2 { margin-top: 0; font-size: 1.2rem; }
.site-form .f { display: flex; flex-direction: column; gap: 5px; margin-bottom: 12px; }
.site-form label { font-weight: 600; font-size: .92rem; }
.site-form input, .site-form textarea { width: 100%; }
.site-form textarea { resize: vertical; }
.site-form input:focus, .site-form textarea:focus, .filter-bar select:focus { outline: 3px solid var(--blue-400); outline-offset: 1px; border-color: var(--blue-700); }
.form-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; }
.f-hint { font-size: .82rem; color: var(--text-600); margin: -4px 0 12px; }
.req { color: var(--blue-700); }
.hp-field { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.notice-ok, .notice-err { border-radius: 10px; padding: 12px 14px; margin-bottom: 14px; }
.notice-ok { background: var(--blue-50); border: 1px solid var(--blue-200); border-left: 5px solid var(--blue-700); color: var(--text-900); }
.notice-err { background: #fff; border: 2px solid var(--blue-800); border-left: 6px solid var(--blue-900); color: var(--text-900); font-weight: 600; }
.notice-err ul { font-weight: 400; }
.notice-err ul { margin: 6px 0 0; padding-left: 18px; }
.forum-post { border-bottom: 1px solid var(--border); padding: 12px 0; }
.forum-post h3 { margin: 0; font-size: 1rem; }
.forum-reply { background: var(--blue-100); border-radius: 8px; padding: 10px 12px; font-size: .92rem; }
.sitemap-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 20px; }
.sitemap-grid h2 { font-size: 1.05rem; margin: 0 0 8px; }
.sitemap-grid ul { margin: 0; padding-left: 18px; }

/* ---------- responsive ---------- */
@media (max-width: 1300px) {
  .menu .menu-item > a, .menu .menu-label { padding: 13px 4px; font-size: .76rem; }
}
@media (max-width: 1180px) {
  .quick-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .link-pills { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .course-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .menu .menu-item > a, .menu .menu-label { padding: 13px 4px; font-size: .76rem; }
}
@media (max-width: 1000px) { .hide-md { display: none !important; } }
@media (max-width: 1180px) {
  .nav-toggle { display: inline-flex; align-items: center; gap: 8px; font: inherit; font-weight: 600; color: #fff; background: none; border: 0; padding: 12px 0; min-height: 48px; cursor: pointer; }
  .menu { display: none; flex-direction: column; padding-bottom: 8px; flex-wrap: wrap; }
  .menu.open { display: flex; }
  .menu .menu-item > a, .menu .menu-label { font-size: .95rem; padding: 12px 10px; white-space: normal; }
  .menu-item { flex-wrap: wrap; }
  .menu-item > a { flex: 1; border-bottom: 0; border-left: 3px solid transparent; }
  .menu-item > a[aria-current] { border-left-color: #fff; }
  .menu .menu-item > a.menu-ndc { margin: 4px 0; }
  .menu-ndc + .sub-toggle { margin: 4px 0; }
  .sub-toggle { padding: 0 14px; margin: 0; min-width: 48px; justify-content: center; }
  .submenu, .submenu.mega { position: static; box-shadow: none; border-radius: 8px; min-width: 0; width: 100%; margin: 0 8px 8px; grid-template-columns: 1fr; display: none !important; border-top: 0; }
  .menu-item.open > .submenu, .menu-item.open > .submenu.mega { display: block !important; }
  .menu-item.has-sub:hover > .submenu, .menu-item.has-sub:focus-within > .submenu { display: none; }
}
@media (max-width: 900px) {
  .welcome-grid, .dash-snap, .contact-layout, .form-layout, .profile, .dept-layout { grid-template-columns: minmax(0, 1fr); }
  .dept-toc { position: static; }
  .profile-card { position: static; }
  .dept-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .msg-grid, .hub-grid, .hub-grid-4 { grid-template-columns: 1fr; }
  .photo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .band { padding: 40px 0; }
  .quick-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quick-grid a { flex-direction: row; text-align: left; padding: 12px; }
  .quick-ico { width: 42px; height: 42px; }
  .dept-grid, .course-grid, .contact-cards, .simple-people, .simple-people.cols-3, .form-row, .link-pills { grid-template-columns: 1fr; }
  .course-wide { grid-column: auto; }
  .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .welcome-grid { gap: 36px; }
  .welcome-points { grid-template-columns: minmax(0, 1fr); }
  .welcome-badge { right: 8px; }
  .dash-figs { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .hero-overlay { background: linear-gradient(180deg, rgba(10,42,94,.55) 0%, rgba(10,42,94,.92) 100%); align-items: flex-end; padding-bottom: 70px; }
  .hero-lede { display: none; }
  .ticker-all { display: none; }
  .message-full { grid-template-columns: 1fr; }
  .notice-table thead { display: none; }
  .notice-table tr { display: block; border: 1px solid var(--border); border-radius: 10px; margin-bottom: 10px; padding: 8px 10px; }
  .notice-table td { display: block; border: 0; padding: 3px 0; width: auto !important; }
  .notice-table td::before { content: attr(data-label); display: block; font-size: .7rem; font-weight: 700; color: var(--text-600); text-transform: uppercase; }
  .filter-count { margin-left: 0; }
  .filter-bar select { min-width: 0; width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .ticker-list { animation: none; flex-wrap: wrap; width: auto; } .new-badge { animation: none; } .hero-slide { transition: none; } }

/* high contrast for new components */
html.hc .quick, html.hc .quick-grid a, html.hc .dept-card, html.hc .course-card, html.hc .welcome-badge, html.hc .msg-card, html.hc .event-card, html.hc .person,
html.hc .hub-card, html.hc .hub-tile, html.hc .committee, html.hc .contact-card, html.hc .form-card, html.hc .link-pills a, html.hc .album-card, html.hc .band-alt,
html.hc .important, html.hc .ticker, html.hc .submenu, html.hc .update-note, html.hc .welcome-points .icon, html.hc .filter-bar, html.hc .notice-list time, html.hc .contact-strip { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .stats, html.hc .dash-band, html.hc .hero-overlay { background: #000 !important; }
html.hc .quick-ico, html.hc .dept-ico, html.hc .mega-ico, html.hc .pill-ico { background: #FFD700 !important; color: #000 !important; }
html.hc .kicker, html.hc .welcome-points strong, html.hc .course-seats strong, html.hc .stats-grid strong, html.hc .person-desig, html.hc .notice-list time .d, html.hc .dept-meta, html.hc .lead, html.hc .course-meta { color: #fff !important; }
html.hc .new-badge, html.hc .role-tag, html.hc .ticker-label, html.hc .btn-light, html.hc .pill-nav a[aria-current] { background: #FFD700 !important; color: #000 !important; }
html.hc .mc-bar { background: #fff !important; }
html.hc .mini-chart li.is-current .mc-bar { background: #FFD700 !important; }

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition: none !important; animation: none !important; } }
@media print {
  .topbar, .mainnav, .footer, .skip-link, .ndc-actions .btn { display: none !important; }
  .page-hero { background: none; color: #000; padding: 0; }
  .page-hero h1, .page-hero .hero-sub { color: #000; }
}

/* soft blue shadow on white cards */
.quick-grid a, .dept-card, .course-card, .msg-card, .event-card, .person, .hub-card, .hub-tile, .committee, .contact-card, .link-pills a, .album-card, .doc-list a { box-shadow: var(--shadow-soft); }
.quick-grid a:hover, .dept-card:hover, .hub-tile:hover, .album-card:hover, .doc-list a:hover { box-shadow: var(--shadow-lift); }
html.hc .stats-grid li, html.hc .tablist, html.hc .tablist [role=tab] { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .tablist [role=tab][aria-selected=true] { background: #FFD700 !important; color: #000 !important; }
html.hc .ndc-pill, html.hc .dash-pill, html.hc .btn-light { background: #FFD700 !important; color: #000 !important; border-color: #FFD700 !important; }
html.hc .notice-ok, html.hc .notice-err, html.hc .btn:not(.btn-primary):not(.btn-light) { background: #000 !important; color: #fff !important; border-color: #fff !important; }
/* footer brand with the white (reversed) logo */
.f-brand { display: flex; align-items: center; gap: 12px; }
.f-brand img { width: 52px; height: 52px; object-fit: contain; flex: none; }
html.hc .f-brand img { background: #000; }
.person-photo { text-decoration: none; }
.privacy-note .icon { color: var(--blue-700); }
.ticker-btn { position: relative; z-index: 1; }
.ticker-list a { display: inline-block; padding: 4px 0; }
html.hc .menu-ndc + .sub-toggle { background: #FFD700 !important; color: #000 !important; }
html.hc .page-hero .crumbs, html.hc .sub-toggle { color: #fff !important; }
html.hc .nodal-ico { background: #000 !important; color: #fff !important; border: 1px solid #fff; }
/* uploaded (mp4) gallery videos: the browser's own player in the same 4:3 tile as photos */
.video-file video { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; background: #000; border-radius: 12px; }
@media (max-width: 640px) { .video-file { grid-column: 1 / -1; } }

/* homepage: Our Visionary Leadership */
.section-head-center { text-align: center; max-width: 760px; margin: 0 auto 28px; }
.section-head-center .h-section { margin-bottom: 6px; }
.section-head-center .muted { margin: 0; font-size: .95rem; text-wrap: balance; }
.leader-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.leader-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 24px 16px 20px; text-align: center; box-shadow: var(--shadow-soft); transition: box-shadow .2s, border-color .2s; }
.leader-card:hover { border-color: var(--blue-200); box-shadow: var(--shadow-lift); }
.leader-photo { display: block; width: 160px; height: 160px; margin: 0 auto 16px; border-radius: 50%; overflow: hidden; border: 3px solid var(--blue-700); background: var(--blue-50); color: var(--blue-200); }
.leader-photo img, .leader-photo svg { display: block; width: 100%; height: 100%; object-fit: cover; }
.leader-photo svg { padding: 22px 0 0; }
.leader-name { font-size: 1.05rem; font-weight: 700; color: var(--blue-800); margin: 0 0 4px; line-height: 1.3; }
.leader-role { font-size: .9rem; color: var(--text-600); margin: 0; line-height: 1.45; }
@media (max-width: 1024px) { .leader-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .leader-grid { grid-template-columns: minmax(0, 1fr); } .leader-photo { width: 140px; height: 140px; } }
html.hc .leader-card { background: #000 !important; border-color: #fff !important; }
html.hc .leader-name { color: #FFD700 !important; }
html.hc .leader-role { color: #fff !important; }
html.hc .leader-photo { border-color: #FFD700; }
html.hc .welcome-points span { color: #fff !important; }
html.hc .welcome-media::before { background: #000; border-color: #fff; }

/* User charges (/user-charges) */
.uc [hidden] { display: none !important; }
.uc-order { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px 32px; align-items: start; background: #fff; border: 1px solid var(--border); border-top: 4px solid var(--blue-700); border-radius: 14px; padding: 24px 26px; box-shadow: var(--shadow-soft); margin-bottom: 26px; }
.uc-order h2 { font-size: clamp(1.25rem, 2vw, 1.5rem); color: var(--blue-800); margin: 0 0 8px; }
.uc-order p { margin: 0 0 10px; }
.uc-facts { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 12px 0; }
.uc-facts div { background: var(--blue-50); border: 1px solid var(--blue-100); border-radius: 10px; padding: 8px 14px; }
.uc-facts dt { font-size: .8rem; color: var(--text-600); }
.uc-facts dd { margin: 0; color: var(--text-900); font-weight: 600; overflow-wrap: anywhere; }
.uc-facts dd strong { color: var(--blue-800); font-size: 1.1rem; }
.uc-note { font-size: .9rem; color: var(--text-600); }
.uc-order-actions { display: flex; flex-direction: column; align-items: stretch; gap: 10px; min-width: 250px; }
.uc-order-actions .btn { justify-content: center; }
.uc-file, .uc-updated { font-size: .82rem; color: var(--text-600); text-align: center; margin: 0; }
.uc-file { margin-top: -6px; }
.uc-tools { position: relative; margin-bottom: 18px; }
.uc-search label { display: block; font-weight: 600; color: var(--text-900); margin-bottom: 6px; }
.uc-search-box { display: flex; align-items: center; gap: 8px; max-width: 560px; background: #fff; border: 1px solid var(--input-border); border-radius: 10px; padding: 0 12px; }
.uc-search-box:focus-within { outline: 3px solid var(--blue-400); outline-offset: 1px; }
.uc-search-box .icon { color: var(--blue-700); }
.uc-search-box input { flex: 1; min-width: 0; border: 0; padding: 11px 0; font: inherit; background: transparent; color: var(--text-900); }
.uc-search-box input:focus { outline: none; }
.uc-status { min-height: 1.4em; margin: 6px 0 10px; font-size: .9rem; color: var(--blue-800); font-weight: 600; }
.uc-tabs { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 10px; scrollbar-width: thin; }
.uc-tabs button { flex: none; font: inherit; font-size: .9rem; font-weight: 600; color: var(--blue-800); background: #fff; border: 1px solid var(--blue-200); border-radius: 999px; padding: 8px 14px; cursor: pointer; white-space: nowrap; }
.uc-tabs button:hover { background: var(--blue-50); }
.uc-tabs button[aria-pressed="true"] { background: var(--blue-700); border-color: var(--blue-700); color: #fff; }
.uc-tabs button:disabled { opacity: .45; cursor: not-allowed; }
.uc-n { display: inline-block; min-width: 1.6em; font-size: .78rem; font-weight: 700; border-radius: 999px; padding: 1px 7px; margin-left: 4px; background: var(--blue-100); color: var(--blue-800); text-align: center; }
.uc-tabs button[aria-pressed="true"] .uc-n { background: rgba(255,255,255,.22); color: #fff; }
.uc-dept { margin: 0 0 22px; border: 1px solid var(--border); border-radius: 14px; background: #fff; box-shadow: var(--shadow-soft); }
.uc-dept > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; cursor: pointer; list-style: none; border-radius: 14px; }
.uc-dept > summary::-webkit-details-marker { display: none; }
.uc-dept > summary::after { content: ""; flex: none; width: 10px; height: 10px; border-right: 2px solid var(--blue-700); border-bottom: 2px solid var(--blue-700); transform: rotate(45deg); margin: -4px 4px 0 0; transition: transform .2s; }
.uc-dept[open] > summary::after { transform: rotate(-135deg); margin-top: 4px; }
.uc-dept > summary h2 { font-size: 1.1rem; color: var(--blue-800); margin: 0; flex: 1; }
.uc-dept > summary .uc-n { margin-left: 0; }
.uc-dept[open] > summary { border-bottom: 1px solid var(--border); border-radius: 14px 14px 0 0; }
.uc-table { border: 0; font-size: .95rem; }
.uc-table thead th { position: sticky; top: var(--uc-sticky, 0px); z-index: 2; }
.uc-table th, .uc-table td { border-left: 0; border-right: 0; }
.uc-table .uc-sr { width: 5.5em; text-align: center; white-space: nowrap; }
.uc-table td.num { width: 11em; font-weight: 600; color: var(--text-900); }
.uc-table tbody tr:nth-child(even) { background: var(--blue-50); }
.uc-table tbody tr:hover td { background: var(--blue-100); }
.uc-table tr.uc-group th { background: var(--blue-100); color: var(--blue-800); font-weight: 700; }
.uc-gsr { display: inline-block; min-width: 4.4em; text-align: center; margin-left: -12px; }
.uc-table tbody tr:last-child td { border-bottom: 0; }
.uc-table tbody tr:last-child td:first-child { border-bottom-left-radius: 14px; }
.uc-table tbody tr:last-child td:last-child { border-bottom-right-radius: 14px; }
.uc-none { background: var(--blue-50); border: 1px dashed var(--blue-200); border-radius: 12px; padding: 16px 18px; color: var(--text-900); }
.uc-exempt { display: flex; gap: 16px; align-items: flex-start; background: var(--blue-50); border: 1px solid var(--blue-200); border-left: 6px solid var(--blue-700); border-radius: 14px; padding: 20px 22px; margin: 30px 0 18px; color: var(--text-900); }
.uc-exempt-ico { flex: none; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; background: var(--blue-700); color: #fff; }
.uc-exempt h2 { font-size: 1.2rem; color: var(--blue-800); margin: 2px 0 6px; }
.uc-exempt p { margin: 0 0 8px; }
.uc-exempt ol { margin: 0; padding-left: 1.4em; }
.uc-exempt li { margin: 4px 0; }
.uc-issued { font-size: .92rem; color: var(--text-600); margin: 0; }
@media (max-width: 900px) {
  .uc-order { grid-template-columns: minmax(0, 1fr); }
  .uc-order-actions { flex-direction: row; flex-wrap: wrap; align-items: center; min-width: 0; }
  .uc-file, .uc-updated { text-align: left; }
  .uc-file { margin-top: 0; }
}
@media (max-width: 640px) {
  .uc-order { padding: 18px; }
  .uc-tabs { display: none; }
  .uc-dept { margin-bottom: 12px; }
  .uc-dept > summary { padding: 14px; }
  .uc-dept > summary h2 { font-size: 1rem; }
  .uc-table { font-size: .9rem; }
  .uc-table th, .uc-table td { padding: 9px 8px; }
  .uc-table .uc-sr { width: 2.8em; }
  .uc-table td.num { width: auto; min-width: 4.5em; }
  .uc-gsr { min-width: 2.2em; margin-left: -4px; }
  .uc-exempt { flex-direction: column; padding: 16px; }
}
html.hc .uc-order, html.hc .uc-dept, html.hc .uc-exempt, html.hc .uc-facts div, html.hc .uc-none, html.hc .uc-search-box { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .uc-order h2, html.hc .uc-dept > summary h2, html.hc .uc-exempt h2, html.hc .uc-facts dd strong { color: #FFD700 !important; }
html.hc .uc-facts dd, html.hc .uc-facts dt, html.hc .uc-note, html.hc .uc-file, html.hc .uc-updated, html.hc .uc-issued, html.hc .uc-status, html.hc .uc-search label, html.hc .uc-table td.num { color: #fff !important; }
html.hc .uc-tabs button, html.hc .uc-table tr.uc-group th { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .uc-tabs button[aria-pressed="true"], html.hc .uc-n, html.hc .uc-exempt-ico { background: #FFD700 !important; color: #000 !important; }
html.hc .uc-table tbody tr:nth-child(even), html.hc .uc-table tbody tr:hover td { background: #000 !important; }
@media print {
  .uc-tools, .uc-order-actions .btn, .uc-file, .uc-none, .page-hero .crumbs, .ndc-pill, .dash-pill { display: none !important; }
  .uc-table tbody tr:hover td { background: none; }
  .uc-printing .uc-dept[hidden], .uc-printing [data-uc-row][hidden], .uc-printing .uc-group[hidden] { display: revert !important; }
  .uc-order, .uc-dept, .uc-exempt { box-shadow: none; border-color: #999; }
  .uc-order { display: block; padding: 12px 14px; border-top-width: 1px; }
  .uc-order-actions { display: block; min-width: 0; }
  .uc-updated { text-align: left; }
  .uc-dept { margin-bottom: 14px; }
  .uc-dept > summary { padding: 8px 10px; }
  .uc-dept > summary::after { display: none; }
  .uc-table thead th { position: static; background: #e8eef7 !important; color: #000 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .uc-table th, .uc-table td { border: 1px solid #999 !important; padding: 4px 6px; font-size: 10pt; }
  .uc-table tbody tr:nth-child(even) { background: none; }
  .uc-table tr.uc-group th { background: #f0f0f0 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .uc-table tr { break-inside: avoid; }
  .uc-dept > summary h2 { break-after: avoid; }
  .uc-exempt { background: none; border: 1px solid #999; }
  .uc-exempt-ico { display: none; }
}

/* Virtual Help Desk (chat widget) */
.hd { position: fixed; right: 20px; bottom: 20px; z-index: 70; font-size: .95rem; }
.hd-fab { width: 60px; height: 60px; border-radius: 50%; border: 3px solid #fff; background: var(--blue-700); color: #fff; display: grid; place-items: center; cursor: pointer; box-shadow: 0 8px 24px rgba(10,42,94,.35); transition: transform .15s, background .15s; }
.hd-fab:hover { background: var(--blue-800); transform: translateY(-2px); }
.hd-fab:focus-visible { outline: 3px solid var(--blue-400); outline-offset: 3px; }
.hd.is-open .hd-fab { background: var(--blue-900); }
.hd-panel { position: fixed; right: 20px; bottom: 92px; width: min(380px, calc(100vw - 32px)); height: min(600px, calc(100vh - 120px)); display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 18px 48px rgba(10,42,94,.25); overflow: hidden; }
.hd-panel[hidden] { display: none; }
.hd-head { display: flex; align-items: center; gap: 8px; background: var(--blue-800); color: #fff; padding: 12px 12px 12px 16px; }
.hd-head h2 { flex: 1; margin: 0; font-size: 1rem; color: #fff; }
.hd-clear { font: inherit; font-size: .8rem; color: #fff; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.35); border-radius: 999px; padding: 4px 10px; cursor: pointer; }
.hd-close { font-size: 1.5rem; line-height: 1; color: #fff; background: none; border: 0; width: 36px; height: 36px; border-radius: 50%; cursor: pointer; }
.hd-clear:hover, .hd-close:hover { background: rgba(255,255,255,.22); }
.hd-head :focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
.hd-log { flex: 1; overflow-y: auto; padding: 14px; background: var(--blue-50); display: flex; flex-direction: column; gap: 10px; }
.hd-msg { max-width: 88%; padding: 10px 12px; border-radius: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.hd-msg p { margin: 0 0 6px; }
.hd-msg p:last-child { margin-bottom: 0; }
.hd-msg ul, .hd-msg ol { margin: 4px 0 6px; padding-left: 1.2em; }
.hd-msg li { margin: 2px 0; }
.hd-bot { align-self: flex-start; background: #fff; border: 1px solid var(--border); color: var(--text-900); border-bottom-left-radius: 4px; }
.hd-me { align-self: flex-end; background: var(--blue-700); color: #fff; border-bottom-right-radius: 4px; }
.hd-err { border-color: var(--blue-400); }
.hd-charges { list-style: none; padding: 0 !important; }
.hd-charges li { padding: 6px 0; border-bottom: 1px solid var(--border); }
.hd-charges li:last-child { border-bottom: 0; }
.hd-charges small, .hd-msg small { color: var(--text-600); }
.hd-typing { display: inline-flex; gap: 4px; padding: 12px 14px; }
.hd-typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--blue-400); animation: hd-dot 1s infinite ease-in-out; }
.hd-typing span:nth-child(2) { animation-delay: .15s; }
.hd-typing span:nth-child(3) { animation-delay: .3s; }
@keyframes hd-dot { 0%, 80%, 100% { opacity: .3; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
.hd-chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 12px; background: #fff; border-top: 1px solid var(--border); max-height: 96px; overflow-y: auto; }
.hd-chips[hidden] { display: none; }
.hd-chip { font: inherit; font-size: .82rem; font-weight: 600; color: var(--blue-800); background: var(--blue-50); border: 1px solid var(--blue-200); border-radius: 999px; padding: 5px 11px; cursor: pointer; }
.hd-chip:hover { background: var(--blue-100); }
.hd-form { display: flex; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--border); background: #fff; }
.hd-form input { flex: 1; min-width: 0; font: inherit; padding: 10px 12px; border: 1px solid var(--input-border); border-radius: 10px; color: var(--text-900); }
.hd-form input:focus { outline: 3px solid var(--blue-400); outline-offset: 0; }
.hd-form button { flex: none; width: 44px; height: 44px; border-radius: 10px; border: 0; background: var(--blue-700); color: #fff; display: grid; place-items: center; cursor: pointer; }
.hd-form button:hover { background: var(--blue-800); }
.hd-note { margin: 0; padding: 0 12px 8px; background: #fff; font-size: .72rem; color: var(--text-600); text-align: center; }
@media (max-width: 640px) {
  .hd { right: 14px; bottom: 14px; }
  .hd-panel { inset: 0; width: auto; height: auto; border-radius: 0; border: 0; }
  .hd.is-open .hd-fab { display: none; }
  html.hd-lock, html.hd-lock body { overflow: hidden; }
}
html.hc .hd-panel, html.hc .hd-log, html.hc .hd-chips, html.hc .hd-form, html.hc .hd-note, html.hc .hd-bot { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .hd-fab, html.hc .hd-me, html.hc .hd-form button, html.hc .hd-chip { background: #FFD700 !important; color: #000 !important; border-color: #000 !important; }
html.hc .hd-head { background: #000 !important; border-bottom: 1px solid #fff; }
html.hc .hd-form input { background: #000; color: #fff; border-color: #fff; }
@media (prefers-reduced-motion: reduce) { .hd-typing span { animation: none; opacity: .7; } }
@media print { .hd { display: none !important; } }

/* department icons */
.dept-ico .dept-icon-img, .mega-ico .dept-icon-img { width: 62%; height: 62%; object-fit: contain; }
.dept-title { display: flex; align-items: center; gap: 16px; }
.dept-hero-ico { flex: none; width: 64px; height: 64px; border-radius: 50%; background: #fff; color: var(--blue-700); display: grid; place-items: center; box-shadow: 0 6px 18px rgba(0,0,0,.18); }
.dept-hero-ico .dept-icon-img { width: 60%; height: 60%; object-fit: contain; }
@media (max-width: 640px) { .dept-hero-ico { width: 48px; height: 48px; } .dept-hero-ico .icon { width: 26px; height: 26px; } .dept-title { gap: 12px; } }
html.hc .dept-hero-ico { background: #FFD700 !important; color: #000 !important; }

/* Courses offered (home, /courses, /courses/{slug}) */
.crs-sub { margin: 2px 0 0; color: var(--text-600); max-width: 760px; }
.crs-band .h-section { margin-bottom: 4px; }
.crs-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; align-items: stretch; }
.crs-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.crs-card { position: relative; display: flex; flex-direction: column; gap: 10px; background: #fff; border: 1px solid var(--border); border-top: 4px solid var(--blue-200); border-radius: 14px; padding: 20px 18px 18px; box-shadow: var(--shadow-soft); transition: transform .2s, box-shadow .2s, border-color .2s; }
.crs-card:hover, .crs-card:focus-within { transform: translateY(-3px); box-shadow: var(--shadow-lift); border-color: var(--blue-200); border-top-color: var(--blue-700); }
.crs-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.crs-ico { width: 56px; height: 56px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); display: grid; place-items: center; flex: none; }
.crs-ico .dept-icon-img { width: 60%; height: 60%; object-fit: contain; }
.crs-level { font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; border-radius: 999px; padding: 3px 10px; background: var(--blue-50); color: var(--blue-800); border: 1px solid var(--blue-200); }
.crs-level-pg { background: var(--blue-700); color: #fff; border-color: var(--blue-700); }
.crs-level-auxiliary { background: #fff; }
html[lang=hi] .crs-level { text-transform: none; letter-spacing: 0; }
.crs-name { font-size: 1.08rem; line-height: 1.3; margin: 2px 0 0; }
.crs-name a { color: var(--blue-800); text-decoration: none; }
.crs-name a:hover { text-decoration: underline; }
.crs-summary { margin: 0; font-size: .92rem; color: var(--text-600); }
.crs-facts { margin: 2px 0 0; display: grid; gap: 8px; }
.crs-facts div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1px; }
.crs-facts dt { display: flex; align-items: center; gap: 6px; font-size: .76rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--text-600); }
html[lang=hi] .crs-facts dt { text-transform: none; letter-spacing: 0; }
.crs-facts dt .icon { color: var(--blue-700); }
.crs-facts dd { margin: 0 0 0 22px; font-size: .92rem; color: var(--text-900); font-weight: 600; line-height: 1.4; }
.crs-spec-h { margin: 4px 0 0; font-size: .76rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--text-600); }
.crs-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.crs-chips li { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; line-height: 1.3; color: var(--blue-800); background: var(--blue-50); border: 1px solid var(--blue-100); border-radius: 999px; padding: 4px 6px 4px 10px; }
.crs-chip-n { min-width: 1.6em; text-align: center; font-weight: 700; color: #fff; background: var(--blue-700); border-radius: 999px; padding: 0 6px; }
.crs-actions { margin: auto 0 0; padding-top: 8px; display: flex; flex-wrap: wrap; gap: 8px; }
.crs-actions .btn { flex: 1 1 auto; justify-content: center; font-size: .9rem; padding: 8px 12px; min-height: 40px; }
.crs-stats { list-style: none; margin: 26px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.crs-stats li { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 12px; align-items: center; background: var(--blue-800); color: #fff; border-radius: 14px; padding: 14px 16px; }
.crs-stats-ico { grid-row: span 2; width: 44px; height: 44px; border-radius: 50%; background: rgba(255,255,255,.14); display: grid; place-items: center; }
.crs-stats strong { font-size: 1.6rem; line-height: 1.1; }
.crs-stats li > span:last-child { font-size: .85rem; color: var(--blue-100); }
.crs-more { margin-top: 22px; }
.crs-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 36px; align-items: start; }
.crs-facts-lg { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 18px; }
.crs-facts-lg div { background: var(--blue-50); border: 1px solid var(--blue-100); border-radius: 12px; padding: 12px 14px; }
.crs-facts-lg dd { font-size: 1rem; }
.crs-side { display: grid; gap: 16px; }
.crs-box { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 18px; box-shadow: var(--shadow-soft); }
.crs-box h2 { font-size: 1.05rem; color: var(--blue-800); margin: 0 0 10px; }
.crs-box p { margin: 8px 0 0; }
.crs-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.crs-links a { display: inline-flex; align-items: center; gap: 8px; }
.crs-mini-ico { width: 30px; height: 30px; border-radius: 50%; background: var(--blue-100); color: var(--blue-700); display: inline-grid; place-items: center; flex: none; }
.crs-mini-ico .dept-icon-img { width: 60%; height: 60%; }
@media (max-width: 1100px) { .crs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .crs-layout { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .crs-grid, .crs-grid-3 { grid-template-columns: minmax(0, 1fr); } .crs-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .crs-stats li { grid-template-columns: minmax(0, 1fr); text-align: left; } .crs-stats-ico { display: none; } }
@media (prefers-reduced-motion: reduce) { .crs-card:hover, .crs-card:focus-within { transform: none; } }
html.hc .crs-card, html.hc .crs-box, html.hc .crs-facts-lg div, html.hc .crs-chips li, html.hc .crs-stats li { background: #000 !important; color: #fff !important; border-color: #fff !important; }
html.hc .crs-name a, html.hc .crs-box h2 { color: #FFD700 !important; }
html.hc .crs-facts dd, html.hc .crs-facts dt, html.hc .crs-summary, html.hc .crs-spec-h, html.hc .crs-sub, html.hc .crs-stats li > span:last-child { color: #fff !important; }
html.hc .crs-ico, html.hc .crs-level, html.hc .crs-chip-n, html.hc .crs-mini-ico { background: #FFD700 !important; color: #000 !important; border-color: #FFD700 !important; }
