:root {
  --primary: #9f1d20;
  --ink: #18212b;
  --muted: #68727e;
  --paper: #f6f4ef;
  --line: #e5e1d8;
  --gold: #c99b4a;
  --font-sans: "Segoe UI", "Noto Sans", Arial, sans-serif;
  --font-heading: "Segoe UI", "Noto Sans", Arial, sans-serif;
}

html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); font-family: var(--font-sans); background: #fff; font-synthesis: none; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
button, input, select, textarea { font-family: inherit; }
.wrap { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
a { color: inherit; text-decoration: none; }
.govbar { background: #751317; color: #fff; text-align: center; padding: 7px; font-size: 11px; letter-spacing: 1.5px; }
.brand { display: flex; align-items: center; gap: 18px; padding: 22px 0; }
.brand .mark { display: grid; place-items: center; flex: 0 0 66px; width: 66px; height: 66px; border-radius: 50%; background: var(--primary); color: #fff; border: 4px double #fff; box-shadow: 0 0 0 2px var(--primary); font: 700 21px Georgia; }
.brand p, .brand h1 { margin: 0; text-transform: uppercase; }
.brand p { color: var(--primary); font-size: 14px; font-weight: 700; letter-spacing: 1px; }
.brand h1 { font: 700 clamp(22px, 3vw, 34px) Georgia; margin: 4px 0; }
.brand small { color: var(--muted); }

header nav.navbar { background: var(--primary); color: #fff; box-shadow: 0 3px 12px #0002; }
.nav { display: flex; align-items: stretch; overflow: visible; }
.nav > a,
.nav > .portal-menu-node > a { padding: 16px 17px; white-space: nowrap; font-size: 14px; font-weight: 700; border-bottom: 3px solid transparent; color: #fff; }
.nav > a:hover,
.nav > .portal-menu-node > a:hover,
.nav > .portal-menu-node > a:focus-visible { color: #fff; background: #ffffff12; border-color: var(--gold); }
.nav .admin-link { margin-left: auto; background: #731316; }
.portal-toggler { margin: 8px 0; border-color: #ffffff80; }
.portal-toggler:focus { box-shadow: 0 0 0 .2rem #ffffff40; }
.portal-toggler .navbar-toggler-icon { filter: invert(1); }

.page { padding: 32px 0 60px; }
.zone { margin-bottom: 28px; }
.zone > [class*="col-"] { display: flex; }
.zone .module { width: 100%; }
.module-slot { min-width: 0; }
.module-slot > * { width: 100%; min-width: 0; }
.module-slot.module-title-hidden {
  align-items: stretch;
}
.module-slot.module-title-hidden > *,
.module-slot.module-title-hidden .module {
  flex: 1 1 100%;
  width: 100%;
  max-width: none;
  align-self: stretch;
}
.module-slot.module-title-hidden .html-module > div,
.module-slot.module-title-hidden .content-detail-module,
.module-slot.module-title-hidden .breadcrumb-module,
.module-slot.module-title-hidden .portal-breadcrumb {
  width: 100%;
  max-width: none;
}
.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.module {
  border-style: var(--module-border-style, solid);
  border-width: var(--module-border-width, 1px);
  border-color: var(--module-border-color, var(--line));
  border-radius: var(--module-border-radius, 0);
  background: var(--module-background, #fff);
  padding: var(--module-padding-y, 22px) var(--module-padding-x, 22px);
}
.module-title { display: flex; align-items: center; gap: 14px; margin-bottom: 17px; }
.module-title h2 { font: 700 22px Georgia; margin: 0; color: var(--primary); }
.module-title span { height: 1px; background: var(--line); flex: 1; }
.hero { grid-column: 1 / -1; display: grid; grid-template-columns: 1.4fr 1fr; padding: var(--module-padding-y, 0) var(--module-padding-x, 0); min-height: 390px; background: var(--module-background, linear-gradient(120deg, #762023, #a72c2f)); color: #fff; border-style: var(--module-border-style, none); border-width: var(--module-border-width, 0); border-color: var(--module-border-color, transparent); border-radius: var(--module-border-radius, 0); }
.hero-lead { align-self: end; padding: 46px; }
.hero-lead span, .eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1.3px; text-transform: uppercase; color: var(--gold); }
.hero h2 { font: 700 clamp(30px, 4vw, 48px) Georgia; margin: 12px 0; line-height: 1.08; }
.hero h2 a { color: #fff; }
.hero p { color: #f2dddd; line-height: 1.6; }
.hero-side { background: #fff; color: var(--ink); padding: 25px; }
.compact { border-bottom: 1px solid var(--line); padding: 14px 0; }
.compact:first-child { padding-top: 0; }
.compact h3 { font: 700 17px Georgia; margin: 6px 0; }
.compact time, .list-item time { font-size: 12px; color: var(--muted); }

.list-item { display: grid; grid-template-columns: 70px 1fr; gap: 15px; padding: 17px 0; border-bottom: 1px solid var(--line); }
.list-item .thumb { height: 63px; display: grid; place-items: center; background: var(--paper); color: var(--primary); font-weight: 700; }
.list-item h3 { margin: 4px 0; font: 700 18px Georgia; }
.list-item p { color: var(--muted); margin: 6px 0; font-size: 14px; line-height: 1.5; }
.media-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.media-grid.large { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.media-card h3 { font: 700 17px Georgia; line-height: 1.35; margin-top: 10px; }
.media-placeholder { height: 130px; background: linear-gradient(135deg, #303944, #111820); display: grid; place-items: center; color: #fff; font-size: 34px; }
.large .media-placeholder { height: 190px; }

.schedule-row { display: grid; grid-template-columns: 62px 1fr; gap: 15px; padding: 13px 0; border-bottom: 1px solid var(--line); }
.day { background: var(--primary); color: #fff; text-align: center; padding: 8px; }
.day strong { font: 700 22px Georgia; display: block; }
.day small { font-size: 10px; }
.schedule-row b { font: 700 16px Georgia; }
.schedule-row p { margin: 7px 0; color: var(--muted); font-size: 13px; }
.stats > div:not(.module-title) { display: inline-flex; flex-direction: column; width: 32%; text-align: center; padding: 18px 5px; }
.stats strong { font: 700 25px Georgia; color: var(--primary); }
.stats small { color: var(--muted); margin-top: 6px; }

.page-title { border-left: 5px solid var(--primary); padding-left: 20px; margin: 10px 0 30px; }
.page-title p { color: var(--primary); font-size: 11px; font-weight: 700; letter-spacing: 1.5px; margin: 0; }
.page-title h2 { font: 700 36px Georgia; margin: 5px 0; }
.listing, .detail { max-width: 850px; }
.detail { padding: 40px 0 70px; }
.detail h2 { font: 700 clamp(32px, 5vw, 48px) Georgia; line-height: 1.15; margin: 12px 0; }
.byline { font-size: 13px; color: var(--muted); border-bottom: 1px solid var(--line); padding-bottom: 20px; }
.detail .lead { font: 700 19px/1.65 Georgia; }
.body { font: 17px/1.8 Georgia; }
.intro { background: var(--paper); padding: 28px; border-left: 4px solid var(--gold); line-height: 1.7; }
.leader-grid, .unit-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.leader-grid article, .unit-grid article { border: 1px solid var(--line); padding: 23px; }
.leader-grid h3, .unit-grid h3 { font-family: Georgia; margin-bottom: 5px; }
.leader-grid b { color: var(--primary); font-size: 13px; }
.leader-grid p, .unit-grid p { color: var(--muted); line-height: 1.6; }

footer { background: #20262d; color: #fff; padding: 38px 0; border-top: 5px solid var(--primary); }
footer p { color: #bbc1c7; font-size: 13px; }
.loading, .error { padding: 80px; text-align: center; }
.portal-breadcrumb { width: 100%; padding: 11px 15px; border: 1px solid var(--line); background: var(--paper); font-size: 13px; }
.portal-breadcrumb ol { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin: 0; padding: 0; list-style: none; }
.portal-breadcrumb li { display: flex; align-items: center; gap: 7px; color: var(--muted); }
.portal-breadcrumb li:not(:last-child)::after { content: "/"; color: #a5abb1; }
.portal-breadcrumb a { color: var(--primary); font-weight: 600; }
.portal-breadcrumb [aria-current="page"] { color: var(--ink); }

.brand .mark,
.brand h1,
.module-title h2,
.hero h2,
.compact h3,
.list-item h3,
.media-card h3,
.day strong,
.schedule-row b,
.stats strong,
.page-title h1,
.page-title h2,
.detail h1,
.detail h2,
.detail .lead,
.body,
.leader-grid h3,
.unit-grid h3 {
  font-family: var(--font-heading);
  letter-spacing: normal;
}

@media (max-width: 991.98px) {
  .navbar .wrap { display: block; }
  .navbar-collapse .nav { display: flex; align-items: stretch; flex-direction: column; overflow: visible; padding-bottom: 8px; }
  .navbar-collapse .nav > a,
  .navbar-collapse .nav > .portal-menu-node > a { padding: 12px 10px; border-bottom: 1px solid #ffffff25; }
  .nav .admin-link { margin-left: 0; background: transparent; }
  .wrap { width: min(100% - 24px, 1180px); }
  .brand { padding: 15px 0; }
  .brand .mark { flex-basis: 50px; width: 50px; height: 50px; }
  .brand h1 { font-size: 21px; }
  .cols-2, .cols-3, .hero, .leader-grid, .unit-grid { grid-template-columns: 1fr; }
  .hero-lead { padding: 30px; }
  .hero-side { display: none; }
  .stats > div:not(.module-title) { width: 100%; }
}

@media (max-width: 767.98px) {
  .page { padding-top: 22px; }
  .module { padding: var(--module-padding-y, 16px) var(--module-padding-x, 16px); }
  .media-grid.large { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .detail { padding: 28px 0 50px; }
  .loading, .error { padding: 50px 16px; }
}

@media (max-width: 575.98px) {
  .govbar { font-size: 9px; }
  .brand { gap: 12px; }
  .brand p { font-size: 11px; }
  .brand h1 { font-size: 18px; }
  .brand small { display: none; }
  .media-grid, .media-grid.large { grid-template-columns: 1fr; }
  .page-title h2 { font-size: 29px; }
  .hero { min-height: 320px; }
  .hero-lead { padding: 22px; }
  .list-item { grid-template-columns: 52px 1fr; }
  .list-item .thumb { height: 50px; }
  .schedule-row { grid-template-columns: 52px 1fr; }
  .stats > div:not(.module-title) { padding: 10px 5px; }
}
