:root{
  --paper:#F1F1EE;--surface:#FBFBFA;--ink:#121211;--ink2:#3A3A37;--muted:#66665F;--line:#121211;--soft:#D9D9D3;--onink:#FBFBFA;
  --accent:#FF4F1F;--atext:color-mix(in srgb,var(--accent) 78%,#000);
  --sans:"Archivo",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--wrap:1360px;--gutter:32px;--ease:cubic-bezier(.2,.7,.2,1)
}
:root[data-theme="dark"]{--paper:#121211;--surface:#171716;--ink:#F1F1EE;--ink2:#D4D4CE;--muted:#9A9A92;--line:#F1F1EE;--soft:#2A2A28;--onink:#0E0E0D;--atext:var(--accent)}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink2);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background .3s,color .3s}
a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#fff}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.mono{font-family:var(--mono)}.dim{color:var(--muted)}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:500;margin:0}
h1,h2,h3,h4{color:var(--ink);margin:0;font-weight:800;letter-spacing:-.035em;line-height:1}
main{transition:opacity .22s}main.switching{opacity:0}
.progress{position:fixed;left:0;top:0;height:2px;width:100%;background:var(--accent);transform-origin:0 50%;transform:scaleX(0);z-index:60}

/* buttons: hard border, ink fill */
.btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border:1.5px solid var(--line);color:var(--ink);font-weight:600;font-size:14px;background:transparent;transition:color .2s,background .2s,box-shadow .2s,transform .2s}
.btn:hover{color:var(--atext);box-shadow:3px 3px 0 var(--line);transform:translate(-1px,-1px)}
.btn-ink{background:var(--ink);color:var(--onink);font-weight:700}.btn-ink:hover{color:var(--onink);background:color-mix(in srgb,var(--ink) 84%,var(--accent));box-shadow:3px 3px 0 var(--accent)}
.btn-lg{min-height:56px;padding:0 24px;font-size:16px}
.ctas{display:flex;flex-wrap:wrap;gap:12px}

/* fascia */
.fascia{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:1.5px solid var(--line)}
.fascia-in{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:14px;padding-bottom:14px}
.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);overflow:hidden;display:grid;place-items:center;background:var(--surface)}.brand-mark img{width:100%;height:100%;object-fit:cover}
.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-text b{font-weight:800;color:var(--ink);letter-spacing:-.02em;font-size:16px}.brand-text .sub{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.dir{display:flex;gap:4px}.dir a{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:10px 12px;color:var(--muted);border:1.5px solid transparent;transition:color .2s,border-color .2s}
.dir a:hover,.dir a.active{color:var(--ink);border-color:var(--line)}
.tools{display:flex;align-items:center;gap:8px}
.seg{display:flex;border:1.5px solid var(--line)}.seg button{border:0;background:transparent;font:600 11px var(--mono);letter-spacing:.1em;color:var(--muted);padding:9px 12px;cursor:pointer}.seg button+button{border-left:1.5px solid var(--line)}.seg button.on{background:var(--ink);color:var(--onink)}
.theme{width:40px;height:40px;border:1.5px solid var(--line);background:transparent;display:grid;place-items:center;cursor:pointer}.theme i{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--ink);background:var(--ink);transition:background .3s}:root[data-theme="dark"] .theme i{background:transparent}

/* hero */
.hero{border-bottom:1.5px solid var(--line)}
.hero-in{padding-top:16px;padding-bottom:48px;display:flex;flex-direction:column;gap:8px}
.hero-top{display:flex;flex-direction:column;gap:14px}
.hl-wrap{display:flex;flex-direction:column;gap:8px}
.hl{font-size:clamp(22px,2.5vw,36px);min-height:1.05em;white-space:normal;max-width:30ch;line-height:1.1;transition:opacity .35s,transform .35s var(--ease)}.hl.is-fading{opacity:0;transform:translateY(6px)}
.hl-dots{display:flex;gap:6px}.hl-dot{width:22px;height:22px;border:0;background:transparent;cursor:pointer;display:grid;place-items:center;padding:0}.hl-dot::before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid var(--muted);transition:transform .2s,background .2s,border-color .2s}.hl-dot:hover::before{border-color:var(--ink);transform:scale(1.2)}.hl-dot.on::before{background:var(--accent);border-color:var(--accent)}
.hero-body{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:40px 72px;border-top:1.5px solid var(--line);padding-top:40px;margin-top:10px}
.hero-left{flex:1 1 520px;display:flex;flex-direction:column;gap:30px}
.intro{margin:0;max-width:52ch;font-size:19px;line-height:1.42;color:var(--ink2)}
.duty{flex:0 1 440px;border:1.5px solid var(--line);background:var(--surface);padding:18px 20px 20px;box-shadow:6px 6px 0 var(--soft);display:flex;flex-direction:column;gap:16px}
.duty-head{display:flex;justify-content:space-between;align-items:center}
.live{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;display:inline-flex;align-items:center;gap:7px;color:var(--ink)}.live i{width:8px;height:8px;border-radius:50%;background:#1DB954;box-shadow:0 0 0 0 rgba(29,185,84,.5);animation:pulse 2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(29,185,84,0)}}
.duty-body{display:flex;gap:16px;align-items:center}
.photo{width:104px;height:104px;border-radius:50%;border:1.5px solid var(--line);overflow:hidden;flex:none;background:var(--paper);display:grid;place-items:center}.photo img{width:100%;height:100%;object-fit:cover}
.duty-name{font-size:20px;font-weight:800;color:var(--ink);letter-spacing:-.02em;display:block}.duty-role{margin:2px 0 0;font-size:14px}.duty-where{margin:4px 0 0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.duty-facts{margin:0;border-top:1px dashed var(--line);padding-top:12px;display:grid;gap:8px}.duty-facts div{display:grid;grid-template-columns:64px 1fr;gap:12px;font-size:13px}.duty-facts dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:2px}.duty-facts dd{margin:0;color:var(--ink)}

/* visitor count */
.door{display:inline-flex;align-items:stretch;border:1.5px solid var(--line);background:var(--surface);box-shadow:4px 4px 0 var(--soft)}
.door>*{padding:6px 12px;border-right:1.5px solid var(--line);display:flex;flex-direction:column;justify-content:center}.door>*:last-child{border-right:0}
.door .live{flex-direction:row;gap:8px;align-items:center;background:var(--ink);color:var(--onink)}.door .live i{background:#1DB954}
.dstat{line-height:1.1;min-width:84px}.dstat b{font-size:17px;font-weight:600;color:var(--ink);letter-spacing:.02em;font-variant-numeric:tabular-nums}.dstat span{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:2px}
.door .eyebrow{font-size:9.5px}
@media (max-width:620px){.door .eyebrow,.door .live span{display:none}.dstat{min-width:60px}}
/* route */
.route-head{display:flex;justify-content:space-between;align-items:center;padding:4px 0 0}
.route{position:relative;height:clamp(300px,calc(100vh - 300px),420px);margin:0 -10px 10px;color:var(--ink)}
.route-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.stops{position:absolute;inset:0}
.stop{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;transition:opacity .7s var(--ease)}.stop.in{opacity:1}
.stop .disc{width:96px;height:96px;border-radius:50%;border:1.5px solid var(--line);overflow:hidden;cursor:pointer;background:var(--surface);transition:transform .35s var(--ease),box-shadow .35s;box-shadow:0 0 0 0 var(--line)}
.stop .disc img{width:100%;height:100%;object-fit:cover;display:block}
.stop.big .disc{width:110px;height:110px}
.stop:hover .disc,.stop.lit .disc{transform:translate(-3px,-3px);box-shadow:1px 1px 0 var(--line),2px 2px 0 var(--line),3px 3px 0 var(--line),4px 4px 0 var(--line),5px 5px 0 var(--line),6px 6px 0 var(--line)}
.stop.lit .disc{box-shadow:1px 1px 0 var(--accent),2px 2px 0 var(--accent),3px 3px 0 var(--accent),4px 4px 0 var(--accent),5px 5px 0 var(--accent),6px 6px 0 var(--accent)}
.stop .lbl{text-align:center;line-height:1.3}.stop .lbl b{display:block;font-size:13px;font-weight:700;color:var(--ink);letter-spacing:-.01em}.stop .lbl .yr{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.08em}
.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--onink);padding:14px 16px;width:320px;opacity:0;transform:translate(-50%,-100%) translateY(-12px);transition:opacity .2s,transform .25s var(--ease);font-size:13.5px;line-height:1.5;z-index:5;box-shadow:4px 4px 0 var(--accent)}
.tip .eyebrow{color:color-mix(in srgb,var(--onink) 60%,transparent);display:block;margin-bottom:6px}.tip.show{opacity:1;transform:translate(-50%,-100%) translateY(-22px)}

/* sections */
.section{padding:96px 0 0;border-bottom:1.5px solid var(--line)}
.section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px;padding-bottom:40px}
.section-head .eyebrow{margin-bottom:12px}.section-title{font-size:clamp(40px,4.5vw,56px)}.section-intro{margin:0;max-width:44ch;font-size:18px;line-height:1.5;color:var(--ink2)}

/* stop sections */
.stopsec{position:relative;display:grid;grid-template-columns:300px 1fr;gap:56px;padding:64px 0 80px;border-top:1.5px solid var(--line);scroll-margin-top:84px}
.stopsec .bigyear{position:absolute;right:0;top:28px;font-family:var(--mono);font-size:clamp(90px,14vw,200px);line-height:1;font-weight:500;color:transparent;-webkit-text-stroke:1px var(--soft);pointer-events:none;user-select:none}
.stopsec .side{position:sticky;top:96px;align-self:start;display:flex;flex-direction:column;gap:16px}
.stopsec .biglogo{width:140px;height:140px;border-radius:50%;border:1.5px solid var(--line);overflow:hidden;background:var(--surface);box-shadow:6px 6px 0 var(--soft)}.stopsec .biglogo img{width:100%;height:100%;object-fit:cover}
.stopsec .chap{display:flex;gap:10px;align-items:center}.stopsec .chap .n{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--onink);background:var(--ink);padding:3px 8px}
.stopsec .main{position:relative}
.stopsec h2{font-size:34px;margin-bottom:6px}.stopsec .kicker{color:var(--muted);font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;margin:0 0 24px}
.stopsec .lead{font-size:22px;line-height:1.42;margin:0 0 16px;color:var(--ink);max-width:40ch;font-weight:500}
.stopsec .body p{margin:0 0 12px;max-width:66ch;font-size:16px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);margin:28px 0 8px;border:1.5px solid var(--line);background:var(--surface)}
.stats>div{padding:16px 18px;border-right:1.5px solid var(--line)}.stats>div:last-child{border-right:0}
.stats b{display:block;font-size:28px;letter-spacing:-.035em;font-weight:800;color:var(--ink);line-height:1}.stats span{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);display:block;margin-top:6px}
.sub-h{margin:40px 0 14px;display:flex;align-items:center;gap:12px}.sub-h::after{content:"";flex:1;height:1px;background:var(--soft)}
.small-sub{margin:-4px 0 16px;max-width:66ch;font-size:15px}

/* cards: hard border + stacked offset on hover */
.card{background:var(--surface);border:1.5px solid var(--line);transition:transform .25s var(--ease),box-shadow .25s}
.card:hover{transform:translate(-3px,-3px);box-shadow:1px 1px 0 var(--line),2px 2px 0 var(--line),3px 3px 0 var(--line),4px 4px 0 var(--line),5px 5px 0 var(--line),6px 6px 0 var(--line)}
.interns{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.intern{padding:18px}.intern .lg{width:52px;height:52px;border-radius:50%;border:1.5px solid var(--line);overflow:hidden;display:block;margin-bottom:14px}.intern .lg img{width:100%;height:100%;object-fit:cover}
.intern b{display:block;font-weight:700;color:var(--ink);font-size:14.5px}.intern .when{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);display:block;margin:4px 0 10px}.intern p{margin:0;font-size:13.5px}
.press{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:14px}
.fig{position:relative;cursor:zoom-in;display:flex;flex-direction:column}
.fig .img{flex:1;overflow:hidden;background:var(--soft);border-bottom:1.5px solid var(--line)}
.fig img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}.fig:hover img{transform:scale(1.03)}
.fig .cap2{padding:10px 12px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;justify-content:space-between;gap:10px}.fig .cap2 b{color:var(--ink);font-weight:600}
.press .fig .img{aspect-ratio:3/4}.press .fig:first-child .img{aspect-ratio:auto}
.apps{display:grid;grid-template-columns:repeat(2,230px);gap:14px}.apps .fig .img{aspect-ratio:9/18}
.awards{display:grid;grid-template-columns:1fr 1fr;gap:14px}.awards .fig .img{aspect-ratio:4/3}
.tools-grid{display:grid;gap:14px}
.tool{display:grid;grid-template-columns:1.1fr 1fr}.tool .shot{position:relative;min-height:240px;background:var(--soft);border-right:1.5px solid var(--line)}.tool .shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tool .shot .lock{position:absolute;left:12px;bottom:12px;background:var(--ink);color:var(--onink);font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:5px 9px}
.tool .txt{padding:22px 24px}.tool h4{font-size:20px;margin-bottom:8px}.tool p{margin:0;font-size:14.5px}
.smalls{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.small{padding:16px 18px}.small .row{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:6px}.small b{font-weight:700;color:var(--ink);font-size:15px}.small .mono{font-size:10.5px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.small p{margin:0;font-size:13.5px}

/* education */
.edu{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:40px}
.edu-item{display:flex;gap:16px;padding:18px}.edu-item .lg{width:56px;height:56px;border-radius:50%;border:1.5px solid var(--line);overflow:hidden;flex:none}.edu-item .lg img{width:100%;height:100%;object-fit:cover}
.edu-item b{display:block;color:var(--ink);font-weight:700;font-size:15px}.edu-item .eyebrow{display:block;margin:3px 0 8px}.edu-item p{margin:0;font-size:14px}
.edu-interns{display:flex;flex-direction:column;gap:6px;margin-top:12px;border-top:1px dashed var(--soft);padding-top:10px}
.ei{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink2)}.ei img{width:22px;height:22px;border-radius:50%;border:1px solid var(--line);object-fit:cover}.ei b{display:inline;font-size:12.5px}
@media (max-width:1000px){.edu{grid-template-columns:1fr}}
/* facts */
.facts .wrap{padding-bottom:96px}
.facts-grid{display:grid;grid-template-columns:1fr 1.2fr .9fr;gap:40px;border-top:1.5px solid var(--line);padding-top:32px}
.langbars{list-style:none;margin:0;padding:0;display:grid;gap:14px}.langbars .row{display:flex;justify-content:space-between;margin-bottom:6px;font-size:14px}.langbars .row b{color:var(--ink);font-weight:600}.langbars .row span{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.langbars .bar{height:6px;border:1.5px solid var(--line);overflow:hidden}.langbars .bar i{display:block;height:100%;background:var(--ink);width:0;transition:width 1.2s var(--ease)}.langbars.in .bar i{width:var(--w)}
.plain{list-style:none;margin:0;padding:0;display:grid;gap:8px}.plain li{font-size:14px;padding-left:16px;position:relative}.plain li a{display:block}.plain li a:hover b{color:var(--atext)}.plain li b{display:block;color:var(--ink);font-weight:600}.plain li .eyebrow{display:block;margin-top:2px}.plain li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;background:var(--accent)}
.chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.chips li{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;border:1.5px solid var(--line);padding:7px 11px;color:var(--ink)}

/* contact */
.contact{border-bottom:0}
.contact-in{padding-top:32px;padding-bottom:120px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:56px}
.contact-left{flex:1 1 480px;display:flex;flex-direction:column;gap:24px}
.contact-title{font-size:clamp(48px,6.5vw,76px);letter-spacing:-.04em;line-height:.95}
.wall{flex:0 1 420px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-content:start}
.wall img{width:100%;aspect-ratio:1;border-radius:50%;border:1.5px solid var(--line);object-fit:cover;filter:grayscale(1);transition:filter .3s,transform .3s}.wall img:hover{filter:none;transform:translate(-2px,-2px)}
.site-footer{border-top:1.5px solid var(--line);padding:20px 0 44px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.site-footer .wrap{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* reveal */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease) var(--rd,0s),transform .7s var(--ease) var(--rd,0s)}.reveal.in{opacity:1;transform:none}
.lightbox{position:fixed;inset:0;background:rgba(18,18,17,.94);display:none;place-items:center;z-index:100;cursor:zoom-out}.lightbox.open{display:grid}.lightbox img{max-width:92vw;max-height:92vh;border:1.5px solid #F1F1EE}.lightbox button{position:absolute;top:14px;right:22px;background:none;border:0;color:#fff;font-size:34px;cursor:pointer}

@media (max-width:1100px){.facts-grid{grid-template-columns:1fr 1fr}.wall{flex-basis:100%;grid-template-columns:repeat(7,1fr)}}
@media (max-width:1000px){
  :root{--gutter:20px}.dir{display:none}.brand-text .sub{display:none}
  .hero-in{padding-top:28px;gap:28px}.route{min-height:640px}.stop .disc{width:84px;height:84px}.stop.big .disc{width:96px;height:96px}
  .stopsec{grid-template-columns:1fr;gap:22px;padding:48px 0 56px}.stopsec .side{position:static;flex-direction:row;align-items:center}.stopsec .biglogo{width:84px;height:84px}
  .interns,.press,.awards,.stats,.smalls{grid-template-columns:1fr 1fr}.press .fig:first-child{grid-column:span 2}.tool{grid-template-columns:1fr}.tool .shot{border-right:0;border-bottom:1.5px solid var(--line)}
}
@media (max-width:620px){.hl{font-size:34px}.intro{font-size:19px}.interns,.press,.awards,.smalls{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.stats>div:nth-child(2n){border-right:0}.press .fig:first-child{grid-column:auto}.apps{grid-template-columns:1fr 1fr}.facts-grid{grid-template-columns:1fr}.stop .disc{width:68px;height:68px}.stop.big .disc{width:76px;height:76px}.wall{grid-template-columns:repeat(4,1fr)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal,.stop{opacity:1}.stop{transform:translate(-50%,-50%)}}

/* ---- neural layer (remove body.neural to disable) ---- */
#neural{position:fixed;inset:0;z-index:0;pointer-events:none}
body.neural main,body.neural .fascia{position:relative;z-index:1}
body.neural .fascia{background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(6px)}
body.neural .hero{background:transparent}
body.neural .section,body.neural .site-footer{background:color-mix(in srgb,var(--paper) 78%,transparent);backdrop-filter:blur(2px)}
body.neural .duty,body.neural .card,body.neural .stats,body.neural .stop .disc,body.neural .biglogo,body.neural .tip,body.neural .edu-item{background:var(--surface)}
.synapse{filter:drop-shadow(0 0 8px var(--accent))}
body.neural .hl::after{content:"";display:inline-block;width:.08em;height:.85em;background:var(--accent);margin-left:.06em;vertical-align:-.08em;animation:caret 1s steps(1) infinite}
@keyframes caret{50%{opacity:0}}

/* ---- knowledge graph ---- */
.gfilters{display:flex;gap:4px;flex-wrap:wrap}.gfilters button{font:600 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;border:1.5px solid var(--line);background:transparent;color:var(--muted);padding:8px 12px;cursor:pointer}.gfilters button.on{background:var(--ink);color:var(--onink)}
.graph-wrap{display:grid;grid-template-columns:1fr 0;gap:0;transition:grid-template-columns .35s var(--ease);margin-top:10px}
.graph-wrap:has(.gpanel.open){grid-template-columns:1fr 380px;gap:16px}
.graph{position:relative;height:clamp(440px,calc(100vh - 330px),620px);border:1.5px solid var(--line);background:color-mix(in srgb,var(--surface) 70%,transparent);overflow:hidden}
.graph svg{display:block}.ghint{position:absolute;left:14px;bottom:10px;margin:0}
.gh{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;fill:var(--muted)}
.ge{fill:none;stroke:var(--ink);stroke-opacity:.18;stroke-width:1.2;transition:stroke-opacity .25s}.ge.on{stroke:var(--accent);stroke-opacity:.9;stroke-width:1.6}.ge.dim{stroke-opacity:.05}
.sig{fill:var(--accent);pointer-events:none}.ge{pointer-events:none}
.gn{cursor:pointer;outline:none;transition:opacity .25s}.gn.dim{opacity:.18}.gn .halo{fill:var(--accent);opacity:0;transition:opacity .2s}.gn:hover .halo,.gn:focus .halo,.gn.sel .halo{opacity:.18}
.gn .ring{fill:var(--surface);stroke:var(--line);stroke-width:1.5}.gn .dot{fill:var(--surface);stroke:var(--line);stroke-width:1.5}
.gn.tool .dot{fill:var(--ink)}.gn.cert .dot{fill:#0056d2;stroke:#0056d2}.gn.press .dot{fill:#fff}.gn.award .dot{fill:#ff9900;stroke:#ff9900}
.gn.sel .ring,.gn.sel .dot{stroke:var(--accent);stroke-width:2.5}
.gl{font-family:var(--sans);font-size:10.5px;font-weight:600;fill:var(--ink);pointer-events:none}.gn.cert .gl,.gn.press .gl,.gn.award .gl{font-weight:500;font-size:10.5px;fill:var(--ink2)}
.gpanel{overflow:hidden;opacity:0;transition:opacity .3s;border:1.5px solid var(--line);background:var(--surface);padding:0;position:relative}
.gpanel.open{opacity:1;padding:20px 22px;overflow:auto;max-height:clamp(340px,calc(100vh - 275px),600px)}
.gpanel h3{font-size:20px;margin:6px 0 10px;letter-spacing:-.02em}.gpanel .glead{font-size:15px;color:var(--ink);margin:0 0 10px;line-height:1.45}.gpanel .gbody{font-size:14px;margin:0 0 10px}
.gimgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin:12px 0}.gimgs img{width:100%;aspect-ratio:1;object-fit:cover;border:1.5px solid var(--line)}.gimgs img.blur{filter:saturate(.8)}
.gacts{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.gclose{position:absolute;right:10px;top:8px;border:0;background:none;font-size:24px;cursor:pointer;color:var(--muted)}
@media (max-width:1000px){.graph-wrap:has(.gpanel.open){grid-template-columns:1fr}.graph{height:560px}.gpanel.open{max-height:none;margin-top:12px}.gl{font-size:9.5px}}
.tool .shot .ticon{position:absolute;right:12px;top:12px;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);z-index:1}
.skills{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:40px}.skill{padding:18px}.skill b{display:block;color:var(--ink);font-weight:700;font-size:15px;margin-bottom:6px}.skill p{margin:0;font-size:13.5px}@media (max-width:1000px){.skills{grid-template-columns:1fr 1fr}}@media (max-width:620px){.skills{grid-template-columns:1fr}}

/* fan-out graph */
.gn.hub .ring{stroke-width:1.5}.gn.hub.open .ring{stroke:var(--accent);stroke-width:2.5}.gn.hub.dim{opacity:.35}
.gn.kid{animation:kidin .45s var(--ease) both;animation-delay:var(--d,0ms)}@keyframes kidin{from{opacity:0;transform:translate(var(--tx,0),var(--ty,0)) scale(.6)}}
.gn.kid .ring{fill:var(--surface)}.gl.big{font-size:12.5px;font-weight:700}.gy{font-family:var(--mono);font-size:10px;letter-spacing:.08em;fill:var(--muted);pointer-events:none}
.glist{list-style:none;margin:10px 0;padding:0;display:grid;gap:8px}.glist li b{display:block;font-size:13.5px;color:var(--ink)}.glist li span{font-size:13px;color:var(--ink2)}
.graph{height:clamp(340px,calc(100vh - 275px),600px)}
