/* ============================================================================
   WebForge "Heritage" public theme — 1:1 port of the design tokens/styles in
   webforge_design_src/heritage-tokens.jsx + blocks-*.jsx (Maple Ridge design).
   Custom classes are prefixed hc- (kept from the design) / hb- (block layout).
   ============================================================================ */

:root {
  --hc-bg:        #F5EFE2;
  --hc-paper:     #FBF7EC;
  --hc-paper-alt: #EFE7D2;
  --hc-ink:       #0E1E36;
  --hc-ink-soft:  #3D4C66;
  --hc-ink-mute:  #7E8AA1;
  --hc-rule:      #D6CBB1;
  --hc-hair:      #E6DDC4;
  --hc-brass:     #B58A3B;
  --hc-brass-dim: #E7D6A8;
  --hc-sage:      #6E8E63;
  --hc-rose:      #B85F5F;
}

html, body.hc-body { margin: 0; padding: 0; }
body.hc-body { background: var(--hc-bg); color: var(--hc-ink); font-family: "DM Sans", "Helvetica Neue", system-ui, sans-serif; }
.hc-body * { box-sizing: border-box; }

.hc-serif   { font-family: "Source Serif 4", "Source Serif Pro", Georgia, serif; }
.hc-display { font-family: "Playfair Display", "Bodoni Moda", Georgia, serif; }
.hc-sans    { font-family: "DM Sans", "Helvetica Neue", system-ui, sans-serif; }
.hc-mono    { font-family: "JetBrains Mono", ui-monospace, Menlo, monospace; }
.hc-tabnum  { font-variant-numeric: tabular-nums; }

.hc-card       { background: var(--hc-paper); border: 1px solid var(--hc-rule); }
.hc-card-quiet { background: var(--hc-paper); }
.hc-hair       { border-bottom: 1px solid var(--hc-hair); }
.hc-rule       { border-top: 1px solid var(--hc-rule); }

.hc-pill { display: inline-block; padding: 3px 10px; border: 1px solid var(--hc-rule);
           border-radius: 999px; font-size: 10.5px; letter-spacing: .1em;
           text-transform: uppercase; color: var(--hc-ink-soft); font-family: "DM Sans", sans-serif; }
.hc-eyebrow { font-family: "DM Sans", sans-serif; font-size: 10.5px; letter-spacing: .16em;
              text-transform: uppercase; color: var(--hc-brass); font-weight: 600; }
.hc-meta { font-family: "DM Sans", sans-serif; font-size: 11.5px; color: var(--hc-ink-soft); }

.hc-btn { font-family: "DM Sans", sans-serif; font-size: 12px; letter-spacing: .06em;
          padding: 9px 18px; border: 1px solid var(--hc-ink); cursor: pointer; text-transform: uppercase;
          text-decoration: none; display: inline-block; }
.hc-btn-solid { background: var(--hc-ink); color: var(--hc-paper); }
.hc-btn-ghost { background: transparent; color: var(--hc-ink); }
.hc-btn-brass { background: var(--hc-brass); color: var(--hc-paper); border-color: var(--hc-brass); }

.hc-link { color: var(--hc-brass); cursor: pointer; font-family: "DM Sans", sans-serif;
           font-size: 12px; letter-spacing: .04em; text-decoration: none; }

/* ── Section head ── */
.hb-sechead { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.hb-sechead-title { font-size: 34px; line-height: 1.05; color: var(--hc-ink); font-weight: 600; letter-spacing: -0.4px; }
.hb-sechead-meta { margin-top: 6px; }

/* ── 01 Announcement bar ── */
.hb-announce { background: var(--hc-ink); color: var(--hc-paper); padding: 10px 48px;
               display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; }
.hb-announce-left { display: flex; align-items: center; gap: 14px; }
.hb-announce-tag { font-size: 10px; letter-spacing: 1px; padding: 2px 7px;
                   background: var(--hc-brass); color: var(--hc-ink); font-weight: 700; }
.hb-announce-right { display: flex; align-items: center; gap: 18px; }
.hb-announce-cta { color: var(--hc-brass-dim); cursor: pointer; text-decoration: none;
                   background: none; border: none; padding: 0; font: inherit; }

/* ── 02 Header / nav ── */
.hb-nav { padding: 18px 48px; background: var(--hc-paper); border-bottom: 1px solid var(--hc-hair);
          display: flex; align-items: center; justify-content: space-between; }
.hb-nav-brand { display: flex; align-items: center; gap: 14px; }
.hb-nav-name { font-size: 22px; font-weight: 600; letter-spacing: .2px; color: var(--hc-ink); display: block; line-height: 1.05; }
.hb-nav-sub  { font-size: 10.5px; letter-spacing: .5px; color: var(--hc-ink-soft); text-transform: uppercase; display: block; }
.hb-nav-links { display: flex; align-items: center; gap: 28px; font-size: 13.5px; color: var(--hc-ink); }
.hb-nav-links a { color: inherit; text-decoration: none; cursor: pointer; }
.hb-nav-right { display: flex; align-items: center; gap: 14px; }
.hb-nav-date { font-size: 12px; color: var(--hc-ink-soft); }

.hb-nav-logo { max-height: 48px; max-width: 180px; object-fit: contain; }
.hb-nav-logo--landscape { max-height: 40px; }
.hb-nav-logo--square { max-height: 48px; }
.hb-nav-logo--portrait { max-height: 56px; padding: 0 4px; }

/* R4: nav dropdown — same typography/panel as the sign-in menu above. */
.hc-nav-item { position: relative; }
.hc-nav-caret { font-size: 9px; opacity: .65; }
.hc-nav-drop { position: absolute; left: 0; top: calc(100% + 6px); z-index: 60;
               background: var(--hc-paper); border: 1px solid var(--hc-rule);
               box-shadow: 0 10px 30px rgba(14,30,54,.14); min-width: 190px; display: none; }
.hc-nav-item:hover .hc-nav-drop, .hc-nav-item:focus-within .hc-nav-drop { display: block; }
.hc-nav-drop a { display: block; padding: 11px 16px; font-family: "DM Sans", sans-serif;
                 font-size: 13px; color: var(--hc-ink); text-decoration: none;
                 border-bottom: 1px solid var(--hc-hair); }
.hc-nav-drop a:last-child { border-bottom: none; }
.hc-nav-drop a:hover { background: var(--hc-brass-dim); }

/* ── 03 Hero ── */
.hb-hero { background: var(--hc-bg); padding: 60px 48px 70px; }
.hb-hero-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 56px; align-items: stretch; }
.hb-hero-copy { display: flex; flex-direction: column; justify-content: center; }
.hb-hero-title { margin: 0; font-size: 78px; line-height: .98; font-weight: 600; color: var(--hc-ink); letter-spacing: -1.2px; }
.hb-hero-title em { font-style: italic; color: var(--hc-brass); }
.hb-hero-body { margin: 22px 0 0; font-size: 17px; line-height: 1.55; color: var(--hc-ink-soft); max-width: 540px; text-wrap: pretty; }
.hb-hero-ctas { display: flex; gap: 12px; margin-top: 28px; }
.hb-hero-trust { margin-top: 22px; display: flex; gap: 22px; }
.hb-hero-media { position: relative; }
.hb-hero-badge { position: absolute; bottom: -22px; left: -22px; padding: 14px 18px;
                 display: flex; align-items: center; gap: 14px; max-width: 280px;
                 box-shadow: 0 8px 24px rgba(14,30,54,.10); }
.hb-hero-badge-num { width: 44px; height: 44px; border-radius: 50%; background: var(--hc-brass-dim);
                     border: 1.5px solid var(--hc-brass); display: grid; place-items: center;
                     font-family: "Playfair Display", serif; font-size: 18px; font-weight: 700; color: var(--hc-ink); }

/* ── 04 Stats strip ── */
.hb-stats { background: var(--hc-ink); color: var(--hc-paper); padding: 36px 48px; }
.hb-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 36px; }
.hb-stats-cell + .hb-stats-cell { padding-left: 28px; border-left: 1px solid rgba(245,239,226,.15); }
.hb-stats-num { font-size: 48px; line-height: 1; color: var(--hc-brass-dim); font-weight: 600; }
.hb-stats-k   { font-size: 16px; color: var(--hc-paper); margin-top: 6px; }
.hb-stats-cap { color: rgba(245,239,226,.55); margin-top: 2px; }
/* Variant: light */
.hb-stats--light { background: var(--hc-paper); color: var(--hc-ink); border-top: 1px solid var(--hc-rule); border-bottom: 1px solid var(--hc-rule); }
.hb-stats--light .hb-stats-num { color: var(--hc-brass); }
.hb-stats--light .hb-stats-k { color: var(--hc-ink); }
.hb-stats--light .hb-stats-cap { color: var(--hc-ink-soft); }
.hb-stats--light .hb-stats-cell + .hb-stats-cell { border-left-color: var(--hc-hair); }

/* ── 05 About / principal ── */
.hb-about { background: var(--hc-bg); padding: 72px 48px; }
.hb-about-grid { display: grid; grid-template-columns: 1fr 1.4fr; gap: 56px; align-items: start; }
.hb-about-caption { padding: 16px 18px; border-top: 2px solid var(--hc-brass); margin-top: -1px; }
.hb-about-quote { margin: 28px 0 0; font-style: italic; font-size: 30px; line-height: 1.2; color: var(--hc-ink);
                  font-weight: 500; border-left: 2px solid var(--hc-brass); padding-left: 22px; max-width: 640px; }
.hb-about-body { margin: 24px 0 0; font-size: 16px; line-height: 1.65; color: var(--hc-ink-soft); max-width: 620px; text-wrap: pretty; }
.hb-about-ctas { display: flex; gap: 14px; margin-top: 22px; }

/* ── 06 Programs grid ── */
.hb-programs { background: var(--hc-paper-alt); padding: 72px 48px; }
.hb-programs-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 32px; }
.hb-program-card { padding: 0; display: flex; flex-direction: column; }
.hb-program-body { padding: 18px 18px 22px; border-top-width: 2px; border-top-style: solid; }
.hb-program-name { font-size: 22px; color: var(--hc-ink); margin-top: 6px; font-weight: 600; }
.hb-program-blurb { margin: 10px 0 18px; font-size: 13.5px; line-height: 1.5; color: var(--hc-ink-soft); }

/* ── Photo tile ── */
.hb-phototile { position: relative; overflow: hidden; border: 1px solid var(--hc-rule); }
.hb-phototile img, .hb-phototile svg { display: block; width: 100%; height: 100%; object-fit: cover; }
.hb-phototile-label { position: absolute; left: 12px; bottom: 10px; font-size: 10px; letter-spacing: .6px;
                      text-transform: uppercase; color: var(--hc-paper); background: rgba(14,30,54,.65); padding: 3px 8px; }

/* ── P9: inner-page (WebForge Pages/Chronicle) content grids ──
   inline style="grid-template-columns:..." always wins over an external
   media query on the SAME element (inline beats stylesheet regardless of
   specificity) — so any inline column count silently defeated the @media
   rules below at every viewport. These base rules replace the inline
   overrides; they must stay ABOVE the @media block so the media query still
   wins at small widths (same specificity, later source wins). */
.hb-stats-cols-1 { grid-template-columns: 1fr; }
.hb-stats-cols-2 { grid-template-columns: repeat(2, 1fr); }
.hb-stats-cols-3 { grid-template-columns: repeat(3, 1fr); }
.hb-stats-cols-4 { grid-template-columns: repeat(4, 1fr); }
/* Shared 3-up card grid: Page services/staff/testimonials + Chronicle gallery/index cards. */
.hb-inner-3col-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
/* Page split-content (text+image); image optional, side set inline via `order`. */
.hb-inner-split-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 48px; align-items: start; }
.hb-inner-split-grid--noimg { grid-template-columns: 1fr; }

/* ── Responsive ── */
@media (max-width: 991px) {
  .hb-hero-grid, .hb-about-grid { grid-template-columns: 1fr; }
  .hb-hero-title { font-size: 52px; }
  .hb-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .hb-stats-cell + .hb-stats-cell { padding-left: 0; border-left: none; }
  .hb-programs-grid { grid-template-columns: repeat(2, 1fr); }
  .hb-nav-links { display: none; }
  .hb-announce, .hb-nav, .hb-hero, .hb-stats, .hb-about, .hb-programs { padding-left: 20px; padding-right: 20px; }
  .hb-inner-3col-grid { grid-template-columns: repeat(2, 1fr); }
  .hb-inner-split-grid { grid-template-columns: 1fr; }
}
@media (max-width: 575px) {
  .hb-stats-grid, .hb-programs-grid, .hb-inner-3col-grid { grid-template-columns: 1fr; }
}

/* ------ 07 Birthdays ------ */
.hb-birthdays { background: var(--hc-bg); padding: 64px 48px; }
.hb-bday-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 28px; }
.hb-bday-card { padding: 18px 18px 16px; display: grid; grid-template-columns: 52px 1fr auto; gap: 14px; align-items: center; }
.hb-bday-mono { width: 52px; height: 52px; border-radius: 50%; background: var(--hc-brass-dim); border: 1.5px solid var(--hc-brass);
                display: grid; place-items: center; font-family: "Playfair Display", serif; font-size: 18px; font-weight: 700;
                color: var(--hc-ink); position: relative; overflow: hidden; }
.hb-bday-photo { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.hb-bday-cake { position: absolute; bottom: -4px; right: -4px; width: 22px; height: 22px; border-radius: 50%;
                background: var(--hc-paper); border: 1px solid var(--hc-rule); display: grid; place-items: center; font-size: 11px; }
.hb-bday-name { font-size: 16px; color: var(--hc-ink); }
.hb-btn-sm { padding: 6px 12px; font-size: 10.5px; }

/* ------ 08 Leaderboard ------ */
.hb-leaderboard { background: var(--hc-paper-alt); padding: 72px 48px; }
.hb-lb-grid { margin-top: 28px; display: grid; grid-template-columns: 1.4fr 1fr; gap: 28px; }
.hb-lb-card { padding: 24px 28px; }
.hb-lb-title { font-size: 22px; color: var(--hc-ink); margin-bottom: 18px; font-weight: 600; }
.hb-lb-row { display: grid; grid-template-columns: 36px 40px 1fr 110px 90px; gap: 14px; align-items: center; padding: 12px 0; }
.hb-lb-row--you { background: linear-gradient(0deg, rgba(231,214,168,.33), transparent); }
.hb-lb-rank { font-size: 20px; font-weight: 600; text-align: center; color: var(--hc-ink-soft); }
.hb-lb-rank--medal { color: var(--hc-brass); }
.hb-avatar { border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
             font-weight: 600; letter-spacing: .5px; flex-shrink: 0; font-family: "DM Sans", sans-serif; }
.hb-lb-pts { font-size: 16px; color: var(--hc-ink); text-align: right; }
.hb-lb-pts .hc-meta { font-size: 10px; letter-spacing: .4px; text-transform: uppercase; }
.hb-lb-note { text-align: right; color: #3F7A4F; }
.hb-lb-classrow { display: grid; grid-template-columns: 28px 38px 1fr auto; gap: 12px; align-items: center; padding: 12px 0; }
.hb-lb-classrank { font-family: "Playfair Display", serif; font-size: 22px; text-align: center; color: var(--hc-ink-soft); }
.hb-lb-classrank--medal { color: var(--hc-brass); }
.hb-lb-classbadge { width: 36px; height: 36px; border-radius: 4px; background: var(--hc-brass-dim); border: 1.5px solid var(--hc-brass);
                    display: grid; place-items: center; font-family: "Playfair Display", serif; font-weight: 700; font-size: 13px; color: var(--hc-ink); }
.hb-lb-toprow { display: grid; grid-template-columns: 24px 1fr auto; gap: 12px; align-items: center; padding: 8px 0; }
.hb-lb-tab { padding: 6px 14px; font-size: 11px; letter-spacing: .4px; border: 1px solid var(--hc-ink); text-transform: uppercase;
             font-family: "DM Sans", sans-serif; cursor: pointer; }
.hb-lb-tab--on { background: var(--hc-ink); color: var(--hc-paper); }

/* ------ 09 Achievements ------ */
.hb-achievements { background: var(--hc-bg); padding: 72px 48px; }
.hb-ach-counters { margin-top: 32px; display: grid; grid-template-columns: repeat(4, 1fr);
                   border: 1px solid var(--hc-rule); background: var(--hc-paper); }
.hb-ach-cell { padding: 32px 28px; }
.hb-ach-cell + .hb-ach-cell { border-left: 1px solid var(--hc-hair); }
.hb-ach-cell--brass { background: linear-gradient(180deg, rgba(231,214,168,.19), transparent); }
.hb-ach-num { font-size: 64px; line-height: 1; font-weight: 600; color: var(--hc-ink); }
.hb-ach-cell--brass .hb-ach-num { color: var(--hc-brass); }
.hb-ach-k { font-size: 16px; color: var(--hc-ink); margin-top: 8px; }
.hb-ach-highlights { margin-top: 28px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.hb-ach-hl { padding: 20px 22px; background: var(--hc-paper); border: 1px solid var(--hc-rule); border-top: 2px solid var(--hc-brass); }
.hb-ach-hl-title { font-size: 19px; color: var(--hc-ink); margin-top: 6px; font-weight: 600; line-height: 1.2; }

/* ------ 10 News ------ */
.hb-news { background: var(--hc-paper-alt); padding: 72px 48px; }
.hb-news-grid { margin-top: 32px; display: grid; grid-template-columns: 1.5fr 1fr 1fr; gap: 28px; }
.hb-news-feature-card { padding: 20px 22px; margin-top: -1px; border-top: 2px solid var(--hc-brass); }
.hb-news-feature-title { margin: 8px 0 0; font-size: 26px; line-height: 1.15; color: var(--hc-ink); font-weight: 600; }
.hb-news-feature-cap { margin: 10px 0 16px; font-size: 14px; color: var(--hc-ink-soft); line-height: 1.55; }
.hb-news-item { padding-bottom: 18px; margin-bottom: 18px; }
.hb-news-item-title { margin: 6px 0 0; font-size: 19px; line-height: 1.2; color: var(--hc-ink); font-weight: 600; }
.hb-news-item-cap { margin: 8px 0 0; font-size: 13.5px; color: var(--hc-ink-soft); line-height: 1.55; }

/* ------ 11 Events ------ */
.hb-events { background: var(--hc-bg); padding: 72px 48px; }
.hb-events-grid { margin-top: 32px; display: grid; grid-template-columns: 1.5fr 1fr; gap: 28px; }
.hb-event-row { display: grid; grid-template-columns: 88px 1fr auto; gap: 18px; align-items: center; padding: 18px 22px; }
.hb-event-row + .hb-event-row { border-top: 1px solid var(--hc-hair); }
.hb-event-date { display: flex; flex-direction: column; align-items: center; justify-content: center;
                 gap: 2px; width: 88px; height: 88px; box-sizing: border-box; overflow: hidden;
                 text-align: center; border-right: 1px solid var(--hc-hair); margin-right: -22px; }
.hb-event-date--hot { background: var(--hc-brass-dim); }
.hb-event-d { font-size: 30px; line-height: 1; color: var(--hc-ink); font-weight: 600; }
.hb-event-mono { font-size: 10px; line-height: 1; letter-spacing: 1px; color: var(--hc-ink-soft); }
.hb-event-title { font-size: 16px; color: var(--hc-ink); margin-top: 4px; }
.hb-cal { padding: 22px 22px 24px; }
.hb-cal-head { display: flex; justify-content: space-between; align-items: center; }
.hb-cal-month { font-size: 22px; color: var(--hc-ink); font-weight: 600; }
.hb-cal-dow { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; font-size: 10px; letter-spacing: 1px;
              color: var(--hc-ink-soft); margin-bottom: 6px; margin-top: 14px; text-align: center; }
.hb-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.hb-cal-cell { aspect-ratio: 1 / 1; display: grid; place-items: center; font-family: "Source Serif 4", serif;
               font-size: 13px; color: var(--hc-ink); position: relative; }
.hb-cal-cell--blank { visibility: hidden; }
.hb-cal-cell--today { background: var(--hc-brass); color: var(--hc-paper); border-radius: 50%; }
.hb-cal-cell--event { border: 1px solid var(--hc-brass); }
.hb-cal-dot { position: absolute; bottom: 4px; width: 4px; height: 4px; border-radius: 2px; background: var(--hc-brass); }

/* ------ 12 Gallery ------ */
.hb-gallery { background: var(--hc-paper-alt); padding: 72px 48px; }
.hb-gallery-grid { margin-top: 32px; display: grid; grid-template-columns: 1.4fr 1fr; grid-template-rows: 300px 220px; gap: 14px; }
.hb-gallery-hero { grid-row: 1 / span 2; }
.hb-gallery-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }

/* ------ 13 Testimonials ------ */
.hb-testimonials { background: var(--hc-bg); padding: 72px 48px; }
.hb-testi-grid { margin-top: 32px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.hb-testi-card { padding: 28px 26px; display: flex; flex-direction: column; }
.hb-testi-card--ink { background: var(--hc-ink); color: var(--hc-paper); }
.hb-testi-mark { font-size: 56px; line-height: .7; font-weight: 700; color: var(--hc-brass); margin-bottom: 8px; }
.hb-testi-card--ink .hb-testi-mark { color: var(--hc-brass-dim); }
.hb-testi-text { margin: 0; font-size: 16px; line-height: 1.5; font-style: italic; text-wrap: pretty; }
.hb-testi-who { margin-top: auto; padding-top: 20px; }
.hb-testi-card--ink .hc-meta { color: rgba(245,239,226,.6); }

/* ------ 14 Faculty ------ */
.hb-faculty { background: var(--hc-paper-alt); padding: 72px 48px; }
.hb-faculty-grid { margin-top: 32px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.hb-faculty-body { padding: 20px 22px; border-top: 2px solid var(--hc-brass); }
.hb-faculty-name { font-size: 22px; color: var(--hc-ink); font-weight: 600; }
/* R10: passport-style head-and-shoulders crop, centered at the card top instead
   of a full-width band. */
.hb-phototile--passport { width: 140px; aspect-ratio: 4 / 5; height: auto !important;
                           margin: 20px auto 0; }
.hb-phototile--passport img, .hb-phototile--passport svg { object-position: top center; }
.hb-dotrule { height: 1px; margin: 14px 0; background-image: radial-gradient(circle, var(--hc-rule) 1px, transparent 1px);
              background-size: 6px 1px; background-repeat: repeat-x; }
.hb-faculty-meta { display: flex; justify-content: space-between; }

/* ------ 15 Admissions CTA ------ */
.hb-admissions { background: var(--hc-ink); color: var(--hc-paper); padding: 72px 48px; position: relative; overflow: hidden; }
.hb-adm-crest { position: absolute; right: -40px; top: -20px; opacity: .08; }
.hb-adm-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 56px; align-items: center; position: relative; }
.hb-adm-title { margin: 14px 0 0; font-size: 56px; line-height: 1.02; color: var(--hc-paper); font-weight: 600; letter-spacing: -.6px; }
.hb-adm-title em { font-style: italic; color: var(--hc-brass-dim); }
.hb-adm-body { margin: 20px 0 0; font-size: 16px; line-height: 1.55; color: rgba(245,239,226,.75); max-width: 540px; }
.hb-adm-facts { display: grid; gap: 12px; }
.hb-adm-fact { border-bottom: 1px solid rgba(245,239,226,.15); display: flex; justify-content: space-between;
               align-items: baseline; padding: 10px 0; }
.hb-adm-fact .hc-meta { color: rgba(245,239,226,.6); }
.hb-adm-fact-v { font-size: 16px; color: var(--hc-paper); }
.hb-btn-outline-paper { background: transparent; color: var(--hc-paper); border: 1px solid var(--hc-brass-dim); }

/* ------ 16 Ticker ------ */
.hb-ticker { background: var(--hc-brass-dim); color: var(--hc-ink); padding: 14px 0;
             border-top: 1px solid var(--hc-brass); border-bottom: 1px solid var(--hc-brass); overflow: hidden; position: relative; }
.hb-ticker-inner { display: flex; align-items: center; gap: 24px; padding: 0 48px; white-space: nowrap; }
.hb-ticker-badge { font-size: 10px; letter-spacing: 1.2px; padding: 4px 9px; background: var(--hc-ink); color: var(--hc-brass-dim);
                   font-weight: 700; flex-shrink: 0; }
.hb-ticker-items { display: flex; gap: 36px; font-size: 13px; animation: hb-marquee 40s linear infinite; }
.hb-ticker-tag { font-size: 10px; letter-spacing: .8px; color: var(--hc-brass); margin-right: 8px; }
@keyframes hb-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ------ 17 Video ------ */
.hb-video { background: var(--hc-bg); padding: 72px 48px; }
.hb-video-frame { margin-top: 32px; position: relative; }
.hb-video-overlay { position: absolute; inset: 0; background: rgba(14,30,54,.35); display: grid; place-items: center; }
.hb-video-play { width: 88px; height: 88px; border-radius: 50%; background: rgba(245,239,226,.95); color: var(--hc-ink);
                 display: grid; place-items: center; font-size: 28px; margin: 0 auto; cursor: pointer;
                 box-shadow: 0 8px 28px rgba(0,0,0,.3); }
.hb-video-title { font-size: 28px; margin-top: 18px; font-weight: 600; color: var(--hc-paper); }
.hb-video-corner { position: absolute; top: 14px; color: var(--hc-paper); font-family: monospace; font-size: 11px; letter-spacing: 1px; }

/* ------ 18 Newsletter ------ */
.hb-newsletter { background: var(--hc-paper-alt); padding: 72px 48px; }
.hb-nl-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 56px; align-items: center; }
.hb-nl-title { margin: 12px 0 0; font-size: 44px; line-height: 1.05; color: var(--hc-ink); font-weight: 600; letter-spacing: -.5px; }
.hb-nl-body { margin: 14px 0 0; font-size: 16px; color: var(--hc-ink-soft); line-height: 1.55; max-width: 520px; }
.hb-nl-form { background: var(--hc-paper); padding: 28px; border: 1px solid var(--hc-rule); }
.hb-nl-input { width: 100%; padding: 14px 16px; border: 1px solid var(--hc-rule); background: var(--hc-bg);
               font-family: "Source Serif 4", serif; font-size: 16px; color: var(--hc-ink); margin-bottom: 14px; }
.hb-nl-pills { display: flex; gap: 8px; margin-bottom: 18px; flex-wrap: wrap; }

/* ------ 19 Footer ------ */
.hb-footer { background: var(--hc-ink); color: var(--hc-paper); padding: 64px 48px 32px; }
.hb-footer-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr 1fr 1fr; gap: 32px; }
.hb-footer-brand { display: flex; align-items: center; gap: 12px; }
.hb-footer-name { font-size: 22px; color: var(--hc-paper); font-weight: 600; }
.hb-footer-blurb { margin-top: 16px; font-size: 14px; line-height: 1.55; color: rgba(245,239,226,.65); max-width: 280px; }
.hb-footer-col-h { color: var(--hc-brass-dim); margin-bottom: 14px; }
.hb-footer-list { margin: 0; padding: 0; list-style: none; }
.hb-footer-list li { font-size: 14px; color: rgba(245,239,226,.85); padding: 6px 0; }
.hb-footer-map { margin-top: 20px; position: relative; }
.hb-footer-pin { position: absolute; left: 40%; top: 50%; width: 14px; height: 14px; border-radius: 50%;
                 background: var(--hc-brass); border: 2px solid var(--hc-paper); box-shadow: 0 0 0 6px rgba(181,138,59,.2); }
.hb-footer-bottom { margin-top: 48px; padding-top: 22px; border-top: 1px solid rgba(245,239,226,.15);
                    display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; }
.hb-footer-social { display: flex; gap: 12px; }
.hb-footer-social span { padding: 6px 14px; border: 1px solid rgba(245,239,226,.2); color: rgba(245,239,226,.85); cursor: pointer; }

/* ------ Responsive (new blocks) ------ */
@media (max-width: 991px) {
  .hb-bday-grid, .hb-testi-grid, .hb-faculty-grid, .hb-ach-highlights { grid-template-columns: 1fr 1fr; }
  .hb-lb-grid, .hb-events-grid, .hb-news-grid, .hb-adm-grid, .hb-nl-grid { grid-template-columns: 1fr; }
  .hb-ach-counters { grid-template-columns: 1fr 1fr; }
  .hb-ach-cell + .hb-ach-cell { border-left: none; }
  .hb-gallery-grid { grid-template-columns: 1fr; grid-template-rows: auto; }
  .hb-gallery-hero { grid-row: auto; min-height: 260px; }
  .hb-footer-grid { grid-template-columns: 1fr 1fr; }
  .hb-birthdays, .hb-leaderboard, .hb-achievements, .hb-news, .hb-events, .hb-gallery,
  .hb-testimonials, .hb-faculty, .hb-admissions, .hb-video, .hb-newsletter, .hb-footer { padding-left: 20px; padding-right: 20px; }
  .hb-lb-row { grid-template-columns: 36px 40px 1fr 90px; }
  .hb-lb-note { display: none; }
}
@media (max-width: 575px) {
  .hb-bday-grid, .hb-testi-grid, .hb-faculty-grid, .hb-ach-highlights, .hb-ach-counters, .hb-footer-grid { grid-template-columns: 1fr; }
}

/* ------ Nav sign-in dropdown ------ */
.hb-nav-signin { position: relative; }
.hb-nav-signin summary { list-style: none; cursor: pointer; }
.hb-nav-signin summary::-webkit-details-marker { display: none; }
.hb-nav-signin-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 60;
                      background: var(--hc-paper); border: 1px solid var(--hc-rule);
                      box-shadow: 0 10px 30px rgba(14,30,54,.14); min-width: 190px; }
.hb-nav-signin-menu a { display: block; padding: 11px 16px; font-family: "DM Sans", sans-serif;
                        font-size: 13px; color: var(--hc-ink); text-decoration: none;
                        border-bottom: 1px solid var(--hc-hair); }
.hb-nav-signin-menu a:last-child { border-bottom: none; }
.hb-nav-signin-menu a:hover { background: var(--hc-brass-dim); }

/* ------ Accreditations strip ------ */
.hb-accred { background: var(--hc-paper); border-top: 1px solid var(--hc-rule); border-bottom: 1px solid var(--hc-rule);
             padding: 28px 48px; text-align: center; }
.hb-accred-head { margin-bottom: 16px; }
.hb-accred-row { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 40px; }
.hb-accred-item img { max-height: 54px; max-width: 150px; object-fit: contain; opacity: .85; }
.hb-accred-item img:hover { opacity: 1; }
.hb-accred-name { font-size: 15px; color: var(--hc-ink-soft); letter-spacing: .04em; }

/* ------ Shared form fields (admission / examresult / annual_calendar pages) ------ */
.hc-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; margin-bottom: 18px; }
.hc-field { display: flex; flex-direction: column; gap: 6px; }
.hc-field--wide { grid-column: 1 / -1; }
.hc-label { font-family: "DM Sans", sans-serif; font-size: 12.5px; font-weight: 600; color: var(--hc-ink);
            text-transform: uppercase; letter-spacing: .04em; }
.hc-req { color: #B3462C; margin-left: 2px; }
.hc-input, .hc-select, .hc-textarea {
    width: 100%; padding: 11px 13px; border: 1px solid var(--hc-rule); background: var(--hc-paper);
    font-family: "Source Serif 4", serif; font-size: 15px; color: var(--hc-ink); box-sizing: border-box;
}
.hc-input:focus, .hc-select:focus, .hc-textarea:focus { outline: none; border-color: var(--hc-brass); }
.hc-textarea { resize: vertical; min-height: 44px; }
.hc-file { font-family: "DM Sans", sans-serif; font-size: 13px; color: var(--hc-ink-soft); }
.hc-radio-row { display: flex; gap: 20px; flex-wrap: wrap; align-items: center; padding-top: 6px; }
.hc-radio-label { display: inline-flex; align-items: center; gap: 6px; font-family: "Source Serif 4", serif;
                   font-size: 14.5px; color: var(--hc-ink); cursor: pointer; }
.hc-check-label { display: inline-flex; align-items: center; gap: 8px; font-family: "Source Serif 4", serif;
                   font-size: 13.5px; color: var(--hc-ink-soft); cursor: pointer; margin-bottom: 8px; }
.hc-field-error { font-family: "DM Sans", sans-serif; font-size: 11.5px; color: #B3462C; min-height: 14px; }
.hc-fieldset-title { font-family: "Playfair Display", serif; font-size: 22px; font-weight: 600; color: var(--hc-ink);
                      margin: 0 0 20px; padding-bottom: 10px; border-bottom: 1px solid var(--hc-brass); }
.hc-fieldset { margin-bottom: 40px; }
.hc-alert { padding: 14px 18px; border: 1px solid var(--hc-rule); background: var(--hc-paper-alt);
            font-family: "Source Serif 4", serif; font-size: 14.5px; color: var(--hc-ink); margin-bottom: 24px; }
.hc-dialog { border: 1px solid var(--hc-rule); padding: 0; max-width: 480px; width: 90vw; background: var(--hc-paper); }
.hc-dialog::backdrop { background: rgba(14,30,54,.55); }
.hc-dialog-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 22px;
                  border-bottom: 2px solid var(--hc-brass); }
.hc-dialog-body { padding: 20px 22px; }
.hc-dialog-foot { padding: 14px 22px; border-top: 1px solid var(--hc-rule); display: flex; justify-content: flex-end; gap: 10px; }

/* Compat shim: display_onlineadmission_custom_fields() etc. emit raw
   Bootstrap grid/form markup shared app-wide — Heritage loads no Bootstrap
   CSS, so give it a minimal, scoped fallback rather than rendering unstyled. */
.hc-bs-compat { display: flex; flex-wrap: wrap; gap: 18px; margin-bottom: 4px; }
.hc-bs-compat .form-group { display: flex; flex-direction: column; gap: 6px; flex: 1 1 220px; margin: 0; }
.hc-bs-compat [class*="col-md-1"], .hc-bs-compat [class*="col-md-2"],
.hc-bs-compat [class*="col-md-3"], .hc-bs-compat [class*="col-md-4"],
.hc-bs-compat [class*="col-md-5"], .hc-bs-compat [class*="col-md-6"],
.hc-bs-compat [class*="col-md-7"], .hc-bs-compat [class*="col-md-8"],
.hc-bs-compat [class*="col-md-9"] { flex: 1 1 220px; min-width: 0; }
.hc-bs-compat [class*="col-md-12"] { flex-basis: 100%; }
.hc-bs-compat label { font-family: "DM Sans", sans-serif; font-size: 12.5px; font-weight: 600; color: var(--hc-ink);
                       text-transform: uppercase; letter-spacing: .04em; }
.hc-bs-compat .form-control { width: 100%; padding: 11px 13px; border: 1px solid var(--hc-rule); background: var(--hc-paper);
                               font-family: "Source Serif 4", serif; font-size: 15px; color: var(--hc-ink); box-sizing: border-box; }
.hc-bs-compat .text-danger { font-family: "DM Sans", sans-serif; font-size: 11.5px; color: #B3462C; }
@media (max-width: 767px) { .hb-accred { padding: 22px 20px; } .hb-accred-row { gap: 22px; } }
