:root {
  --blue: #167bc1;
  --blue-light: #2497df;
  --blue-dark: #083a63;
  --green: #199447;
  --green-light: #29aa56;
  --green-dark: #0d6732;
  --gold: #d7a51f;
  --ink: #132f43;
  --muted: #607786;
  --line: #d7e4ec;
  --surface: #f3f7f9;
  --white: #fff;
  --max: 1400px;
  --reading: 1040px;
  --hero-height: 440px;
  --radius: 16px;
  --shadow: 0 16px 42px rgba(8, 58, 99, .11);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--white);
  font-family: "Segoe UI", Arial, sans-serif;
  font-size: 16px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--blue); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
img { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; }
.gss-icon { display: inline-block; flex: 0 0 auto; vertical-align: -.18em; }
.container,
.topbar .inner,
.header-main,
.nav-inner,
.footer-inner,
.footer-bottom {
  width: 100%;
  max-width: var(--max);
  margin-inline: auto;
  padding-inline: 30px;
}

/* Header and navigation */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  border-top: 4px solid var(--gold);
  background: var(--white);
  box-shadow: 0 4px 20px rgba(8, 58, 99, .08);
}
.topbar { color: var(--white); background: var(--blue-dark); font-size: 13px; }
.topbar .inner {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding-block: 7px;
}
.topbar span,
.topbar a { display: inline-flex; align-items: center; gap: 7px; color: var(--white); }
.site-notice {
  padding: 7px 20px;
  color: #185c39;
  background: #eaf7ee;
  text-align: center;
  font-size: 13px;
  font-weight: 700;
}
.header-main {
  position: relative;
  display: flex;
  min-height: 96px;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  color: var(--white);
  background: linear-gradient(120deg, var(--blue-dark), var(--blue));
}
.header-main::before {
  position: absolute;
  right: 0;
  left: 50%;
  width: 100vw;
  height: 96px;
  z-index: -1;
  content: "";
  transform: translateX(-50%);
  background: linear-gradient(120deg, var(--blue-dark), var(--blue));
}
.brand { display: flex; min-width: 0; align-items: center; gap: 14px; color: var(--white); }
.brand:hover { text-decoration: none; }
.brand img { width: 76px; height: 76px; flex: 0 0 76px; object-fit: contain; }
.brand strong { display: block; color: var(--white); font-size: 22px; line-height: 1.18; letter-spacing: -.015em; }
.brand span { display: block; margin-top: 4px; color: #dff3ff; font-size: 14px; }
.header-tools { display: flex; align-items: center; gap: 11px; }
.search-link,
.mobile-nav-toggle {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .72);
  border-radius: 9px;
  color: var(--blue-dark);
  background: var(--white);
}
.mobile-nav-toggle { display: none; cursor: pointer; }
.lang { display: flex; gap: 6px; }
.lang a {
  padding: 7px 10px;
  border: 1px solid rgba(255, 255, 255, .6);
  border-radius: 8px;
  color: var(--white);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .02em;
}
.lang a.active { color: var(--blue-dark); background: var(--white); }
.nav { border-bottom: 1px solid var(--line); background: var(--white); }
.nav-inner { min-height: 52px; }
.menu-root,
.submenu { margin: 0; padding: 0; list-style: none; }
.menu-root { display: flex; align-items: stretch; justify-content: center; gap: 2px; }
.menu-root > li { position: relative; }
.menu-root > li > a {
  display: flex;
  min-height: 52px;
  align-items: center;
  gap: 7px;
  padding: 0 14px;
  border-bottom: 3px solid transparent;
  color: #24485f;
  font-size: 14px;
  font-weight: 750;
}
.menu-root > li > a > .gss-icon { color: var(--green); }
.menu-root > li:hover > a,
.menu-root > li:focus-within > a { border-bottom-color: var(--gold); color: var(--blue-dark); text-decoration: none; }
.has-sub > a::after {
  width: 7px;
  height: 7px;
  margin-left: 3px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  content: "";
  transform: rotate(45deg) translateY(-2px);
}
.submenu {
  position: absolute;
  top: calc(100% - 1px);
  left: 0;
  display: none;
  min-width: 270px;
  padding: 8px;
  border: 1px solid var(--line);
  border-top: 4px solid var(--green);
  border-radius: 0 0 12px 12px;
  background: var(--white);
  box-shadow: var(--shadow);
}
.has-sub:hover > .submenu,
.has-sub:focus-within > .submenu { display: block; }
.submenu li { position: relative; }
.submenu a {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 10px 11px;
  border-radius: 7px;
  color: #2b4c61;
  line-height: 1.35;
}
.submenu a .gss-icon { color: var(--blue); }
.submenu a:hover,
.submenu a:focus { color: var(--blue-dark); background: #eef7fb; text-decoration: none; }
.submenu .submenu { top: -8px; left: calc(100% - 2px); border-top-color: var(--gold); }
.submenu .has-sub > a::after { margin-left: auto; transform: rotate(-45deg); }

/* Standardised hero system */
.hero,
.page-hero {
  position: relative;
  display: flex;
  height: var(--hero-height);
  min-height: var(--hero-height);
  align-items: center;
  isolation: isolate;
  overflow: hidden;
  background: var(--blue-dark);
}
.hero-media,
.page-hero-media {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--hero-focus, center center);
}
.hero-overlay,
.page-hero-overlay {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(5, 40, 68, .94) 0%, rgba(5, 40, 68, .75) 48%, rgba(5, 40, 68, .16) 100%);
}
.hero-content,
.page-hero-content { width: 100%; color: var(--white); }
.hero h1,
.page-hero h1 {
  max-width: 900px;
  margin: 10px 0 16px;
  color: var(--white);
  font-size: clamp(40px, 4.8vw, 64px);
  line-height: 1.06;
  letter-spacing: -.035em;
}
.hero p,
.page-hero p {
  max-width: 780px;
  margin: 0;
  color: #eef8ff;
  font-size: 19px;
  line-height: 1.55;
}
.hero .btn { margin-top: 22px; }
.hero-eyebrow,
.page-hero .eyebrow { color: #d7f6df; }
.hero-icon {
  display: grid;
  width: 54px;
  height: 54px;
  margin-bottom: 10px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .34);
  border-bottom: 4px solid var(--gold);
  border-radius: 13px;
  color: var(--white);
  background: rgba(255, 255, 255, .14);
}
.page-hero.hero-portrait { background: linear-gradient(115deg, var(--blue-dark), var(--blue)); }
.page-hero.hero-portrait .page-hero-media {
  right: 3vw;
  left: auto;
  width: clamp(420px, 38vw, 600px);
  object-fit: contain;
  object-position: center bottom;
}
.page-hero.hero-portrait .page-hero-overlay {
  background: linear-gradient(90deg, rgba(5, 40, 68, .98) 0%, rgba(5, 40, 68, .93) 48%, rgba(5, 40, 68, .25) 78%, rgba(5, 40, 68, .08) 100%);
}

/* Content and typography */
.content { padding: 66px 0 72px; }
.content-section { max-width: var(--reading); margin: 0 auto 34px; }
.content-section h2,
.section-heading h2,
.richtext h2 {
  margin: 0 0 14px;
  color: var(--blue-dark);
  font-size: clamp(29px, 3vw, 40px);
  line-height: 1.17;
  letter-spacing: -.022em;
}
.richtext { color: #264557; font-size: 17px; }
.richtext p { margin: 0 0 1.15em; }
.richtext h3 { margin-top: 1.4em; color: var(--blue); font-size: 22px; }
.richtext ul,
.richtext ol { padding-left: 1.35em; }
.richtext table { width: 100%; border-collapse: collapse; }
.richtext th,
.richtext td { padding: 11px; border: 1px solid var(--line); text-align: left; }
.eyebrow {
  display: inline-block;
  color: var(--green);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 20px;
  border: 0;
  border-radius: 9px;
  color: var(--white);
  background: var(--green);
  box-shadow: 0 7px 18px rgba(25, 148, 71, .22);
  cursor: pointer;
  font-weight: 800;
}
.btn:hover { color: var(--white); filter: brightness(.96); text-decoration: none; }
.content-image { width: 100%; max-height: 620px; border-radius: var(--radius); object-fit: cover; box-shadow: var(--shadow); }
.caption { margin: 8px 0 0; color: var(--muted); font-size: 13px; }
.split {
  display: grid;
  max-width: 1220px;
  margin: 52px auto;
  padding: 24px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 50px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--white);
  box-shadow: var(--shadow);
}
.split img { width: 100%; height: 430px; border-radius: 13px; object-fit: cover; }
.two-column {
  display: grid;
  max-width: 1180px;
  margin: 44px auto;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 30px;
}
.two-column > div {
  padding: 28px;
  border: 1px solid var(--line);
  border-top: 5px solid var(--blue);
  border-radius: var(--radius);
  background: #f8fbfd;
}
.two-column > div:nth-child(even) { border-top-color: var(--green); background: #f5fbf7; }
.callout {
  max-width: var(--reading);
  margin: 34px auto;
  padding: 26px 28px;
  border-left: 6px solid var(--green);
  border-radius: 0 13px 13px 0;
  background: #edf8f1;
}
.callout h3 { margin: 0 0 7px; color: var(--green-dark); }
.callout p { margin: 0; }
.content-divider { margin: 42px 0; border: 0; border-top: 1px solid var(--line); }

/* Balanced card systems */
.feature-section { margin: 58px 0; }
.section-heading { max-width: 900px; margin: 0 auto 30px; text-align: center; }
.section-heading p { margin: 0; color: var(--muted); font-size: 18px; }
.feature-grid,
.cards { display: grid; gap: 22px; align-items: stretch; }
.feature-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.feature-grid.count-2 { max-width: 900px; margin-inline: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.feature-grid.count-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.feature-grid.count-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards { margin: 28px 0; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards.count-2 { max-width: 900px; margin-inline: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cards.count-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.feature-card,
.card,
.pub-card,
.news-card {
  height: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: 0 11px 30px rgba(8, 58, 99, .08);
}
.feature-card,
.card,
.pub-card { display: flex; flex-direction: column; padding: 26px; }
.feature-card:nth-child(even) { background: linear-gradient(155deg, #f1faf4, var(--white)); }
.feature-card h3,
.card h3,
.pub-card h2 { margin: 16px 0 9px; color: var(--blue-dark); font-size: 21px; line-height: 1.3; }
.feature-card p,
.card p,
.pub-card p { margin: 0; color: var(--muted); }
.card small,
.pub-card .meta { margin-top: auto; padding-top: 17px; }
.feature-icon,
.card-icon,
.pub-icon,
.download-icon {
  display: grid;
  width: 52px;
  height: 52px;
  place-items: center;
  border-radius: 13px;
  color: var(--white);
  background: linear-gradient(135deg, var(--blue), var(--blue-light));
  box-shadow: 0 8px 18px rgba(22, 123, 193, .24);
}
.feature-card:nth-child(even) .feature-icon,
.card-icon.green,
.download-icon { background: linear-gradient(135deg, var(--green), var(--green-light)); }

/* Publications and news */
.publication-filter-form {
  display: grid;
  margin: 30px 0 16px;
  padding: 20px;
  grid-template-columns: minmax(240px, 2fr) repeat(3, minmax(155px, 1fr)) auto;
  gap: 10px;
  align-items: end;
  border: 1px solid #cfe1ea;
  border-radius: var(--radius);
  background: linear-gradient(135deg, #eef7fb, #f1faf4);
}
.publication-filter-form input,
.publication-filter-form select,
.site-search input,
.contact-form input,
.contact-form textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #c9d9e2;
  border-radius: 8px;
  color: var(--ink);
  background: var(--white);
}
.archive-summary { margin: 0 0 20px; color: var(--muted); font-size: 13px; }
.pub-grid,
.news-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 22px;
}
.pub-grid > .pub-card,
.news-grid > .news-card { flex: 1 1 calc(33.333% - 22px); max-width: calc(33.333% - 15px); }
.news-card { display: flex; flex-direction: column; overflow: hidden; }
.news-card img { width: 100%; height: 235px; object-fit: cover; }
.news-card > div { display: flex; flex: 1; flex-direction: column; padding: 22px; }
.news-card h2 { margin: 12px 0 8px; font-size: 21px; line-height: 1.32; }
.news-card .meta { margin-top: auto; padding-top: 14px; }
.meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--muted); font-size: 13px; }
.pub-filters,
.news-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 24px; }
.pub-filters a,
.news-filters a { padding: 8px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--white); font-size: 13px; font-weight: 750; }
.news-filters a.active { border-color: var(--blue); color: var(--white); background: var(--blue); }
.empty-state { padding: 54px 20px; border: 1px dashed var(--line); border-radius: var(--radius); background: #fbfdfe; text-align: center; }
.empty-state svg { color: var(--blue); }
.document-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.document-meta span {
  display: grid;
  min-height: 112px;
  padding: 18px;
  grid-template-columns: auto 1fr;
  gap: 5px 9px;
  align-items: start;
  border: 1px solid var(--line);
  border-top: 4px solid var(--blue);
  border-radius: 12px;
  background: #f7fbfd;
}
.document-meta span:nth-child(even) { border-top-color: var(--green); background: #f5fbf7; }
.document-meta span svg { grid-row: 1 / 3; margin-top: 3px; color: var(--blue); }
.document-meta strong { color: var(--muted); font-size: 11px; letter-spacing: .04em; text-transform: uppercase; }
.document-layout { display: grid; margin-top: 42px; grid-template-columns: minmax(0, 1fr) 340px; gap: 42px; align-items: start; }
.document-abstract { max-width: none; }
.download-panel { position: sticky; top: 180px; padding: 28px; border: 1px solid var(--line); border-top: 6px solid var(--green); border-radius: var(--radius); background: var(--white); box-shadow: var(--shadow); }
.download-panel h2 { color: var(--blue-dark); font-size: 24px; }
.download-panel .btn { width: 100%; }
.download-panel .meta { display: block; margin-top: 18px; line-height: 1.65; }

/* Organogram, galleries, contact and calls to action */
.organogram-section { margin: 60px 0; }
.organogram { overflow-x: auto; padding: 24px 12px 8px; }
.org-level { position: relative; display: flex; justify-content: center; gap: 22px; margin: 0 auto 54px; }
.org-level:not(:last-child)::after { position: absolute; bottom: -32px; left: 50%; width: 2px; height: 32px; content: ""; background: #9bb8c9; }
.org-level:not(:first-child)::before { position: absolute; top: -22px; right: 12%; left: 12%; height: 2px; content: ""; background: #9bb8c9; }
.org-node { position: relative; display: flex; min-width: 185px; max-width: 245px; min-height: 94px; flex: 1 1 190px; flex-direction: column; justify-content: center; padding: 17px; border: 1px solid #b9cfdc; border-top: 5px solid var(--blue); border-radius: 12px; background: var(--white); text-align: center; box-shadow: 0 8px 22px rgba(8, 58, 99, .08); }
.org-node span { margin-top: 5px; color: var(--muted); font-size: 12px; }
.org-level:nth-child(even) .org-node { border-top-color: var(--green); }
.photo-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.photo-grid figure { margin: 0; }
.photo-grid img { width: 100%; aspect-ratio: 4 / 3; border-radius: 11px; object-fit: cover; }
.photo-grid figcaption { padding: 7px 2px; color: var(--muted); font-size: 12px; }
.article-body { max-width: var(--reading); }
.article-feature { width: 100%; max-height: 570px; margin-bottom: 28px; border-radius: var(--radius); object-fit: cover; }
.contact-layout { display: grid; grid-template-columns: minmax(280px, .9fr) minmax(380px, 1.1fr); gap: 48px; align-items: start; }
.contact-form { display: grid; gap: 14px; }
.contact-form label { display: grid; gap: 6px; color: var(--blue-dark); font-size: 13px; font-weight: 800; }
.notice { display: flex; align-items: center; gap: 9px; margin-bottom: 18px; padding: 13px 15px; border-left: 4px solid var(--green); background: #effaf3; }
.site-search { display: flex; max-width: 760px; margin-top: 18px; }
.site-search input { border-radius: 8px 0 0 8px; }
.site-search button { display: flex; align-items: center; gap: 7px; padding: 0 18px; border: 0; border-radius: 0 8px 8px 0; color: var(--white); background: var(--blue); font-weight: 750; }
.search-results article { padding: 22px 0; border-bottom: 1px solid var(--line); }
.cta-block { display: flex; margin: 44px 0; padding: 32px; align-items: center; justify-content: space-between; gap: 32px; border-radius: var(--radius); color: var(--white); background: linear-gradient(135deg, var(--blue-dark), var(--blue)); }
.cta-block h3 { margin: 0 0 7px; font-size: 27px; }
.cta-block p { max-width: 760px; margin: 0; }
.not-found { padding: 70px 0; text-align: center; }

/* Footer */
.footer { margin-top: 0; border-top: 5px solid var(--gold); color: #e1f3e7; background: linear-gradient(135deg, #0a5a2c, var(--green-dark)); }
.footer-inner { display: grid; padding-block: 50px; grid-template-columns: 1.65fr 1fr 1.25fr 1.15fr; gap: 38px; }
.footer-seal { width: 82px; height: 82px; margin-bottom: 14px; object-fit: contain; }
.footer h4 { margin: 0 0 15px; color: var(--white); font-size: 14px; letter-spacing: .06em; text-transform: uppercase; }
.footer p { margin: 0 0 12px; }
.footer p,
.footer p a { display: flex; align-items: flex-start; gap: 8px; color: #e1f3e7; }
.footer a:hover { color: var(--white); text-decoration-color: var(--gold); }
.footer-icon { display: grid; width: 25px; height: 25px; flex: 0 0 25px; place-items: center; border-radius: 7px; color: var(--white); background: var(--blue); }
.footer-icon.blue { background: #2789cf; }
.socials { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.socials a { padding: 6px 9px; border: 1px solid rgba(255, 255, 255, .25); border-radius: 7px; color: var(--white); font-size: 12px; }
.footer-bottom { display: flex; padding-block: 16px; justify-content: space-between; gap: 22px; border-top: 1px solid rgba(255, 255, 255, .2); color: #d9ede0; font-size: 13px; }
.footer-bottom a { color: var(--white); }

@media (max-width: 1120px) {
  .menu-root > li > a { padding-inline: 10px; font-size: 13px; }
  .feature-grid.count-4,
  .cards.count-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .publication-filter-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 980px) {
  :root { --hero-height: 400px; }
  .topbar .inner { display: none; }
  .header-main { min-height: 88px; }
  .header-main::before { height: 88px; }
  .brand img { width: 66px; height: 66px; flex-basis: 66px; }
  .brand strong { font-size: 18px; }
  .mobile-nav-toggle { display: grid; }
  .nav { display: none; max-height: calc(100vh - 88px); overflow-y: auto; }
  .nav-open .nav { display: block; }
  .nav-inner { padding-block: 10px; }
  .menu-root { flex-direction: column; align-items: stretch; }
  .menu-root > li > a { min-height: 44px; padding: 9px 8px; border: 0; }
  .submenu,
  .has-sub:hover > .submenu,
  .has-sub:focus-within > .submenu {
    position: static;
    display: block;
    min-width: 0;
    padding: 0 0 0 18px;
    border: 0;
    border-left: 2px solid #dceaf1;
    border-radius: 0;
    box-shadow: none;
  }
  .submenu .submenu { position: static; padding-left: 18px; }
  .has-sub > a::after { margin-left: auto; }
  .feature-grid,
  .feature-grid.count-4,
  .feature-grid.count-6,
  .cards,
  .cards.count-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pub-grid > .pub-card,
  .news-grid > .news-card { flex-basis: calc(50% - 22px); max-width: calc(50% - 11px); }
  .split,
  .two-column,
  .document-layout,
  .contact-layout { grid-template-columns: 1fr; }
  .split img { height: 360px; }
  .document-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .download-panel { position: static; }
  .footer-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-hero.hero-portrait .page-hero-media { right: 0; width: 52vw; }
}

@media (max-width: 660px) {
  :root { --hero-height: 350px; }
  .container,
  .topbar .inner,
  .header-main,
  .nav-inner,
  .footer-inner,
  .footer-bottom { padding-inline: 18px; }
  .brand { gap: 9px; }
  .brand img { width: 56px; height: 56px; flex-basis: 56px; }
  .brand strong { max-width: 190px; font-size: 15px; }
  .brand span { display: none; }
  .header-tools { gap: 6px; }
  .search-link,
  .mobile-nav-toggle { width: 36px; height: 36px; }
  .lang a { padding: 6px; font-size: 10px; }
  .hero h1,
  .page-hero h1 { font-size: 35px; }
  .hero p,
  .page-hero p { font-size: 16px; }
  .hero-icon { width: 46px; height: 46px; }
  .hero-overlay,
  .page-hero-overlay,
  .page-hero.hero-portrait .page-hero-overlay { background: linear-gradient(90deg, rgba(5, 40, 68, .94), rgba(5, 40, 68, .64)); }
  .page-hero.hero-portrait .page-hero-media { width: 100%; object-fit: contain; object-position: right bottom; }
  .content { padding: 48px 0 56px; }
  .feature-grid,
  .feature-grid.count-2,
  .feature-grid.count-4,
  .feature-grid.count-6,
  .cards,
  .cards.count-2,
  .cards.count-4 { grid-template-columns: 1fr; }
  .pub-grid > .pub-card,
  .news-grid > .news-card { flex-basis: 100%; max-width: 100%; }
  .publication-filter-form,
  .document-meta,
  .footer-inner,
  .photo-grid { grid-template-columns: 1fr; }
  .split { padding: 16px; gap: 24px; }
  .split img { height: 320px; }
  .two-column > div { padding: 22px; }
  .cta-block { display: block; padding: 25px; }
  .cta-block .btn { margin-top: 18px; }
  .footer-bottom { flex-direction: column; }
  .org-level { min-width: 620px; }
  .site-search { display: grid; grid-template-columns: 1fr; }
  .site-search input,
  .site-search button { border-radius: 8px; }
  .site-search button { margin-top: 8px; padding: 12px; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}

/* Release 1.3.4 — balanced full-width page composition */
:root {
  --reading: 1280px;
}

/* Use the available desktop canvas instead of placing most copy in a narrow centre strip. */
.content { padding: 54px 0 64px; }
.content > .container { display: flow-root; }
.content > .container > :first-child { margin-top: 0; }
.content > .container > :last-child { margin-bottom: 0; }
.content-section {
  width: 100%;
  max-width: var(--reading);
  margin: 0 auto 32px;
}
.content-section.richtext { max-width: var(--reading); }
.richtext > :first-child,
.split-copy > :first-child { margin-top: 0; }
.richtext > :last-child,
.split-copy > :last-child { margin-bottom: 0; }

/* Standard pages with two or more plain paragraphs use a balanced editorial two-column layout. */
.balanced-prose {
  column-count: 2;
  column-gap: 54px;
  column-fill: balance;
  text-align: left;
}
.balanced-prose p {
  margin-top: 0;
  break-inside: avoid-column;
}
.contact-layout .balanced-prose,
.split .balanced-prose,
.two-column .balanced-prose { column-count: 1; }

/* Full-width, horizontally distributed icon/card sections. */
.feature-section {
  width: 100%;
  max-width: var(--reading);
  margin: 46px auto;
}
.section-heading {
  max-width: 1080px;
  margin: 0 auto 26px;
  text-align: center;
}
.feature-grid,
.feature-grid.count-2,
.feature-grid.count-4,
.feature-grid.count-6,
.cards,
.cards.count-2,
.cards.count-4 {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: 22px;
  max-width: none;
  margin-inline: 0;
}
.feature-grid > .feature-card,
.feature-grid.count-1 > .feature-card,
.feature-grid.count-2 > .feature-card,
.feature-grid.count-3 > .feature-card,
.feature-grid.count-4 > .feature-card,
.feature-grid.count-5 > .feature-card,
.feature-grid.count-6 > .feature-card,
.feature-grid.count-7 > .feature-card,
.feature-grid.count-8 > .feature-card {
  grid-column: auto;
  min-width: 0;
}
.feature-grid.count-1 > .feature-card {
  width: min(100%, 620px);
  flex: 0 1 620px;
}
.feature-grid.count-2 > .feature-card {
  width: calc((100% - 22px) / 2);
  flex: 0 1 calc((100% - 22px) / 2);
}
.feature-grid.count-3 > .feature-card,
.feature-grid.count-5 > .feature-card,
.feature-grid.count-6 > .feature-card {
  width: calc((100% - 44px) / 3);
  flex: 0 1 calc((100% - 44px) / 3);
}
.feature-grid.count-4 > .feature-card,
.feature-grid.count-7 > .feature-card,
.feature-grid.count-8 > .feature-card {
  width: calc((100% - 66px) / 4);
  flex: 0 1 calc((100% - 66px) / 4);
}
.feature-card {
  min-height: 205px;
  padding: 24px;
}
.feature-card h3 {
  min-height: 2.55em;
  margin-top: 15px;
}

/* Dynamic publication/news cards also keep incomplete rows centred. */
.cards { margin: 28px auto; }
.cards > .card {
  width: calc((100% - 44px) / 3);
  flex: 0 1 calc((100% - 44px) / 3);
}
.cards.count-1 > .card {
  width: min(100%, 620px);
  flex-basis: 620px;
}
.cards.count-2 > .card {
  width: calc((100% - 22px) / 2);
  flex-basis: calc((100% - 22px) / 2);
}
.cards.count-4 > .card {
  width: calc((100% - 66px) / 4);
  flex-basis: calc((100% - 66px) / 4);
}

/* Paired text/image content remains a true 50/50 composition. */
.split {
  max-width: var(--reading);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 42px;
  align-items: stretch;
}
.split > div { min-width: 0; }
.split > div:first-child { min-height: 420px; }
.split img { height: 100%; min-height: 420px; }
.split-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 10px 4px;
}
.split.split-reverse > div:first-child { order: 2; }
.split.split-reverse > div:last-child { order: 1; }
.two-column { max-width: var(--reading); }
.callout { max-width: var(--reading); }

/* Contact page: equal-width, equal-height left/right panels. */
.contact-layout {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px;
  align-items: stretch;
}
.contact-layout > div {
  min-width: 0;
  height: 100%;
  padding: 30px;
  border: 1px solid var(--line);
  border-top: 5px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: 0 11px 30px rgba(8, 58, 99, .07);
}
.contact-layout > div:last-child { border-top-color: var(--green); }
.contact-layout .content-section { max-width: none; margin-bottom: 0; }
.contact-form .btn { min-width: 180px; justify-self: start; }

/* Publication/news/gallery grids use the full available width and centre any final partial row. */
.pub-grid,
.news-grid {
  justify-content: center;
}
.pub-grid > .pub-card,
.news-grid > .news-card {
  min-width: 0;
}
.photo-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: 18px;
}
.photo-grid figure {
  width: calc((100% - 36px) / 3);
  flex: 0 1 calc((100% - 36px) / 3);
}

/* Organisational chart remains centred and connector geometry tracks the node count. */
.org-level { align-items: stretch; }
.org-level:not(:first-child)::before { right: 0; left: 0; }
.org-level.count-1:not(:first-child)::before { right: 50%; left: 50%; }
.org-level.count-2:not(:first-child)::before { right: 25%; left: 25%; }
.org-level.count-3:not(:first-child)::before { right: 16.6667%; left: 16.6667%; }
.org-level.count-4:not(:first-child)::before { right: 12.5%; left: 12.5%; }
.org-level.count-5:not(:first-child)::before { right: 10%; left: 10%; }
.org-level.count-6:not(:first-child)::before { right: 8.3333%; left: 8.3333%; }
.org-level:not(:first-child) .org-node::before {
  position: absolute;
  top: -22px;
  left: 50%;
  width: 2px;
  height: 22px;
  content: "";
  transform: translateX(-50%);
  background: #9bb8c9;
}

/* Mirror-balanced footer. */
.footer-inner {
  grid-template-columns: 1.25fr 1fr 1fr 1.25fr;
  gap: 34px;
}
.footer-inner > div { min-width: 0; }

@media (max-width: 1120px) {
  .balanced-prose { column-gap: 38px; }
  .feature-grid.count-4 > .feature-card,
  .feature-grid.count-7 > .feature-card,
  .feature-grid.count-8 > .feature-card,
  .cards.count-4 > .card {
    width: calc((100% - 22px) / 2);
    flex-basis: calc((100% - 22px) / 2);
  }
  .photo-grid figure {
    width: calc((100% - 18px) / 2);
    flex-basis: calc((100% - 18px) / 2);
  }
}

@media (max-width: 980px) {
  .balanced-prose { column-count: 1; }
  .feature-grid.count-3 > .feature-card,
  .feature-grid.count-5 > .feature-card,
  .feature-grid.count-6 > .feature-card,
  .cards > .card {
    width: calc((100% - 22px) / 2);
    flex-basis: calc((100% - 22px) / 2);
  }
  .split,
  .contact-layout { grid-template-columns: 1fr; }
  .split { gap: 28px; }
  .split > div:first-child,
  .split img { min-height: 360px; }
  .split.split-reverse > div:first-child,
  .split.split-reverse > div:last-child { order: initial; }
  .footer-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 660px) {
  .content { padding: 46px 0 54px; }
  .feature-section { margin: 38px auto; }
  .feature-grid.count-1 > .feature-card,
  .feature-grid.count-2 > .feature-card,
  .feature-grid.count-3 > .feature-card,
  .feature-grid.count-4 > .feature-card,
  .feature-grid.count-5 > .feature-card,
  .feature-grid.count-6 > .feature-card,
  .feature-grid.count-7 > .feature-card,
  .feature-grid.count-8 > .feature-card,
  .cards > .card,
  .cards.count-1 > .card,
  .cards.count-2 > .card,
  .cards.count-4 > .card,
  .photo-grid figure {
    width: 100%;
    max-width: 100%;
    flex-basis: 100%;
  }
  .feature-card { min-height: 0; }
  .feature-card h3 { min-height: 0; }
  .split > div:first-child,
  .split img { min-height: 0; height: 320px; }
  .contact-layout > div { padding: 22px; }
  .contact-form .btn { width: 100%; justify-self: stretch; }
  .footer-inner { grid-template-columns: 1fr; }
}

/* ========================================================================
   v1.4.1 BALANCE SYSTEM
   Explicit equal-track prose and fixed-height desktop card geometry.
   ======================================================================== */

/* Plain multi-paragraph blocks are laid out as discrete equal-width cells.
   This prevents 1+2 newspaper-column flows and keeps paragraph starts aligned. */
.balanced-prose { column-count: initial; column-gap: normal; }
.prose-grid {
  display: grid;
  width: 100%;
  max-width: var(--reading);
  gap: 40px;
  align-items: stretch;
  text-align: left;
}
.prose-grid.count-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.prose-grid.count-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.prose-grid.count-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.prose-cell {
  display: flex;
  min-width: 0;
  height: 100%;
}
.prose-cell > p {
  width: 100%;
  margin: 0;
  text-wrap: pretty;
}
.prose-grid.count-2 .prose-cell + .prose-cell,
.prose-grid.count-3 .prose-cell + .prose-cell {
  border-left: 1px solid rgba(215, 228, 236, .8);
  padding-left: 40px;
}
.prose-grid.count-4 .prose-cell:nth-child(even) {
  border-left: 1px solid rgba(215, 228, 236, .8);
  padding-left: 40px;
}

/* Equal-height feature cards across each complete desktop series. */
.feature-grid,
.feature-grid.count-1,
.feature-grid.count-2,
.feature-grid.count-3,
.feature-grid.count-4,
.feature-grid.count-5,
.feature-grid.count-6,
.feature-grid.count-7,
.feature-grid.count-8 {
  display: grid;
  width: 100%;
  gap: 22px;
  align-items: stretch;
}
.feature-grid.count-1 { grid-template-columns: minmax(0, 620px); justify-content: center; }
.feature-grid.count-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.feature-grid.count-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.feature-grid.count-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.feature-grid.count-5,
.feature-grid.count-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.feature-grid.count-7,
.feature-grid.count-8 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.feature-grid > .feature-card,
.feature-grid.count-1 > .feature-card,
.feature-grid.count-2 > .feature-card,
.feature-grid.count-3 > .feature-card,
.feature-grid.count-4 > .feature-card,
.feature-grid.count-5 > .feature-card,
.feature-grid.count-6 > .feature-card,
.feature-grid.count-7 > .feature-card,
.feature-grid.count-8 > .feature-card {
  width: auto;
  max-width: none;
  height: 232px;
  min-height: 232px;
  margin: 0;
  padding: 24px;
  display: flex;
  flex-direction: column;
}
.feature-card h3 {
  min-height: 2.55em;
  margin: 15px 0 8px;
  line-height: 1.28;
}
.feature-card p {
  margin-top: auto;
  margin-bottom: 0;
  text-wrap: pretty;
}
/* Centre incomplete last rows without creating a 3+1 visual imbalance. */
.feature-grid.count-5 > .feature-card:nth-child(4) { grid-column: 1 / 2; }
.feature-grid.count-5 > .feature-card:nth-child(5) { grid-column: 2 / 3; }
.feature-grid.count-7 > .feature-card:nth-child(5) { grid-column: 1 / 2; }

/* Equal-height archive cards. Grid rows are stretched and internal content is
   anchored so dates/meta align along the bottom edge. */
.pub-grid,
.news-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}
.pub-card,
.news-card {
  height: 100%;
  min-height: 100%;
  display: flex;
  flex-direction: column;
}
.news-card > div,
.pub-card {
  min-width: 0;
}
.news-card > div {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
}
.news-card .meta,
.pub-card .meta { margin-top: auto; }
.news-card img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }

.photo-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: stretch;
}
.photo-grid figure {
  width: auto;
  margin: 0;
  display: flex;
  height: 100%;
  flex-direction: column;
}
.photo-grid figure img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.photo-grid figcaption { flex: 1 1 auto; }

/* Compact, orderly contact composition. */
.contact-layout-v140 {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(360px, .88fr);
  gap: 34px;
  max-width: 1180px;
  margin: 0 auto;
  align-items: start;
}
.contact-info-card,
.contact-form-card {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: 0 11px 30px rgba(8, 58, 99, .07);
}
.contact-info-card { padding: 30px 32px; border-top: 5px solid var(--blue); }
.contact-form-card { padding: 28px; border-top: 5px solid var(--green); }
.contact-info-card .content-section { max-width: none; margin: 0; }
.contact-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 24px;
}
.contact-detail {
  min-height: 138px;
  padding: 20px;
  border-radius: 13px;
  background: var(--surface);
}
.contact-detail .feature-icon { margin-bottom: 12px; }
.contact-detail strong { display: block; color: var(--blue-dark); margin-bottom: 5px; }
.contact-form { gap: 13px; }
.contact-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 13px; }
.contact-form textarea { min-height: 132px; resize: vertical; }
.contact-form .btn { min-width: 0; width: auto; }
.contact-map {
  max-width: 1180px;
  min-height: 340px;
  margin: 32px auto 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: 0 11px 30px rgba(8, 58, 99, .07);
}
.contact-map iframe { display: block; width: 100%; height: 340px; border: 0; }

.video-embed { position: relative; width: 100%; aspect-ratio: 16 / 9; background: #082f4f; overflow: hidden; }
.video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-thumb-link { position: relative; display: block; }
.video-thumb-link::after {
  content: "▶";
  position: absolute;
  left: 50%; top: 50%;
  width: 58px; height: 58px;
  display: grid; place-items: center;
  transform: translate(-50%,-50%);
  border-radius: 50%;
  color: #fff; background: rgba(8,58,99,.88);
  font-size: 22px;
}

@media (max-width: 1120px) {
  .prose-grid { gap: 30px; }
  .prose-grid.count-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .prose-grid.count-2 .prose-cell + .prose-cell,
  .prose-grid.count-3 .prose-cell + .prose-cell { padding-left: 30px; }
  .feature-grid.count-4,
  .feature-grid.count-7,
  .feature-grid.count-8 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feature-grid.count-7 > .feature-card:nth-child(5),
  .feature-grid.count-5 > .feature-card:nth-child(4),
  .feature-grid.count-5 > .feature-card:nth-child(5) { grid-column: auto; }
}

@media (max-width: 980px) {
  .prose-grid.count-3 { grid-template-columns: 1fr; gap: 20px; }
  .prose-grid.count-3 .prose-cell + .prose-cell { border-left: 0; padding-left: 0; }
  .feature-grid.count-3,
  .feature-grid.count-5,
  .feature-grid.count-6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feature-grid > .feature-card { height: 220px; min-height: 220px; }
  .pub-grid,.news-grid,.photo-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .contact-layout-v140 { grid-template-columns: 1fr; }
  .contact-form-card { max-width: 620px; width: 100%; }
}

@media (max-width: 660px) {
  .prose-grid.count-2,
  .prose-grid.count-3,
  .prose-grid.count-4 { grid-template-columns: 1fr; gap: 18px; }
  .prose-grid .prose-cell + .prose-cell,
  .prose-grid.count-4 .prose-cell:nth-child(even) { border-left: 0; padding-left: 0; }
  .feature-grid.count-1,
  .feature-grid.count-2,
  .feature-grid.count-3,
  .feature-grid.count-4,
  .feature-grid.count-5,
  .feature-grid.count-6,
  .feature-grid.count-7,
  .feature-grid.count-8,
  .pub-grid,.news-grid,.photo-grid { grid-template-columns: 1fr; }
  .feature-grid > .feature-card { height: auto; min-height: 0; }
  .feature-card h3 { min-height: 0; }
  .contact-info-card,.contact-form-card { padding: 22px; }
  .contact-details,.contact-form-grid { grid-template-columns: 1fr; }
  .contact-detail { min-height: 0; }
  .contact-map,.contact-map iframe { min-height: 300px; height: 300px; }
}


/* ========================================================================
   v1.4.1 FINAL SYMMETRY OVERRIDES
   The visual rule is explicit: equal tracks, equal cards, complete article rows.
   ======================================================================== */

/* Grid children must fill their tracks. Earlier flex-era width declarations are
   deliberately neutralised here because they caused narrow cards inside grids. */
.feature-grid > .feature-card,
.cards > .card,
.pub-grid > .pub-card,
.news-grid > .news-card,
.photo-grid > figure {
  width: auto !important;
  max-width: none !important;
  flex: initial !important;
  margin-inline: 0;
}

/* Parallel prose uses one paragraph per grid track. Tracks stretch together;
   seeded copy is also length-balanced so visible text endings remain close. */
.prose-grid {
  gap: 34px;
  align-items: stretch;
}
.prose-grid .prose-cell {
  min-height: 100%;
  align-items: stretch;
}
.prose-grid .prose-cell > p {
  height: 100%;
  line-height: 1.72;
}

/* Generic publication/news feed cards are exact peers on desktop. */
.cards.article-feed,
.cards.count-3,
.cards.count-6 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  align-items: stretch;
}
.cards.article-feed > .article-feed-card {
  height: 302px;
  min-height: 302px;
}
.article-feed-card h3 {
  display: -webkit-box;
  min-height: 3.35em;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.article-feed-card p {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}

/* News & Media: exactly three tracks. Six seeded articles form a symmetrical
   3 x 2 composition and every article card has the same outer dimensions. */
.news-grid.article-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}
.news-grid.article-grid > .article-card {
  height: 520px;
  min-height: 520px;
}
.article-card > img,
.article-card > a > img {
  width: 100%;
  height: 220px;
  aspect-ratio: auto;
  object-fit: cover;
  object-position: center;
}
.article-card > div {
  min-height: 0;
  padding: 22px 24px 24px;
}
.article-card h2 {
  display: -webkit-box;
  min-height: 3.6em;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.article-card p {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}
.article-card .meta { margin-top: auto; }

/* Publication archive cards use the same top/bottom geometry across rows. */
.pub-grid > .pub-card {
  height: 330px;
  min-height: 330px;
}
.pub-card h2 {
  display: -webkit-box;
  min-height: 3.5em;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.pub-card p {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}

/* Photo rows are uniform documentary tiles. */
.photo-grid > figure { min-height: 100%; }
.photo-grid > figure img { height: 290px; aspect-ratio: auto; object-fit: cover; }
.photo-grid > figure figcaption { min-height: 76px; display: flex; align-items: center; }

/* Contact remains intentionally asymmetric in function, not disorderly:
   information receives more width while the form is compact and aligned. */
.contact-layout-v140 { grid-template-columns: minmax(0, 1.22fr) minmax(340px, .78fr); }
.contact-form-card { max-width: 500px; justify-self: end; width: 100%; }
.contact-form-card textarea { min-height: 118px; }

@media (max-width: 980px) {
  .cards.article-feed,
  .cards.count-3,
  .cards.count-6,
  .news-grid.article-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .news-grid.article-grid > .article-card { height: 500px; min-height: 500px; }
  .contact-form-card { max-width: none; justify-self: stretch; }
}

@media (max-width: 660px) {
  .cards.article-feed,
  .cards.count-3,
  .cards.count-6,
  .news-grid.article-grid { grid-template-columns: 1fr; }
  .cards.article-feed > .article-feed-card,
  .news-grid.article-grid > .article-card,
  .pub-grid > .pub-card { height: auto; min-height: 0; }
  .article-feed-card h3,
  .article-card h2,
  .article-feed-card p,
  .article-card p,
  .pub-card h2,
  .pub-card p { display: block; min-height: 0; overflow: visible; }
  .article-card > img,
  .article-card > a > img { height: auto; aspect-ratio: 16/9; }
  .photo-grid > figure img { height: auto; aspect-ratio: 4/3; }
  .photo-grid > figure figcaption { min-height: 0; }
}

/* v1.4.1 completion: every repeated public series shares the same baseline. */
@media (min-width: 981px) {
  .cards.count-3 > .card,
  .cards.count-6 > .card {
    height: 302px;
    min-height: 302px;
  }
  .media-card-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    align-items: stretch;
  }
  .media-card-grid > .media-card {
    height: 470px;
    min-height: 470px;
  }
  .media-card-grid > .media-card > img,
  .media-card-grid > .media-card > a > img {
    width: 100%;
    height: 255px;
    aspect-ratio: auto;
    object-fit: cover;
  }
  .media-card-grid > .media-card > div {
    min-height: 0;
    display: flex;
    flex-direction: column;
  }
  .media-card-grid > .media-card h2 {
    display: -webkit-box;
    min-height: 3.45em;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
  }
  .media-card-grid > .media-card p { margin-top: auto; }
}

/* Balanced editorial columns: equal geometry plus controlled wrapping. */
.prose-grid .prose-cell p {
  text-wrap: pretty;
  hyphens: auto;
}

@media (max-width: 980px) {
  .media-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .media-card-grid > .media-card { height: 455px; min-height: 455px; }
}
@media (max-width: 660px) {
  .media-card-grid { grid-template-columns: 1fr; }
  .media-card-grid > .media-card { height: auto; min-height: 0; }
}


/* v1.4.1 final editorial alignment refinements */
.article-body {
  max-width: var(--max);
  padding-inline: 30px;
}
.article-body > .richtext {
  max-width: 980px;
  margin: 0;
  padding: 0;
}
.article-body .richtext > :first-child { margin-top: 0; }
.article-body .richtext h2,
.article-body .richtext h3,
.article-body .richtext p,
.article-body .richtext ul,
.article-body .richtext ol { margin-left: 0; padding-left: 0; }

/* Adjacent image/text compositions share the same top and bottom geometry. */
.image-text {
  align-items: stretch;
}
.image-text > .image-text-media,
.image-text > .image-text-content,
.image-text > img,
.image-text > div {
  min-height: 100%;
}
.image-text img { height: 100%; object-fit: cover; }
.image-text .richtext,
.image-text-content { display: flex; flex-direction: column; justify-content: center; }

/* Contact columns finish on the same horizontal baseline on desktop. */
.contact-layout-v140 { align-items: stretch; }
.contact-info-card,
.contact-form-card { height: 100%; }
.contact-form-card { align-self: stretch; display: flex; flex-direction: column; }
.contact-form-card .contact-form { flex: 1 1 auto; align-content: start; }
.contact-form-card textarea { min-height: 96px; }
.contact-form-card input { min-height: 44px; }

/* News-card title/body/meta geometry is vertically aligned across every 3-card row. */
.news-grid.article-grid { grid-auto-rows: 1fr; }
.news-grid.article-grid > .article-card { height: 100%; min-height: 520px; }
.article-card > div { height: 100%; }
.article-card h2 { min-height: 3.65em; }
.article-card p { min-height: 6.8em; }

@media (max-width: 980px) {
  .contact-info-card,.contact-form-card { height: auto; }
  .article-body { padding-inline: 24px; }
}
@media (max-width: 660px) {
  .article-body { padding-inline: 18px; }
  .article-card h2,.article-card p { min-height: 0; }
}
/* Align all split image/text blocks to a single rectangular composition. */
.split { align-items: stretch; }
.split > div { display: flex; min-height: 420px; }
.split > div:first-child { overflow: hidden; border-radius: 13px; }
.split > div:first-child img { width: 100%; height: 100%; min-height: 420px; object-fit: cover; object-position: center center; }
.split > .split-copy { justify-content: center; flex-direction: column; }
/* The Auditor General documentary photograph is presented as a portrait crop only;
   no facial or physical attributes are altered. */
body .split img[alt*="Ahmed Sheikh Nur Edle"] { object-position: 50% 28%; }

@media (max-width: 980px) {
  .split > div { min-height: 360px; }
  .split > div:first-child img { min-height: 360px; }
}
@media (max-width: 660px) {
  .split > div { min-height: 0; }
  .split > div:first-child img { min-height: 0; height: 320px; }
}

/* ========================================================================
   GSS OAG v1.4.1 — GSS-specific leadership and reading-alignment layer
   Preserves the HSS 1.4.1 balance engine while keeping the GSS portrait
   treatment and the approved left-aligned reading edge for body/footer copy.
   ======================================================================== */
/* v1.2.0 — Auditor General profile symmetry system */
.leadership-profile {
  display: grid;
  max-width: 1220px;
  min-height: 590px;
  margin: 58px auto;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--white);
  box-shadow: var(--shadow);
}
.leadership-portrait,
.leadership-message { min-width: 0; min-height: 590px; }
.leadership-portrait {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: 34px 34px 0;
  background: linear-gradient(180deg, #f4f9fc 0%, #eaf5ef 100%);
}
.leadership-portrait img {
  display: block;
  width: min(100%, 520px);
  height: 556px;
  margin: 0 auto;
  object-fit: contain;
  object-position: center bottom;
}
.leadership-portrait-placeholder {
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  color: var(--blue);
}
.leadership-message {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 52px;
  border-left: 1px solid var(--line);
}
.leadership-message .eyebrow { align-self: flex-start; margin-bottom: 12px; }
.leadership-message h2 { margin: 0 0 8px; color: var(--blue-dark); font-size: clamp(30px, 3vw, 44px); }
.leadership-role {
  margin: 0 0 24px;
  color: var(--green-dark);
  font-size: 17px;
  font-weight: 800;
  letter-spacing: .045em;
  text-transform: uppercase;
}
.leadership-statement { max-width: none; margin: 0; }
.leadership-statement p { margin: 0 0 17px; }
.leadership-statement p:last-child { margin-bottom: 0; }
.leadership-message .btn { align-self: flex-start; margin-top: 25px; }

@media (max-width: 980px) {
  .leadership-profile { max-width: 760px; min-height: 0; grid-template-columns: 1fr; }
  .leadership-portrait,
  .leadership-message { min-height: 0; }
  .leadership-portrait { min-height: 500px; padding: 28px 28px 0; }
  .leadership-portrait img { height: 472px; }
  .leadership-message { padding: 38px; border-left: 0; border-top: 1px solid var(--line); }
}

@media (max-width: 660px) {
  .leadership-profile { margin: 38px auto; border-radius: 16px; }
  .leadership-portrait { min-height: 390px; padding: 20px 18px 0; }
  .leadership-portrait img { height: 370px; }
  .leadership-message { padding: 28px 22px; text-align: center; }
  .leadership-message .eyebrow,
  .leadership-message .btn { align-self: center; }
  .leadership-role { font-size: 14px; }
}

/* ========================================================================
   GSS OAG v1.3 — Balanced alignment refinement
   Symmetry means orderly geometry, not centring every line of text.
   Narrative copy, cards, metadata and footer navigation use a natural
   reading edge; centred alignment is reserved for elements that benefit
   from a central axis (navigation, selected section headings, organogram).
   ======================================================================== */

/* Hero compositions use the intentional negative space on the left of the
   generated 16:9 image series. */
.hero-overlay,
.page-hero-overlay,
.page-hero.hero-portrait .page-hero-overlay {
  background: linear-gradient(90deg, rgba(5,40,68,.95) 0%, rgba(5,40,68,.86) 34%, rgba(5,40,68,.56) 58%, rgba(5,40,68,.16) 100%);
}
.hero-content,
.page-hero-content {
  align-items: flex-start;
  text-align: left;
}
.hero h1,
.page-hero h1,
.hero p,
.page-hero p { margin-inline: 0; }
.hero-icon { margin-inline: 0; }
.hero-content > *,
.page-hero-content > * { max-width: min(760px, 72%); }
.hero-content .btn { max-width: none; }

/* Long-form institutional copy follows a strong left reading edge. */
.content-section,
.article-body,
.search-results { text-align: left; }
.richtext,
.richtext h2,
.richtext h3,
.richtext ul,
.richtext ol { text-align: left; }
@media (min-width: 900px) {
  .richtext > p { text-align: justify; text-justify: inter-word; hyphens: auto; }
}

/* Card geometry remains symmetrical, but card content is left aligned. */
.feature-card,
.card,
.pub-card {
  align-items: flex-start;
  text-align: left;
}
.feature-card h3,
.card h3,
.pub-card h2,
.feature-card p,
.card p,
.pub-card p { text-align: left; }
.feature-icon,
.card-icon,
.pub-icon { margin-inline: 0 auto; }
.card small,
.pub-card .meta { justify-content: flex-start; text-align: left; }
.news-card > div { text-align: left; }
.news-card .meta { justify-content: flex-start; }
.archive-summary { text-align: left; }

/* Callouts and action bands use balanced left/right composition. */
.callout { text-align: left; }
.cta-block {
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  text-align: left;
}
.cta-block > div { max-width: 720px; }
.cta-block p { margin-inline: 0; }
.cta-block .btn { flex: 0 0 auto; }

/* Leadership: portrait and statement retain equal columns; prose reads left. */
.leadership-message,
.leadership-statement,
.leadership-statement p { text-align: left; }
.leadership-statement p { hyphens: auto; }

/* Footer: equal columns for geometry, left-aligned contents for scanability. */
.footer-inner > div { text-align: left; }
.footer-seal { margin: 0 0 14px; }
.footer p,
.footer p a { justify-content: flex-start; text-align: left; }
.socials { justify-content: flex-start; }
.footer h4 { text-align: left; font-weight: 850; }

/* Forms and contact information follow the same reading edge. */
.contact-layout,
.contact-layout > div,
.contact-form,
.document-layout,
.document-meta { text-align: left; }
.document-meta span { justify-content: flex-start; }

@media (max-width: 760px) {
  .hero-content > *,
  .page-hero-content > * { max-width: 92%; }
  .hero-overlay,
  .page-hero-overlay,
  .page-hero.hero-portrait .page-hero-overlay {
    background: linear-gradient(90deg, rgba(5,40,68,.94), rgba(5,40,68,.72));
  }
  .cta-block { flex-direction: column; align-items: flex-start; }
  .leadership-message { text-align: left; }
  .leadership-message .eyebrow,
  .leadership-message .btn { align-self: flex-start; }
}


/* ========================================================================
   GSS OAG v1.4.1 — leadership proportion and portrait cleanup
   A narrower portrait track gives the statement greater reading width. The
   portrait is rendered on one flat neutral field so transparent edges remain
   clean and there is no visible halo or competing image background.
   ======================================================================== */
.leadership-profile {
  max-width: 1240px;
  min-height: 540px;
  grid-template-columns: minmax(360px, .78fr) minmax(0, 1.22fr);
}
.leadership-portrait,
.leadership-message { min-height: 540px; }
.leadership-portrait {
  padding: 24px 24px 0;
  background: #f0f6fa;
}
.leadership-portrait img {
  width: min(100%, 430px);
  height: 516px;
  object-fit: contain;
  object-position: center bottom;
}
.leadership-message { padding: 46px 54px; }
.leadership-statement { max-width: 760px; }

@media (max-width: 980px) {
  .leadership-profile { max-width: 780px; grid-template-columns: 1fr; }
  .leadership-portrait { min-height: 450px; padding: 22px 22px 0; }
  .leadership-portrait img { height: 430px; max-width: 390px; }
  .leadership-message { padding: 38px 40px; }
}
@media (max-width: 660px) {
  .leadership-portrait { min-height: 360px; padding: 18px 16px 0; }
  .leadership-portrait img { height: 344px; max-width: 330px; }
  .leadership-message { padding: 28px 22px; text-align: left; }
  .leadership-message .eyebrow,
  .leadership-message .btn { align-self: flex-start; }
}

/* ========================================================================
   GSS OAG v1.4.2 — RESPONSIVE HARDENING
   Mobile-first corrections following full public component audit.
   ======================================================================== */

/* Keep every public component inside its own track without masking overflow
   at html/body level. Long labels, URLs and translated copy can wrap safely. */
.header-main > *,
.brand > *,
.hero-content,
.page-hero-content,
.content > .container > *,
.richtext,
.feature-grid > *,
.cards > *,
.pub-grid > *,
.news-grid > *,
.contact-layout-v140 > *,
.document-layout > *,
.footer-inner > * { min-width: 0; }

.brand strong,
.hero h1,
.page-hero h1,
.content-section h2,
.section-heading h2,
.richtext h2,
.richtext h3,
.feature-card h3,
.card h3,
.pub-card h2,
.news-card h2,
.footer h4 { overflow-wrap: break-word; word-break: normal; }

.footer a,
.contact-detail a,
.document-meta a,
.richtext a { overflow-wrap: anywhere; }

/* Public data tables remain usable on narrow screens without widening the page. */
.richtext table {
  display: block;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.richtext th,
.richtext td { min-width: 130px; }

/* Equal-height systems may grow when translations are longer. Grid stretching
   still preserves alignment, but text is never clipped to a fixed pixel box. */
.feature-grid > .feature-card { height: auto; min-height: 232px; }
.cards > .card { height: auto; }
.news-grid > .news-card,
.news-grid.article-grid > .article-card,
.media-card-grid > .media-card { height: auto; }

.lang-short { display: none; }

@media (max-width: 980px) {
  /* Tablet cards use content-driven heights; a row remains equal via CSS Grid. */
  .feature-grid > .feature-card,
  .cards > .card,
  .news-grid > .news-card,
  .news-grid.article-grid > .article-card,
  .media-card-grid > .media-card {
    height: auto !important;
    min-height: 0 !important;
  }

  .publication-filter-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .document-layout { gap: 28px; }
  .footer-inner { gap: 30px; }
}

@media (max-width: 660px) {
  /* The institutional title and controls use separate rows on phones. This
     removes the collision that previously mangled the long English/Somali name. */
  .header-main {
    min-height: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    padding-top: 10px;
    padding-bottom: 10px;
  }
  .header-main::before {
    top: 0;
    height: 100%;
  }
  .brand {
    width: 100%;
    gap: 10px;
    align-items: center;
  }
  .brand img {
    width: 52px;
    height: 52px;
    flex: 0 0 52px;
  }
  .brand strong {
    max-width: none;
    font-size: clamp(15px, 4.35vw, 17px);
    line-height: 1.18;
    letter-spacing: -.01em;
    text-wrap: balance;
  }
  .brand span:not(.lang-short):not(.lang-long) { display: none; }
  .header-tools {
    width: 100%;
    justify-content: flex-end;
    gap: 7px;
  }
  .lang-long { display: none; }
  .lang-short { display: inline; }
  .lang a {
    min-width: 34px;
    padding: 6px 8px;
    justify-content: center;
    font-size: 11px;
  }
  .nav { max-height: calc(100dvh - 126px); }
  .nav-inner { padding-top: 8px; padding-bottom: 12px; }
  .menu-root > li > a,
  .submenu a { overflow-wrap: anywhere; }

  /* Hero sections become content-driven instead of forcing long translated
     headings and excerpts into a 350px box. */
  .hero,
  .page-hero {
    height: auto;
    min-height: 350px;
    padding-top: 44px;
    padding-bottom: 44px;
  }
  .hero h1,
  .page-hero h1 {
    max-width: 100%;
    font-size: clamp(29px, 8.6vw, 35px);
    line-height: 1.08;
    text-wrap: balance;
  }
  .hero p,
  .page-hero p {
    max-width: 100%;
    font-size: 16px;
    line-height: 1.5;
  }
  .hero-content > *,
  .page-hero-content > * { max-width: 100%; }
  .page-hero.hero-portrait .page-hero-media {
    right: -12%;
    left: auto;
    width: 74%;
    opacity: .52;
    object-position: right bottom;
  }

  /* Reading and grid layouts collapse naturally with no fixed card/image boxes. */
  .content-section,
  .article-body { width: 100%; max-width: 100%; padding-inline: 0; }
  .prose-grid { gap: 16px; }
  .split {
    margin: 34px auto;
    padding: 14px;
    gap: 20px;
  }
  .split > div,
  .split > div:first-child,
  .split img,
  .split > div:first-child img {
    min-height: 0 !important;
    height: auto !important;
  }
  .split img,
  .split > div:first-child img { aspect-ratio: 16 / 10; }
  .two-column { gap: 18px; }
  .two-column > div { padding: 20px; }

  .publication-filter-form { grid-template-columns: 1fr; }
  .publication-filter-form .btn { width: 100%; }
  .document-meta { grid-template-columns: 1fr; }
  .document-meta span { min-height: 0; }
  .download-panel { padding: 22px; }

  /* The desktop tree becomes a readable vertical hierarchy on phones rather
     than a 620px horizontal canvas that forces sideways scrolling. */
  .organogram { overflow: visible; padding: 12px 0 0; }
  .org-level {
    min-width: 0;
    width: 100%;
    flex-direction: column;
    gap: 11px;
    margin-bottom: 20px;
    align-items: stretch;
  }
  .org-level::before,
  .org-level::after,
  .org-level .org-node::before { display: none !important; }
  .org-node {
    width: 100%;
    min-width: 0;
    max-width: none;
    min-height: 0;
    flex: none;
    padding: 15px 16px;
  }
  .org-level + .org-level { padding-top: 13px; border-top: 1px solid var(--line); }

  .contact-layout-v140 { gap: 22px; }
  .contact-info-card,
  .contact-form-card { padding: 21px; }
  .contact-details,
  .contact-form-grid { grid-template-columns: 1fr; }
  .contact-form .btn { width: 100%; }
  .contact-map,
  .contact-map iframe { height: 280px; min-height: 280px; }

  .leadership-profile { margin: 34px auto; }
  .leadership-portrait { min-height: 0; padding: 16px 14px 0; }
  .leadership-portrait img {
    width: min(100%, 300px);
    height: auto;
    max-width: 300px;
    aspect-ratio: auto;
  }
  .leadership-message { padding: 26px 20px; }

  .photo-grid,
  .media-card-grid,
  .pub-grid,
  .news-grid { gap: 18px; }
  .news-card img,
  .media-card-grid > .media-card > img,
  .media-card-grid > .media-card > a > img {
    height: auto;
    aspect-ratio: 16 / 9;
  }

  .footer-inner { gap: 28px; padding-top: 38px; padding-bottom: 38px; }
  .footer-bottom { gap: 8px; padding-top: 14px; padding-bottom: 18px; }
}

@media (max-width: 420px) {
  .container,
  .header-main,
  .nav-inner,
  .footer-inner,
  .footer-bottom { padding-inline: 15px; }
  .brand img { width: 48px; height: 48px; flex-basis: 48px; }
  .brand strong { font-size: 15px; }
  .hero,
  .page-hero { min-height: 330px; padding-top: 38px; padding-bottom: 38px; }
  .hero h1,
  .page-hero h1 { font-size: clamp(27px, 8.7vw, 32px); }
  .feature-card,
  .card,
  .pub-card,
  .news-card > div { padding: 20px; }
  .section-heading h2,
  .content-section h2,
  .richtext h2 { font-size: clamp(26px, 7.6vw, 32px); }
}

/* Very short landscape screens should not lose half the viewport to a sticky
   two-row header. The header remains normal-flow while all controls stay usable. */
@media (max-width: 760px) and (max-height: 500px) {
  .site-header { position: relative; }
  .nav { max-height: none; }
}

/* v1.4.2 responsive QA corrections after narrow-viewport rendering. */
@media (max-width: 980px) {
  .contact-layout-v140 { grid-template-columns: 1fr; }

  /* Tablet organogram: preserve balanced rows without horizontal scrolling. */
  .organogram { overflow: visible; }
  .org-level {
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    align-items: stretch;
  }
  .org-level.count-1 {
    grid-template-columns: minmax(0, 420px);
    justify-content: center;
  }
  .org-level.count-3 > .org-node:last-child {
    width: calc(50% - 8px);
    grid-column: 1 / -1;
    justify-self: center;
  }
  .org-node {
    width: 100%;
    min-width: 0;
    max-width: none;
    min-height: 90px;
    flex: none;
  }
  .org-level::before,
  .org-level::after,
  .org-level .org-node::before { display: none !important; }
  .org-level + .org-level { padding-top: 14px; border-top: 1px solid var(--line); }
}

@media (max-width: 660px) {
  .org-level,
  .org-level.count-1 {
    display: grid;
    grid-template-columns: 1fr;
    justify-content: stretch;
  }
  .org-level.count-3 > .org-node:last-child {
    width: 100%;
    grid-column: auto;
    justify-self: stretch;
  }
}
