
/* ══ font-fallback.css ══ */
/* ══════════════════════════════════════════════════════════════════
   SELF-HOSTED FONTS  —  Cumulative Layout Shift fix
   ══════════════════════════════════════════════════════════════════
   Previously Sora and Inter came from fonts.googleapis.com with
   display=swap. Measured effect: total page height dropped 654px the
   moment the real fonts arrived (~670ms), because the system fallback
   wraps text differently. That reflow was the entire remaining CLS on
   about.html (0.137) and why-merchant-navy.html (0.136).

   Self-hosting removes the third-party DNS + TLS + CSS round-trip, so
   the fonts are requested immediately from the same origin and are
   preloaded. font-display:optional means the browser uses the real
   font ONLY if it arrives before first paint — otherwise it keeps the
   fallback for the whole page load and NEVER swaps. Either way the
   layout is painted once.

   Trade-off, stated plainly: on a cold cache over a slow connection a
   visitor may see the fallback font for that first page view. Zero
   layout shift is worth more than guaranteeing the brand face on the
   very first paint, and from the second page view it is cached.
   ══════════════════════════════════════════════════════════════════ */

@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:optional;
  src:url('../fonts/inter-400.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:optional;
  src:url('../fonts/inter-500.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:optional;
  src:url('../fonts/inter-600.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:optional;
  src:url('../fonts/inter-700.woff2') format('woff2')}
@font-face{font-family:'Sora';font-style:normal;font-weight:600;font-display:optional;
  src:url('../fonts/sora-600.woff2') format('woff2')}
@font-face{font-family:'Sora';font-style:normal;font-weight:700;font-display:optional;
  src:url('../fonts/sora-700.woff2') format('woff2')}
@font-face{font-family:'Sora';font-style:normal;font-weight:800;font-display:optional;
  src:url('../fonts/sora-800.woff2') format('woff2')}

@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:optional;
  src:url('../fonts/jetbrains-mono-500.woff2') format('woff2')}

/* Metric-matched fallbacks, so even when the real face is skipped the
   text occupies almost the same space. Measured at 100px on canvas:
   Inter 3447 wide / Sora 3772 / Arial 3212.8. */
@font-face{font-family:'Inter Fallback';
  src:local('Arial'),local('Helvetica Neue'),local('Liberation Sans'),local('Roboto'),local('Segoe UI');
  size-adjust:107.29%;ascent-override:90.4%;descent-override:22.4%;line-gap-override:0%}
@font-face{font-family:'Sora Fallback';
  src:local('Arial'),local('Helvetica Neue'),local('Liberation Sans'),local('Roboto'),local('Segoe UI');
  size-adjust:117.41%;ascent-override:82.6%;descent-override:24.7%;line-gap-override:0%}


/* ══ header.css ══ */
/* ============================================================
   HBIMS-NAF&SA — Universal Header
   Ledger & Horizon design system · locked palette only
   Contract preserved: .hb-header #hb-header .hb-brand .hb-nav
   .hb-cta .hb-burger #hb-mob .hb-mob .hb-mob-links .hb-mob-app
   .hb-mob-apply · data-apply-modal-open · data-app-download-open
   ============================================================ */

:root{
  /* ---- locked tokens ---- */
  --hb-cream:#FCF7EA;        /* primary background */
  --hb-white:#FFFFFF;        /* panels, cards */
  --hb-editorial:#F5EAD8;    /* editorial fill */
  --hb-ink:#1D161C;          /* headings / nav */
  --hb-body:#2D2926;         /* body text */
  --hb-muted:#543C2C;        /* secondary text */
  --hb-bronze:#6E5327;       /* utility strip ground */
  --hb-gold:#E2B15D;         /* CTA gold */
  --hb-gold-hi:#EBB93F;      /* CTA gold hover */
  --hb-gold-dot:#F3D58C;     /* live dot / focus on bronze */
  --hb-burg:#7B2D26;         /* primary CTA burgundy */
  --hb-green:#2C6A47;        /* Navya live green */
  --hb-border:#ECD093;       /* soft border */
  /* ---- derived ---- */
  --hb-burg-hi:color-mix(in srgb,var(--hb-burg) 86%,#FFFFFF);
  --hb-burg-lo:color-mix(in srgb,var(--hb-burg) 82%,#000000);
  --hb-gold-lo:color-mix(in srgb,var(--hb-gold) 84%,#000000);
  --hb-bronze-40:color-mix(in srgb,var(--hb-bronze) 40%,#FFFFFF);
  --hb-hover-wash:color-mix(in srgb,var(--hb-bronze) 6%,transparent);
  --hb-shadow-ink:29,22,28;
  /* ---- type ---- */
  --hb-display:'Sora','Sora Fallback',ui-sans-serif,system-ui,sans-serif;
  --hb-text:'Inter','Inter Fallback',ui-sans-serif,system-ui,sans-serif;
  /* ---- metrics ---- */
  --hb-strip-h:40px;
  --hb-bar-h:64px;
  --hb-max:1520px;
  --hb-pad:clamp(16px,2.5vw,32px);
}

/* ---------- scoped base ---------- */
.hb-header *,.hb-header *::before,.hb-header *::after,
.hb-mob *,.hb-mob *::before,.hb-mob *::after{box-sizing:border-box;margin:0;padding:0}
.hb-header summary,.hb-mob summary{list-style:none;cursor:pointer}
.hb-header summary::-webkit-details-marker,.hb-mob summary::-webkit-details-marker{display:none}
.hb-header svg,.hb-mob svg{display:block;flex:none}
body.hb-lock{overflow:hidden}

/* ---------- skip link ---------- */
.hb-skip{position:fixed;top:-52px;left:16px;z-index:1400;background:var(--hb-burg);color:#fff;
  padding:11px 18px;border-radius:10px;font:600 14px/1 var(--hb-text);text-decoration:none;
  transition:top .2s ease}
.hb-skip:focus{top:12px}

/* ---------- fixed shell + flow spacer ---------- */
.hb-header{position:fixed;top:0;left:0;right:0;z-index:1200;
  background:linear-gradient(180deg,#FFFDF6 0%,var(--hb-cream) 42%,#F6EEDB 100%)}
.hb-header::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;
  background:linear-gradient(90deg,rgba(226,177,93,0) 0%,var(--hb-gold) 14%,var(--hb-gold) 86%,rgba(226,177,93,0) 100%)}
.hb-header::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  box-shadow:0 14px 34px -20px rgba(var(--hb-shadow-ink),.35);transition:opacity .25s ease}
.hb-header.is-scrolled::before{opacity:1}
.hb-spacer{height:var(--hb-bar-h)}

/* ============================================================
   TIER 1 · UTILITY STRIP (desktop)
   ============================================================ */
.hb-strip{display:none;color:var(--hb-cream);
  background:linear-gradient(180deg,#7B5D2D 0%,var(--hb-bronze) 55%,#5B431C 100%);
  max-height:var(--hb-strip-h);overflow:visible;position:relative;z-index:2}
.hb-strip-in{display:flex;align-items:center;justify-content:space-between;gap:18px;
  width:100%;max-width:var(--hb-max);margin:0 auto;height:var(--hb-strip-h);
  padding:0 var(--hb-pad)}
.hb-strip-l,.hb-strip-r{display:flex;align-items:center;gap:18px;min-width:0}

.hb-line{display:inline-flex;align-items:center;gap:8px;color:var(--hb-body);
  text-decoration:none;font:600 12.5px/1 var(--hb-text);letter-spacing:.01em;white-space:nowrap;
  padding:8px 15px 8px 12px;border-radius:999px;
  background:linear-gradient(180deg,#EFC97E 0%,var(--hb-gold) 55%,var(--hb-gold-lo) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 0 rgba(110,83,39,.32),
    0 8px 16px -8px rgba(0,0,0,.6);
  transition:transform .16s ease,box-shadow .16s ease}
.hb-line svg{width:14px;height:14px;color:var(--hb-burg)}
.hb-line span{color:var(--hb-muted);font-weight:600}
.hb-line strong{font-weight:700;color:var(--hb-ink)}
.hb-line:hover{transform:translateY(-1px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -2px 0 rgba(110,83,39,.3),
    0 12px 22px -9px rgba(0,0,0,.65)}

/* Ask Navya — the only green in the header */
.hb-navya{display:inline-flex;align-items:center;gap:8px;background:var(--hb-green);color:#fff;
  border-radius:999px;padding:6px 13px 6px 10px;text-decoration:none;white-space:nowrap;
  font:600 12.5px/1 var(--hb-text);letter-spacing:.01em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18);
  transition:transform .18s ease,box-shadow .18s ease}
.hb-navya:hover{transform:translateY(-1px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 8px 16px -9px rgba(44,106,71,.9)}
.hb-navya svg{width:15px;height:15px;fill:#fff}
.hb-ai{font:700 9.5px/1 var(--hb-text);letter-spacing:.09em;background:rgba(255,255,255,.16);
  padding:3px 7px;border-radius:6px}
.hb-dot{width:7px;height:7px;border-radius:50%;background:var(--hb-gold-dot);position:relative}
.hb-dot::after{content:"";position:absolute;inset:0;border-radius:50%;
  animation:hb-pulse 2s ease-out infinite}
@keyframes hb-pulse{0%{box-shadow:0 0 0 0 rgba(243,213,140,.55)}70%,100%{box-shadow:0 0 0 8px rgba(243,213,140,0)}}

.hb-chip{font:600 11.5px/1 var(--hb-text);letter-spacing:.05em;color:var(--hb-cream);
  border:1px solid rgba(252,247,234,.35);padding:5px 11px;border-radius:999px;white-space:nowrap;opacity:.92}

.hb-strip-tag{display:none;flex:1;min-width:0;text-align:center;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;font:500 12px/1 var(--hb-text);
  color:var(--hb-cream);letter-spacing:.035em;opacity:.92;padding:0 14px}

/* ============================================================
   TIER 2 · MAIN BAR
   ============================================================ */
.hb-bar{position:relative;z-index:1;display:flex;align-items:center;gap:16px;
  height:var(--hb-bar-h);max-width:var(--hb-max);margin:0 auto;padding:0 var(--hb-pad)}

/* ---- brand lockup ---- */
.hb-brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0;flex:none}
.hb-seal{position:relative;width:46px;height:46px;flex:none;border-radius:50%;
  background:var(--hb-white);border:1px solid var(--hb-border);display:grid;place-items:center;
  box-shadow:0 3px 9px -4px rgba(110,83,39,.45),inset 0 1px 0 #fff;
  transition:transform .18s ease}
.hb-brand:hover .hb-seal{transform:translateY(-1px)}
.hb-seal img{width:40px;height:40px;border-radius:50%}
.hb-seal .tm{position:absolute;top:-3px;right:-6px;font:700 7.5px/1 var(--hb-text);
  color:var(--hb-bronze);background:var(--hb-cream);border:1px solid var(--hb-border);
  border-radius:999px;padding:2px 4px;letter-spacing:.03em}
.hb-brand-txt{display:flex;flex-direction:column;min-width:0}
.hb-brand-name{display:flex;align-items:flex-start;gap:2px;white-space:nowrap;
  font:700 17px/1.1 var(--hb-display);color:var(--hb-ink);letter-spacing:.01em}
.hb-brand-name .tm{font:700 9px/1 var(--hb-text);color:var(--hb-bronze);margin-top:1px}
.hb-brand-tag{display:block;font:500 11.5px/1.3 var(--hb-text);color:var(--hb-muted);
  letter-spacing:.015em;margin-top:3px;white-space:nowrap}

/* ---- primary navigation ---- */
.hb-nav{display:none;align-items:center;gap:2px;margin:0 auto}
.hb-nav>a,.hb-nav .nav-dd>summary{position:relative;display:inline-flex;align-items:center;gap:6px;
  padding:11px 10px;border-radius:10px;text-decoration:none;white-space:nowrap;
  font:600 14px/1 var(--hb-text);color:var(--hb-ink);letter-spacing:.004em;
  transition:background .16s ease,color .16s ease}
.hb-nav>a::after,.hb-nav .nav-dd>summary::after{content:"";position:absolute;left:10px;right:10px;
  bottom:6px;height:2px;border-radius:2px;background:var(--hb-gold);
  transform:scaleX(0);transform-origin:left;transition:transform .2s ease}
.hb-nav>a:hover,.hb-nav .nav-dd>summary:hover,.hb-nav .nav-dd[open]>summary{background:var(--hb-hover-wash)}
.hb-nav>a:hover::after,.hb-nav .nav-dd>summary:hover::after,
.hb-nav .nav-dd[open]>summary::after,.hb-nav .nav-dd:focus-within>summary::after{transform:scaleX(1)}
.hb-nav>a.active{color:var(--hb-burg)}
.hb-nav>a.active::after{transform:scaleX(1);background:var(--hb-burg)}
.hb-caret{width:11px;height:11px;color:var(--hb-bronze);transition:transform .2s ease;margin-top:1px}
.nav-dd[open]>summary .hb-caret{transform:rotate(180deg)}
@media (hover:hover){.nav-dd:hover>summary .hb-caret{transform:rotate(180deg)}}

/* ---- dropdown panels ---- */
.nav-dd{position:relative}
.nav-dd-menu{position:absolute;top:calc(100% + 12px);left:50%;min-width:288px;
  transform:translate(-50%,8px);opacity:0;visibility:hidden;pointer-events:none;
  background:var(--hb-white);border:1px solid var(--hb-border);border-radius:16px;
  box-shadow:0 26px 52px -24px rgba(var(--hb-shadow-ink),.32);
  padding:10px;z-index:30;
  transition:opacity .18s ease,transform .18s ease,visibility .18s}
.nav-dd-menu::before{content:"";position:absolute;top:-13px;left:0;right:0;height:13px}
.nav-dd[open]>.nav-dd-menu,.nav-dd:focus-within>.nav-dd-menu{
  opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
@media (hover:hover){.nav-dd:hover>.nav-dd-menu{
  opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}}

.nav-dd-menu a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;
  text-decoration:none;color:var(--hb-body);font:500 14px/1.35 var(--hb-text);
  transition:background .14s ease,color .14s ease}
.nav-dd-menu a:hover{background:var(--hb-cream);color:var(--hb-ink)}
.dd-ic{width:19px;height:19px;color:var(--hb-bronze)}
.dd-sub{display:block;font:500 11.5px/1.3 var(--hb-text);color:var(--hb-muted);margin-top:2px}
.dd-n{font:600 11px/1 var(--hb-text);color:var(--hb-bronze);letter-spacing:.05em;min-width:20px}
.dd-badge{margin-left:auto;font:700 9.5px/1 var(--hb-text);letter-spacing:.07em;color:var(--hb-burg);
  background:color-mix(in srgb,var(--hb-gold) 26%,#fff);border:1px solid var(--hb-border);
  padding:3px 8px;border-radius:999px}
.dd-lead{border-bottom:1px solid var(--hb-border);border-radius:10px 10px 0 0;
  margin:-2px -2px 6px;padding:11px 12px 12px;font-weight:600;color:var(--hb-ink)}
.dd-all{margin-top:6px;border-top:1px solid var(--hb-border);padding-top:11px;
  color:var(--hb-burg);font-weight:600;justify-content:flex-start}
.dd-all svg{width:14px;height:14px;margin-left:2px}
.nav-dd-wide{min-width:584px}
.dd-cols{display:grid;grid-template-columns:1fr 1fr;gap:1px 8px}
.dd-cols a{padding:8px 10px}

/* ============================================================
   CTA CLUSTER — the three lead sources
   ============================================================ */
.hb-cta{display:flex;align-items:center;gap:10px;margin-left:auto}
.hb-btn{display:none;align-items:center;justify-content:center;gap:8px;height:44px;
  padding:0 18px;border-radius:12px;border:0;text-decoration:none;white-space:nowrap;
  font:600 14px/1 var(--hb-text);letter-spacing:.01em;cursor:pointer;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease}
.hb-btn:active{transform:translateY(1px)}
.hb-btn svg{width:17px;height:17px}

/* 3D coin ornament — engraved socket carrying each lead icon */
.hb-btn .hb-coin{width:25px;height:25px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(180deg,rgba(0,0,0,.16) 0%,rgba(0,0,0,.34) 100%);
  box-shadow:inset 0 1.5px 2px rgba(0,0,0,.45),inset 0 -1px 0 rgba(255,255,255,.22),
    0 1px 0 rgba(255,255,255,.3)}
.hb-btn .hb-coin svg{width:14px;height:14px}

/* ornament shape modifiers — matched to each action's meaning */
.hb-orn--squircle{border-radius:8px!important}
.hb-orn--shield{border-radius:0!important;box-shadow:none!important;
  clip-path:polygon(50% 0,96% 15%,96% 58%,50% 100%,4% 58%,4% 15%);
  background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(0,0,0,0) 40%),
    linear-gradient(180deg,rgba(0,0,0,.16),rgba(0,0,0,.36))!important;
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.45))}
.hb-orn--hex{border-radius:0!important;box-shadow:none!important;
  clip-path:polygon(25% 4%,75% 4%,97% 50%,75% 96%,25% 96%,3% 50%);
  background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(0,0,0,0) 40%),
    linear-gradient(180deg,rgba(0,0,0,.16),rgba(0,0,0,.36))!important;
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.45))}
.hb-orn--diamond{border-radius:5px!important;transform:rotate(45deg);
  width:21px!important;height:21px!important}
.hb-orn--diamond svg{transform:rotate(-45deg)}

.hb-btn-gold{color:var(--hb-body);
  background:linear-gradient(180deg,#EFC97E 0%,var(--hb-gold) 55%,var(--hb-gold-lo) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 0 rgba(110,83,39,.28),
    0 9px 18px -10px rgba(178,132,52,.55)}
.hb-btn-gold:hover{transform:translateY(-1px);
  background:linear-gradient(180deg,#F2CE84 0%,var(--hb-gold-hi) 55%,var(--hb-gold) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -2px 0 rgba(110,83,39,.28),
    0 13px 24px -11px rgba(178,132,52,.6)}

.hb-btn-primary{color:#fff;
  background:linear-gradient(180deg,var(--hb-burg-hi) 0%,var(--hb-burg) 58%,var(--hb-burg-lo) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 0 rgba(0,0,0,.26),
    0 11px 20px -10px rgba(123,45,38,.55);will-change:transform}
.hb-btn-primary:hover{transform:translateY(-1px);
  background:linear-gradient(180deg,color-mix(in srgb,var(--hb-burg) 78%,#fff) 0%,var(--hb-burg-hi) 58%,var(--hb-burg) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.26),inset 0 -2px 0 rgba(0,0,0,.24),
    0 15px 26px -11px rgba(123,45,38,.6)}

.hb-btn-bronze{color:var(--hb-cream);
  background:linear-gradient(180deg,#7E5F31 0%,var(--hb-bronze) 58%,#57411E 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(0,0,0,.3),
    0 10px 20px -10px rgba(110,83,39,.65)}
.hb-btn-bronze svg{color:var(--hb-gold-dot)}
.hb-btn-bronze:hover{transform:translateY(-1px);
  background:linear-gradient(180deg,#8A6A38 0%,#7A5C2C 58%,var(--hb-bronze) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 0 rgba(0,0,0,.28),
    0 14px 26px -11px rgba(110,83,39,.72)}

/* mobile-bar icon actions */
.hb-icnbtn{display:flex;align-items:center;justify-content:center;width:42px;height:42px;
  border-radius:11px;border:0;text-decoration:none;
  transition:transform .15s ease,box-shadow .15s ease;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -2px 0 rgba(0,0,0,.2),
    0 8px 14px -8px rgba(29,22,28,.55)}
.hb-icnbtn:hover{transform:translateY(-1px)}
.hb-icnbtn svg{width:19px;height:19px}
.hb-icn-call{color:var(--hb-body);
  background:linear-gradient(180deg,#EFC97E 0%,var(--hb-gold) 55%,var(--hb-gold-lo) 100%)}
.hb-icn-wa{color:#fff;
  background:linear-gradient(180deg,#35815B 0%,var(--hb-green) 55%,#224F38 100%)}
.hb-icn-wa svg{fill:#fff}

.hb-burger{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  width:44px;height:44px;border-radius:11px;border:0;cursor:pointer;
  background:linear-gradient(180deg,var(--hb-burg-hi) 0%,var(--hb-burg) 58%,var(--hb-burg-lo) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 0 rgba(0,0,0,.26),
    0 8px 14px -8px rgba(123,45,38,.6);
  transition:transform .15s ease,box-shadow .15s ease}
.hb-burger:hover{transform:translateY(-1px)}
.hb-burger span{display:block;width:18px;height:2px;border-radius:2px;background:var(--hb-cream)}

/* ============================================================
   TIER 3 · DRAWER
   ============================================================ */
.hb-mob{position:fixed;inset:0;z-index:1300;visibility:hidden;background:rgba(29,22,28,0);
  transition:background .26s ease,visibility .26s}
.hb-mob.open{visibility:visible;background:rgba(29,22,28,.38)}
.hb-mob-panel{margin-left:auto;height:100%;width:min(430px,100%);display:flex;flex-direction:column;
  background:linear-gradient(180deg,#FFFDF6 0%,var(--hb-cream) 34%,#F6EEDB 100%);
  transform:translateX(102%);
  transition:transform .3s cubic-bezier(.22,.8,.3,1);
  border-left:1px solid var(--hb-border);
  box-shadow:-28px 0 64px -34px rgba(var(--hb-shadow-ink),.5)}
.hb-mob.open .hb-mob-panel{transform:none}

.hb-mob-top{display:flex;align-items:center;gap:10px;padding:13px 16px;
  border-bottom:1px solid var(--hb-border)}
.hb-mob-top .hb-seal{width:38px;height:38px}
.hb-mob-top .hb-seal img{width:33px;height:33px}
.hb-mob-top .hb-brand-name{font-size:15px}
.hb-mob-x{margin-left:auto;width:42px;height:42px;border-radius:11px;
  border:1px solid var(--hb-border);background:var(--hb-white);color:var(--hb-ink);
  display:grid;place-items:center;cursor:pointer}
.hb-mob-x svg{width:17px;height:17px}

.hb-mob-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:10px 12px 18px;
  overscroll-behavior:contain}
.hb-mob-links{display:flex;flex-direction:column;gap:2px}
.hb-mob-links>a,.hb-mob-dd>summary{display:flex;align-items:center;gap:11px;padding:13px 12px;
  border-radius:12px;text-decoration:none;color:var(--hb-ink);
  font:600 15.5px/1.2 var(--hb-text)}
.hb-mob-links>a:hover,.hb-mob-dd>summary:hover{background:var(--hb-white)}
.hb-mob-links>a.active{color:var(--hb-burg);background:var(--hb-white)}
.hb-mob-dd>summary .hb-caret{margin-left:auto;width:13px;height:13px}
.hb-mob-dd{border-radius:12px}
.hb-mob-dd[open]{background:var(--hb-white);box-shadow:inset 0 0 0 1px var(--hb-border)}
.hb-mob-dd[open]>summary .hb-caret{transform:rotate(180deg)}
.hb-mob-dd-menu{display:flex;flex-direction:column;padding:2px 6px 8px}
.hb-mob-dd-menu a{display:flex;align-items:center;gap:9px;padding:10px 10px 10px 18px;
  border-radius:9px;text-decoration:none;color:var(--hb-body);font:500 14.5px/1.35 var(--hb-text)}
.hb-mob-dd-menu a:hover{background:var(--hb-cream)}
.hb-mob-dd-menu a.active{color:var(--hb-burg)}
.hb-mob-dd-menu .dd-sub{font-size:11px}

.hb-mob-contact{display:grid;gap:8px;margin:12px 2px 2px}
.hb-row{display:flex;align-items:center;gap:12px;padding:12px 13px;border-radius:12px;
  border:1px solid var(--hb-border);background:var(--hb-white);text-decoration:none;
  color:var(--hb-ink);font:600 14px/1.25 var(--hb-text)}
.hb-row svg{width:19px;height:19px;color:var(--hb-bronze)}
.hb-row small{display:block;font:500 12px/1.3 var(--hb-text);color:var(--hb-muted);margin-top:2px}
.hb-row-navya{background:var(--hb-green);border-color:var(--hb-green);color:#fff}
.hb-row-navya svg{fill:#fff;color:#fff}
.hb-row-navya small{color:rgba(255,255,255,.85)}
.hb-row-navya .hb-dot{margin-left:auto}

.hb-mob-ctas{display:grid;gap:9px;padding:13px 16px calc(15px + env(safe-area-inset-bottom));
  border-top:1px solid var(--hb-border);background:var(--hb-cream)}
.hb-mob-ctas .hb-btn{display:flex;width:100%;height:48px;font-size:15px}

/* ============================================================
   SCROLL CONDENSE — CSS scroll-driven, JS fallback class
   ============================================================ */
@media (min-width:1024px){
  .hb-header.is-scrolled .hb-strip{max-height:0;opacity:0;overflow:hidden}
  .hb-strip{transition:max-height .28s ease,opacity .22s ease}
}
@supports (animation-timeline: scroll()){
  @media (min-width:1024px) and (prefers-reduced-motion:no-preference){
    .hb-strip{animation:hb-strip-out linear both;animation-timeline:scroll(root);
      animation-range:0px 140px}
  }
  @media (prefers-reduced-motion:no-preference){
    .hb-header::before{animation:hb-elev linear both;animation-timeline:scroll(root);
      animation-range:0px 140px}
  }
}
@keyframes hb-strip-out{to{max-height:0;opacity:0;overflow:hidden}}
@keyframes hb-elev{to{opacity:1}}

/* ============================================================
   FOCUS · MOTION SAFETY
   ============================================================ */
.hb-header :focus-visible,.hb-mob :focus-visible{outline:2px solid var(--hb-burg);outline-offset:2px}
.hb-strip :focus-visible{outline-color:var(--hb-gold-dot)}
.hb-skip:focus-visible{outline:2px solid var(--hb-gold-dot);outline-offset:2px}

@media (prefers-reduced-motion:reduce){
  .hb-header *,.hb-header *::before,.hb-header *::after,
  .hb-mob *,.hb-mob *::before,.hb-mob *::after{
    animation:none!important;transition-duration:.01ms!important}
  .hb-dot::after{display:none}
}

/* ============================================================
   RESPONSIVE LADDER — verified fit at every band
   <1024 mobile bar · 1024–1359 trio + burger · ≥1360 full nav
   ============================================================ */
@media (max-width:599px){.hb-brand-tag{display:none}}
@media (max-width:379px){.hb-icnbtn,.hb-burger{width:40px;height:40px}}
@media (max-width:359px){.hb-brand-name{font-size:15px}}
@media (max-width:349px){.hb-icn-call{display:none}}

@media (min-width:1024px){
  .hb-strip{display:block}
  .hb-spacer{height:calc(var(--hb-strip-h) + 72px)}
  .hb-header{--hb-bar-h:72px}
  .hb-btn{display:inline-flex}
  .hb-icnbtn{display:none}
}
@media (min-width:1400px){
  .hb-nav{display:flex}
  .hb-burger{display:none}
  .hb-brand-tag{display:none}      /* tagline moves to the strip centre */
  .hb-strip-tag{display:block}
  .hb-brand-name{font-size:16px}
  .hb-nav>a,.hb-nav .nav-dd>summary{padding:11px 8px;font-size:13.5px}
  .hb-nav>a::after,.hb-nav .nav-dd>summary::after{left:8px;right:8px}
  #hb-header .hb-btn{height:42px;padding:0 12px;font-size:13.5px;gap:7px}
  #hb-header .hb-btn svg{width:15px;height:15px}
  #hb-header .hb-btn .hb-coin{width:22px;height:22px}
  #hb-header .hb-btn .hb-coin svg{width:12.5px;height:12.5px}
  #hb-header .hb-btn .hb-orn--diamond{width:18px!important;height:18px!important}
  .hb-cta{gap:6px}
  .hb-bar{gap:14px}
}
/* narrow slice — App button condenses to its icon; text returns at 1440 */
@media (min-width:1360px) and (max-width:1439px){
  #hb-header .hb-btn-bronze span:not(.hb-coin){display:none}
  #hb-header .hb-btn-bronze{width:42px;padding:0}
}

/* ── FIX · header clipped between 1281px and 1580px ────────────────
   The horizontal nav appeared at 1360px but the full bar (brand + nav +
   3 CTAs + 2 icon buttons) did not fit until ~1580px, so the right-hand
   controls were cut off the viewport on most laptop widths.
   The App button now stays icon-only, and nav/CTA spacing tightens,
   right up to 1579px. Nothing is hidden — everything fits. */
@media (min-width:1360px) and (max-width:1599px){
  #hb-header .hb-btn-bronze span:not(.hb-coin), #hb-header .hb-btn--bronze span:not(.hb-coin),
  #hb-header .pg-app span:not(.hb-coin){display:none}
  #hb-header .hb-btn-bronze, #hb-header .hb-btn--bronze{width:42px;padding:0;justify-content:center}
  .hb-nav{gap:0}
  .hb-nav>a,.hb-nav .nav-dd>summary{padding:11px 6px;font-size:13px}
  .hb-nav>a::after,.hb-nav .nav-dd>summary::after{left:6px;right:6px}
  #hb-header .hb-btn{height:40px;padding:0 10px;font-size:13px;gap:6px}
  .hb-cta{gap:5px}
  .hb-bar{gap:10px}
}

/* ── FIX · two remaining pinch points ──
   1024–1100px: three full CTAs + burger overflow. App button condenses.
   ≤380px: brand name + three icon buttons overflow. Icons shrink. */
@media (min-width:1024px) and (max-width:1140px){
  #hb-header .hb-btn-bronze span:not(.hb-coin), #hb-header .hb-btn--bronze span:not(.hb-coin),
  #hb-header .pg-app span:not(.hb-coin){display:none}
  #hb-header .hb-btn-bronze, #hb-header .hb-btn--bronze{width:42px;padding:0;justify-content:center}
  #hb-header .hb-btn{padding:0 12px;font-size:13.2px}
  .hb-bar{gap:10px}
}
@media (max-width:399px){
  .hb-icnbtn,.hb-burger{width:38px;height:38px}
  .hb-bar{gap:6px}
  .hb-brand-name{font-size:14.5px}
}
@media (max-width:340px){
  .hb-icn-wa{display:none}          /* WhatsApp also reachable in the drawer */
  .hb-brand-name{font-size:13.5px}
  .hb-icnbtn,.hb-burger{width:36px;height:36px}
}
@media (max-width:330px){.hb-brand-tag,.hb-icn-call{display:none}.hb-brand-name{font-size:12.5px}}


/* ══ buttons.css ══ */
/* ============================================================
   HBIMS-NAF&SA — CANONICAL BUTTON SYSTEM
   Single source of truth. Loads AFTER header.css so it wins.

   Fixes two system faults:

   1 · MOBILE VISIBILITY BUG
       header.css sets `.hb-btn{display:none}` for the HEADER's CTA
       cluster and only re-enables it at min-width:1024px. But every
       page-body CTA uses the same .hb-btn class, so 151 buttons across
       35 pages were invisible below 1024px — phones and tablets.
       Fixed by scoping visibility to page content (main/footer/modals)
       and leaving the header's own hide-until-1024 behaviour intact.

   2 · TWO NAMING CONVENTIONS
       index.html uses BEM double-dash (.hb-btn--gold); the other 71
       pages use single-dash (.hb-btn-gold). Both are aliased here to
       one definition so the whole site renders identically.
   ============================================================ */

/* ---- 1 · visibility restored for page content ---- */
main .hb-btn,
footer .hb-btn,
.hb-ft .hb-btn,
apply-modal .hb-btn,
app-download-modal .hb-btn,
.ab-cta-row .hb-btn,
.hb-final__ctas .hb-btn,
.cs-hero .hb-btn,
.pg-hero .hb-btn,
.up-hero .hb-btn,
.cf-hero .hb-btn,
.dg-hero .hb-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

/* ---- 2 · base plate ---- */
main .hb-btn,
footer .hb-btn{
  position:relative;
  gap:9px;
  min-height:46px;
  padding:0 21px;
  border:0;
  border-radius:12px;
  text-decoration:none;
  white-space:nowrap;
  font:700 13.6px/1 var(--hb-text,'Inter','Inter Fallback',system-ui,sans-serif);
  letter-spacing:.005em;
  cursor:pointer;
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
main .hb-btn:hover,
footer .hb-btn:hover{ transform:translateY(-2px); filter:brightness(1.05); }
main .hb-btn:active,
footer .hb-btn:active{ transform:translateY(1px); }
main .hb-btn:focus-visible,
footer .hb-btn:focus-visible{
  outline:3px solid var(--hb-gold,#E2B15D);
  outline-offset:3px;
}
main .hb-btn[disabled]{ opacity:.45; pointer-events:none; transform:none; }

/* ---- 3 · variants — both naming conventions aliased ---- */

/* PRIMARY — burgundy. The only approved primary CTA colour. */
.hb-btn-primary, .hb-btn--primary, .btn-red{
  color:#FCF7EA;
  background:linear-gradient(180deg,#8C3B32 0%,#7B2D26 58%,#5A1F1A 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),
             inset 0 -2px 0 rgba(0,0,0,.3),
             0 10px 20px -10px rgba(90,31,26,.68);
}
.hb-btn-primary:hover, .hb-btn--primary:hover{ color:#FCF7EA; }

/* SECONDARY — gold. Never the primary action (fails contrast on bronze). */
.hb-btn-gold, .hb-btn--gold, .btn-gold{
  color:#3F2F10;
  background:linear-gradient(180deg,#F0CE83 0%,#E2B15D 55%,#C89440 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),
             inset 0 -2px 0 rgba(0,0,0,.17),
             0 10px 18px -10px rgba(143,106,46,.6);
  text-shadow:0 1px 0 rgba(255,255,255,.45);
}
.hb-btn-gold:hover, .hb-btn--gold:hover{ color:#3F2F10; }

/* APP — bronze */
.hb-btn-bronze, .hb-btn--bronze, .pg-app{
  color:#FCF7EA;
  background:linear-gradient(180deg,#8A6A38 0%,#6E5327 58%,#4A3714 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),
             inset 0 -2px 0 rgba(0,0,0,.3),
             0 10px 18px -10px rgba(74,55,20,.62);
}
.hb-btn-bronze:hover, .hb-btn--bronze:hover, .pg-app:hover{ color:#FCF7EA; }

/* STUDENT DESK — green */
.hb-btn-green, .hb-btn--green, .cs-desk{
  color:#fff;
  background:linear-gradient(180deg,#35815B 0%,#2C6A47 55%,#224F38 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),
             inset 0 -2px 0 rgba(0,0,0,.28),
             0 10px 18px -9px rgba(44,106,71,.58);
}
.hb-btn-green:hover, .hb-btn--green:hover, .cs-desk:hover{ color:#fff; }

/* GHOST on dark grounds */
.hb-btn-ghost, .hb-btn--ghost, .pg-ghost, .hb-btn--outline-inverse{
  color:#F3D58C;
  background:rgba(252,247,234,.08);
  box-shadow:inset 0 0 0 1.5px rgba(226,177,93,.45);
}
.hb-btn-ghost:hover, .hb-btn--ghost:hover, .pg-ghost:hover{
  color:#F3D58C; box-shadow:inset 0 0 0 1.5px var(--hb-gold,#E2B15D);
}

/* OUTLINE on light grounds */
.hb-btn-outline, .hb-btn--outline, .hb-btn--tertiary{
  color:#7B2D26;
  background:linear-gradient(180deg,#FFFDF6,#F6EEDB);
  box-shadow:inset 0 0 0 1.5px rgba(123,45,38,.32),
             0 8px 16px -10px rgba(29,22,28,.32);
}
.hb-btn-outline:hover, .hb-btn--outline:hover{ color:#7B2D26; }

/* ---- 4 · sizes ---- */
main .hb-btn-sm, main .hb-btn--sm{ min-height:40px; padding:0 16px; font-size:12.4px; }
main .hb-btn-lg, main .hb-btn--lg{ min-height:56px; padding:0 30px; font-size:15px; }
main .hb-btn-block, main .hb-btn--block{ width:100%; }

/* ---- 5 · the coin ornament that carries each button's symbol ---- */
main .hb-btn .hb-coin,
footer .hb-btn .hb-coin{
  display:grid; place-items:center; flex:none;
  width:26px; height:26px; border-radius:50%;
  background:linear-gradient(180deg,rgba(0,0,0,.14) 0%,rgba(0,0,0,.32) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.26),
             inset 0 -1px 2px rgba(0,0,0,.34);
}
main .hb-btn .hb-coin img,
main .hb-btn .hb-coin svg,
footer .hb-btn .hb-coin img{ width:15px; height:15px; }

/* ---- 6 · responsive: CTA rows stack cleanly, buttons stay tappable ---- */
.ab-cta-row{ display:flex; flex-wrap:wrap; gap:12px; }
@media (max-width:640px){
  .ab-cta-row{ flex-direction:column; align-items:stretch; }
  .ab-cta-row .hb-btn{ width:100%; min-height:50px; }   /* 50px ≥ 44px tap target */
  main .hb-btn{ white-space:normal; text-align:center; line-height:1.25; padding:12px 18px; }
}

/* ---- 7 · table header symbols ---- */
.cs-table thead th .hb-th-ic,
.lg-table thead th .hb-th-ic,
.ac-table thead th .hb-th-ic{
  width:18px; height:18px; flex:none;
  margin-right:8px; vertical-align:-3px;
  opacity:.92;
}
.cs-table thead th:has(.hb-th-ic){ white-space:nowrap; }
@media (max-width:560px){
  .cs-table thead th .hb-th-ic{ width:15px; height:15px; margin-right:6px; }
}

/* ============================================================
   FIX A · HEADER CTA CLUSTER MUST STAY COMPACT ON MOBILE
   index.html declares a global `.hb-btn{display:inline-flex}` inline,
   which overrides header.css's mobile hide. Result: the header's full
   CTA pills ("Get the App" etc.) rendered on phones and overflowed the
   viewport — visible on the homepage only.
   These selectors are more specific than a bare `.hb-btn`, so they win
   regardless of source order, on every page including index.
   ============================================================ */
.hb-header .hb-act .hb-btn,
#hb-header .hb-act .hb-btn{ display:none !important; }
@media (min-width:1024px){
  .hb-header .hb-act .hb-btn,
  #hb-header .hb-act .hb-btn{ display:inline-flex !important; }
}
/* the compact icon buttons (call / WhatsApp / burger) always show */
.hb-header .hb-icnbtn,
.hb-header .hb-burger{ display:grid; }

/* ============================================================
   FIX B · GHOST BUTTON CONTRAST
   .pg-ghost was defined gold-on-translucent for DARK grounds, but it is
   also used inside light cards (.pg-gpcta) where gold on cream fails
   contrast badly. Default is now a light-ground-safe burgundy outline;
   the gold treatment applies only on dark grounds.
   ============================================================ */
.pg-ghost, .hb-btn-ghost, .hb-btn--ghost{
  color:#7B2D26;
  background:linear-gradient(180deg,#FFFDF6,#F6EEDB);
  box-shadow:inset 0 0 0 1.5px rgba(123,45,38,.34),
             0 8px 16px -10px rgba(29,22,28,.3);
}
.pg-ghost:hover, .hb-btn-ghost:hover, .hb-btn--ghost:hover{
  color:#7B2D26; box-shadow:inset 0 0 0 2px rgba(123,45,38,.55);
}
.ab--dark .pg-ghost, .pg-hero .pg-ghost, .cs-hero .pg-ghost,
.up-hero .pg-ghost, .cf-hero .pg-ghost, .dg-hero .pg-ghost,
.ab--dark .hb-btn-ghost, .ab--dark .hb-btn--ghost{
  color:#F3D58C;
  background:rgba(252,247,234,.08);
  box-shadow:inset 0 0 0 1.5px rgba(226,177,93,.45);
}
/* the coin on a ghost button needs a light-ground treatment too */
.pg-ghost .hb-coin{
  background:linear-gradient(180deg,rgba(123,45,38,.1),rgba(123,45,38,.2));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}
.ab--dark .pg-ghost .hb-coin, .pg-hero .pg-ghost .hb-coin{
  background:linear-gradient(180deg,rgba(0,0,0,.14),rgba(0,0,0,.32));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.26);
}

/* ============================================================
   FIX C · MOBILE CONTENT OPTIMISATION
   Tighter type, tighter gutters, no horizontal overflow.
   ============================================================ */
@media (max-width:640px){
  .ab-wrap, .hb-sitemap__in{ width:min(100%,92vw); }
  main p, .cs-body p, .up-prose p{ font-size:14.8px; line-height:1.72; }
  .ab-title{ font-size:clamp(21px,5.6vw,27px); line-height:1.2; }
  .ab-sec{ padding-block:clamp(30px,7vw,44px); }
  .ab-checks li{ font-size:13.6px; line-height:1.6; }
  .cs-table, .lg-table{ min-width:0; font-size:13px; }
  .cs-table th, .cs-table td{ padding:10px 12px; }
  .cs-tablewrap{ margin-inline:-4vw; padding-inline:4vw; }
  .cf-card, .up-card, .pg-card, .pg-hl{ padding:20px 18px; }
  main img, main figure, main table{ max-width:100%; }
  .ab-explore a, .cs-chip{ font-size:12.4px; }
}
@media (max-width:400px){
  .ab-title{ font-size:20px; }
  main .hb-btn{ font-size:12.8px; padding:12px 14px; }
  main .hb-btn .hb-coin{ width:22px; height:22px; }
  main .hb-btn .hb-coin img{ width:13px; height:13px; }
}
/* nothing may cause a sideways scroll */
html, body{ overflow-x:hidden; }

/* ============================================================
   ONE HERO LAW — every page uses the about-pattern light hero.
   The former dark-hero photographs live on as framed bands.
   ============================================================ */
.ab-hero-band{max-width:1080px;margin:26px auto 6px;border-radius:22px;overflow:hidden;
  border:1.5px solid #D9A64C;
  box-shadow:0 30px 58px -34px rgba(29,22,28,.45),inset 0 1px 0 rgba(255,255,255,.6)}
.ab-hero-band img{display:block;width:100%;height:auto;aspect-ratio:5/2;object-fit:cover;object-position:50% 32%}
@media (max-width:660px){.ab-hero-band img{aspect-ratio:16/10}}
/* legacy hero inner classes neutralised on the light ground */
.ab-hero .cs-deck,.ab-hero .pg-deck,.ab-hero .up-exc,.ab-hero .dg-deck,.ab-hero .cf-sub{
  color:var(--hb-body,#4A3A2A)}
.ab-hero .up-meta{justify-content:center}
.ab-hero .up-meta li{background:#F6EEDB;border:1px solid rgba(110,83,39,.3);color:#4A3A2A}
.ab-hero .dg-jump a{background:#FFFDF6;border:1.5px solid rgba(176,133,66,.55);color:#6E5327}
.ab-hero .dg-jump a:hover{background:#F6EEDB;border-color:#B08542}
.ab-hero .cf-promise{background:linear-gradient(180deg,#FFFDF6,#F6EEDB);
  border:1.5px solid rgba(226,177,93,.55);backdrop-filter:none;-webkit-backdrop-filter:none}
.ab-hero .cf-promise p{color:var(--hb-ink,#1D161C)}
.ab-hero .cf-promise .k{color:#6E5327}
.ab-hero .ab-cta-row{justify-content:center;margin-top:22px}

/* ============================================================
   ONE TABLE SKIN — homepage (hb-etable) colours on every table.
   Wrap-scoped selectors so they outrank the per-family stylesheets
   regardless of load order.
   ============================================================ */
.cs-tablewrap,.lg-tablewrap,.ac-tablewrap{border-radius:18px;overflow:auto;
  background:#FFFDF6;
  box-shadow:0 18px 38px -26px rgba(29,22,28,.35),inset 0 0 0 1px rgba(110,83,39,.28)}
.cs-tablewrap .cs-table,.lg-tablewrap .lg-table,.ac-tablewrap .ac-table{
  width:100%;border-collapse:collapse;min-width:520px;background:transparent}
.cs-tablewrap .cs-table thead th,.lg-tablewrap .lg-table thead th,.ac-tablewrap .ac-table thead th{
  font:700 11px/1.35 var(--hb-text,'Inter');letter-spacing:.1em;text-transform:uppercase;
  color:#6B5B4A;background:#F6EEDB;
  padding:10px 18px;text-align:left;border-bottom:1px solid rgba(110,83,39,.22)}
.cs-tablewrap .cs-table td,.cs-tablewrap .cs-table tbody th,
.lg-tablewrap .lg-table td,.lg-tablewrap .lg-table tbody th,
.ac-tablewrap .ac-table td,.ac-tablewrap .ac-table tbody th{
  padding:11px 18px;text-align:left;font-size:13.6px;line-height:1.5;
  background:transparent;
  border-bottom:1px solid rgba(110,83,39,.14)}
.cs-tablewrap .cs-table tbody th,.lg-tablewrap .lg-table tbody th,.ac-tablewrap .ac-table tbody th{
  font-weight:700;color:var(--hb-ink,#1D161C)}
.cs-tablewrap .cs-table td,.lg-tablewrap .lg-table td,.ac-tablewrap .ac-table td{
  font-family:var(--hb-font-mono,'JetBrains Mono',ui-monospace,monospace);
  font-weight:500;font-size:12.8px;color:#7B2D26}
.cs-tablewrap .cs-table tbody tr:nth-child(odd) td,
.cs-tablewrap .cs-table tbody tr:nth-child(odd) th,
.lg-tablewrap .lg-table tbody tr:nth-child(odd) td,
.lg-tablewrap .lg-table tbody tr:nth-child(odd) th{background:transparent}
.cs-tablewrap .cs-table tbody tr:last-child th,.cs-tablewrap .cs-table tbody tr:last-child td,
.lg-tablewrap .lg-table tbody tr:last-child th,.lg-tablewrap .lg-table tbody tr:last-child td,
.ac-tablewrap .ac-table tbody tr:last-child th,.ac-tablewrap .ac-table tbody tr:last-child td{border-bottom:0}
.cs-tablewrap .cs-table tbody tr:hover th,.cs-tablewrap .cs-table tbody tr:hover td,
.lg-tablewrap .lg-table tbody tr:hover th,.lg-tablewrap .lg-table tbody tr:hover td,
.ac-tablewrap .ac-table tbody tr:hover th,.ac-tablewrap .ac-table tbody tr:hover td{background:#F9F2E0}
.cs-tablewrap .cs-table thead th .hb-th-ic{vertical-align:-3px}

/* related-links rows must wrap — was forcing a 1527px line on campus */
.ab-explore{display:flex;flex-wrap:wrap;justify-content:center;
  column-gap:10px;row-gap:10px;white-space:normal}
.ab-explore a{white-space:nowrap}
/* zebra lives on the tr in some families — flatten it under the one skin */
.cs-tablewrap .cs-table tbody tr,.lg-tablewrap .lg-table tbody tr,
.ac-tablewrap .ac-table tbody tr{background:transparent}

/* ── FIX · variants hoisted out of index.html's inline <style> ──
   hbx-brass / hbx-bronze / hbx-green / hbx-ink existed ONLY inside
   index.html. Any other page using them rendered a button with NO
   background — gold text floating on parchment. Defined once here so
   every page that loads buttons.css gets them. */
.hb-btn.hbx-brass{color:#1D161C;background:linear-gradient(180deg,#D9B26A,#B08542 55%,#8F6A2E);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.42),inset 0 -2px 0 rgba(0,0,0,.24),0 10px 18px -9px rgba(143,106,46,.6)}
.hb-btn.hbx-brass:hover{color:#1D161C}
.hb-btn.hbx-bronze{color:#FCF7EA;background:linear-gradient(180deg,#7E5F31,#6E5327 58%,#57411E);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(0,0,0,.3),0 10px 18px -9px rgba(110,83,39,.65)}
.hb-btn.hbx-bronze:hover{color:#FCF7EA}
.hb-btn.hbx-green{color:#fff;background:linear-gradient(180deg,#35815B,#2C6A47 55%,#224F38);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -2px 0 rgba(0,0,0,.28),0 10px 18px -9px rgba(44,106,71,.58)}
.hb-btn.hbx-green:hover{color:#fff}
.hb-btn.hbx-ink{color:#F3D58C;border:1px solid rgba(226,177,93,.42);
  background:linear-gradient(180deg,#332A30,#1D161C 58%,#0E090C);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 -2px 0 rgba(0,0,0,.42),0 10px 18px -9px rgba(29,22,28,.6)}
.hb-btn.hbx-ink:hover{color:#F3D58C}

/* ── FIX · screen-reader-only utility, hoisted from index.html ──
   .hb-sr was defined ONLY inside index.html's inline <style>. Any other
   page using it rendered the hidden caption as visible body text. */
.hb-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* ── Trademark mark — global styling ──
   ™ is applied at assertion points only (headings, hero lede, callouts,
   buttons, table heads) — first mention per element, not every mention.
   Header/footer brand lockups keep their own sizing. */
sup.tm{font:700 .52em/1 var(--hb-text,Inter,sans-serif);
  vertical-align:super;letter-spacing:.02em;margin-left:.12em;
  opacity:.82;text-transform:none}
h1 sup.tm,h2 sup.tm{opacity:.75}
.hb-btn sup.tm{font-size:.55em;opacity:.8}
th sup.tm,caption sup.tm{font-size:.62em}

/* ── CLS · width/height attributes establish ASPECT RATIO, never used height ──
   Every <img> now carries intrinsic width/height so the browser can reserve
   space before load (Cumulative Layout Shift). But where CSS sets a width and
   no height, the HTML height attribute would otherwise become the USED height
   and blow the layout out.

   :where() has ZERO specificity, so this yields to any real CSS height rule
   while still neutralising the attribute everywhere else. Do not raise its
   specificity — that would override intentional fixed-height images. */
:where(img[width][height]){height:auto}
/* Aspect-ratio frames own their own height — restore it above the guard.
   .hb-frame sets aspect-ratio on the figure; its child image must fill it. */
.hb-frame>img,.hb-frame>svg,.hb-frame>picture>img{height:100%}

/* ══ SHARED CTA MOTION ══════════════════════════════════════════════
   The sheen sweep from the app-download card.
   EXCLUDED from the header and the mobile drawer: those buttons sit in a
   dense cluster where a moving highlight reads as noise rather than
   polish, and the owner asked for them to stay exactly as they were.
   Colour is never touched anywhere — only the motion is shared. */
.hb-act,.footer-apply-btn{position:relative;overflow:hidden}
main .hb-btn,footer .hb-btn,.appdl-in .hb-btn{position:relative;overflow:hidden}
main .hb-btn::after,footer .hb-btn::after,.hb-act::after{content:"";position:absolute;
  top:0;left:-32%;width:34%;height:100%;transform:skewX(-19deg);pointer-events:none;z-index:2;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);
  transition:left .55s cubic-bezier(.3,.7,.3,1)}
main .hb-btn:hover::after,footer .hb-btn:hover::after,.hb-act:hover::after,
main .hb-btn:focus-visible::after,footer .hb-btn:focus-visible::after,
.hb-act:focus-visible::after{left:118%}
main .hb-btn>*,footer .hb-btn>*,.hb-act>*{position:relative;z-index:3}
/* header + drawer: no sheen, no clipping — restored to their original state */
#hb-header .hb-btn,#hb-mob .hb-btn{overflow:visible}
#hb-header .hb-btn::after,#hb-mob .hb-btn::after{display:none}
@media (prefers-reduced-motion:reduce){
  main .hb-btn::after,footer .hb-btn::after,.hb-act::after{display:none}
}

/* ── Tablet band: two homepage grid CTAs clipped their own labels ──
   "Check Eligibility Now" needed 210px inside a 174px grid column and
   "Download the App" needed 200px. Trim the horizontal padding and let
   the label wrap rather than be cut off. Scoped to page content, so the
   header cluster is untouched. Colours and heights unchanged. */
@media (min-width:701px) and (max-width:900px){
  main .hb-btn{padding-left:12px;padding-right:12px;font-size:14px;
    white-space:normal;line-height:1.2;text-align:center;min-height:44px;height:auto}
  main .hb-btn .hb-coin{flex:none}
}

/* ── Card-as-link ──────────────────────────────────────────────────
   Homepage cards were <div>/<article> with @click="window.location".
   A JS click handler is invisible to keyboards, screen readers and
   crawlers, and blocks middle-click / open-in-new-tab. They are now
   real anchors. This keeps them looking exactly as before. */
/* NOTE: no display here — .hb-card is display:flex with a gap, and
   forcing block collapsed three homepage sections by 216px. */
.hb-card--link{text-decoration:none;color:inherit;cursor:pointer}
.hb-card--link *{text-decoration:none}
.hb-card--link:hover,.hb-card--link:focus{color:inherit}
.hb-card--link:focus-visible{outline:3px solid var(--hb-gold,#E2B15D);outline-offset:3px}


/* ══ footer.css ══ */
/* ============================================================
   HBIMS-NAF&SA — Universal Footer · "Evening Watch"
   Ledger & Horizon system · dark ground bookend to the header
   Reuses header button system (.hb-btn / -gold / -primary / -bronze)
   Preserved hooks: <footer> element (fix-link), .footer-apply-btn,
   .tooltip / .tooltip__item
   ============================================================ */

:root{
  --hb-cream:#FCF7EA; --hb-white:#FFFFFF; --hb-editorial:#F5EAD8;
  --hb-ink:#1D161C; --hb-body:#2D2926; --hb-muted:#543C2C;
  --hb-bronze:#6E5327; --hb-gold:#E2B15D; --hb-gold-hi:#EBB93F;
  --hb-gold-dot:#F3D58C; --hb-burg:#7B2D26; --hb-green:#2C6A47;
  --hb-border:#ECD093;
  --hb-burg-hi:color-mix(in srgb,var(--hb-burg) 86%,#FFFFFF);
  --hb-burg-lo:color-mix(in srgb,var(--hb-burg) 82%,#000000);
  --hb-gold-lo:color-mix(in srgb,var(--hb-gold) 84%,#000000);
  --hb-display:'Sora','Sora Fallback',ui-sans-serif,system-ui,sans-serif;
  --hb-text:'Inter','Inter Fallback',ui-sans-serif,system-ui,sans-serif;
  --hb-max:1520px; --hb-pad:clamp(16px,2.5vw,32px);
  --ft-hair:rgba(236,208,147,.18);
  --ft-cream-hi:rgba(252,247,234,.92);
  --ft-cream:rgba(252,247,234,.8);
  --ft-cream-lo:rgba(252,247,234,.62);
  --ft-cream-dim:rgba(252,247,234,.5);
}

/* ---------- ground ---------- */
.hb-ft{position:relative;overflow:hidden;color:var(--ft-cream);
  font-family:var(--hb-text);
  background:linear-gradient(180deg,#271D23 0%,#1D161C 44%,#15100F 100%)}
.hb-ft::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,rgba(226,177,93,0) 0%,var(--hb-gold) 14%,var(--hb-gold) 86%,rgba(226,177,93,0) 100%)}
.hb-ft *,.hb-ft *::before,.hb-ft *::after{box-sizing:border-box;margin:0;padding:0}
.hb-ft svg{display:block;flex:none}
.hb-ft-wrap{position:relative;max-width:var(--hb-max);margin:0 auto;padding:0 var(--hb-pad)}
.hb-ft-mark{position:absolute;right:-80px;top:110px;width:360px;height:360px;
  opacity:.05;pointer-events:none}
.hb-ft-mark svg{width:100%;height:100%;stroke:var(--hb-cream)}

/* ============================================================
   Z1 · LEAD BAND — the three lead sources, in sequence
   ============================================================ */
.hb-ft-lead{display:flex;align-items:center;justify-content:space-between;gap:22px;
  flex-wrap:wrap;padding:30px 0 26px;border-bottom:1px solid var(--ft-hair)}
.hb-ft-kicker{font:700 10.5px/1 var(--hb-text);letter-spacing:.18em;
  text-transform:uppercase;color:var(--hb-gold)}
.hb-ft-lead-title{font:700 clamp(20px,2.3vw,26px)/1.25 var(--hb-display);
  color:var(--ft-cream-hi);margin-top:8px}
.hb-ft-ctas{display:flex;gap:10px;flex-wrap:wrap}
.hb-ft .hb-btn{display:inline-flex;height:46px;font-size:14px;padding:0 18px;gap:9px}
.hb-ft .hb-btn .hb-coin{width:26px;height:26px}
.hb-ft .hb-btn .hb-coin svg{width:15px;height:15px}

/* ============================================================
   Z2 · MAIN GRID — brand column + categorical sitemap
   ============================================================ */
.hb-ft-grid{display:grid;grid-template-columns:minmax(270px,1.15fr) 2.9fr;gap:44px;
  padding:36px 0 32px;align-items:start}

/* ---- brand column ---- */
.hb-ft-id{display:flex;align-items:center;gap:13px;text-decoration:none}
.hb-ft-seal{position:relative;width:56px;height:56px;flex:none;border-radius:50%;
  background:#fff;display:grid;place-items:center;
  box-shadow:0 0 0 3px rgba(226,177,93,.85),0 0 0 8px rgba(226,177,93,.18),
    0 16px 30px -14px rgba(0,0,0,.85)}
.hb-ft-seal img{width:49px;height:49px;border-radius:50%}
.hb-ft-name{font:700 19px/1.15 var(--hb-display);color:var(--ft-cream-hi);
  letter-spacing:.01em;display:flex;gap:2px}
.hb-ft-name .tm{font:700 9.5px/1 var(--hb-text);color:var(--hb-gold);margin-top:2px}
.hb-ft-tagline{display:block;font:500 11.5px/1.35 var(--hb-text);
  color:var(--ft-cream-lo);letter-spacing:.02em;margin-top:4px}
.hb-ft-about{font:500 13.5px/1.66 var(--hb-text);color:var(--ft-cream);
  margin:15px 0 0;max-width:44ch}
















/* ---- link columns ---- */
.hb-ft-cols{display:grid;grid-template-columns:repeat(4,1fr);
  gap:26px 20px;align-content:start}
.hb-ft-h{display:flex;align-items:center;gap:9px;margin-bottom:13px;
  font:700 11px/1 var(--hb-text);letter-spacing:.15em;text-transform:uppercase;
  color:var(--hb-gold)}
.hb-ft-hic{width:25px;height:25px;flex:none;border-radius:8px;display:grid;place-items:center;
  background:linear-gradient(180deg,#8A6A38 0%,var(--hb-bronze) 58%,#4A3714 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),inset 0 -1px 0 rgba(0,0,0,.45),
    0 6px 12px -6px rgba(0,0,0,.7)}
.hb-ft-hic svg{width:14px;height:14px;color:var(--hb-gold-dot)}
.hb-ft-col a{position:relative;display:flex;align-items:center;gap:9px;
  padding:5px 0 5px 2px;font:500 13.5px/1.4 var(--hb-text);
  color:var(--ft-cream);text-decoration:none;transition:color .15s ease}
.hb-ft-col a::before{content:"";width:5px;height:5px;flex:none;
  border-top:1.7px solid var(--hb-gold);border-right:1.7px solid var(--hb-gold);
  transform:rotate(45deg);opacity:.65;transition:transform .18s ease,opacity .15s ease}
.hb-ft-col a:hover{color:var(--hb-gold-dot)}
.hb-ft-col a:hover::before{transform:rotate(45deg) translate(2px,-2px);opacity:1}
.hb-ft-badge{margin-left:6px;font:700 8.5px/1 var(--hb-text);letter-spacing:.08em;
  color:var(--hb-gold);background:rgba(226,177,93,.14);
  border:1px solid rgba(226,177,93,.4);padding:3px 6px;border-radius:999px}

/* ============================================================
   Z3 · CONNECT — social presence + app
   ============================================================ */
.hb-ft-connect{display:flex;align-items:center;justify-content:space-between;gap:26px;
  flex-wrap:wrap;padding:20px 0;border-top:1px solid var(--ft-hair)}
.hb-ft-lbl{font:700 10.5px/1 var(--hb-text);letter-spacing:.16em;text-transform:uppercase;
  color:var(--ft-cream-lo);margin-bottom:11px}
.hb-ft-socials{display:flex;gap:10px;flex-wrap:wrap}
.hb-ft-soc{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;
  color:#fff;text-decoration:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -2px 0 rgba(0,0,0,.32),
    0 10px 18px -9px rgba(0,0,0,.75);
  transition:transform .16s ease,box-shadow .16s ease}
.hb-ft-soc:hover{transform:translateY(-2px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34),inset 0 -2px 0 rgba(0,0,0,.3),
    0 15px 26px -10px rgba(0,0,0,.8)}
.hb-ft-soc svg{width:20px;height:20px;fill:#fff}
.hb-ft-soc--fb{background:linear-gradient(180deg,#3F92FF 0%,#1877F2 55%,#0E56C4 100%)}
.hb-ft-soc--ig{background:linear-gradient(135deg,#F9A13A 0%,#F55D3E 28%,#DD2A7B 55%,#8134AF 80%,#515BD4 100%)}
.hb-ft-soc--yt{background:linear-gradient(180deg,#FF4A5C 0%,#FF0033 55%,#C20026 100%)}
.hb-ft-soc--wa{background:linear-gradient(180deg,#3DDB70 0%,#25D366 55%,#189B4B 100%)}

.hb-ft-stores{display:flex;gap:10px;flex-wrap:wrap}
.hb-ft-store{display:flex;align-items:center;justify-content:center;gap:10px;height:52px;
  padding:0 18px;border-radius:13px;color:#fff;text-decoration:none;text-align:left;
  transition:transform .16s ease,box-shadow .16s ease}
.hb-ft-store:hover{transform:translateY(-2px)}
.hb-ft-store svg{width:21px;height:21px;fill:#fff}
.hb-ft-store small{display:block;font:600 8.5px/1 var(--hb-text);letter-spacing:.09em;
  text-transform:uppercase;opacity:.8;margin-bottom:3px}
.hb-ft-store b{display:block;font:700 13.5px/1 var(--hb-text)}
.hb-ft-store--play{background:linear-gradient(180deg,#35815B 0%,var(--hb-green) 55%,#224F38 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -2px 0 rgba(0,0,0,.3),
    0 11px 20px -9px rgba(0,0,0,.7)}
.hb-ft-store--ios{
  /* White icon + label, as requested. White on the earlier brass (#E2B15D)
     measured 1.97:1 — an outright accessibility fail — so the fill is
     deepened to the bronze token. White now reads at 7.17:1 (WCAG AA), and
     bronze still separates from the near-black footer at 2.47:1, comparable
     to the green Play badge's 2.75:1. */
  background:linear-gradient(180deg,#8A6A38 0%,var(--hb-bronze,#6E5327) 55%,#4A3714 100%);
  color:#FFFFFF;
  border:1px solid rgba(243,213,140,.42);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),inset 0 -2px 0 rgba(0,0,0,.3),
    0 11px 20px -9px rgba(0,0,0,.7)}
.hb-ft-store--ios svg{fill:#FFFFFF}
.hb-ft-store--ios small{color:#FFFFFF;opacity:.82}
.hb-ft-store--ios strong{color:#FFFFFF}
.hb-ft-store--ios:hover{border-color:rgba(243,213,140,.72);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -2px 0 rgba(0,0,0,.28),
    0 16px 28px -10px rgba(0,0,0,.8)}

/* ============================================================
   Z4 · LEGAL
   ============================================================ */
.hb-ft-legal{border-top:1px solid var(--ft-hair);padding:16px 0 24px}
.hb-ft-legalrow{display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap}
.hb-ft-copy{font:500 12.5px/1.5 var(--hb-text);color:var(--ft-cream-lo)}
.hb-ft-law{display:flex;gap:18px;flex-wrap:wrap}
.hb-ft-law a{display:inline-flex;align-items:center;gap:7px;
  font:600 13px/1 var(--hb-text);color:var(--ft-cream);text-decoration:none;
  transition:color .15s ease}
.hb-ft-law a svg{width:15px;height:15px;color:var(--hb-gold-dot)}
.hb-ft-law a:hover{color:var(--hb-gold-dot)}
.hb-ft-top{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;
  color:var(--hb-body);cursor:pointer;border:0;text-decoration:none;
  background:linear-gradient(180deg,#EFC97E 0%,var(--hb-gold) 55%,var(--hb-gold-lo) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -2px 0 rgba(110,83,39,.35),
    0 10px 18px -9px rgba(0,0,0,.7);
  transition:transform .16s ease}
.hb-ft-top:hover{transform:translateY(-2px)}
.hb-ft-top svg{width:17px;height:17px}
.hb-ft-note{margin:14px auto 0;max-width:1000px;text-align:center;
  font:500 11.5px/1.75 var(--hb-text);color:var(--ft-cream-dim)}
.hb-ft-note a{color:var(--ft-cream-lo);text-decoration:underline;text-underline-offset:2px}
.hb-ft-note a:hover{color:var(--hb-gold-dot)}

/* ============================================================
   FLOATING ELIGIBILITY FAB (legacy hooks preserved)
   ============================================================ */
.tooltip{position:fixed;right:18px;bottom:18px;z-index:1100}
.footer-apply-btn{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;
  text-decoration:none;position:relative;padding:0;
  /* Burgundy well with a polished gold rim — the primary-CTA colour, so the
     floating action reads as the same promise as every "Apply Now" button.
     Gold-on-parchment was too low-contrast against the page background. */
  background:radial-gradient(120% 120% at 32% 22%,#9A4038 0%,#7B2D26 42%,#4E1A16 100%);
  box-shadow:
    inset 0 0 0 2.5px rgba(226,177,93,.92),
    inset 0 2px 0 rgba(255,255,255,.22),
    inset 0 -3px 6px rgba(0,0,0,.42),
    0 6px 14px -4px rgba(78,26,22,.55),
    0 18px 34px -12px rgba(78,26,22,.75);
  transition:transform .22s cubic-bezier(.2,.7,.3,1),box-shadow .22s ease}
.footer-apply-btn::after{content:"";position:absolute;inset:-5px;border-radius:50%;
  background:radial-gradient(circle,rgba(226,177,93,.42) 0%,rgba(226,177,93,0) 68%);
  opacity:0;transition:opacity .22s ease;pointer-events:none}
.footer-apply-btn img{width:44px;height:44px;display:block;
  filter:drop-shadow(0 2px 3px rgba(0,0,0,.45))}
.footer-apply-btn:hover{transform:translateY(-3px) scale(1.04);
  box-shadow:
    inset 0 0 0 2.5px rgba(243,213,140,1),
    inset 0 2px 0 rgba(255,255,255,.28),
    inset 0 -3px 6px rgba(0,0,0,.4),
    0 8px 18px -4px rgba(78,26,22,.6),
    0 26px 46px -14px rgba(78,26,22,.85)}
.footer-apply-btn:hover::after{opacity:1}
.footer-apply-btn svg{width:25px;height:25px}
.tooltip__item{position:absolute;right:calc(100% + 12px);top:50%;
  transform:translateY(-50%) translateX(6px);white-space:nowrap;
  background:#FFFDF6;color:var(--hb-ink);font:600 12.5px/1 var(--hb-text);
  padding:9px 13px;border-radius:10px;border:1px solid var(--hb-border);
  box-shadow:0 14px 26px -12px rgba(29,22,28,.5);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .18s ease,transform .18s ease,visibility .18s}
.tooltip:hover .tooltip__item,.tooltip:focus-within .tooltip__item{
  opacity:1;visibility:visible;transform:translateY(-50%) translateX(0)}

/* ============================================================
   FOCUS · MOTION · RESPONSIVE
   ============================================================ */
.hb-ft :focus-visible{outline:2px solid var(--hb-gold-dot);outline-offset:2px}
.footer-apply-btn:focus-visible{outline:2px solid var(--hb-burg);outline-offset:3px}

@media (prefers-reduced-motion:reduce){
  .hb-ft *,.hb-ft *::before,.hb-ft *::after,.tooltip *{
    transition-duration:.01ms!important;animation:none!important}
}

@media (max-width:1140px){
  .hb-ft-grid{grid-template-columns:1fr;gap:30px}
  .hb-ft-cols{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
  .hb-ft-mark{width:260px;height:260px;top:auto;bottom:200px}
}
@media (max-width:760px){
  .hb-ft-mark{display:none}
  /* lead — centred stack */
  .hb-ft-lead{flex-direction:column;align-items:center;text-align:center;gap:16px}
  .hb-ft-ctas{width:100%;display:grid;grid-template-columns:1fr;gap:9px}
  .hb-ft-ctas .hb-btn{width:100%}
  /* brand — centred */
  .hb-ft-brand{text-align:center}
  .hb-ft-id{justify-content:center}
  .hb-ft-about{margin-inline:auto}
  /* links — strict two-up, both halves filled */
  .hb-ft-cols{grid-template-columns:repeat(2,1fr);gap:22px 16px}
  /* connect — centred */
  .hb-ft-connect{flex-direction:column;align-items:center;gap:20px;text-align:center}
  .hb-ft-lbl{margin-bottom:9px}
  .hb-ft-socials{justify-content:center}
  .hb-ft-stores{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .hb-ft-store{width:100%}
  /* legal — centred */
  .hb-ft-legalrow{flex-direction:column;align-items:center;gap:12px}
  .hb-ft-law{justify-content:center}
  .hb-ft-note{text-align:center}
}
@media (max-width:400px){
  .hb-ft-stores{grid-template-columns:1fr}
  .tooltip{right:14px;bottom:14px}
  .footer-apply-btn{width:50px;height:50px}
}
@media print{.tooltip{display:none}}

/* ── policy links relocated beneath the compliance note ──────────────
   The three policy links previously sat in the legal row beside the
   copyright. They now close the footer, directly under the trademark
   and compliance paragraph. */
.hb-ft-law--under{
  display:flex;
  gap:18px 26px;
  flex-wrap:wrap;
  justify-content:center;
  margin:16px auto 0;
  padding-top:16px;
  border-top:1px solid rgba(226,177,93,.22);
  max-width:760px;
}
.hb-ft-law--under a{
  display:inline-flex;
  align-items:center;
  gap:7px;
  font:600 12.4px/1 var(--hb-text);
  letter-spacing:.02em;
  text-decoration:none;
}
@media (max-width:560px){
  .hb-ft-law--under{gap:12px 18px;padding-top:14px}
  .hb-ft-law--under a{font-size:11.8px}
}


/* ══ modal.css ══ */
/* ============ APPLY MODAL ============ */
@keyframes modalFadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes modalPopupIn {
  from {
    opacity: 0;
    transform: scale(0.92) translateY(20px);
  }

  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@keyframes modalPulse {

  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }

  50% {
    opacity: 0.6;
    transform: scale(0.8);
  }
}

.popup-ovl {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(7, 20, 39, 0.85);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  padding: 16px;
  animation: modalFadeIn 0.3s ease;
}

.popup-ovl.active {
  display: flex;
}

.popup-card {
  background: #ffffff;
  border: 1px solid rgba(7, 20, 39, 0.08);
  border-radius: 28px;
  padding: 38px 30px;
  max-width: 440px;
  width: 100%;
  position: relative;
  max-height: 92vh;
  overflow-y: auto;
  color: #111827;
  box-shadow: 0 34px 90px rgba(7, 20, 39, 0.28);
  animation: modalPopupIn 0.4s ease;
}

.popup-close {
  position: absolute;
  top: 14px;
  right: 14px;
  background: rgba(248, 244, 236, 0.08);
  border: none;
  color: #8a98a8;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.3s;
  display: flex;
  align-items: center;
  justify-content: center;
}

.popup-close:hover {
  background: #C89B2C;
  color: #F8F4EC;
  transform: rotate(90deg);
}

.popup-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  background: rgba(31, 78, 168, 0.08);
  border: 1px solid rgba(31, 78, 168, 0.2);
  border-radius: 20px;
  font-size: 0.62rem;
  color: #1F4EA8;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-weight: 700;
  margin-bottom: 14px;
}

.popup-eyebrow-dot {
  width: 6px;
  height: 6px;
  background: #1F4EA8;
  border-radius: 50%;
  animation: modalPulse 1.5s ease infinite;
}

.popup-title {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.4rem;
  font-weight: 700;
  color: #071427;
  line-height: 1.15;
  margin-bottom: 6px;
}

.popup-title em {
  font-style: italic;
  color: #B11217;
}

.popup-sub {
  color: #5a6b7e;
  font-size: 0.78rem;
  margin-bottom: 20px;
}

.popup-card input,
.popup-card select,
.popup-card select#p-dob-year,
.popup-card select#p-dob-month,
.popup-card select#p-dob-day {
  width: 100%;
  padding: 13px 14px;
  background: #F7F9FC;
  border: 1.5px solid #E3E8EF;
  border-radius: 12px;
  color: #111827;
  font-family: 'Sora','Sora Fallback',sans-serif;
  font-size: 0.85rem;
  outline: none;
  transition: all 0.3s;
}

.popup-card input::placeholder {
  color: #9aa6b4;
}

.popup-card input:focus,
.popup-card select:focus {
  border-color: #1F4EA8;
  box-shadow: 0 0 0 4px rgba(31, 78, 168, 0.13);
}

.popup-card select {
  cursor: pointer;
}

.popup-card option {
  background: #fff;
  color: #111827;
}

.popup-card input.field-invalid,
.popup-card select.field-invalid,
.apply-page-form input.field-invalid,
.apply-page-form select.field-invalid,
.cpf input.field-invalid,
.cpf select.field-invalid {
  border-color: #B11217;
  box-shadow: 0 0 0 3px rgba(177, 18, 23, 0.12);
}

.popup-grid2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.popup-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.popup-btn {
  width: 100%;
  padding: 14px 22px;
  background: linear-gradient(135deg, #B11217, #d8262c);
  color: #fff;
  border: none;
  border-radius: 24px;
  font-family: 'Sora','Sora Fallback',sans-serif;
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  cursor: pointer;
  transition: all 0.3s;
  box-shadow: 0 10px 24px rgba(177, 18, 23, 0.3);
  margin-top: 4px;
}

.popup-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(177, 18, 23, 0.4);
}

.popup-consent {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  cursor: pointer;
  margin-top: 4px;
}

.popup-consent input {
  width: auto;
  min-width: 14px;
  height: 14px;
  accent-color: #C89B2C;
  margin-top: 3px;
  cursor: pointer;
}

.popup-consent span {
  color: #5a6b7e;
  font-size: 0.66rem;
  line-height: 1.55;
}

.popup-consent a {
  color: #C89B2C;
  text-decoration: underline;
}

.popup-field-error {
  display: none;
  font-size: 0.72rem;
  color: #B11217;
  margin-top: 4px;
  line-height: 1.35;
  font-weight: 500;
}

.popup-field-error.visible {
  display: block;
}

.popup-age-ok {
  font-size: 0.78rem;
  color: #1F4EA8;
  font-weight: 600;
  margin-top: 6px;
  line-height: 1.3;
}

/* ============ APP DOWNLOAD MODAL ============ */


/* ══ about.css ══ */
/* ============================================================
   HBIMS-NAF&SA — About page · Ledger & Horizon
   Relies on header.css/footer.css components; tokens re-declared
   for load-order safety.
   ============================================================ */
:root{
  --hb-cream:#FCF7EA;--hb-white:#fff;--hb-editorial:#F5EAD8;--hb-ink:#1D161C;
  --hb-body:#2D2926;--hb-muted:#543C2C;--hb-bronze:#6E5327;--hb-gold:#E2B15D;
  --hb-gold-hi:#EBB93F;--hb-gold-dot:#F3D58C;--hb-burg:#7B2D26;--hb-green:#2C6A47;
  --hb-border:#ECD093;
  --hb-display:'Sora','Sora Fallback',ui-sans-serif,system-ui,sans-serif;
  --hb-text:'Inter','Inter Fallback',ui-sans-serif,system-ui,sans-serif;
  --ab-dark:linear-gradient(165deg,#2E2129 0%,#1D161C 46%,#4A231E 100%);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--hb-cream);color:var(--hb-body);
  font:500 15.5px/1.7 var(--hb-text)}
img,svg{display:block}
a{color:var(--hb-burg)}
strong{color:var(--hb-ink)}

.ab-wrap{max-width:1180px;margin:0 auto;padding:0 clamp(16px,3vw,36px)}
.ab-narrow{max-width:900px;margin:0 auto}
.ab-sec{padding:clamp(52px,7vw,82px) 0;position:relative}
.ab--paper{background:linear-gradient(180deg,#FFFDF6,var(--hb-cream))}
.ab--sand{background:var(--hb-editorial)}
.ab--gold{background:linear-gradient(180deg,#FBF2DA,#F3E4B8)}
.ab--rose{background:linear-gradient(180deg,#FAF0EC,#F3DDD5)}
.ab--green{background:linear-gradient(180deg,#EDF4EF,#DCEBE1)}
.ab--dark{background:var(--ab-dark);color:rgba(252,247,234,.86)}
.ab--dark strong{color:var(--hb-gold-dot)}

/* ---------- section head (system pattern) ---------- */
.ab-shead{text-align:center;max-width:880px;margin:0 auto clamp(28px,4vw,44px)}
.ab-eyebrow{display:inline-flex;align-items:center;gap:8px;
  font:700 11px/1 var(--hb-text);letter-spacing:.15em;text-transform:uppercase;
  color:#4A3714;background:linear-gradient(180deg,#F5DA96,#E9C169);
  border:1px solid var(--hb-border);padding:9px 15px;border-radius:12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65),inset 0 -1px 0 rgba(110,83,39,.25),
    0 5px 12px -7px rgba(110,83,39,.55)}
.ab-eyebrow svg{width:15px;height:15px;color:var(--hb-burg)}
.ab-title{font:700 clamp(25px,3.2vw,37px)/1.16 var(--hb-display);color:var(--hb-ink);
  letter-spacing:-.012em;margin:16px 0 0}
.ab-title em{font-style:normal;color:var(--hb-burg)}
.ab--dark .ab-title{color:#FCF7EA}
.ab--dark .ab-title em{color:var(--hb-gold-dot)}
.ab-lede{font:500 15px/1.68 var(--hb-text);color:var(--hb-muted);max-width:66ch;margin:12px auto 0}
.ab--dark .ab-lede{color:rgba(252,247,234,.78)}
.ab-rule{width:210px;height:2px;border:0;margin:20px auto 0;
  background:linear-gradient(90deg,transparent,var(--hb-gold) 18%,var(--hb-gold) 82%,transparent)}

/* ---------- hero ---------- */
.ab-hero{padding:clamp(44px,6vw,66px) 0 clamp(40px,5vw,58px);text-align:center;
  background:linear-gradient(180deg,#FFFDF6,var(--hb-cream) 55%,#F7EFDC)}
.ab-crumb{font:600 11.5px/1 var(--hb-text);letter-spacing:.05em;color:var(--hb-muted);margin:0 0 18px}
.ab-crumb a{color:var(--hb-bronze);text-decoration:none}
.ab-crumb a:hover{color:var(--hb-burg)}
.ab-h1{font:800 clamp(30px,4.4vw,50px)/1.08 var(--hb-display);color:var(--hb-ink);
  letter-spacing:-.02em;margin:14px 0 10px}
.ab-sub{font:700 clamp(16px,2vw,21px)/1.4 var(--hb-display);color:var(--hb-muted);margin:0 auto;max-width:22em}
.ab-sub .ax{color:var(--hb-burg)}
.ab-hero .ab-lede{margin-top:18px}
.ab-purpose{max-width:900px;margin:26px auto 0;padding:20px 26px 22px;border-radius:16px;
  background:var(--ab-dark);position:relative;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 22px 40px -22px rgba(0,0,0,.65)}
.ab-purpose::after{content:"";position:absolute;left:24px;right:24px;bottom:-1px;height:2px;
  background:linear-gradient(90deg,transparent,var(--hb-gold) 20%,var(--hb-gold) 80%,transparent)}
.ab-purpose p{margin:0;font:700 clamp(15.5px,1.8vw,19px)/1.5 var(--hb-display);color:var(--hb-gold-dot)}
.ab-purpose .k{display:block;font:700 10.5px/1 var(--hb-text);letter-spacing:.18em;
  text-transform:uppercase;color:rgba(252,247,234,.8);margin-bottom:9px}

/* ---------- generic cards ---------- */
.ab-card{position:relative;background:linear-gradient(180deg,#FFFDF6,var(--hb-cream) 58%,#F6EEDB);
  border:1px solid var(--hb-border);border-radius:20px;
  padding:clamp(20px,3vw,30px);box-shadow:0 22px 44px -26px rgba(29,22,28,.28),inset 0 1px 0 #fff}
.ab-card--rose{background:linear-gradient(180deg,#FAEDEA,#F3DBD5)}
.ab-card--gold{background:linear-gradient(180deg,#FBF2DA,#F1DFAF)}
.ab-card--dark{background:var(--ab-dark);border-color:rgba(226,177,93,.48);color:rgba(252,247,234,.86);
  box-shadow:0 28px 54px -28px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.08)}
.ab-card--dark strong{color:var(--hb-gold-dot)}
.ab-card h3{font:700 19px/1.3 var(--hb-display);color:var(--hb-ink);margin:0 0 10px;
  display:flex;align-items:center;gap:11px}
.ab-card--dark h3{color:#FCF7EA}
.ab-med{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(180deg,#8A6A38 0%,var(--hb-bronze) 58%,#4A3714 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),inset 0 -1px 0 rgba(0,0,0,.45),
    0 7px 12px -6px rgba(0,0,0,.55)}
.ab-med svg{width:18px;height:18px;color:var(--hb-gold-dot)}
.ab-med--burg{background:radial-gradient(circle at 35% 30%,#8C3B32,var(--hb-burg) 55%,#5A1F1A)}
.ab-med--green{background:linear-gradient(180deg,#35815B,var(--hb-green) 58%,#224F38)}
.ab-med--gold{background:radial-gradient(circle at 35% 30%,#F3D58C,var(--hb-gold) 55%,#B08542)}
.ab-med--gold svg{color:#4A3714}
.ab-duo{display:grid;grid-template-columns:1fr 1fr;gap:22px}

/* ---------- lists ---------- */
.ab-checks{list-style:none;margin:14px 0 0;padding:0;display:grid;
  grid-template-columns:1fr 1fr;gap:8px 26px}
.ab-checks li{position:relative;padding-left:26px;font:500 14.5px/1.55 var(--hb-text)}
.ab-checks li::before{content:"";position:absolute;left:2px;top:.5em;width:10px;height:5px;
  border-left:2.2px solid var(--hb-green);border-bottom:2.2px solid var(--hb-green);
  transform:rotate(-45deg)}
.ab-checks--gold li{color:rgba(252,247,234,.88)}
.ab-checks--gold li::before{border-color:var(--hb-gold-dot)}
.ab-checks--one{grid-template-columns:1fr}
.ab-x{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}
.ab-x li{position:relative;padding-left:26px;font:500 14.5px/1.55 var(--hb-text)}
.ab-x li::before,.ab-x li::after{content:"";position:absolute;left:3px;top:.62em;width:11px;height:2.2px;
  border-radius:2px;background:var(--hb-burg)}
.ab-x li::before{transform:rotate(45deg)}
.ab-x li::after{transform:rotate(-45deg)}
.ab-q{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:9px 24px}
.ab-q li{position:relative;padding-left:26px;font:600 14.5px/1.5 var(--hb-text);color:var(--hb-ink)}
.ab-q li::before{content:"";position:absolute;left:2px;top:.45em;width:10px;height:10px;
  transform:rotate(45deg);border-radius:2.5px;
  background:radial-gradient(circle at 35% 30%,#F3D58C,var(--hb-gold) 55%,#B08542);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.5),inset 0 -1px 1px rgba(0,0,0,.3)}
.ab-litany{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:10px;justify-items:center}
.ab-litany li{position:relative;padding-left:24px;font:600 16px/1.5 var(--hb-display);color:#FCF7EA}
.ab-litany li::before{content:"";position:absolute;left:0;top:.5em;width:9px;height:9px;
  transform:rotate(45deg);border-radius:2px;
  background:radial-gradient(circle at 35% 30%,#F3D58C,var(--hb-gold) 55%,#B08542)}

/* ---------- stats ---------- */
.ab-stats{display:flex;gap:16px;flex-wrap:wrap;margin-top:20px}
.ab-stat{flex:1;min-width:190px;position:relative;padding:20px 20px 16px;border-radius:18px;
  border:1px solid var(--hb-border);background:linear-gradient(180deg,#FFFDF6,#F6EEDB);
  box-shadow:0 18px 36px -24px rgba(29,22,28,.3),inset 0 1px 0 #fff}
.ab-stat::after{content:"";position:absolute;top:-11px;left:20px;width:22px;height:22px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#F3D58C,var(--hb-gold) 55%,#B08542);
  box-shadow:inset 0 2px 3px rgba(255,255,255,.55),inset 0 -2px 3px rgba(0,0,0,.3),
    0 5px 10px -4px rgba(29,22,28,.45)}
.ab-stat b{display:block;font:800 30px/1 var(--hb-display);color:var(--hb-burg)}
.ab-stat span{display:block;margin-top:7px;font:700 11px/1.4 var(--hb-text);
  letter-spacing:.08em;text-transform:uppercase;color:var(--hb-muted)}

/* ---------- promise (posted-notice mini) ---------- */
.ab-notice{position:relative;border-radius:22px;border:1.5px solid #D9A64C;
  background:linear-gradient(180deg,#FFFDF6,var(--hb-cream) 52%,#F6EEDB);
  padding:54px 28px 34px;box-shadow:0 30px 58px -30px rgba(29,22,28,.38),inset 0 1px 0 #fff}
.ab-notice::before{content:"";position:absolute;inset:-8px;border:1px solid var(--hb-border);
  border-radius:28px;pointer-events:none}
.ab-notice-band{border-radius:16px;padding:18px 22px 20px;text-align:center;position:relative;
  background:var(--ab-dark);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),
    0 18px 34px -20px rgba(0,0,0,.7);margin-bottom:20px}
.ab-notice-band::after{content:"";position:absolute;left:22px;right:22px;bottom:-1px;height:2px;
  background:linear-gradient(90deg,transparent,var(--hb-gold) 20%,var(--hb-gold) 80%,transparent)}
.ab-notice-band .k{font:700 11px/1 var(--hb-text);letter-spacing:.17em;text-transform:uppercase;
  color:rgba(252,247,234,.82);display:block;margin-bottom:10px}
.ab-notice-band p{margin:0;font:800 clamp(15px,1.9vw,19px)/1.55 var(--hb-display);color:var(--hb-gold-dot)}
.ab-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:6px 0 0}
.ab-chips li{list-style:none;display:inline-flex;align-items:center;gap:8px;padding:8px 14px;
  border-radius:999px;font:700 13px/1 var(--hb-text);color:#3F2F10;
  background:linear-gradient(180deg,#F0CE83,var(--hb-gold) 58%,#C89440);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 0 rgba(110,83,39,.32),
    0 7px 14px -8px rgba(110,83,39,.55)}
.ab-chips li::before{content:"";width:9px;height:5px;border-left:2.2px solid var(--hb-burg);
  border-bottom:2.2px solid var(--hb-burg);transform:rotate(-45deg);margin-top:-2px}
.ab-notice .ab-small{margin:18px auto 0;max-width:74ch;text-align:center;
  font:500 12.5px/1.7 var(--hb-text);color:var(--hb-muted)}

/* ---------- quote plate ---------- */
.ab-quote{max-width:820px;margin:0 auto 26px;text-align:center;border-radius:16px;
  background:var(--ab-dark);padding:18px 24px 20px;position:relative;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 20px 36px -22px rgba(0,0,0,.65)}
.ab-quote::after{content:"";position:absolute;left:22px;right:22px;bottom:-1px;height:2px;
  background:linear-gradient(90deg,transparent,var(--hb-gold) 20%,var(--hb-gold) 80%,transparent)}
.ab-quote p{margin:0;font:800 clamp(17px,2.2vw,23px)/1.35 var(--hb-display);color:var(--hb-gold-dot)}

/* ---------- course chips + explore ---------- */
.ab-courses{display:flex;flex-wrap:wrap;justify-content:center;gap:11px;margin:0;padding:0;list-style:none}
.ab-courses a{display:inline-flex;align-items:center;gap:9px;padding:11px 17px;border-radius:999px;
  border:1px solid var(--hb-border);text-decoration:none;white-space:nowrap;
  background:linear-gradient(180deg,#FFFDF6,var(--hb-cream) 60%,#F4EBD6);
  font:600 13.5px/1 var(--hb-text);color:var(--hb-ink);
  box-shadow:0 10px 20px -12px rgba(29,22,28,.28),inset 0 1px 0 #fff;
  transition:transform .15s ease,border-color .15s ease}
.ab-courses a:hover{transform:translateY(-2px);border-color:#B08542}
.ab-courses a::before{content:"";width:9px;height:9px;transform:rotate(45deg);border-radius:2px;
  background:radial-gradient(circle at 35% 30%,#F3D58C,var(--hb-gold) 55%,#B08542)}
.ab-explore{margin:22px 0 0;text-align:center;font:600 13.5px/2 var(--hb-text)}
.ab-explore a{color:var(--hb-burg);text-decoration:none;border-bottom:1.5px solid rgba(123,45,38,.35);
  margin:0 9px;white-space:nowrap}
.ab-explore a:hover{border-color:var(--hb-burg)}

/* ---------- app band ---------- */
.ab-stores{display:flex;gap:10px;flex-wrap:wrap}
.ab-appbtns{display:grid;gap:12px}

/* ---------- final message ---------- */
.ab-finalmsg{max-width:760px;margin:0 auto;text-align:center}
.ab-finalmsg .lead{font:700 17px/1.5 var(--hb-display);color:var(--hb-ink);margin:0 0 16px}
.ab-finalmsg .ab-x{display:inline-grid;text-align:left;margin-bottom:14px}
.ab-enter{font:800 clamp(17px,2.2vw,22px)/1.4 var(--hb-display);color:var(--hb-green);margin:6px 0 10px}
.ab-finalmsg .close{font:600 15px/1.6 var(--hb-text);color:var(--hb-muted);margin:0}

/* ---------- CTA bands ---------- */
.ab-cta{text-align:center}
.ab-cta .k{font:700 10.5px/1 var(--hb-text);letter-spacing:.18em;text-transform:uppercase;
  color:var(--hb-gold);display:block;margin-bottom:12px}
.ab-cta h2{font:700 clamp(21px,2.8vw,30px)/1.3 var(--hb-display);color:#FCF7EA;margin:0 auto 22px;max-width:24em}
.ab-cta-row{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.ab-cta .ab-explore{margin-top:20px}
.ab-cta .ab-explore a{color:var(--hb-gold-dot);border-color:rgba(243,213,140,.4)}
.ab-cta .hb-btn{display:inline-flex;height:48px;font-size:14.5px;padding:0 20px}

/* ---------- fine print ---------- */
.ab-fine{max-width:980px;margin:0 auto;text-align:center;
  font:500 12px/1.75 var(--hb-text);color:var(--hb-muted)}

/* ---------- media & set-pieces ---------- */
/* — benchmark page opening — */
.ab-eyebrow--crest{gap:10px;padding:10px 18px 10px 12px;border-radius:14px;
  font-size:12px;letter-spacing:.17em}
.ab-crestic{width:26px;height:28px;filter:drop-shadow(0 2px 2.5px rgba(110,83,39,.45))}

.ab-emblem svg{width:100%;height:auto}
.ab-hasmark{overflow:hidden}
.ab-mark{position:absolute;right:-70px;top:40px;width:320px;height:320px;opacity:.05;pointer-events:none}
.ab-mark svg{width:100%;height:100%;stroke:var(--hb-cream)}

.ab-2030{display:grid;grid-template-columns:1fr 1.05fr;gap:34px;align-items:center;max-width:1080px;margin:0 auto}
.ab-2030 .ab-chips{justify-content:flex-start;padding:0}
.ab-scenecard{margin:0;border-radius:20px;overflow:hidden;border:1px solid rgba(226,177,93,.5);
  box-shadow:0 30px 58px -28px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.08);background:#101B17}
.ab-scenecard svg{width:100%;height:auto}
.ab-scenecard figcaption{padding:11px 16px;text-align:center;
  font:700 10.5px/1 var(--hb-text);letter-spacing:.16em;text-transform:uppercase;
  color:var(--hb-gold-dot);background:linear-gradient(180deg,#1A2521,#121B17);
  border-top:1px solid rgba(243,213,140,.28)}

.ab-panel{padding-top:0!important;overflow:hidden}
.ab-scene{margin:0 calc(-1*clamp(20px,3vw,30px)) 18px}
.ab-scene svg{width:100%;height:150px;display:block}
.ab-panel .ab-med{margin-top:-38px;position:relative;z-index:2;width:46px;height:46px;border-radius:12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -2px 0 rgba(0,0,0,.4),0 12px 20px -8px rgba(0,0,0,.55)}
.ab-panel .ab-med svg{width:22px;height:22px}

.ab-cert{padding-top:96px}


/* — Way certificate — */
.ab-waycard{position:relative;max-width:900px;margin:0 auto;border-radius:22px;
  border:1.5px solid #D9A64C;padding:56px 28px 30px;
  background:linear-gradient(180deg,#FFFDF6,var(--hb-cream) 52%,#F6EEDB);
  box-shadow:0 30px 58px -30px rgba(29,22,28,.38),inset 0 1px 0 #fff}
.ab-waycard::before{content:"";position:absolute;inset:-8px;border:1px solid var(--hb-border);
  border-radius:28px;pointer-events:none}

/* — certificate panels (Vision / Mission) — */
.ab-certp{border:1.5px solid #D9A64C!important;position:relative;padding-top:0!important}
.ab-certp::before{content:"";position:absolute;inset:-7px;border:1px solid var(--hb-border);
  border-radius:27px;pointer-events:none;z-index:1}
.ab-certp .ab-scene{margin-top:0}
.ab-certp .ab-scene svg{height:158px}
.ab-panel .ab-med{display:none}
.ab-certp h3{justify-content:center;margin-top:6px}
.ab-duo{margin-top:66px;align-items:start}
.ab-cert{padding-top:34px}
.ab-scene--q{margin:14px calc(-1*clamp(20px,3vw,30px)) 18px;border-top:1px solid var(--hb-border);
  border-bottom:1px solid var(--hb-border)}
.ab-scene--q svg{height:120px}

/* — App showcase (4K card) — */
.ab-appshow{position:relative;display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:clamp(24px,4vw,48px);
  align-items:center;border-radius:24px;padding:clamp(24px,4vw,44px);
  border:1px solid rgba(226,177,93,.5);
  background:linear-gradient(165deg,#2E2129 0%,#1D161C 46%,#4A231E 100%);
  box-shadow:0 40px 80px -36px rgba(0,0,0,.75),inset 0 1px 0 rgba(255,255,255,.08)}
.ab-appshow::after{content:"";position:absolute;left:26px;right:26px;top:-1px;height:2px;
  background:linear-gradient(90deg,transparent,var(--hb-gold) 18%,var(--hb-gold) 82%,transparent)}
.ab-phone{margin:0;width:100%;max-width:250px;justify-self:center;
  filter:drop-shadow(0 30px 40px rgba(0,0,0,.6))}
.ab-phone svg{width:100%;height:auto}
.ab-appbody{color:rgba(252,247,234,.86)}
.ab-appbody .ab-title{color:#FCF7EA!important}
.ab-appbody .ab-title em{color:var(--hb-gold-dot)!important}
.ab-appbody strong{color:var(--hb-gold-dot)}
.ab-eyebrow--dark{background:linear-gradient(180deg,#F5DA96,#E9C169);color:#4A3714}

/* — medals (straight-text, ribbon) — */

/* — supplied asset system (HBIMS pack) — */
.hb-asset{display:block}
.ab-eyebrow .hb-icon-img{width:19px;height:19px}
.hb-coin .hb-coini{width:14px;height:14px}
.hb-crumbi{display:inline-block;width:15px;height:15px;vertical-align:-2px;margin-right:6px}
.ab-crest-img{width:clamp(118px,12vw,156px);margin:0 auto 12px;
  filter:drop-shadow(0 10px 18px rgba(110,83,39,.35))}
.ab-notice-pin{position:absolute;top:-40px;left:50%;transform:translateX(-50%);z-index:3;width:80px;
  filter:drop-shadow(0 10px 16px rgba(74,23,18,.4))}
.ab-notice-pin img{width:100%}
.ab-waypin{position:absolute;top:-38px;left:50%;transform:translateX(-50%);z-index:3;width:76px;
  filter:drop-shadow(0 10px 16px rgba(74,55,20,.45))}
.ab-waypin img{width:100%}
.ab-notice{padding-top:60px}
.ab-waycard{padding-top:58px}
.ab-cardmed{width:78px;margin:-40px auto 10px;position:relative;z-index:2;
  filter:drop-shadow(0 12px 18px rgba(74,55,20,.35))}
.ab-medal{width:118px;margin:0 auto 8px;text-align:center;
  filter:drop-shadow(0 14px 22px rgba(110,83,39,.38))}
.ab-medal img{width:100%}
.ab-ribbon{display:inline-block;margin-top:8px;padding:7px 18px;
  background:linear-gradient(180deg,#8C3B32,var(--hb-burg) 58%,#5A1F1A);
  clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,8px 100%,0 50%);
  font:700 12px/1 var(--hb-text);letter-spacing:.22em;color:#FCF7EA}
.ab-emblem2{display:grid;justify-items:center;margin:0 auto 18px;position:relative;width:clamp(150px,15vw,180px)}
.ab-emblem2 img{width:100%;filter:drop-shadow(0 14px 22px rgba(110,83,39,.35))}
.ab-emblem2 b{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);
  font:800 clamp(34px,3.6vw,42px)/1 var(--hb-display);color:var(--hb-burg)}
.ab-emblem2 i{font:700 10.5px/1.5 var(--hb-text);font-style:normal;letter-spacing:.18em;
  text-transform:uppercase;color:#6E5327;margin-top:6px;text-align:center}

/* — milestones rail 2018 → today — */
.ab-miles{list-style:none;margin:0 auto;padding:0;max-width:720px;position:relative}
.ab-miles::before{content:"";position:absolute;left:44px;top:10px;bottom:10px;width:3px;border-radius:3px;
  background:linear-gradient(180deg,#ECCE77,#B08542 45%,#7B2D26)}
.ab-miles li{position:relative;display:grid;grid-template-columns:92px 1fr;gap:18px;
  align-items:center;padding:0 0 22px}
.ab-miles li:last-child{padding-bottom:0}
.ab-miles .y{position:relative;z-index:1;justify-self:start;width:92px;text-align:center;
  padding:9px 0;border-radius:999px;font:800 14px/1 var(--hb-display);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -2px 0 rgba(0,0,0,.28),
    0 8px 16px -8px rgba(29,22,28,.5)}
.ab-miles li:nth-child(odd) .y{color:#3F2F10;
  background:linear-gradient(180deg,#F0CE83,var(--hb-gold) 58%,#C89440)}
.ab-miles li:nth-child(even) .y{color:#FCF7EA;
  background:linear-gradient(180deg,#8C3B32,var(--hb-burg) 58%,#5A1F1A)}
.ab-miles h3{margin:0;font:700 16.5px/1.35 var(--hb-display);color:var(--hb-ink)}
.ab-milemore{text-align:center;margin:26px 0 0;font:700 14px/1 var(--hb-text)}
.ab-milemore a{color:var(--hb-burg);text-decoration:none;border-bottom:2px solid rgba(123,45,38,.4)}
.ab-milemore a:hover{border-color:var(--hb-burg)}

/* — three distinct stat plates (contrast-checked) — */
.ab-stat:nth-child(2){background:linear-gradient(180deg,#FBF2DA,#F1DFAF)}
.ab-stat:nth-child(2) b{color:#6E5327}
.ab-stat:nth-child(3){background:linear-gradient(180deg,#8C3B32,#7B2D26 58%,#5A1F1A);
  border-color:rgba(226,177,93,.55)}
.ab-stat:nth-child(3) b{color:#F3D58C}
.ab-stat:nth-child(3) span{color:rgba(252,247,234,.82)}

/* — burgundy chip variant (balance restored) — */
.ab-chips--burg li{color:#FCF7EA;
  background:linear-gradient(180deg,#8C3B32,var(--hb-burg) 58%,#5A1F1A);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -2px 0 rgba(0,0,0,.28),
    0 7px 14px -8px rgba(90,31,26,.6)}
.ab-chips--burg li::before{border-color:var(--hb-gold-dot)}

/* — vision/mission symmetry — */
.ab-duo{align-items:stretch}
.ab-certp{display:flex;flex-direction:column}
.ab-certp .ab-checks{align-content:start}

/* — scroll reveal — content is ALWAYS visible; .rv only plays an entrance animation.
     No hide-by-default anywhere, so a JS failure can never blank a section. — */
@keyframes hbRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  html.js-rv .rv{animation:hbRise .6s cubic-bezier(.22,.8,.3,1) both}
}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  }
@media (max-width:960px){
  .ab-duo{grid-template-columns:1fr;gap:74px}
  .ab-appshow{grid-template-columns:1fr;justify-items:center;text-align:left}
  .ab-phone{max-width:220px}
  .ab-2030{grid-template-columns:1fr;gap:26px}
  .ab-2030 .ab-chips{justify-content:center}
  .ab-app{grid-template-columns:1fr;gap:26px}
}
@media (max-width:640px){
  .ab-checks,.ab-q{grid-template-columns:1fr}
  .ab-cert{padding-top:26px}
  .ab-scene{margin:0 -16px 16px}
  .ab-scene--q{margin:12px -16px 16px}
  .ab-waycard{padding:50px 16px 26px}
  .ab-miles::before{left:36px}
  .ab-miles li{grid-template-columns:76px 1fr;gap:14px}
  .ab-miles .y{width:76px;font-size:13px}
  .ab-tl::before{left:22px}
  .ab-tl li{padding-left:70px}
  .ab-tl .n{width:46px;height:46px;font-size:16px}
  .ab-stats{gap:12px}
  .ab-litany li{font-size:14.5px}
}
@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms!important;animation:none!important}
}

/* ── FIX · emphasis inside the dark pull-quote ──
   .cs-body strong / .ab-quote inherited ink (#1D161C) onto a near-black
   card, erasing the lead phrase. Emphasis now reads as warm ivory. */
.ab-quote p strong,
.ab-quote strong,
.cs-body .ab-quote strong{color:#FFF1C4;font-weight:800}

/* ── FIX · "7+ Years of Excellence" emblem ──
   The absolutely-positioned numeral sat at 44% of the WHOLE grid, so once
   the caption wrapped to three lines the numeral landed on top of it.
   Numeral is now centred over the wreath row only. */
.ab-emblem2{width:min(340px,88vw);gap:9px}
.ab-emblem2 img{width:100%}
.ab-emblem2 b{top:0;left:0;right:auto;bottom:auto;transform:none;
  width:100%;aspect-ratio:1200/280;display:grid;place-items:center;
  font-size:clamp(30px,3.4vw,38px);pointer-events:none}
.ab-emblem2 i{max-width:320px}


/* ══ hbcard.css ══ */
/* ══════════════════════════════════════════════════════════════════
   HB CARD & CTA SYSTEM
   ──────────────────────────────────────────────────────────────────
   One shell for every auto-opening card (app download, quick apply)
   and one struck-metal CTA treatment used across the whole site.

   Ground is ink warmed toward burgundy — the Ledger & Horizon palette
   after dark. No blue anywhere.

   The hover behaviour on .hb-act (a light band sweeping across the
   metal) is applied to EVERY button on the site through buttons.css.
   Colour stays per-variant; only the motion is shared.
   ══════════════════════════════════════════════════════════════════ */

:root{
  --hbc-ink-1:#2A1A1E; --hbc-ink-2:#1D161C; --hbc-ink-3:#120C10;
  --hbc-gold:#F5C542;  --hbc-gold-hi:#FFE9A3; --hbc-gold-lo:#B8871C;
  --hbc-brass:#C9922F; --hbc-green:#2C6A47;   --hbc-green-hi:#4FB07C;
  --hbc-burg:#9B3A31;  --hbc-burg-hi:#C4564A;
  --hbc-body:#D8CFC4;  --hbc-muted:#9A8E84;
}

/* ── overlay + shell ───────────────────────────────────────────── */
.appdl-ovl{position:fixed;inset:0;z-index:9999;display:none;align-items:center;
  justify-content:center;padding:18px;background:rgba(8,5,7,.76);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;transition:opacity .3s ease}
.appdl-ovl.active{display:flex;opacity:1}

.appdl-card{position:relative;width:min(398px,100%);max-height:92vh;overflow-y:auto;
  border-radius:27px;padding:2px;
  background:linear-gradient(160deg,var(--hbc-ring,#F5A623) 0%,#7A5312 25%,#2C2118 52%,#7A5312 78%,var(--hbc-ring,#F5A623) 100%);
  box-shadow:0 0 46px -8px var(--hbc-glow,rgba(245,166,35,.42)),0 30px 70px -26px #000;
  animation:hbcRise .4s cubic-bezier(.2,.8,.25,1) both}
.appdl-card::-webkit-scrollbar{width:0}
@keyframes hbcRise{from{opacity:0;transform:translateY(24px) scale(.975)}to{opacity:1;transform:none}}

.appdl-in{position:relative;border-radius:25px;overflow:hidden;padding:28px 22px 24px;
  background:linear-gradient(178deg,var(--hbc-ink-1) 0%,var(--hbc-ink-2) 48%,var(--hbc-ink-3) 100%)}
.appdl-in::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(92% 46% at 50% 0,var(--hbc-wash,rgba(245,197,66,.16)),transparent 64%)}
.appdl-in>*{position:relative}

.appdl-x{position:absolute;top:14px;left:14px;z-index:6;width:40px;height:40px;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;background:rgba(224,82,99,.16);
  border:1.5px solid rgba(224,82,99,.55);color:#FFC9D0;font:600 16px/1 var(--hb-text,Inter,sans-serif);
  transition:background .18s,transform .18s}
.appdl-x:hover{background:rgba(224,82,99,.45);transform:rotate(90deg)}

.appdl-badge{width:84px;height:84px;margin:6px auto 15px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 34% 26%,#FFFDF6,#EFE2C6);
  box-shadow:0 0 0 2px var(--hbc-ring,#F5C542),0 0 44px -4px var(--hbc-glow,rgba(245,197,66,.7)),
    0 16px 30px -12px #000}
.appdl-badge img{width:74px;height:74px;border-radius:50%;display:block}

.appdl-h{margin:0 0 9px;text-align:center;color:#fff;letter-spacing:-.025em;
  font:800 clamp(23px,6.2vw,27px)/1.15 var(--hb-display,Sora,sans-serif)}
.appdl-kick{margin:0 0 14px;text-align:center;color:var(--hbc-ring,#F5C542);
  font:700 13.2px/1.35 var(--hb-text,Inter,sans-serif)}
.appdl-lede{margin:0 0 19px;text-align:center;color:var(--hbc-body);
  font:400 14.6px/1.55 var(--hb-text,Inter,sans-serif)}

.appdl-pills{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-bottom:20px}
.appdl-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;
  border:1.5px solid rgba(245,197,66,.5);background:rgba(245,197,66,.06);
  font:700 14px/1 var(--hb-text,Inter,sans-serif);color:var(--hbc-gold)}
.appdl-pill img{width:24px;height:24px}

.appdl-stores{display:grid;gap:11px;margin-bottom:15px}
.appdl-proof{margin:0;text-align:center;color:var(--hbc-gold);
  font:700 16.4px/1.3 var(--hb-text,Inter,sans-serif)}
.appdl-st{letter-spacing:-1px;font-size:17px;margin-right:7px}

/* ── the CTA: struck metal, recessed coin, sweeping sheen ──────── */
.hb-act{width:100%;border:0;cursor:pointer;position:relative;overflow:hidden;
  text-decoration:none;display:flex;align-items:center;justify-content:center;gap:11px;
  padding:8px 20px 8px 8px;border-radius:17px;color:#1C1206;
  font:800 16.6px/1 var(--hb-display,Sora,sans-serif);letter-spacing:-.012em;
  background:linear-gradient(178deg,#FFF0BC 0%,var(--hbc-gold) 34%,#E0AE2E 66%,var(--hbc-gold-lo) 100%);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.85),inset 0 -3px 0 rgba(120,86,12,.5),
    inset 0 0 0 1px rgba(255,255,255,.4),0 0 34px -8px rgba(245,197,66,.9),
    0 16px 30px -12px rgba(0,0,0,.95);
  transition:transform .18s cubic-bezier(.2,.8,.3,1),box-shadow .18s}
.hb-act *{text-decoration:none}
.hb-act:hover{transform:translateY(-2px)}
.hb-act--green{color:#F2FBF6;
  background:linear-gradient(178deg,#6FCB9B 0%,#3E9C6D 34%,var(--hbc-green) 68%,#1B4C33 100%);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.42),inset 0 -3px 0 rgba(9,40,24,.6),
    inset 0 0 0 1px rgba(255,255,255,.2),0 0 34px -10px rgba(79,176,124,.85),
    0 16px 30px -12px rgba(0,0,0,.95)}
.hb-act--brass{color:#FFF6DE;
  background:linear-gradient(178deg,#E0B45E 0%,var(--hbc-brass) 34%,#8A6A22 70%,#5A4413 100%);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.46),inset 0 -3px 0 rgba(48,35,8,.6),
    inset 0 0 0 1px rgba(255,255,255,.22),0 0 34px -10px rgba(201,146,47,.85),
    0 16px 30px -12px rgba(0,0,0,.95)}
.hb-act--sm{font-size:15px;padding:7px 15px 7px 7px;gap:9px}
.hb-act-coin{width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 34% 28%,#3A2A18,#1A1108 72%);
  box-shadow:inset 0 0 0 1.5px rgba(255,233,163,.55),inset 0 -2px 5px rgba(0,0,0,.75),
    0 3px 7px rgba(0,0,0,.55)}
.hb-act-coin img{width:32px;height:32px;display:block;filter:drop-shadow(0 1.5px 2px rgba(0,0,0,.75))}
.hb-act--sm .hb-act-coin{width:38px;height:38px}
.hb-act--sm .hb-act-coin img{width:27px;height:27px}
.hb-act-lbl{display:flex;flex-direction:column;align-items:flex-start;text-align:left}
.hb-act-lbl small{display:block;font:600 9.4px/1 var(--hb-text,Inter,sans-serif);
  letter-spacing:.12em;text-transform:uppercase;opacity:.72;margin-bottom:3px}

@media (max-width:560px){
  .appdl-ovl{padding:0;align-items:flex-end}
  .appdl-card{width:100%;max-height:94vh;border-radius:25px 25px 0 0}
  .appdl-in{border-radius:23px 23px 0 0;padding:26px 18px calc(20px + env(safe-area-inset-bottom))}
  @keyframes hbcRise{from{opacity:0;transform:translateY(56px)}to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){
  .appdl-card{animation:none}
  .hb-act,.appdl-x{transition:none}
}

/* ══ QUICK APPLY — 4 steps ═══════════════════════════════════════
   Each step takes a different theme accent so progress is felt;
   the CTA stays gold throughout because on this ground it is the
   highest-contrast pairing and must never be missed. */
[data-qa-steps][data-step="1"]{--hbc-ring:#F5C542;--hbc-glow:rgba(245,197,66,.55);--hbc-wash:rgba(245,197,66,.15)}
[data-qa-steps][data-step="2"]{--hbc-ring:#C9922F;--hbc-glow:rgba(201,146,47,.55);--hbc-wash:rgba(201,146,47,.15)}
[data-qa-steps][data-step="3"]{--hbc-ring:#4FB07C;--hbc-glow:rgba(79,176,124,.5);--hbc-wash:rgba(79,176,124,.13)}
[data-qa-steps][data-step="4"]{--hbc-ring:#C4564A;--hbc-glow:rgba(196,86,74,.5);--hbc-wash:rgba(196,86,74,.14)}

.qa-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
  clip-path:inset(50%);white-space:nowrap}
.qa-bar{height:5px;border-radius:99px;background:rgba(255,255,255,.1);margin:0 0 16px;overflow:hidden}
.qa-bar i{display:block;height:100%;width:0;border-radius:99px;transition:width .4s cubic-bezier(.2,.8,.3,1);
  background:linear-gradient(90deg,var(--hbc-ring),#FFE9A3)}
.qa-dots{display:flex;align-items:center;gap:6px;justify-content:center;margin-bottom:17px}
.qa-dot{width:32px;height:5px;border-radius:99px;background:rgba(255,255,255,.13)}
.qa-dot--on.qa-s1{background:linear-gradient(90deg,#FFE9A3,#F5C542)}
.qa-dot--on.qa-s2{background:linear-gradient(90deg,#E8B65C,#C9922F)}
.qa-dot--on.qa-s3{background:linear-gradient(90deg,#4FB07C,#2C6A47)}
.qa-dot--on.qa-s4{background:linear-gradient(90deg,#C4564A,#9B3A31)}
.qa-count{margin-left:6px;font:700 10.2px/1 var(--hb-text,Inter,sans-serif);letter-spacing:.14em;
  text-transform:uppercase;color:var(--hbc-muted)}
.qa-back{position:absolute;top:14px;right:14px;z-index:6;height:40px;padding:0 15px;border-radius:99px;
  display:grid;place-items:center;cursor:pointer;background:rgba(245,197,66,.09);
  border:1.5px solid rgba(245,197,66,.38);color:var(--hbc-gold);
  font:700 12.2px/1 var(--hb-text,Inter,sans-serif)}

.qa-h{margin:0 0 9px;text-align:center;color:#fff;letter-spacing:-.025em;outline:none;
  font:800 clamp(22px,6vw,26px)/1.15 var(--hb-display,Sora,sans-serif)}
.qa-kick{margin:0 0 14px;text-align:center;color:var(--hbc-ring);
  font:700 12.8px/1.4 var(--hb-text,Inter,sans-serif)}
.qa-q{display:block;margin:0 0 10px;font:700 10.6px/1 var(--hb-text,Inter,sans-serif);
  letter-spacing:.17em;text-transform:uppercase;color:var(--hbc-ring)}
.qa-q.qa-ctr{text-align:center}

.qa-opts{display:grid;gap:9px;margin-bottom:6px}
.qa-opts--2{grid-template-columns:1fr 1fr}
.qa-opts--4{grid-template-columns:repeat(4,1fr)}
.qa-opt{appearance:none;cursor:pointer;text-align:left;padding:13px;border-radius:14px;
  border:1.5px solid rgba(255,255,255,.13);background:rgba(255,255,255,.045);color:#fff;
  font-family:var(--hb-text,Inter,sans-serif);
  transition:border-color .18s,background .18s,transform .18s}
.qa-opt:hover{transform:translateY(-2px);border-color:var(--hbc-ring)}
.qa-opt:focus-visible{outline:3px solid var(--hbc-ring);outline-offset:2px}
.qa-opt b{display:block;font:700 13.8px/1.2}
.qa-opt span{display:block;margin-top:3px;font:500 11px/1.25;color:var(--hbc-muted)}
.qa-opt--mini{text-align:center;padding:12px 6px}
.qa-opt--mini b{font-size:13px}
.qa-opt[aria-pressed=true]{border-color:var(--hbc-ring);color:#1C1206;
  background:linear-gradient(168deg,#FFE9A3,var(--hbc-ring) 48%,#8A6110);
  box-shadow:0 0 24px -7px var(--hbc-glow)}
.qa-opt[aria-pressed=true] span{color:rgba(28,18,6,.72)}

.qa-inp{width:100%;padding:15px;border-radius:14px;background:rgba(255,255,255,.055);
  border:1.5px solid rgba(255,255,255,.15);color:#fff;outline:none;margin-bottom:2px;
  font:600 15px/1 var(--hb-text,Inter,sans-serif)}
.qa-inp::placeholder{color:#7A6E66;font-weight:500}
.qa-inp:focus{border-color:var(--hbc-ring);box-shadow:0 0 0 3px var(--hbc-glow)}
.qa-inp.is-bad,.qa-inp[aria-invalid=true]{border-color:#E4626F;box-shadow:0 0 0 3px rgba(228,98,111,.22)}
select.qa-inp{appearance:none;padding-right:34px;
  background-image:linear-gradient(45deg,transparent 50%,var(--hbc-ring) 50%),
    linear-gradient(135deg,var(--hbc-ring) 50%,transparent 50%);
  background-position:calc(100% - 18px) 21px,calc(100% - 13px) 21px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat}
select.qa-inp option{background:#1D161C;color:#fff}
.qa-tel{display:flex;gap:9px}
.qa-pre{flex:none;padding:15px 14px;border-radius:14px;background:rgba(245,197,66,.14);
  border:1.5px solid rgba(245,197,66,.34);color:var(--hbc-gold);
  font:700 15px/1 var(--hb-text,Inter,sans-serif)}
.qa-trio{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:9px}
.qa-consent{display:grid;grid-template-columns:24px 1fr;gap:11px;align-items:start;padding:14px;
  border-radius:14px;background:rgba(255,255,255,.045);border:1.5px solid rgba(255,255,255,.14);
  margin-bottom:6px;cursor:pointer}
.qa-consent input{width:22px;height:22px;accent-color:var(--hbc-gold);margin:0;cursor:pointer}
.qa-consent span{font:500 12px/1.5 var(--hb-text,Inter,sans-serif);color:var(--hbc-body)}
.qa-consent a{color:var(--hbc-gold)}

.af2-err{margin:5px 0 13px;min-height:0;font:600 11.8px/1.4 var(--hb-text,Inter,sans-serif);
  color:#FF8A96;display:none}
.af2-err.on{display:block}
.af2-age{margin:2px 0 13px;padding:11px 13px;border-radius:12px;
  font:600 12.2px/1.5 var(--hb-text,Inter,sans-serif)}
.af2-age.is-ok{background:rgba(44,106,71,.2);border:1px solid rgba(79,176,124,.42);color:#8FE3B6}
.af2-age.is-bad{background:rgba(155,58,49,.22);border:1px solid rgba(196,86,74,.5);color:#FFB3AA}
.af2-age.is-info{background:rgba(245,197,66,.12);border:1px solid rgba(245,197,66,.36);color:#F5D98A}
.af2-summary{margin:0 0 13px;padding:13px 15px;border-radius:13px;
  background:rgba(155,58,49,.2);border:1px solid rgba(196,86,74,.5)}
.af2-summary ul{margin:0;padding-left:17px;font:500 12px/1.6 var(--hb-text,Inter,sans-serif);color:#FFC9C2}
.qa-safe{margin:12px 0 0;text-align:center;color:var(--hbc-green-hi);
  font:600 11.8px/1.4 var(--hb-text,Inter,sans-serif)}
.qa-fine{margin:9px 0 0;text-align:center;color:var(--hbc-muted);
  font:500 10.6px/1.45 var(--hb-text,Inter,sans-serif)}
@media (max-width:430px){.qa-opts--4{grid-template-columns:1fr 1fr}}
/* [hidden] must beat the display declarations above it */
.qa-back[hidden],.qa-step[hidden],#af2-done[hidden],
.af2-summary[hidden],.af2-age[hidden],.qa-kick[hidden]{display:none!important}

/* ══ COMPACT SCALE — short and narrow phones ═══════════════════════
   Measured problem: at 360x640 and 375x667, once validation messages
   and the age box appear, the card grew past the viewport and the
   Continue button dropped below the fold. Nothing was overlapping —
   the action was simply out of reach, which is worse.

   Everything shrinks proportionally so the worst case (all errors
   visible) still ends above the fold. */
@media (max-width:400px),(max-height:730px){
  .appdl-in{padding:20px 16px 18px}
  .appdl-badge{width:62px;height:62px;margin:2px auto 10px}
  .appdl-badge img{width:54px;height:54px}
  .qa-h{font-size:20px;margin-bottom:6px}
  .qa-kick{font-size:11.4px;margin-bottom:10px}
  .qa-dots{margin-bottom:12px}
  .qa-bar{margin-bottom:11px}
  .qa-q{font-size:9.8px;margin-bottom:8px}
  .qa-opts{gap:7px}
  .qa-opt{padding:10px}
  .qa-opt b{font-size:12.8px}
  .qa-opt span{font-size:10.2px;margin-top:2px}
  .qa-opt--mini{padding:10px 5px}
  .qa-inp,.qa-pre{padding:12px;font-size:14.2px}
  select.qa-inp{background-position:calc(100% - 18px) 18px,calc(100% - 13px) 18px}
  .qa-trio{gap:7px}
  .qa-consent{padding:11px;gap:9px}
  .qa-consent span{font-size:11.2px;line-height:1.45}
  .af2-err{margin:4px 0 9px;font-size:11px}
  .af2-age{margin:2px 0 9px;padding:9px 11px;font-size:11.4px}
  .hb-act{padding:6px 16px 6px 6px;font-size:15px;border-radius:14px}
  .hb-act-coin{width:36px;height:36px}
  .hb-act-coin img{width:26px;height:26px}
  .qa-safe{margin-top:9px;font-size:11px}
  .qa-fine{margin-top:6px;font-size:10px}
  .appdl-x,.qa-back{height:34px}
  .appdl-x{width:34px;font-size:14px}
  .qa-back{padding:0 12px;font-size:11.4px}
  /* app card too */
  .appdl-h{font-size:21px}
  .appdl-lede{font-size:13.4px;margin-bottom:14px}
  .appdl-pills{gap:7px;margin-bottom:14px}
  .appdl-pill{padding:8px 13px;font-size:12.8px}
  .appdl-pill img{width:20px;height:20px}
  .appdl-stores{gap:9px}
  .appdl-proof{font-size:14.6px}
}

/* Very short screens (320x568 and similar): the worst case still needs a
   scroll, so pin the action to the bottom of the card. It can never be
   out of reach, whatever the content above it does. */
@media (max-height:600px){
  .appdl-card{display:flex;flex-direction:column}
  .qa-step{display:flex;flex-direction:column}
  .qa-step .hb-act{position:sticky;bottom:6px;z-index:4;margin-top:auto}
  .qa-step .hb-act::before{content:"";position:absolute;inset:-14px -22px 0;z-index:-1;
    background:linear-gradient(180deg,transparent,var(--hbc-ink-3) 55%);pointer-events:none}
  .qa-safe,.qa-fine{padding-bottom:2px}
}

/* Page title above the standalone form card. It inherited body ink on a
   dark ground and was practically invisible; set explicitly. */
.qa-title{margin:0 auto 18px;max-width:398px;text-align:center;color:#FFF3D4;
  font:800 clamp(19px,5.2vw,23px)/1.22 var(--hb-display,Sora,sans-serif);
  letter-spacing:-.02em;padding:0 14px}
.qa-title::after{content:"";display:block;width:56px;height:3px;border-radius:3px;
  margin:11px auto 0;background:linear-gradient(90deg,#FFE9A3,var(--hbc-gold,#F5C542))}
@media (max-width:400px),(max-height:730px){.qa-title{margin-bottom:12px;font-size:18px}}

/* ══ DYNAMIC DETAIL PAGES ══════════════════════════════════════════
   Records come from the same list endpoints the cards use, matched by
   ?id=. Skeleton while loading, a plain message when the record is gone. */
.dyn-article{max-width:760px;margin:0 auto}
.dyn-kick{margin:0 0 8px;text-align:center;font:700 11px/1 var(--hb-text,Inter,sans-serif);
  letter-spacing:.18em;text-transform:uppercase;color:var(--hb-bronze,#6E5327)}
.dyn-title{margin:0 0 12px;text-align:center;color:var(--hb-ink,#1D161C);letter-spacing:-.02em;
  font:800 clamp(26px,4.4vw,38px)/1.18 var(--hb-display,Sora,sans-serif)}
.dyn-meta{display:flex;justify-content:center;align-items:center;gap:10px;margin:0 0 24px;
  font:600 12.6px/1 var(--hb-text,Inter,sans-serif);color:var(--hb-muted,#6E5327)}
.dyn-type{padding:5px 12px;border-radius:999px;background:rgba(226,177,93,.18);
  border:1px solid rgba(226,177,93,.5);text-transform:uppercase;letter-spacing:.09em;font-size:10.4px}
.dyn-img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;
  border-radius:16px;margin:0 0 26px;box-shadow:0 18px 40px -26px rgba(110,83,39,.6)}
.dyn-body{font:400 16px/1.78 var(--hb-text,Inter,sans-serif);color:var(--hb-body,#3B3128)}
.dyn-body p{margin:0 0 16px}
.dyn-body h2,.dyn-body h3{margin:26px 0 10px;color:var(--hb-ink,#1D161C);
  font-family:var(--hb-display,Sora,sans-serif);font-weight:800;letter-spacing:-.01em}
.dyn-body h2{font-size:22px}.dyn-body h3{font-size:18px}
.dyn-body ul,.dyn-body ol{margin:0 0 16px;padding-left:22px}
.dyn-body li{margin:0 0 7px}
.dyn-body img{max-width:100%;height:auto;border-radius:12px;margin:14px 0}
.dyn-body a{color:var(--hb-burg,#7B2D26);text-underline-offset:3px}
.dyn-skel{max-width:760px;margin:0 auto}
.dyn-skel-media{width:100%;aspect-ratio:16/9;border-radius:16px;margin-bottom:22px;
  background:linear-gradient(90deg,rgba(110,83,39,.09),rgba(110,83,39,.16),rgba(110,83,39,.09));
  background-size:200% 100%;animation:dynShimmer 1.4s linear infinite}
.dyn-skel-line{height:15px;border-radius:7px;margin-bottom:12px;
  background:linear-gradient(90deg,rgba(110,83,39,.09),rgba(110,83,39,.16),rgba(110,83,39,.09));
  background-size:200% 100%;animation:dynShimmer 1.4s linear infinite}
@keyframes dynShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.dyn-empty{max-width:560px;margin:0 auto;text-align:center;padding:34px 22px;border-radius:18px;
  background:rgba(123,45,38,.05);border:1px solid rgba(123,45,38,.22)}
.dyn-empty-t{margin:0 0 8px;font:800 19px/1.3 var(--hb-display,Sora,sans-serif);color:var(--hb-burg,#7B2D26)}
.dyn-empty-s{margin:0 0 20px;font:400 14px/1.6 var(--hb-text,Inter,sans-serif);color:var(--hb-muted,#6E5327)}
.hb-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (prefers-reduced-motion:reduce){.dyn-skel-media,.dyn-skel-line{animation:none}}

/* ══ QUICK APPLY — centring and padding ════════════════════════════
   Steps 2–4 mixed left-aligned labels with centred headings, and the
   card padding differed per step because the option grids carried their
   own margins. Everything now shares one rhythm and one centre line. */
.qa-form{display:flex;flex-direction:column}
.qa-step{display:flex;flex-direction:column;align-items:stretch;text-align:center}
.qa-step>.qa-q{text-align:center}
.qa-opts{width:100%;margin-left:auto;margin-right:auto;margin-bottom:4px}
.qa-inp,.qa-tel,.qa-trio,.qa-consent{width:100%;margin-left:auto;margin-right:auto}
.qa-consent{text-align:left}
.qa-fld{margin-bottom:14px}
.af2-err{text-align:center}
.qa-step .hb-act{margin-top:6px}
.dyn-empty-h{margin:0 0 10px;font:800 22px/1.25 var(--hb-display,Sora,sans-serif);color:var(--hb-ink,#1D161C)}
