/* ══════════════════════════════════════════════════════════════════════════
   HOMEPAGE · OWNER-PINNED v4 COMPACT PORTAL · 2026-09-10

   This sheet intentionally scopes the supplied portal composition to `/`.
   Shared public routes keep their established masthead and footer. All values
   and links inside the portal are live record data; the visual grammar follows
   the supplied desktop/mobile artifact.
   ══════════════════════════════════════════════════════════════════════════ */

body.page-home {
  --portal-ink: #1c2a38;
  --portal-muted: #526575;
  --portal-link: #12669b;
  --portal-line: #d6e2eb;
  --portal-faint-line: #eef4f9;
  --portal-paper: #fff;
  --portal-ground: #f5f8fb;
  --portal-navy: #0c315b;
  --portal-deep: #0f3048;
  --portal-sky: #8ed7ff;
  --portal-coral: #ef866d;
  margin: 0;
  color: var(--portal-ink);
  background: var(--portal-ground);
  font-family: "Manrope", ui-sans-serif, system-ui, sans-serif;
  color-scheme: light;
}

body.page-home::before,
body.page-home::after,
body.page-home .edu-main::before,
body.page-home .edu-main::after { content: none; display: none; }

body.page-home .edu-mesh { display: none; }

body.page-home .edu-shell--home-portal,
body.page-home .edu-shell--home-portal .edu-col,
body.page-home .edu-shell--home-portal .edu-main {
  display: block;
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  padding: 0;
}

html body.page-home .edu-shell.edu-shell--home-portal {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
}

body.page-home .edu-shell--home-portal .edu-main { overflow: visible; }
body.page-home .home-portal section { min-width: 0; }
body.page-home .home-portal > .portal-hero,
body.page-home .home-portal .portal-guides { padding: 0; }
body.page-home .home-portal h1,
body.page-home .home-portal h2,
body.page-home .home-portal h3 { font-family: "Manrope", ui-sans-serif, system-ui, sans-serif; }
body.page-home a { text-underline-offset: 3px; }
body.page-home ::selection { color: #071d31; background: var(--portal-sky); }
body.page-home :focus-visible { outline: 3px solid #0b5c91; outline-offset: 3px; }
body.page-home .portal-ticker :focus-visible,
body.page-home .portal-header :focus-visible,
body.page-home .portal-hero :focus-visible,
body.page-home .portal-compare :focus-visible,
body.page-home .portal-footer :focus-visible { outline-color: #fff; }
body.page-home .portal-searchbox :focus-visible,
body.page-home .portal-menu__panel :focus-visible { outline-color: #0b5c91; }
body.page-home input,
body.page-home select,
body.page-home button { caret-color: var(--portal-link); }

.portal-scroll {
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
}

.portal-scroll::-webkit-scrollbar { display: none; }

/* ── update ticker ───────────────────────────────────────────────────────── */

.portal-ticker {
  color: #c9dced;
  background: var(--portal-deep);
  border-bottom: 1px solid rgb(255 255 255 / 12%);
}

.portal-ticker__inner {
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: 1300px;
  height: 32px;
  margin-inline: auto;
  padding-inline: 20px;
  white-space: nowrap;
}

.portal-ticker__label {
  flex: 0 0 auto;
  padding: 2px 7px;
  color: #0f2438;
  background: var(--portal-coral);
  border-radius: 3px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.portal-ticker a {
  color: #c9dced;
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
}

.portal-ticker a:hover { color: #fff; text-decoration: underline; }
.portal-ticker__inner > span[aria-hidden] { color: #3a5b76; }

/* ── sticky portal masthead ──────────────────────────────────────────────── */

.portal-header {
  position: sticky;
  z-index: 60;
  top: 0;
  color: #fff;
  background: linear-gradient(102deg, #173d59 0%, #155b82 42%, #1479ad 100%);
  border-bottom: 2px solid var(--portal-sky);
}

.portal-header__bar {
  display: flex;
  align-items: center;
  gap: 16px;
  max-width: 1300px;
  height: 56px;
  margin-inline: auto;
  padding-inline: 20px;
}

.portal-header__brand {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
}

.portal-header__brand img {
  display: block;
  width: 146px;
  height: auto;
  filter: brightness(0) invert(1);
}

.portal-headsearch {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  max-width: 430px;
  height: 36px;
  padding-left: 10px;
  background: rgb(255 255 255 / 14%);
  border: 1px solid rgb(255 255 255 / 28%);
  border-radius: 6px;
}

.portal-headsearch svg {
  flex: 0 0 auto;
  stroke: #dceaf6;
  stroke-width: 2.2;
  stroke-linecap: round;
}

.portal-headsearch input {
  flex: 1 1 auto;
  min-width: 0;
  height: 34px;
  padding: 0 8px;
  color: #fff;
  background: transparent;
  border: 0;
  font: 600 13px/1 "Manrope", ui-sans-serif, system-ui, sans-serif;
}

.portal-headsearch input::placeholder { color: #fff; opacity: 1; }
.portal-headsearch input:focus { outline: 0; }
.portal-headsearch:focus-within { border-color: #fff; outline: 3px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 1px rgb(12 49 91 / 65%); }

.portal-nav {
  display: flex;
  align-items: center;
  gap: 2px;
  margin-left: auto;
}

.portal-nav a {
  display: flex;
  align-items: center;
  height: 56px;
  padding: 0 11px;
  color: #fff;
  border-bottom: 3px solid transparent;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}

.portal-nav a:hover,
.portal-nav a:focus-visible { background: rgb(255 255 255 / 9%); }
.portal-nav a.is-current { border-bottom-color: var(--portal-sky); }

.portal-menu { display: none; position: relative; margin-left: auto; }
.portal-menu summary {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 44px;
  color: #fff;
  cursor: pointer;
  font-size: 14px;
  font-weight: 700;
  list-style: none;
}
.portal-menu summary::-webkit-details-marker { display: none; }
.portal-menu summary svg { stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.portal-menu__panel {
  position: absolute;
  top: calc(100% + 6px);
  right: -6px;
  width: min(340px, calc(100vw - 28px));
  padding: 12px;
  color: var(--portal-ink);
  background: #fff;
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  box-shadow: 0 18px 45px -22px rgb(4 20 38 / 65%);
}
.portal-menu__panel form { display: flex; gap: 6px; }
.portal-menu__panel input {
  min-width: 0;
  width: 100%;
  min-height: 44px;
  padding: 0 11px;
  color: var(--portal-ink);
  background: #f5f8fb;
  border: 1px solid var(--portal-line);
  border-radius: 6px;
  font: 600 16px/1 "Manrope", sans-serif;
}
.portal-menu__panel button {
  min-height: 44px;
  padding-inline: 12px;
  color: #fff;
  background: var(--portal-link);
  border: 0;
  border-radius: 6px;
  font-weight: 700;
}
.portal-menu__panel nav { display: grid; margin-top: 8px; }
.portal-menu__panel nav a {
  display: flex;
  align-items: center;
  min-height: 44px;
  color: var(--portal-ink);
  border-bottom: 1px solid var(--portal-faint-line);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}

/* ── subject strip ───────────────────────────────────────────────────────── */

.portal-subjects { background: #fff; border-bottom: 1px solid var(--portal-line); }
.portal-subjects__inner {
  display: flex;
  align-items: center;
  gap: 6px;
  max-width: 1300px;
  height: 40px;
  margin-inline: auto;
  padding-inline: 20px;
  white-space: nowrap;
}
.portal-subjects__label,
.portal-subjects__scope {
  flex: 0 0 auto;
  color: var(--portal-muted);
  font-size: 10.5px;
  font-weight: 750;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.portal-subjects__label { margin-right: 4px; }
.portal-subjects__scope { margin-left: auto; }
.portal-subjects a {
  flex: 0 0 auto;
  padding: 5px 10px;
  color: var(--portal-ink);
  border: 1px solid var(--portal-line);
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 650;
  text-decoration: none;
}
.portal-subjects a:hover { color: var(--portal-link); border-color: #86bfdf; background: #f3f9fd; }
.portal-subjects a span { color: var(--portal-muted); font-variant-numeric: tabular-nums; }
.portal-subjects a.portal-subjects__all { color: var(--portal-link); border-color: transparent; font-weight: 700; }

/* ── compact photographic portal hero ───────────────────────────────────── */

.portal-hero {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  color: #fff;
  background: var(--portal-navy);
}
.portal-hero__image,
.portal-hero__wash { position: absolute; inset: 0; width: 100%; height: 100%; }
.portal-hero__image { z-index: -2; object-fit: cover; object-position: 50% 58%; filter: saturate(.5); opacity: .38; }
.portal-hero__wash { z-index: -1; background: linear-gradient(100deg, #0a2b4f 0%, rgb(10 43 79 / 94%) 46%, rgb(10 43 79 / 55%) 100%); }
.portal-spectrum { position: absolute; right: 0; bottom: 0; left: 0; z-index: 2; height: 3px; background: linear-gradient(90deg, var(--portal-coral) 0 18%, #7fc9ee 18% 46%, rgb(255 255 255 / 25%) 46% 100%); }

.portal-hero__inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, .45fr);
  gap: 18px;
  max-width: 1300px;
  margin-inline: auto;
  padding: 22px 20px 26px;
}
.portal-hero__main { display: grid; align-content: start; gap: 12px; min-width: 0; }
.portal-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  justify-self: start;
  padding: 5px 11px;
  color: var(--portal-sky);
  background: rgb(255 255 255 / 13%);
  border: 1px solid rgb(255 255 255 / 28%);
  border-radius: 999px;
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .15em;
  text-transform: uppercase;
}
.portal-pill > span { width: 5px; height: 5px; background: var(--portal-sky); border-radius: 50%; }
.portal-hero h1 {
  max-width: 24ch;
  margin: 0;
  color: #fff;
  font-size: clamp(26px, 3.4vw, 40px);
  font-weight: 800;
  letter-spacing: -.035em;
  line-height: 1.06;
  text-wrap: balance;
}
.portal-hero h1 span { color: var(--portal-sky); }
.portal-hero__lead { max-width: 52ch; margin: 0; color: #cfe2f2; font-size: 14.5px; line-height: 1.5; }

.portal-searchbox {
  display: grid;
  margin-top: 2px;
  overflow: hidden;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 20px 44px -30px rgb(4 20 38 / 75%);
}
.portal-tabs { display: flex; gap: 2px; padding: 0 8px; border-bottom: 1px solid var(--portal-line); }
.portal-tabs a {
  flex: 0 0 auto;
  padding: 9px 12px;
  color: var(--portal-muted);
  border-bottom: 2px solid transparent;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
.portal-tabs a.is-current { color: var(--portal-link); border-bottom-color: var(--portal-link); font-weight: 750; }

.portal-search { display: flex; align-items: stretch; padding: 5px; }
.portal-field {
  display: grid;
  flex: 1 1 120px;
  align-content: center;
  min-width: 0;
  padding: 6px 12px;
  box-shadow: inset 1px 0 0 #e7f0f8;
}
.portal-field--query { flex: 2.2 1 210px; box-shadow: none; }
body.page-home .portal-field > label {
  color: var(--portal-muted);
  font-size: 9.5px;
  font-weight: 750;
  letter-spacing: .1em;
  line-height: 1.2;
  text-transform: uppercase;
}
.portal-queryline { display: flex; align-items: center; gap: 8px; min-width: 0; }
.portal-queryline > svg { flex: 0 0 auto; stroke: var(--portal-link); stroke-width: 2.2; stroke-linecap: round; }
.portal-queryinput { position: relative; display: flex; flex: 1 1 auto; align-items: center; min-width: 0; }
.portal-field input,
.portal-field select {
  width: 100%;
  min-width: 0;
  height: 26px;
  padding: 0;
  color: var(--portal-ink);
  background-color: transparent;
  border: 0;
  font: 650 14.5px/1 "Manrope", ui-sans-serif, system-ui, sans-serif;
}
.portal-field select {
  appearance: none;
  padding-right: 18px;
  cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position: right 7px center, right 2px center;
  background-repeat: no-repeat;
  background-size: 5px 5px, 5px 5px;
}
.portal-field input:focus,
.portal-field select:focus { outline: 0; }
.portal-field:focus-within { background: #f4f9fc; outline: 3px solid #0b5c91; outline-offset: -3px; border-radius: 6px; }
.portal-typehint {
  position: absolute;
  left: 0;
  display: flex;
  align-items: center;
  max-width: 100%;
  overflow: hidden;
  color: var(--portal-muted);
  font-size: 14.5px;
  font-weight: 650;
  white-space: nowrap;
  pointer-events: none;
}
.portal-typehint > span { display: inline-block; width: 2px; height: 1em; margin-left: 1px; background: var(--portal-link); animation: portal-blink 1s steps(1, end) infinite; }
#home-q:not(:placeholder-shown) + .portal-typehint { display: none; }
@keyframes portal-blink { 50% { opacity: 0; } }
.portal-search__go {
  flex: 0 0 auto;
  align-self: stretch;
  min-height: 44px;
  padding-inline: 20px;
  color: #fff;
  background: var(--portal-link);
  border: 0;
  border-radius: 8px;
  cursor: pointer;
  font: 700 14px/1 "Manrope", ui-sans-serif, system-ui, sans-serif;
}
.portal-search__go:hover { background: #0a5787; }
.portal-search__go:active { transform: translateY(1px); }

.portal-quick { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.portal-quick > span {
  flex: 0 0 auto;
  color: #9fc8e6;
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.portal-quick a {
  flex: 0 0 auto;
  padding: 4px 9px;
  color: #eaf3fa;
  background: rgb(255 255 255 / 10%);
  border: 1px solid rgb(255 255 255 / 26%);
  border-radius: 999px;
  font-size: 12px;
  text-decoration: none;
}
.portal-quick a:hover { background: rgb(255 255 255 / 18%); }
.portal-check { margin: 0; color: #cfe2f2; font-size: 12px; line-height: 1.5; }
.portal-check b { color: var(--portal-sky); font-size: 10px; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }
.portal-check a { color: #fff; font-weight: 650; }

.portal-hero__proof { display: grid; align-content: start; gap: 8px; min-width: 0; }
.portal-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
  overflow: hidden;
  background: rgb(255 255 255 / 8%);
  border: 1px solid rgb(255 255 255 / 22%);
  border-radius: 12px;
}
.portal-stats div { display: flex; flex-direction: column-reverse; padding: 11px 13px; }
.portal-stats div:nth-child(1) { border-right: 1px solid rgb(255 255 255 / 18%); border-bottom: 1px solid rgb(255 255 255 / 18%); }
.portal-stats div:nth-child(2) { border-bottom: 1px solid rgb(255 255 255 / 18%); }
.portal-stats div:nth-child(3) { border-right: 1px solid rgb(255 255 255 / 18%); }
.portal-stats dt { color: #cfe2f2; font-size: 10px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; }
.portal-stats dd { margin: 0; color: #fff; font-size: 20px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.portal-promises { display: grid; gap: 8px; margin: 0; padding: 12px 13px 13px; list-style: none; background: rgb(255 255 255 / 8%); border: 1px solid rgb(255 255 255 / 22%); border-radius: 12px; }
.portal-promises li { display: flex; gap: 8px; color: #eaf3fa; font-size: 12.5px; line-height: 1.45; }
.portal-promises li::before { content: ""; flex: 0 0 auto; width: 5px; height: 5px; margin-top: 6px; background: var(--portal-sky); border-radius: 50%; }

/* ── compact portal body ─────────────────────────────────────────────────── */

.portal-shell { max-width: 1300px; margin-inline: auto; padding: 16px 20px 28px; }
.portal-body { display: grid; grid-template-columns: minmax(0, 1fr) 300px; align-items: start; gap: 16px; }
.portal-main { display: grid; gap: 16px; min-width: 0; }
.portal-card {
  min-width: 0;
  padding: 14px 16px 16px;
  background: var(--portal-paper);
  border: 1px solid var(--portal-line);
  border-radius: 12px;
}
.portal-card__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--portal-line); }
.portal-card h2,
.portal-card__head h2 { margin: 0; color: var(--portal-ink); font-size: 19px; font-weight: 750; letter-spacing: -.02em; line-height: 1.25; }
.portal-card__head > a { flex: 0 0 auto; color: var(--portal-link); font-size: 12.5px; font-weight: 700; text-decoration: none; }
.portal-card__head > a:hover { text-decoration: underline; }

.portal-browse { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 24px; padding-top: 12px; }
.portal-browse h3 { margin: 0 0 5px; color: var(--portal-muted); font-size: 10.5px; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.portal-browse ul { display: grid; margin: 0; padding: 0; list-style: none; }
.portal-browse li { border-bottom: 1px solid var(--portal-faint-line); }
.portal-browse li:last-child { border-bottom: 0; }
.portal-browse .browse__link { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 34px; color: var(--portal-ink); font-size: 12.5px; text-decoration: none; }
.portal-browse .browse__link:hover .browse__name { color: var(--portal-link); text-decoration: underline; }
.portal-browse .browse__name { min-width: 0; line-height: 1.35; }
.portal-browse .browse__n { flex: 0 0 auto; color: var(--portal-muted); font-size: 11.5px; font-variant-numeric: tabular-nums; }
.portal-more { display: inline-flex; align-items: center; min-height: 32px; margin-top: 4px; color: var(--portal-link); font-size: 12px; font-weight: 700; text-decoration: none; }

.portal-levels { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding-top: 12px; }
.portal-levels > a {
  display: grid;
  align-content: start;
  gap: 4px;
  min-height: 112px;
  padding: 12px;
  color: var(--portal-ink);
  background: var(--portal-ground);
  border: 1px solid var(--portal-line);
  border-radius: 10px;
  text-decoration: none;
}
.portal-levels > a:hover { border-color: #88b9d5; background: #eef7fc; }
.portal-levels strong { font-size: 14.5px; font-weight: 750; }
.portal-levels span { color: var(--portal-muted); font-size: 12px; line-height: 1.45; }
.portal-levels small { margin-top: auto; color: var(--portal-link); font-size: 11.5px; font-weight: 700; }

.portal-admissions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding-top: 12px; }
.admission-system { display: grid; min-width: 0; overflow: hidden; color: var(--portal-ink); background: var(--portal-ground); border: 1px solid var(--portal-line); border-radius: 10px; text-decoration: none; }
.admission-system:hover { border-color: #88b9d5; }
.admission-system__media { position: relative; display: grid; min-height: 112px; max-height: 112px; overflow: hidden; background: #e5eef5; }
.admission-system__fallback { position: absolute; inset: 0; display: grid; place-items: center; color: var(--portal-muted); font-size: 10px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.admission-system__media img { position: relative; z-index: 1; width: 100%; height: 112px; object-fit: cover; object-position: top center; }
.admission-system__copy { display: grid; gap: 3px; padding: 9px 10px 10px; }
.admission-system__mark { color: var(--portal-link); font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.admission-system__title { min-width: 0; font-size: 12.5px; font-weight: 750; line-height: 1.35; }
.admission-system__copy > span:last-child { color: var(--portal-muted); font-size: 11px; }
.portal-stages { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 12px 0 0; padding: 10px 0 0; list-style: none; border-top: 1px solid var(--portal-line); }
.portal-stages li { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 1px 7px; }
.portal-stages li > span { grid-row: span 2; display: grid; place-items: center; align-self: start; width: 20px; height: 20px; color: var(--portal-link); background: #e4f3fb; border-radius: 50%; font-size: 10px; font-weight: 800; }
.portal-stages strong { font-size: 11.5px; line-height: 1.35; }
.portal-stages small { color: var(--portal-muted); font-size: 10.5px; line-height: 1.4; }

.portal-shelves { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; padding-top: 12px; }
.portal-shelves a { display: grid; align-content: start; gap: 5px; min-height: 118px; padding: 11px; color: var(--portal-ink); background: var(--portal-ground); border: 1px solid var(--portal-line); border-radius: 10px; text-decoration: none; }
.portal-shelves a:hover { border-color: #88b9d5; background: #eef7fc; }
.portal-shelves a > span { display: grid; place-items: center; width: 30px; height: 30px; color: #fff; background: var(--portal-link); border-radius: 6px; font-size: 9px; font-weight: 800; letter-spacing: .03em; }
.portal-shelves strong { font-size: 11.5px; line-height: 1.35; }
.portal-shelves small { margin-top: auto; color: #784919; font-size: 9.5px; font-weight: 750; letter-spacing: .04em; line-height: 1.35; text-transform: uppercase; }

.portal-guides { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.portal-guides > article { display: grid; align-content: start; gap: 6px; min-height: 138px; padding: 14px; color: var(--portal-ink); background: var(--portal-ground); border: 1px solid var(--portal-line); border-radius: 12px; }
.portal-guides strong { font-size: 14.5px; font-weight: 750; }
.portal-guides span { color: var(--portal-muted); font-size: 12.5px; line-height: 1.55; }
.portal-guides a { align-self: end; margin-top: auto; color: var(--portal-link); font-size: 12px; font-weight: 700; text-decoration: none; }
.portal-guides a::after { content: " →"; }
.portal-guides a:hover { text-decoration: underline; }

.portal-compare {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  overflow: hidden;
  padding: 18px;
  color: #fff;
  background: linear-gradient(120deg, #0c315b 0%, #0a2a4e 60%, #12669b 100%);
  border-radius: 12px;
}
.portal-compare .portal-spectrum { top: 0; bottom: auto; background: linear-gradient(90deg, var(--portal-coral) 0 20%, #7fc9ee 20% 50%, var(--portal-sky) 50% 100%); }
.portal-compare > div:first-of-type > small { display: block; margin-bottom: 5px; color: #7fc9ee; font-size: 10.5px; font-weight: 750; letter-spacing: .16em; text-transform: uppercase; }
.portal-compare h2 { margin: 0; color: #fff; font-size: clamp(19px, 2vw, 24px); font-weight: 750; letter-spacing: -.025em; line-height: 1.15; }
.portal-compare p { max-width: 62ch; margin: 6px 0 0; color: #cfe2f2; font-size: 13px; line-height: 1.55; }
.portal-compare .ribbon__acts { display: grid; gap: 7px; min-width: 210px; }
.portal-compare .ribbon__acts a { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 0 14px; color: #0c315b; background: #fff; border: 1px solid #fff; border-radius: 6px; font-size: 13.5px; font-weight: 700; text-decoration: none; }
.portal-compare .ribbon__acts a:last-child { color: #fff; background: transparent; border-color: rgb(255 255 255 / 40%); }
.portal-compare .ribbon__acts a:hover { box-shadow: 0 8px 18px -13px rgb(0 0 0 / 70%); }

.portal-docs { display: grid; margin: 0; padding: 0; list-style: none; }
.portal-docs li { border-bottom: 1px solid var(--portal-faint-line); }
.portal-docs li:last-child { border-bottom: 0; }
.portal-docs a { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 9px 0; color: var(--portal-ink); font-size: 13.5px; text-decoration: none; }
.portal-docs a:hover > span:first-child { color: var(--portal-link); text-decoration: underline; }
.portal-docs a > span { min-width: 0; }
.portal-docs small { color: var(--portal-muted); font-size: inherit; }
.portal-docs time { flex: 0 0 auto; color: var(--portal-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.portal-note { margin: 10px 0 0; color: var(--portal-muted); font-size: 11.5px; line-height: 1.5; }

.portal-faqs { display: grid; margin-top: 8px; border-top: 1px solid var(--portal-line); }
.portal-faqs details { border-bottom: 1px solid var(--portal-faint-line); }
.portal-faqs details:last-child { border-bottom: 0; }
.portal-faqs summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 44px; color: var(--portal-ink); cursor: pointer; font-size: 14px; font-weight: 700; line-height: 1.35; list-style: none; }
.portal-faqs summary::-webkit-details-marker { display: none; }
.portal-faqs summary span { flex: 0 0 auto; width: 8px; height: 8px; margin-right: 3px; border-right: 2px solid var(--portal-link); border-bottom: 2px solid var(--portal-link); transform: rotate(45deg); transition: transform 180ms cubic-bezier(.2, .8, .2, 1); }
.portal-faqs details[open] summary span { transform: rotate(225deg); }
.portal-faqs p { max-width: 80ch; margin: 0 0 12px; color: var(--portal-muted); font-size: 13px; line-height: 1.65; }

/* ── sticky right rail ───────────────────────────────────────────────────── */

.portal-rail { position: sticky; top: 70px; display: grid; gap: 12px; min-width: 0; }
.portal-railcard { min-width: 0; padding: 12px 14px 14px; background: #fff; border: 1px solid var(--portal-line); border-radius: 12px; }
.portal-railcard h2 { margin: 0 0 8px; color: var(--portal-muted); font-size: 10.5px; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; }
.portal-railcard ul { display: grid; margin: 0; padding: 0; list-style: none; }
.portal-railcard li { padding: 8px 0; border-bottom: 1px solid var(--portal-faint-line); }
.portal-railcard li:last-child { border-bottom: 0; }
.portal-railcard time { display: block; color: var(--portal-muted); font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; }
.portal-railcard li > span { color: var(--portal-ink); font-size: 12.5px; line-height: 1.5; }
.portal-railcard .portal-start li { padding: 0; }
.portal-railcard .portal-start a { display: block; padding: 7px 0; color: var(--portal-link); font-size: 13px; text-decoration: none; }
.portal-railcard .portal-start a:hover { text-decoration: underline; }
.portal-railcard.portal-voices { background: var(--portal-ground); }
.portal-voices > div { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: start; gap: 10px; }
.portal-voices > div > span { display: grid; place-items: center; width: 40px; height: 40px; color: var(--portal-muted); background: repeating-linear-gradient(135deg, #eef4f9 0 6px, #e4eef6 6px 12px); border-radius: 50%; font-size: 7px; font-weight: 750; letter-spacing: .04em; }
.portal-voices p { display: grid; gap: 5px; margin: 0; color: var(--portal-muted); font-size: 12.5px; line-height: 1.5; }
.portal-voices p small { color: #784919; font-size: 10.5px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.portal-about { border-left: 3px solid var(--portal-coral); }
.portal-about h2 { color: var(--portal-link); }
.portal-about p { margin: 0 0 8px; color: var(--portal-muted); font-size: 12.5px; line-height: 1.55; }
.portal-about strong,
.portal-about time { display: inline; color: var(--portal-ink); font-weight: 700; }
.portal-about > a { display: flex; align-items: center; min-height: 36px; margin-top: 4px; color: var(--portal-link); font-size: 12.5px; font-weight: 700; text-decoration: none; }

/* ── compact five-column portal footer ───────────────────────────────────── */

body.page-home .edu-foot.portal-footer { margin: 0; padding: 0; color: #eef5fb; background: linear-gradient(180deg, #12406f 0%, #0b2b4d 100%); border: 0; }
.portal-footer::before,
.portal-footer::after { content: none; }
.portal-footer__inner { max-width: 1300px; margin-inline: auto; padding-inline: 20px; }
.portal-footer__grid { display: grid; grid-template-columns: 1.2fr repeat(4, minmax(0, 1fr)); gap: 20px 24px; padding-block: 26px 20px; }
.portal-footer__brand > a { display: inline-flex; }
.portal-footer__brand img { display: block; width: auto; height: 40px; object-fit: contain; object-position: left center; filter: brightness(0) invert(1); }
.portal-footer__brand > p { max-width: 28ch; margin: 10px 0 12px; color: #cfe1f1; font-size: 13px; line-height: 1.5; }
.portal-footer__brand > div { display: flex; flex-wrap: wrap; gap: 6px; }
.portal-footer__brand > div a { display: inline-flex; align-items: center; min-height: 32px; padding: 0 10px; color: #eaf3fa; background: rgb(255 255 255 / 6%); border: 1px solid rgb(255 255 255 / 20%); border-radius: 999px; font-size: 12px; font-weight: 650; text-decoration: none; }
.portal-footer__brand > div a:hover { background: rgb(255 255 255 / 12%); }
.portal-footer nav h2 { margin: 0 0 7px; color: #9fc8e6; font-size: 10.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.portal-footer nav ul { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.portal-footer nav a { color: #dceaf6; font-size: 12.5px; line-height: 1.4; text-decoration: none; }
.portal-footer nav a:hover { color: #fff; text-decoration: underline; }
.portal-footer__base { background: #082441; border-top: 1px solid rgb(255 255 255 / 16%); }
.portal-footer__base .portal-footer__inner { padding-block: 10px 12px; }
.portal-footer__base p { margin: 0; color: #a9c3d8; font-size: 11.5px; line-height: 1.5; }
.portal-footer__base strong { color: #d5e6f5; }
.portal-footer__base span { margin-left: 8px; color: #7f9db6; }

/* ── responsive composition from the supplied mobile artifact ───────────── */

@media (max-width: 1180px) {
  .portal-body { grid-template-columns: minmax(0, 1fr); }
  .portal-rail { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1000px) {
  .portal-hero__inner { grid-template-columns: minmax(0, 1fr); }
  .portal-nav { display: none; }
  .portal-menu { display: block; }
  .portal-subjects__scope { display: none; }
  .portal-browse { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 24px; }
  .portal-browse > div:last-child { grid-column: 1 / -1; }
  .portal-levels,
  .portal-admissions,
  .portal-stages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portal-shelves { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .portal-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .portal-headsearch { display: none; }
  .portal-header__bar { gap: 10px; }
  .portal-search { flex-wrap: wrap; }
  .portal-field { flex: 1 1 100%; box-shadow: none; border-top: 1px solid #e7f0f8; }
  .portal-field--query { border-top: 0; }
  .portal-field input,
  .portal-field select { min-height: 28px; font-size: 16px; }
  .portal-search__go { flex: 1 1 100%; }
  .portal-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .portal-stats div { border: 0 !important; border-right: 1px solid rgb(255 255 255 / 18%) !important; }
  .portal-stats div:last-child { border-right: 0 !important; }
  .portal-guides { grid-template-columns: minmax(0, 1fr); }
  .portal-compare { grid-template-columns: minmax(0, 1fr); }
  .portal-compare .ribbon__acts { min-width: 0; }
  .portal-docs a { align-items: start; flex-direction: column; gap: 3px; }
  .portal-rail { grid-template-columns: minmax(0, 1fr); }
  .portal-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
  .portal-levels,
  .portal-admissions,
  .portal-stages { grid-template-columns: minmax(0, 1fr); }
  .portal-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portal-stats div:nth-child(1) { border-right: 1px solid rgb(255 255 255 / 18%) !important; border-bottom: 1px solid rgb(255 255 255 / 18%) !important; }
  .portal-stats div:nth-child(2) { border-right: 0 !important; border-bottom: 1px solid rgb(255 255 255 / 18%) !important; }
  .portal-stats div:nth-child(3) { border-right: 1px solid rgb(255 255 255 / 18%) !important; }
  .portal-shelves { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 430px) {
  .portal-ticker__inner,
  .portal-header__bar,
  .portal-subjects__inner,
  .portal-footer__inner { padding-inline: 14px; }
  .portal-hero__inner { gap: 14px; padding: 16px 14px 20px; }
  .portal-hero h1 { max-width: none; font-size: clamp(24px, 7.4vw, 32px); letter-spacing: -.03em; }
  .portal-hero__lead { font-size: 13.5px; }
  .portal-tabs { overflow-x: auto; scrollbar-width: none; }
  .portal-tabs::-webkit-scrollbar { display: none; }
  .portal-tabs a { padding-inline: 10px; }
  .portal-shell { padding: 12px 14px 20px; }
  .portal-body,
  .portal-main { gap: 12px; }
  .portal-card { padding: 12px 13px 14px; }
  .portal-card h2,
  .portal-card__head h2 { font-size: 17px; }
  .portal-card__head { align-items: flex-start; }
  .portal-card__head > a { max-width: 42%; text-align: right; }
  .portal-browse { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .portal-browse > div:last-child { grid-column: auto; }
  .portal-footer__grid { gap: 16px 18px; }
}

@media (max-width: 350px) {
  .portal-header__brand img { width: 132px; }
  .portal-footer__grid { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .portal-typehint > span { animation: none; }
  .portal-faqs summary span { transition: none; }
}

@media print {
  .portal-ticker,
  .portal-header,
  .portal-subjects,
  .portal-footer,
  .portal-quick,
  .portal-searchbox,
  .portal-compare .ribbon__acts { display: none !important; }
  .portal-hero { color: #000; background: #fff; border-bottom: 2px solid #000; }
  .portal-hero__image,
  .portal-hero__wash,
  .portal-spectrum { display: none; }
  .portal-hero h1,
  .portal-hero h1 span,
  .portal-hero__lead,
  .portal-check { color: #000; }
  .portal-body { grid-template-columns: 1fr; }
  .portal-rail { position: static; }
}
