/* shared base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:17px/1.6 var(--font-body);}
img{max-width:100%}
a{color:var(--link,var(--accent))}
a:focus-visible,button:focus-visible,textarea:focus-visible{outline:3px solid var(--focus,var(--accent));outline-offset:2px}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.narrow{max-width:780px}
.skip{position:absolute;left:-999px;top:0;background:var(--text);color:var(--bg);padding:8px 12px;z-index:10}
.skip:focus{left:8px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mono{font-family:var(--font-mono)}
mark.ph{background:var(--ph-bg,#fff3b0);color:var(--ph-fg,#5a4500);padding:0 .25em;border-radius:3px;font-size:.92em}
h1,h2,h3,h4{font-family:var(--font-head);line-height:1.15;margin:0 0 .5em}
p{margin:0 0 1em}
/* header */
.site-header{position:sticky;top:0;z-index:5;background:var(--header-bg,var(--bg));border-bottom:1px solid var(--line)}
.nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;flex-wrap:wrap}
.brand{font-family:var(--font-head);font-weight:700;text-decoration:none;color:var(--text);font-size:1.1rem}
.nav{display:flex;gap:18px;list-style:none;margin:0;padding:0;align-items:center;flex-wrap:wrap}
.nav a{color:var(--text);text-decoration:none;font-size:.95rem}
.nav a:hover,.nav a[aria-current]{text-decoration:underline;text-underline-offset:4px}
/* buttons */
.btn{display:inline-block;padding:.75em 1.2em;border-radius:var(--radius,6px);text-decoration:none;font-weight:600;font-size:.98rem;border:2px solid transparent;cursor:pointer;font-family:var(--font-body);line-height:1.2}
.btn-primary{background:var(--accent);color:var(--accent-ink)}
.btn-ghost{border-color:var(--text);color:var(--text);background:transparent}
.btn-fit{background:var(--fit-bg,var(--text));color:var(--fit-ink,var(--bg))}
.nav .btn-fit-sm{padding:.45em .9em;background:var(--fit-bg,var(--text));color:var(--fit-ink,var(--bg));border-radius:var(--radius,6px)}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin:1.5em 0}
/* sections */
.section{padding:72px 0}
.section.alt{background:var(--alt-bg,var(--bg))}
.section-head{margin-bottom:32px;max-width:760px}
.section-sub{color:var(--muted)}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.78rem;color:var(--muted);margin-bottom:.6em}
.page-top{padding-top:56px}
.lead{font-size:1.2rem;color:var(--text)}
.more{margin-top:24px}
/* metrics */
.metrics{list-style:none;margin:0;padding:0}
.metric{display:block}
.m-n{font-family:var(--font-head);font-weight:700}
.m-l{display:block;color:var(--muted);font-size:.95rem}
.m-link{font-size:.9rem}
.m-note{font-size:.82rem;color:var(--muted);margin-top:12px}
/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius,8px);padding:24px}
.card h3 a{color:var(--text);text-decoration:none}
.card h3 a:hover{text-decoration:underline}
.kicker{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.5em}
.card-metric,.case-metric{font-family:var(--font-head);font-weight:700;font-size:1.5rem;color:var(--accent-text,var(--accent));margin:.4em 0}
.tags,.chips,.facts{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.tags li,.chips li{font-size:.8rem;padding:3px 10px;border:1px solid var(--line);border-radius:99px;color:var(--muted)}
.facts{display:block}.facts li{font-size:.92rem;padding:4px 0 4px 16px;position:relative;color:var(--muted)}
.facts li::before{content:"";position:absolute;left:0;top:.8em;width:6px;height:6px;background:var(--accent);border-radius:50%}
.sol-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap}
.status{font-size:.75rem;padding:2px 8px;border-radius:4px;background:var(--status-bg,var(--alt-bg));color:var(--text);border:1px solid var(--line)}
/* about */
.about-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:48px;align-items:start}
.photo{margin:0}.photo-ph{aspect-ratio:4/5;border:2px dashed var(--line);border-radius:var(--radius,8px);display:flex;align-items:center;justify-content:center;color:var(--muted);background:var(--surface)}
/* timeline */
.timeline{list-style:none;margin:0;padding:0}
.tl-item{display:grid;grid-template-columns:170px 1fr;gap:24px;padding:22px 0;border-top:1px solid var(--line)}
.tl-when{font-weight:600;color:var(--muted);font-size:.95rem}
.tl-org{color:var(--muted);margin-bottom:.4em}
.tl-body ul{margin:0;padding-left:18px}.tl-body li{margin:.25em 0}
/* skills */
.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:28px}
.skill-group h3{font-size:1.05rem}
/* quotes */
.quote blockquote{margin:0 0 12px;font-style:italic}
.quote figcaption{font-size:.9rem;color:var(--muted)}
/* fit cta */
.fit-cta-inner{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}
.fit-cta-inner>div{max-width:640px}
/* contact */
.contact-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin:0}
.contact-list dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.contact-list dd{margin:4px 0 0;font-size:1.05rem;word-break:break-word}
/* footer */
.site-footer{border-top:1px solid var(--line);padding:28px 0;font-size:.9rem;color:var(--muted)}
.foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.foot p{margin:0}
.site-footer a{color:var(--muted)}
/* case pages */
.case-hero{padding:56px 0 32px;border-bottom:1px solid var(--line)}
.crumbs{font-size:.9rem;color:var(--muted)}
.case-body section{padding:28px 0;border-bottom:1px solid var(--line)}
.bullets{padding-left:20px;margin:0}.bullets li{margin:.5em 0}
.case-nav{display:flex;justify-content:space-between;gap:16px;padding:32px 0;flex-wrap:wrap}
.case-nav a{max-width:45%}
/* about bars */
.theme-bars{list-style:none;padding:0;margin:0;max-width:640px}
.theme-bars li{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}
/* fit */
.notice{border-left:4px solid var(--accent);background:var(--surface);padding:14px 18px;margin:20px 0;border-radius:4px}
.fit-label{display:block;font-weight:600;margin:24px 0 8px}
textarea{width:100%;font:inherit;font-size:1rem;padding:14px;border:1px solid var(--line);border-radius:var(--radius,6px);background:var(--surface);color:var(--text);resize:vertical}
.fit-bar{display:flex;justify-content:space-between;align-items:center;margin:10px 0 24px;gap:12px}
#jd-count{color:var(--muted);font-size:.9rem}
.example{margin-top:40px;border:2px dashed var(--line);border-radius:var(--radius,8px);padding:28px;background:var(--surface)}
.demo-label{display:inline-block;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;background:var(--text);color:var(--bg);padding:3px 10px;border-radius:4px}
.ex-brief{color:var(--muted);font-size:.95rem}
.verdict{display:flex;align-items:center;gap:14px;margin:16px 0 24px;flex-wrap:wrap}
.verdict-badge{background:var(--accent);color:var(--accent-ink);font-weight:700;padding:6px 14px;border-radius:99px}
.verdict-score{font-family:var(--font-head);font-size:2rem;font-weight:700}
.verdict-note{color:var(--muted);font-size:.85rem}
.table-wrap{overflow-x:auto}
table.ev{width:100%;border-collapse:collapse;font-size:.93rem;margin-bottom:20px}
table.ev th,table.ev td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
table.ev th{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.tag{font-size:.75rem;padding:2px 8px;border-radius:4px;font-weight:700}
.tag-strong{background:var(--strong-bg,#d8efe3);color:var(--strong-fg,#14532d)}
.tag-moderate{background:var(--mod-bg,#fdf0c9);color:var(--mod-fg,#6b4d00)}
.gaps li{margin:.5em 0}
.fit-result{border:1px solid var(--line);border-radius:var(--radius,8px);padding:24px;background:var(--surface);margin-bottom:12px}
.fit-msg{color:var(--muted)}
.small{font-size:.88rem;color:var(--muted);margin-top:24px}
.resume h2{margin-top:1.6em;font-size:1.3rem;border-bottom:1px solid var(--line);padding-bottom:6px}
.r-item{margin:16px 0}.r-item h3{font-size:1.05rem;margin-bottom:2px}.r-org,.r-when{color:var(--muted);font-weight:400}
.r-when{font-size:.9rem;margin-bottom:4px}
@media (max-width:760px){
 .site-header{position:static}
 body{font-size:16px}
 .section{padding:52px 0}
 .about-grid{grid-template-columns:1fr;gap:24px}
 .photo{max-width:260px}
 .tl-item{grid-template-columns:1fr;gap:4px}
 .nav{gap:12px}.nav li:not(:last-child){font-size:.9rem}
 .nav-wrap{padding-top:10px;padding-bottom:10px}
 .case-nav a{max-width:100%}
}
@media print{.site-header,.site-footer,.contact,.fit-cta,.notice{display:none}}
/* v1 Clean consulting: light, airy, serif headings + sans body */
:root{--bg:#fbfaf7;--surface:#ffffff;--alt-bg:#f3f1ec;--text:#1c1c1a;--muted:#5b5a55;--line:#e2dfd7;
--accent:#1f5f4a;--accent-ink:#ffffff;--accent-text:#1f5f4a;--fit-bg:#1c1c1a;--fit-ink:#fbfaf7;
--font-head:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
--font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--radius:6px;--header-bg:rgba(251,250,247,.94)}
.v9 h1{font-size:clamp(2.6rem,6vw,4.2rem);font-weight:600;letter-spacing:-.01em}
.v9 h2{font-size:clamp(1.8rem,3.4vw,2.5rem);font-weight:600}
.v9 .hero{padding:88px 0 72px}
.v9 .hero-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:56px;align-items:start}
.v9 .lead{font-size:1.25rem;max-width:34em;color:#33332f}
.v9 .target{font-size:.98rem;color:var(--muted)}
.v9 .glance{background:var(--surface);border:1px solid var(--line);padding:28px;border-radius:8px;box-shadow:0 1px 0 rgba(0,0,0,.02),0 12px 32px -18px rgba(31,95,74,.25)}
.v9 .glance-h{font-family:var(--font-head);font-size:1.15rem;margin-bottom:8px}
.v9 .metric{padding:16px 0;border-top:1px solid var(--line)}
.v9 .m-n{font-size:2.1rem;color:var(--accent)}
.v9 .m-u{font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.v9 .case-card{transition:box-shadow .2s, transform .2s}
.v9 .case-card:hover{box-shadow:0 14px 30px -20px rgba(0,0,0,.35);transform:translateY(-2px)}
.v9 .cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.v9 .fit-cta{background:var(--accent);color:#fff}
.v9 .fit-cta h2{color:#fff}.v9 .fit-cta .btn-fit{background:#fff;color:var(--accent)}
.v9 .contact{background:var(--alt-bg)}
.v9 .eyebrow{color:var(--accent)}
@media (max-width:860px){.v9 .hero-grid{grid-template-columns:1fr;gap:32px}.v9 .hero{padding:48px 0}}
/* v4 = v1 clean consulting base + v2 technical touches (dark AI band, mono labels, terminal frames) */
:root{--accent:#0f6b5a;--accent-text:#0f6b5a;--link:#0f6b5a;--fit-bg:#0b0f14;--fit-ink:#4fd1a5;
--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
--t-bg:#0b0f14;--t-surface:#121821;--t-line:#243040;--t-text:#e6edf3;--t-muted:#9aa7b4;--t-accent:#4fd1a5}
.v9 .brand-tag{font-size:.78rem;font-weight:400;color:var(--accent);margin-left:8px}
.v9 .cursor{animation:blink 1.1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.v9 .cursor{animation:none}}
.v9 .eyebrow{font-family:var(--font-mono);letter-spacing:.04em;text-transform:none;font-size:.82rem}
.v9 .btn-fit{border-color:#0b0f14;font-family:var(--font-mono);font-weight:600}
.v9 .btn-fit:hover{background:#121821}
.v9 .nav .btn-fit-sm{font-family:var(--font-mono);font-size:.85rem}
.v9 .kicker,.v9 .card-metric,.v9 .case-metric,.v9 .tl-when,.v9 .tags li,.v9 .verdict-score{font-family:var(--font-mono)}
.v9 .card-metric,.v9 .case-metric{font-size:1.25rem}
/* hero: light v1 layout, dark terminal card for results */
.v9 .term-card{background:var(--t-bg);color:var(--t-text);border:1px solid var(--t-line);padding:0;overflow:hidden;box-shadow:0 24px 60px -30px rgba(15,107,90,.55)}
.v9 .term-bar span,.v9 .dots i{display:inline-block;width:11px;height:11px;border-radius:50%;background:#2c3a4b}
.v9 .dots{display:flex;gap:6px}.v9 .dots i:first-child{background:#ff5f57}.v9 .dots i:nth-child(2){background:#febc2e}.v9 .dots i:nth-child(3){background:#28c840}
.v9 .term-bar em{margin-left:10px;font-style:normal;font-family:var(--font-mono);font-size:.8rem;color:var(--t-muted)}
.v9 .term-card .metrics{padding:6px 24px 18px}
.v9 .term-card .metric{border-top:1px dashed var(--t-line);padding:16px 0}
.v9 .term-card .metric:first-child{border-top:0}
.v9 .term-card .m-n{font-family:var(--font-mono);font-size:2rem;color:var(--t-accent)}
.v9 .term-card .m-u{font-family:var(--font-mono);font-size:.8rem;color:var(--t-muted)}
.v9 .term-card .m-l{color:#c9d4de}.v9 .term-card a{color:#7fe3c1}
/* dark AI band */
.v9 .dark-band{background:var(--t-bg);color:var(--t-text);
 background-image:linear-gradient(rgba(79,209,165,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(79,209,165,.04) 1px,transparent 1px);background-size:40px 40px}
.v9 .dark-band h2{font-family:var(--font-head);color:#fff}
.v9 .dark-band .eyebrow{color:var(--t-accent)}
.v9 .dark-band .section-sub,.v9 .dark-band p{color:#c9d4de}
.v9 .dark-band a{color:#7fe3c1}
.v9 .dark-band mark.ph{background:#3b3200;color:#ffe27a}
.v9 .dark-band .card{background:linear-gradient(180deg,#131a24,#10161e);border-color:var(--t-line);color:var(--t-text);border-top:2px solid var(--t-accent)}
.v9 .dark-band .sol h3{font-size:1.05rem;color:#fff}
.v9 .dark-band .status{background:#0b2a22;color:var(--t-accent);border-color:#1d5a47}
.v9 .dark-band .facts li{color:#b7c4d0}.v9 .dark-band .facts li::before{background:var(--t-accent)}
.v9 .sol-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
/* fit CTA in dark terminal tone */
.v9 .fit-cta{background:var(--t-bg);color:var(--t-text)}
.v9 .fit-cta h2{color:#fff}.v9 .fit-cta p{color:#c9d4de}
.v9 .fit-cta .btn-fit{background:var(--t-accent);color:#06261b;border-color:var(--t-accent)}
.v9 .demo-label{background:#0b0f14;color:var(--t-accent);font-family:var(--font-mono)}
.v9 textarea{font-family:var(--font-mono);font-size:.92rem}
@media (max-width:760px){.v9 .brand-tag{display:none}.v9 .sol-grid{grid-template-columns:1fr}}
/* v5: B1Brain banner at the top of the dark AI band. Image shown whole, text sits on the faded lower edge. */
.v9 .has-banner{padding-top:0}
.v9 .banner{position:relative;margin:0 0 44px;background:#0b0f14}
.v9 .banner picture,.v9 .banner img{display:block;width:100%;height:auto}
.v9 .banner img{aspect-ratio:2000/900;max-height:620px;object-fit:cover;object-position:50% 35%}
.v9 .banner::before{content:"";position:absolute;left:0;right:0;top:0;aspect-ratio:2000/900;max-height:620px;pointer-events:none;
 background:linear-gradient(180deg,rgba(11,15,20,.35) 0%,rgba(11,15,20,0) 22%,rgba(6,38,34,.25) 60%,rgba(11,15,20,.92) 88%,#0b0f14 100%),
 radial-gradient(ellipse at 50% 45%,rgba(79,209,165,.10),transparent 60%)}
.v9 .banner-text{position:relative;z-index:1;margin-top:-96px}
.v9 .banner-text h2{font-size:clamp(2rem,4.4vw,3.4rem);color:#fff;text-shadow:0 2px 24px rgba(0,0,0,.7)}
.v9 .banner-text .section-sub{max-width:44em;color:#dfe8ee}
.v9 .banner-text .eyebrow{color:var(--t-accent);text-shadow:0 1px 8px #000}
@media (max-width:700px){
 .v9 .banner img,.v9 .banner::before{aspect-ratio:900/562}
 .v9 .banner-text{margin-top:-34px}
 .v9 .banner{margin-bottom:28px}
}

/* v6: experience deep dive */
.v9 .stat-strip{list-style:none;padding:0;margin:28px 0 8px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}
.v9 .stat-strip li{padding:18px 20px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:2px}
.v9 .stat-strip li:first-child{border-left:0}
.v9 .st-n{font-family:var(--font-head);font-size:2.3rem;line-height:1;color:var(--accent)}
.v9 .st-u{font-family:var(--font-mono);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.v9 .st-l{font-size:.92rem;color:var(--text);margin-top:6px}
.v9 .exp-hero h1{font-size:clamp(2.1rem,4.6vw,3.4rem);max-width:20em}
.v9 .jump{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:22px;font-size:.88rem}
.v9 .jump a::before{content:"#";color:var(--muted);margin-right:2px}
/* country timeline */
.v9 .ctl{margin-top:24px}
.v9 .ctl-lanes{list-style:none;padding:0;margin:0}
.v9 .ctl-lane{display:grid;grid-template-columns:220px minmax(0,1fr);gap:6px 18px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.v9 .ctl-label strong{display:block;font-size:.98rem}
.v9 .ctl-label span{display:block;font-size:.85rem;color:var(--muted)}
.v9 .ctl-track{position:relative;overflow:hidden;height:34px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/23 - 1px),var(--line) calc(100%/23 - 1px),var(--line) calc(100%/23));border-radius:4px}
.v9 .ctl-bar{position:absolute;top:3px;bottom:3px;border-radius:4px;background:var(--accent);display:flex;align-items:center;padding:0 8px;overflow:hidden;min-width:56px}
.v9 .ctl-bar em{font-style:normal;font-family:var(--font-mono);font-size:.74rem;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v9 .ctl-lane.tbc .ctl-bar{background:transparent;border:2px dashed var(--accent)}
.v9 .ctl-lane.tbc .ctl-bar em{color:var(--accent)}
.v9 .ctl-lane.ai .ctl-bar{background:#0b0f14;border:1px solid #4fd1a5;left:auto!important;right:0}
.v9 .ctl-lane.ai .ctl-bar em{color:#4fd1a5}
.v9 .ctl-bar mark.ph{background:transparent;color:inherit;padding:0}
.v9 .ctl-note{grid-column:2;margin:0;font-size:.88rem;color:var(--muted)}
.v9 .ctl-axis{display:grid;grid-template-columns:220px minmax(0,1fr);gap:18px;border-top:1px solid var(--line);padding-top:6px}
.v9 .ctl-ticks{position:relative;height:18px}
.v9 .ctl-ticks span{position:absolute;transform:translateX(-50%);font-family:var(--font-mono);font-size:.72rem;color:var(--muted)}
.v9 .ctl-foot{margin-top:10px}
.v9 .exp-mini{list-style:none;padding:0;margin:22px 0 8px;display:grid;gap:8px}
.v9 .exp-mini li{display:grid;grid-template-columns:200px minmax(0,1fr);gap:14px;align-items:baseline}
.v9 .exp-mini .mono{font-size:.82rem;color:var(--muted)}
/* roles */
.v9 .roles{display:grid;gap:22px}
.v9 .role{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:8px;padding:24px 26px;scroll-margin-top:90px}
.v9 .role.tbc{border-left-style:dashed;background:transparent}
.v9 .role-head h3{font-size:1.35rem;margin:2px 0 4px}
.v9 .role-when{font-size:.8rem;color:var(--accent);margin:0;letter-spacing:.04em}
.v9 .role-org{color:var(--muted);margin:0 0 14px;font-size:.95rem}
.v9 .role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px;margin:0}
.v9 .role-grid .wide{grid-column:1/-1}
.v9 .role-grid dt{font-family:var(--font-mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}
.v9 .role-grid dd{margin:0}
.v9 .role-grid .bullets{margin:0;padding-left:1.1em}
.v9 .role-grid .bullets li{margin:3px 0}
/* capabilities */
.v9 .cap-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.v9 .cap{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px 18px 12px;border-top:3px solid var(--accent)}
.v9 .cap-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.v9 .cap-top h3{font-size:1.1rem;margin:0}
.v9 .cap ul{margin:0;padding-left:1.05em;font-size:.93rem}
.v9 .cap li{margin:4px 0}
/* AI research (dark band) */
.v9 #ai .role{background:var(--t-surface,#111821);border-color:var(--t-line);border-left-color:var(--t-accent);color:var(--t-text)}
.v9 #ai .role-org,.v9 #ai dt{color:var(--t-muted)}
.v9 #ai .role-when{color:var(--t-accent)}
.v9 .ai-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:22px}
.v9 .ai-block{background:var(--t-surface,#111821);border:1px solid var(--t-line);border-radius:8px;padding:20px 22px;color:var(--t-text);min-width:0}
.v9 .ai-block.wide{grid-column:1/-1}
.v9 .ai-block h3{color:#fff;font-size:1.15rem;margin:0 0 12px}
.v9 .ai-block h4{color:var(--t-accent);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;margin:14px 0 6px}
.v9 .oss-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 18px}
.v9 .oss h4{margin-top:4px}
.v9 .ai-block .chips li{background:rgba(79,209,165,.08);border-color:var(--t-line);color:var(--t-text)}
.v9 .ai-block .plain{list-style:none;padding:0;margin:0}
.v9 .ai-block .plain li{margin:0 0 9px;font-size:.94rem}
.v9 .ai-block .plain strong{color:#fff}
.v9 .checks{list-style:none;padding:0;margin:0}
.v9 .checks li{position:relative;padding-left:22px;margin:7px 0;font-size:.94rem}
.v9 .checks li::before{content:"✓";position:absolute;left:0;color:var(--t-accent);font-family:var(--font-mono)}
.v9 .bench{width:100%;border-collapse:collapse;font-size:.93rem}
.v9 .bench th,.v9 .bench td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--t-line);vertical-align:top}
.v9 .bench th{font-family:var(--font-mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--t-muted)}
.v9 .bench td:first-child{white-space:nowrap;color:#fff}
.v9 .ai-block .small,.v9 .ai-block .small a{color:var(--t-muted)}
.v9 .ai-block a{color:var(--t-accent)}
.v9 .narrow-ish{max-width:860px}
@media (max-width:1000px){.v9 .cap-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v9 .stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.v9 .stat-strip li:nth-child(3){border-left:0}.v9 .stat-strip li:nth-child(n+3){border-top:1px solid var(--line)}}
@media (max-width:700px){
 .v9 .ctl-lane,.v9 .ctl-axis{grid-template-columns:minmax(0,1fr)}
 .v9 .ctl-axis .ctl-pad{display:none}
 .v9 .ctl-note{grid-column:1}
 .v9 .exp-mini li{grid-template-columns:minmax(0,1fr);gap:0}
 .v9 .role{padding:18px 16px}
 .v9 .role-grid,.v9 .ai-grid,.v9 .cap-grid{grid-template-columns:minmax(0,1fr)}
 .v9 .bench td:first-child{white-space:normal}
 .v9 .st-n{font-size:1.9rem}
 .v9 .stat-strip li{padding:14px}
}

/* v7: lighter cyan chip wallpaper; stronger, teal-tinted fade so headline text stays readable */
.v9 .banner img{aspect-ratio:2000/900;max-height:640px;object-position:50% 30%}
.v9 .banner::before{aspect-ratio:2000/900;max-height:640px;
 background:linear-gradient(180deg,rgba(11,15,20,.45) 0%,rgba(11,15,20,0) 18%,rgba(11,15,20,0) 42%,rgba(7,40,36,.45) 62%,rgba(11,15,20,.88) 82%,#0b0f14 100%),
 linear-gradient(90deg,rgba(11,15,20,.55) 0%,rgba(11,15,20,0) 30%,rgba(11,15,20,0) 70%,rgba(11,15,20,.45) 100%),
 radial-gradient(ellipse at 50% 40%,rgba(79,209,165,.08),transparent 65%)}
.v9 .banner-text{margin-top:-120px}
.v9 .banner-text h2{text-shadow:0 2px 6px rgba(0,0,0,.8),0 0 32px rgba(0,0,0,.6)}
.v9 .banner-text .section-sub{color:#e6eef3;text-shadow:0 1px 4px rgba(0,0,0,.85)}
.v9 .banner-text .eyebrow{color:#4fd1a5;text-shadow:0 1px 4px #000}
@media (max-width:700px){
 .v9 .banner img,.v9 .banner::before{aspect-ratio:900/562;max-height:none}
 .v9 .banner::before{background:linear-gradient(180deg,rgba(11,15,20,.35) 0%,rgba(11,15,20,0) 25%,rgba(7,40,36,.35) 60%,rgba(11,15,20,.9) 85%,#0b0f14 100%)}
 .v9 .banner-text{margin-top:-46px}
}

.v9 .ctl-bar.ctl-open{opacity:.75}
.v9 .exp-links{margin:14px 0 0;font-size:.95rem}

/* v9: LinkedIn-sourced career timeline, career arc, education */
.v9 .stat-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
.v9 .stat-strip li{border-left:1px solid var(--line);border-top:0}
.v9 .stat-strip li:nth-child(3n+1){border-left:0}
.v9 .stat-strip li:nth-child(n+4){border-top:1px solid var(--line)}
.v9 .ctl-track{background:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/26 - 1px),var(--line) calc(100%/26 - 1px),var(--line) calc(100%/26))}
.v9 .ctl-bar.ctl-mini{min-width:6px;padding:0}
.v9 .ctl-bar.ctl-dash{background:transparent;border:2px dashed var(--accent);min-width:0}
.v9 .ctl-bar.ctl-dash em{color:var(--accent)}
.v9 .arc{list-style:none;padding:0;margin:22px 0 6px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;counter-reset:arc}
.v9 .arc li{position:relative;border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:8px;background:var(--surface);padding:16px 16px 14px}
.v9 .arc li:not(:last-child)::after{content:"→";position:absolute;right:-13px;top:14px;color:var(--accent);font-weight:700}
.v9 .arc .mono{display:block;font-size:.78rem;color:var(--muted)}
.v9 .arc h3{margin:4px 0 6px;font-size:1.05rem}
.v9 .arc p{margin:0;font-size:.9rem}
.v9 .arc li:last-child{border-top-color:#4fd1a5}
.v9 .edu-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.v9 .edu{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:16px}
.v9 .edu h3{margin:0 0 4px;font-size:1rem}.v9 .edu p{margin:0;font-size:.9rem;color:var(--muted)}
.v9 .role.short .role-grid{grid-template-columns:minmax(0,1fr)}
.v9 .roles-early{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.v9 .co-head{margin:34px 0 10px;font-size:1.15rem;border-bottom:1px solid var(--line);padding-bottom:6px}
.v9 .co-head span{font-weight:400;color:var(--muted);font-size:.9rem}
.v9 .exp-links{margin:14px 0 0;font-size:.95rem}
@media (max-width:1000px){
 .v9 .stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
 .v9 .stat-strip li{border-left:1px solid var(--line);border-top:0}
 .v9 .stat-strip li:nth-child(odd){border-left:0}
 .v9 .stat-strip li:nth-child(n+3){border-top:1px solid var(--line)}
 .v9 .arc{grid-template-columns:repeat(2,minmax(0,1fr))}.v9 .arc li::after{display:none}
 .v9 .edu-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:700px){.v9 .arc,.v9 .roles-early{grid-template-columns:minmax(0,1fr)}}

/* ============================================================
   v10 "Boardroom": executive layer for a Head-of-AI audience.
   Spec: docs/2026-10-27-executive-redesign-spec.md
   Overrides the v4 terminal touches; keep this block last.
   ============================================================ */
.v10{--bg:#f1f0f5;--surface:#fbfbfd;--alt-bg:#e7e5ee;--text:#1c1b2e;--muted:#55536a;--line:#d9d6e3;
 --accent:#3d5a99;--accent-ink:#ffffff;--accent-text:#34508c;--link:#2f4a84;--focus:#3d5a99;
 --fit-bg:#1c1b2e;--fit-ink:#f1f0f5;--header-bg:rgba(241,240,245,.94);--radius:4px;
 --ink-dark:#121224;--gold:#e39a74;
 --font-head:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif}
.v10 .eyebrow{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.16em;font-size:.76rem;color:var(--accent-text)}
.v10 .kicker,.v10 .tags li,.v10 .tl-when,.v10 .card-metric,.v10 .case-metric{font-family:var(--font-body)}
.v10 .brand{font-size:1.15rem;letter-spacing:.01em}
.v10 .brand-tag{display:none}
.v10 .nav a{font-size:.92rem}
.v10 .btn{border-radius:4px}
.v10 .btn-primary{background:var(--text);color:var(--bg)}
.v10 .btn-ghost{border-width:1.5px}
.v10 .btn-fit,.v10 .nav .btn-fit-sm{font-family:var(--font-body);background:var(--text);color:var(--bg);border-color:var(--text)}
.v10 .btn-fit:hover{background:#2d2c44}
.v10 h1,.v10 h2{font-weight:500;letter-spacing:-.01em}
.v10 .section-head h2{font-size:clamp(1.8rem,3.2vw,2.4rem)}
.v10 .card{border-radius:4px}
.v10 .case-card{border-top:3px solid var(--accent)}
.v10 .section.alt{background:var(--alt-bg)}

/* hero */
.v10 .hero-x{padding:96px 0 64px}
.v10 .hero-x h1{font-size:clamp(2.4rem,5.4vw,3.9rem);line-height:1.08;max-width:15em;margin-bottom:.45em}
.v10 .hero-x .lead{font:1.2rem/1.6 var(--font-body);color:#3a384f;max-width:36em}
.v10 .stat-row{list-style:none;margin:48px 0 0;padding:22px 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}
.v10 .stat-row b{display:block;font:500 2.3rem/1.1 var(--font-head);color:var(--text);margin-bottom:4px}
.v10 .stat-row span{font-size:.92rem;color:var(--muted);line-height:1.45;display:block}

/* three pillars */
.v10 .pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--line);background:var(--surface)}
.v10 .pillars > div{padding:26px 26px 22px;border-left:1px solid var(--line)}
.v10 .pillars > div:first-child{border-left:0}
.v10 .pillars h3{font-size:1.25rem;margin-bottom:.35em}
.v10 .pillars p{color:var(--muted);font-size:.97rem;margin:0}
.v10 .pillars .eyebrow{margin-bottom:.4em}

/* AI layers + flagships */
.v10 .layers{list-style:none;margin:0 0 36px;padding:0;display:grid;gap:6px;max-width:880px}
.v10 .layers li{display:grid;grid-template-columns:220px 1fr;background:var(--surface);border:1px solid var(--line)}
.v10 .layers b{padding:11px 16px;border-right:1px solid var(--line);font-weight:600;font-size:.95rem}
.v10 .layers span{padding:11px 16px;color:var(--muted);font-size:.95rem}
.v10 .flagships{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.v10 .flag{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);padding:24px}
.v10 .flag h3{font-size:1.45rem;margin:.2em 0 .4em}
.v10 .flag p{color:#3a384f;margin-bottom:.8em}
.v10 .flag .meta{font-size:.85rem;color:var(--muted);margin:0}
.v10 .status-pill{display:inline-block;font-size:.75rem;padding:2px 9px;border:1px solid var(--line);border-radius:99px;color:var(--muted);background:var(--bg)}

/* dark band: the lab */
.v10 .band-dark{background:var(--ink-dark);color:#e4e2ec}
.v10 .band-dark h2,.v10 .band-dark h3{color:#fff}
.v10 .band-dark .eyebrow{color:var(--gold)}
.v10 .band-dark p,.v10 .band-dark .section-sub{color:#b3b1c8}
.v10 .band-dark a{color:var(--gold)}
.v10 .lab-stats{list-style:none;margin:8px 0 32px;padding:20px 0;border-top:1px solid #2e2b4a;border-bottom:1px solid #2e2b4a;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.v10 .lab-stats b{display:block;font:500 2.1rem/1.1 var(--font-head);color:#fff}
.v10 .lab-stats span{font-size:.9rem;color:#9d9bb6}
.v10 .lab-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.v10 .lab-grid > div{border:1px solid #2e2b4a;border-radius:4px;padding:18px;background:rgba(255,255,255,.02)}
.v10 .lab-grid h3{font-family:var(--font-body);font-size:1rem;font-weight:600;margin-bottom:.4em}
.v10 .lab-grid p{font-size:.92rem;margin:0}
.v10 .lab-grid .why{color:var(--gold);font-size:.85rem;margin-top:.6em}
.v10 .lab-banner{margin:0 0 40px;border-radius:4px;overflow:hidden;border:1px solid #2e2b4a}
.v10 .lab-banner img{display:block;width:100%;height:auto;aspect-ratio:2000/900;object-fit:cover;max-height:420px}

/* colleagues' words */
.v10 .quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin:0;padding:0;list-style:none}
.v10 .quotes figure{margin:0;padding:24px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);height:100%}
.v10 .quotes blockquote{margin:0 0 14px;font:1.12rem/1.5 var(--font-head);color:var(--text)}
.v10 .quotes figcaption{font-size:.85rem;color:var(--muted)}
.v10 .quote-lead{font:italic 1.5rem/1.35 var(--font-head);max-width:30em;margin:0 0 28px}

.v10 .fit-cta{background:var(--alt-bg);color:var(--text)}
.v10 .fit-cta h2{color:var(--text)}.v10 .fit-cta p{color:var(--muted)}
.v10 .fit-cta .btn-fit{background:var(--text);color:var(--bg);border-color:var(--text)}
.v10 .term-card,.v10 .cursor{display:none}

@media (max-width:900px){
 .v10 .stat-row,.v10 .lab-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .v10 .pillars,.v10 .lab-grid,.v10 .flagships{grid-template-columns:minmax(0,1fr)}
 .v10 .pillars > div{border-left:0;border-top:1px solid var(--line)}
 .v10 .pillars > div:first-child{border-top:0}
 .v10 .layers li{grid-template-columns:minmax(0,1fr)}
 .v10 .layers b{border-right:0;border-bottom:1px solid var(--line)}
 .v10 .hero-x{padding:56px 0 40px}
}
.v10 .arc li{border-top-color:var(--accent);border-radius:4px}
.v10 .arc li:last-child{border-top-color:var(--text)}
.v10 .arc li::after{color:var(--accent)}
/* v10: retire terminal styling on experience/about/resume */
.v10 .mono,.v10 .st-u,.v10 .ctl-bar em,.v10 .ctl-ticks span,.v10 .tags li{font-family:var(--font-body)}
.v10 .role-when{text-transform:uppercase;letter-spacing:.1em;font-size:.74rem}
.v10 .ctl-lane.ai .ctl-bar{background:var(--text);border:1px solid var(--text)}
.v10 .ctl-lane.ai .ctl-bar em{color:var(--gold)}
.v10 .demo-label{background:var(--text);color:var(--gold);font-family:var(--font-body);border-radius:3px}
.v10 textarea,.v10 .verdict-score,.v10 #jd-count,.v10 .exp-mini span,.v10 .exp-mini .mono{font-family:var(--font-body)}
.v10 .verdict-badge{background:var(--accent);color:#fff}

/* ============================================================
   v11 "Boardroom in motion": motion, living backgrounds, imagery, logos.
   Motion tokens follow quiet-luxury guidance: transform/opacity only,
   400-900ms reveals, 10-14px rise, staggered, play once.
   Behaviour lives in assets/motion.js.
   ============================================================ */
.v10{--ease-out:cubic-bezier(.22,1,.36,1);--rv-dur:700ms;
 --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.07 0 0 0 0 0.07 0 0 0 0 0.12 0 0 0 .5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
/* paper grain over the whole page, very faint */
body.v10::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:50;background-image:var(--grain);opacity:.05;mix-blend-mode:multiply}

/* header: glass on scroll */
.v10 .site-header{transition:box-shadow .3s var(--ease-out),border-color .3s;backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px)}
.v10 .site-header.is-scrolled{box-shadow:0 10px 40px -24px rgba(28,27,46,.35);border-bottom-color:transparent}
.v10 .nav a:not(.btn){position:relative;text-decoration:none}
.v10 .nav a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.v10 .nav a:not(.btn):hover::after,.v10 .nav a[aria-current]::after{transform:scaleX(1)}
.v10 .nav a:hover,.v10 .nav a[aria-current]{text-decoration:none}

/* buttons */
.v10 .btn{transition:transform .15s var(--ease-out),background .2s,color .2s,box-shadow .25s var(--ease-out)}
.v10 .btn:hover{transform:translateY(-1px);box-shadow:0 12px 28px -16px rgba(28,27,46,.55)}
.v10 .btn:active{transform:scale(.98)}
.v10 .btn-ghost:hover{background:var(--text);color:var(--bg)}

/* hero: living background + larger editorial type */
.v10 .hero-x{position:relative;overflow:hidden;padding:clamp(96px,18vh,190px) 0 clamp(64px,10vh,110px);isolation:isolate;
 background:radial-gradient(120% 90% at 85% 10%,#e2e0f0 0%,rgba(226,224,240,0) 55%),radial-gradient(90% 70% at 0% 100%,#e6e4ef 0%,rgba(230,228,239,0) 60%),var(--bg)}
.v10 .hero-x h1{font-size:clamp(2.7rem,6.4vw,5.4rem);line-height:1.02;font-weight:400;letter-spacing:-.02em;max-width:13.5em}
.v10 .hero-x h1 em{font-style:italic;color:var(--accent-text)}
.v10 [data-shader]{position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity 1.6s var(--ease-out)}
.v10 [data-shader].is-live{opacity:1}
.v10 [data-shader] canvas{display:block;width:100%!important;height:100%!important}
.v10 .hero-x::after{content:"";position:absolute;inset:auto 0 0 0;height:120px;background:linear-gradient(180deg,rgba(241,240,245,0),var(--bg));z-index:-1;pointer-events:none}

/* hero entrance sequence (staggered, ~0.9s) */
.motion-on .v10 .hero-x .wrap > *{opacity:0;transform:translateY(14px)}
.motion-on.hero-in .v10 .hero-x .wrap > *{opacity:1;transform:none;transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}
.hero-in .v10 .hero-x .wrap > :nth-child(2){transition-delay:.1s}
.hero-in .v10 .hero-x .wrap > :nth-child(3){transition-delay:.22s}
.hero-in .v10 .hero-x .wrap > :nth-child(4){transition-delay:.34s}
.hero-in .v10 .hero-x .wrap > :nth-child(5){transition-delay:.46s}
.hero-in .v10 .hero-x .wrap > :nth-child(6){transition-delay:.58s}

/* scroll reveals */
.rv-ready .rv{opacity:0;transform:translateY(14px);transition:opacity var(--rv-dur) var(--ease-out),transform var(--rv-dur) var(--ease-out);transition-delay:var(--rv-delay,0ms)}
.rv-ready .rv.is-in{opacity:1;transform:none}

/* cards: quiet lift */
.v10 .card,.v10 .flag,.v10 .quotes figure,.v10 .lab-grid > div{transition:transform .45s var(--ease-out),box-shadow .45s var(--ease-out),border-color .3s}
.v10 .card:hover,.v10 .flag:hover{transform:translateY(-4px);box-shadow:0 30px 60px -40px rgba(28,27,46,.45)}
.rv-ready .card.rv.is-in:hover,.rv-ready .flag.rv.is-in:hover{transform:translateY(-4px)}
.v10 .lab-grid > div:hover{border-color:rgba(227,154,116,.55)}

/* image cards (case studies with a photo on top) */
.v10 .card-media{margin:-24px -24px 20px;aspect-ratio:16/9;overflow:hidden;background:var(--alt-bg)}
.v10 .card-media img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.75) contrast(1.02);transform:scale(1.02);transition:transform 1.2s var(--ease-out),filter .6s}
.v10 .card:hover .card-media img{transform:scale(1.07);filter:saturate(.95)}

/* full-bleed cinematic photo band */
.v10 .photo-band{position:relative;margin:0;min-height:clamp(320px,56vh,600px);overflow:hidden;color:#fff;display:flex;align-items:flex-end}
.v10 .photo-band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.7) contrast(1.05) brightness(.82);transform:scale(1.08);transition:transform 2.4s var(--ease-out)}
.v10 .photo-band.is-in img,.v10 .photo-band:not(.rv) img{transform:scale(1)}
.rv-ready .photo-band.rv{opacity:1;transform:none}
.v10 .photo-band::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,18,36,.05) 30%,rgba(18,18,36,.82) 100%);z-index:1}
.v10 .photo-band figcaption{position:relative;z-index:2;padding:0 0 clamp(36px,6vh,64px);width:100%}
.v10 .photo-band blockquote{margin:0;font:400 clamp(1.6rem,3.2vw,2.6rem)/1.2 var(--font-head);max-width:22em;color:#fff}
.v10 .photo-band .eyebrow{color:var(--gold)}

/* lab band: living ink background + photo */
.v10 .band-dark{position:relative;overflow:hidden;isolation:isolate;background:radial-gradient(80% 60% at 90% 0%,#2a2448 0%,rgba(42,36,72,0) 60%),var(--ink-dark)}
.v10 .lab-photo{margin:0 0 40px;border-radius:4px;overflow:hidden;border:1px solid #2e2b4a;aspect-ratio:21/8}
.v10 .lab-photo img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.6) brightness(.85) contrast(1.08)}

/* pillars with imagery */
.v10 .pillar-media{margin:-26px -26px 22px;aspect-ratio:4/3;overflow:hidden}
.v10 .pillar-media img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.7);transition:transform 1.2s var(--ease-out)}
.v10 .pillars > div:hover .pillar-media img{transform:scale(1.05)}

/* logo wall */
.v10 .logo-wall{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.v10 .logo-wall li{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:28px 16px;border-left:1px solid var(--line);min-height:128px}
.v10 .logo-wall li:first-child{border-left:0}
.v10 .logo-wall img{max-height:38px;max-width:150px;width:auto;height:auto;filter:grayscale(1) contrast(1.1);opacity:.62;transition:filter .4s var(--ease-out),opacity .4s var(--ease-out),transform .4s var(--ease-out)}
.v10 .logo-wall li:hover img{filter:none;opacity:1;transform:translateY(-2px)}
.v10 .logo-wall span{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-align:center}
.v10 .logo-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:64px 0 0;flex-wrap:wrap}
.v10 .logo-head p{margin:0 0 14px}
.v10 .co-logo{height:22px;width:auto;vertical-align:middle;margin-right:10px;filter:grayscale(1);opacity:.8}
.v10 .role-logo{height:26px;width:auto;display:block;margin:0 0 10px;filter:grayscale(1);opacity:.75}

/* section rhythm: more air */
.v10 .section{padding:clamp(80px,12vh,140px) 0}
.v10 .section-head{margin-bottom:48px}

@media (max-width:900px){
 .v10 .logo-wall{grid-template-columns:repeat(3,minmax(0,1fr))}
 .v10 .logo-wall li{border-left:1px solid var(--line)}
 .v10 .logo-wall li:nth-child(3n+1){border-left:0}
 .v10 .logo-wall li:nth-child(n+4){border-top:1px solid var(--line)}
 .v10 .lab-photo{aspect-ratio:16/9}
}
@media (prefers-reduced-motion:reduce){
 .v10 *,.v10 *::before,.v10 *::after{transition-duration:.01ms!important;animation-duration:.01ms!important;transition-delay:0ms!important}
 .rv-ready .rv{opacity:1;transform:none}
 .motion-on .v10 .hero-x .wrap > *{opacity:1;transform:none}
}
.v10 .section-logos{padding:0 0 clamp(56px,9vh,100px)}
.v10 .section-logos .logo-head{margin-top:0}
.v10 .co-head{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.v10 .case-photo{margin:40px auto 0;aspect-ratio:21/9;overflow:hidden;border-radius:4px;padding:0}
.v10 .case-photo img,.v10 .card-media picture,.v10 .lab-photo picture{display:block;width:100%;height:100%}
.v10 .case-photo img{object-fit:cover;filter:saturate(.75) contrast(1.03)}
.v10 .card-media picture img,.v10 .lab-photo picture img{width:100%;height:100%;object-fit:cover}
.v10 .photo-band picture{position:absolute;inset:0}
.v10 .logo-wall li.logo-tall img{max-height:62px}
.v10 .flags{display:inline-flex;gap:6px;vertical-align:middle;margin-left:4px}
.v10 .flags img{width:24px;height:18px;border-radius:2px;box-shadow:0 0 0 1px rgba(28,27,46,.12);object-fit:cover;transition:transform .3s var(--ease-out)}
.v10 .flags img:hover{transform:translateY(-2px) scale(1.08)}
.v10 .stat-row .flags{display:flex;margin:6px 0 0}
.v10 .flag-sm{width:20px;height:15px;border-radius:2px;margin-right:8px;vertical-align:-2px;box-shadow:0 0 0 1px rgba(28,27,46,.12)}
.v10 .card-media img.art{object-position:0 0;filter:none}
.v10 .case-photo img.art{object-position:50% 40%;filter:none}
.v10 .photo-band img[src$="data-band.svg"]{filter:none;transform:scale(1.04)}
/* v11: AI systems as a dark chapter staged on the B1Brain wallpaper */
.v10 .ai-stage{position:relative;overflow:hidden;isolation:isolate;background:var(--ink-dark);color:#e4e2ec;padding-top:clamp(300px,42vw,560px)}
.v10 .ai-wall{position:absolute;inset:0 0 auto 0;height:clamp(520px,62vw,860px);z-index:-1}
.v10 .ai-wall img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block;filter:saturate(.85)}
.v10 .ai-wall::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,18,36,.15) 0%,rgba(18,18,36,.25) 35%,rgba(18,18,36,.85) 70%,#121224 100%)}
.v10 .ai-stage h2,.v10 .ai-stage h3{color:#fff}
.v10 .ai-stage .section-head h2{text-shadow:0 2px 30px rgba(0,0,0,.6)}
.v10 .ai-stage .eyebrow{color:var(--gold)}
.v10 .ai-stage .section-sub,.v10 .ai-stage p{color:#c4c2d6}
.v10 .ai-stage a{color:var(--gold)}
.v10 .ai-stage .layers li{background:rgba(255,255,255,.04);border-color:#2e2b4a;backdrop-filter:blur(6px)}
.v10 .ai-stage .layers b{border-color:#2e2b4a;color:#fff}
.v10 .ai-stage .layers span{color:#aaa8c0}
.v10 .ai-stage .flag{background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));border-color:#2e2b4a;border-top-color:var(--gold)}
.v10 .ai-stage .flag .meta{color:#8e8ca8}
.v10 .ai-stage .status-pill{background:rgba(227,154,116,.1);border-color:rgba(227,154,116,.35);color:var(--gold)}
.v10 .ai-stage .flag:hover{box-shadow:0 30px 60px -30px rgba(0,0,0,.8);border-color:rgba(227,154,116,.5)}
.v10 .ai-stage + .band-dark{border-top:1px solid #262440}

/* ============================================================
   v12 "Final polish": patterns studied from the local template library
   (Magic UI portfolio, Vetra, Astrowind, Mainline, AI-startup LP, Accessible Astro),
   reimplemented clean-room for this static site. Behaviour in assets/motion.js.
   ============================================================ */

/* 7. Refinements: balanced type, visible focus on light AND dark, anchor offset, selection */
.v10 h1,.v10 h2,.v10 h3,.v10 blockquote{text-wrap:balance}
.v10 p,.v10 li{text-wrap:pretty}
.v10 :focus-visible{outline:3px solid var(--accent);outline-offset:3px;box-shadow:0 0 0 6px rgba(241,240,245,.9);border-radius:2px}
.v10 .ai-stage :focus-visible,.v10 .band-dark :focus-visible,.v10 .photo-band :focus-visible{outline-color:var(--gold);box-shadow:0 0 0 6px rgba(18,18,36,.9)}
.v10 section[id],.v10 [id^="role-"]{scroll-margin-top:96px}
.v10 ::selection{background:rgba(227,154,116,.35);color:inherit}

/* 4. Bento: lead flagship full width with art, three below */
.v10 .flagships{grid-template-columns:repeat(3,minmax(0,1fr))}
.v10 .flag-lead{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:0;padding:0;overflow:hidden}
.v10 .flag-lead .flag-body{padding:32px 32px 28px}
.v10 .flag-lead h3{font-size:clamp(1.8rem,2.6vw,2.3rem)}
.v10 .flag-lead p{font-size:1.06rem}
.v10 .flag-art{position:relative;min-height:240px;overflow:hidden;border-left:1px solid var(--line)}
.v10 .flag-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:30% 50%;transform:scale(1.15);transition:transform 1.2s var(--ease-out)}
.v10 .flag-lead:hover .flag-art img{transform:scale(1.22)}
.v10 .ai-stage .flag-art{border-left-color:#2e2b4a}

/* 3. Pointer-following gold glow border (enabled by motion.js via .glow-on) */
.v10 .glow-on .flag,.v10 .glow-on .lab-grid > div{position:relative;isolation:isolate}
.v10 .glow-on .flag::before,.v10 .glow-on .lab-grid > div::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;pointer-events:none;
 background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(227,154,116,.75),transparent 70%);
 -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
 opacity:0;transition:opacity .3s var(--ease-out);z-index:2}
.v10 .glow-on .flag::after,.v10 .glow-on .lab-grid > div::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
 background:radial-gradient(320px circle at var(--mx,50%) var(--my,50%),rgba(227,154,116,.07),transparent 70%);opacity:0;transition:opacity .3s var(--ease-out);z-index:-1}
.v10 .glow-on .flag:hover::before,.v10 .glow-on .flag:hover::after,.v10 .glow-on .lab-grid > div:hover::before,.v10 .glow-on .lab-grid > div:hover::after{opacity:1}

/* 5. Blur-fade on headings + word-by-word hero headline */
.rv-ready .section-head.rv{filter:blur(6px);transition:opacity var(--rv-dur) var(--ease-out),transform var(--rv-dur) var(--ease-out),filter 600ms var(--ease-out);transition-delay:var(--rv-delay,0ms)}
.rv-ready .section-head.rv.is-in{filter:none}
.v10 .hero-x h1 .w{display:inline-block;white-space:pre}
.motion-on .v10 .hero-x h1.words{opacity:1;transform:none}
.motion-on .v10 .hero-x h1.words .w{opacity:0;transform:translateY(.25em);filter:blur(8px)}
.motion-on.hero-in .v10 .hero-x h1.words .w{opacity:1;transform:none;filter:none;transition:opacity .7s var(--ease-out),transform .7s var(--ease-out),filter .7s var(--ease-out);transition-delay:calc(var(--i) * 60ms + 80ms)}

/* 6. Fading gold hairline dividers */
.v10 .hairline{height:1px;border:0;margin:0;background:linear-gradient(90deg,transparent,rgba(61,90,153,.55) 25%,rgba(61,90,153,.55) 75%,transparent)}
.v10 .ai-stage + .band-dark{border-top:0}
.v10 .ai-stage + .band-dark::before{content:"";position:absolute;left:10%;right:10%;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(227,154,116,.7),transparent);z-index:1}
.v10 .ai-stage + .band-dark::after{content:"";position:absolute;left:25%;right:25%;top:-10px;height:20px;background:rgba(227,154,116,.18);filter:blur(28px);pointer-events:none}
.v10 .site-footer{border-top:0;position:relative}
.v10 .site-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(61,90,153,.45) 20%,rgba(61,90,153,.45) 80%,transparent)}

/* 8. Masked dot-grid textures (static) */
.v10 .lab-stats,.v10 .fit-cta{position:relative;isolation:isolate}
.v10 .lab-stats::before,.v10 .fit-cta::before{content:"";position:absolute;inset:-40px 0;z-index:-1;pointer-events:none;
 background-image:radial-gradient(rgba(227,154,116,.22) 1px,transparent 1px);background-size:22px 22px;
 -webkit-mask-image:radial-gradient(60% 55% at 50% 45%,#000,transparent);mask-image:radial-gradient(60% 55% at 50% 45%,#000,transparent)}
.v10 .fit-cta::before{inset:0;background-image:radial-gradient(rgba(61,90,153,.22) 1px,transparent 1px)}

/* 10. Bronze gradient on the signature word (solid colour fallback) */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
 .v10 .hero-x h1 em{background:linear-gradient(100deg,#34508c 0%,#c9714a 45%,#3d5a99 100%);-webkit-background-clip:text;background-clip:text;color:transparent;padding-right:.06em}
 .v10 .ai-stage .section-head h2{background:linear-gradient(180deg,#fff 30%,rgba(255,255,255,.74));-webkit-background-clip:text;background-clip:text;color:transparent}
}

/* 11. Back-to-top */
.v10 .to-top{position:fixed;right:22px;bottom:22px;z-index:60;width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;background:rgba(241,240,245,.92);color:var(--text);
 backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .25s var(--ease-out),transform .25s var(--ease-out),background .2s,color .2s;box-shadow:0 10px 30px -18px rgba(28,27,46,.5)}
.v10 .to-top.is-shown{opacity:1;transform:none;pointer-events:auto}
.v10 .to-top:hover{background:var(--text);color:var(--bg)}

@media (max-width:900px){
 .v10 .flagships{grid-template-columns:minmax(0,1fr)}
 .v10 .flag-lead{grid-template-columns:minmax(0,1fr)}
 .v10 .flag-art{border-left:0;border-top:1px solid var(--line);min-height:180px}
}
@media (prefers-reduced-motion:reduce){
 .rv-ready .section-head.rv{filter:none}
 .motion-on .v10 .hero-x h1.words .w{opacity:1;transform:none;filter:none}
}
/* ============================================================
   v11 role cards: expandable roles on a per-company timeline line.
   Markup: experience/index.html #roles
     .role-list > article.role > details.role-x > summary.role-sum + .role-body
   Progressive enhancement: ::details-content + interpolate-size animate
   open/close where supported; elsewhere details open instantly.
   ============================================================ */
.v10 .roles{
 --rc-badge:40px;   /* logo badge diameter; the timeline line runs through its centre */
 --rc-gap:16px;     /* badge-to-text gap; body copy indents by badge + gap */
 --rc-pad:16px;     /* vertical padding of each summary row */
 --rc-space:6px;    /* space between consecutive roles in a list */
 interpolate-size:allow-keywords}
.v10 .roles .role-list{display:flex;flex-direction:column;gap:var(--rc-space);margin:4px 0 0}

/* reset the v9 card treatment for roles inside the timeline */
.v10 .role-list > .role{position:relative;background:none;border:0;border-radius:0;padding:0;scroll-margin-top:90px}

/* timeline segment: from this badge's centre to the next badge's centre */
.v10 .role-list > .role:not(:last-child)::before{content:"";position:absolute;z-index:0;
 left:calc(var(--rc-badge) / 2 - .5px);width:1px;background:var(--line);
 top:calc(var(--rc-pad) + var(--rc-badge) / 2);
 bottom:calc(-1 * (var(--rc-space) + var(--rc-pad) + var(--rc-badge) / 2))}

/* summary row */
.v10 .role-sum{list-style:none;cursor:pointer;display:grid;align-items:center;
 grid-template-columns:var(--rc-badge) minmax(0,1fr) auto 16px;column-gap:var(--rc-gap);
 padding:var(--rc-pad) 4px var(--rc-pad) 0;border-radius:4px}
.v10 .role-sum::-webkit-details-marker{display:none}
.v10 .role-sum::marker{content:""}
.v10 .role-sum:focus{outline:none}
.v10 .role-sum:focus-visible{outline:2px solid var(--focus,var(--accent));outline-offset:4px}

.v10 .role-badge{position:relative;z-index:1;width:var(--rc-badge);height:var(--rc-badge);border-radius:50%;
 display:flex;align-items:center;justify-content:center;overflow:hidden;
 background:var(--surface);border:1px solid var(--line);box-shadow:0 0 0 2px var(--bg)}
.v10 .role-badge img{width:28px;height:28px;object-fit:contain;display:block}
.v10 .role-mono{font:600 .78rem/1 var(--font-body);letter-spacing:.06em;color:var(--accent-text)}

.v10 .role-sum .role-head{display:block;min-width:0}
.v10 .role-sum h3{font-size:1.2rem;margin:0 0 2px;transition:color .3s var(--ease-out)}
.v10 .role-sum .role-org{display:block;margin:0;font-size:.92rem;color:var(--muted)}
.v10 .role-sum .role-when{display:block;margin:0;text-align:right;white-space:nowrap;
 font-variant-numeric:tabular-nums;color:var(--accent-text)}
.v10 .role-sum:hover h3{color:var(--accent-text)}

.v10 .role-chev{color:var(--muted);transition:transform .3s var(--ease-out),color .3s var(--ease-out)}
.v10 .role-sum:hover .role-chev{transform:translateX(4px);color:var(--text)}
.v10 .role-x[open] > .role-sum .role-chev{transform:rotate(90deg)}
.v10 .role-x[open] > .role-sum:hover .role-chev{transform:translateX(4px) rotate(90deg)}

/* expanded content, aligned with the title column */
.v10 .role-body{padding:2px 0 18px calc(var(--rc-badge) + var(--rc-gap))}
.v10 details.role-x::details-content{block-size:0;overflow:hidden;
 transition:block-size .35s var(--ease-out),content-visibility .35s allow-discrete}
.v10 details[open].role-x::details-content{block-size:auto}

@media (max-width:640px){
 .v10 .role-sum{grid-template-columns:var(--rc-badge) minmax(0,1fr) 16px;row-gap:4px}
 .v10 .role-sum .role-head{grid-column:2;grid-row:1}
 .v10 .role-sum .role-when{grid-column:2;grid-row:2;text-align:left}
 .v10 .role-chev{grid-column:3;grid-row:1 / span 2}
}
@media (prefers-reduced-motion:reduce){
 .v10 details.role-x::details-content,.v10 .role-chev,.v10 .role-sum h3{transition:none}
}
@media print{
 .v10 details.role-x::details-content{block-size:auto;overflow:visible}
 .v10 .role-chev{display:none}
}

/* v13: colleagues' words as a living wall (built by tools/build_colleagues.py; motion in assets/motion.js) */
.v10 .colleagues{overflow:hidden;padding-bottom:clamp(64px,10vh,110px)}
.v10 .rec-stats{list-style:none;margin:0 0 40px;padding:18px 0;display:flex;flex-wrap:wrap;gap:12px 44px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.v10 .rec-stats b{font:500 2rem/1 var(--font-head);margin-right:8px;color:var(--text)}
.v10 .rec-stats span{font-size:.9rem;color:var(--muted)}
.v10 .q-feature{margin:0 0 48px;max-width:58rem;position:relative;padding-left:28px;border-left:2px solid var(--accent)}
.v10 .q-feature blockquote{margin:0 0 14px;font:400 clamp(1.4rem,2.6vw,2.05rem)/1.3 var(--font-head);color:var(--text)}
.v10 .q-feature figcaption{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--muted)}
.v10 .medal{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f4c3a6,#e39a74 55%,#3d5a99);box-shadow:0 0 0 3px rgba(227,154,116,.2)}

.v10 .q-marquee{display:grid;gap:18px;--q-gap:18px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.v10 .q-row{overflow-x:auto;scrollbar-width:none;outline:none}
.v10 .q-row::-webkit-scrollbar{display:none}
.v10 .q-row:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
.v10 .q-track{list-style:none;margin:0;padding:6px 0 10px;display:flex;gap:var(--q-gap);width:max-content}
.v10 .qcard{flex:0 0 auto;width:clamp(280px,26vw,360px)}
.v10 .qcard figure{margin:0;height:100%;display:flex;flex-direction:column;padding:22px 22px 18px;background:var(--surface);border:1px solid var(--line);border-radius:4px;
 transition:transform .45s var(--ease-out),box-shadow .45s var(--ease-out),border-color .3s}
.v10 .qcard blockquote{margin:0 0 14px;font:400 1.05rem/1.5 var(--font-head);color:var(--text);flex:1}
.v10 .qcard figcaption{font-size:.8rem;color:var(--muted)}
.v10 .qtag{margin:0 0 10px;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text)}
.v10 .qcard.gold figure{border-top:3px solid var(--gold)}
.v10 .qcard.silver figure{border-top:3px solid #b9bec4}
.v10 .qcard:hover figure{transform:translateY(-6px) rotate(-.4deg);border-color:rgba(61,90,153,.55);box-shadow:0 26px 50px -32px rgba(28,27,46,.5)}

/* looping motion, enabled by motion.js once the tracks are duplicated */
.marquee-on .v10 .q-row{overflow:hidden}
.marquee-on .v10 .q-track{animation:q-scroll var(--q-dur,90s) linear infinite}
.marquee-on .v10 .q-row[data-dir="right"] .q-track{animation-direction:reverse}
.marquee-on .v10 .q-row:hover .q-track,.marquee-on .v10 .q-row:focus-within .q-track{animation-play-state:paused}
@keyframes q-scroll{from{transform:translateX(0)}to{transform:translateX(calc(-50% - var(--q-gap) / 2))}}
.v10 .q-note{margin-top:18px}

@media (prefers-reduced-motion:reduce){
 .v10 .q-marquee{-webkit-mask-image:none;mask-image:none;max-width:1120px;margin:0 auto;padding:0 24px}
 .v10 .q-track{flex-wrap:wrap;width:auto}
 .v10 .qcard{width:auto;flex:1 1 300px}
}

/* v14: Career as a 3D stack that builds as you scroll (markup: tools/build_career.py, behaviour: setupCareer in motion.js).
   Pure CSS 3D (no WebGL). Default state = fully built and static, so no-JS / reduced-motion users see the whole stack. */
.v10 .career{background:var(--alt-bg);overflow:clip}
.v10 .career-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start}
.v10 .career-stage{position:sticky;top:88px;height:min(calc(100vh - 120px),680px);display:flex;flex-direction:column;justify-content:center}
.v10 .c-meta{display:flex;align-items:baseline;gap:18px;margin-bottom:8px}
.v10 .c-year{font:400 clamp(3.2rem,6vw,5.4rem)/1 var(--font-head);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.v10 .c-flags{display:flex;gap:8px}
.v10 .c-flags img{width:26px;height:19px;border-radius:2px;box-shadow:0 0 0 1px rgba(28,27,46,.12);opacity:.25;transform:scale(.9);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}
.v10 .c-flags img.on{opacity:1;transform:none}

/* the scene */
.v10 .stack-scene{position:relative;height:clamp(360px,44vw,520px);perspective:1800px;display:grid;place-items:center}
.v10 .stack-tilt{transform-style:preserve-3d;transform:rotateX(var(--tx,0deg)) rotateY(var(--ty,0deg));transition:transform .6s var(--ease-out)}
.v10 .stack3d{--S:clamp(200px,22vw,290px);--T:30px;--GAP:62px;position:relative;width:var(--S);height:var(--S);transform-style:preserve-3d;
 transform:translateY(70px) rotateX(58deg) rotateZ(-42deg)}
.v10 .slab{position:absolute;inset:0;transform-style:preserve-3d;transform:translateZ(calc(var(--i) * var(--GAP)));
 transition:transform 1s var(--ease-out)}
.v10 .slab-top{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:16px 18px;background:linear-gradient(135deg,#fbfbfd,#ecebf3);
 border:1px solid #cfcde0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.6);transition:box-shadow .6s var(--ease-out),background .6s}
.v10 .slab-front,.v10 .slab-side{position:absolute;background:#cdcadd;border:1px solid #bdbad2}
.v10 .slab-front{left:0;right:0;top:100%;height:var(--T);transform-origin:top;transform:rotateX(-90deg);background:linear-gradient(180deg,#d3d1e3,#b9b6cf)}
.v10 .slab-side{top:0;bottom:0;left:100%;width:var(--T);transform-origin:left;transform:rotateY(90deg);background:linear-gradient(90deg,#b3b0ca,#9c99b8)}
.v10 .slab-label{font:500 1.05rem/1.1 var(--font-head);color:var(--text)}
.v10 .slab-years{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-text)}
.v10 .slab-logos{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.v10 .slab-logos img{height:20px;width:auto;filter:grayscale(1);opacity:.7}
/* the top layer: AI, in the ink + gold of the AI chapter */
.v10 .slab[data-i="3"] .slab-top{background:linear-gradient(135deg,#1c1b33,#121224);border-color:#3a3560}
.v10 .slab[data-i="3"] .slab-label{color:#fff}
.v10 .slab[data-i="3"] .slab-years{color:var(--gold)}
.v10 .slab[data-i="3"] .slab-front{background:linear-gradient(180deg,#2a2448,#121224);border-color:#3a3560}
.v10 .slab[data-i="3"] .slab-side{background:linear-gradient(90deg,#1a1930,#0e0e1c);border-color:#3a3560}
.v10 .slab[data-i="3"] .slab-logos img{filter:grayscale(1) invert(1);opacity:.75}
.v10 .stack-shadow{position:absolute;left:50%;bottom:6%;width:62%;height:40px;transform:translateX(-50%);border-radius:50%;
 background:radial-gradient(closest-side,rgba(28,27,46,.28),transparent);filter:blur(6px);pointer-events:none}

/* live (scroll-driven) state, enabled by motion.js */
.career-live .v10 .stack3d{animation:stack-float 7s ease-in-out infinite}
@keyframes stack-float{0%,100%{transform:translateY(70px) rotateX(58deg) rotateZ(-42deg)}50%{transform:translateY(28px) rotateX(58deg) rotateZ(-42deg)}}
.career-live .v10 .slab:not(.is-built){transform:translateZ(calc(var(--i) * var(--GAP) + 320px));visibility:hidden;transition:transform 1s var(--ease-out),visibility 0s linear 1s}
.career-live .v10 .slab.is-built{visibility:visible;transition:transform 1s var(--ease-out),visibility 0s}
.career-live .v10 .slab.is-active .slab-top{box-shadow:0 0 0 2px rgba(227,154,116,.85),0 0 46px 6px rgba(227,154,116,.45)}
.career-live .v10 .chapter{opacity:.32;transition:opacity .5s var(--ease-out)}
.career-live .v10 .chapter.is-active{opacity:1}

/* chapters */
.v10 .career-chapters{list-style:none;margin:0;padding:8vh 0 18vh}
.v10 .chapter{min-height:62vh;display:flex;flex-direction:column;justify-content:center;padding:4vh 0;border-top:1px solid var(--line)}
.v10 .chapter:first-child{border-top:0}
.v10 .ch-years{display:flex;align-items:center;gap:12px;margin:0 0 6px;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.v10 .ch-n{font:500 .8rem/1 var(--font-body);color:var(--accent-text)}
.v10 .ch-flags{display:inline-flex;gap:6px}
.v10 .ch-flags img{width:20px;height:15px;border-radius:2px;box-shadow:0 0 0 1px rgba(28,27,46,.12)}
.v10 .ch-layer{margin:0 0 4px;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text)}
.v10 .chapter h3{font-size:clamp(1.5rem,2.4vw,2rem);margin-bottom:.4em}
.v10 .chapter p{color:#3a384f;max-width:34em}
.v10 .ch-logos{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:6px 0 0}
.v10 .ch-logos img{height:22px;width:auto;filter:grayscale(1);opacity:.65}

@media (max-width:900px){
 .v10 .career-grid{grid-template-columns:minmax(0,1fr)}
 .v10 .career-stage{position:relative;top:0;height:auto}
 .v10 .stack-scene{height:340px}
 .v10 .chapter{min-height:0;padding:28px 0}
 .career-live .v10 .chapter{opacity:1}
}
@media (prefers-reduced-motion:reduce){
 .career-live .v10 .stack3d{animation:none}
 .career-live .v10 .slab:not(.is-built){transform:translateZ(calc(var(--i) * var(--GAP)));visibility:visible}
}
/* v15: portrait (source: tools/make_portrait.py) */
.v10 .portrait{margin:0;display:flex;flex-direction:column;align-items:center;gap:16px}
.v10 .portrait picture{display:block;border-radius:50%;padding:6px;background:linear-gradient(140deg,#e39a74,#3d5a99 60%,#f0b897);box-shadow:0 30px 60px -36px rgba(28,27,46,.55)}
.v10 .portrait-img{display:block;width:100%;height:auto;border-radius:50%;background:var(--bg)}
.v10 .portrait picture{width:min(100%,360px)}
.v10 .portrait figcaption{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.v10 .portrait img{transition:transform .8s var(--ease-out)}
.v10 .portrait:hover img{transform:scale(1.02)}
.v10 .contact .wrap{position:relative}
.v10 .contact-portrait{float:right;margin:0 0 16px 32px}
.v10 .contact-portrait picture{display:block;width:140px;border-radius:50%;padding:4px;background:linear-gradient(140deg,#e39a74,#3d5a99 60%,#f0b897);box-shadow:0 20px 40px -26px rgba(28,27,46,.5)}
@media (max-width:700px){.v10 .contact-portrait{float:none;margin:0 0 20px}.v10 .contact-portrait picture{width:110px}}

/* v16: fit analysis provenance + return path */
.v10 .fit-prov{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin:0 0 18px;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--bg);font-size:.92rem}
.v10 .prov-k{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-text)}
.v10 .prov-model{font-weight:600;color:var(--text)}
.v10 .prov-meta{flex-basis:100%;font-size:.8rem;color:var(--muted)}
.v10 .prov-clear{margin-left:6px;font:inherit;font-size:.78rem;padding:2px 10px;border:1px solid var(--line);border-radius:99px;background:var(--surface);cursor:pointer}
.v10 .prov-clear:hover{border-color:var(--accent)}
.v10 .fit-back{position:fixed;left:22px;bottom:22px;z-index:61;display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-radius:99px;background:var(--text);color:var(--bg);text-decoration:none;font-weight:600;font-size:.9rem;box-shadow:0 16px 36px -18px rgba(28,27,46,.6);animation:fit-back-in .5s var(--ease-out) both}
.v10 .fit-back:hover{background:var(--accent);color:#fff}
@keyframes fit-back-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.v10 .fit-back{animation:none}}

/* v17 "Indigo & Ember" (tools/recolor_palette_b.py): ember is the single warm signature on light backgrounds */
.v10{--ember:#a24f2c;--ember-light:#e39a74;--azure:#3d5a99}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
 .v10 .hero-x h1 em{background:linear-gradient(100deg,#a24f2c 0%,#c9714a 45%,#a24f2c 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
}
.v10 .hero-x h1 em{color:var(--ember)}
.v10 .qcard.gold figure{border-top-color:var(--ember)}
.v10 .medal{background:radial-gradient(circle at 35% 30%,#f4c3a6,#c9714a 55%,#a24f2c);box-shadow:0 0 0 3px rgba(162,79,44,.18)}
.v10 .q-feature{border-left-color:var(--ember)}
.v10 .ai-stage .section-head h2{background:linear-gradient(180deg,#fff 30%,rgba(228,226,236,.78));-webkit-background-clip:text;background-clip:text}

.v10 .fit-earlier{font-size:.9rem;color:var(--muted);margin:0 0 12px}

/* v18: dark mode. Theme is set on <html data-theme="dark|light"> by the inline head script (no flash) and
   toggled by motion.js setupTheme(). Default follows the visitor's system setting; the choice is remembered. */
.theme-toggle{display:inline-grid;place-items:center;width:38px;height:38px;margin-left:4px;border:1px solid var(--line);border-radius:99px;background:transparent;color:var(--text);cursor:pointer;
 transition:background .2s,border-color .2s,transform .3s var(--ease-out)}
.theme-toggle:hover{border-color:var(--accent);transform:rotate(-12deg)}
.theme-toggle svg{width:18px;height:18px}
.theme-toggle .i-sun{display:none}
[data-theme="dark"] .theme-toggle .i-sun{display:block}
[data-theme="dark"] .theme-toggle .i-moon{display:none}

[data-theme="dark"]{color-scheme:dark}
[data-theme="dark"] .v10{
 --bg:#131327;--surface:#1b1a32;--alt-bg:#17162d;--line:#2f2c4c;
 --text:#e8e7f1;--muted:#a6a4bf;
 --accent:#8fa8e0;--accent-text:#a9bdeb;--link:#a9bdeb;--focus:#a9bdeb;--accent-ink:#131327;
 --ember:#e39a74;--fit-bg:#e8e7f1;--fit-ink:#131327;
 --header-bg:rgba(19,19,39,.88)}
[data-theme="dark"] .v10 .hero-x{background:radial-gradient(120% 90% at 85% 10%,#262350 0%,rgba(38,35,80,0) 55%),radial-gradient(90% 70% at 0% 100%,#1d1c3a 0%,rgba(29,28,58,0) 60%),var(--bg)}
[data-theme="dark"] .v10 .hero-x::after{background:linear-gradient(180deg,rgba(19,19,39,0),var(--bg))}
[data-theme="dark"] .v10 .hero-x .lead,[data-theme="dark"] .v10 .flag p,[data-theme="dark"] .v10 .chapter p,[data-theme="dark"] .v10 .p{color:#c9c7da}
[data-theme="dark"] .v10 .hero-x h1 em{background:linear-gradient(100deg,#e39a74 0%,#f4c3a6 45%,#e39a74 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
[data-theme="dark"] .v10 .btn-fit:hover,[data-theme="dark"] .v10 .btn-primary:hover{background:#ffffff}
[data-theme="dark"] .v10 .btn-ghost:hover{background:var(--text);color:var(--bg)}
[data-theme="dark"] .v10 .to-top{background:rgba(27,26,50,.92)}
[data-theme="dark"] .v10 :focus-visible{box-shadow:0 0 0 6px rgba(19,19,39,.9)}
[data-theme="dark"] body.v10::after{mix-blend-mode:screen;opacity:.035}
/* logos and wordmarks turn light so they don't vanish on dark */
[data-theme="dark"] .v10 .logo-wall img,[data-theme="dark"] .v10 .co-logo,[data-theme="dark"] .v10 .ch-logos img,[data-theme="dark"] .v10 .role-logo{filter:grayscale(1) brightness(0) invert(1);opacity:.72}
[data-theme="dark"] .v10 .logo-wall li:hover img{filter:grayscale(1) brightness(0) invert(1);opacity:1}
/* light-only artwork gets a soft frame so it doesn't glare */
[data-theme="dark"] .v10 .card-media img.art,[data-theme="dark"] .v10 .case-photo img.art{filter:brightness(.92)}
[data-theme="dark"] .v10 .tag-strong{background:#1f3b2e;color:#9fe0bf}
[data-theme="dark"] .v10 .tag-moderate{background:#3a3220;color:#f0d79a}
[data-theme="dark"] .v10 mark.ph{background:#3b3200;color:#ffe27a}
[data-theme="dark"] .v10 .career-live .slab.is-active .slab-top,.career-live [data-theme="dark"] .v10 .slab.is-active .slab-top{box-shadow:0 0 0 2px rgba(227,154,116,.9),0 0 50px 8px rgba(227,154,116,.35)}
/* the AI chapter stays distinct: a touch deeper than the dark page */
[data-theme="dark"] .v10 .ai-stage,[data-theme="dark"] .v10 .band-dark{background-color:#0d0d1e}
[data-theme="dark"] .v10 .site-footer{color:var(--muted)}
@media (prefers-reduced-motion:reduce){.theme-toggle{transition:none}}
[data-theme="dark"] .v10 .lead{color:#c9c7da}
[data-theme="dark"] .v10 .fit-cta .btn-fit{color:var(--bg)}

/* v19: readable stack legend beside the 3D career stack */
.v10 .stack-scene{grid-template-columns:minmax(0,1fr) auto;column-gap:8px}
.v10 .stack-tilt{grid-column:1;grid-row:1}
.v10 .stack-shadow{left:40%}
.v10 .stack-legend{grid-column:2;grid-row:1;align-self:center;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px;min-width:190px}
.v10 .stack-legend li{display:grid;grid-template-columns:14px 1fr;column-gap:12px;align-items:baseline;padding:8px 12px;border-radius:6px;border:1px solid transparent;transition:opacity .5s var(--ease-out),background .5s,border-color .5s}
.v10 .lg-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);align-self:center;box-shadow:0 0 0 3px rgba(61,90,153,.15)}
.v10 .stack-legend li[data-i="3"] .lg-dot{background:var(--ember)}
.v10 .lg-name{font:600 1.05rem/1.2 var(--font-head);color:var(--text)}
.v10 .lg-years{grid-column:2;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.career-live .v10 .stack-legend li:not(.is-built){opacity:.28}
.career-live .v10 .stack-legend li.is-active{background:var(--surface);border-color:var(--line);box-shadow:0 12px 30px -20px rgba(0,0,0,.5)}
.career-live .v10 .stack-legend li.is-active .lg-name{color:var(--accent-text)}
.career-live .v10 .stack-legend li[data-i="3"].is-active .lg-name{color:var(--ember)}
.career-live .v10 .stack-legend li.is-active .lg-dot{box-shadow:0 0 0 4px rgba(227,154,116,.25),0 0 18px rgba(227,154,116,.6)}
/* the face text that remains (years) gets more contrast and size */
.v10 .slab-years{font-size:.85rem;font-weight:600;letter-spacing:.12em}
@media (max-width:900px){.v10 .stack-scene{grid-template-columns:minmax(0,1fr)}.v10 .stack-legend{grid-column:1;grid-row:2;flex-direction:row;flex-wrap:wrap;gap:8px;min-width:0}.v10 .stack-shadow{left:50%}}
/* v19b: give the stack + legend room side by side */
.v10 .career-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
.v10 .stack3d{--S:clamp(170px,16vw,235px)}
.v10 .stack-tilt{margin-right:12px}
.v10 .stack-legend{min-width:178px}
@media (max-width:900px){.v10 .career-grid{grid-template-columns:minmax(0,1fr)}.v10 .stack3d{--S:clamp(170px,46vw,240px)}}

/* v20: company logos in their official brand colours (no greyscale/invert recolouring).
   On dark backgrounds they sit on a white tile, the usual brand-guideline treatment for logos designed for light grounds. */
.v10 .logo-wall img,.v10 .logo-wall li:hover img,.v10 .co-logo,.v10 .role-logo,.v10 .ch-logos img,.v10 .slab-logos img,
.v10 .slab[data-i="3"] .slab-logos img,
[data-theme="dark"] .v10 .logo-wall img,[data-theme="dark"] .v10 .logo-wall li:hover img,[data-theme="dark"] .v10 .co-logo,
[data-theme="dark"] .v10 .ch-logos img,[data-theme="dark"] .v10 .role-logo{filter:none;opacity:1}
.v10 .logo-wall li:hover img{transform:translateY(-2px)}
[data-theme="dark"] .v10 .logo-wall img{background:#fff;padding:10px 14px;border-radius:6px;box-sizing:content-box;box-shadow:0 10px 24px -16px rgba(0,0,0,.6)}
[data-theme="dark"] .v10 .co-logo,[data-theme="dark"] .v10 .ch-logos img,[data-theme="dark"] .v10 .role-logo{background:#fff;padding:4px 7px;border-radius:4px;box-sizing:content-box}
.v10 .slab[data-i="3"] .slab-logos img{background:#fff;padding:3px 6px;border-radius:3px;box-sizing:content-box}

/* v21: meaningful slab faces: big years, a per-era illustration, and readable "spines" on the edges */
.v10 .stack3d{--T:34px}
.v10 .slab-top{padding:14px 16px;gap:6px}
.v10 .slab-years{font:600 1.15rem/1 var(--font-body);letter-spacing:.06em;color:var(--accent-text)}
.v10 .slab[data-i="3"] .slab-years{color:var(--ember-light,#e39a74)}
.v10 .slab-art{width:58%;height:auto;align-self:center;margin:-2px 0}
.v10 .slab-art .a-paper{fill:#fff;stroke:#b7b4cc;stroke-width:1.2}
.v10 .slab-art .a-front{stroke:#3d5a99}
.v10 .slab-art .a-line{stroke:#9d9ab8;stroke-width:2.2;stroke-linecap:round;fill:none}
.v10 .slab-art .a-accent-fill{fill:#3d5a99}
.v10 .slab-art .a-accent-soft{fill:rgba(61,90,153,.28)}
.v10 .slab-art .a-tick{fill:none;stroke:#fff;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}
.v10 .slab-art .a-bar{fill:#3d5a99;opacity:.85}
.v10 .slab-art .a-trend{fill:none;stroke:#a24f2c;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}
.v10 .slab[data-i="2"] .slab-art .a-accent-fill{fill:#a24f2c}
.v10 .slab-art .a-edge{stroke:rgba(169,189,235,.55);stroke-width:1.4;fill:none}
.v10 .slab-art .a-node{fill:#a9bdeb}
.v10 .slab-art .a-core{fill:#e39a74}
.v10 .slab-art .a-core-glow{fill:rgba(227,154,116,.25)}
.v10 .slab-logos img{height:16px}
/* spines: the edge faces every slab shows, even when covered from above */
.v10 .slab-front,.v10 .slab-side{display:flex;align-items:center;justify-content:center;overflow:hidden}
.v10 .spine{white-space:nowrap;font:700 .66rem/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:#2d2c44}
.v10 .slab-side .spine{writing-mode:vertical-rl;transform:rotate(180deg)}
.v10 .slab[data-i="3"] .spine{color:#f4c3a6}
@media (max-width:900px){.v10 .slab-art{width:50%}.v10 .spine{font-size:.58rem}}
.v10 .slab-art{width:68%}

/* v22: timeline legibility (bars, labels, notes) in both themes; contrast checked >= 4.5:1 */
.v10 .ctl-bar em{font-size:.8rem;font-weight:600;letter-spacing:.01em;color:#fff}
.v10 .ctl-note{font-size:.92rem;color:var(--muted)}
.v10 .ctl-ticks span{font-size:.78rem}
[data-theme="dark"] .v10 .ctl-bar{background:#34508c;box-shadow:inset 0 0 0 1px rgba(169,189,235,.35)}
[data-theme="dark"] .v10 .ctl-bar em{color:#fff}
[data-theme="dark"] .v10 .ctl-lane.ai .ctl-bar{background:#2a2448;border:1px solid #e39a74}
[data-theme="dark"] .v10 .ctl-lane.ai .ctl-bar em{color:#f4c3a6}
[data-theme="dark"] .v10 .ctl-note,[data-theme="dark"] .v10 .ctl-label span,[data-theme="dark"] .v10 .ctl-ticks span{color:#b9b7cf}
.v10 .ctl-lane.ai .ctl-bar em{color:#f4c3a6}

/* v22b: timeline grid needs its own line colour (the general --line nearly matches the alt background) */
.v10 .ctl{--tl-grid:rgba(28,27,46,.16);--tl-rule:rgba(28,27,46,.22)}
[data-theme="dark"] .v10 .ctl{--tl-grid:rgba(169,189,235,.14);--tl-rule:rgba(169,189,235,.22)}
.v10 .ctl-track{background:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/26 - 1px),var(--tl-grid) calc(100%/26 - 1px),var(--tl-grid) calc(100%/26))}
.v10 .ctl-lane,.v10 .ctl-axis{border-top-color:var(--tl-rule)}

/* v23: small portrait next to the name in the header */
.v10 .brand{display:inline-flex;align-items:center;gap:10px}
.v10 .brand-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:0 0 auto;
 box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ember);transition:transform .4s var(--ease-out),box-shadow .3s}
.v10 .brand:hover .brand-avatar{transform:scale(1.06)}
@media (max-width:760px){.v10 .brand-avatar{width:28px;height:28px}}

/* v24: mobile — compact header with a menu panel, logo wall that fits, stacked fit-result rows */
.menu-toggle{display:none}
@media (max-width:860px){
 .has-mobile-menu .v10 .site-header{position:sticky;top:0}
 .has-mobile-menu .v10 .nav-wrap{flex-wrap:nowrap;min-height:60px;padding-top:0;padding-bottom:0}
 .has-mobile-menu .v10 .brand{font-size:1.02rem}
 .has-mobile-menu .v10 .menu-toggle{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:0 11px;margin-left:auto;
  border:1px solid var(--line);border-radius:10px;background:transparent;cursor:pointer}
 .has-mobile-menu .v10 .menu-toggle .bar{display:block;height:2px;border-radius:2px;background:var(--text);transition:transform .3s var(--ease-out),opacity .2s}
 .has-mobile-menu .v10 .menu-open .menu-toggle .bar:nth-child(1){transform:translateY(7px) rotate(45deg)}
 .has-mobile-menu .v10 .menu-open .menu-toggle .bar:nth-child(2){opacity:0}
 .has-mobile-menu .v10 .menu-open .menu-toggle .bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
 /* the nav becomes a full-width panel under the header */
 .has-mobile-menu .v10 .site-header nav{position:fixed;left:0;right:0;top:60px;bottom:0;z-index:70;background:var(--bg);
  padding:12px 24px 40px;overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-8px);
  transition:opacity .25s var(--ease-out),transform .25s var(--ease-out),visibility 0s linear .25s}
 .has-mobile-menu .v10 .menu-open nav{opacity:1;visibility:visible;transform:none;transition:opacity .25s var(--ease-out),transform .25s var(--ease-out)}
 .has-mobile-menu .v10 .nav{flex-direction:column;align-items:stretch;gap:0}
 .has-mobile-menu .v10 .nav li{border-bottom:1px solid var(--line)}
 .has-mobile-menu .v10 .nav a:not(.btn){display:flex;align-items:center;min-height:56px;font:400 1.35rem/1.2 var(--font-head);color:var(--text)}
 .has-mobile-menu .v10 .nav a:not(.btn)::after{display:none}
 .has-mobile-menu .v10 .nav li:has(.btn-fit-sm),.has-mobile-menu .v10 .nav li:has(.theme-toggle){border-bottom:0;padding-top:18px}
 .has-mobile-menu .v10 .nav .btn-fit-sm{display:flex;justify-content:center;min-height:52px;align-items:center;font-size:1rem}
 .has-mobile-menu .v10 .nav .theme-toggle{width:auto;height:48px;padding:0 18px;border-radius:12px;gap:10px;display:inline-flex}
 .has-mobile-menu .v10 .nav .theme-toggle::after{content:"Switch theme";font-size:.95rem}
 /* tap targets elsewhere */
 .v10 .cta-row .btn{min-height:48px;display:inline-flex;align-items:center}
}
@media (max-width:640px){
 /* logo wall: two columns, tiles sized to fit */
 .v10 .logo-wall{grid-template-columns:repeat(2,minmax(0,1fr))}
 .v10 .logo-wall li{border-left:0!important;border-top:1px solid var(--line);min-height:110px;padding:22px 10px}
 .v10 .logo-wall li:nth-child(even){border-left:1px solid var(--line)!important}
 .v10 .logo-wall li:nth-child(-n+2){border-top:0}
 .v10 .logo-wall img{max-width:100%;max-height:30px;box-sizing:border-box}
 [data-theme="dark"] .v10 .logo-wall img{max-width:calc(100% - 8px);padding:8px 10px;box-sizing:content-box;max-height:26px}
 .v10 .logo-wall li.logo-tall img{max-height:46px}
 .v10 .logo-head{flex-direction:column;align-items:flex-start;gap:4px}
 /* fit result: each evidence row becomes a stacked card */
 .v10 table.ev,.v10 table.ev tbody,.v10 table.ev tr,.v10 table.ev td{display:block;width:100%}
 .v10 table.ev thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .v10 table.ev tr{border:1px solid var(--line);border-radius:6px;padding:12px 14px;margin-bottom:12px;background:var(--surface)}
 .v10 table.ev td{border:0;padding:4px 0}
 .v10 table.ev td:nth-child(1){font-weight:600;font-size:1rem}
 .v10 table.ev td:nth-child(3),.v10 table.ev td:nth-child(4){display:inline-block;width:auto;margin-right:12px}
 .v10 .table-wrap{overflow:visible}
}
@media (prefers-reduced-motion:reduce){.has-mobile-menu .v10 .site-header nav,.has-mobile-menu .v10 .menu-toggle .bar{transition:none}}
@media (max-width:860px){.has-mobile-menu .v10 .site-header{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg)}}
/* v24b: career stack on phones — stage is not pinned, so show the full stack (built) with the legend below it */
@media (max-width:900px){
 .v10 .stack-scene{height:auto;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;row-gap:8px}
 .v10 .stack-tilt{grid-row:1;height:330px;display:grid;place-items:center;margin-right:0}
 .v10 .stack3d{--S:min(52vw,210px);--GAP:46px;--T:28px;transform:translateY(40px) rotateX(58deg) rotateZ(-42deg)}
 .career-live .v10 .stack3d{animation:none}
 .v10 .stack-shadow{display:none}
 .v10 .stack-legend{grid-row:2;margin-top:6px}
 .career-live .v10 .slab:not(.is-built){transform:translateZ(calc(var(--i) * var(--GAP)));visibility:visible}
 .career-live .v10 .stack-legend li:not(.is-built){opacity:1}
 .v10 .slab-years{font-size:.72rem}
 .v10 .spine{font-size:.5rem;letter-spacing:.1em}
}

/* v25: "how this site was built" proof section (About) */
.v10 .built{border-top:1px solid var(--line)}
.v10 .built-stats{list-style:none;margin:0 0 36px;padding:20px 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.v10 .built-stats b{display:block;font:500 2.4rem/1 var(--font-head);color:var(--accent-text);margin-bottom:6px}
.v10 .built-stats span{font-size:.9rem;color:var(--muted)}
.v10 .built-layers{margin-bottom:36px}
.v10 .built-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.v10 .built-cards h3{font-size:1.15rem}
.v10 .built-cards .card{border-top:3px solid var(--accent)}
.v10 .built-try{margin-top:36px;padding:22px 24px;border:1px dashed var(--line);border-radius:6px;background:var(--surface)}
.v10 .built-try ul{margin:6px 0 0;padding-left:20px}.v10 .built-try li{margin:.35em 0}
.v10 .built-try code{font-size:.9em;padding:1px 6px;border-radius:4px;background:var(--alt-bg)}
@media (max-width:900px){.v10 .built-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.v10 .built-cards{grid-template-columns:minmax(0,1fr)}}
.v10 .site-footer .legal{flex-basis:100%;margin:10px 0 0;font-size:.78rem;color:var(--muted);opacity:.85;max-width:62em}

/* v26: résumé PDF — download controls + print layout (light theme, compact, no motion) */
.v10 .r-actions{margin:14px 0 4px;display:flex;gap:10px;flex-wrap:wrap}
.v10 .r-more{font-size:.95rem}
.v10 .r-more code{font-size:.88em;padding:1px 5px;border-radius:4px;background:var(--alt-bg)}
.v10 .cta-link{align-self:center;font-weight:600;font-size:.95rem;color:var(--accent-text);text-decoration:underline;text-underline-offset:4px}
@media print{
 @page{size:Letter;margin:13mm 15mm}
 html[data-theme] .v10,.v10{--bg:#fff;--surface:#fff;--alt-bg:#fff;--text:#14142a;--muted:#47465c;--line:#d6d4e0;--accent:#2f4a84;--accent-text:#2f4a84;--link:#2f4a84}
 html,body,body.v10{background:#fff!important;color:#14142a}
 body.v10::after,.to-top,.fit-back,.menu-toggle,.theme-toggle,[data-shader],.no-print,.skip,.legal{display:none!important}
 .rv,.rv-ready .rv,.rv-ready .section-head.rv{opacity:1!important;transform:none!important;filter:none!important}
 *,*::before,*::after{animation:none!important;transition:none!important;box-shadow:none!important;text-shadow:none!important}
 .v10 .section,.v10 .page-top{padding:0!important}
 .v10 .resume{font-size:10pt;line-height:1.42}
 .v10 .resume h1{font-size:22pt;margin:0 0 2pt}
 .v10 .resume h2{font-size:12pt;margin:12pt 0 4pt;padding-bottom:2pt;border-bottom:1px solid #d6d4e0;color:#2f4a84;break-after:avoid}
 .v10 .resume .r-item{margin:6pt 0;break-inside:avoid}
 .v10 .resume .r-item h3{font-size:10.5pt;margin:0}
 .v10 .resume ul{margin:2pt 0 0;padding-left:14pt}.v10 .resume li{margin:1pt 0}
 .v10 .resume p{margin:0 0 4pt}
 .v10 .resume a{color:#14142a;text-decoration:none}
 .v10 .wrap{max-width:none;padding:0}
}
@media print{
 @page{size:Letter;margin:11mm 14mm}
 .v10 .resume{font-size:9.6pt;line-height:1.36}
 .v10 .resume h1{font-size:20pt}
 .v10 .resume h2{font-size:11pt;margin:9pt 0 3pt}
 .v10 .resume .r-item{margin:4.5pt 0}
 .v10 .resume .r-item h3{font-size:10pt}
}
@media print{
 :root,html,html[data-theme]{color-scheme:light!important;background:#fff!important}
 .v10 .narrow,.v10 .wrap.narrow{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}
 .v10 main,.v10 .section{background:#fff!important}
 .v10 .resume h1 + p,.v10 .resume .lead{color:#2f4a84!important;opacity:1!important;font-size:11.5pt}
}
@media print{.v10 .resume .r-more{font-size:8.8pt;margin:2pt 0 4pt;color:#47465c}}

/* v27: career on phones — compact pinned strip (year + flags + mini stack) so the build and the year stay visible */
@media (max-width:900px){
 .v10 .career-stage{position:sticky;top:60px;z-index:4;height:auto;flex-direction:row;align-items:center;justify-content:space-between;
  gap:12px;margin:0 -24px;padding:8px 24px 10px;background:var(--alt-bg);
  box-shadow:0 14px 18px -14px rgba(0,0,0,.35);border-bottom:1px solid var(--line)}
 .v10 .c-meta{flex-direction:column;align-items:flex-start;gap:6px;margin:0}
 .v10 .c-year{font-size:2.6rem}
 .v10 .c-flags img{width:22px;height:16px}
 .v10 .stack-scene{display:block;height:150px;width:170px;flex:0 0 170px;perspective:900px}
 .v10 .stack-tilt{height:150px;margin:0;display:grid;place-items:center}
 .v10 .stack3d{--S:84px;--GAP:22px;--T:11px;transform:translateY(26px) rotateX(58deg) rotateZ(-42deg)}
 .v10 .slab-top{padding:6px}
 .v10 .slab-years,.v10 .slab-logos,.v10 .spine{display:none}
 .v10 .slab-art{width:78%}
 .v10 .stack-legend{display:none}
 /* re-enable the scroll-built stack on phones (undo the earlier static fallback) */
 .career-live .v10 .slab:not(.is-built){transform:translateZ(calc(var(--i) * var(--GAP) + 160px));visibility:hidden}
 .career-live .v10 .slab.is-built{visibility:visible}
 .v10 .career-chapters{padding:16px 0 30vh}
 .v10 .chapter{min-height:55vh;padding:20px 0}
 .career-live .v10 .chapter{opacity:.35}
 .career-live .v10 .chapter.is-active{opacity:1}
}
@media (max-width:900px) and (prefers-reduced-motion:reduce){
 .career-live .v10 .slab:not(.is-built){transform:translateZ(calc(var(--i) * var(--GAP)));visibility:visible}
}
