/* Upsurge India: site styles.
   One stylesheet for every page. Colours are the brand palette only; tints are the same colours at low alpha.
   Order: fonts, tokens, base, layout, type, brand, header, menu, controls, home, inner pages,
   strategy, team, contact, pitch, footer, motion, responsive, accessibility. */

/* ---------- fonts ---------- */
@font-face { font-family:'PPEiko'; src:url('fonts/PPEiko-Medium.woff2') format('woff2'); font-weight:500; font-display:swap; }
@font-face { font-family:'PPEiko'; src:url('fonts/PPEiko-Thin.woff2') format('woff2'); font-weight:200; font-display:swap; }

/* ---------- tokens ---------- */
:root {
  --midnight:#06162C; --navy:#0B2447; --paper:#F7F5F0; --cream:#F2E9D8;
  --azure:#6F9BEA; --cobalt:#2B5FBF;
  --mist:#AEB8C7; --fog:#C2CAD6; --label-d:#8FA0B8;
  --slate:#3A4453; --ink:#2A3340; --label-l:#646E7E;
  --rule-d:rgba(255,255,255,.11); --rule-d2:rgba(255,255,255,.2); --rule-l:#E5E0D5; --rule-l2:#D9D3C6;
  --rule-field:rgba(255,255,255,.36);  /* form field underline: at least 3:1 on navy and midnight (WCAG 1.4.11) */
  --lift:rgba(255,255,255,.028);
  --eiko:'PPEiko','Newsreader',Georgia,'Times New Roman',serif;
  --serif:'Newsreader',Georgia,'Times New Roman',serif;
  --sans:'Bricolage Grotesque',system-ui,-apple-system,'Segoe UI',sans-serif;
  --gutter:clamp(20px,4.4vw,64px);
  --gap:clamp(16px,1.9vw,28px);
  --sec:clamp(72px,7.6vw,120px);
  --sec-s:clamp(56px,5.4vw,84px);
  --head-h:76px;
  --ease:cubic-bezier(.2,.7,0,1);
  --ease-io:cubic-bezier(.7,0,.2,1);
  /* press feedback: quick in, a little slower out; :active swaps these for the scale transitions below */
  --pd:.2s; --pe:var(--ease);
}

/* ---------- base ---------- */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { -webkit-tap-highlight-color:transparent; -webkit-text-size-adjust:100%; text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:calc(var(--head-h) + 16px); scrollbar-color:rgba(111,155,234,.35) var(--midnight); }
body { background:var(--midnight); color:var(--paper); font-family:var(--sans); font-size:1rem; line-height:1.7; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; text-rendering:optimizeLegibility; overflow-x:clip; }
::selection { background:var(--cobalt); color:var(--paper); }
img, svg, canvas { display:block; max-width:100%; }
a { color:var(--azure); }
@media (hover:hover) and (pointer:fine) { a:hover { color:var(--paper); } }
button { font:inherit; color:inherit; }
ul, ol { list-style:none; }
h1, h2, h3, h4 { font-weight:inherit; }
address { font-style:normal; }
[hidden] { display:none !important; }
main:focus { outline:none; }
p + p { margin-top:1em; }
/* grid rows align their children to the same top edge */
:is(.phero-body, .shead, .statement, .split, .early-grid, .two, .contact, .foot-top, .next-inner, .hero-main) > p + p { margin-top:0; }
p, li, dd { text-wrap:pretty; }

/* ---------- layout ---------- */
.wrap { width:100%; max-width:1440px; margin-inline:auto; padding-inline:var(--gutter); }
.sec { position:relative; padding-block:var(--sec); }
.sec--s { padding-block:var(--sec-s); }
.sec--paper { background:var(--paper); color:var(--navy); }
.sec--navy { background:var(--navy); }
.sec--midnight { background:var(--midnight); }
/* never let two sections of one colour stack their padding */
.sec--paper + .sec--paper, .sec--navy + .sec--navy, .sec--midnight + .sec--midnight { padding-top:0; }
.mt-s { margin-top:16px; }
.mt-m { margin-top:clamp(24px,2.4vw,32px); }
.mt-l { margin-top:clamp(36px,3.6vw,52px); }
.mt-xl { margin-top:clamp(56px,6vw,88px); }

/* ---------- type ---------- */
.d-xl, .d-l, .d-m, .d-s { font-family:var(--eiko); font-weight:200; color:var(--paper); text-wrap:balance; }
.d-xl { font-size:clamp(3.1rem,7.3vw,7.4rem); line-height:.94; letter-spacing:-.027em; }
.d-l  { font-size:clamp(2.45rem,4.9vw,4.9rem); line-height:.99; letter-spacing:-.021em; }
.d-m  { font-size:clamp(2rem,3.3vw,3.3rem); line-height:1.04; letter-spacing:-.016em; }
.d-s  { font-size:clamp(1.55rem,2.05vw,2.05rem); line-height:1.1; letter-spacing:-.01em; }
.sec--paper .d-xl, .sec--paper .d-l, .sec--paper .d-m, .sec--paper .d-s { color:var(--navy); }
.lede { font-family:var(--serif); font-weight:300; font-size:clamp(1.18rem,1.5vw,1.42rem); line-height:1.5; color:var(--cream); }
.sec--paper .lede { color:var(--navy); }
.it { font-style:italic; }
.h-serif { font-family:var(--serif); font-weight:400; font-size:1.22rem; line-height:1.3; color:var(--paper); }
.sec--paper .h-serif { color:var(--navy); }
.body-l { font-size:clamp(1rem,1.1vw,1.075rem); line-height:1.72; color:var(--mist); }
.body { font-size:.95rem; line-height:1.72; color:var(--mist); }
.sec--paper .body-l, .sec--paper .body { color:var(--slate); }
.small { font-size:.85rem; line-height:1.6; color:var(--label-d); }
.sec--paper .small { color:var(--label-l); }
.label { font-family:var(--sans); font-weight:500; font-size:.75rem; line-height:1.45; letter-spacing:.2em; text-transform:uppercase; color:var(--label-d); }
.sec--paper .label { color:var(--label-l); }
.label--accent { color:var(--azure); }
.sec--paper .label--accent { color:var(--cobalt); }
.num { font-family:var(--eiko); font-weight:200; font-size:.95rem; line-height:1; letter-spacing:.02em; color:var(--azure); font-variant-numeric:tabular-nums; }
.sec--paper .num { color:var(--cobalt); }
.dot { display:inline-block; width:4px; height:4px; border-radius:50%; background:var(--azure); flex-shrink:0; }
.measure { max-width:60ch; }
.measure-s { max-width:44ch; }

/* section head: an accent label on a hairline, the heading, an optional aside */
.shead { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); align-items:end; margin-bottom:clamp(36px,4.2vw,64px); }
.shead > .label { grid-column:1 / -1; display:flex; align-items:center; gap:16px; margin-bottom:clamp(20px,2.2vw,32px); }
.shead > .label::after { content:''; flex:1; height:1px; background:var(--rule-d); transform-origin:left; }
.sec--paper .shead > .label::after { background:var(--rule-l2); }
.shead > h2 { grid-column:1 / span 6; }
.shead > .shead-aside { grid-column:7 / span 5; max-width:46ch; padding-bottom:.35em; }
.shead--tight { margin-bottom:clamp(28px,3vw,40px); }

/* ---------- brand: official outlined artwork (assets/brand/logo) ---------- */
.brand { display:inline-flex; align-items:center; text-decoration:none; line-height:0; }
.brand img { height:30px; width:auto; }
.brand--sig img { width:clamp(200px,16vw,236px); height:auto; }

/* ---------- header ---------- */
.site-header { position:sticky; top:0; z-index:100; background:var(--midnight); view-transition-name:site-header; transition:transform .4s var(--ease); }
.site-header::after { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--rule-d); transform:scaleX(0); transform-origin:left; transition:transform .5s var(--ease); }
.site-header.is-scrolled::after { transform:scaleX(1); }
.site-header.is-hidden { transform:translateY(-100%); }
.topnav { display:flex; align-items:center; justify-content:space-between; height:var(--head-h); }
.navlinks { display:flex; align-items:center; gap:clamp(20px,2.4vw,34px); }
.nav { position:relative; font-size:.84375rem; letter-spacing:.02em; color:var(--fog); text-decoration:none; white-space:nowrap; padding-block:6px; transition:color .2s; }
.nav::after { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; background:currentColor; transform:scaleX(0); transform-origin:right; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .nav:hover { color:var(--paper); }
.nav:hover::after { transform:scaleX(1); transform-origin:left; } }
.nav:focus-visible { color:var(--paper); }
.nav:focus-visible::after { transform:scaleX(1); transform-origin:left; }
.nav[aria-current="page"] { color:var(--paper); }
.nav[aria-current="page"]::before { content:''; position:absolute; left:50%; top:-9px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:var(--azure); }
.nav-actions { display:flex; gap:10px; margin-left:clamp(4px,.8vw,12px); }
.nav-box { position:relative; isolation:isolate; overflow:hidden; font-weight:500; font-size:.75rem; line-height:1; letter-spacing:.18em; text-transform:uppercase; color:var(--paper); text-decoration:none; border:1px solid var(--rule-d2); padding:13px 16px 12px; border-radius:1px; white-space:nowrap; transition:color .22s var(--ease), border-color .22s, scale var(--pd) var(--pe); }
.nav-box::before { content:''; position:absolute; inset:0; z-index:-1; background:var(--cream); transform:scaleX(0); transform-origin:right; transition:transform .3s var(--ease); }
.nav-box[aria-current="page"], .nav-box:focus-visible { color:var(--midnight); border-color:var(--cream); }
.nav-box[aria-current="page"]::before, .nav-box:focus-visible::before { transform:scaleX(1); transform-origin:left; }
@media (hover:hover) and (pointer:fine) { .nav-box:hover { color:var(--midnight); border-color:var(--cream); }
.nav-box:hover::before { transform:scaleX(1); transform-origin:left; } }
.hamburger { display:none; flex-direction:column; justify-content:center; gap:7px; width:44px; height:44px; margin-right:-10px; background:none; border:0; cursor:pointer; transition:scale var(--pd) var(--pe); }
.hamburger span { display:block; width:26px; height:1px; background:var(--cream); margin-left:auto; margin-right:9px; transform-origin:100% 50%; transition:transform .3s var(--ease); }
.hamburger span:last-child { transform:scaleX(.654); }
@media (hover:hover) and (pointer:fine) { .hamburger:hover span:last-child { transform:none; } }
.progress { position:absolute; left:0; bottom:0; height:1px; width:100%; background:var(--azure); transform:scaleX(0); transform-origin:left; z-index:1; }

/* ---------- mobile menu ---------- */
.mmenu { position:fixed; inset:0; z-index:200; background:var(--midnight); display:flex; flex-direction:column; padding:0 var(--gutter) 28px; overflow-y:auto; }
.mmenu-top { display:flex; align-items:center; justify-content:space-between; height:var(--head-h); flex-shrink:0; }
.mclose { position:relative; width:44px; height:44px; margin-right:-10px; background:none; border:0; cursor:pointer; transition:scale var(--pd) var(--pe); }
.mclose::before, .mclose::after { content:''; position:absolute; left:11px; right:11px; top:50%; height:1px; background:var(--cream); }
.mclose::before { transform:rotate(45deg); }
.mclose::after { transform:rotate(-45deg); }
.mnav { display:flex; flex-direction:column; margin-top:clamp(20px,5vh,56px); border-top:1px solid var(--rule-d); }
.mnav a { display:flex; align-items:baseline; gap:16px; font-family:var(--eiko); font-weight:200; font-size:clamp(2.1rem,9vw,3rem); line-height:1.1; letter-spacing:-.015em; color:var(--paper); text-decoration:none; border-bottom:1px solid var(--rule-d); padding:14px 0 16px; transform-origin:left center; }
.mnav a .num { font-size:.78rem; min-width:2em; }
.mnav a[aria-current="page"] { color:var(--azure); }
.mmenu-foot { margin-top:auto; padding-top:36px; display:grid; gap:16px; }
.mmenu-foot .btn { justify-content:center; text-transform:none; letter-spacing:.03em; font-size:.875rem; }
.js .mmenu { opacity:0; transition:opacity .3s ease; }
.js .mmenu.is-open { opacity:1; }
/* the entrance is done in about half a second; its delays apply to opacity and transform only, never to press feedback */
.js .mmenu .mnav a, .js .mmenu .mmenu-foot { opacity:0; transform:translateY(16px); transition:opacity .3s var(--ease), transform .4s var(--ease), scale var(--pd) var(--pe); }
.js .mmenu.is-open .mnav a, .js .mmenu.is-open .mmenu-foot { opacity:1; transform:none; }
.js .mmenu.is-open .mnav a { transition-delay:calc(var(--i,0) * 30ms + 40ms), calc(var(--i,0) * 30ms + 40ms), 0s; }
.js .mmenu.is-open .mmenu-foot { transition-delay:.2s, .2s, 0s; }

/* ---------- controls ---------- */
.chev { width:.78em; height:.72em; flex-shrink:0; fill:currentColor; overflow:visible; transition:transform .3s var(--ease); }
.btn { position:relative; isolation:isolate; overflow:hidden; display:inline-flex; align-items:center; gap:14px; font-weight:500; font-size:.75rem; line-height:1; letter-spacing:.18em; text-transform:uppercase; text-decoration:none; padding:18px 24px 17px; border:1px solid transparent; border-radius:1px; cursor:pointer; background:none; transition:color .22s var(--ease), border-color .22s, scale var(--pd) var(--pe); }
.btn::before { content:''; position:absolute; inset:0; z-index:-1; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .btn:hover .chev, .tlink:hover .chev, .path:hover .chev, .scard:hover .chev { transform:translate(3px,-3px); } }
.btn:focus-visible .chev, .tlink:focus-visible .chev, .path:focus-visible .chev, .scard:focus-visible .chev { transform:translate(3px,-3px); }
/* light: filled cream, empties towards the right on hover */
.btn--light { color:var(--midnight); border-color:var(--cream); }
.btn--light::before { background:var(--cream); transform-origin:right; }
@media (hover:hover) and (pointer:fine) { .btn--light:hover { color:var(--cream); }
.btn--light:hover::before { transform:scaleX(0); } }
.btn--light:focus-visible { color:var(--cream); }
.btn--light:focus-visible::before { transform:scaleX(0); }
/* ghost: hairline, fills from the left on hover */
.btn--ghost { color:var(--paper); border-color:var(--rule-d2); }
.btn--ghost::before { background:var(--cream); transform:scaleX(0); transform-origin:right; }
@media (hover:hover) and (pointer:fine) { .btn--ghost:hover { color:var(--midnight); border-color:var(--cream); }
.btn--ghost:hover::before { transform:scaleX(1); transform-origin:left; } }
.btn--ghost:focus-visible { color:var(--midnight); border-color:var(--cream); }
.btn--ghost:focus-visible::before { transform:scaleX(1); transform-origin:left; }
.btn:disabled { opacity:.6; cursor:progress; }
.tlink { position:relative; display:inline-flex; align-items:center; gap:11px; font-weight:500; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; color:var(--paper); text-decoration:none; padding:7px 0; transition:color .2s; }
.tlink::before { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; background:currentColor; transform-origin:left; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .tlink:hover { color:var(--paper); } .tlink:hover::before { transform:scaleX(0); transform-origin:right; } }
.tlink:focus-visible::before { transform:scaleX(0); transform-origin:right; }
.sec--paper .tlink { color:var(--navy); }
@media (hover:hover) and (pointer:fine) { .sec--paper .tlink:hover { color:var(--navy); } }
.actions { display:flex; flex-wrap:wrap; align-items:center; gap:16px 30px; }
.inline-link { color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; text-decoration-color:rgba(111,155,234,.6); transition:text-decoration-color .2s, color .2s; }
@media (hover:hover) and (pointer:fine) { .inline-link:hover { color:inherit; text-decoration-color:currentColor; } }
.inline-link:focus-visible { text-decoration-color:currentColor; }

/* guilloché ornaments */
.orn { position:absolute; pointer-events:none; color:var(--azure); }
/* weave: engraved bands on separate layers; each counter-rotates and cross-fades between two brand colours */
.weave-l { position:absolute; inset:0; translate:calc(var(--px,0) * var(--z,1) * 1px) calc(var(--py,0) * var(--z,1) * 1px); transition:translate 1.4s var(--ease); }
.weave-l > div { position:absolute; inset:0; -webkit-mask-size:100% 100%; mask-size:100% 100%; -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat; animation:spin var(--spin,200s) linear infinite; animation-direction:var(--dir,normal); }
.weave-l i { position:absolute; inset:0; }
.weave-l i + i { opacity:0; animation:tint var(--tint,18s) ease-in-out infinite; animation-delay:var(--delay,0s); }
@keyframes tint { 0%, 12% { opacity:0; } 45%, 62% { opacity:1; } 95%, 100% { opacity:0; } }
.spin { animation:spin 420s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }


/* ---------- home: hero ---------- */
.hero { position:relative; overflow:hidden; }
.hero .orn, .phero .orn { -webkit-mask-image:linear-gradient(180deg,#000 50%,rgba(0,0,0,.25) 78%,transparent 96%); mask-image:linear-gradient(180deg,#000 50%,rgba(0,0,0,.25) 78%,transparent 96%); }
.hero .orn { width:min(66vw,960px); aspect-ratio:1; right:max(-20vw,-300px); top:calc(50% - min(33vw,480px) - 3vh); }
.hero-inner { position:relative; z-index:1; min-height:calc(100svh - var(--head-h)); display:flex; flex-direction:column; padding-top:clamp(24px,4.5vh,48px); padding-bottom:clamp(24px,4vh,40px); }
.hero-kicker { display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; }
.hero-main { margin-top:auto; padding-top:clamp(48px,9vh,112px); display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:28px; align-items:end; }
.hero-main h1 { grid-column:1 / span 8; }
.hero-copy { position:relative; grid-column:9 / -1; padding-bottom:.5em; }
.hero-copy::before { content:''; position:absolute; inset:-18% -14%; z-index:-1; background:radial-gradient(closest-side, rgba(6,22,44,.82), rgba(6,22,44,0)); pointer-events:none; }
.hero-copy .actions { margin-top:26px; }
.ledger { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin-top:clamp(36px,6vh,64px); border-top:1px solid var(--rule-d); }
.ledger > div { display:flex; flex-direction:column-reverse; justify-content:flex-end; gap:8px; padding:20px 16px 0 0; }
.ledger > div + div { padding-left:clamp(14px,1.6vw,24px); border-left:1px solid var(--rule-d); }
.ledger dd { font-family:var(--eiko); font-weight:200; font-size:clamp(1.35rem,1.9vw,1.85rem); line-height:1.05; color:var(--paper); letter-spacing:-.005em; }

/* ---------- home: philosophy ---------- */
.statement { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:28px; align-items:start; }
.st-label { grid-column:1 / -1; display:flex; align-items:center; gap:16px; }
.st-label::after { content:''; flex:1; height:1px; background:var(--rule-l2); }
.st-title { grid-column:1 / span 6; }
.st-body { grid-column:7 / -1; padding-top:.5em; }
.st-body .lede { margin-bottom:26px; max-width:32ch; }

/* numbered list on the reading axis */
.tlist { display:grid; border-bottom:1px solid var(--rule-d); }
.sec--paper .tlist { border-color:var(--rule-l2); }
.tlist li { display:grid; grid-template-columns:44px minmax(0,1fr); padding:18px 0 20px; border-top:1px solid var(--rule-d); }
.sec--paper .tlist li { border-color:var(--rule-l2); }
.tlist li .num { padding-top:.4em; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .tlist li:hover .num { transform:translateX(4px); } }
.tlist .h-serif { font-size:1.15rem; margin-bottom:4px; }
.tlist--2 { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:var(--gap); border-bottom:0; }
.tlist--2 li { border-bottom:0; }

/* ---------- home: strategy cards ---------- */
.cards4 { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:var(--rule-d); border:1px solid var(--rule-d); }
.scard { position:relative; isolation:isolate; overflow:hidden; display:flex; flex-direction:column; min-height:clamp(340px,31vw,420px); padding:clamp(22px,2vw,30px); background:var(--navy); color:var(--paper); text-decoration:none; transition:scale var(--pd) var(--pe); }
.scard::before { content:''; position:absolute; inset:0; z-index:-1; background:var(--lift); opacity:0; transition:opacity .25s; }
@media (hover:hover) and (pointer:fine) { .scard:hover { color:var(--paper); }
.scard:hover::before { opacity:1; } }
.scard:focus-visible::before { opacity:1; }
.scard-top { display:flex; justify-content:space-between; align-items:flex-start; }
.emblem { width:clamp(78px,7.6vw,112px); aspect-ratio:1; color:var(--azure); opacity:.8; transition:transform .45s var(--ease), opacity .25s; }
@media (hover:hover) and (pointer:fine) { .scard:hover .emblem { transform:rotate(36deg) scale(1.04); opacity:1; } }
.scard:focus-visible .emblem { transform:rotate(36deg) scale(1.04); opacity:1; }
.scard-body { flex:1; display:flex; flex-direction:column; padding-top:clamp(36px,4.4vw,64px); }
.scard .d-s { font-size:clamp(1.4rem,1.75vw,1.75rem); margin:10px 0 14px; }
.scard .body { font-size:.9rem; }
.scard-go { display:inline-flex; align-items:center; gap:10px; margin-top:auto; padding-top:22px; font-weight:500; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; color:var(--fog); transition:color .2s; }
@media (hover:hover) and (pointer:fine) { .scard:hover .scard-go { color:var(--paper); } }
.scard:focus-visible .scard-go { color:var(--paper); }

/* pointer glow on cards: a soft azure light follows the cursor */
[data-glow]::after { content:''; position:absolute; inset:0; z-index:-1; pointer-events:none; background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%), rgba(111,155,234,.1), transparent 60%); opacity:0; transition:opacity .25s; }
@media (hover:hover) and (pointer:fine) { [data-glow]:hover::after { opacity:1; } }

/* ---------- home: early by design (engraved seal) ---------- */
.early-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:40px; align-items:center; }
.seal-wrap { grid-column:1 / span 6; display:grid; place-items:center; }
.seal { position:relative; width:min(100%,440px); aspect-ratio:1; color:var(--azure); }
.seal-morph { position:absolute; inset:0; }
.seal-morph canvas { width:100%; height:100%; }
.seal .mono { position:absolute; left:50%; top:50%; width:12%; height:auto; transform:translate(-36.7%,-63.9%); }
.early-copy { grid-column:7 / -1; }
.early-title { margin:20px 0 22px; font-family:var(--serif); font-style:italic; font-weight:300; font-size:clamp(2.1rem,3.5vw,3.4rem); line-height:1.08; letter-spacing:-.015em; color:var(--cream); }
.minikv { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:clamp(28px,3vw,40px); border-top:1px solid var(--rule-d); }
.minikv > div { padding-top:18px; display:grid; gap:6px; }
.minikv > div + div { padding-left:24px; border-left:1px solid var(--rule-d); }
.minikv dd { font-family:var(--serif); font-size:1.15rem; color:var(--paper); }

/* ---------- people and backbone ---------- */
.people { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:var(--gap); row-gap:36px; }
.people--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.person { display:grid; align-content:start; gap:12px; padding-top:22px; border-top:1px solid var(--rule-l2); }
.sec--navy .person, .sec--midnight .person { border-color:var(--rule-d); }
.person-meta { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; }
.person-meta .sep { width:16px; height:1px; background:currentColor; opacity:.45; }
.person-link { justify-self:start; padding-block:4px; font-weight:500; font-size:.75rem; line-height:1.45; letter-spacing:.18em; text-transform:uppercase; color:var(--cobalt); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
@media (hover:hover) and (pointer:fine) { .person-link:hover { color:var(--navy); } }
.two { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:24px; align-items:start; }
.two-head { grid-column:1 / span 5; display:grid; gap:8px; }
.two > .kv { grid-column:7 / -1; }
.sec--paper .kv > div { border-color:var(--rule-l2); }
.sec--paper .kv dd { color:var(--navy); }

/* ---------- pathways ---------- */
.paths { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--gap); }
.path { position:relative; isolation:isolate; overflow:hidden; display:flex; flex-direction:column; gap:14px; min-height:clamp(250px,23vw,320px); padding:clamp(26px,2.8vw,40px); border:1px solid var(--rule-d2); color:var(--paper); text-decoration:none; transition:border-color .22s, scale var(--pd) var(--pe); }
.path::before { content:''; position:absolute; inset:0; z-index:-1; background:var(--midnight); transform:scaleY(0); transform-origin:bottom; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .path:hover { color:var(--paper); border-color:rgba(111,155,234,.45); }
.path:hover::before { transform:scaleY(1); } }
.path:focus-visible { border-color:rgba(111,155,234,.45); }
.path:focus-visible::before { transform:scaleY(1); }
.path .d-s { max-width:16ch; }
.path .body { max-width:42ch; }
.path-go { margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:16px; padding-top:18px; font-weight:500; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; }
.ring { display:grid; place-items:center; width:44px; height:44px; border-radius:50%; border:1px solid var(--rule-d2); transition:background .25s var(--ease), border-color .25s, color .25s, translate 0s; }
.ring.is-released { transition:background .25s var(--ease), border-color .25s, color .25s, translate .35s var(--ease); }
@media (hover:hover) and (pointer:fine) { .path:hover .ring, .next:hover .ring { background:var(--cream); border-color:var(--cream); color:var(--midnight); } }
.path:focus-visible .ring, .next:focus-visible .ring { background:var(--cream); border-color:var(--cream); color:var(--midnight); }

/* ---------- next page band ---------- */
.next { position:relative; isolation:isolate; overflow:hidden; display:block; color:var(--paper); text-decoration:none; border-top:1px solid var(--rule-d); transition:scale var(--pd) var(--pe); }
.next::before { content:''; position:absolute; inset:0; z-index:-1; background:var(--midnight); transform:scaleY(0); transform-origin:bottom; transition:transform .35s var(--ease); }
@media (hover:hover) and (pointer:fine) { .next:hover { color:var(--paper); }
.next:hover::before { transform:scaleY(1); } }
.next:focus-visible::before { transform:scaleY(1); }
.next-inner { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); align-items:center; padding-block:clamp(44px,5vw,72px); }
.next-inner .label { grid-column:1 / span 6; }
.next-title { grid-column:7 / span 5; font-family:var(--eiko); font-weight:200; font-size:clamp(1.8rem,2.8vw,2.8rem); line-height:1.05; letter-spacing:-.014em; transition:transform .35s var(--ease); }
@media (hover:hover) and (pointer:fine) { .next:hover .next-title { transform:translateX(10px); } }
.next:focus-visible .next-title { transform:translateX(10px); }
.next .ring { grid-column:12; justify-self:end; }

/* ---------- inner page hero ---------- */
.phero { position:relative; overflow:hidden; }
.phero .orn { width:min(56vw,780px); aspect-ratio:1; right:max(-20vw,-260px); top:-34%; }
.phero-inner { position:relative; z-index:1; padding-top:clamp(44px,8vh,96px); padding-bottom:clamp(52px,6vw,88px); }
.phero-label { display:flex; align-items:center; gap:12px; margin-bottom:clamp(24px,3.6vh,40px); }
.phero-body { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:14px; align-items:start; margin-top:clamp(32px,3.8vw,52px); padding-top:22px; border-top:1px solid var(--rule-d); }
.phero-body > .label { grid-column:1 / span 6; }
.phero-body > p:not(.label) { grid-column:7 / -1; max-width:58ch; }

/* ---------- long form ---------- */
.split { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:28px; }
.split-head { grid-column:1 / span 5; }
.split-head .d-m { max-width:12ch; }
.split-head .sticky { position:sticky; top:calc(var(--head-h) + 36px); }
.split-head .label { margin-bottom:18px; }
.split-body { grid-column:7 / -1; }
.bigstate { max-width:24ch; font-family:var(--serif); font-weight:300; font-size:clamp(1.7rem,2.9vw,2.8rem); line-height:1.18; letter-spacing:-.012em; color:var(--cream); }
.sec--paper .bigstate { color:var(--navy); }
.quote-fig { text-align:center; }
.quote-mark { width:26px; margin:0 auto 28px; fill:var(--cobalt); }
.quote { text-wrap:balance; max-width:28ch; margin-inline:auto; font-family:var(--serif); font-style:italic; font-weight:300; font-size:clamp(1.75rem,3.2vw,3rem); line-height:1.18; letter-spacing:-.013em; color:var(--navy); }

/* ---------- strategy console ---------- */
.console { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); }
.console-tabs { display:none; }
.console-stage { grid-column:1 / -1; }
.stage-emblem { display:none; }
.stage-panels { display:grid; gap:0; }
.cpanel { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:12px; padding:clamp(28px,3vw,40px) 0; border-top:1px solid var(--rule-d); scroll-margin-top:calc(var(--head-h) + 24px); }
.cpanel > * { grid-column:1 / span 8; }
.cpanel-emblem { grid-column:10 / -1; grid-row:1 / span 4; justify-self:end; width:clamp(72px,9vw,120px); aspect-ratio:1; color:var(--azure); }
.cpanel .meta { display:flex; align-items:center; gap:14px; }
.cpanel .d-m { margin:6px 0 10px; }
.cpanel-text { max-width:52ch; }
.tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.tags li { font-size:.78125rem; letter-spacing:.02em; color:var(--fog); padding:7px 12px 8px; border:1px solid var(--rule-d); border-radius:40px; }

/* tabbed mode (wide screens, JavaScript on) */
.js .console.is-tabs .console-tabs { display:flex; flex-direction:column; grid-column:1 / span 5; align-self:start; border-top:1px solid var(--rule-d); }
.js .console.is-tabs .console-stage { grid-column:7 / -1; display:grid; align-content:start; }
.js .console.is-tabs .stage-emblem { display:block; position:relative; width:clamp(140px,12vw,176px); aspect-ratio:1; margin-bottom:clamp(20px,2.2vw,32px); color:var(--azure); }
.js .console.is-tabs .stage-panels { grid-template-areas:"p"; }
.js .console.is-tabs .cpanel { grid-area:p; display:block; padding:0; border:0; opacity:0; visibility:hidden; transform:translateY(10px); transition:opacity .2s ease, transform .3s var(--ease), visibility 0s linear .2s; }
.js .console.is-tabs .cpanel.is-active { opacity:1; visibility:visible; transform:none; transition:opacity .3s ease .06s, transform .4s var(--ease) .06s, visibility 0s; }
.js .console.is-tabs .cpanel-emblem { display:none; }
.js .console.is-tabs .cpanel .meta { margin-bottom:6px; }
.ctab { position:relative; display:grid; grid-template-columns:40px 1fr; row-gap:6px; align-items:baseline; width:100%; padding:20px 0 20px 18px; text-align:left; background:none; border:0; border-bottom:1px solid var(--rule-d); cursor:pointer; color:var(--label-d); transform-origin:left center; transition:scale var(--pd) var(--pe); }
.ctab::before { content:''; position:absolute; left:0; top:16px; bottom:16px; width:1px; background:var(--azure); transform:scaleY(0); transition:transform .3s var(--ease); }
.ctab[aria-selected="true"]::before { transform:scaleY(1); }
.ctab .num { grid-row:1 / span 2; color:var(--label-d); transition:color .2s; }
.ctab-name { font-family:var(--eiko); font-weight:200; font-size:clamp(1.3rem,1.75vw,1.75rem); line-height:1.1; color:var(--mist); transition:color .2s, transform .3s var(--ease); }
.ctab .label { grid-column:2; font-size:.75rem; }
@media (hover:hover) and (pointer:fine) { .ctab:hover .ctab-name { color:var(--paper); transform:translateX(4px); } }
.ctab:focus-visible .ctab-name { color:var(--paper); transform:translateX(4px); }
.ctab[aria-selected="true"] .ctab-name { color:var(--paper); }
.ctab[aria-selected="true"] .num { color:var(--azure); }
.stage-emblem > div { position:absolute; inset:0; }
.stage-emblem canvas { position:absolute; inset:0; width:100%; height:100%; transition:opacity .4s ease, transform .6s var(--ease); }
.stage-emblem canvas.is-entering { opacity:0; transform:rotate(-28deg) scale(.94); }
.stage-emblem canvas.is-leaving { opacity:0; transform:rotate(28deg) scale(1.03); }

/* process line */
.steps { position:relative; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); column-gap:var(--gap); padding-top:40px; }
.steps::before { content:''; position:absolute; left:0; right:0; top:0; height:1px; background:var(--rule-l2); }
.steps .draw { position:absolute; left:0; right:0; top:0; height:1px; background:var(--cobalt); transform:scaleX(0); transform-origin:left; transition:transform 2.2s var(--ease); }
.steps.is-in .draw { transform:scaleX(1); }
.step { position:relative; padding-right:8px; }
.step::before { content:''; position:absolute; top:-44px; left:0; width:9px; height:9px; border-radius:50%; background:var(--paper); border:1px solid var(--cobalt); transition:background .2s; }
@media (hover:hover) and (pointer:fine) { .step:hover::before { background:var(--cobalt); } }
.step .num { display:block; margin-bottom:14px; }
.step h3 { font-family:var(--serif); font-weight:400; font-size:1.18rem; line-height:1.3; margin-bottom:8px; color:var(--navy); }
.step p { font-size:.9rem; line-height:1.68; color:var(--slate); }

/* key terms and key-value lists */
.terms { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:clamp(24px,4vw,64px); }
.terms > div { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr); gap:18px; padding:18px 0; border-top:1px solid var(--rule-d); align-items:baseline; }
.terms dt, .kv dt, .minikv dt { font-weight:500; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; color:var(--label-d); }
.sec--paper .kv dt { color:var(--label-l); }
.terms dd { font-family:var(--serif); font-size:1.1rem; line-height:1.4; color:var(--paper); }
.terms-note { margin-top:32px; padding-top:18px; border-top:1px solid var(--rule-d); max-width:80ch; }
.kv > div { display:grid; grid-template-columns:minmax(120px,.8fr) 2fr; gap:20px; padding:16px 0; border-top:1px solid var(--rule-d); align-items:baseline; }
.kv > div:last-child { border-bottom:1px solid var(--rule-d); }
.kv dd { font-family:var(--serif); font-size:1.1rem; color:var(--paper); }

/* ---------- private markets: the two strategies, partners' logos, the credit line ---------- */
.cards4--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.scard .d-m { margin:10px 0 14px; }
.scard .minikv { margin-top:auto; margin-bottom:4px; }
.scard .minikv + .scard-go { margin-top:0; }
.cards4--2 .emblem { color:var(--paper); }
/* partner logos: one cream tone so third-party marks sit inside the brand palette */
.logos { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1px; background:var(--rule-d); border:1px solid var(--rule-d); }
.logos li { display:grid; grid-template-rows:clamp(64px,5.4vw,76px) auto; place-items:center; gap:16px; padding:clamp(22px,2vw,30px) 16px 18px; background:var(--navy); text-align:center; }
.logos li .label { font-size:.68rem; }
.logo { display:block; width:auto; max-width:100%; object-fit:contain; opacity:.9; }
.logo--wide { max-height:clamp(26px,2.4vw,34px); }
.logo--tall { max-height:clamp(46px,4.2vw,60px); }
.logo--mid { max-height:clamp(34px,3.2vw,46px); }
.logos-note { margin-top:18px; max-width:80ch; }
.logos--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.logos--2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.sec--midnight .logos li { background:var(--midnight); }
.credit-quote { margin-top:clamp(36px,3.6vw,52px); padding-left:clamp(18px,2vw,28px); border-left:1px solid var(--azure); max-width:56ch; }
.cards4--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }

/* ---------- team: structure diagram ---------- */
.structure { position:relative; }
.st-lines { position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; z-index:0; }
.st-lines .base { fill:none; stroke:rgba(255,255,255,.2); stroke-width:1; }
.st-lines .flow { fill:none; stroke:var(--azure); stroke-width:1; stroke-dasharray:2 14; opacity:.5; animation:flow 2.6s linear infinite; transition:opacity .25s, stroke .25s; }
.st-lines .flow.is-hot { opacity:1; stroke:var(--cream); }
@keyframes flow { to { stroke-dashoffset:-32; } }
.js .structure .st-lines .base { stroke-dasharray:var(--len) var(--len); stroke-dashoffset:var(--len); transition:stroke-dashoffset 1.6s var(--ease); transition-delay:var(--delay,0s); }
.js .structure.is-in .st-lines .base { stroke-dashoffset:0; }
.js .structure .st-lines .flow { opacity:0; }
.js .structure.is-in .st-lines .flow { opacity:.5; transition:opacity 1s ease 1.6s; }
.js .structure.is-in .st-lines .flow.is-hot { opacity:1; transition-delay:0s; }
.structure.has-lines .st-v, .structure.has-lines .st-fork > * , .structure.has-lines .st-fork::before { visibility:hidden; }
.st-row { position:relative; z-index:1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); column-gap:clamp(10px,1.4vw,20px); }
.st-center { grid-column:2 / span 2; }
.node { position:relative; isolation:isolate; overflow:hidden; padding:24px 22px 24px; min-width:0; background:var(--midnight); border:1px solid var(--rule-d); transition:border-color .25s, transform .3s var(--ease); }
/* engraved corner marks */
.node::before { content:''; position:absolute; inset:6px; pointer-events:none; opacity:.5; transition:opacity .25s, inset .3s var(--ease);
  background:
    linear-gradient(var(--azure),var(--azure)) left top / 10px 1px no-repeat, linear-gradient(var(--azure),var(--azure)) left top / 1px 10px no-repeat,
    linear-gradient(var(--azure),var(--azure)) right top / 10px 1px no-repeat, linear-gradient(var(--azure),var(--azure)) right top / 1px 10px no-repeat,
    linear-gradient(var(--azure),var(--azure)) left bottom / 10px 1px no-repeat, linear-gradient(var(--azure),var(--azure)) left bottom / 1px 10px no-repeat,
    linear-gradient(var(--azure),var(--azure)) right bottom / 10px 1px no-repeat, linear-gradient(var(--azure),var(--azure)) right bottom / 1px 10px no-repeat; }
.node.is-hot { border-color:rgba(111,155,234,.55); }
.node.is-hot::before { opacity:1; inset:4px; }
@media (hover:hover) and (pointer:fine) { .node:hover { border-color:rgba(111,155,234,.55); }
.node:hover::before { opacity:1; inset:4px; } }
.node .label { margin-bottom:10px; }
.node-num { position:absolute; top:20px; right:22px; font-size:.85rem; }
.node .nname { font-family:var(--serif); font-size:1.06rem; line-height:1.38; color:var(--paper); }
.node .nsub { margin-top:6px; font-size:.82rem; line-height:1.5; color:var(--label-d); }
.node--key { text-align:center; padding:26px 24px 28px; background:var(--navy); border-color:rgba(111,155,234,.3); }
.node--key .nname { font-family:var(--eiko); font-weight:200; font-size:clamp(1.45rem,2vw,2rem); line-height:1.1; letter-spacing:-.01em; }
.node--scheme { padding-block:36px 38px; }
.node-emblem { position:absolute; z-index:-1; width:300px; aspect-ratio:1; left:50%; top:50%; margin:-150px 0 0 -150px; color:var(--azure); opacity:.2; animation:spin 240s linear infinite; }
.st-v { width:1px; height:clamp(32px,3.2vw,48px); margin:0 auto; background:var(--rule-d2); }
.st-fork { position:relative; height:clamp(48px,4.6vw,68px); }
.st-fork::before { content:''; position:absolute; left:50%; top:0; height:50%; width:1px; background:var(--rule-d2); }
.st-fork span { position:absolute; left:12.5%; right:12.5%; top:50%; bottom:0; border:1px solid var(--rule-d2); border-bottom:0; }
.st-fork span::before, .st-fork span::after { content:''; position:absolute; top:0; bottom:0; width:1px; background:var(--rule-d2); }
.st-fork span::before { left:33.333%; }
.st-fork span::after { left:66.666%; }
.js .structure .node { opacity:0; transform:translateY(12px); transition:opacity .9s var(--ease), transform 1.1s var(--ease), border-color .45s; }
.js .structure.is-in .node { opacity:1; transform:none; }
.js .structure.is-in .node.is-hot { transform:translateY(-3px); transition-delay:0s; }
@media (hover:hover) and (pointer:fine) { .js .structure.is-in .node:hover { transform:translateY(-3px); transition-delay:0s; } }
.js .structure.is-in [data-node="scheme"] { transition-delay:.3s; }
.js .structure.is-in [data-node="p1"] { transition-delay:.8s; }
.js .structure.is-in [data-node="p2"] { transition-delay:.9s; }
.js .structure.is-in [data-node="p3"] { transition-delay:1s; }
.js .structure.is-in [data-node="p4"] { transition-delay:1.1s; }
/* once the arrival has played (site.js adds is-settled), hover in and out answer at once */
.js .structure.is-settled [data-node] { transition:border-color .25s, transform .3s var(--ease); transition-delay:0s; }
.js .structure.is-settled .st-lines .flow { transition:opacity .25s, stroke .25s; transition-delay:0s; }

/* ---------- contact ---------- */
.contact { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); min-height:calc(100svh - var(--head-h)); }
.contact-main { grid-column:1 / span 5; padding-top:clamp(44px,8vh,96px); padding-bottom:clamp(52px,6vw,88px); display:flex; flex-direction:column; }
.plate { grid-column:7 / -1; position:relative; overflow:hidden; isolation:isolate; display:flex; flex-direction:column; justify-content:space-between; gap:40px; margin-block:clamp(44px,8vh,96px) clamp(52px,6vw,88px); padding:clamp(24px,2.6vw,36px); min-height:clamp(420px,58vh,620px); border:1px solid var(--rule-d); background:var(--navy); }
.plate-g { position:absolute; z-index:-1; width:130%; aspect-ratio:1; right:-52%; bottom:-58%; color:var(--azure); opacity:.55; }
.plate-g > div { width:100%; height:100%; }
.plate-top, .plate-foot { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:8px 20px; }
.plate-bar { display:block; width:min(100%,340px); height:1px; margin-top:18px; background:var(--rule-d); overflow:hidden; }
.plate-bar i { display:block; height:100%; background:var(--azure); transform-origin:left; transform:scaleX(0); transition:transform 1s linear; }
.plate-foot { flex-direction:column; gap:6px; }
.plate-time { display:flex; align-items:baseline; gap:14px; font-family:var(--eiko); font-weight:200; font-size:clamp(4rem,8vw,7.5rem); line-height:.9; letter-spacing:-.03em; color:var(--paper); font-variant-numeric:tabular-nums; }
.plate-time[hidden] { display:none; }
.plate-tz { font-family:var(--sans); font-weight:500; font-size:.75rem; letter-spacing:.2em; color:var(--azure); }
.plate-mid .small { margin-top:10px; }
.cdetails { margin-top:clamp(36px,4.4vw,60px); display:grid; }
.cdetails > div { display:grid; grid-template-columns:110px 1fr; gap:20px; padding:18px 0; border-top:1px solid var(--rule-d); align-items:baseline; }
.cdetails > div:last-child { border-bottom:1px solid var(--rule-d); }
.cdetails .v { font-family:var(--serif); font-size:clamp(1.08rem,1.3vw,1.25rem); line-height:1.45; color:var(--paper); }
.cdetails .v a { position:relative; color:var(--paper); text-decoration:none; padding-bottom:2px; transition:color .2s; }
.cdetails .v a::before { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--azure); transform-origin:left; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .cdetails .v a:hover::before { transform:scaleX(0); transform-origin:right; } }
.cdetails .v a:focus-visible::before { transform:scaleX(0); transform-origin:right; }
.tools { display:flex; flex-wrap:wrap; gap:8px 20px; margin-top:10px; }
.minibtn { position:relative; display:inline-flex; align-items:center; gap:8px; font-weight:500; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; color:var(--label-d); background:none; border:0; padding:4px 0; cursor:pointer; text-decoration:none; transition:color .2s; }
@media (hover:hover) and (pointer:fine) { .minibtn:hover { color:var(--paper); } }
.minibtn:focus-visible { color:var(--paper); }
.minibtn.is-done { color:var(--azure); }
.contact-alt { margin-top:auto; padding-top:44px; }

/* ---------- pitch ---------- */
.pitch-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:40px; }
.pitch-aside { grid-column:1 / span 4; }
.pitch-aside .sticky { position:sticky; top:calc(var(--head-h) + 32px); display:grid; gap:32px; }
.pitch-main { grid-column:7 / -1; }
.stepper { border-top:1px solid var(--rule-d); }
.stepper li { position:relative; display:grid; grid-template-columns:34px 1fr; padding:12px 0 12px 14px; border-bottom:1px solid var(--rule-d); font-size:.88rem; color:var(--label-d); transition:color .25s; }
.stepper li::before { content:''; position:absolute; left:0; top:10px; bottom:10px; width:1px; background:var(--azure); transform:scaleY(0); transition:transform .3s var(--ease); }
.stepper li .num { color:inherit; padding-top:.25em; }
.stepper li[aria-current="step"] { color:var(--paper); }
.stepper li[aria-current="step"]::before { transform:scaleY(1); }
.stepper li[aria-current="step"] .num { color:var(--azure); }
.stepper li.is-done { color:var(--mist); }
.aside-note { display:grid; gap:8px; }
.form-head .d-m { font-size:clamp(1.8rem,2.6vw,2.6rem); margin:12px 0 10px; }
.fstack { display:grid; gap:30px; }
.fgroup-head { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:6px 20px; padding-top:22px; border-top:1px solid var(--rule-d); }
.fgroup-head .h-serif { font-size:1.12rem; }
.frow { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px 28px; }
.field { display:grid; gap:8px; min-width:0; align-content:start; }
.field > label:not(.file), .field > .flabel, .size-head label { font-weight:500; font-size:.75rem; letter-spacing:.2em; text-transform:uppercase; color:var(--label-d); }
.opt { text-transform:none; letter-spacing:.02em; font-weight:400; }
.inp, .field select, .field textarea { width:100%; font-family:var(--sans); font-size:1rem; line-height:1.4; color:var(--paper); background-color:transparent; border:0; border-bottom:1px solid var(--rule-field); border-radius:0; padding:10px 0 11px; -webkit-appearance:none; appearance:none; background-image:linear-gradient(var(--azure),var(--azure)); background-repeat:no-repeat; background-position:left bottom; background-size:0 1px; transition:border-color .2s, background-size .3s var(--ease); }
.field textarea { resize:vertical; min-height:88px; line-height:1.6; }
.inp::placeholder, .field textarea::placeholder { color:#7E8DA3; opacity:1; }
@media (hover:hover) and (pointer:fine) { .inp:hover, .field select:hover, .field textarea:hover { border-bottom-color:var(--label-d); } }
.inp:focus, .field select:focus, .field textarea:focus { outline:none; background-size:100% 1px; }
.inp:focus-visible, .field select:focus-visible, .field textarea:focus-visible { outline:none !important; background-size:100% 3px; }
.field select:focus-visible { background-size:10px 7px, 100% 3px; }
.field select { padding-right:26px; cursor:pointer; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23C2CAD6' stroke-width='1.2'/%3E%3C/svg%3E"), linear-gradient(var(--azure),var(--azure)); background-position:right 3px center, left bottom; background-size:10px 7px, 0 1px; }
.field select:focus { background-size:10px 7px, 100% 1px; }
.field select option { color:#0B2447; background:#F7F5F0; }
/* invalid: a 2px cream rule (focus is the azure line), the message sits under the field (site.js) */
.inp[aria-invalid="true"], .field select[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-bottom:2px solid var(--cream) !important; padding-bottom:10px; }
.file:has(input[aria-invalid="true"]) { border-style:solid; border-color:var(--cream); }
.ferr { display:flex; align-items:baseline; gap:8px; font-size:.82rem; line-height:1.5; color:var(--cream); }
.ferr::before { content:''; flex-shrink:0; width:10px; height:2px; background:var(--cream); transform:translateY(-.3em); }
.ferr[hidden] { display:none; }
.phone { display:grid; grid-template-columns:104px 1fr; gap:14px; }
.seg { display:flex; flex-wrap:wrap; gap:8px; }
.seg button { flex:1; min-width:0; font-size:.84375rem; letter-spacing:.01em; text-align:center; padding:13px 12px; border-radius:1px; cursor:pointer; color:var(--fog); background:transparent; border:1px solid var(--rule-d2); transition:background .2s, color .2s, border-color .2s, scale var(--pd) var(--pe); }
.seg--wide button { min-width:200px; }
@media (hover:hover) and (pointer:fine) { .seg button:hover { border-color:var(--label-d); color:var(--paper); } }
.seg button[aria-pressed="true"] { background:var(--cream); border-color:var(--cream); color:var(--midnight); }
.file { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 18px; border:1px dashed var(--rule-d2); border-radius:1px; cursor:pointer; transition:border-color .2s, background .2s, scale var(--pd) var(--pe); }
@media (hover:hover) and (pointer:fine) { .file:hover { border-color:var(--label-d); background:rgba(255,255,255,.02); } }
.file-name { font-size:.95rem; color:var(--paper); overflow-wrap:anywhere; }
.file-btn { flex-shrink:0; font-weight:500; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase; color:var(--midnight); background:var(--cream); padding:10px 13px; border-radius:1px; }
.hint { font-size:.82rem; line-height:1.55; color:var(--label-d); }
.size-head { display:flex; align-items:baseline; justify-content:space-between; gap:14px; }
.size-box { display:inline-flex; align-items:baseline; gap:6px; padding:0 2px 4px; border-bottom:1px solid var(--rule-d2); position:relative; transition:border-color .2s; }
.size-box::after { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--azure); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); pointer-events:none; }
@media (hover:hover) and (pointer:fine) { .size-box:hover { border-bottom-color:var(--label-d); } }
.size-box:focus-within::after { transform:scaleX(1); }
.size-unit { font-family:var(--sans); font-weight:500; font-size:.75rem; letter-spacing:.14em; color:var(--label-d); }
.size-num { width:3.1ch; font-family:var(--eiko); font-weight:200; font-size:1.9rem; line-height:1; text-align:right; color:var(--paper); background:transparent; border:0; padding:0; font-variant-numeric:tabular-nums; -moz-appearance:textfield; appearance:textfield; }
.size-num::-webkit-outer-spin-button, .size-num::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.size-num:focus { outline:none; }
input[type="range"] { -webkit-appearance:none; appearance:none; width:100%; height:26px; background:transparent; cursor:pointer; }
input[type="range"]::-webkit-slider-runnable-track { height:1px; background:var(--rule-d2); }
input[type="range"]::-moz-range-track { height:1px; background:var(--rule-d2); }
input[type="range"]::-moz-range-progress { height:1px; background:var(--azure); }
input[type="range"]::-webkit-slider-thumb { -webkit-appearance:none; width:16px; height:16px; margin-top:-7.5px; border-radius:50%; background:var(--cream); border:0; box-shadow:0 0 0 6px rgba(242,233,216,.08); transition:box-shadow .2s; }
input[type="range"]::-moz-range-thumb { width:16px; height:16px; border-radius:50%; background:var(--cream); border:0; }
@media (hover:hover) and (pointer:fine) { input[type="range"]:hover::-webkit-slider-thumb { box-shadow:0 0 0 10px rgba(242,233,216,.1); } }
.range-ends { display:flex; justify-content:space-between; font-size:.78rem; color:var(--label-d); }
.form-actions { display:flex; flex-wrap:wrap; align-items:center; gap:16px 26px; padding-top:8px; }
.status { font-size:.92rem; line-height:1.5; }
/* upload under way: an indeterminate hairline under the Submit row (site.js) */
.sendbar { position:relative; flex-basis:100%; height:2px; overflow:hidden; background:var(--rule-d); }
.sendbar[hidden] { display:none; }
.sendbar i { position:absolute; top:0; bottom:0; left:0; width:30%; background:var(--azure); animation:sendbar 1.4s var(--ease-io) infinite; }
@keyframes sendbar { from { transform:translateX(-100%); } to { transform:translateX(340%); } }
.honeypot { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.rv-grid { margin-top:32px; }
.rv-sec { border-top:1px solid var(--rule-d); padding:22px 0 24px; }
.rv-sec-head { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:14px; }
.rv-sec-head h3 { color:var(--azure); }
.rv-sec dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px 28px; }
.rv-sec dl > div { min-width:0; }
.rv-dt { font-weight:500; font-size:.75rem; letter-spacing:.14em; text-transform:uppercase; color:#7E8DA3; }
.rv-dd { margin:5px 0 0; font-size:1rem; line-height:1.5; color:var(--paper); overflow-wrap:anywhere; white-space:pre-wrap; }
.rv-dd.is-empty { color:var(--label-d); }
.consent { display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; padding:20px 0; border-top:1px solid var(--rule-d); }
.consent input { width:18px; height:18px; accent-color:var(--azure); cursor:pointer; }
.consent label { font-size:.95rem; color:var(--paper); cursor:pointer; }
.turnstile { margin:6px 0 18px; min-height:65px; }
.turnstile-alt { margin:-6px 0 18px; }
.success .d-m { margin:14px 0 20px; }
.privacy { margin-top:clamp(40px,4vw,56px); border-top:1px solid var(--rule-d); border-bottom:1px solid var(--rule-d); }
.privacy summary { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 0; cursor:pointer; list-style:none; }
.privacy summary::-webkit-details-marker { display:none; }
@media (hover:hover) and (pointer:fine) { .privacy summary:hover .label { color:var(--paper); } }
.privacy summary:focus-visible .label { color:var(--paper); }
.privacy .plus { position:relative; width:14px; height:14px; }
.privacy .plus::before, .privacy .plus::after { content:''; position:absolute; left:0; right:0; top:50%; height:1px; background:var(--fog); transition:transform .3s var(--ease); }
.privacy .plus::after { transform:rotate(90deg); }
.privacy[open] .plus::after { transform:rotate(0); }
.privacy ul { display:grid; gap:12px; padding:4px 0 24px; }
.privacy li { position:relative; padding-left:24px; font-size:.9rem; line-height:1.68; color:var(--mist); }
.privacy li::before { content:''; position:absolute; left:0; top:.8em; width:12px; height:1px; background:var(--azure); }
.privacy strong { color:var(--paper); font-weight:600; }
/* accessibility page: escalation route, phone number one more click inside */
.escalate { margin-top:clamp(28px,3vw,40px); }
.escalate-body { display:grid; gap:14px; padding:4px 0 24px; }
.escalate-phone summary { display:inline-flex; padding:4px 0; list-style:none; }
.escalate-phone summary::-webkit-details-marker { display:none; }
.escalate-phone p { margin-top:10px; }

/* ---------- accessibility page, 404 ---------- */
.nf { min-height:calc(100svh - var(--head-h) - 1px); display:flex; flex-direction:column; justify-content:center; padding-block:72px; }
.nf-links { display:flex; flex-wrap:wrap; gap:12px 28px; margin-top:40px; padding-top:22px; border-top:1px solid var(--rule-d); }

/* ---------- footer ---------- */
.site-footer { background:var(--midnight); border-top:1px solid var(--rule-d); padding-top:clamp(52px,5.6vw,80px); padding-bottom:26px; }
.foot-top { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:var(--gap); row-gap:40px; padding-bottom:clamp(44px,4.6vw,64px); }
.foot-brand { grid-column:1 / span 5; display:flex; flex-direction:column; align-items:flex-start; gap:22px; }
.foot-brand .small { max-width:34ch; }
.foot-col { display:grid; align-content:start; gap:9px; }
.foot-col .label { margin-bottom:8px; }
.foot-explore { grid-column:7 / span 2; }
.foot-contact { grid-column:9 / -1; }
.foot-contact address { margin-top:10px; max-width:34ch; }
.foot-col a, .foot-col p:not(.label), .foot-col address { font-size:.92rem; line-height:1.55; color:var(--fog); text-decoration:none; }
.foot-col p + p { margin-top:0; }
.foot-col a { position:relative; width:fit-content; padding-block:1px; transition:color .2s; }
.foot-col a::before { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); }
@media (hover:hover) and (pointer:fine) { .foot-col a:hover { color:var(--paper); } .foot-col a:hover::before { transform:scaleX(1); } }
.foot-col a:focus-visible { color:var(--paper); } .foot-col a:focus-visible::before { transform:scaleX(1); }
.foot-col .strong { color:var(--paper); }
.foot-legal { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:start; gap:14px 40px; padding-top:22px; border-top:1px solid var(--rule-d); }
.foot-legal .statutory { max-width:84ch; font-size:.75rem; line-height:1.7; letter-spacing:.015em; color:var(--label-d); }
.foot-meta { display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; font-size:.75rem; letter-spacing:.04em; color:var(--label-d); white-space:nowrap; }
.foot-meta a { position:relative; color:var(--fog); text-decoration:none; transition:color .2s; }
@media (hover:hover) and (pointer:fine) { .foot-meta a:hover { color:var(--paper); } }
.foot-meta a:focus-visible { color:var(--paper); }
.foot-meta .clock { display:inline-flex; align-items:center; gap:8px; font-variant-numeric:tabular-nums; }
.foot-meta .clock .dot { animation:pulse 3s ease-in-out infinite; }
.foot-meta a, .motion-toggle { padding-block:4px; }
.motion-toggle { font:inherit; letter-spacing:inherit; color:var(--fog); background:none; border:0; cursor:pointer; transition:color .2s; }
@media (hover:hover) and (pointer:fine) { .motion-toggle:hover { color:var(--paper); } }
.motion-toggle:focus-visible { color:var(--paper); }
.totop { display:inline-flex; align-items:center; gap:8px; }
.totop .chev { transform:rotate(-45deg); }
@media (hover:hover) and (pointer:fine) { .totop:hover .chev { transform:rotate(-45deg) translate(2px,-2px); } }
.totop:focus-visible .chev { transform:rotate(-45deg) translate(2px,-2px); }
@keyframes pulse { 50% { opacity:.3; } }

/* ---------- motion ---------- */
/* Everything is visible without JavaScript; the .js class opts into the pre-reveal states. */
/* The reveal's slow timing and stagger delay apply only until it has played: site.js then adds is-settled and the
   component's own transitions (hover, press) take over with no delay. */
.js [data-reveal] { opacity:0; transform:translate3d(0,24px,0); }
.js [data-reveal]:not(.is-settled) { transition:opacity 1s var(--ease), transform 1.2s var(--ease); transition-delay:var(--d,0s); }
.js [data-reveal].is-in { opacity:1; transform:none; }
.js [data-reveal="mask"] { opacity:1; transform:none; clip-path:inset(0 0 100% 0); }
.js [data-reveal="mask"]:not(.is-settled) { transition:clip-path 1.5s var(--ease-io); }
.js [data-reveal="mask"].is-in { clip-path:inset(0 0 0 0); }
.js [data-reveal="mask"] img { transform:scale(1.12); transition:transform 2.4s var(--ease); }
.js [data-reveal="mask"].is-in img { transform:none; }
.js [data-reveal="none"] { opacity:1; transform:none; }
.js .shead > .label::after { transform:scaleX(0); transition:transform 1.6s var(--ease) .15s; }
.js .shead.is-in > .label::after { transform:scaleX(1); }
.line { display:block; overflow:hidden; padding-bottom:.24em; margin-bottom:-.24em; }
.line > span { display:block; }
.js .line > span { transform:translate3d(0,108%,0); transition:transform .8s var(--ease); transition-delay:calc(var(--i,0) * 60ms + .06s); }
.js.is-ready .line > span { transform:none; }
/* word-by-word rise for section headings */
.js [data-split] .w { display:inline-block; overflow:hidden; vertical-align:top; padding:0 .05em .24em 0; margin:0 -.05em -.24em 0; }
.js [data-split] .w > span { display:inline-block; transform:translate3d(0,106%,0); transition:transform 1.1s var(--ease); transition-delay:calc(var(--wi,0) * 38ms); }
.js [data-split].is-in .w > span { transform:none; }
/* the per-element --d values in the pages are scaled down here, so the whole intro settles in about a second */
.js [data-intro] { opacity:0; transform:translate3d(0,14px,0); transition:opacity .8s var(--ease), transform .8s var(--ease); transition-delay:calc(var(--d,.35s) * .6); }
.js.is-ready [data-intro] { opacity:1; transform:none; }
.js .orn { opacity:0; transition:opacity 1.6s ease .2s; }
.js.is-ready .hero .orn { opacity:.75; }
.js.is-ready .phero .orn { opacity:.6; }

/* cross-document page transitions (Chromium, Safari 18.2+); other browsers navigate normally */
@view-transition { navigation:auto; }
::view-transition-old(root) { animation:vt-out .15s cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root) { animation:vt-in .25s var(--ease) both; }
::view-transition-group(site-header) { animation-duration:.25s; }
@keyframes vt-out { to { opacity:0; } }
@keyframes vt-in { from { opacity:0; transform:translateY(6px); } }

/* endless ornaments rest while off screen (site.js toggles is-offscreen) or while the tab is in the background (is-bg) */
.is-offscreen, .is-offscreen *, .is-bg *, .is-bg *::before, .is-bg *::after { animation-play-state:paused !important; }

/* ---------- press feedback ----------
   Instant response on pointer-down. Surfaces shrink a touch through the individual scale property, so they never
   fight the transforms used by reveals, the menu entrance or hover; text links change colour instead. */
:is(.btn, .nav-box, .seg button, .mnav a, .ctab):active { --pd:80ms; --pe:ease-out; scale:.98; }
:is(.scard, .path, .file):active { --pd:80ms; --pe:ease-out; scale:.985; }
.next:active { --pd:80ms; --pe:ease-out; scale:.995; }
:is(.hamburger, .mclose):active { --pd:80ms; --pe:ease-out; scale:.92; }
:is(.tlink, .minibtn, .nav, .inline-link, .foot-col a, .foot-meta a, .cdetails .v a, .nf-links a, .skip-link):active { color:var(--azure); transition:none; }
.sec--paper :is(.tlink, .inline-link):active { color:var(--cobalt); }

/* ---------- tap targets ----------
   Small text controls get an invisible 44px hit area; nothing moves. Stacked footer links extend downwards
   into the gap below them, so each row owns its own pitch and the text of the row above is never covered. */
.tlink::after, .minibtn::after, .foot-meta a::after { content:''; position:absolute; left:-6px; right:-6px; top:50%; height:44px; margin-top:-22px; }
.foot-col a::after { content:''; position:absolute; left:-6px; right:-6px; top:-4px; height:max(44px, calc(100% + 8px)); }

/* ---------- phone carousel position (site.js adds the counter) ---------- */
.cards-count { display:none; }

/* ---------- responsive ---------- */
/* short desktop windows: keep the whole hero, fact ledger included, on the first screen */
@media (max-height:760px) and (min-width:861px) {
  .hero-inner { padding-top:18px; padding-bottom:16px; }
  .hero-main { padding-top:24px; row-gap:18px; }
  .hero-main .d-xl { font-size:clamp(3rem,min(7.3vw,12.5vh),7.4rem); }
  .hero-copy .actions { margin-top:16px; }
  .ledger { margin-top:22px; }
  .ledger > div { padding-top:12px; }
  .ledger dd { font-size:clamp(1.2rem,1.6vw,1.6rem); }
}
@media (max-width:1100px) {
  .people--3 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .hero-main h1 { grid-column:1 / -1; }
  .hero-copy { grid-column:1 / span 8; }
  .st-title { grid-column:1 / -1; }
  .st-body { grid-column:1 / span 9; }
  .shead > h2 { grid-column:1 / span 10; }
  .js .console.is-tabs .stage-emblem { display:none; }
  .shead > .shead-aside { grid-column:1 / span 8; margin-top:18px; }
  .cards4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cards4--3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .logos { display:flex; flex-wrap:wrap; }
  .logos li { flex:1 1 30%; }
  .scard { min-height:300px; }
  .steps { grid-template-columns:repeat(3,minmax(0,1fr)); row-gap:40px; padding-top:0; }
  .steps::before, .steps .draw, .step::before { display:none; }
  .step { border-top:1px solid var(--rule-l2); padding-top:20px; }
  .foot-brand { grid-column:1 / -1; }
  .foot-explore { grid-column:1 / span 4; }
  .foot-contact { grid-column:5 / -1; }
  .pitch-aside { grid-column:1 / -1; }
  .pitch-aside .sticky { position:static; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pitch-main { grid-column:1 / -1; max-width:none; }
  .js .console.is-tabs .console-stage { grid-template-columns:minmax(0,1fr); }
  .js .console.is-tabs .stage-emblem { display:none; }
}
@media (max-width:860px) {
  :root { --head-h:66px; }
  .d-l { font-size:clamp(2.2rem,9vw,3.4rem); }
  .d-m { font-size:clamp(1.9rem,7.6vw,2.8rem); }
  .navlinks { display:none; }
  .hamburger { display:flex; }
  .hero-main > *, .statement > *, .shead > *, .split > *, .early-grid > *, .phero-body > *, .contact > *, .foot-top > *, .console > *, .pitch-grid > *, .two > *, .next-inner > * { grid-column:1 / -1 !important; }
  .tlist--2 { grid-template-columns:1fr; }
  .next-inner { row-gap:14px; }
  .next .ring { justify-self:start; }
  .plate { margin-top:0; min-height:360px; }
  .seal { width:min(78%,340px); }
  .hero .orn { width:128vw; right:-92vw; top:-4vh; }
  .js.is-ready .hero .orn { opacity:.5; }
  .js.is-ready .phero .orn { opacity:.45; }
  .ledger { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ledger > div:nth-child(3) { border-left:0; padding-left:0; }
  .tenets, .people { grid-template-columns:1fr; row-gap:0; }
  .tenets li { padding-bottom:22px; }
  .paths { grid-template-columns:1fr; }
  .path { min-height:0; }
  .cpanel > * { grid-column:1 / -1; }
  .cpanel .meta, .cpanel .d-m { grid-column:1 / span 9; }
  .cpanel-emblem { grid-column:10 / -1; grid-row:1 / span 2; width:64px; }
  .terms { grid-template-columns:1fr; }
  .terms > div, .kv > div { grid-template-columns:1fr; gap:4px; }
  .st-row { grid-template-columns:1fr; }
  .st-center { grid-column:1; }
  .node--key { text-align:left; }
  .st-v { margin:0 0 0 28px; }
  .st-fork { height:28px; }
  .st-fork span { display:none; }
  .st-fork::before { left:28px; height:100%; }
  .st-row--4 .node + .node { border-top:0; }
  .contact-main { padding-bottom:40px; }
  .cdetails > div { grid-template-columns:1fr; gap:4px; }
  .frow, .rv-sec dl { grid-template-columns:1fr; }
  .pitch-aside .sticky { grid-template-columns:1fr; }
  .foot-explore { grid-column:1 / span 5 !important; }
  .foot-contact { grid-column:6 / -1 !important; }
  .foot-legal { grid-template-columns:1fr; }
  .phero .orn { width:110vw; right:-78vw; top:-12%; }
}
@media (max-width:560px) {
  /* strategy cards become a swipeable row */
  .cards4 { display:flex; gap:10px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; background:none; border:0; margin-inline:calc(var(--gutter) * -1); padding-inline:var(--gutter); scroll-padding-inline:var(--gutter); scrollbar-width:none; }
  .cards4::-webkit-scrollbar { display:none; }
  .cards-count { display:block; margin-top:14px; font-weight:500; font-size:.75rem; letter-spacing:.18em; color:var(--label-d); font-variant-numeric:tabular-nums; }
  .scard { flex:0 0 82%; min-height:360px; scroll-snap-align:start; border:1px solid var(--rule-d); }
  .scard-body { padding-top:28px; }
  .cards4--2 { display:grid; grid-template-columns:1fr; margin-inline:0; padding-inline:0; }
  .cards4--2 .scard { min-height:0; }
  .logos li { flex-basis:45%; }
  .foot-explore { grid-template-columns:1fr 1fr; column-gap:var(--gap); }
  .foot-explore .label { grid-column:1 / -1; }
  .steps { grid-template-columns:1fr; row-gap:0; }
  .step { padding-bottom:22px; }
  .minikv { grid-template-columns:1fr; }
  .minikv > div + div { padding-left:0; border-left:0; margin-top:14px; }
  .seg--wide button { min-width:100%; }
  .phone { grid-template-columns:96px 1fr; }
  .hero-kicker .dot { display:none; }
  .file { flex-direction:column; align-items:flex-start; }
  .foot-explore, .foot-contact { grid-column:1 / -1 !important; }
}

/* ---------- accessibility ---------- */
.sr-only { position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link { position:absolute; left:-9999px; top:0; z-index:300; background:var(--azure); color:var(--midnight); font-size:.875rem; font-weight:600; letter-spacing:.02em; padding:12px 20px; border-radius:2px; text-decoration:none; }
.skip-link:focus { left:16px; top:12px; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible { outline:2px solid var(--azure) !important; outline-offset:3px !important; border-radius:1px; }
.sec--paper a:focus-visible, .sec--paper button:focus-visible { outline-color:var(--cobalt) !important; }
.file:focus-within { outline:2px solid var(--azure); outline-offset:3px; }
@media (prefers-reduced-motion: reduce) {
  /* No movement, but colour and fade feedback stay: transitions are limited to non-moving properties. */
  *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-property:color, background-color, border-color, outline-color, text-decoration-color, opacity, fill, stroke !important; transition-delay:0s !important; scroll-behavior:auto !important; }
  .js [data-reveal], .js [data-intro], .js .line > span, .js [data-split] .w > span, .js .structure .node { opacity:1 !important; transform:none !important; clip-path:none !important; }
  .js [data-reveal="mask"] img { transform:none !important; }
  .js .shead > .label::after { transform:none !important; }
  .spin { animation:none !important; }
  /* press feedback dims instead of shrinking */
  :is(.btn, .nav-box, .seg button, .mnav a, .ctab, .hamburger, .mclose, .scard, .path, .file, .next):active { scale:none !important; opacity:.82 !important; }
  .sendbar i { animation:none !important; width:100%; opacity:.6; }
  @view-transition { navigation:none; }
}
/* The footer "Pause animation" button (site.js adds .motion-off on <html>): the same stillness as reduced motion */
/* (paused rather than cut short, so pressing Play resumes every loop where it stopped) */
.motion-off *, .motion-off *::before, .motion-off *::after { animation-play-state:paused !important; transition-property:color, background-color, border-color, outline-color, text-decoration-color, opacity, fill, stroke !important; transition-delay:0s !important; scroll-behavior:auto !important; }
.motion-off.js [data-reveal], .motion-off.js [data-intro], .motion-off.js .line > span, .motion-off.js [data-split] .w > span, .motion-off.js .structure .node { opacity:1 !important; transform:none !important; clip-path:none !important; }
.motion-off.js [data-reveal="mask"] img, .motion-off.js .shead > .label::after { transform:none !important; }
.motion-off .spin, .motion-off .sendbar i { animation:none !important; }
/* Windows High Contrast and other forced palettes: lines and icons drawn with background stay visible */
@media (forced-colors: active) {
  /* the outlined logo files carry their own colour, so in high contrast they sit on their brand plate to stay legible */
  img[src*="/logo/"], img[src*="wordmark"], img[src*="signature"], img[src*="/portfolio/"] { forced-color-adjust:none; background:#F7F5F0; padding:4px 6px; box-sizing:content-box; }
  img[src*="reversed"], img[src*="/portfolio/"] { background:#06162C; }
  .hamburger span, .mclose::before, .mclose::after, .privacy .plus::before, .privacy .plus::after, .dot, .progress,
  .nav::after, .nav[aria-current="page"]::before, .ctab::before, .stepper li::before, .ferr::before, .sendbar i, .plate-bar i,
  .person-meta .sep, .st-v, .st-fork::before, .st-fork span::before, .st-fork span::after, .shead > .label::after, .st-label::after,
  .steps::before, .steps .draw, .step::before, .privacy li::before { forced-color-adjust:none; background:CanvasText; }
  .tlink::before, .cdetails .v a::before, .size-box::after, .foot-col a::before { forced-color-adjust:none; background:CanvasText; }
  .sendbar, .plate-bar { forced-color-adjust:none; background:Canvas; outline:1px solid CanvasText; }
  .btn::before, .nav-box::before, .path::before, .next::before, .scard::before, [data-glow]::after { display:none; }
  .btn, .nav-box, .seg button, .file { border:1px solid ButtonText; }
  :is(.btn, .nav-box, .path, .next, .scard):is(:hover, :focus-visible) { text-decoration:underline; }
  .seg button[aria-pressed="true"], .nav-box[aria-current="page"] { forced-color-adjust:none; background:Highlight; color:HighlightText; border-color:Highlight; }
  .ctab[aria-selected="true"]::before, .stepper li[aria-current="step"]::before { background:Highlight; }
  input[type="range"] { -webkit-appearance:auto; appearance:auto; }
  .st-lines .base, .st-lines .flow { stroke:CanvasText; }
}
/* More contrast asked for: hairlines and muted labels step up to stronger values of the same palette colours */
@media (prefers-contrast: more) {
  :root {
    --rule-d:rgba(255,255,255,.34); --rule-d2:rgba(255,255,255,.55); --rule-field:rgba(255,255,255,.55);
    --rule-l:rgba(100,110,126,.5); --rule-l2:rgba(100,110,126,.75);
    --label-d:#AEB8C7; --label-l:#3A4453; --mist:#C2CAD6; --fog:#F2E9D8;
  }
  .inp::placeholder, .field textarea::placeholder, .rv-dt { color:var(--label-d); }
  .st-lines .base { stroke:rgba(255,255,255,.5); }
}
/* Less transparency asked for: the soft scrim behind the hero copy becomes a solid plate */
@media (prefers-reduced-transparency: reduce) {
  .hero-copy::before { inset:-14px -18px; background:var(--midnight); }
  [data-glow]::after { display:none; }
}
@media print {
  .site-header, .mmenu, .orn, .skip-link { display:none !important; }
  body, .sec, .site-footer { background:#fff !important; color:#000 !important; }
}
