/* Nudica — PIC1871 brand typeface. Weight-per-file mapped to one family. */
@font-face{font-family:'Nudica';src:url(/a/nudica-thin-webfont.2d2783667f.woff2) format('woff2'),url(/a/nudica-thin-webfont.73e08b8e5b.woff) format('woff');font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-ultralight-webfont.bf0028c74a.woff2) format('woff2'),url(/a/nudica-ultralight-webfont.4f17aaa1fe.woff) format('woff');font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-light-webfont.a0b23df967.woff2) format('woff2'),url(/a/nudica-light-webfont.cf7b3b0a2e.woff) format('woff');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-regular-webfont.b586a55545.woff2) format('woff2'),url(/a/nudica-regular-webfont.24fc304788.woff) format('woff');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-regularitalic-webfont.6976d9adad.woff2) format('woff2'),url(/a/nudica-regularitalic-webfont.6eed2a1a1d.woff) format('woff');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-medium-webfont.b3c19f05e7.woff2) format('woff2'),url(/a/nudica-medium-webfont.3035b6d3c8.woff) format('woff');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-mediumitalic-webfont.d7e18e6b53.woff2) format('woff2'),url(/a/nudica-mediumitalic-webfont.d7baa80ea4.woff) format('woff');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-bold-webfont.80e8e92e99.woff2) format('woff2'),url(/a/nudica-bold-webfont.f377da8307.woff) format('woff');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Nudica';src:url(/a/nudica-bolditalic-webfont.c9ab5ea5df.woff2) format('woff2'),url(/a/nudica-bolditalic-webfont.07f5099735.woff) format('woff');font-weight:700;font-style:italic;font-display:swap}

﻿/* fonts (helvetica now display + elios) */
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-Hairline.8a7d197180.woff2) format("woff2");font-weight:100;font-display:swap}
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-ExtLt.05fa7d02c8.woff2) format("woff2");font-weight:200;font-display:swap}
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-Light.e8bbc8d3d1.woff2) format("woff2");font-weight:300;font-display:swap}
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-Regular.c4e665b050.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-Medium.5e1e23e426.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-Bold.1c723cfe86.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:HND;src:url(/a/HelveticaNowDisplay-ExtraBold.7bf69e41c2.woff2) format("woff2");font-weight:800;font-display:swap}
@font-face{font-family:Elios;src:url(/a/Elios-Regular.f5425835ff.woff2) format("woff2");font-weight:400;font-display:swap}

/* ---- PIC1871 theme tokens ------------------------------------------------ */
/* Dark theme (default). Brand: Black #18181a · Ivory #efece5 · Coral #ff5b34 */
:root{
  --bg:#18181a; --bg-rgb:24,24,26;
  --fg:#efece5; --fg-rgb:239,236,229;
  --surface:#232327;
  --dim:rgba(var(--fg-rgb),.68); --dim2:rgba(var(--fg-rgb),.46); --dim3:rgba(var(--fg-rgb),.32);
  --t2:var(--dim); --t3:var(--dim2); --t4:var(--dim3);
  --line:rgba(var(--fg-rgb),.14); --line-2:rgba(var(--fg-rgb),.28);
  --accent:#ff5b34; --accent-rgb:255,91,52;
  --shadow:#000;
  --hd:"Nudica","Helvetica Neue",Arial,sans-serif;
  --lb:"Nudica","Helvetica Neue",Arial,sans-serif;
  --mx:clamp(24px,6vw,160px);
  --ease:cubic-bezier(.7,0,.2,1);
  color-scheme:dark;
}
/* Light theme. Brand: Ivory #efece5 ground · Dark Grey #3c3c3c ink */
:root[data-theme="light"]{
  --bg:#f4f2ec; --bg-rgb:244,242,236;
  --fg:#26262a; --fg-rgb:38,38,42;
  --surface:#eae7dd;
  --line:rgba(var(--fg-rgb),.16); --line-2:rgba(var(--fg-rgb),.30);
  --shadow:rgba(24,24,26,.22);
  color-scheme:light;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
body{background:var(--bg);color:var(--fg);font-family:var(--hd);font-weight:400;
  font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
::selection{background:var(--fg);color:var(--bg)}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
canvas{display:block}

.label{font-family:var(--lb);text-transform:uppercase;font-size:.75rem;font-weight:500;
  letter-spacing:.03em;line-height:1.05;color:var(--t2)}
.label.dim{color:var(--t4)} .label.fg{color:var(--fg)}
.disp{font-family:var(--hd);font-weight:500;text-transform:uppercase;line-height:.92;letter-spacing:-.015em}
.wrap{padding-left:var(--mx);padding-right:var(--mx)}


/* line-reveal split */
.split .ln{display:block;overflow:hidden}
.split .in{display:block;will-change:transform}

/* generic reveal */
.rv{opacity:0;transform:translateY(20px)}
.is-ready .rv{transition:none}
/* loader holds the page black; hero video/nav must not leak before the shader exit */
.is-loading .hero-bg video,.is-loading .hero-bg img{opacity:0!important}
.is-loading nav{opacity:0;pointer-events:none}
.is-loading .hero .inner{opacity:0}

/* custom cursor */
.cursor{position:fixed;top:0;left:0;width:9px;height:9px;border-radius:50%;
  background:var(--fg);pointer-events:none;z-index:1000;mix-blend-mode:difference;
  transform:translate(-50%,-50%);margin:-4.5px 0 0 -4.5px;
  transition:width .3s var(--ease),height .3s var(--ease),background .3s,opacity .3s}
.cursor{z-index:1100}
.cursor.on{width:54px;height:54px;background:transparent;border:1px solid var(--fg)}
.cursor.hide{opacity:0}
@media(hover:none){.cursor{display:none}}

/* pixel-reveal grid (opacity dither) */
.pixel-grid{position:fixed;inset:0;z-index:960;display:flex;pointer-events:none;overflow:hidden;background:transparent}
.pixel-grid .pxcol{flex:0 0 auto}
.pixel-grid .px{aspect-ratio:1;background:var(--bg);will-change:opacity}

/* cursor-following crosshair media chip */
.media-chip{position:fixed;top:0;left:0;z-index:42;pointer-events:none;will-change:transform}
.media-chip .inner{position:relative;width:clamp(180px,16vw,250px);aspect-ratio:3/2;
  transform:translate(-50%,-50%) scale(.55);opacity:0;
  transition:opacity .45s var(--ease),transform .6s var(--ease)}
.media-chip.show .inner{opacity:1;transform:translate(-50%,-50%) scale(1)}
.media-chip img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.12) brightness(.66)}
.media-chip .lbl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--lb);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg);
  text-shadow:0 1px 10px rgba(var(--bg-rgb),.7)}
.media-chip .c{position:absolute;width:9px;height:9px;border:1px solid var(--fg)}
.media-chip .c.tl{top:-4px;left:-4px;border-right:0;border-bottom:0}
.media-chip .c.tr{top:-4px;right:-4px;border-left:0;border-bottom:0}
.media-chip .c.bl{bottom:-4px;left:-4px;border-right:0;border-top:0}
.media-chip .c.br{bottom:-4px;right:-4px;border-left:0;border-top:0}
@media(hover:none){.media-chip{display:none}}

/* preloader */
.loader{position:fixed;inset:0;z-index:900;background:var(--bg);
  display:flex;flex-direction:column;justify-content:space-between;padding:clamp(20px,3.4vw,80px)}
.loader-top{display:flex;justify-content:space-between;align-items:flex-start}
.loader-mid{display:flex;align-items:flex-end;justify-content:space-between;gap:30px}
.loader-top,.loader-mid,.loader-bar,.loader-status,.loader-count{display:none}
.loader-count{font-family:var(--hd);font-weight:500;letter-spacing:-.03em;line-height:.8;
  font-size:clamp(5rem,20vw,20rem)}
.loader-mk svg{width:clamp(40px,7vw,90px);height:auto;display:block}
.loader-bar{margin-top:clamp(20px,3vh,40px);height:1px;width:100%;background:var(--line);position:relative;overflow:hidden}
.loader-bar i{position:absolute;inset:0 100% 0 0;background:var(--fg)}
.loader-status{margin-top:14px;display:flex;justify-content:space-between}
/* serpentine-dither shader canvas + corner-bracket chrome */
.loader-fill{position:absolute;inset:0;z-index:0;background:var(--bg)}
#glload{position:absolute;inset:0;z-index:1;width:100%;height:100%;display:block}
/* wordmark layer of the intro symbol (real brand face, drawn in the notch) */
#lword{position:absolute;inset:0;z-index:2;width:100%;height:100%;display:block;pointer-events:none}
.loader>.loader-top,.loader>div{position:relative;z-index:2}
.lbr{position:absolute;width:18px;height:18px;border:1px solid var(--line-2);z-index:2;pointer-events:none}
.lbr.tl{left:16px;top:16px;border-right:0;border-bottom:0}
.lbr.tr{right:16px;top:16px;border-left:0;border-bottom:0}
.lbr.bl{left:16px;bottom:16px;border-right:0;border-top:0}
.lbr.brr{right:16px;bottom:16px;border-left:0;border-top:0}
.loader-top .label,.loader-status,.loader-count{text-shadow:0 1px 10px rgba(var(--bg-rgb),.7),0 0 2px rgba(var(--bg-rgb),.6)}


/* nav */
nav{position:fixed;top:0;left:0;right:0;z-index:50;display:grid;grid-template-columns:1fr auto 1fr;
  align-items:center;padding:22px var(--mx);border-bottom:1px solid transparent;
  transition:background .45s var(--ease),backdrop-filter .45s var(--ease),border-color .45s var(--ease),padding .4s var(--ease)}
nav.scrolled{background:rgba(var(--bg-rgb),.55);backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);
  border-bottom-color:var(--line);padding-top:15px;padding-bottom:15px}
.brand{display:flex;align-items:center;gap:11px;justify-self:start}
.brand svg{width:22px;height:25px;display:block}
.brand .brandmark{width:26px;height:auto;display:block}
.brand .brandlogo{height:25px;width:auto;display:block}
.f-brand .brandlogo{height:26px}
.brand .wm{font-family:var(--hd);font-weight:700;letter-spacing:.04em;font-size:18px}
.nav-c{display:flex;gap:clamp(26px,2.6vw,46px);justify-self:center}
.nav-c a,.nav-r a{font-family:var(--hd);text-transform:uppercase;font-size:.95rem;letter-spacing:.005em;font-weight:500;color:var(--fg);position:relative}
.nav-c a::after,.nav-r a::after{content:"";position:absolute;left:0;right:100%;bottom:-6px;height:1px;background:var(--fg);transition:right .4s var(--ease)}
.nav-c a:hover::after,.nav-r a:hover::after{right:0}
.nav-r{display:flex;gap:clamp(20px,2vw,34px);justify-self:end;align-items:center}
/* mobile nav: burger + full-screen drawer */
.burger{display:none;flex-direction:column;justify-content:center;gap:6px;width:34px;height:30px;justify-self:end;background:none;border:0;cursor:pointer;padding:0;position:relative;z-index:2}
.burger span{display:block;height:1.5px;width:26px;margin-left:auto;background:var(--fg);transition:transform .45s var(--ease),opacity .3s}
.burger.open span:first-child{transform:translateY(3.75px) rotate(45deg)}
.burger.open span:last-child{transform:translateY(-3.75px) rotate(-45deg)}
.mdrawer{display:none;position:fixed;inset:0;z-index:45;background:rgba(var(--bg-rgb),.92);
  backdrop-filter:blur(26px) saturate(1.25);-webkit-backdrop-filter:blur(26px) saturate(1.25);
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s;overflow-y:auto;overscroll-behavior:contain}
.mdrawer.open{opacity:1;visibility:visible}
.mdrawer-in{min-height:100%;display:flex;flex-direction:column;padding:112px var(--mx) calc(40px + env(safe-area-inset-bottom,0px))}
.mnav-links{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.mnav-links a{display:flex;align-items:baseline;gap:18px;padding:20px 0;border-bottom:1px solid var(--line);
  font-family:var(--hd);font-weight:500;text-transform:uppercase;font-size:clamp(2rem,10vw,3rem);line-height:1;letter-spacing:-.02em;color:var(--fg);
  opacity:0;transform:translateY(16px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.mnav-links a[aria-current=page]{color:var(--t3)}
.mnav-links a .ix{font-family:var(--lb);font-size:.7rem;letter-spacing:.04em;color:var(--t4)}
.mdrawer.open .mnav-links a{opacity:1;transform:none}
.mdrawer.open .mnav-links a:nth-child(1){transition-delay:.09s}
.mdrawer.open .mnav-links a:nth-child(2){transition-delay:.15s}
.mdrawer.open .mnav-links a:nth-child(3){transition-delay:.21s}
.mdrawer.open .mnav-links a:nth-child(4){transition-delay:.27s}
.mdrawer-sub{margin-top:44px;display:flex;flex-direction:column}
.mdrawer-sub .label{margin-bottom:16px}
.mdrawer-sub a{font-family:var(--hd);font-weight:400;color:var(--t2);padding:8px 0;font-size:1.02rem}
.mdrawer-foot{margin-top:auto;padding-top:48px}
.mdrawer-foot .btn{display:inline-flex;width:100%;justify-content:center}
.mdrawer-ids{display:flex;flex-wrap:wrap;gap:9px 18px;margin-top:26px;font-family:var(--lb);font-size:.66rem;letter-spacing:.03em;text-transform:uppercase;color:var(--t4)}
html.nav-open,html.nav-open body{overflow:hidden}
@media(max-width:900px){
  .nav-c,.nav-r{display:none}
  nav{grid-template-columns:1fr auto}
  .burger{display:flex}
  .mdrawer{display:block}
}


/* hero */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;border-bottom:1px solid var(--line)}
.hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.hero-bg img,.hero-bg video{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.06) brightness(.5);opacity:.82}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(var(--bg-rgb),.66),rgba(var(--bg-rgb),.4) 38%,var(--bg))}
#graph{position:absolute;inset:0;z-index:1}
.hero::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:radial-gradient(125% 95% at 50% 6%,transparent 42%,var(--bg) 100%)}
.hero::before{content:"";position:absolute;top:0;left:0;right:0;height:320px;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,var(--bg) 0%,rgba(var(--bg-rgb),.82) 30%,rgba(var(--bg-rgb),.4) 62%,transparent)}
.hero .hero-tag{display:flex;flex-direction:column;align-items:flex-end;gap:8px;text-align:right;position:relative;padding-top:16px}
.hero .hero-tag::before{content:"";position:absolute;top:0;right:0;width:54px;height:1px;background:var(--fg);opacity:.5}
.hero .hero-tag .t1{font-family:var(--lb);text-transform:uppercase;font-size:clamp(.8rem,.95vw,.95rem);letter-spacing:.045em;color:var(--fg);line-height:1.35}
.hero .hero-tag .t2{font-family:var(--lb);text-transform:uppercase;font-size:.74rem;letter-spacing:.06em;color:var(--t2)}
.hero .inner{position:relative;z-index:3;padding-bottom:clamp(28px,4vh,56px);width:100%}
.hero .topline{display:flex;justify-content:space-between;align-items:flex-start;padding-top:92px;margin-bottom:auto}
.hero .topline.topline-solo{justify-content:flex-end}
.hero h1{font-size:clamp(2.6rem,8.4vw,8.8rem);max-width:18ch;margin:7vh 0 clamp(28px,5vh,64px);letter-spacing:-.03em}
.hero h1 .cmark{font-weight:300;color:var(--t2)}
.cluster{display:flex;flex-wrap:wrap;align-items:center;gap:14px 30px;padding-top:22px;border-top:1px solid var(--line-2)}
.cluster .mk svg{width:26px;height:30px;display:block;opacity:.85}
.cluster .sp{margin-left:auto;display:flex;flex-direction:column;align-items:center;gap:5px}
.scrolltick{font-family:var(--lb);font-size:.82rem;letter-spacing:.2em;color:var(--fg);line-height:1;animation:stick 1.9s var(--ease) infinite}
@keyframes stick{0%,100%{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(3px)}}
@media(max-width:900px){.cluster .sp{margin-left:0}.hero .topline .r{display:none}}

/* statement */
.statement{padding-top:clamp(96px,15vh,200px);padding-bottom:clamp(96px,15vh,200px);border-bottom:1px solid var(--line)}
.statement p.disp{font-size:clamp(1.8rem,4.2vw,4.2rem);line-height:1.04;letter-spacing:-.02em;max-width:18ch}
.statement .sub{font-weight:400;font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.55;color:var(--t2);max-width:54ch;margin-top:38px}
.statement .spec{margin-top:clamp(44px,6vh,72px);max-width:62ch}


/* capabilities */
.cap{position:relative;min-height:92svh;display:flex;align-items:flex-end;overflow:hidden;border-bottom:1px solid var(--line)}
.cap .bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.cap .bg img{width:100%;height:120%;object-fit:cover;filter:grayscale(1) contrast(1.22) brightness(.6);will-change:transform}
.cap .bg::before{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:overlay;opacity:.5;background:url(/a/dither.62e358c279.svg);background-size:3px 3px;image-rendering:pixelated}
.cap .bg::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,rgba(var(--bg-rgb),.88),rgba(var(--bg-rgb),.25) 72%,transparent)}
.cap.txt{min-height:78svh;background:var(--bg)}
.cap .inner{position:relative;z-index:3;padding-top:clamp(48px,7vh,86px);padding-bottom:clamp(48px,7vh,86px);width:100%}
.cap .step{display:flex;align-items:baseline;gap:16px;margin-bottom:clamp(40px,10vh,120px)}
.cap .step .n{font-family:var(--lb);font-size:.75rem;letter-spacing:.03em;color:var(--fg)}
.cap h2{font-size:clamp(2.2rem,6vw,6rem);max-width:15ch;margin-bottom:22px}
.cap p{color:var(--t2);max-width:52ch;font-size:clamp(.95rem,1.3vw,1.1rem);line-height:1.55}
/* secondary button: outlined link-button (view capabilities / discuss a program / etc.) */
.go{display:inline-flex;align-items:center;gap:22px;align-self:flex-start;font-family:var(--lb);text-transform:uppercase;letter-spacing:.03em;font-size:.75rem;line-height:1;color:var(--fg);border:1px solid var(--line-2);padding:22px 38px;transition:border-color .35s var(--ease),background .35s var(--ease)}
.go .arw{display:inline-block;transition:transform .4s var(--ease)}
.go:hover{border-color:var(--fg);background:rgba(var(--fg-rgb),.05)}
.go:hover .arw{transform:translateX(6px)}
.cap .go{margin-top:32px}

/* vfusion (pinned media sequence) */
.vf{position:relative;border-bottom:1px solid var(--line)}
.vf-lead{padding-top:clamp(96px,16vh,200px);padding-bottom:clamp(44px,8vh,88px)}
.vf-lead .label{margin-bottom:34px}
.vf-lead h2{font-size:clamp(3rem,11vw,11rem);margin-bottom:34px;line-height:.86}
.vf-lead .body{max-width:60ch;color:var(--t2);font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.6}
.vf-lead .body strong{color:var(--fg);font-weight:500}

.vf-seq{position:relative;height:100vh;overflow:hidden;background:var(--shadow);border-top:1px solid var(--line)}
.vf-media,.vf-frame{position:absolute;inset:0}
.vf-frame{opacity:0;will-change:opacity}
.vf-frame img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.4) contrast(1.06)}
.vf-scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,rgba(var(--bg-rgb),.9) 0%,rgba(var(--bg-rgb),.72) 34%,rgba(var(--bg-rgb),.32) 72%,rgba(var(--bg-rgb),.12) 100%),
  linear-gradient(0deg,rgba(var(--bg-rgb),.7) 0%,rgba(var(--bg-rgb),0) 30%)}
.vf-overlay{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column}
.vf-top{padding-top:clamp(88px,13vh,140px);display:flex;justify-content:space-between;align-items:baseline}
.vf-counter{font-variant-numeric:tabular-nums}
.vf-mid{flex:1;display:flex;align-items:center}
.vf-stages{position:relative;width:100%;max-width:640px;height:clamp(380px,48vh,540px)}
.vf-stage{position:absolute;top:0;left:0;width:100%;opacity:0;will-change:opacity,transform}
.vf-ix{margin-bottom:22px}
.vf-title{font-size:clamp(3.2rem,7.6vw,7rem);line-height:.86;letter-spacing:-.035em;margin-bottom:26px}
.vf-desc{font-size:clamp(1.1rem,1.55vw,1.45rem);line-height:1.48;color:var(--t2);max-width:38ch;margin-bottom:36px}
.vf-spec{max-width:460px}
.vf-botrow{padding-bottom:clamp(72px,11vh,120px)}
.vf-rail{width:clamp(160px,18vw,240px);height:1px;background:var(--line-2);position:relative}
.vf-rail span{position:absolute;inset:0;background:var(--fg);transform:scaleX(0);transform-origin:left}
.vf-seq.is-static{height:auto;padding:clamp(60px,9vh,110px) 0}
.vf-seq.is-static .vf-frame[data-f="0"]{opacity:.5}
.vf-seq.is-static .vf-stages{height:auto;max-width:none;display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.vf-seq.is-static .vf-stage{position:static;opacity:1}
.vf-seq.is-static .vf-rail{display:none}

.vf-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;padding-top:clamp(56px,9vh,90px);padding-bottom:clamp(56px,9vh,90px);border-top:1px solid var(--line)}
.vf-stats .st .n{font-family:var(--hd);font-weight:500;font-size:clamp(2.6rem,6vw,5.4rem);line-height:1;letter-spacing:-.03em}
.vf-stats .st .l{margin-top:14px;max-width:22ch}
@media(max-width:820px){
  .vf-seq{height:auto;padding:clamp(64px,10vh,120px) 0}
  .vf-seq .vf-frame[data-f="0"]{opacity:.42}
  /* keep the text above the scrim (static would drop it below the positioned
     scrim in paint order) and lighten the heavy desktop fade for the stacked layout */
  .vf-overlay{position:relative;z-index:2}
  .vf-scrim{background:linear-gradient(0deg,rgba(var(--bg-rgb),.58) 0%,rgba(var(--bg-rgb),.34) 100%)}
  .vf-top{margin-bottom:40px}
  .vf-mid{display:block}
  .vf-stages{height:auto;max-width:none;display:grid;grid-template-columns:1fr;gap:44px}
  .vf-stage{position:static;opacity:1!important;transform:none!important}
  .vf-botrow,.vf-rail{display:none}
  .vf-stats{grid-template-columns:1fr;gap:34px}
}

/* capabilities.html vfusion centrepiece: detailed content section (heading + body +
   application subgrid + stats). scoped to .vf .inner so it never collides with the index
   pinned sequence (.vf-lead / .vf-seq / .vf-stats). */
.vf .inner{position:relative;z-index:2;padding-top:clamp(96px,16vh,200px);padding-bottom:clamp(96px,16vh,200px)}
.vf .inner>.label{margin-bottom:34px}
.vf .inner h2{font-size:clamp(3rem,11vw,11rem);margin-bottom:34px;line-height:.86}
.vf .inner .body{max-width:60ch;color:var(--t2);font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.6}
.vf .inner .body strong{color:var(--fg);font-weight:500}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:64px;padding-top:44px;border-top:1px solid var(--line)}
.stats .st .n{font-family:var(--hd);font-weight:500;font-size:clamp(2.6rem,6vw,5.4rem);line-height:1;letter-spacing:-.03em}
.stats .st .l{margin-top:14px;max-width:22ch}
@media(max-width:820px){.stats{grid-template-columns:1fr;gap:34px}}

/* manifesto */
.man{padding-top:clamp(96px,16vh,200px);padding-bottom:clamp(96px,16vh,200px);border-bottom:1px solid var(--line)}
.man .lead{font-size:clamp(2.8rem,9vw,9rem);line-height:.9;margin-bottom:6px}
.man .lines{margin-top:54px;border-top:1px solid var(--line)}
.man .ln2{font-family:var(--hd);font-weight:500;text-transform:uppercase;letter-spacing:-.01em;
  font-size:clamp(1.6rem,4.6vw,4rem);line-height:1.18;color:var(--t4);
  padding:clamp(14px,2.4vh,26px) 0;border-bottom:1px solid var(--line);
  display:flex;align-items:baseline;gap:24px;transition:color .45s var(--ease)}
.man .ln2 .ix{font-family:var(--lb);font-size:.75rem;letter-spacing:.03em;color:var(--t4);transform:translateY(-.4em);transition:color .45s var(--ease)}
.man .ln2:hover{color:var(--fg)} .man .ln2:hover .ix{color:var(--fg)}

/* work */
.work{padding-top:clamp(96px,16vh,180px);padding-bottom:clamp(96px,16vh,180px);border-bottom:1px solid var(--line)}
.work .hd{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:60px;gap:30px}
.work .hd h2{font-size:clamp(2rem,5vw,4.6rem);margin-top:22px;max-width:16ch}
.wrow{display:grid;grid-template-columns:auto 1.1fr 1.6fr auto;gap:30px;align-items:baseline;
  padding:clamp(26px,3.4vh,40px) 0;border-top:1px solid var(--line);position:relative;
  transition:padding-left .5s var(--ease)}
.wrow:last-child{border-bottom:1px solid var(--line)}
.wrow::before{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:0;background:var(--fg);transition:width .6s var(--ease);z-index:1}
.wrow:hover{padding-left:18px} .wrow:hover::before{width:100%}
.wrow .ix{font-family:var(--lb);font-size:.75rem;letter-spacing:.03em;color:var(--t4)}
.wrow .cl{font-family:var(--hd);font-weight:500;text-transform:uppercase;font-size:clamp(1.2rem,2.2vw,1.9rem);line-height:1;letter-spacing:-.01em;transition:color .4s}
.wrow .ds{color:var(--t2);font-size:.95rem;line-height:1.5}
.wrow .mt{font-family:var(--lb);font-size:.75rem;letter-spacing:.03em;text-transform:uppercase;color:var(--fg);white-space:nowrap;text-align:right}
@media(max-width:820px){
  .wrow{grid-template-columns:1fr;gap:12px;align-items:start}
  .wrow .ix{order:1}.wrow .cl{order:2}.wrow .mt{order:3;text-align:left}.wrow .ds{order:4;max-width:46ch}
}

/* heritage */
.her{padding-top:clamp(96px,16vh,180px);padding-bottom:clamp(120px,18vh,220px);border-bottom:1px solid var(--line);background:var(--bg);position:relative;z-index:1}
.her .label{margin-bottom:30px}
.her h2{font-size:clamp(2rem,5vw,4.4rem);max-width:18ch;margin-bottom:clamp(60px,10vh,110px)}
.psec.post-tl{padding-top:clamp(120px,20vh,240px);position:relative;z-index:2;background:var(--bg)}
.tl{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line-2)}
.tl .ev{padding:26px 24px 0 0;position:relative}
.tl .ev::before{content:"";position:absolute;top:-1px;left:0;width:7px;height:7px;background:var(--fg);transform:translateY(-50%) rotate(45deg)}
.tl .yr{font-family:var(--hd);font-weight:500;font-size:clamp(1.6rem,3vw,2.6rem);letter-spacing:-.02em;margin-bottom:14px}
.tl .ti{font-family:var(--lb);font-size:.75rem;letter-spacing:.03em;text-transform:uppercase;color:var(--fg);margin-bottom:12px}
.tl .ds{color:var(--t2);font-size:.9rem;line-height:1.5;max-width:26ch}
/* heritage ruler variant: 1 tick per year 1979-2026 on a spine, true-scale nodes,
   elbowed callout leaders, scrub playhead. replaces the plain top border. */
.tlx{--tl-pad:clamp(72px,10.5vw,132px);padding-inline:var(--tl-pad);box-sizing:border-box;margin-bottom:clamp(24px,4vh,48px)}
.tlx .tl{border-top:0;position:relative;display:block;min-height:clamp(200px,22vw,260px)}
.tlx .tl .ev::before{display:none}
.tlx .tl .ev{position:absolute;top:0;width:clamp(150px,21vw,270px);padding:26px 0 0;transform:translateX(-50%);text-align:center}
.tlx .tl .ev .ds{margin-inline:auto}
.tlx .tl .ev .yr{font-variant-numeric:tabular-nums}
.tlx .tl .ev .yr .sc,.st .n .sc{display:inline-block;text-align:center;transition:opacity .12s linear}
.tlx .tl .ev .yr .sc.u,.st .n .sc.u{opacity:.35}
.tl-ph .tl-ro{font-variant-numeric:tabular-nums}
.tlx .tl .ev .yr,.tlx .tl .ev .ti,.tlx .tl .ev .ds{transition:opacity .55s var(--ease),transform .65s var(--ease)}
.tlx .tl .ev .yr.is-scrambling{transition:opacity .55s var(--ease)}
.tlx .tl .ev.dm .yr{opacity:.28;transform:translateY(6px)}
.tlx .tl .ev.dm .ti,.tlx .tl .ev.dm .ds{opacity:.22}
.tlx .tl .ev:not(.dm) .yr{transform:translateY(0)}
.tl-ruler{position:relative;height:52px;margin-bottom:2px}
.tl-ruler .tl-era{position:absolute;inset:0;pointer-events:none}
.tl-ruler .tl-era i{position:absolute;top:0;bottom:0;transform:translateX(-50%);opacity:0;background:linear-gradient(180deg,rgba(var(--fg-rgb),.03),transparent 70%)}
.tl-ruler .tk{position:absolute;bottom:0;left:0;width:1px;height:8px;background:var(--t4);opacity:.45;transform:translateX(-50%);transform-origin:bottom center}
.tl-ruler .tk.md{height:12px;opacity:.72}
.tl-ruler .tk.mj{height:20px;background:var(--t2);opacity:1;width:1px}
.tl-ruler .ym{position:absolute;bottom:22px;left:0;font-family:var(--lb);font-size:.62rem;letter-spacing:.06em;color:var(--t3);white-space:nowrap;pointer-events:none}
.tl-ruler .ym.start,.tl-ruler .ym.mid,.tl-ruler .ym.end{transform:translateX(-50%)}
.tl-ruler .ym.end{color:var(--t2)}
.tl-ruler .tl-base{position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--line-2);transform-origin:left center}
.tl-ruler .tl-fill{position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--fg);opacity:.55;transform:scaleX(0);transform-origin:left center}
.tl-ruler .nd{position:absolute;bottom:-3px;left:0;width:7px;height:7px;background:var(--fg);opacity:0}
.tl-ruler .nd.start,.tl-ruler .nd.mid,.tl-ruler .nd.end{transform:translateX(-50%) rotate(45deg)}
.tl-gap .dp{position:absolute;top:0;bottom:8px;left:0;width:1px;background:var(--t3);opacity:.6;transform-origin:top center}
.tl-gap .dp.start,.tl-gap .dp.mid,.tl-gap .dp.end{transform:translateX(-50%)}
.tl-ruler .tl-ph{position:absolute;top:0;bottom:0;width:1px;background:var(--fg);opacity:0;pointer-events:none;transform:translateX(-50%);z-index:2}
.tl-ph .tl-ro{position:absolute;bottom:calc(100% + 10px);left:50%;padding:3px 7px;font-family:var(--lb);font-size:.62rem;letter-spacing:.08em;color:var(--bg);background:var(--fg);transform:translateX(-50%);white-space:nowrap;line-height:1}
.tl-ph .tl-ro::after{content:"";position:absolute;top:100%;left:50%;width:1px;height:8px;background:var(--fg);transform:translateX(-50%)}
.tl-gap{position:relative;height:64px}
@media (prefers-reduced-motion:reduce){
  .tl-ruler .nd{opacity:1}
  .tl-ruler .tl-ph{opacity:1}
  .tl-ruler .tl-fill{transform:scaleX(1)}
  .tl-ruler .tl-base{transform:scaleX(1)}
}

@media(max-width:820px){
  .tl{grid-template-columns:1fr}
  .tl .ev{padding:26px 0;border-bottom:1px solid var(--line)}
  /* mobile heritage instrument: the ruler docks under the nav (sticky) while
     the era list scrolls; the playhead sweeps 1979->today mapped to the list,
     each era decoding as the playhead reaches its node. drops don't apply. */
  .tl-gap{display:none}
  .tlx{--tl-pad:16px;margin-bottom:0}
  .tl-ruler{position:sticky;top:54px;z-index:6;height:96px;margin-bottom:0;background:var(--bg)}
  .tl-ruler .tl-ph{top:44px}
  .tl-ruler .tl-era i{top:44px}
  .tlx .tl{display:block;min-height:0;position:relative;border-top:0;padding-top:12px}
  .tlx .tl .ev{position:relative;left:auto!important;width:auto;transform:none!important;text-align:left!important;padding:22px 0 30px;border-top:1px solid var(--line-2);border-bottom:0}
  .tlx .tl .ev:first-child{border-top:0}
  .tlx .tl .ev .ds{margin-inline:0;max-width:40ch}
  .tl-ph .tl-ro{bottom:calc(100% + 8px)}
  /* about mobile pass: reclaim the post-pin paddings (no pin on mobile),
     drop colliding topline right labels like the home hero does */
  .phead .topline .r,.careers .topline .r{display:none}
  .her{padding-bottom:clamp(72px,10vh,120px)}
  .her h2{margin-bottom:clamp(44px,7vh,72px)}
  .psec.post-tl{padding-top:clamp(72px,10vh,120px)}
  .careers .topline{margin-bottom:clamp(64px,12vh,140px)}
}
/* touch has no hover: manifesto lines would otherwise sit dim forever */
@media(hover:none){
  .man .ln2{color:var(--fg)}
}
@media(max-width:820px) and (prefers-reduced-motion:reduce){
  .tl-ruler{position:relative;top:0;height:52px}
  .tl-ruler .tl-ph{display:none}
}

/* closing */
.close{position:relative;min-height:88svh;display:flex;align-items:center;overflow:hidden;border-bottom:1px solid var(--line)}
.close .bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.close .bg img{width:100%;height:118%;object-fit:cover;filter:grayscale(1) contrast(1.2) brightness(.48);will-change:transform}
.close .bg::before{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:overlay;opacity:.5;background:url(/a/dither.62e358c279.svg);background-size:3px 3px;image-rendering:pixelated}
.close .bg::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(var(--bg-rgb),.78),rgba(var(--bg-rgb),.55))}
.close .inner{position:relative;z-index:3;width:100%;padding-top:80px;padding-bottom:80px}
.close .label{margin-bottom:26px}
.close h2{font-size:clamp(2.4rem,7vw,7rem);max-width:15ch;margin-bottom:42px}
/* careers: cinematic left-aligned recruiting block */
.careers{position:relative;min-height:64svh;display:flex;align-items:flex-end;overflow:hidden;border-bottom:1px solid var(--line)}
.careers .bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.careers .bg img{width:100%;height:116%;object-fit:cover;filter:grayscale(1) contrast(1.16) brightness(.44);will-change:transform}
.careers .bg::before{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:overlay;opacity:.5;background:url(/a/dither.62e358c279.svg);background-size:3px 3px;image-rendering:pixelated}
.careers .bg::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(var(--bg-rgb),.5),rgba(var(--bg-rgb),.84))}
.careers .inner{position:relative;z-index:3;width:100%;padding-top:130px;padding-bottom:clamp(56px,9vh,96px)}
.careers .topline{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;margin-bottom:clamp(80px,20vh,220px)}
.careers .topline .r{text-align:right}
.careers h2{font-size:clamp(2rem,5.2vw,4.6rem);max-width:20ch;line-height:1.03;letter-spacing:-.02em;margin-bottom:30px}
.careers .lead{font-size:clamp(1.05rem,1.5vw,1.35rem);line-height:1.55;color:var(--t2);max-width:56ch;margin-bottom:42px}
.btn{display:inline-flex;align-items:center;gap:14px;font-family:var(--lb);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem;font-weight:500;padding:17px 30px;background:var(--fg);color:var(--bg);border:1px solid var(--fg);position:relative;transition:background .4s var(--ease),border-color .4s var(--ease)}
.btn span{position:relative;z-index:2}
.btn:hover{background:var(--fg);border-color:var(--fg)}
.btn .arw{transition:transform .4s var(--ease)} .btn:hover .arw{transform:translateX(6px)}


/* footer: saronic-style column grid, big-type nav, full-height dividers */
.site-footer{background:var(--bg);border-top:1px solid var(--line-2)}
.sf-inner{display:grid;grid-template-columns:0.95fr 1.25fr 1.25fr;align-items:stretch}
.sf-c{display:flex;flex-direction:column;padding-top:clamp(44px,6vh,78px);padding-bottom:clamp(30px,4vh,48px)}
.sf-c1{padding-left:var(--mx);padding-right:clamp(26px,3vw,56px)}
.sf-c2{border-left:1px solid var(--line-2);padding-left:clamp(28px,3.4vw,64px);padding-right:clamp(26px,3vw,56px)}
.sf-c3{border-left:1px solid var(--line-2);padding-left:clamp(28px,3.4vw,64px);padding-right:var(--mx)}
.sf-hd{font-family:var(--lb);text-transform:uppercase;font-size:.7rem;letter-spacing:.04em;color:var(--t4);margin-bottom:clamp(26px,4vh,46px)}
.sf-logo img{width:clamp(118px,13vw,180px);height:auto;display:block}
.sf-sec{border-top:1px solid var(--line);margin-top:clamp(32px,5vh,54px);padding-top:clamp(28px,4vh,44px)}
.sf-join{margin-bottom:clamp(30px,5vh,56px)}
.sf-join .btn{padding:14px 26px;font-size:.74rem}
.sf-place{margin-top:auto}
.sf-jointxt{color:var(--t2);font-size:1rem;line-height:1.55;max-width:34ch;margin-bottom:26px}
.sf-built{font-family:var(--hd);font-weight:500;font-size:1.05rem;color:var(--fg);margin-bottom:16px}
.sf-links{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.sf-links a{color:var(--t3);font-size:.9rem;width:fit-content;transition:color .3s}
.sf-links a:hover{color:var(--fg)}
.sf-copy{font-family:var(--lb);text-transform:uppercase;font-size:.68rem;letter-spacing:.04em;color:var(--t4)}
/* section list: indexed like the mega menu, so the two navigations read as one
   system instead of two different sizes of the same links */
.sf-nav{display:flex;flex-direction:column}
.sf-nav a{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:clamp(14px,1.6vw,26px);
  font-family:var(--hd);font-weight:500;font-size:clamp(1.3rem,2vw,1.9rem);line-height:1.06;
  letter-spacing:-.02em;color:var(--t2);padding:clamp(7px,1vh,11px) 0;position:relative;
  transition:color .3s var(--ease),padding-left .4s var(--ease)}
.sf-nav a+a{border-top:1px solid var(--line)}
.sf-nav .sf-ix{font-family:var(--lb);font-size:.68rem;letter-spacing:.05em;color:var(--t4);
  transition:color .3s var(--ease)}
.sf-nav a:hover{color:var(--fg);padding-left:10px}
.sf-nav a:hover .sf-ix{color:var(--accent)}
.sf-connect{margin-top:auto;padding-top:clamp(30px,5vh,56px)}
.sf-connect .sf-hd{margin-bottom:16px}
.sf-social{display:flex;gap:20px}
.sf-social a{font-family:var(--lb);text-transform:uppercase;font-size:.8rem;letter-spacing:.03em;color:var(--t3);transition:color .3s}
.sf-social a:hover{color:var(--fg)}
.sf-strip{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 22px;padding:16px var(--mx);
  border-top:1px solid var(--line-2)}
.sf-strip span{font-family:var(--lb);font-size:.66rem;letter-spacing:.04em;text-transform:uppercase;color:var(--t4)}
.sf-strip .sf-strip-r{margin-left:auto}

/* every column ends on the same line: the block that closes a column is pushed
   to its foot, so the three dividers run the full height together */
.sf-foot-b{margin-top:auto;padding-top:clamp(30px,5vh,56px)}
.sf-hd-sm{margin-bottom:12px}
.sf-co{color:var(--fg)}
.sf-cta{display:inline-flex;align-items:baseline;gap:12px;font-family:var(--hd);font-weight:500;
  font-size:clamp(1rem,1.3vw,1.2rem);color:var(--fg);position:relative;width:fit-content;
  padding-bottom:4px}
.sf-cta::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--accent);
  transition:right .45s var(--ease)}
.sf-cta:hover::after{right:0}
.sf-cta .arw{transition:transform .4s var(--ease)}
.sf-cta:hover .arw{transform:translateX(5px)}
.sf-since{line-height:1.5;max-width:22ch}
.sf-c2 .sf-offices{margin-top:18px}

@media(max-width:820px){
  .sf-inner{grid-template-columns:1fr}
  .sf-c{padding-left:var(--mx)!important;padding-right:var(--mx)!important}
  .sf-c2,.sf-c3{border-left:0;border-top:1px solid var(--line)}
  .sf-place,.sf-connect{margin-top:34px}
  .sf-foot-b{padding-top:clamp(24px,4vh,38px)}
  .sf-strip .sf-strip-r{margin-left:0}
}
.cap-stmt{display:flex;flex-wrap:wrap;gap:10px 26px;padding-top:30px}
.cap-stmt span{font-family:var(--lb);font-size:.72rem;letter-spacing:.03em;text-transform:uppercase;color:var(--t4)}


/* engineering system (frame + ticks + label-rail + datasheet) */
:root{--fmx:clamp(14px,2.2vw,46px)}

/* section frame: 1px inset border + corner crosshair ticks, scroll-drawn */
[data-frame]{position:relative}
.frame{position:absolute;inset:0 var(--fmx);z-index:4;pointer-events:none}
.frame i{position:absolute;background:var(--line-2)}
.frame .ht{top:0;left:0;right:0;height:1px;transform:scaleX(0);transform-origin:left}
.frame .hb{bottom:0;left:0;right:0;height:1px;transform:scaleX(0);transform-origin:left}
.frame .vl{top:0;bottom:0;left:0;width:1px;transform:scaleY(0);transform-origin:top}
.frame .vr{top:0;bottom:0;right:0;width:1px;transform:scaleY(0);transform-origin:top}
.frame b{position:absolute;width:12px;height:12px;opacity:0}
.frame b::before,.frame b::after{content:"";position:absolute;background:var(--t2)}
.frame b::before{left:0;right:0;top:5.5px;height:1px}
.frame b::after{top:0;bottom:0;left:5.5px;width:1px}
.frame b.tl{top:-6px;left:-6px}.frame b.tr{top:-6px;right:-6px}
.frame b.bl{bottom:-6px;left:-6px}.frame b.br{bottom:-6px;right:-6px}
/* adjacent framed sections share an edge: drop the lower one's top line + top ticks
   so the boundary draws a single hairline + single crosshair, not a doubled/broken one */
[data-frame]+[data-frame] .frame .ht,
[data-frame]+[data-frame] .frame b.tl,
[data-frame]+[data-frame] .frame b.tr{display:none}

/* 12-col label-rail grid */
.egrid{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(12px,1.5vw,24px)}
.egrid>.rail{grid-column:1/4;align-self:start;position:sticky;top:108px}
.egrid>.rail .label{display:block}
.egrid>.rail .label+.label{margin-top:7px}
.egrid>.body{grid-column:4/13;border-left:1px solid var(--line);padding-left:clamp(22px,3vw,64px)}
@media(max-width:820px){
  .egrid{display:block}
  .egrid>.rail{position:static;margin-bottom:30px}
  .egrid>.body{border-left:0;padding-left:0}
}

/* datasheet: key/value rows on hairlines (1px-cell vocabulary) */
.spec{border-top:1px solid var(--line-2)}
.spec .r{display:grid;grid-template-columns:minmax(86px,20%) 1fr;gap:18px;
  padding:13px 0;border-bottom:1px solid var(--line);align-items:baseline}
.spec .k{font-family:var(--lb);text-transform:uppercase;font-size:.7rem;letter-spacing:.04em;color:var(--t4);line-height:1.3}
.spec .v{font-family:var(--lb);text-transform:uppercase;font-size:.78rem;letter-spacing:.015em;color:var(--fg);line-height:1.4}

/* mono corner caption for framed media */
.mcap{position:absolute;left:14px;bottom:12px;z-index:5;display:flex;gap:8px;align-items:center}
.mcap .label{color:var(--fg)}

/* capabilities (re-architected: rail Â· body Â· datasheet) */
.cap2{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden;border-bottom:1px solid var(--line)}
.cap2 .bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.cap2 .bg img{width:100%;height:118%;object-fit:cover;filter:grayscale(1) contrast(1.22) brightness(.52);will-change:transform}
.cap2 .bg::before{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:overlay;opacity:.5;background:url(/a/dither.62e358c279.svg);background-size:3px 3px;image-rendering:pixelated}
.cap2 .bg::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,rgba(var(--bg-rgb),.92),rgba(var(--bg-rgb),.55) 60%,rgba(var(--bg-rgb),.3))}
.cap2 .inner{position:relative;z-index:3;width:100%;padding-top:clamp(96px,12vh,150px);padding-bottom:clamp(70px,9vh,120px)}
.cap2 .rail .cixn{font-family:var(--hd);font-weight:500;font-size:clamp(2.4rem,4vw,4.2rem);line-height:.8;letter-spacing:-.03em;margin-bottom:22px}
.cap2 .body{display:flex;flex-direction:column}
.cap2 .body h2{font-size:clamp(1.8rem,3.7vw,3.6rem);margin-bottom:22px}
.cap2 .body p{color:var(--t2);max-width:44ch;font-size:clamp(.95rem,1.2vw,1.08rem);line-height:1.55}
.cap2 .body .go{margin-top:36px}
.cap2 .dat{grid-column:9/13;align-self:start}
.cap2 .body{grid-column:4/9;border-left:1px solid var(--line);padding-left:clamp(22px,2.6vw,52px)}
.cap2 .rail{grid-column:1/4}
@media(max-width:820px){
  .cap2 .body,.cap2 .dat,.cap2 .rail{grid-column:auto}
  .cap2 .body{border-left:0;padding-left:0;margin:18px 0}
  .cap2 .dat{margin-top:18px}
}

/* nav active state */
.nav-c a[aria-current]{color:var(--fg)}
.nav-c a[aria-current]::after{right:0}
.nav-r a[aria-current]{color:var(--fg)}


/* interior page header */
.phead{position:relative;min-height:72svh;display:flex;align-items:flex-end;overflow:hidden;border-bottom:1px solid var(--line)}
.phead .bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.phead .bg img{width:100%;height:114%;object-fit:cover;filter:grayscale(1) contrast(1.16) brightness(.5);will-change:transform}
.phead .bg::before{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:overlay;opacity:.5;background:url(/a/dither.62e358c279.svg);background-size:3px 3px;image-rendering:pixelated}
.phead .bg::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(var(--bg-rgb),.74),rgba(var(--bg-rgb),.32) 52%,var(--bg))}
.phead .inner{position:relative;z-index:3;width:100%;padding-top:150px;padding-bottom:clamp(46px,8vh,92px)}
.phead .topline{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;margin-bottom:clamp(70px,18vh,200px)}
.phead .topline .r{text-align:right}
.phead h1{font-size:clamp(2.6rem,7vw,6.6rem);max-width:19ch;margin-bottom:30px;text-wrap:balance}
.phead .lead{font-size:clamp(1.05rem,1.55vw,1.4rem);line-height:1.5;color:var(--t2);max-width:54ch}

/* legal / policy pages (privacy, terms, accessibility) */
.legal-head{border-bottom:1px solid var(--line)}
.legal-head .inner{padding-top:150px;padding-bottom:clamp(34px,6vh,64px)}
.legal-head .topline{display:flex;justify-content:space-between;align-items:baseline;gap:30px;margin-bottom:clamp(40px,9vh,120px)}
.legal-head .topline .r{text-align:right}
.legal-head h1{font-family:var(--hd);font-weight:500;text-transform:uppercase;font-size:clamp(2.2rem,6vw,4.6rem);letter-spacing:-.02em;line-height:.94;text-wrap:balance}
.legal{max-width:74ch;padding-top:clamp(48px,8vh,96px);padding-bottom:clamp(90px,16vh,180px)}
.legal .upd{font-family:var(--lb);text-transform:uppercase;letter-spacing:.03em;font-size:.72rem;color:var(--t4);margin-bottom:clamp(36px,6vh,60px);padding-bottom:20px;border-bottom:1px solid var(--line-2)}
.legal .intro{color:var(--t2);font-size:clamp(1.05rem,1.4vw,1.2rem);line-height:1.6;margin-bottom:40px}
.legal h2{font-family:var(--hd);font-weight:500;font-size:clamp(1.25rem,2.2vw,1.6rem);letter-spacing:-.01em;color:var(--fg);margin:46px 0 15px}
.legal h2:first-of-type{margin-top:0}
.legal h3{font-family:var(--lb);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;color:var(--t4);margin:26px 0 10px}
.legal p{color:var(--t2);font-size:1rem;line-height:1.72;margin-bottom:16px}
.legal a{color:var(--fg);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-2);transition:text-decoration-color .3s}
.legal a:hover{text-decoration-color:var(--fg)}
.legal ul{list-style:none;margin:0 0 18px;padding:0}
.legal li{color:var(--t2);font-size:1rem;line-height:1.6;padding-left:24px;position:relative;margin-bottom:9px}
.legal li::before{content:"+";position:absolute;left:0;top:0;color:var(--t4);font-family:var(--lb);font-size:.8rem}
.legal strong{color:var(--fg);font-weight:500}
.legal .note{margin-top:clamp(44px,7vh,72px);padding:22px 24px;border:1px solid var(--line-2);color:var(--t3);font-size:.86rem;line-height:1.65}
.legal .note strong{color:var(--t2)}
.f-legal{display:flex;flex-wrap:wrap;align-items:center;gap:8px 0;margin-top:16px}
.f-legal a{font-family:var(--lb);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--t2);transition:color .3s;padding:2px 0}
.f-legal a:not(:last-child)::after{content:"Â·";display:inline-block;margin:0 14px;color:var(--t4)}
.f-legal a:hover{color:var(--fg)}

/* generic padded content section + intro */
.psec{padding-top:clamp(80px,12vh,170px);padding-bottom:clamp(80px,12vh,170px);border-bottom:1px solid var(--line)}
.psec .label{display:block}
.psec .lead2{font-size:clamp(1.6rem,3.4vw,3.2rem);line-height:1.12;letter-spacing:-.015em;font-family:var(--hd);font-weight:500}
.psec .lead2+p.body{margin-top:34px}
.psec p.body{color:var(--t2);font-size:clamp(1rem,1.3vw,1.18rem);line-height:1.6;max-width:60ch}
.psec p.body+p.body{margin-top:20px}
.psec p.body strong{color:var(--fg);font-weight:500}

/* deep capability blocks (capabilities page) */
.cap2.deep{min-height:auto}
.cap2.deep .inner{padding-top:clamp(78px,11vh,150px);padding-bottom:clamp(78px,11vh,150px)}
.cap2.deep .body p{max-width:58ch}
.cap2.deep .body p+p{margin-top:18px}
.cap2.deep .body .go{margin-top:36px}

/* sub-application cards (vfusion applications, process lists) */
.subgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:clamp(40px,6vh,72px)}
.subgrid .sub{background:var(--bg);padding:clamp(24px,2.6vw,40px)}
.subgrid .sub .n{font-family:var(--lb);font-size:.72rem;letter-spacing:.04em;color:var(--t4);margin-bottom:18px}
.subgrid .sub h4{font-family:var(--hd);font-weight:500;text-transform:uppercase;font-size:clamp(1.1rem,1.7vw,1.5rem);letter-spacing:-.01em;line-height:1.05;margin-bottom:14px}
.subgrid .sub p{color:var(--t2);font-size:.95rem;line-height:1.55}
@media(max-width:820px){.subgrid{grid-template-columns:1fr}}

/* process / capability list (mfg phases etc.) */
.plist{margin-top:clamp(36px,5vh,60px);border-top:1px solid var(--line-2)}
.plist .pr{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:baseline;padding:15px 0;border-bottom:1px solid var(--line)}
.plist .pr .ix{font-family:var(--lb);font-size:.72rem;letter-spacing:.04em;color:var(--t4)}
.plist .pr .tx{font-family:var(--hd);font-weight:400;font-size:clamp(1rem,1.5vw,1.2rem);color:var(--fg)}

/* projects list (reuses .wrow from home work) */
.contract{display:flex;flex-wrap:wrap;gap:14px 40px;align-items:baseline;padding:clamp(26px,3vh,40px) 0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line)}
.contract .k{font-family:var(--lb);font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;color:var(--t4)}
.contract .v{font-family:var(--lb);font-size:.82rem;letter-spacing:.02em;text-transform:uppercase;color:var(--fg)}

/* contact form */
.cform-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:12px 20px;margin-top:clamp(34px,5vh,52px);padding-bottom:18px;border-bottom:1px solid var(--line)}
.cform{display:grid;grid-template-columns:1fr 1fr;gap:26px 28px;margin-top:clamp(26px,3.5vh,40px)}
.cfield{display:flex;flex-direction:column;gap:9px}
.cfield.full{grid-column:1/-1}
.cfield label{display:flex;align-items:baseline;gap:11px;font-family:var(--lb);text-transform:uppercase;font-size:.72rem;letter-spacing:.04em;color:var(--t3)}
.cfield label .fi{color:var(--t4);font-size:.66rem}
.cfield input,.cfield select,.cfield textarea{background:transparent;border:0;border-bottom:1px solid var(--line-2);color:var(--fg);font-family:var(--hd);font-size:1.02rem;padding:11px 0;outline:none;transition:border-color .35s var(--ease)}
.cfield textarea{resize:vertical;min-height:128px}
.cfield input::placeholder,.cfield textarea::placeholder{color:var(--t4)}
.cfield input:focus,.cfield select:focus,.cfield textarea:focus{border-color:var(--fg)}
.cfield select{appearance:none;cursor:pointer}
.cfield select option{background:var(--surface);color:var(--fg)}
.cform .formfoot{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:18px;margin-top:8px}
.formok{grid-column:1/-1;color:var(--fg);font-family:var(--lb);text-transform:uppercase;letter-spacing:.03em;font-size:.85rem;padding-top:8px}
.formerr{grid-column:1/-1;color:var(--t2);font-family:var(--lb);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem;padding-top:8px}

/* contact detail block */
.cdetail{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:clamp(40px,6vh,72px);padding-top:44px;border-top:1px solid var(--line)}
.cdetail .k{font-family:var(--lb);text-transform:uppercase;font-size:.7rem;letter-spacing:.04em;color:var(--t4);margin-bottom:14px}
.cdetail .v{font-size:1rem;line-height:1.5;color:var(--fg)}
.cdetail .v.sm{color:var(--t2);font-size:.92rem}
@media(max-width:820px){.cdetail{grid-template-columns:1fr;gap:26px}.cform{grid-template-columns:1fr}}

/* mega menu (company) */
.megatrig{background:none;border:0;cursor:pointer;font-family:var(--hd);text-transform:uppercase;
  font-size:.95rem;letter-spacing:.005em;font-weight:500;color:var(--fg);display:inline-flex;align-items:center;gap:10px;padding:0;line-height:1}
.megatrig .pm{position:relative;width:9px;height:9px;display:inline-block;transition:transform .45s var(--ease)}
.megatrig .pm::before,.megatrig .pm::after{content:"";position:absolute;background:var(--fg)}
.megatrig .pm::before{left:0;right:0;top:4px;height:1px}
.megatrig .pm::after{top:0;bottom:0;left:4px;width:1px}
.megatrig.open .pm{transform:rotate(45deg)}
.megatrig:hover{opacity:.68}
.mega{position:fixed;top:0;left:0;right:0;z-index:45;background:var(--bg);border-bottom:1px solid var(--line-2);
  padding-top:76px;clip-path:inset(0 0 100% 0);opacity:0;pointer-events:none;
  transition:clip-path .6s var(--ease),opacity .35s ease}
.mega.open{clip-path:inset(0 0 0 0);opacity:1;pointer-events:auto}
.mega-inner{position:relative;display:grid;grid-template-columns:minmax(280px,1fr) 1.55fr;
  gap:clamp(38px,6vw,110px);padding-top:clamp(40px,5.5vh,66px);padding-bottom:clamp(30px,4vh,50px)}

/* corner crosshair ticks: same motif as section frames */
.mega-inner .mtick{position:absolute;font-family:var(--lb);font-size:.82rem;line-height:1;color:var(--t4);pointer-events:none}
.mega-inner .mtick.tl{top:16px;left:calc(var(--mx) - 5px)}
.mega-inner .mtick.tr{top:16px;right:calc(var(--mx) - 5px)}
.mega-inner .mtick.bl{bottom:16px;left:calc(var(--mx) - 5px)}
.mega-inner .mtick.br{bottom:16px;right:calc(var(--mx) - 5px)}

/* lead block */
.mega-lead{display:flex;flex-direction:column;border-right:1px solid var(--line);padding-right:clamp(26px,3vw,64px)}
.mega-lead>.label{margin-bottom:22px}
.mega-stmt{font-family:var(--hd);font-weight:500;font-size:clamp(1.5rem,2.15vw,2.15rem);
  line-height:1.06;letter-spacing:-.02em;color:var(--fg);text-wrap:balance;margin-bottom:auto;max-width:20ch}
.mega-meta{display:flex;gap:clamp(28px,3vw,52px);margin-top:clamp(30px,4vh,48px)}
.mega-cta{display:flex;flex-direction:column;gap:9px}
.mega-cta .label{margin:0}
.mega-cta .ml{position:relative;width:fit-content;color:var(--fg);font-family:var(--hd);font-weight:500;font-size:.98rem}
.mega-cta .ml::after{content:"";position:absolute;left:0;right:100%;bottom:-3px;height:1px;background:var(--fg);transition:right .45s var(--ease)}
.mega-cta:hover .ml::after{right:0}

/* indexed link columns */
.mega-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,64px);align-content:start}
.mega-col{display:flex;flex-direction:column}
.mega-col>.label{position:relative;margin-bottom:16px;padding-bottom:14px}
.mega-col>.label::after{content:"";position:absolute;left:-16px;right:-16px;bottom:0;height:1px;background:var(--line-2)}
.mega-col a{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;
  padding:15px 0;font-family:var(--hd);font-weight:500;font-size:clamp(1.02rem,1.3vw,1.28rem);
  letter-spacing:-.01em;color:var(--t2);
  transition:color .35s var(--ease),padding-left .45s var(--ease)}
/* separators run edge-to-edge with the hover band (inset -16px), not just the text column */
.mega-col a::after{content:"";position:absolute;left:-16px;right:-16px;bottom:0;height:1px;background:var(--line)}
.mega-col a::before{content:"";position:absolute;inset:0 -16px;background:rgba(var(--fg-rgb),.05);
  opacity:0;transition:opacity .35s var(--ease);pointer-events:none}
.mega-col a .ix{font-family:var(--lb);font-size:.72rem;letter-spacing:.05em;color:var(--t4);transition:color .35s var(--ease)}
.mega-col a .lb{position:relative}
.mega-col a .arw{justify-self:end;font-family:var(--lb);font-size:.95rem;color:var(--t4);opacity:0;transform:translateX(-10px);
  transition:opacity .4s var(--ease),transform .4s var(--ease),color .35s var(--ease)}
.mega-col a:hover{color:var(--fg);padding-left:16px}
.mega-col a:hover::before{opacity:1}
.mega-col a:hover .ix{color:var(--fg)}
.mega-col a:hover .arw{opacity:1;transform:none;color:var(--fg)}

.mega-foot{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:10px 26px;padding-top:26px;margin-top:clamp(26px,3.5vh,42px);border-top:1px solid var(--line-2)}
.mega-foot span{font-family:var(--lb);font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;color:var(--t4)}
@media(max-width:900px){.mega{display:none}.megatrig{display:none}}


/* film-grain overlay (global, all pages incl. loader) */
.grain-overlay{position:fixed;inset:0;pointer-events:none;z-index:1200;
  background-image:url(/a/film-grain.f825bab920.png);background-repeat:repeat;background-size:auto;
  image-rendering:pixelated;mix-blend-mode:screen;opacity:.06;will-change:background-position}

/* uniform button/link text-roll (replaces the magnetic drag) */
.roll{display:inline-block;position:relative;overflow:hidden;vertical-align:top}
.roll>span{display:block;transition:transform .5s var(--ease)}
.roll>span:last-child{position:absolute;top:0;left:0;transform:translateY(100%)}
.has-roll:hover .roll>span:first-child{transform:translateY(-100%)}
.has-roll:hover .roll>span:last-child{transform:translateY(0)}

@media(prefers-reduced-motion:reduce){
  .scrolltick{animation:none}
  .rv{opacity:1;transform:none}
  .frame i{transform:none!important}
  .frame b{opacity:1!important}
}

/* ── PIC1871 · theme + language controls, and per-theme refinements ───────── */

/* nav tools cluster (language switch + theme toggle) */
.nav-tools{display:flex;align-items:center;gap:14px}
.lang-switch{display:inline-flex;align-items:center;gap:2px;font-family:var(--lb);
  font-size:.72rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase}
.lang-switch a{color:var(--t4);transition:color .3s var(--ease);padding:2px 1px}
.lang-switch a[aria-current="true"]{color:var(--fg)}
.lang-switch a:hover{color:var(--accent)}
.lang-switch .sep{color:var(--t4);opacity:.5}

.theme-btn{display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border:1px solid var(--line-2);border-radius:50%;
  background:transparent;color:var(--fg);cursor:pointer;padding:0;
  transition:border-color .3s var(--ease),color .3s var(--ease),background .3s var(--ease)}
.theme-btn:hover{border-color:var(--accent);color:var(--accent)}
.theme-btn svg{width:15px;height:15px;display:block}
.theme-btn .i-sun{display:none}.theme-btn .i-moon{display:block}
:root[data-theme="light"] .theme-btn .i-sun{display:block}
:root[data-theme="light"] .theme-btn .i-moon{display:none}

/* accent motif reused from the brand book: coral ticks + link underlines */
a.go:hover .arw,a.btn:hover .arw{color:var(--accent)}

/* smooth palette transition when toggling (not on load) */
:root.theme-anim,:root.theme-anim body{transition:background-color .4s var(--ease),color .4s var(--ease)}
:root.theme-anim *{transition:background-color .4s var(--ease),border-color .4s var(--ease),color .4s var(--ease)}

/* light-mode refinements: soften the heavy image scrims meant for a dark ground */
:root[data-theme="light"] .cap2 .bg::after,
:root[data-theme="light"] .close .bg::after{opacity:.32}

/* mobile: the top bar is brand + burger only, so language and theme move into
   the drawer, where they get proper 44px touch targets instead of corner text. */
@media (max-width:820px){
  .nav-tools{gap:10px}
}
.mdrawer-tools{display:flex;align-items:center;justify-content:space-between;gap:18px;
  margin-top:32px;opacity:0;transform:translateY(16px);
  transition:opacity .5s var(--ease) .33s,transform .5s var(--ease) .33s}
.mdrawer.open .mdrawer-tools{opacity:1;transform:none}
.mdrawer-lang{gap:10px;font-size:.78rem;letter-spacing:.1em}
.mdrawer-lang a{min-width:56px;min-height:44px;padding:0;display:inline-flex;
  align-items:center;justify-content:center;border:1px solid var(--line-2);color:var(--t3);
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}
.mdrawer-lang a[aria-current="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.mdrawer-theme{width:44px;height:44px;border-radius:50%;flex:0 0 auto}

/* ── PIC1871 · page sections built on the shared design system ────────────── */

/* brand mark: the PIC1871 symbol exactly as constructed in the brandbook —
   6 x 4 units with the bottom-right 3 x 1 quadrant cut away (progression) */
/* header + footer share one identical logo treatment */
.brand,.sf-logo{display:inline-flex;align-items:center;gap:11px}
.brand .brandmark,.sf-logo .brandmark{width:24px;height:16px;background:var(--fg);display:inline-block;
  flex:0 0 auto;clip-path:polygon(0 0,100% 0,100% 75%,50% 75%,50% 100%,0 100%);
  transition:background .3s var(--ease)}
.brand:hover .brandmark{background:var(--accent)}
.brand .brandword,.sf-logo .brandword{font-family:var(--hd);font-weight:700;letter-spacing:.005em;
  font-size:1.12rem;line-height:1;color:var(--fg)}
.loader-mk{color:var(--fg)}.loader-mk svg{width:36px;height:24px}

/* section headers.
   The bottom padding is not decoration: the next block draws a scroll-frame
   hairline across its own top edge, and without this the rule cut through the
   heading's descenders. */
.sec-hd{padding-top:clamp(90px,13vh,170px);padding-bottom:clamp(34px,5vh,62px);max-width:940px}
.contact-sec .sec-hd{padding-bottom:0}
.sec-hd .label{margin-bottom:26px}
.sec-hd h2{font-size:clamp(1.8rem,4.2vw,3.7rem);line-height:.98;max-width:16ch}
.sec-hd .sub{margin-top:26px;max-width:64ch;color:var(--t2);font-size:clamp(.92rem,1.05vw,1.02rem);line-height:1.6}

/* text-heavy prose: smaller, calmer reading sizes */
.statement .body .sub,.pic-heritage .body .sub{font-size:clamp(.9rem,1vw,1rem);line-height:1.62;color:var(--t2);max-width:60ch}
.statement .body .disp{font-size:clamp(1.5rem,3vw,2.6rem)!important}

/* hero (typographic, no video) — four lines now, so the face is sized to keep
   the whole statement plus the cluster inside one screen */
.pic-hero{position:relative;min-height:94vh;display:flex;align-items:flex-end;
  padding-bottom:clamp(48px,8vh,96px);border-bottom:1px solid var(--line)}
.pic-hero .inner{width:100%}
.pic-hero #heroH1{font-size:clamp(2.4rem,7.4vw,7.2rem);margin:clamp(20px,3.6vh,44px) 0;max-width:none}
@media(max-height:720px){.pic-hero #heroH1{font-size:clamp(2rem,5.6vw,4.4rem)}}

/* generic content block on the 12-col grid (activities, mission/vision) */
.pic-block{padding-top:clamp(46px,7vh,86px);padding-bottom:clamp(46px,7vh,86px);
  border-top:1px solid var(--line);position:relative}
.pic-block .rail .cixn{font-family:var(--hd);font-weight:500;font-size:clamp(2.2rem,3.6vw,3.8rem);
  line-height:.8;letter-spacing:-.03em;margin-bottom:20px;color:var(--fg)}
.pic-block .body{grid-column:4/10}
.pic-block .body h3{font-size:clamp(1.4rem,2.6vw,2.4rem);text-transform:uppercase;font-weight:500;
  letter-spacing:-.015em;line-height:1;margin-bottom:20px}
.pic-block .body p{color:var(--t2);max-width:56ch;font-size:clamp(.9rem,1vw,1rem);line-height:1.62}
.pic-block .dat{grid-column:10/13;align-self:start}
/* the right-hand datasheet is a quarter of the grid: two columns put a long key
   like DIVERSIFICATION hard against its value, so stack them there */
.pic-block .dat .spec .r{grid-template-columns:1fr;gap:5px;padding:14px 0}
@media(max-width:900px){
  .pic-block .body,.pic-block .dat{grid-column:auto}
  .pic-block .dat{margin-top:24px}
}
.mvv-line{font-size:clamp(1.3rem,2.5vw,2.2rem);max-width:22ch;text-transform:none;letter-spacing:-.01em;line-height:1.12}

/* roots · values grid — carries the 03 rail so Mission / Vision / Values read
   as one numbered set rather than two blocks and an orphan */
.pic-values-wrap{padding-bottom:clamp(80px,12vh,150px)}
.pic-values-wrap .body{grid-column:4/13}
.pic-values-wrap .mvv-line{margin-bottom:clamp(30px,4vh,50px)}
.vw-hd{margin-bottom:36px}
.pic-values{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line)}
.pv{background:var(--bg);padding:clamp(24px,2.4vw,38px);min-height:200px;display:flex;flex-direction:column}
.pv-n{font-size:clamp(1.15rem,1.8vw,1.6rem);text-transform:uppercase;font-weight:500;letter-spacing:-.01em;margin-bottom:16px}
.pv-b{color:var(--t2);font-size:.95rem;line-height:1.55}
@media(max-width:900px){.pic-values{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.pic-values{grid-template-columns:1fr}}

/* heritage lead + generations rows */
.pic-heritage .body .lead{color:var(--fg);font-size:clamp(1.15rem,1.7vw,1.5rem);line-height:1.4;margin-bottom:30px;max-width:46ch}
.pic-heritage .egrid{padding-top:clamp(46px,7vh,92px);padding-bottom:clamp(60px,9vh,120px)}
/* generation rows expand their biography in place.
   Fixed outer columns matter: every row is its own grid, so an `auto` first
   column sized itself to "1939" on one row and "1851–1929" on the next, and the
   names stopped lining up. */
.gen-item{position:relative}
.gen-item:last-child{border-bottom:1px solid var(--line)}
button.gen-row{width:100%;text-align:left;background:none;border:0;color:inherit;font:inherit;
  cursor:pointer;-webkit-appearance:none;appearance:none;
  grid-template-columns:clamp(88px,9vw,124px) minmax(0,1.45fr) minmax(0,2.3fr) clamp(120px,12vw,160px)}
.gen-row .ix{white-space:nowrap;font-variant-numeric:tabular-nums}
.gen-row .cl{text-transform:none;letter-spacing:-.005em;font-size:clamp(1.02rem,1.55vw,1.4rem)}
.gen-row .ds{max-width:none;font-size:.88rem;line-height:1.58}
.gen-arrow{display:inline-flex;align-items:center;justify-content:center;margin-left:10px;
  width:18px;height:18px;border:1px solid var(--line-2);color:var(--t3);font-size:.8rem;
  transition:color .35s var(--ease),border-color .35s var(--ease),transform .45s var(--ease)}
.gen-row:hover .gen-arrow,.gen-row:focus-visible .gen-arrow{color:var(--accent);border-color:var(--accent)}
.gen-row.is-open .gen-arrow{transform:rotate(45deg);color:var(--accent);border-color:var(--accent)}
.gen-row.is-open .cl{color:var(--accent)}
.gen-row:focus-visible{outline:1px solid var(--accent);outline-offset:-3px}
@media(max-width:900px){button.gen-row{grid-template-columns:1fr}}

/* in-place disclosure panel (generation rows, history eras) */
.disc{overflow:hidden;opacity:0}
.disc[hidden]{display:none}
.disc.is-open{opacity:1}
.disc-in{display:grid;grid-template-columns:clamp(88px,9vw,124px) minmax(0,1fr);
  gap:clamp(18px,3vw,30px);padding:4px 0 clamp(34px,5vh,56px)}
.disc-rail{display:flex;flex-direction:column;gap:8px;align-self:start}
.disc-body p{color:var(--t2);font-size:clamp(.92rem,1vw,1.02rem);line-height:1.72;max-width:74ch}
.disc-body p+p{margin-top:16px}
@media(max-width:900px){.disc-in{grid-template-columns:1fr;gap:14px}}

/* conclusion: a closing statement, not a column of stacked words. It sits on the
   label rail like every other block and is measured to read in four or five
   lines instead of twelve. */
.pic-heritage .her{padding-top:clamp(70px,10vh,124px);padding-bottom:clamp(84px,12vh,156px)}
.her .rail .label{margin-bottom:0}
.concl{font-size:clamp(1.3rem,2.1vw,2rem);max-width:46ch;text-transform:none;
  letter-spacing:-.012em;line-height:1.22}

/* full-bleed architectural band */
.img-band{position:relative;height:clamp(260px,46vh,600px);overflow:hidden;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.img-band img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);
  transform:scale(1.02);transition:transform 1.2s var(--ease)}
.img-band:hover img{transform:scale(1.06)}
:root[data-theme="light"] .img-band img{opacity:.96}

/* hero background image + scrim (slow drift for a video-like feel) */
.pic-hero .hero-bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.pic-hero .hero-bg img{width:100%;height:100%;object-fit:cover;opacity:.5;
  transform:scale(1.06);animation:heroDrift 26s ease-in-out infinite alternate}
.pic-hero .hero-bg video{width:100%;height:100%;object-fit:cover;opacity:.5}
@media(prefers-reduced-motion:reduce){.pic-hero .hero-bg img{animation:none}}
@keyframes heroDrift{from{transform:scale(1.04) translate3d(0,0,0)}to{transform:scale(1.12) translate3d(-1.5%,-1.5%,0)}}
.pic-hero .hero-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(var(--bg-rgb),.55) 0%,rgba(var(--bg-rgb),.35) 45%,rgba(var(--bg-rgb),.92) 100%)}
.pic-hero .inner{position:relative;z-index:1}
:root[data-theme="light"] .pic-hero .hero-bg img{opacity:.28;filter:grayscale(.2)}

/* heritage image band */
.heritage-band{position:relative;height:clamp(240px,40vh,520px);overflow:hidden;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.heritage-band img{width:100%;height:100%;object-fit:cover;opacity:.9}
:root[data-theme="light"] .heritage-band img{opacity:1}

/* governance portrait grid */
.gov-block{padding-top:clamp(36px,5vh,60px)}
.gov-side{padding-bottom:clamp(90px,13vh,170px)}
.people-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(14px,1.6vw,26px);margin-top:8px}
/* flex column, not block: the grid stretches every tile to the tallest caption in
   the row, and a <button> centres its content box in the leftover space — which
   left the portraits sitting at three different heights. */
button.person,.person-open{margin:0;padding:0;border:0;background:none;font:inherit;color:inherit;
  text-align:left;-webkit-appearance:none;appearance:none;width:100%;
  display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}
button.person{cursor:pointer}
.person-ph{flex:0 0 auto}
.person-ph{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--surface);border:1px solid var(--line)}
.person-ph img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);transition:filter .5s var(--ease),transform .6s var(--ease)}
.person:hover .person-ph img,.person:focus-visible .person-ph img{filter:grayscale(0);transform:scale(1.04)}
.person-plus{position:absolute;bottom:10px;right:10px;width:26px;height:26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:17px;line-height:1;
  background:var(--accent);color:#fff;opacity:0;transform:scale(.7);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.person:hover .person-plus,.person:focus-visible .person-plus{opacity:1;transform:scale(1)}
.person-cap{display:flex;flex-direction:column;gap:3px;margin-top:12px}
.person-name{font-family:var(--hd);font-weight:500;font-size:.98rem;letter-spacing:-.005em;color:var(--fg)}
.person-role{font-family:var(--lb);font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;color:var(--t3);line-height:1.3}
.person:focus-visible{outline:1px solid var(--accent);outline-offset:3px}
.label.accent{color:var(--accent)}
button.person{transition:opacity .4s var(--ease)}
.people-grid.has-open button.person:not(.is-active){opacity:.42}
.person.is-active .person-ph{border-color:var(--accent)}
.person.is-active .person-ph img{filter:grayscale(0)}
.person.is-active .person-plus{opacity:1;transform:scale(1) rotate(45deg)}

/* seats held open: same footprint, no face, not clickable */
.person-open .person-ph{border:1px dashed var(--line-2);background:transparent}
.person-open .person-ph::after{content:"+";position:absolute;inset:0;display:grid;place-items:center;
  color:var(--t4);font-family:var(--hd);font-size:1.3rem;line-height:1}
.person-open .person-cap{display:block;margin-top:12px;height:2.6em}

/* the biography drawer: full width, inserted after the clicked person's row so
   the grid opens around the face instead of covering the page */
.person-detail{grid-column:1/-1;overflow:hidden;opacity:0;background:var(--surface);
  border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2);
  margin:clamp(12px,1.5vw,22px) 0}
.person-detail[hidden]{display:none}
.person-detail.is-open{opacity:1}
.pd-in{position:relative;display:grid;grid-template-columns:clamp(150px,16vw,230px) minmax(0,1fr);
  gap:clamp(22px,3vw,50px);padding:clamp(22px,2.6vw,42px)}
.pd-ph{margin:0;aspect-ratio:4/5;overflow:hidden;border:1px solid var(--line);background:var(--bg)}
.pd-ph img{width:100%;height:100%;object-fit:cover;filter:grayscale(1)}
.pd-tx{padding-right:44px}
.pd-meta{display:flex;flex-wrap:wrap;gap:6px 22px;margin-bottom:14px}
.pd-name{font-size:clamp(1.4rem,2.4vw,2.1rem);text-transform:none;letter-spacing:-.015em;
  line-height:1.05;margin-bottom:18px}
.pd-bio{color:var(--t2);font-size:clamp(.9rem,.98vw,1rem);line-height:1.72;max-width:78ch}
.pd-close{position:absolute;top:clamp(14px,1.6vw,22px);right:clamp(14px,1.6vw,22px);
  width:34px;height:34px;border:1px solid var(--line-2);border-radius:50%;background:transparent;
  color:var(--fg);font-size:19px;line-height:1;cursor:pointer;display:flex;align-items:center;
  justify-content:center;transition:border-color .3s var(--ease),color .3s var(--ease)}
.pd-close:hover{border-color:var(--accent);color:var(--accent)}
@media(max-width:1024px){.people-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:768px){.people-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.pd-in{grid-template-columns:1fr;gap:20px}.pd-ph{max-width:200px}.pd-tx{padding-right:0}}
@media(max-width:480px){.people-grid{grid-template-columns:repeat(2,1fr)}}

/* governance */
.pic-gov{border-top:1px solid var(--line)}
.gov-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:clamp(30px,5vw,90px);
  padding-top:clamp(40px,6vh,72px);padding-bottom:clamp(90px,13vh,170px)}
.gov-hd{margin-bottom:26px}
.gov-col .spec .r{grid-template-columns:1fr;gap:2px;padding:16px 0}
.gov-name{color:var(--fg);font-size:clamp(1rem,1.3vw,1.2rem);font-weight:500}
.gov-col .spec .v{color:var(--t3);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;font-family:var(--lb)}
@media(max-width:820px){.gov-grid{grid-template-columns:1fr;gap:40px}}

/* contact */
.contact-sec{border-top:1px solid var(--line);padding-bottom:clamp(90px,14vh,180px)}
.contact-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(34px,6vw,100px);margin-top:clamp(40px,6vh,70px)}
.cform{display:flex;flex-direction:column;gap:22px}
.cf-intro{margin-bottom:6px}
.cf-row{display:flex;flex-direction:column;gap:9px}
.cf-row label{font-family:var(--lb);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--t3)}
.cform input,.cform textarea{background:transparent;border:0;border-bottom:1px solid var(--line-2);
  color:var(--fg);font-family:var(--hd);font-size:1.05rem;padding:8px 0;width:100%;transition:border-color .3s var(--ease)}
.cform input:focus,.cform textarea:focus{outline:none;border-color:var(--accent)}
.cform textarea{resize:vertical;min-height:96px}
.cform .btn{align-self:flex-start}
.cf-foot{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:10px}
.cf-status{font-size:.86rem;line-height:1.4;margin:0;max-width:34ch}
.cf-status.is-ok{color:var(--fg)}
.cf-status.is-err{color:var(--accent)}
.cform button[disabled]{opacity:.55;cursor:default}
.contact-info{align-self:start;display:flex;flex-direction:column;gap:30px;position:sticky;top:120px}
.ci-tag{font-size:clamp(1.3rem,2.2vw,2rem);text-transform:none;letter-spacing:-.01em;line-height:1.15;max-width:16ch}
.ci-addr .sf-hd{font-family:var(--lb);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--t3);margin-bottom:12px}
.ci-addr div{line-height:1.6;color:var(--t2)}
@media(max-width:820px){.contact-grid{grid-template-columns:1fr;gap:44px}.contact-info{position:static}}

/* footer refinements for PIC layout.
   The columns stretch (they used to be `align-items:start`, which sized each one
   to its own content and left the dividers ending at three different heights). */
.site-footer .sf-inner{align-items:stretch}
.sf-logo{display:inline-flex;align-items:center;gap:11px;margin-bottom:26px}
.sf-tagline{font-size:clamp(1.3rem,2vw,2.1rem);text-transform:none;letter-spacing:-.01em;line-height:1.14;max-width:18ch}
.sf-addr{font-style:normal;line-height:1.65;color:var(--t2);margin-bottom:16px}
.sf-offices{margin-top:6px}
.sf-langline{margin-top:20px}

/* nav tools inline with links */
.nav-r{display:flex;align-items:center;gap:clamp(16px,2vw,30px)}
@media(max-width:820px){.nav-contact{display:none}}
/* Re-assert the mobile hide: this file loads after 03-nav.css, so the .nav-r
   rule above would otherwise beat that file's media query and the language +
   theme controls would sit next to the burger, wrapping the bar onto two rows.
   On mobile the bar is brand + burger only; both controls live in the drawer. */
@media(max-width:900px){.nav-c,.nav-r{display:none}}

/* ── PIC1871 · archive-led history page ───────────────────────────────────── */
/* One panel stream, two readings:
     [data-view="slide"] — pinned, scroll-scrubbed horizontal track (plates fly
                           past with inner parallax; a HUD reads out the year)
     [data-view="text"]  — the same panels stacked vertically, plain reading
   Everything resolves through the shared tokens, so both views theme with the
   rest of the site. */

.hist-head{padding-top:clamp(150px,22vh,270px);padding-bottom:clamp(50px,8vh,110px)}
.hist-head .label{margin-bottom:28px}
.hist-title{font-size:clamp(3.4rem,12vw,11rem);line-height:.86;margin-bottom:34px}
.hist-lead{max-width:56ch;font-size:clamp(1.02rem,1.5vw,1.32rem);line-height:1.5;color:var(--t2)}
.hist-span{margin-top:40px;letter-spacing:.12em}

/* ── the stream ───────────────────────────────────────────────────────────── */
.hist-stream{position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* — slide view — */
.hist-stream[data-view="slide"]{overflow:hidden}
.hist-stream[data-view="slide"] .hist-track{display:flex;align-items:center;height:100vh;
  will-change:transform}
.hist-stream[data-view="slide"] .hp{flex:0 0 auto;height:100vh;display:flex;align-items:center;
  padding:0 clamp(28px,4vw,90px)}
/* the panel is as wide as it needs to be: the text column is fixed and the plate
   adds its own width, so a landscape document does not eat the prose */
.hist-stream[data-view="slide"] .hp-ch{width:auto;
  flex-direction:row;align-items:center;gap:clamp(30px,4vw,72px)}
.hist-stream[data-view="slide"] .hp-ch .hp-in{flex:0 0 clamp(320px,30vw,460px);max-width:46ch}
.hist-stream[data-view="slide"] .hp-plate.is-wide{width:min(74vw,1150px)}
.hist-stream[data-view="slide"] .hp-plate.is-tall{width:min(40vw,560px)}
.hist-stream[data-view="slide"] .hp-plate .hp-media{height:min(70vh,760px);width:auto}
/* plates are set to a constant height and let their own aspect ratio pick the
   width, so a landscape letter is never poured into a portrait box */
.hist-stream[data-view="slide"] .hp-doc{flex:0 0 auto}
.hist-stream[data-view="slide"] .hp-doc .hp-media{height:clamp(215px,35vh,380px);width:auto}

/* the media box is the parallax window: the img is slightly oversized and slides
   inside. The overscale is deliberately small — these are documents, and 12% a
   side was cutting the margins off the ones that matter. */
.hp-media{display:block;position:relative;overflow:hidden;width:100%;line-height:0;
  border:1px solid var(--line-2);background:var(--surface)}
.hp-media img{position:absolute;inset:-3% -4%;width:108%;height:106%;object-fit:cover;
  will-change:transform;filter:saturate(.88) contrast(1.02)}
.hp-plate .hp-media{border-color:var(--line)}

/* chapter panels */
.hp-meta{display:flex;align-items:baseline;gap:16px;margin-bottom:18px}
.hp-year{font-size:clamp(1.7rem,3.2vw,3rem);line-height:.9;letter-spacing:-.02em;color:var(--fg)}
.hp-meta .label{letter-spacing:.14em}
.hp-t{font-size:clamp(1.45rem,2.9vw,2.5rem);line-height:1.04;margin-bottom:20px;max-width:20ch}
.hp-b{color:var(--t2);max-width:52ch;font-size:clamp(.95rem,1.1vw,1.06rem);line-height:1.62}

.hp-doc figcaption{margin-top:11px;line-height:1.45;text-transform:none;letter-spacing:.01em;
  font-size:.66rem;max-width:40ch}
.hp-doc-btn{display:block;width:100%;padding:0;border:0;background:none;cursor:pointer;
  position:relative}
.hp-doc-btn:hover .hp-media{border-color:var(--accent)}
.hp-media,.hp-media img{transition:border-color .35s var(--ease),filter .5s var(--ease)}
.hp-doc-btn:hover .hp-media img{filter:saturate(1) contrast(1.05)}
.hp-zoom{position:absolute;right:9px;bottom:9px;width:26px;height:26px;display:grid;
  place-items:center;font-family:var(--hd);font-size:1rem;line-height:1;background:var(--bg);
  color:var(--fg);border:1px solid var(--line-2);opacity:0;transform:translateY(4px);
  transition:.35s var(--ease)}
.hp-doc-btn:hover .hp-zoom{opacity:1;transform:none}

.hp-coda .hp-t,.hp-coda .hp-year{color:var(--accent)}

/* — HUD (slide view only) — */
.hist-hud{position:absolute;left:0;right:0;bottom:0;z-index:3;pointer-events:none;
  display:flex;align-items:center;gap:clamp(14px,2.4vw,30px);
  padding:0 var(--mx) clamp(22px,3.5vh,44px)}
.hud-year{font-size:clamp(1rem,1.5vw,1.35rem);letter-spacing:-.01em;color:var(--fg);
  min-width:4.4ch;font-variant-numeric:tabular-nums}
.hud-bar{flex:1;height:1px;background:var(--line-2);position:relative;overflow:hidden}
.hud-bar i{position:absolute;inset:0 100% 0 0;background:var(--accent);
  transition:right .18s linear}
.hud-hint{letter-spacing:.16em}
.hist-stream[data-view="text"] .hist-hud{display:none}

/* — text view — */
.hist-stream[data-view="text"] .hist-track{display:block;transform:none!important}
.hist-stream[data-view="text"] .hp{display:block;height:auto;
  padding:clamp(46px,7vh,96px) var(--mx);border-bottom:1px solid var(--line)}
.hist-stream[data-view="text"] .hp:last-child{border-bottom:0}
.hist-stream[data-view="text"] .hp-ch{display:grid;gap:clamp(26px,4vw,64px);
  grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}
.hist-stream[data-view="text"] .hp-plate .hp-media{height:clamp(230px,46vh,540px);width:auto}
.hist-stream[data-view="text"] .hp-doc .hp-media{height:auto;width:100%}
.hist-stream[data-view="text"] .hp-media img{position:static;inset:auto;width:100%;height:100%;
  transform:none!important}

/* — view switch — */
.hist-viewsw{display:flex;justify-content:center;gap:10px;padding:26px var(--mx)}
.vsw{background:none;border:1px solid var(--line-2);color:var(--t3);cursor:pointer;
  font-family:var(--lb);font-size:.7rem;font-weight:500;letter-spacing:.1em;
  text-transform:uppercase;padding:11px 20px;transition:.3s var(--ease)}
.vsw:hover{color:var(--fg);border-color:var(--fg)}
.vsw[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}

/* ── eras: the layered timeline ───────────────────────────────────────────── */
/* Year range, era, headline and a two-or-three sentence summary sit on the line;
   the full passage opens in place. Nine full-length blocks pasted end to end
   would have made this page unreadable. */
.hist-eras{padding-bottom:clamp(70px,10vh,130px);border-top:1px solid var(--line)}
.hist-eras .sec-hd{max-width:840px}
.era-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.era{border-bottom:1px solid var(--line)}
.era-row{display:grid;width:100%;text-align:left;background:none;border:0;color:inherit;
  font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none;
  grid-template-columns:clamp(104px,11vw,156px) minmax(0,1fr) clamp(84px,9vw,124px);
  grid-template-areas:"y k x" "y t x" "y s x";
  gap:6px clamp(18px,3vw,46px);padding:clamp(22px,3vh,34px) 0;
  transition:padding-left .45s var(--ease)}
.era-row:hover{padding-left:14px}
.era-row:focus-visible{outline:1px solid var(--accent);outline-offset:-3px}
.era-y{grid-area:y;font-size:clamp(1rem,1.5vw,1.35rem);letter-spacing:-.01em;color:var(--fg);
  font-variant-numeric:tabular-nums;align-self:start;transition:color .35s var(--ease)}
.era-k{grid-area:k;letter-spacing:.08em}
.era-t{grid-area:t;font-family:var(--hd);font-weight:500;font-size:clamp(1.1rem,1.8vw,1.6rem);
  letter-spacing:-.015em;line-height:1.14;color:var(--fg);transition:color .35s var(--ease)}
.era-s{grid-area:s;color:var(--t2);font-size:.92rem;line-height:1.6;max-width:62ch;margin-top:4px}
.era-x{grid-area:x;align-self:start;justify-self:end;display:flex;align-items:baseline;gap:9px;
  font-family:var(--lb);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--t3);white-space:nowrap;transition:color .35s var(--ease)}
.era-xc{display:none}
.era-xa{display:inline-block;transition:transform .45s var(--ease)}
.era-row:hover .era-x,.era-row:hover .era-y{color:var(--accent)}
.era-row.is-open .era-x,.era-row.is-open .era-y,.era-row.is-open .era-t{color:var(--accent)}
.era-row.is-open .era-xw{display:none}
.era-row.is-open .era-xc{display:inline}
.era-row.is-open .era-xa{transform:rotate(180deg)}
/* same columns and gutter as the row above it, so the passage lines up with the
   summary it belongs to */
.era .disc-in{padding-top:0;padding-bottom:clamp(30px,4.5vh,50px);
  grid-template-columns:clamp(104px,11vw,156px) minmax(0,1fr);gap:clamp(18px,3vw,46px)}
.era .disc-body p{max-width:70ch}
@media(max-width:820px){
  .era-row{grid-template-columns:1fr auto;grid-template-areas:"y x" "k x" "t t" "s s";gap:8px 16px}
  .era-s{max-width:none}
  .era .disc-in{grid-template-columns:1fr}
}

/* ── chronology ───────────────────────────────────────────────────────────── */
.hist-chrono{padding-top:clamp(60px,9vh,120px);padding-bottom:clamp(80px,13vh,170px);
  border-top:1px solid var(--line)}
.hist-chrono .sec-hd{padding-top:0}
.chrono-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.chrono-row{display:grid;grid-template-columns:minmax(96px,150px) 1fr;gap:clamp(16px,3vw,48px);
  align-items:baseline;padding:18px 0;border-bottom:1px solid var(--line)}
.chrono-y{font-size:clamp(1.05rem,1.7vw,1.5rem);letter-spacing:-.01em;color:var(--fg)}
.chrono-t{color:var(--t2);font-size:clamp(.92rem,1.05vw,1.02rem);line-height:1.5;max-width:60ch}
.chrono-row:hover .chrono-y{color:var(--accent)}
.chrono-y,.chrono-t{transition:color .3s var(--ease)}
.hist-back{margin-top:52px}

/* ── plate lightbox ───────────────────────────────────────────────────────── */
.plate-modal{position:fixed;inset:0;z-index:1200;display:none;place-items:center;
  padding:clamp(20px,5vw,70px)}
.plate-modal.is-open{display:grid}
.plate-scrim{position:absolute;inset:0;background:rgba(var(--bg-rgb),.94);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.plate-fig{position:relative;margin:0;max-width:min(1100px,100%);max-height:100%;
  display:flex;flex-direction:column;gap:14px;align-items:center}
.plate-fig img{max-width:100%;max-height:calc(100vh - clamp(110px,16vh,210px));
  width:auto;height:auto;object-fit:contain;border:1px solid var(--line-2)}
.plate-fig figcaption{text-transform:none;letter-spacing:.01em;text-align:center;max-width:70ch}
.plate-close{position:absolute;top:clamp(14px,3vw,34px);right:clamp(14px,3vw,34px);z-index:2;
  width:42px;height:42px;background:none;border:1px solid var(--line-2);color:var(--fg);
  font-size:1.5rem;line-height:1;cursor:pointer;transition:.3s var(--ease)}
.plate-close:hover{border-color:var(--accent);color:var(--accent)}

/* ── responsive: below the pin threshold the stream is always the text stack ── */
@media(max-width:900px){
  .hist-viewsw{display:none}
  .hist-stream .hist-track{display:block!important;transform:none!important;height:auto!important}
  .hist-stream .hp{display:block!important;height:auto!important;
    padding:clamp(40px,6vh,80px) var(--mx)!important;border-bottom:1px solid var(--line)}
  .hist-stream .hp-ch{display:block!important;width:auto!important}
  .hist-stream .hp-plate{width:auto!important}
  .hist-stream .hp-doc{margin-top:28px!important;flex:none!important;max-width:520px}
  .hist-stream .hp-media{height:auto!important;width:100%!important}
  .hist-stream .hp-media img{position:static!important;inset:auto!important;
    width:100%!important;height:100%!important;transform:none!important}
  .hist-hud{display:none!important}
  .chrono-row{grid-template-columns:1fr;gap:6px}
}
@media(prefers-reduced-motion:reduce){
  .hist-stream .hp-media img{transform:none!important}
}

/* ── PIC1871 · the name block + the four investment rosters ────────────────── */
/* Each discipline holds a different kind of thing, so each is drawn differently:
   feature (few entities, told at length) · partners (a grid of houses we co-own)
   · registry (a dense fund directory built to take thirty entries) · editorial
   (themes, on dashed rules, meant to be edited often). */

/* ── the name, spelled out ────────────────────────────────────────────────── */
.pic-name{padding-top:clamp(66px,10vh,128px);padding-bottom:clamp(66px,10vh,128px)}
.nm-kicker{margin-bottom:clamp(28px,4.5vh,52px)}
.nm-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.1fr);
  gap:clamp(30px,5vw,90px);align-items:start}
.nm-mark{font-family:var(--hd);font-weight:700;letter-spacing:-.035em;line-height:.88;
  font-size:clamp(2.8rem,8.4vw,7.4rem);display:flex;flex-wrap:wrap;position:sticky;top:120px}
.nm-seg{color:var(--fg);transition:color .45s var(--ease),opacity .45s var(--ease)}
.nm-mark.is-focused .nm-seg{color:var(--t4)}
.nm-mark .nm-seg.is-lit{color:var(--accent)}

.nm-rows{display:flex;flex-direction:column}
.nm-lead{color:var(--t2);font-size:clamp(1rem,1.3vw,1.15rem);line-height:1.55;max-width:38ch;
  margin-bottom:clamp(24px,3.6vh,42px)}
.nm-row{display:grid;grid-template-columns:clamp(128px,15vw,205px) minmax(0,1fr) auto;
  align-items:start;gap:clamp(14px,2.2vw,34px);width:100%;text-align:left;background:none;
  border:0;border-top:1px solid var(--line);color:inherit;font:inherit;cursor:pointer;
  padding:clamp(20px,2.6vh,30px) 0;transition:padding-left .45s var(--ease)}
.nm-row:last-of-type{border-bottom:1px solid var(--line)}
.nm-word{font-size:clamp(1.1rem,1.9vw,1.7rem);text-transform:none;letter-spacing:-.015em;
  color:var(--fg);transition:color .35s var(--ease)}
.nm-gloss{color:var(--t2);font-size:clamp(.9rem,1vw,.98rem);line-height:1.62;max-width:60ch}
.nm-arw{color:var(--t4);font-size:1rem;line-height:1;
  transition:transform .45s var(--ease),color .35s var(--ease)}
.nm-row:hover{padding-left:14px}
.nm-row:hover .nm-word,.nm-row.is-on .nm-word{color:var(--accent)}
.nm-row:hover .nm-arw{color:var(--accent);transform:translateX(-5px)}
.nm-row.is-on .nm-arw{color:var(--accent);transform:rotate(180deg)}
.nm-row:focus-visible{outline:1px solid var(--accent);outline-offset:-3px}
@media(max-width:900px){
  .nm-grid{grid-template-columns:1fr;gap:34px}
  .nm-mark{position:static}
  .nm-row{grid-template-columns:1fr auto;gap:6px 16px}
  .nm-arw{grid-row:1;grid-column:2}
  /* on a phone the gloss is the payload of the tap, not permanent furniture */
  .nm-gloss{grid-column:1/-1;max-height:0;opacity:0;overflow:hidden;
    transition:max-height .5s var(--ease),opacity .4s var(--ease),margin-top .4s var(--ease)}
  .nm-row.is-on .nm-gloss{max-height:44em;opacity:1;margin-top:12px}
}

/* ── shared roster chrome ─────────────────────────────────────────────────── */
.inv{padding-top:clamp(30px,4.5vh,58px);padding-bottom:clamp(56px,8.5vh,104px)}
.inv-hd{display:flex;justify-content:space-between;align-items:baseline;gap:20px;
  padding-bottom:16px;border-bottom:1px solid var(--line-2);margin-bottom:clamp(24px,3.6vh,44px)}

/* Partner logos are drawn as single-colour silhouettes in the page's ink: the
   supplied files are variously white-on-transparent, navy and two-tone blue, and
   none of them would survive both the light and the dark palette as-is. The file
   is used as a mask and painted with currentColor, so every mark sits at the
   same weight on either ground. Add `is-color` to one to keep its own colours.
   Optical size is per logo (--lgo-h), because a 10:1 wordmark and a 2.8:1 lockup
   do not read the same at one height. */
.lgo{display:block;width:100%;height:var(--lgo-h,30px);
  background:var(--lgo) no-repeat left center/contain}
@supports ((-webkit-mask-image:url(#a)) or (mask-image:url(#a))){
  .lgo{background:currentColor;color:var(--fg);
    -webkit-mask:var(--lgo) no-repeat left center;-webkit-mask-size:contain;
    mask:var(--lgo) no-repeat left center;mask-size:contain}
  .lgo.is-color{background:var(--lgo) no-repeat left center/contain;
    -webkit-mask:none;mask:none}
}
.lgo-lg{height:calc(var(--lgo-h,30px) * 1.15)}
@media(max-width:900px){.lgo{height:calc(var(--lgo-h,30px) * .86)}}

/* typographic lockup, used when an entity has no logo file yet */
.emark{display:flex;flex-direction:column;font-family:var(--hd);line-height:.96;
  letter-spacing:-.025em;color:var(--fg)}
.emark .e1{font-weight:300;font-size:clamp(1.05rem,1.6vw,1.4rem)}
.emark .e2{font-weight:600;font-size:clamp(1.05rem,1.6vw,1.4rem)}
.emark-lg .e1,.emark-lg .e2{font-size:clamp(1.5rem,2.6vw,2.3rem)}

/* ── 01 Direct · feature ──────────────────────────────────────────────────── */
.fcard{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.85fr);
  gap:clamp(26px,4vw,72px);border:1px solid var(--line-2);background:var(--surface);
  padding:clamp(24px,3vw,50px)}
.fcard+.fcard{margin-top:clamp(18px,2.4vw,30px)}
.fcard-role{margin-top:16px;line-height:1.4}
.fcard-spec{margin-top:clamp(22px,2.8vh,34px)}
.fcard-thesis{font-size:clamp(1.15rem,1.95vw,1.75rem);text-transform:none;letter-spacing:-.015em;
  line-height:1.16;max-width:26ch;margin-bottom:22px}
.fcard-body{color:var(--t2);font-size:clamp(.92rem,1vw,1.02rem);line-height:1.68;max-width:68ch}
.fcard-parts{margin-top:clamp(24px,3vh,34px);padding-top:18px;border-top:1px solid var(--line)}
.fcard-parts ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:13px;padding:0}
.fcard-parts li{font-family:var(--lb);font-size:.72rem;letter-spacing:.03em;text-transform:uppercase;
  color:var(--t2);border:1px solid var(--line-2);padding:7px 12px;line-height:1}
.elink{margin-top:clamp(26px,3.4vh,38px)}
@media(max-width:900px){.fcard{grid-template-columns:1fr;gap:26px}}

/* ── 02 Associate · partner grid ──────────────────────────────────────────── */
.pgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line)}
.pcard{background:var(--bg);padding:clamp(22px,2.6vw,40px);display:flex;flex-direction:column;
  gap:14px;transition:background .4s var(--ease)}
.pcard:hover{background:var(--surface)}
.pcard-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.pcard-arw{color:var(--t4);font-size:1.05rem;line-height:1;
  transition:transform .4s var(--ease),color .35s var(--ease)}
.pcard:hover .pcard-arw{color:var(--accent);transform:translate(4px,-4px)}
.pcard-focus{letter-spacing:.05em}
.pcard-line{color:var(--t2);font-size:.95rem;line-height:1.6;max-width:46ch}
.pcard-foot{margin-top:auto;padding-top:18px;border-top:1px solid var(--line);
  display:flex;flex-direction:column;gap:7px}
.pcard-rel{font-family:var(--lb);font-size:.7rem;letter-spacing:.03em;text-transform:uppercase;
  color:var(--t3);line-height:1.45}
.pcard:focus-visible{outline:1px solid var(--accent);outline-offset:-2px}
@media(max-width:760px){.pgrid{grid-template-columns:1fr}}

/* ── 03 Indirect · fund registry ──────────────────────────────────────────── */
.axes{margin-bottom:clamp(28px,4vh,48px)}
.axes-hd{margin-bottom:15px}
.axes-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line)}
.ax{background:var(--bg);padding:clamp(15px,1.8vw,26px);display:flex;flex-direction:column;gap:9px}
.ax-v{font-family:var(--lb);font-size:.78rem;letter-spacing:.02em;text-transform:uppercase;
  color:var(--fg);line-height:1.45}
.fgroup+.fgroup{margin-top:clamp(26px,4vh,44px)}
.fgroup-hd{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:12px;
  border-bottom:1px solid var(--line-2);margin-bottom:16px}
.fgroup-n{font-variant-numeric:tabular-nums;color:var(--t3)}
/* the logo wall: one tile per house, its funds listed underneath. auto-fit (not
   auto-fill) so a short group stretches instead of leaving dead tracks, and the
   hairlines are rings on the tiles, so an unfinished row shows no grey gap. */
.hwall{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:1px}
.hcard{background:var(--bg);box-shadow:0 0 0 1px var(--line);padding:20px 20px 18px;
  display:flex;flex-direction:column;gap:12px;position:relative;min-height:168px;
  color:var(--fg);transition:background .35s var(--ease)}
a.hcard:hover{background:var(--surface)}
a.hcard:focus-visible{outline:1px solid var(--accent);outline-offset:-2px}
/* the mark sits in a fixed band so every tile's fund list starts on one line */
.hcard-mark{display:flex;align-items:center;min-height:34px;padding-right:20px}
.hcard-word{font-family:var(--hd);font-weight:500;font-size:1.02rem;letter-spacing:-.015em;
  line-height:1.15;color:var(--fg)}
.hcard-name{letter-spacing:.05em;line-height:1.3}
.hcard-funds{list-style:none;margin:auto 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
/* fund names are printed exactly as the client's register has them — mixed
   case, legal suffixes and all — so no text-transform here */
.hcard-funds li{font-family:var(--lb);font-size:.72rem;letter-spacing:.015em;
  color:var(--t3);line-height:1.5;padding-left:11px;position:relative}
.hcard-funds li::before{content:"";position:absolute;left:0;top:.52em;width:4px;height:1px;background:var(--t4)}
.hcard-arw{position:absolute;top:18px;right:16px;color:var(--t4);font-size:.9rem;line-height:1;
  opacity:0;transition:opacity .35s var(--ease),color .35s var(--ease)}
a.hcard:hover .hcard-arw{opacity:1;color:var(--accent)}
@media(max-width:520px){.hwall{grid-template-columns:1fr}.hcard{min-height:0}}
@media(max-width:900px){.axes-row{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.fwall{grid-template-columns:1fr}}

/* ── 04 Opportunities · editorial ─────────────────────────────────────────── */
/* dashed rules and uneven spans: this section should not look as settled as the
   other three, because it isn't */
.ostream{display:grid;grid-template-columns:repeat(12,1fr);
  gap:clamp(24px,3vh,40px) clamp(18px,2vw,36px)}
.ocard{grid-column:span 6;border-top:1px dashed var(--line-2);padding-top:20px}
.ocard:nth-child(4n+1){grid-column:span 7}
.ocard:nth-child(4n+2){grid-column:span 5}
.ocard:nth-child(4n+3){grid-column:span 5}
.ocard:nth-child(4n+4){grid-column:span 7}
.ocard-top{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.otag{font-family:var(--lb);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--accent);border:1px solid rgba(var(--accent-rgb),.42);padding:5px 9px;line-height:1}
.ocard-t{font-family:var(--hd);font-weight:500;font-size:clamp(1.05rem,1.6vw,1.42rem);
  letter-spacing:-.012em;line-height:1.18;margin-bottom:12px;max-width:28ch}
.ocard-b{color:var(--t2);font-size:.94rem;line-height:1.65;max-width:54ch}
/* the real participations, linked out to their own sites */
.ocard-links{display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:18px}
.olink{display:inline-flex;align-items:center;gap:6px;font-family:var(--lb);
  font-size:.72rem;letter-spacing:.02em;color:var(--t1);text-decoration:none;
  border:1px solid var(--line-2);padding:6px 11px;line-height:1;
  transition:border-color .3s ease,color .3s ease}
.olink:hover{border-color:var(--accent);color:var(--accent)}
.olink-x{font-size:.72em;opacity:.55}
.ocard-geo{margin-top:18px;letter-spacing:.05em;line-height:1.5}
/* impact real estate spans the full row and reads a touch wider */
.ostream .ocard--wide{grid-column:1/-1}
.ocard--wide .ocard-b{max-width:80ch}
.onote{margin-top:clamp(30px,4vh,52px);padding-top:18px;border-top:1px dashed var(--line-2);
  color:var(--t3);font-size:.86rem;line-height:1.6;max-width:66ch}
@media(max-width:820px){.ocard,.ocard:nth-child(4n+1),.ocard:nth-child(4n+2),
  .ocard:nth-child(4n+3),.ocard:nth-child(4n+4),.ostream .ocard--wide{grid-column:1/-1}}
