/* ============================================================================
   Hart David Carson LLP — shared site stylesheet
   Design system ported faithfully from "Hart David — Homepage (FINAL).html".
   Tokens, type, nav, footer, and components match the homepage so every
   content page reads as the same site. No build step — plain CSS.
   ========================================================================== */

:root{
  --red:#3AAA34;--red-deep:#257A24;--accent:#3AAA34;--accent-deep:#257A24;--brass-ink:#7A5E2C;/* role rule: green (--red) = the mark, live signals (dots, nodes, hub markers) and filled actions (--red-deep); brass = structure (rules, threads, eyebrows) and italic emphasis; never both for the same job */;--brass:#A8884C;--navy:#15314D;--navy2:#0D2138;--navy3:#08182a;
  --paper:#F4F2EC;--paper2:#ECE9E0;--ink:#222E37;--ink2:#5b6973;
  --line:#e2dfd6;--line-d:rgba(255,255,255,.1);--paleblue:#b9cbdd;
  /* neutral slate for ordinals + bullet dots on LIGHT grounds (4.8:1 on paper).
     Colour discipline: brass is reserved for eyebrows and hairlines. Use the
     .ordinal / .feat-list.neutral helpers below, not a global brass repaint. */
  --ordinal:#5A6C80;
  --link:#3171A8; /* Harbor Blue — body/prose hyperlinks only, always underlined */
  --maxw:1280px;--measure:760px;
  --gutter:clamp(24px,5vw,84px);--py:clamp(78px,10vh,150px);
  --ease:cubic-bezier(.16,1,.3,1)
}

/* ---- reset / base --------------------------------------------------------- */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:clip}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{font-family:'Archivo',sans-serif;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-feature-settings:"liga" 0;line-height:1.5}
.serif{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-feature-settings:"liga" 0}
.mono{font-family:'Geist Mono',monospace}
img,svg{max-width:100%}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
.narrow{max-width:920px}
a{color:inherit;text-decoration:none}
/* Focus: brass ring reads on navy (4.9:1); the navy halo backs it on paper and
   on white cards, where brass alone measured under the 3:1 WCAG 1.4.11 floor. */
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--brass);outline-offset:2px;box-shadow:0 0 0 4px rgba(13,33,56,.55)}
.dark a:focus-visible,.dark2 a:focus-visible,.dark button:focus-visible,.dark2 button:focus-visible,.dark summary:focus-visible,.dark2 summary:focus-visible,nav.site a:focus-visible,nav.site button:focus-visible,.page-hero a:focus-visible,.cta-band a:focus-visible,.arc-sec a:focus-visible,.tile:focus-visible,.tile a:focus-visible,footer.site a:focus-visible{box-shadow:0 0 0 4px rgba(255,255,255,.16)}
.skip{position:absolute;left:-9999px;top:0;background:var(--navy2);color:#fff;padding:12px 18px;z-index:200}
.skip:focus{left:12px;top:12px}
.eyebrow{font-family:'Geist Mono';font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--brass)}
/* the eyebrow directly restates the breadcrumb on some hubs. Add .dup to the
   .eyrow (or the .eyebrow itself) to suppress the duplicate without cutting copy */
.eyrow.dup,.eyebrow.dup{display:none}
/* neutral ordinal / bullet ink (see --ordinal above): counters and dot bullets */
.ordinal{color:var(--ordinal)}
.dark .ordinal,.dark2 .ordinal{color:var(--paleblue)}
.feat-list.neutral span::before{background:var(--ordinal)}
.dark .feat-list.neutral span::before,.dark2 .feat-list.neutral span::before{background:var(--paleblue)}
.center{text-align:center}

/* ---- motion --------------------------------------------------------------- */
@keyframes rise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes draw{from{width:0}to{width:64px}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(168,136,76,.5)}70%{box-shadow:0 0 0 7px rgba(168,136,76,0)}100%{box-shadow:0 0 0 0 rgba(168,136,76,0)}}
.hanim{opacity:0;animation:rise .95s var(--ease) forwards}
html.cine .reveal.vis{opacity:1;transform:none}
html.cine .reveal:not(.vis){opacity:0;transform:translateY(26px)}
html:not(.cine) .reveal{transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.vis{opacity:1;transform:none}
.s1{transition-delay:.1s}.s2{transition-delay:.2s}.s3{transition-delay:.3s}.s4{transition-delay:.4s}.s5{transition-delay:.5s}
@media(prefers-reduced-motion:reduce){.hanim,.reveal{opacity:1!important;transform:none!important;animation:none!important}*{animation:none!important;transition:none!important}.redrule{width:64px!important}}

/* freshness stamp (live feeds) */
.fresh{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--brass);display:inline-flex;align-items:center;gap:8px}
.fresh .fd{width:6px;height:6px;border-radius:50%;background:var(--brass);animation:pulse 2.6s infinite}
.fresh.dk{color:var(--paleblue)}

/* ============================ NAV ========================================= */
nav.site{position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(13,33,56,.5);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.06);transition:background .5s var(--ease)}
nav.site.solid{background:rgba(8,24,42,.96)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){nav.site{background:rgba(8,24,42,.93)}}
.nav-in{display:flex;align-items:center;justify-content:space-between;padding-block:15px}
.logo{font-weight:800;font-size:20px;letter-spacing:-.01em;color:#fff}.logo .v{color:var(--red)}
.logo img{height:26px;width:auto;display:block}
.f-logo img{height:30px;width:auto;display:block}
@media(max-width:560px){.logo img{height:21px}}
.nav-links{display:flex;gap:30px;font-size:13px;color:var(--paleblue);align-items:center}
.nav-links a{position:relative;transition:color .25s}
.nav-links a::after{content:"";position:absolute;left:0;right:100%;bottom:-5px;height:1px;background:var(--brass);transition:right .35s var(--ease)}
.nav-links a:hover,.nav-links a[aria-current]{color:#fff}.nav-links a:hover::after,.nav-links a[aria-current]::after{right:0}
.nav-links a.hdai{color:var(--brass);font-weight:600}
.nav-right{display:flex;align-items:center;gap:26px}
.nav-hdai{position:relative;color:var(--brass);font-weight:700;font-size:13px;letter-spacing:.02em;padding:7px 16px;border:1px solid rgba(168,136,76,.55);border-radius:22px;transition:.3s;animation:hdaiHalo 2.8s ease-in-out infinite}
.nav-hdai:hover{color:#fff;background:rgba(168,136,76,.14)}
@keyframes hdaiHalo{0%,100%{box-shadow:0 0 0 0 rgba(168,136,76,.5),0 0 12px 1px rgba(168,136,76,.35)}50%{box-shadow:0 0 0 5px rgba(168,136,76,0),0 0 22px 4px rgba(168,136,76,.6)}}
@media(prefers-reduced-motion:reduce){.nav-hdai{animation:none}}
.nav-contact{position:relative}
.nav-cta{position:relative;font-size:13px;color:#fff;display:inline-flex;align-items:center;gap:7px;transition:color .25s}
.nav-cta::after{content:"";position:absolute;left:0;right:100%;bottom:-6px;height:1px;background:var(--brass);transition:right .35s var(--ease)}
.nav-contact:hover .nav-cta::after,.nav-contact:focus-within .nav-cta::after{right:0}
.nav-cta .dot{width:6px;height:6px;border-radius:50%;background:var(--brass);animation:pulse 2.6s infinite}
.contact-drop{position:absolute;right:0;top:100%;padding-top:16px;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .32s var(--ease),transform .32s var(--ease),visibility .32s;z-index:60}
.nav-contact:hover .contact-drop,.nav-contact:focus-within .contact-drop{opacity:1;visibility:visible;transform:none}
.cd-card{width:308px;background:linear-gradient(162deg,#11293f,#0a1c2e);border:1px solid rgba(168,136,76,.42);border-radius:11px;overflow:hidden;box-shadow:0 34px 64px -26px rgba(0,0,0,.75)}
.cd-card .acc{height:2px;background:linear-gradient(90deg,var(--brass),rgba(168,136,76,0))}
.cd-top{display:flex;align-items:center;gap:9px;padding:14px 20px;font-family:'Geist Mono';font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);border-bottom:1px solid rgba(255,255,255,.1)}
.cd-top .lv{width:6px;height:6px;border-radius:50%;background:var(--brass);animation:pulse 2.6s infinite}
.cd-row{display:flex;gap:14px;align-items:flex-start;padding:15px 20px;border-bottom:1px solid rgba(255,255,255,.08);transition:background .3s,padding .35s var(--ease);color:#fff}
.cd-row:last-child{border-bottom:none}
a.cd-row:hover{background:rgba(168,136,76,.09);padding-left:24px}
.cd-ic{flex:none;width:19px;height:19px;margin-top:2px}.cd-ic svg{width:100%;height:100%;stroke:var(--brass);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.cd-l{display:block;font-family:'Geist Mono';font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#8ea4ba;margin-bottom:4px}
.cd-v{display:block;font-size:13.5px;color:#fff;line-height:1.45;letter-spacing:.01em}
/* mobile menu */
.nav-toggle{display:none;background:none;border:1px solid rgba(255,255,255,.25);border-radius:4px;width:44px;height:44px;cursor:pointer;flex-direction:column;gap:4px;align-items:center;justify-content:center}
.nav-toggle span{display:block;width:18px;height:1.5px;background:#fff;transition:.3s}
.nav-mobile{display:none;background:var(--navy2);border-bottom:1px solid rgba(255,255,255,.08)}
.nav-mobile a{display:block;padding:14px var(--gutter);color:var(--paleblue);font-size:15px;border-top:1px solid rgba(255,255,255,.06)}
.nav-mobile a.hdai{color:var(--brass)}
.nav-mobile .nm-call{color:var(--brass);font-weight:600}
.nav-mobile.open{display:block;position:fixed;top:66px;left:0;right:0;bottom:auto;height:calc(100vh - 66px);height:calc(100dvh - 66px);overflow:auto;z-index:400;padding-bottom:40px}
html.menu-open{overflow:hidden}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
html.cine .reveal.rv-focus,html.cine .reveal.rv-focus .s1,html.cine .reveal.rv-focus .s2,html.cine .reveal.rv-focus .s3,html.cine .reveal.rv-focus .s4{opacity:1!important;transform:none!important;transition:none!important}
@media(max-width:1120px){
  .nav-links,.nav-contact,.nav-hdai{display:none}
  .nav-toggle{display:flex}
}
/* ---- Capabilities mega-menu (JS-injected; CSS hover/focus reveal) ---- */
.nav-mega-wrap{position:static;display:inline-flex;align-items:center}
a.has-mega{display:inline-flex;align-items:center;gap:6px}
a.has-mega .mcaret{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-1px);opacity:.55;transition:transform .35s var(--ease),opacity .35s}
.nav-mega-wrap:hover a.has-mega .mcaret,.nav-mega-wrap.open a.has-mega .mcaret{transform:rotate(-135deg);opacity:1}
.nav-mega{position:absolute;left:50%;top:100%;transform:translateX(-50%) translateY(14px);width:min(1120px,94vw);background:rgba(8,24,42,.985);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid rgba(168,136,76,.22);border-radius:16px;box-shadow:0 50px 110px -34px rgba(0,0,0,.78);padding:32px 36px 22px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s var(--ease),transform .4s var(--ease),visibility .4s;z-index:60}
.nav-mega::before{content:"";position:absolute;top:-16px;left:0;right:0;height:16px}
.nav-mega-wrap:hover .nav-mega,.nav-mega-wrap.open .nav-mega{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);pointer-events:auto}
.nav-mega-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px 26px}
.nmc{display:flex;flex-direction:column;gap:10px;min-width:0;padding-top:4px;opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.nav-mega-wrap:hover .nmc,.nav-mega-wrap:focus-within .nmc,.nav-mega-wrap.open .nmc{opacity:1;transform:none}
.nav-mega-wrap:hover .nmc:nth-child(2),.nav-mega-wrap:focus-within .nmc:nth-child(2){transition-delay:.05s}
.nav-mega-wrap:hover .nmc:nth-child(3),.nav-mega-wrap:focus-within .nmc:nth-child(3){transition-delay:.1s}
.nav-mega-wrap:hover .nmc:nth-child(4),.nav-mega-wrap:focus-within .nmc:nth-child(4){transition-delay:.15s}
.nav-mega-wrap:hover .nmc:nth-child(5),.nav-mega-wrap:focus-within .nmc:nth-child(5){transition-delay:.2s}
.nmc-h{display:flex;align-items:flex-end;min-height:40px;line-height:15px;font-family:'Geist Mono';font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);padding-bottom:9px;border-bottom:1px solid rgba(168,136,76,.22);margin-bottom:3px}
.nmc-h:hover{color:#fff}
.nav-mega a:not(.nmc-h){font-size:13px;color:var(--paleblue);line-height:1.3;transition:color .2s var(--ease),transform .2s var(--ease)}
.nav-mega a:not(.nmc-h):hover{color:#fff;transform:translateX(4px)}
.nav-mega a::after{display:none!important}
.nav-mega-foot{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.09)}
.nav-mega-foot>a{font-size:13px;color:#fff;font-weight:600}.nav-mega-foot>a span{color:var(--brass);transition:transform .25s var(--ease);display:inline-block}.nav-mega-foot>a:hover span{transform:translateX(4px)}
.nmf-note{font-family:'Geist Mono';font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--paleblue);opacity:.55}
@media(max-width:1120px){.nav-mega{display:none}a.has-mega .mcaret{display:none}}
@media(prefers-reduced-motion:reduce){.nav-mega,.nmc{transition:none}.nmc{opacity:1;transform:none}}

/* ============================ BUTTONS / LINKS ============================= */
.btn{display:inline-block;background:#fff;color:var(--navy2);padding:16px 32px;font-size:13px;font-weight:600;border-radius:3px;transition:transform .5s var(--ease),box-shadow .5s var(--ease);box-shadow:0 14px 40px -16px rgba(0,0,0,.4)}
.btn:hover{box-shadow:0 22px 54px -18px rgba(0,0,0,.5)}
.btn.red{background:var(--red-deep);color:#fff;box-shadow:0 12px 32px -18px rgba(0,0,0,.45)}.btn.red:hover{background:#1F6A1E;transform:translateY(-1px)}.btn.red:focus-visible{outline:2px solid var(--brass);outline-offset:3px}
.btn.navy{background:var(--navy2);color:#fff}
.btn-ghost{display:inline-block;border:1px solid rgba(255,255,255,.4);color:#fff;padding:16px 32px;font-size:13px;font-weight:600;border-radius:3px;transition:.4s}
.btn-ghost:hover{background:#fff;color:var(--navy2)}
.btn-ghost.dark{border-color:rgba(13,33,56,.3);color:var(--navy2)}.btn-ghost.dark:hover{background:var(--navy2);color:#fff}
.alink{font-size:14px;font-weight:600;color:#fff;display:inline-flex;align-items:center;gap:9px}
.alink.b{color:var(--ink)}
.alink .arr{transition:transform .4s var(--ease)}.alink:hover .arr{transform:translateX(6px)}
.morelink{font-family:'Geist Mono';font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass);display:inline-flex;gap:8px;align-items:center}
.morelink .arr{transition:transform .4s}.morelink:hover .arr{transform:translateX(5px)}

/* ============================ SECTIONS / HEADINGS ======================== */
section{padding:var(--py) 0}
.paper{background:var(--paper);color:var(--ink)}
.paper2{background:var(--paper2);color:var(--ink)}
.dark{background:var(--navy2);color:#fff}
.dark2{background:var(--navy3);color:#fff}
.tight{padding:clamp(48px,7vh,90px) 0}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:clamp(40px,5vh,64px)}
.sec-head .ttl{font-weight:800;font-size:clamp(13px,1vw,14px);letter-spacing:.1em;text-transform:uppercase;display:flex;align-items:center;gap:12px}
.sec-head .ttl::before{content:"";width:8px;height:8px;background:var(--red)}
.dark .sec-head .ttl,.dark2 .sec-head .ttl{color:#fff}
.sec-head .lede{max-width:560px;font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(22px,2.4vw,32px);line-height:1.22;letter-spacing:-.01em}
.dark .sec-head .lede,.dark2 .sec-head .lede{color:#eaf0f6}
.sec-head .rt{display:flex;flex-direction:column;align-items:flex-end;gap:10px}

/* ============================ INTERIOR PAGE HERO ========================= */
.page-hero{position:relative;background:var(--navy2);color:#fff;overflow:hidden;border-bottom:1px solid rgba(168,136,76,.18);padding:clamp(128px,17vh,188px) 0 clamp(56px,8vh,92px)}
.page-hero .bgwash{position:absolute;inset:0;z-index:0;background:radial-gradient(60% 50% at 82% 26%,rgba(49,113,168,.22),transparent 70%),radial-gradient(50% 50% at 50% 112%,rgba(58,170,52,.10),transparent 70%)}
.page-hero .gridtex{position:absolute;inset:0;z-index:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:72px 72px;-webkit-mask-image:radial-gradient(130% 100% at 78% 30%,#000,transparent 70%);mask-image:radial-gradient(130% 100% at 78% 30%,#000,transparent 70%);opacity:.55}
.page-hero .wrap{position:relative;z-index:2}
.page-hero h1{font-family:'Newsreader','Newsreader Fallback Display',Georgia,serif;font-weight:400;font-size:clamp(40px,6vw,82px);line-height:1.0;letter-spacing:-.02em;margin-top:20px;max-width:18ch}
.page-hero h1 em{font-style:italic;font-weight:300}.page-hero h1 .v{color:var(--brass)}
.page-hero .redrule{height:3px;background:var(--brass);margin:24px 0 0;width:64px;animation:draw .7s var(--ease) .3s both}
.page-hero .sub{font-size:clamp(16px,1.4vw,19px);color:#c4d0dc;max-width:58ch;line-height:1.62;margin-top:22px}
.eyrow{display:flex;align-items:center;gap:16px}.eyrow .rule{width:46px;height:1px;background:var(--brass)}

/* breadcrumb */
.crumb{font-family:'Geist Mono';font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--paleblue);display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.crumb a{color:var(--paleblue)}.crumb a:hover{color:#fff}
.crumb .sep{color:rgba(255,255,255,.3)}
.crumb .here{color:var(--brass)}

/* ============================ PROSE (long-form) ========================== */
.prose{max-width:var(--measure)}
.prose>*+*{margin-top:22px}
.prose p{font-size:clamp(16px,1.25vw,18px);line-height:1.72;color:var(--ink)}
.dark .prose p,.dark2 .prose p{color:#cdd8e6}
.prose .lead{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(20px,2vw,26px);line-height:1.4;color:var(--ink)}
.prose h2{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(26px,3vw,38px);line-height:1.12;letter-spacing:-.01em;margin-top:44px}
.prose h3{font-weight:800;font-size:clamp(17px,1.4vw,20px);letter-spacing:.01em;margin-top:32px}
.prose ul,.prose ol{padding-left:22px}.prose li{font-size:clamp(16px,1.2vw,18px);line-height:1.7;margin-top:8px}
.prose li::marker{color:var(--brass)}
.prose a{color:var(--link);text-decoration:underline;text-underline-offset:3px}
.dark .prose a,.dark2 .prose a{color:var(--paleblue)}
.prose blockquote{border-left:3px solid var(--brass);padding-left:22px;font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-style:italic;font-size:clamp(20px,2.2vw,28px);line-height:1.3;color:var(--navy)}
.prose strong{font-weight:700}

/* ============================ CARDS / GRIDS ============================== */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,4vw,60px)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.card{position:relative;display:flex;flex-direction:column;padding:30px 28px;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;transition:transform .5s var(--ease),border-color .4s,box-shadow .5s var(--ease)}
.card::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--brass);transition:transform .45s var(--ease)}
.card:hover{transform:translateY(-4px);border-color:#cdbf9a;box-shadow:0 26px 54px -34px rgba(13,33,56,.4)}
.card:hover::before{transform:scaleX(1)}
.card .num{font-family:'Geist Mono';font-size:12px;color:var(--brass)}
.card h3{font-weight:700;font-size:19px;margin:13px 0 10px;line-height:1.2;color:var(--navy)}
.card p{color:var(--ink2);line-height:1.6;font-size:14px}
/* margin-top:auto pins every card's CTA to the card floor so a row of cards
   lands its arrows on one baseline (grid items already stretch to equal height) */
.card .more{display:inline-flex;gap:7px;align-items:center;align-self:flex-start;margin-top:auto;padding-top:16px;font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);transition:.35s}
.card:hover .more{opacity:1;color:var(--navy);transform:translateX(3px)}
.card.serif-t h3{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(20px,1.8vw,24px)}
/* card on dark */
.dark .card,.dark2 .card{background:rgba(255,255,255,.02);border-color:rgba(255,255,255,.14)}
.dark .card h3,.dark2 .card h3{color:#fff}
.dark .card p,.dark2 .card p{color:#aebccb}
.dark .card:hover,.dark2 .card:hover{background:rgba(255,255,255,.045);border-color:rgba(168,136,76,.5)}
.dark .card .more,.dark2 .card .more{color:#fff}

/* tight bordered grid (capabilities-style, hairline) */
.tilegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.08)}
.tile{position:relative;padding:34px 30px 30px;background:var(--navy2);transition:background .4s;overflow:hidden}
.tile::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--brass);transition:transform .4s var(--ease)}
.tile:hover{background:#11293f}.tile:hover::before{transform:scaleX(1)}
.tile .num{font-family:'Geist Mono';font-size:12px;color:var(--brass)}
.tile h3{font-weight:700;font-size:18px;margin:14px 0 11px;line-height:1.2;color:#fff}
.tile p{color:#aebccb;line-height:1.6;font-size:14px}
.tile .more{display:inline-block;margin-top:18px;font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#fff;opacity:.5;transition:.35s}
.tile:hover .more{opacity:1;transform:translateX(3px)}

/* list rows (field-notes / index style) */
.rows{border-top:1px solid var(--line)}
.dark .rows,.dark2 .rows{border-color:var(--line-d)}
.row{display:grid;grid-template-columns:48px 1fr auto;gap:20px;align-items:center;padding:24px 6px 24px 0;border-bottom:1px solid var(--line);transition:background .45s;position:relative}
.dark .row,.dark2 .row{border-color:var(--line-d)}
.row::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--red);transition:transform .5s var(--ease)}
/* the hover nudge moves the left cells with a transform, not padding, so the
   headline never re-wraps and the meta column stays anchored right */
.row>*:not(.rmeta){transition:transform .45s var(--ease)}
.row:hover{background:rgba(168,136,76,.05)}.row:hover>*:not(.rmeta){transform:translateX(16px)}.row:hover::after{transform:scaleX(1)}
.row .no{font-family:'Geist Mono';font-size:12px;color:var(--brass)}
.row h4{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(19px,1.7vw,24px);line-height:1.16;color:var(--ink)}
.dark .row h4,.dark2 .row h4{color:#fff}
.row .rmeta{font-family:'Geist Mono';font-size:11px;color:var(--ink2);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;display:flex;align-items:center;gap:14px}
.row .rmeta .arr{color:var(--brass)}
/* paper-ink tokens (--ink2 / --brass-ink) fall under 4.5:1 on navy; the dark
   variants use the house muted-navy text (#8EA4BA, 6.3:1) and brass-on-navy (#D9BE82, 9:1) */
.dark .row .rmeta,.dark2 .row .rmeta{color:#8EA4BA}
.dark .rows .no,.dark2 .rows .no,.dark .row .no,.dark2 .row .no{color:#D9BE82}
@media(max-width:680px){.row{grid-template-columns:34px 1fr}.row .rmeta{display:none}}

/* stat band */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.dark .stats,.dark2 .stats{background:var(--line-d);border-color:var(--line-d)}
.stat{background:var(--paper);padding:30px 26px}
.dark .stat,.dark2 .stat{background:var(--navy2)}
.stat .fig{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:300;font-size:clamp(34px,4vw,54px);line-height:.95;letter-spacing:-.02em;color:var(--navy)}
.dark .stat .fig,.dark2 .stat .fig{color:#fff}
.stat .lab{font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);margin-top:10px}
.dark .stat .lab,.dark2 .stat .lab{color:var(--paleblue)}

/* chips / tags */
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tag{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2);border:1px solid var(--line);border-radius:20px;padding:6px 12px}
.dark .tag,.dark2 .tag{color:#bccadb;border-color:rgba(255,255,255,.16)}
.since{display:inline-flex;align-items:center;gap:8px;font-family:'Geist Mono';font-size:11px;letter-spacing:.04em;color:var(--ink2);border:1px solid rgba(168,136,76,.5);border-radius:20px;padding:7px 14px}
.since b{color:var(--brass);font-weight:500}

/* firm facts / reach callout (machine-citable entity block) */
.firmfacts{font-family:'Geist Mono';font-size:13px;line-height:1.65;color:var(--ink2);border-left:3px solid var(--brass);padding:14px 0 14px 18px}
.prose .firmfacts{max-width:var(--measure)}
.firmfacts .eyebrow{display:block;margin-bottom:8px}
.dark .firmfacts,.dark2 .firmfacts{color:#bccadb}

/* feature split */
.feature .grid-2{align-items:center}
.feature h2{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:300;font-size:clamp(34px,5vw,64px);line-height:1.0;letter-spacing:-.02em}
.feature .em{color:var(--brass)}
.paper .eyebrow,.paper2 .eyebrow,.paper .eyb,.paper .morelink,.paper .fresh,.paper .lab,.paper .num,.paper .sn,.paper .rv,.paper .ttl-h,.paper .card .num,.paper .tile .num,dl.jx-facts dt,.jxf-row dt,.paper .feature .em,.paper .crumb a{color:var(--brass-ink)}
.paper em,.paper2 em,.paper .ttl em,.paper2 .ttl em,.paper h2 em,.paper2 h2 em{color:var(--brass-ink)}
.paper .em,.paper2 .em,.paper span.em,.paper2 span.em{color:var(--brass-ink)}
h2.ttl,h3.ttl{margin:0}
.sr-only,.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.arc-stat .s a::after,.jxf-row dd a::after{content:"\00a0\2197";font-size:.85em;opacity:.7}
@media(min-width:1120px){.jx-selector{align-self:start;min-height:640px}}
html{overflow-x:clip}
.arc-stat .s a,.jxf-row dd a,.jx-regchip a{color:inherit;text-decoration:none;border-bottom:1px dotted currentColor;transition:border-color .2s}.arc-stat .s a:hover,.jxf-row dd a:hover,.jx-regchip a:hover{border-bottom-style:solid;color:var(--red-deep)}
.pix-wrap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 28px}@media(max-width:760px){.pix-wrap{grid-template-columns:1fr}}.pix{border-top:1px solid var(--line);padding:4px 0}.pix summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;padding:12px 0;font-weight:600;color:var(--navy)}.pix summary::-webkit-details-marker{display:none}.pix-n{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass-ink);margin-left:auto}.pix .pm{color:var(--brass-ink)}.pix[open] .pm{transform:rotate(45deg)}.pix-hub{display:inline-block;font-size:13px;color:var(--red-deep);margin:2px 0 8px}.pix-list{list-style:none;margin:0 0 12px;padding:0;columns:1}.pix-list li{font-size:14.5px;line-height:1.5;padding:3px 0}@media(max-width:560px){.pix-list a{display:inline-block;min-height:24px;padding:6px 0}.pix summary{padding:14px 0}}.pix-list li.d2{padding-left:18px;font-size:13.5px;color:var(--ink2)}.pix-list a{color:var(--ink)}.pix-list a:hover{color:var(--red-deep)}
.ph-motif svg{max-height:min(62vh,420px);width:auto;max-width:100%;display:block}
.plate-open{display:inline-block;margin:0 0 12px;font-size:13px;color:var(--brass);border-bottom:1px solid rgba(168,136,76,.4)}.plate-open:hover{color:#fff}
.rel-gens{font-size:15px;line-height:1.9;color:var(--ink2)}.rel-gens a{color:var(--navy);border-bottom:1px solid rgba(13,33,56,.25)}.rel-gens a:hover{color:var(--red-deep);border-color:currentColor}
.btn.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.45);box-shadow:none}.btn.ghost:hover{background:rgba(255,255,255,.08)}.paper .btn.ghost,.paper2 .btn.ghost{color:var(--ink);border-color:rgba(34,46,55,.35)}
.paper .card .more,.paper2 .card .more{color:var(--brass-ink)}
.paper .jxl-cap,.paper .faq summary .pm,.paper .faq-colo .ttl-h,.paper .since b,.paper .ordinal{color:var(--brass-ink)}
:root{--error:#E06C75;--error-ink:#B3261E}
.tile .num,.card .num,a.row .no,.feature .eyb,.rows .no{color:var(--brass-ink)}
.dark .card .num,.dark2 .card .num,.dark .tile .num,.dark a.row .no,.navy .card .num{color:var(--brass)}
.page-hero .since,.dark .since{color:var(--paleblue,#B9CBDD)}
.page-hero .alink.b,.dark .alink.b,.dark2 .alink.b{color:#fff}
button.btn,button.btn-ghost,button.btn-red{border:0;font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}

img{max-width:100%;height:auto}
.ptnr-photo,.people img{height:auto}
@media(max-width:560px){.f-col a{overflow-wrap:anywhere}.f-col a[href^="mailto:"]{overflow-wrap:normal;word-break:keep-all}.f-col.f-contact{grid-column:1/-1}}
.feature .eyb{font-family:'Geist Mono';font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass-ink);margin-bottom:18px}
.dark .feature .eyb,.dark2 .feature .eyb,.dark.feature .eyb,.dark2.feature .eyb,.feature.dark .eyb,.feature.dark2 .eyb{color:var(--brass)}
.feature p{font-size:clamp(16px,1.4vw,19px);line-height:1.65;color:var(--ink2);max-width:46ch}
.dark .feature p,.dark2 .feature p,.dark.feature p,.dark2.feature p{color:#c6d2e0}
.feat-list{display:flex;flex-direction:column;margin-top:26px;border-top:1px solid var(--line)}
.feat-list span{padding:15px 0;border-bottom:1px solid var(--line);font-size:15px;color:var(--ink);display:flex;align-items:center;gap:14px;transition:padding .35s var(--ease)}
.feat-list span:hover{padding-left:10px}
.feat-list span::before{content:"";width:6px;height:6px;background:var(--brass);border-radius:50%;flex:none}
.dark .feat-list,.dark .feat-list span,.dark2 .feat-list,.dark2 .feat-list span{border-color:var(--line-d)}.dark .feat-list span,.dark2 .feat-list span{color:#e6edf6}

/* FAQ accordion */
.faq{border-top:1px solid var(--line);max-width:var(--measure)}
.dark .faq,.dark2 .faq{border-color:var(--line-d)}
.faq details{border-bottom:1px solid var(--line)}
.dark .faq details,.dark2 .faq details{border-color:var(--line-d)}
.faq summary{list-style:none;cursor:pointer;padding:22px 0;display:flex;justify-content:space-between;gap:20px;align-items:center;font-weight:700;font-size:clamp(16px,1.4vw,19px);color:var(--navy)}
.dark .faq summary,.dark2 .faq summary{color:#fff}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pm{font-family:'Geist Mono';color:var(--brass);transition:transform .3s}
.faq details[open] summary .pm{transform:rotate(45deg)}
.faq .ans{padding:0 0 24px;font-size:clamp(15px,1.2vw,17px);line-height:1.7;color:var(--ink2);max-width:64ch}
.dark .faq .ans,.dark2 .faq .ans{color:#aebccb}

/* CTA band (reused at the close of every page) */
.cta-band{background:var(--navy2);color:#fff;text-align:center;border-top:1px solid rgba(168,136,76,.18)}
.cta-band .eyb{font-family:'Geist Mono';font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--brass)}
.cta-band h2{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:300;font-size:clamp(28px,3.6vw,50px);line-height:1.06;margin:18px auto 14px;max-width:20ch}
.cta-band p{color:#c4d0dc;max-width:54ch;margin:0 auto;line-height:1.6}
.cta-band .btn-row{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;margin-top:32px}

/* ============================ FOOTER ===================================== */
footer.site{background:#060e18;color:#7e90a6;padding:60px 0 44px;font-size:13px;line-height:1.85}
.f-top{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;flex-wrap:wrap;padding-bottom:30px;border-bottom:1px solid rgba(255,255,255,.1)}
.f-logo{font-weight:800;font-size:clamp(34px,5vw,60px);letter-spacing:-.02em;color:#fff}.f-logo .v{color:var(--red)}
.f-offices{font-family:'Geist Mono';font-size:11.5px;color:#7e90a6;line-height:2;text-align:right}
.f-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr)) minmax(max-content,1.15fr);gap:22px 20px;margin-top:30px}
.f-col h3,.f-col h5{color:#fff;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin:0 0 13px;line-height:1.3}.f-col .fadr{font-family:'Geist Mono';font-size:11px;line-height:1.7;color:#7e90a6;margin-top:4px}
.f-col a{display:block;margin-bottom:8px;color:#7e90a6;transition:.2s}.f-col a:hover{color:#fff}
.f-sys{margin-top:26px;font-family:'Geist Mono';font-size:11px;letter-spacing:.04em;color:#8A98A6;display:flex;align-items:center;gap:10px}
.f-sys .fd{width:6px;height:6px;border-radius:50%;background:var(--brass);animation:pulse 2.6s infinite}
.disc{margin-top:18px;font-size:12px;color:#8A98A6;line-height:1.7}
.ph-note{display:inline-block;margin-top:8px;font-family:'Geist Mono';font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass);border:1px solid rgba(168,136,76,.4);padding:3px 10px;border-radius:20px}

/* ============================ RESPONSIVE ================================= */
@media(max-width:980px){
  .grid-2,.grid-3,.feature .grid-2{grid-template-columns:1fr;gap:30px}
  .f-row{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:560px){
  .f-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 18px}
  .f-offices{text-align:left}
  .btn,.btn-ghost{width:100%;text-align:center}
  /* 44px hit targets (WCAG 2.5.8): the CTA box grows, the card floor gives back
     the same 6px so the arrow keeps its distance from the card edge */
  .card .more{min-height:44px;align-items:center}
  .card{padding-bottom:24px}
  .tile .more{display:inline-flex;align-items:center;min-height:44px;margin-top:4px}
  .tile{padding-bottom:18px}
  .f-col a{padding:10px 0;margin-bottom:0}
  .f-col h3,.f-col h5{margin-bottom:3px}
}

/* ============================================================================
   GLOBAL REACH — globe, fallback, count-up stats, office cards,
   capability tiles, region bands. (SPEC-G1 §4 — appended; brand-token safe.)
   ========================================================================== */

/* ---- the 3D globe shell --------------------------------------------------- */
/* Free-floating stage: transparent, no border, no box-shadow, overflow visible
   so the sphere + atmosphere glow bleed into the dark hero gradient and never
   read as a hard-cropped rectangle. */
#hd-globe{
  position:relative;width:100%;
  height:clamp(380px,58vh,640px);min-height:380px;
  margin-top:clamp(30px,5vh,56px);
  display:flex;align-items:center;justify-content:center;
  background:transparent;border:0;box-shadow:none;overflow:visible;
}
#hd-globe canvas{display:block;margin:0 auto;cursor:grab;background:transparent}
#hd-globe canvas:active{cursor:grabbing}
/* soft atmosphere bloom behind the sphere — a diffuse glow that fades fully to
   transparent (no hard edge / no framing band), so the globe reads as floating
   in space rather than sitting inside a circle or box. */
#hd-globe::before{
  content:"";position:absolute;top:50%;left:50%;
  width:120%;aspect-ratio:1/1;transform:translate(-50%,-50%);
  border-radius:50%;
  background:radial-gradient(circle at 50% 44%,rgba(49,113,168,.14),rgba(49,113,168,.05) 38%,transparent 66%);
  pointer-events:none;z-index:0;
}
#hd-globe>*{position:relative;z-index:1}

/* ---- fallback reveal logic (bulletproof, JS adds .globe-failed) ----------- */
/* #hd-globe-fallback is now a SIBLING of #hd-globe (globe.gl wipes the contents
   of #hd-globe, so the fallback can no longer live inside it). It is hidden by
   default; on failure the page adds .globe-failed to .globe-stage, which hides
   the empty globe shell and reveals the sibling fallback. .no-js does the same. */
#hd-globe-fallback{display:none}
.globe-failed #hd-globe,.no-js #hd-globe{display:none}
.globe-failed #hd-globe-fallback,.no-js #hd-globe-fallback{display:block}

.globe-fallback{
  margin-top:clamp(30px,5vh,56px);
  border:1px solid rgba(168,136,76,.28);border-radius:12px;
  background:linear-gradient(165deg,rgba(255,255,255,.035),rgba(255,255,255,0));
  padding:clamp(26px,4vw,42px);
}
.globe-fallback .gf-eyb{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--brass);margin-bottom:18px
}
.globe-fallback .gf-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:1px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.1);
  border-radius:8px;overflow:hidden
}
.globe-fallback .gf-cell{background:var(--navy2);padding:20px 22px;transition:background .35s}
.globe-fallback a.gf-cell:hover{background:#11293f}
.globe-fallback .gf-cell .gf-r{
  font-weight:700;font-size:15px;color:#fff;margin-bottom:7px;line-height:1.2
}
.globe-fallback .gf-cell .gf-n{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.04em;color:var(--paleblue)
}

/* ---- count-up stat band --------------------------------------------------- */
.reach-stats{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:1px;background:var(--line-d);border:1px solid var(--line-d)
}
.reach-stat{background:var(--navy2);padding:clamp(28px,4vw,44px) clamp(22px,3vw,34px);text-align:left}
.bignum{
  font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:300;
  font-size:clamp(40px,6vw,76px);line-height:.92;letter-spacing:-.02em;
  color:#fff;display:flex;align-items:baseline;gap:4px
}
.bignum .suffix{font-size:.45em;color:var(--brass);font-weight:400;letter-spacing:0}
.reach-stat .lab{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--paleblue);margin-top:14px;line-height:1.5
}
.reach-stat .note{font-size:13px;color:#9fb1c4;margin-top:8px;line-height:1.5}

/* ---- region band ---------------------------------------------------------- */
.region-band{padding:clamp(54px,7vh,96px) 0;border-top:1px solid var(--line)}
.region-band:nth-of-type(even){background:var(--paper2)}
.region-band .region-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:clamp(28px,4vh,44px)}
.region-band .region-kick{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--brass);margin-bottom:14px;display:flex;align-items:center;gap:12px
}
.region-band .region-kick::before{content:"";width:8px;height:8px;background:var(--red);flex:none}
.region-band h2{
  font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(28px,3.4vw,46px);
  line-height:1.04;letter-spacing:-.01em;color:var(--navy);max-width:18ch
}
.region-band .region-line{font-size:clamp(15px,1.2vw,17px);color:var(--ink2);max-width:46ch;line-height:1.6}
.region-band .region-count{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink2);white-space:nowrap;border:1px solid var(--line);border-radius:20px;padding:7px 14px
}

/* jurisdiction card (compact card variant for region grids) */
.jx-card{
  position:relative;display:block;padding:22px 22px 20px;
  border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;
  transition:transform .5s var(--ease),border-color .4s,box-shadow .5s var(--ease)
}
.jx-card::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--brass);transition:transform .45s var(--ease)}
.jx-card:hover{transform:translateY(-4px);border-color:#cdbf9a;box-shadow:0 24px 50px -34px rgba(13,33,56,.4)}
.jx-card:hover::before{transform:scaleX(1)}
.jx-card .jx-zone{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--brass)}
.jx-card h3{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(19px,1.6vw,23px);color:var(--navy);margin:11px 0 8px;line-height:1.16}
.jx-card p{color:var(--ink2);font-size:14px;line-height:1.55}
.jx-card .jx-more{
  display:inline-flex;gap:7px;align-items:center;margin-top:14px;
  font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink2);opacity:.7;transition:.35s
}
.jx-card:hover .jx-more{opacity:1;color:var(--navy);transform:translateX(3px)}

/* ---- office photo-cards (branded gradient city motif — no real photos) ---- */
.office-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.office-card{
  position:relative;display:block;border-radius:12px;overflow:hidden;
  border:1px solid rgba(255,255,255,.12);background:var(--navy2);
  min-height:340px;transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .4s
}
.office-card:hover{transform:translateY(-5px);border-color:rgba(168,136,76,.5);box-shadow:0 34px 64px -34px rgba(0,0,0,.6)}
.office-motif{position:absolute;inset:0;z-index:0;overflow:hidden}
.office-motif svg{position:absolute;inset:0;width:100%;height:100%}
.office-card .office-body{
  position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;
  height:100%;min-height:340px;padding:26px 26px 24px;
  background:linear-gradient(to top,rgba(6,14,24,.92) 8%,rgba(8,24,42,.35) 52%,transparent 78%)
}
.office-card .office-zone{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);margin-bottom:10px}
.office-card h3{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(26px,2.4vw,34px);color:#fff;line-height:1.0}
.office-card p{color:#bccadb;font-size:14px;line-height:1.55;margin-top:10px;max-width:34ch}
.office-card .office-more{
  display:inline-flex;gap:8px;align-items:center;margin-top:16px;
  font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:#fff;opacity:.6;transition:.35s
}
.office-card:hover .office-more{opacity:1;transform:translateX(3px)}

/* ---- capability tiles ("How our network works") -------------------------- */
.cap-tiles{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:1px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.08)
}
.cap-tile{position:relative;padding:30px 28px 28px;background:var(--navy2);transition:background .4s;overflow:hidden}
.cap-tile::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--brass);transition:transform .4s var(--ease)}
.cap-tile:hover{background:#11293f}.cap-tile:hover::before{transform:scaleX(1)}
.cap-tile .cap-ic{width:30px;height:30px;margin-bottom:16px}
.cap-tile .cap-ic svg{width:100%;height:100%;stroke:var(--brass);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.cap-tile h3{font-weight:700;font-size:17px;color:#fff;margin-bottom:10px;line-height:1.2}
.cap-tile p{color:#aebccb;line-height:1.6;font-size:13.5px}

@media(max-width:900px){
  .office-cards{grid-template-columns:1fr}
  .region-band .region-head{align-items:flex-start}
}

/* ---- reduced motion ------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  #hd-globe canvas{cursor:default}
  .jx-card:hover,.office-card:hover{transform:none}
}

/* ============================================================================
   G2 — CINEMATIC GLOBE STAGE · DETAIL PANEL · SELECTOR (appended)
   Brand tokens only. Reduced-motion safe. Mobile-aware. Additive — these
   rules layer onto the existing #hd-globe / .page-hero without replacing them.
   ========================================================================== */

/* ---- cinematic hero background (only on the page that has the globe) ------ */
.page-hero:has(.globe-stage){
  background:
    radial-gradient(120% 90% at 70% 8%, #0a1c2e 0%, #081726 46%, #060e18 100%);
}
/* deep starfield + soft vignette behind everything in the hero */
.page-hero:has(.globe-stage)::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:
    radial-gradient(1.4px 1.4px at 14% 22%, rgba(234,240,246,.55), transparent 60%),
    radial-gradient(1.2px 1.2px at 32% 64%, rgba(234,240,246,.40), transparent 60%),
    radial-gradient(1.6px 1.6px at 58% 18%, rgba(234,240,246,.50), transparent 60%),
    radial-gradient(1.1px 1.1px at 73% 52%, rgba(234,240,246,.35), transparent 60%),
    radial-gradient(1.5px 1.5px at 86% 30%, rgba(234,240,246,.50), transparent 60%),
    radial-gradient(1.1px 1.1px at 46% 84%, rgba(234,240,246,.30), transparent 60%),
    radial-gradient(1.3px 1.3px at 9% 74%, rgba(234,240,246,.40), transparent 60%),
    radial-gradient(1.2px 1.2px at 64% 90%, rgba(234,240,246,.28), transparent 60%),
    radial-gradient(1.5px 1.5px at 92% 78%, rgba(234,240,246,.42), transparent 60%),
    radial-gradient(1.1px 1.1px at 24% 40%, rgba(234,240,246,.34), transparent 60%);
  background-repeat:no-repeat;
  -webkit-mask-image:radial-gradient(120% 100% at 50% 36%,#000 55%,transparent 100%);
  mask-image:radial-gradient(120% 100% at 50% 36%,#000 55%,transparent 100%);
  opacity:.8;
}
.page-hero:has(.globe-stage)::after{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(80% 70% at 50% 42%,transparent 52%,rgba(4,9,16,.55) 100%);
}
.page-hero:has(.globe-stage) .wrap{position:relative;z-index:2}

/* ---- globe + selector layout --------------------------------------------- */
.globe-stage{
  display:grid;grid-template-columns:minmax(0,1fr) clamp(260px,24vw,340px);
  gap:clamp(20px,3vw,40px);align-items:center;
  margin-top:clamp(28px,5vh,56px);
}
/* taller, centred globe shell (overrides the earlier height) */
.globe-stage #hd-globe{
  height:clamp(440px,66vh,720px);min-height:440px;margin-top:0;
}
.globe-failed .globe-stage,.globe-stage.globe-failed{grid-template-columns:1fr}

/* ---- selector: search + region pills + scrollable chips ------------------- */
.jx-selector{
  position:relative;z-index:2;align-self:stretch;
  display:flex;flex-direction:column;
  border:1px solid rgba(168,136,76,.28);border-radius:14px;
  background:linear-gradient(165deg,rgba(255,255,255,.05),rgba(255,255,255,.012));
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  padding:18px 16px 14px;max-height:clamp(440px,66vh,720px);overflow:hidden;
}
.jxs-head{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.jxs-eyb{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass)}
.jxs-search{position:relative;display:flex;align-items:center}
.jxs-search svg{position:absolute;left:12px;width:15px;height:15px;stroke:var(--paleblue);fill:none;stroke-width:1.7;stroke-linecap:round;opacity:.7;pointer-events:none}
.jxs-search input{
  width:100%;padding:11px 14px 11px 36px;font-family:'Archivo',sans-serif;font-size:13.5px;color:#fff;
  background:rgba(6,14,24,.55);border:1px solid rgba(255,255,255,.12);border-radius:8px;outline:none;
  transition:border-color .3s,background .3s
}
.jxs-search input::placeholder{color:var(--paleblue);opacity:.7}
.jxs-search input:focus{border-color:rgba(168,136,76,.6);background:rgba(6,14,24,.7)}
.jxs-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.jxs-tab{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.04em;color:var(--paleblue);
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:20px;
  padding:5px 11px;cursor:pointer;transition:.28s;white-space:nowrap
}
.jxs-tab:hover{border-color:rgba(168,136,76,.5);color:#fff}
.jxs-tab.is-active{background:var(--brass);border-color:var(--brass);color:var(--navy3);font-weight:500}
.jxs-list{
  flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px;
  padding-right:4px;scrollbar-width:thin;scrollbar-color:rgba(168,136,76,.5) transparent
}
.jxs-list::-webkit-scrollbar{width:7px}
.jxs-list::-webkit-scrollbar-thumb{background:rgba(168,136,76,.45);border-radius:8px}
.jxs-list::-webkit-scrollbar-track{background:transparent}
.jxs-chip{
  display:flex;align-items:center;gap:10px;text-align:left;width:100%;
  padding:9px 11px;border:1px solid transparent;border-radius:8px;background:transparent;cursor:pointer;
  transition:transform .25s var(--ease),background .25s,border-color .25s
}
.jxs-chip:hover{background:rgba(255,255,255,.05);border-color:rgba(168,136,76,.4);transform:translateX(3px)}
.jxs-dot{width:7px;height:7px;border-radius:50%;background:var(--brass);flex:none;box-shadow:0 0 8px rgba(168,136,76,.7)}
.jxs-chip.is-office .jxs-dot{background:var(--red);box-shadow:0 0 8px rgba(58,170,52,.8)}
/* the name never clips or shrinks; the zone tag takes what is left and wraps to
   a second line (right-aligned) when the descriptor is long */
.jxs-chip-name{flex:0 0 auto;max-width:100%;font-size:13.5px;color:#fff;font-weight:500;line-height:1.25;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word}
.jxs-chip-zone{flex:1 1 0;min-width:0;text-align:right;font-family:'Geist Mono';font-size:10.5px;letter-spacing:.03em;line-height:1.35;text-transform:uppercase;color:var(--paleblue);white-space:normal;overflow-wrap:anywhere}
.jxs-empty{font-size:13px;color:var(--paleblue);opacity:.8;padding:14px 4px}

/* ---- detail panel: glass drawer (right) ---------------------------------- */
.hd-panel-overlay{
  position:fixed;inset:0;z-index:300;background:rgba(4,9,16,.55);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  opacity:0;transition:opacity .34s var(--ease)
}
.hd-panel-overlay.show{opacity:1}
.hd-panel{
  position:fixed;top:0;right:0;bottom:0;z-index:310;
  width:clamp(320px,30vw,460px);max-width:100vw;
  display:flex;flex-direction:column;
  background:linear-gradient(160deg,#11293f,#0a1c2e);
  border-left:1px solid rgba(168,136,76,.4);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:-40px 0 80px -40px rgba(0,0,0,.7);
  transform:translateX(100%);opacity:0;
  transition:transform .4s var(--ease),opacity .4s var(--ease)
}
.hd-panel.show{transform:translateX(0);opacity:1}
.hd-panel[hidden]{display:none!important}
.hp-head{
  position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;gap:14px;
  padding:24px 22px 18px;border-bottom:1px solid rgba(168,136,76,.22);
  background:linear-gradient(160deg,#13304a,#0c2236)
}
.hp-head-in{flex:1;min-width:0}
.hp-flagrow{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.hp-flag{font-size:22px;line-height:1}
.hp-region{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass)}
.hp-name{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(24px,2.4vw,32px);line-height:1.05;color:#fff}
.hp-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.hp-chip{
  display:inline-flex;flex-direction:column;gap:2px;max-width:100%;
  font-size:11.5px;line-height:1.35;color:#dbe6f1;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);
  border-radius:8px;padding:7px 10px
}
.hp-chip-k{font-family:'Geist Mono';font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass)}
.hp-close{
  flex:none;width:36px;height:36px;border-radius:8px;cursor:pointer;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  display:flex;align-items:center;justify-content:center;transition:.28s
}
.hp-close:hover{background:rgba(58,170,52,.85);border-color:rgba(58,170,52,.85)}
.hp-close svg{width:16px;height:16px;stroke:#fff;stroke-width:2;stroke-linecap:round}
.hp-body{flex:1;min-height:0;overflow-y:auto;padding:20px 22px 8px;scrollbar-width:thin;scrollbar-color:rgba(168,136,76,.5) transparent}
.hp-body::-webkit-scrollbar{width:8px}
.hp-body::-webkit-scrollbar-thumb{background:rgba(168,136,76,.4);border-radius:8px}
.hp-body::-webkit-scrollbar-track{background:transparent}
.hp-sec{padding:0 0 18px;margin-bottom:18px;border-bottom:1px solid rgba(255,255,255,.07)}
.hp-sec:last-child{border-bottom:0;margin-bottom:0}
.hp-sec h3{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);margin-bottom:9px}
.hp-sec p{font-size:14px;line-height:1.66;color:#cfdbe7}
.hp-foot{
  position:sticky;bottom:0;z-index:2;display:flex;flex-direction:column;gap:9px;
  padding:16px 22px 20px;border-top:1px solid rgba(168,136,76,.22);
  background:linear-gradient(0deg,#0a1c2e,rgba(10,28,46,.9))
}
.hp-cta{
  display:block;text-align:center;padding:13px 18px;border-radius:6px;
  font-family:'Geist Mono';font-size:11.5px;letter-spacing:.05em;font-weight:500;
  background:var(--red-deep);color:#fff;transition:transform .4s var(--ease),box-shadow .4s var(--ease);
  box-shadow:0 12px 30px -16px rgba(58,170,52,.6)
}
.hp-cta:hover{transform:translateY(-2px)}
.hp-cta.ghost{background:transparent;color:#fff;border:1px solid rgba(168,136,76,.5);box-shadow:none}
.hp-cta.ghost:hover{background:rgba(168,136,76,.16)}
body.hd-panel-open{overflow:hidden}

/* ---- improved globe tooltip (globe.gl renders pointLabel HTML) ------------ */
.globe-tip{
  display:flex;flex-direction:column;gap:3px;min-width:140px;max-width:240px;
  padding:11px 13px;border-radius:9px;
  background:linear-gradient(160deg,rgba(17,41,63,.97),rgba(10,28,46,.97));
  border:1px solid rgba(168,136,76,.45);
  box-shadow:0 18px 40px -18px rgba(0,0,0,.7);
  font-family:'Archivo',sans-serif
}
.globe-tip .gt-kind{font-family:'Geist Mono';font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass)}
.globe-tip.is-office .gt-kind{color:var(--red)}
.globe-tip .gt-name{font-size:15px;font-weight:600;color:#fff;line-height:1.15}
.globe-tip .gt-sub{font-size:11.5px;color:var(--paleblue);line-height:1.3}
.globe-tip .gt-cta{margin-top:4px;font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#F4F2EC;opacity:1}
/* globe.gl wraps labels in .scene-tooltip — keep it unstyled/transparent */
.scene-tooltip{background:transparent!important;border:0!important;padding:0!important;box-shadow:none!important;font-family:'Archivo',sans-serif}

/* ---- HTML map markers (G3 — clickable nodes on the globe) ----------------- */
/* Large invisible hit target + visible glowing dot + hover/always label.
   Hubs (Chicago/London/Dubai) = bigger red dot, always labeled; reach = brass
   dot, label on hover. NB: globe.js tags hub markers with class "hub" (kind),
   so the hub rules MUST target .hd-marker.hub. The legacy .office selector is
   kept alongside for back-compat in case anything still emits that class. */
.hd-marker{position:relative;transform:translate(-50%,-50%);cursor:pointer;font-family:'Geist Mono',monospace}
.hd-marker .hdm-hit{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%);border-radius:50%}
.hd-marker .hdm-dot{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:11px;height:11px;border-radius:50%;background:var(--brass);box-shadow:0 0 0 2px rgba(10,28,42,.6),0 0 10px 2px rgba(168,136,76,.6);transition:transform .2s,box-shadow .2s}
.hd-marker.hub .hdm-dot,.hd-marker.office .hdm-dot{width:16px;height:16px;background:var(--red);box-shadow:0 0 0 2px rgba(10,28,42,.7),0 0 14px 3px rgba(58,170,52,.7)}
/* readable labels — white on solid dark navy, brass hairline, soft shadow */
.hd-marker .hdm-lab{position:absolute;left:16px;top:50%;transform:translateY(-50%);white-space:nowrap;font-size:13px;font-weight:500;letter-spacing:.02em;color:#fff;background:#0a1c2e;border:1px solid rgba(168,136,76,.55);border-radius:5px;padding:3px 9px;opacity:0;pointer-events:none;transition:opacity .2s;text-shadow:0 1px 2px rgba(0,0,0,.85);box-shadow:0 2px 8px rgba(0,0,0,.45)}
.hd-marker.hub .hdm-lab,.hd-marker.office .hdm-lab{font-size:14px;font-weight:600;left:18px}
.hd-marker.hub .hdm-lab,.hd-marker.office .hdm-lab{opacity:.96}
.hd-marker:hover .hdm-lab,.hd-marker:focus .hdm-lab{opacity:1}
.hd-marker:hover .hdm-dot{transform:translate(-50%,-50%) scale(1.5)}
@media(max-width:720px){.hd-marker .hdm-hit{width:40px;height:40px}.hd-marker.reach .hdm-lab{display:none}}
@media(prefers-reduced-motion:reduce){.hd-marker .hdm-dot{transition:none}}

/* ---- responsive: selector stacks under the globe; panel -> bottom sheet --- */
@media(max-width:900px){
  .globe-stage{grid-template-columns:1fr;gap:18px}
  .jx-selector{max-height:none}
  .jxs-list{max-height:300px}
  .globe-stage #hd-globe{height:clamp(380px,52vh,520px);min-height:380px}
}
@media(max-width:720px){
  .hd-panel{
    top:auto;left:0;right:0;bottom:0;width:100%;max-width:100%;
    max-height:88vh;border-left:0;border-top:1px solid rgba(168,136,76,.4);
    border-radius:16px 16px 0 0;transform:translateY(100%);
    box-shadow:0 -40px 80px -40px rgba(0,0,0,.7)
  }
  .hd-panel.show{transform:translateY(0)}
}

/* ---- reduced motion (G2 additions) --------------------------------------- */
@media(prefers-reduced-motion:reduce){
  .hd-panel,.hd-panel-overlay,.hp-cta,.jxs-chip{transition:opacity .01ms!important;transform:none!important}
  .hd-panel.show{transform:none!important}
  .jxs-chip:hover{transform:none}
  .page-hero:has(.globe-stage)::before{opacity:.55}
}

/* ============================================================================
   G4 — GLOBAL REACH REDESIGN (cinematic situation-room)
   Appended; brand-token only; mobile + prefers-reduced-motion safe.
   Layers over the G1/G2/G3 rules above. Scoped to .gr-* classes + the
   .region-plate explorer + premium panel additions so other pages are untouched.
   ========================================================================== */

/* ---- HERO: deeper stage + 3-col editorial / globe / index layout ---------- */
.gr-hero{padding:clamp(120px,16vh,176px) 0 clamp(48px,7vh,84px)}
/* full-width 3-column hero: let the wrap widen well beyond the default 1280
   measure so the three columns (copy · globe · index) get real room. */
.gr-hero .wrap{max-width:min(1640px,95vw)}
.gr-hero-grid{
  display:grid;grid-template-columns:minmax(0,0.85fr) minmax(0,1.35fr);
  gap:clamp(28px,4vw,64px);align-items:center;
}
/* THREE columns — center globe widest, flanked by copy (left) + index (right).
   Center column is vertically centred; flanking columns top-aligned. */
.gr-hero-3col{
  grid-template-columns:minmax(300px,0.95fr) minmax(460px,1.6fr) minmax(320px,0.9fr);
  gap:clamp(24px,2.6vw,48px);align-items:center;
}
.gr-hero-3col .gr-hero-copy{align-self:center}
.gr-hero-3col .jx-selector{align-self:center}
.gr-hero-copy{position:relative;z-index:3;max-width:46ch}
/* inherits .page-hero h1 (Newsreader 400). Every other hero on the site is the
   serif, and the emphasis inside it must stay the SAME family in italic. */
.gr-hero .gr-hero-copy h1{
  font-size:clamp(2.4rem,5vw,4rem);line-height:1.02;letter-spacing:-.02em;
  margin-top:18px;max-width:14ch
}
.gr-hero .gr-hero-copy h1 em{font-style:italic;font-weight:300;color:var(--brass)}
.gr-hero .gr-hero-copy .sub{max-width:48ch}
.gr-affordance{
  display:inline-flex;align-items:center;gap:10px;margin-top:26px;
  font-family:'Geist Mono';font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--paleblue);opacity:.78
}
/* P2: the pulsing dot turned the affordance caption into a nudge, so it is off.
   The span.gr-aff-dot in global-reach/index.html can be deleted too. */
.gr-aff-dot{display:none}

/* hero globe stage occupies the CENTER column ALONE — flanked by copy (left)
   and the Jurisdiction Index (right). It is a large, transparent, SQUARE,
   FREE-FLOATING canvas, CENTRED in its column. overflow is visible so the
   sphere + atmosphere may bleed VERTICALLY (up/down) into the dark hero
   gradient — its neighbours are now left/right, so vertical bleed is safe.
   It must NOT bleed horizontally (that would overlap the flanking columns). */
.gr-hero .globe-stage{
  position:relative;display:flex;justify-content:center;align-items:center;
  margin-top:0;overflow:visible;background:transparent;border:0;box-shadow:none;
}
/* SQUARE canvas — critical. globe.gl fits the sphere to the SMALLER of the
   canvas width/height, so a 1:1 aspect ratio driven off the (centred) column
   width guarantees the whole sphere + atmosphere has transparent margin on ALL
   four sides at the idle altitude. Width stays at/under the column so the canvas
   never overlaps the copy or index horizontally; it may grow TALLER than the
   column (overflow visible) to fill the center optically. */
.gr-hero .globe-stage #hd-globe{
  width:100%;max-width:none;aspect-ratio:1/1;height:auto;
  max-height:min(86vh,820px);min-height:440px;margin:0 auto;
  background:transparent;border:0;box-shadow:none;overflow:visible;
}
/* no-WebGL: let the sibling fallback grid size the shell naturally */
.gr-hero .globe-failed #hd-globe,.gr-hero.globe-failed #hd-globe{
  height:auto;min-height:0
}
/* the .globe-stage is display:flex in the hero — when failed, let the revealed
   sibling fallback fill the full stage width (it replaces the hidden globe). */
.gr-hero .globe-stage.globe-failed,.globe-stage.globe-failed{display:block}
.globe-stage.globe-failed #hd-globe-fallback{width:100%;margin-top:0}
/* the glass rail is now the RIGHT column of the 3-col hero — a self-contained
   panel with its own max-height + internal scroll (the list keeps its masked
   fade). It never overlaps the globe (separate grid column). */
.gr-hero .jx-selector{
  position:relative;z-index:3;width:100%;margin-top:0;
  display:flex;flex-direction:column;
  max-height:min(78vh,640px);overflow:hidden;
}

/* ---- GLASS RAIL refinements (polished glass, not a box) ------------------- */
.jx-selector{
  border:1px solid rgba(168,136,76,.18);border-radius:16px;
  background:rgba(13,33,56,.55);
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
  box-shadow:0 30px 70px -40px rgba(0,0,0,.75);
  padding:20px 16px 16px;
}
/* inner top-highlight so it reads as glass catching light */
.jx-selector::before{
  content:"";position:absolute;left:14px;right:14px;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);
  pointer-events:none
}
.jxs-eyb{letter-spacing:.16em}
.jxs-tabs{gap:5px;margin-bottom:6px}
/* understated text tabs with a sliding brass underline (no filled pills) */
.gr-hero .jxs-tab,.jxs-selector .jxs-tab{
  background:transparent;border:0;border-radius:0;padding:6px 2px 8px;
  font-family:'Geist Mono';font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--paleblue);opacity:.78;position:relative;transition:color .28s,opacity .28s
}
.gr-hero .jxs-tab::after{
  content:"";position:absolute;left:2px;right:2px;bottom:2px;height:2px;
  background:var(--brass);transform:scaleX(0);transform-origin:left;
  transition:transform .35s var(--ease)
}
.gr-hero .jxs-tab:hover{opacity:1;color:#fff}
.gr-hero .jxs-tab.is-active{opacity:1;color:var(--brass)}
.gr-hero .jxs-tab.is-active::after{transform:scaleX(1)}
.jxs-count{
  font-family:'Geist Mono';font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:#8EA4BA;opacity:1;margin:4px 2px 8px
}
/* list dissolves at top/bottom rather than hard-clipping; as the right-column
   panel's flexible body it fills the remaining height and scrolls within. */
.gr-hero .jxs-list{
  flex:1 1 auto;min-height:0;max-height:none;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 14px,#000 calc(100% - 14px),transparent);
  mask-image:linear-gradient(180deg,transparent,#000 14px,#000 calc(100% - 14px),transparent)
}
/* rows: name (serif) + right-aligned brass zone tag, hairline divider, lift+tick */
.jxs-chip{
  padding:11px 11px 11px 13px;border-radius:8px;border:1px solid transparent;
  border-bottom:1px solid rgba(255,255,255,.05)
}
.jxs-chip:hover,.jxs-chip.is-active{
  background:rgba(255,255,255,.05);border-color:transparent;transform:translateX(4px);
  box-shadow:inset 2px 0 0 var(--brass)
}
.jxs-chip-name{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:15px;line-height:1.25}
.jxs-chip-zone{font-size:10.5px;color:var(--brass);}
.jxs-chip.is-hub .jxs-dot{background:var(--red);box-shadow:0 0 8px rgba(58,170,52,.8)}

/* ---- CREDIBILITY BAND refinements (restrained 4-up) ---------------------- */
.gr-cred{padding:clamp(40px,5vh,68px) 0}
.gr-cred .reach-stats{
  grid-template-columns:repeat(4,1fr);background:transparent;border:0;gap:0
}
.gr-cred .reach-stat{
  background:transparent;text-align:center;padding:clamp(16px,2vw,26px) clamp(14px,2vw,30px);
  border-left:1px solid rgba(168,136,76,.22)
}
.gr-cred .reach-stat:first-child{border-left:0}
.gr-cred .bignum{justify-content:center;font-size:clamp(32px,4.4vw,56px)}
.gr-cred .gr-stat-word{font-size:clamp(22px,2.8vw,34px);letter-spacing:-.01em}
.gr-cred .reach-stat .lab{text-align:center;color:var(--paleblue);opacity:.85;margin-top:12px}
.gr-cred-note{
  margin-top:24px;font-family:'Geist Mono';font-size:11px;letter-spacing:.05em;
  color:var(--paleblue);opacity:.7;max-width:72ch;line-height:1.55
}
.gr-inline-link{color:var(--brass);border-bottom:1px solid rgba(168,136,76,.4)}

/* ---- REGION EXPLORER — exclusive accordion of plates --------------------- */
.gr-explorer .region-plates{
  border-top:1px solid rgba(168,136,76,.18);
}
.region-plate{
  position:relative;border-bottom:1px solid rgba(168,136,76,.18);
  transition:opacity .42s var(--ease)
}
/* dim the closed plates while one owns attention */
.region-plates.has-open .region-plate:not(.is-open){opacity:.4}
.region-plate .plate-head{
  width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;
  gap:clamp(16px,2.4vw,40px);text-align:left;background:transparent;border:0;cursor:pointer;
  padding:clamp(22px,3vh,34px) 4px;transition:padding .4s var(--ease)
}
.region-plate .plate-num{
  font-family:'Geist Mono';font-size:12px;letter-spacing:.1em;color:var(--brass);
}
.region-plate .plate-name{
  display:block;font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;
  font-size:clamp(24px,3vw,42px);line-height:1.05;letter-spacing:-.01em;color:#fff;text-decoration:none
}
/* the region name is a link to its region hub; sits inside the toggle button */
a.plate-name{cursor:pointer;transition:color .3s var(--ease)}
a.plate-name:hover,a.plate-name:focus-visible{color:var(--brass);text-decoration:underline;text-underline-offset:4px}
.region-plate .plate-line{
  display:block;margin-top:8px;font-size:clamp(14px,1.1vw,16px);color:var(--paleblue);
  opacity:.82;line-height:1.55;max-width:54ch
}
.region-plate .plate-meta{display:flex;align-items:center;gap:18px;white-space:nowrap}
.region-plate .plate-count{
  font-family:'Geist Mono';font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--paleblue);opacity:.85;border:1px solid rgba(168,136,76,.3);border-radius:20px;padding:6px 13px
}
/* rotating brass + indicator (no chevrons) */
.region-plate .plate-toggle{position:relative;width:16px;height:16px;flex:none}
.region-plate .plate-toggle::before,
.region-plate .plate-toggle::after{
  content:"";position:absolute;left:50%;top:50%;background:var(--brass);
  transition:transform .42s var(--ease),opacity .42s var(--ease)
}
.region-plate .plate-toggle::before{width:16px;height:1.5px;transform:translate(-50%,-50%)}
.region-plate .plate-toggle::after{width:1.5px;height:16px;transform:translate(-50%,-50%)}
.region-plate.is-open .plate-toggle::after{transform:translate(-50%,-50%) rotate(90deg);opacity:0}
.region-plate.is-open .plate-toggle::before{transform:translate(-50%,-50%) rotate(180deg)}
.region-plate .plate-head:hover .plate-name{color:#fff}
.region-plate .plate-head:hover .plate-count{border-color:rgba(168,136,76,.6);color:#fff}
/* expanded jurisdiction index — multi-column, NOT cards */
.region-plate .plate-body{padding:0 4px clamp(14px,2.4vh,30px)}
.region-plate .plate-index{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:2px 22px;border-top:1px solid rgba(168,136,76,.14);padding-top:14px
}
.plate-jx{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  width:100%;text-align:left;background:transparent;border:0;cursor:pointer;
  padding:11px 8px;border-radius:6px;
  border-bottom:1px solid rgba(255,255,255,.05);
  transition:background .25s,transform .25s var(--ease),box-shadow .25s
}
.plate-jx:hover{background:rgba(255,255,255,.05);transform:translateX(4px);box-shadow:inset 2px 0 0 var(--brass)}
.plate-jx-name{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-size:16px;color:#fff;line-height:1.2}
.plate-jx-zone{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--brass);white-space:nowrap}

/* ---- PREMIUM PANEL additions (icons, brass chips, facilitators callout) --- */
.hd-panel{border-left:0}
.hd-panel::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
  background:linear-gradient(180deg,var(--brass),rgba(168,136,76,.2));z-index:3;pointer-events:none
}
.hp-body{max-width:none}
.hp-body .hp-sec p{max-width:58ch}
/* section heading: line-icon + mono micro-label */
.hp-sec h3{display:flex;align-items:center;gap:9px}
.hp-ic{width:15px;height:15px;flex:none;stroke:var(--brass);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
/* brass-outline chips for System / Regulator */
.hp-chip{
  flex-direction:row;align-items:center;gap:8px;
  background:transparent;border:1px solid rgba(168,136,76,.35);border-radius:20px;
  padding:6px 12px;font-size:11.5px
}
.hp-chip-k{font-family:'Geist Mono';font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass)}
.hp-chip-v{color:#dbe6f1}
/* "Facilitators on the ground" callout — brass-tint + left bar */
.hp-facilitators{
  position:relative;background:rgba(168,136,76,.08);
  border:1px solid rgba(168,136,76,.22);border-radius:10px;
  padding:16px 16px 16px 20px!important;margin-bottom:18px
}
.hp-facilitators::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;background:var(--brass);border-radius:2px}
.hp-facilitators h3{color:var(--brass)}
/* staggered fade-up assembly per section */
.hd-panel.show .hp-sec{animation:hpRise .5s var(--ease) both;animation-delay:calc(.06s * var(--i,0))}
@keyframes hpRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---- CTA close: dark band keeps brand; ghost button readable ------------- */
.gr-cta h2{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:300;max-width:24ch}

/* ---- RESPONSIVE: under ~1100px stack to ONE column — copy → globe → index -- */
@media(max-width:1100px){#hd-globe{min-height:0;max-height:min(80vw,560px)}.gr-hero-copy,.jx-selector,.jxs-selector,.globe-stage,#hd-globe{min-width:0;max-width:100%}.gr-hero .wrap{min-width:0}
  /* back to the standard measure when stacked */
  .gr-hero .wrap{max-width:var(--maxw)}
  .gr-hero-grid,.gr-hero-3col{
    grid-template-columns:minmax(0,1fr);gap:clamp(24px,4vh,40px);align-items:start
  }
  .gr-hero-copy{max-width:60ch;order:1;align-self:start}
  .gr-hero .gr-hero-copy h1{max-width:18ch}
  /* globe in the MIDDLE of the stack, re-centred, full width */
  .gr-hero .globe-stage{display:flex;justify-content:center;order:2;overflow:visible}
  /* stacked single column is full-width, so tie height to a roughly square,
     uncropped frame and let it bleed (overflow visible) rather than box it. */
  .gr-hero .globe-stage #hd-globe{
    width:min(100%,560px);height:auto;aspect-ratio:1/1;
    max-height:clamp(420px,80vw,560px);min-height:420px;overflow:visible;margin:0 auto
  }
  /* index LAST, full width, top-aligned with a capped scroll list */
  .gr-hero .jx-selector{order:3;align-self:start;max-height:none;overflow:visible}
  .gr-hero .jxs-list{flex:0 1 auto;max-height:clamp(300px,40vh,360px)}
}
@media(max-width:760px){
  .gr-cred .reach-stats{grid-template-columns:1fr 1fr}
  .gr-cred .reach-stat{border-left:0;border-top:1px solid rgba(168,136,76,.16);padding-top:22px}
  .gr-cred .reach-stat:first-child,.gr-cred .reach-stat:nth-child(2){border-top:0}
  .region-plate .plate-head{grid-template-columns:1fr auto;row-gap:6px}
  .region-plate .plate-num{grid-column:1;font-size:11px}
  .region-plate .plate-meta{grid-column:2;grid-row:1}
  .region-plate .plate-lead{grid-column:1 / -1}
  .region-plate .plate-index{grid-template-columns:1fr}
}

/* ---- REDUCED MOTION (G4 additions) --------------------------------------- */
@media(prefers-reduced-motion:reduce){
  .gr-aff-dot{animation:none}
  .region-plate,.region-plates.has-open .region-plate:not(.is-open){transition:none}
  .region-plate .plate-toggle::before,.region-plate .plate-toggle::after{transition:none}
  .plate-jx:hover,.jxs-chip:hover,.jxs-chip.is-active{transform:none}
  .hd-panel.show .hp-sec{animation:none}
  .gr-hero .jxs-tab::after{transition:none}
}

/* ============ CINEMATIC SCROLL (JS rAF engine in site.js — universal) ============ */
/* site.js cineEngine() sets opacity/transform per frame; kill transitions so it scrubs with scroll. */
html.cine .reveal{transition:none}
html.cine .page-hero .bgwash,html.cine .page-hero .gridtex{will-change:transform}
@media(prefers-reduced-motion:reduce){html.cine .reveal{opacity:1!important;transform:none!important}}


/* ===== App-feel navigation: cross-document View Transitions (progressive) ===== */
@view-transition{navigation:auto}
@media(prefers-reduced-motion:no-preference){
::view-transition-old(root){animation:vtOut .28s var(--ease) both}
::view-transition-new(root){animation:vtIn .3s var(--ease) both}
@keyframes vtOut{to{opacity:0}}
@keyframes vtIn{from{opacity:0}}
}

/* ================= SUBPAGE CINEMA — grammar, thread, motifs, arc ================= */
/* dash-on-vis primitive: any pathLength=1 stroke with data-dash draws itself when its
   .reveal root latches .vis (engine sets it at p>0.99). Direction = authoring direction. */
html.cine [data-dash]{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.6s cubic-bezier(.22,.61,.36,1)}
html.cine .vis [data-dash]{stroke-dashoffset:0}
html.cine .dg1[data-dash],html.cine .dg1 [data-dash]{transition-delay:.6s}
html.cine .dg2[data-dash],html.cine .dg2 [data-dash]{transition-delay:.85s}
html.cine .dg3[data-dash],html.cine .dg3 [data-dash]{transition-delay:1.1s}
html.cine .dg4[data-dash],html.cine .dg4 [data-dash]{transition-delay:1.35s}
html.cine .mf-slow [data-dash],html.cine .mf-slow[data-dash]{transition-duration:2.2s}
html.cine .dgo{opacity:0;transition:opacity .7s var(--ease)}
html.cine .dg1.dgo{transition-delay:.6s}html.cine .dg2.dgo{transition-delay:.85s}
html.cine .dg3.dgo{transition-delay:1.1s}html.cine .dg4.dgo{transition-delay:1.35s}
html.cine .vis .dgo{opacity:1}
html.cine .dgr{opacity:0;transition:opacity .6s var(--ease) 1.5s}
html.cine .vis .dgr{opacity:1}
/* hero entrance — 'the case opens' (children only; engine owns the wrap) */
html.cine .page-hero .crumb{animation:heroRise .7s var(--ease) .05s both}
html.cine .page-hero .eyrow{animation:heroRise .7s var(--ease) .15s both}
html.cine .page-hero .eyrow .rule{transform-origin:left;animation:ruleGrow .6s var(--ease) .25s both}
html.cine .page-hero h1{animation:heroRise .9s var(--ease) .22s both}
html.cine .page-hero .redrule{animation-delay:.55s}
html.cine .page-hero .sub{animation:heroRise .8s var(--ease) .42s both}
@keyframes heroRise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes ruleGrow{from{transform:scaleX(0)}}
/* motif mounts */
.ph-motif{position:absolute;right:4vw;top:50%;transform:translateY(-50%);width:min(44vw,620px);z-index:1;pointer-events:none;opacity:.85}
.ph-band{position:absolute;left:0;right:0;bottom:30px;z-index:1;pointer-events:none;opacity:.9}
.ph-motif svg,.ph-band svg{display:block;width:100%;height:auto;overflow:visible}
.ph-motif .mono9,.ph-band .mono9{font-family:'Geist Mono';font-size:8.5px;letter-spacing:.08em;fill:var(--paleblue)}
@media(max-width:899px){.ph-motif,.ph-band{display:none}}
/* the margin thread (subpage ledger) */
#pledger{position:absolute;left:0;top:0;z-index:1;pointer-events:none;overflow:visible}
#pledger .spine{fill:none;stroke:var(--brass);stroke-width:1.4;opacity:.55;stroke-linecap:round}
#pledger .spine-ink{fill:none;stroke:#15314D;stroke-width:1.6;stroke-linecap:round}
#pledger .head{fill:#fff;filter:drop-shadow(0 0 6px rgba(168,136,76,.9))}
#pledger .term{fill:var(--brass);opacity:0;transform-box:fill-box;transform-origin:center}
#pledger .term.on{opacity:1;animation:plPulse 2.6s ease-in-out infinite}
#pledger .pl-tick{stroke:var(--brass);stroke-width:1;opacity:0;transition:opacity .4s}
#pledger .pl-num{font-family:'Geist Mono';font-size:9.5px;fill:var(--brass);opacity:0;transition:opacity .4s}
#pledger .pl-tick.lit{opacity:.6}#pledger .pl-num.lit{opacity:.6}
@keyframes plPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.5)}}
body.has-pthread main>section>.wrap,body.has-pthread .cta-band .wrap{position:relative;z-index:2}
@media(prefers-reduced-motion:reduce){#pledger .term{animation:none}#pledger .head{display:none}}
/* THE LEDGER TABLE OF CONTENTS — the ticks the thread stamps in the margin lane (site.js).
   Marginalia, NOT chrome: no box, no border, no background, no rail, no progress bar and no
   heavy active state. #led-toc is document-absolute by default (the same lane model as
   #pledger / #ledger); if the script ever runs it viewport-fixed it must set position inline,
   which wins over this rule. Each tick's left/top are set by the script from laneG(). */
#led-toc{position:absolute;left:0;top:0;width:100%;height:0;z-index:2;pointer-events:none}
.led-tick{position:absolute;left:0;top:0;display:flex;align-items:center;gap:7px;white-space:nowrap;
  overflow:hidden;font-family:'Geist Mono',ui-monospace,monospace;font-size:10px;line-height:1;
  color:var(--brass);text-decoration:none;opacity:0;pointer-events:none;
  transition:opacity .55s var(--ease),color .3s var(--ease)}
.led-tick .lt-n{flex:none;font-style:normal;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:.04em;opacity:1;color:#8EA4BA}
.led-tick .lt-t{position:relative;display:none;flex:0 1 auto;min-width:0;text-transform:uppercase;letter-spacing:.06em;overflow:hidden;text-overflow:ellipsis}
.led-tick .lt-t::after{content:"";position:absolute;left:0;right:100%;bottom:-3px;height:1px;background:currentColor;opacity:.55;transition:right .35s var(--ease)}
/* stamped as the thread passes; once stamped it stays */
.led-tick.on{opacity:.55;pointer-events:auto}
.led-tick.here{opacity:1}
.led-tick.on:hover .lt-t::after,.led-tick:focus-visible .lt-t::after{right:0}
/* second value for ticks sitting over a paper section, where brass alone reads too light */
.led-tick.pap{color:var(--ink)}
.led-tick.pap.on{opacity:.5}
.led-tick.pap.here{opacity:.9}
/* focus must never land on a tick the reader cannot see, and the sitewide navy focus halo is
   far too heavy for a 10px mark in the margin. Last, so it outranks every state above */
.led-tick:focus,.led-tick.pap:focus{opacity:1}
.led-tick:focus-visible{opacity:1;outline:1px solid var(--brass);outline-offset:4px;box-shadow:none}
/* the margin thread already stamps a bare numeral in this same lane. Where the ticks carry the
   numbers, the script puts .has-ledtoc on <body> and the older numeral stands down (no stutter) */
body.has-ledtoc #pledger .pl-num{display:none}
/* the two-word label only appears where the margin lane is genuinely wide enough to hold it, and
   the tick is capped to that lane at every step, so it can never run into the text column. Below
   1440 the numeral alone is the mark. (Lane from laneG() to the copy edge: 84px at 1440, 172px
   at 1600, 276px at 1800.) */
@media(min-width:1440px){.led-tick{max-width:78px}.led-tick .lt-t{display:inline-block}}
@media(min-width:1600px){.led-tick{max-width:150px}.led-tick .lt-t{letter-spacing:.1em}}
@media(min-width:1800px){.led-tick{max-width:240px}}
@media(prefers-reduced-motion:reduce){.led-tick,.led-tick .lt-t::after{transition:none}}
/* doctrine-lede margin annotation */
.gx-rule{position:absolute;left:-34px;top:6px;bottom:6px;width:1px;background:var(--brass);opacity:.35;transform-origin:top;pointer-events:none}
/* THE ARC — how this work actually runs */
.arc-sec{background:var(--navy3);color:#fff;position:relative;overflow:hidden;padding:clamp(72px,10vh,120px) 0}
.arc-sec .ttl{color:#fff}
.arc-sec .lede{color:#b9cbdd}
.arc{list-style:none;margin:0;padding:96px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:28px;position:relative;counter-reset:arcst}
.arc-st .k{font-family:'Geist Mono';font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass)}
.arc-st h3{font-weight:700;font-size:18px;color:#dfe7f0;margin:12px 0 8px;transition:color .5s}
.arc-st p{color:#8fa2b8;font-size:14px;line-height:1.6}
html.cine .arc .arc-st{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:calc(.5s + var(--i,0)*.28s)}
html.cine .arc.vis .arc-st{opacity:1;transform:none}
html.cine .arc.vis .arc-st h3{color:#fff}
.arc-rail{position:absolute;left:0;top:22px;width:100%;height:60px;overflow:visible;pointer-events:none}
.arc-rail path{fill:none;stroke:var(--brass);stroke-width:1.4;opacity:.7}
.arc-rail circle{fill:rgba(168,136,76,.2);stroke:var(--brass);stroke-width:1.2;opacity:0;transition:opacity .5s var(--ease)}
html.cine .arc.vis .arc-rail circle{opacity:1}
.arc-rail circle.end{stroke:var(--red);fill:rgba(58,170,52,.2)}
.arc-out{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-size:clamp(20px,2vw,27px);color:#cdd8e6;margin-top:44px;max-width:56ch;line-height:1.4}
.arc-out .rd{color:var(--brass);font-style:italic}
.arc-out .rd:empty{display:inline-block;width:1.4em;height:2px;background:var(--brass);vertical-align:.3em;margin-right:.5em}
.arc-stat{margin-top:34px;display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.arc-stat .n{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-size:clamp(34px,3.6vw,54px);color:#fff;line-height:1;font-variant-numeric:tabular-nums}
.arc-stat .l{font-size:13.5px;color:#8fa2b8;max-width:44ch}
.arc-stat .s{font-family:'Geist Mono';font-size:10px;letter-spacing:.08em;color:var(--brass);}
@media(prefers-reduced-motion:reduce){html.cine .arc .arc-st{opacity:1;transform:none}.arc-rail circle{opacity:1}}

.arc-st{position:relative}
.arc-st::before{content:'';position:absolute;top:-52px;left:50%;margin-left:-5px;width:10px;height:10px;border:1.2px solid var(--brass);border-radius:50%;background:rgba(168,136,76,.15);opacity:0;transition:opacity .5s var(--ease);transition-delay:calc(.5s + var(--i,0)*.28s)}
html.cine .arc.vis .arc-st::before{opacity:1}
.arc-st:last-child::before{border-color:var(--red);background:rgba(58,170,52,.15)}
.arc-rail path{vector-effect:non-scaling-stroke}
@media(prefers-reduced-motion:reduce){.arc-st::before{opacity:1}}

/* ============ GLOBAL REACH SUPERCHARGE ============ */
/* staged globe entrance (fires when globe.js confirms a canvas) */
html.cine .gr-hero .globe-stage{animation:gsIn 1.1s var(--ease) .35s both}
@keyframes gsIn{from{opacity:0;transform:scale(.965)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.gr-hero .globe-stage{opacity:1!important;transform:none!important}}
/* cascade animates marker CHILDREN only — globe.gl owns the marker element's transform */
html.cine .globe-ready .hd-marker .hdm-dot{animation:mkPop .5s var(--ease) both;animation-delay:calc(var(--mi,0)*35ms)}
@keyframes mkPop{from{opacity:0;transform:translate(-50%,-50%) scale(.4)}}
html.cine .globe-ready .hd-marker.hub .hdm-lab{animation:mkLab .5s var(--ease) both;animation-delay:calc(var(--mi,0)*35ms + .18s)}
@keyframes mkLab{from{opacity:0}}
@media(prefers-reduced-motion:reduce){html.cine .globe-ready .hd-marker .hdm-dot,html.cine .globe-ready .hd-marker.hub .hdm-lab{animation:none}}
/* atlas marker states (set via HD_globe.setNodeState) */
.hd-marker.is-dim{opacity:.15!important;pointer-events:none}
.hd-marker.is-far{opacity:0!important;pointer-events:none}
/* the active chapter hub is sacred — outranks every dim/far state */
.hd-marker.is-hub-active{opacity:1!important;pointer-events:auto}
.hd-marker.is-hub-active .hdm-lab{opacity:1!important}
.hd-marker.is-hub-active .hdm-dot{transform:translate(-50%,-50%) scale(1.15)}
.hd-marker.is-lit{opacity:1!important}
.hd-marker.is-marquee{filter:drop-shadow(0 0 8px rgba(168,136,76,.9))}
/* THE ATLAS ACT */
.atlas-sec{padding:0;position:relative}
.atlas-act{position:relative}
.atlas-pin{position:sticky;top:0;height:100vh;overflow:hidden}
.atlas-stage{position:absolute;inset:0;z-index:0}
.atlas-stage .globe-stage{width:100%;height:100%}
.atlas-hud{position:absolute;right:var(--gutter);top:9vh;text-align:right;z-index:3;pointer-events:none}
.atlas-hud .n{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-size:clamp(44px,5.4vw,78px);color:#fff;line-height:1;font-variant-numeric:tabular-nums}
.atlas-hud .l{font-family:'Geist Mono';font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--brass);margin-top:10px}
.atlas-ch{position:absolute;left:var(--gutter);bottom:9vh;z-index:3;max-width:480px;opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease),transform .5s var(--ease);pointer-events:none}
.atlas-ch.on{opacity:1;transform:none;pointer-events:auto}
.atlas-ch .k{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--brass);margin-bottom:10px}
.atlas-ch h3{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(26px,2.8vw,40px);color:#fff;letter-spacing:-.01em;margin:0 0 10px}
.atlas-ch p{color:#b9cbdd;font-size:14.5px;line-height:1.6;margin:0 0 14px}
.atlas-resolve{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:min(720px,84vw);text-align:center;z-index:3;opacity:0;transition:opacity .7s var(--ease);pointer-events:none}
.atlas-resolve.on{opacity:1}
.atlas-resolve .r{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-weight:400;font-size:clamp(26px,3.2vw,44px);line-height:1.2;color:#fff}
.atlas-resolve .r em{font-style:italic;color:var(--brass)}
.gs-keeper{position:relative}.gs-keeper .globe-stage{height:100%}
@media(max-width:1119px),(prefers-reduced-motion:reduce){.atlas-sec{display:none!important}}
/* jurisdiction fact ledger */
.jx-facts{margin:0;display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--line)}
.jxf-row{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:18px;padding:13px 0;border-bottom:1px solid var(--line)}
.jxf-row dt{font-family:'Geist Mono';font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);padding-top:2px}
.jxf-row dd{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink)}
@media(max-width:640px){.jxf-row{grid-template-columns:1fr;gap:4px}}
/* jurisdiction locator + compare drawer */
.jx-locator{margin-top:30px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(180deg,#0D2138,#08182a);padding:14px;overflow:hidden}
.jxl-cap{font-family:'Geist Mono';font-size:11px;letter-spacing:.18em;color:var(--brass);margin:2px 2px 10px}
.jx-locator .jx-self{filter:drop-shadow(0 0 7px rgba(168,136,76,.9))}
.hd-panel.jx-cmp{width:clamp(660px,58vw,920px)}
.jx-pick-in{width:100%;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:8px;color:#fff;font-size:14px;padding:11px 14px;margin-bottom:12px}
.jx-pick-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:52vh;overflow:auto}
.jx-pick-btn{display:flex;flex-direction:column;gap:2px;text-align:left;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:10px 12px;color:#dfe7f0;cursor:pointer;transition:.25s;font-size:13.5px}
.jx-pick-btn span{font-family:'Geist Mono';font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--brass);opacity:.8}
.jx-pick-btn:hover{border-color:rgba(168,136,76,.5);background:rgba(168,136,76,.1)}
.jx-cmp-heads{display:grid;grid-template-columns:110px 1fr 1fr;gap:12px;padding-bottom:10px;border-bottom:1px solid rgba(168,136,76,.3)}
.jx-cmp-heads b{color:#fff;font-size:14px}
.jx-cmp-row{display:grid;grid-template-columns:110px 1fr 1fr;gap:12px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.jx-cmp-row .k{font-family:'Geist Mono';font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);padding-top:2px}
.jx-cmp-row .a,.jx-cmp-row .b{font-size:12.5px;line-height:1.55;color:#c6d2e0}
.jx-cmp-foot{display:flex;justify-content:space-between;gap:14px;margin-top:16px;font-size:13px}
.jx-cmp-foot a{color:#fff;border-bottom:1px solid rgba(168,136,76,.4)}
.jx-back{background:none;border:none;color:var(--brass);cursor:pointer;font-family:'Geist Mono';font-size:11px;letter-spacing:.06em}
@media(max-width:720px){.jx-pick-list{grid-template-columns:1fr}.jx-cmp-heads,.jx-cmp-row{grid-template-columns:84px 1fr 1fr}}

::view-transition-group(jx-title){animation-duration:.38s}

/* ============ FORCED COLORS (Windows High Contrast / forced-colors:active) ============ */
/* System themes drop backgrounds and box-shadows: anchor-buttons lose their fill,
   the brass focus halo vanishes, and filled chips flatten. Borders in currentColor
   (LinkText on anchors, ButtonText on buttons) and a Highlight outline keep every
   control and focus stop visible; links regain an underline where colour alone
   distinguished them. */
@media(forced-colors:active){
  .btn,.btn-ghost,.btn-red,button.btn,button.btn-ghost,button.btn-red,.nav-toggle,.jxs-tab,.jxs-chip,.hp-cta,.jx-pick-btn,.jx-back,.plate-toggle,.nav-mega,.jx-selector,.card,.tile,.stat,.faq details{border:1px solid currentColor}
  .jxs-tab.is-active,.jxs-chip.is-active{outline:2px solid Highlight;outline-offset:-2px}
  .prose a,.ans a,.f-col a,.rel-gens a,.pix-list a,.arc-stat .s a,.jxf-row dd a,.jx-regchip a,.card .more,.tile .more,.nav-mega a,.crumb a,.alink{text-decoration:underline;text-underline-offset:2px}
  .nav-links a:hover,.nav-links a[aria-current]{text-decoration:underline}
  a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible,.btn.red:focus-visible,.led-tick:focus-visible,.jxs-chip:focus-visible,.hd-marker:focus-visible,.skip:focus{outline:3px solid Highlight;outline-offset:2px;box-shadow:none}
  input,textarea,select{border:1px solid FieldText}
  .jxs-dot,.redrule{forced-color-adjust:none}
}

/* ===== Field Notes columns (2026-10-28): dek, pen-name byline, in-brief, asides, boxes, pull quotes, tables, sources, masthead line ===== */
.page-hero .sub.dek{font-family:'Newsreader','Newsreader Fallback',Georgia,serif;font-style:italic;font-size:clamp(18px,1.6vw,22px);line-height:1.5;color:#dbe3ec;max-width:60ch;margin-top:22px}
.page-hero .sub.byline{margin-top:14px;font-size:clamp(14px,1.1vw,16px)}
.page-hero .byline .pen{color:var(--brass);font-weight:600;letter-spacing:.01em}
.prose .inbrief{border-top:2px solid var(--brass);border-bottom:1px solid rgba(34,46,55,.14);padding:18px 0 16px;margin:0 0 34px}
.prose .inbrief h2{font-family:'Geist Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);margin:0 0 10px}
.prose .inbrief ul{margin:0;padding-left:18px;font-size:clamp(15px,1.15vw,17px);line-height:1.5}
.prose .inbrief li+li{margin-top:6px}
.prose p.aside{font-size:clamp(14px,1.05vw,15.5px);line-height:1.55;color:#4a5560;border-left:2px solid var(--brass);padding:4px 0 4px 18px;margin-left:0;font-style:italic;max-width:56ch}
.prose .box{border:1px solid rgba(34,46,55,.18);border-left:3px solid var(--brass);background:rgba(13,33,56,.035);padding:20px 24px 18px;margin:34px 0;border-radius:4px}
.prose .box h3{font-family:'Geist Mono',ui-monospace,monospace;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);margin:0 0 12px}
.prose .box h3+h3{margin-top:18px}
.prose .box p,.prose .box li{font-size:clamp(15px,1.15vw,17px);line-height:1.55}
.prose .box p+p{margin-top:12px}
.prose .box ul,.prose .box ol{margin:8px 0 0;padding-left:20px}
.prose .box p+h3{margin-top:20px}
.prose blockquote.pull{margin:38px 0;padding-left:26px}
.prose table{width:100%;border-collapse:collapse;margin:30px 0;font-size:clamp(14px,1.05vw,15.5px);line-height:1.45}
.prose table th{font-family:'Geist Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;text-align:left;color:var(--navy);border-bottom:2px solid var(--brass);padding:8px 10px 8px 0;vertical-align:bottom}
.prose table td{border-bottom:1px solid rgba(34,46,55,.14);padding:10px 10px 10px 0;vertical-align:top}
.prose table tr:last-child td{border-bottom:none}
.prose .sources{margin-top:52px;padding-top:22px;border-top:1px solid rgba(34,46,55,.18)}
.prose .sources h2{font-family:'Geist Mono',ui-monospace,monospace;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);margin:0 0 14px}
.prose .sources ol{padding-left:22px;font-size:clamp(13.5px,1vw,15px);line-height:1.5;color:#3d4954}
.prose .sources li+li{margin-top:8px}
.prose .masthead-line{margin-top:30px;font-size:13.5px;font-style:italic;color:#5a6670}
@media(max-width:720px){.prose table{display:block;overflow-x:auto}.prose .box{padding:16px 16px 14px}}
