
:root{
  --paper:#e8e8e8;--paper-2:#DDDED9;--ink:#0C0D0C;--muted:#83857E;--line:#C8C9C2;
  --foot-mute:#9a9b95;--cursor:#fff;
  --serif:'Didot','Bodoni 72','Bodoni 72 Smallcaps','GFS Didot','Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'Helvetica Neue','Inter','Arial Nova',Arial,'PingFang SC','Microsoft YaHei',sans-serif;
  --pad:clamp(18px,4vw,64px);--ease:cubic-bezier(.22,1,.36,1);
}
:root[data-theme="dark"]{
  --paper:#161614;--paper-2:#201F1C;--ink:#E8E6DF;--muted:#8E8C82;--line:#34332E;
  --foot-mute:#7c7a70;--cursor:#E8E6DF;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .4s var(--ease)}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;overflow-x:hidden;transition:background-color .4s var(--ease),color .4s var(--ease)}
::selection{background:var(--ink);color:var(--paper)}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}

/* cursor */
#cursor,#cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:9999;border-radius:50%;mix-blend-mode:difference;transform:translate(-50%,-50%)}
#cursor{width:7px;height:7px;background:var(--cursor)}
#cursor-ring{width:42px;height:42px;border:1px solid var(--cursor);transition:width .4s var(--ease),height .4s var(--ease),opacity .3s}
body.touch #cursor,body.touch #cursor-ring{display:none}
.cursor-grow #cursor-ring{width:74px;height:74px;opacity:.5}

/* header */
header{position:fixed;top:0;left:0;width:100%;z-index:120;display:flex;justify-content:space-between;align-items:center;padding:14px var(--pad);padding-right:calc(var(--pad) + 150px);color:var(--ink);
  background:rgba(230,231,227,.55);background:color-mix(in srgb, var(--paper) 60%, transparent);
  border-bottom:1px solid color-mix(in srgb, var(--ink) 10%, transparent);
  backdrop-filter:blur(12px) saturate(1.2);-webkit-backdrop-filter:blur(12px) saturate(1.2);
  transition:background .4s var(--ease),border-color .4s var(--ease)}
:root[data-theme="dark"] header{background:rgba(22,22,20,.55);background:color-mix(in srgb, var(--paper) 60%, transparent);border-bottom-color:rgba(232,230,223,.1)}
header .mark{font-family:var(--serif);font-size:22px}
header nav{display:flex;gap:26px;text-transform:uppercase;letter-spacing:.18em;font-size:11px}
header nav a{position:relative;padding:4px 0}
header nav a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--ink);transition:width .4s var(--ease)}
header nav a:hover::after{width:100%}
@media(max-width:720px){header nav a:not(.nav-back){display:none}}

/* lang toggle */
#langBtn{position:fixed;top:10px;right:calc(var(--pad) + 58px);z-index:130;height:40px;padding:0;border:none;background:transparent;
  color:var(--ink);cursor:pointer;font-family:var(--sans);text-transform:uppercase;
  letter-spacing:.14em;font-size:11px;display:flex;align-items:center;gap:6px;
  transition:opacity .3s var(--ease)}
#langBtn:hover{opacity:.6}
#langBtn .on{color:var(--ink);font-weight:600}
#langBtn .off{color:var(--muted)}
@media(max-width:720px){#langBtn{height:36px;top:13px;right:calc(var(--pad) + 50px)}}

/* theme button */
#themeBtn{position:fixed;top:8px;right:var(--pad);z-index:130;width:40px;height:40px;border-radius:50%;
  background:transparent;border:1px solid var(--line);color:var(--ink);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:border-color .4s var(--ease),background .4s var(--ease),color .4s var(--ease),transform .4s var(--ease)}
#themeBtn:hover{transform:scale(1.06);border-color:var(--ink)}
#themeBtn .ico{font-size:15px;line-height:1}
#themeBtn .ring{position:absolute;inset:-1px;border-radius:50%;border:1px solid var(--ink);
  opacity:0;pointer-events:none;animation:breathe 3.6s var(--ease) infinite}
@keyframes breathe{0%{transform:scale(1);opacity:.22}70%{transform:scale(1.5);opacity:0}100%{transform:scale(1.5);opacity:0}}
#themeBtn:hover .ring{animation:none}
body.touch #themeBtn .ring{animation:none}
@media(max-width:720px){#themeBtn{width:36px;height:36px;top:13px}}

/* back to top */
#toTop{position:fixed;bottom:var(--pad);right:var(--pad);z-index:130;width:46px;height:46px;border-radius:50%;
  background:var(--ink);border:1px solid var(--ink);color:var(--paper);cursor:pointer;font-size:16px;line-height:1;
  display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transform:translateY(12px);
  transition:opacity .4s var(--ease),transform .4s var(--ease),background .3s,color .3s}
#toTop.show{opacity:1;pointer-events:auto;transform:translateY(0)}
#toTop:hover{transform:translateY(-3px)}
@media(max-width:720px){#toTop{width:42px;height:42px}}

/* left glass sidebar nav */
#sidenav{position:fixed;left:14px;top:50%;z-index:125;
  display:flex;flex-direction:column;gap:2px;padding:10px 8px;border-radius:16px;
  background:rgba(230,231,227,.42);
  background:color-mix(in srgb, var(--paper) 38%, transparent);
  border:1px solid rgba(12,13,12,.14);
  border:1px solid color-mix(in srgb, var(--ink) 14%, transparent);
  box-shadow:0 1px 0 rgba(255,255,255,.35) inset, 0 8px 30px rgba(0,0,0,.10);
  backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);
  opacity:0;pointer-events:none;transform:translateY(-50%) translateX(-18px);
  transition:opacity .8s var(--ease),transform .8s var(--ease),background .4s var(--ease),border-color .4s var(--ease);
  will-change:opacity,transform}
#sidenav.show{opacity:1;pointer-events:auto;transform:translateY(-50%) translateX(0)}
#sidenav a{position:relative;display:flex;align-items:center;gap:0;padding:7px 9px;border-radius:9px;
  color:var(--muted);overflow:hidden;transition:color .3s var(--ease),background .3s var(--ease)}
#sidenav a .sn-num{font-family:var(--serif);font-size:13px;font-variant-numeric:tabular-nums;width:20px;text-align:center;flex:none;transition:color .3s}
#sidenav a .sn-name{font-family:var(--sans);text-transform:uppercase;letter-spacing:.12em;font-size:10px;white-space:nowrap;
  max-width:0;opacity:0;margin-left:0;transition:max-width .45s var(--ease),opacity .35s var(--ease),margin-left .45s var(--ease)}
#sidenav:hover a .sn-name{max-width:160px;opacity:1;margin-left:10px}
#sidenav a:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent)}
#sidenav a.active{color:var(--ink)}
#sidenav a.active .sn-num{color:var(--ink)}
#sidenav:hover{box-shadow:0 1px 0 color-mix(in srgb,#fff 45%,transparent) inset, 0 12px 40px rgba(0,0,0,.14)}
body.touch #sidenav{display:none}
:root[data-theme="dark"] #sidenav{background:rgba(22,22,20,.4);background:color-mix(in srgb, var(--paper) 42%, transparent);border-color:rgba(232,230,223,.14);box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 8px 30px rgba(0,0,0,.4)}
@media(max-width:980px){#sidenav{display:none}}
/* 侧栏出现时,宽屏下内容左侧避开收起态数字栏 */
@media(min-width:981px){
  body.nav-on .intro,body.nav-on .sec,body.nav-on .takeaway,body.nav-on .more,body.nav-on footer{padding-left:calc(var(--pad) + 70px);transition:padding-left .8s var(--ease)}
}

/* reveal */
.reveal>*{opacity:0;transform:translateY(24px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in>*{opacity:1;transform:none}
.reveal.in>*:nth-child(2){transition-delay:.08s}
.reveal.in>*:nth-child(3){transition-delay:.16s}
.reveal.in>*:nth-child(4){transition-delay:.24s}
@media(prefers-reduced-motion:reduce){.reveal>*{opacity:1!important;transform:none!important}}

/* INTRO — information-dense opening (deliberately NOT a cover) */
.intro{padding:calc(var(--pad) + 64px) var(--pad) 0;border-bottom:1px solid var(--line)}
.crumb{text-transform:uppercase;letter-spacing:.18em;font-size:11px;color:var(--muted);margin-bottom:clamp(26px,4vw,44px);display:flex;gap:10px;align-items:center}
.crumb a{color:var(--muted)}.crumb a:hover{color:var(--ink)}
.crumb .sep{opacity:.5}.crumb .here{color:var(--ink)}
.intro-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:clamp(28px,5vw,72px);align-items:end;padding-bottom:clamp(32px,5vw,56px)}
.intro-main .kicker{text-transform:uppercase;letter-spacing:.22em;font-size:11px;color:var(--muted);margin-bottom:14px}
.intro-main h1{font-family:var(--serif);font-size:clamp(46px,8vw,104px);line-height:.92;letter-spacing:-.01em;margin-bottom:clamp(18px,2.5vw,28px)}
.intro-main .tag{font-family:var(--serif);font-style:italic;font-size:clamp(16px,2vw,24px);color:var(--muted);margin-bottom:clamp(18px,2.5vw,28px)}
.intro-main .lede{font-size:clamp(15px,1.6vw,18px);line-height:1.7;max-width:42ch;color:var(--ink)}
.intro-main .lede b{font-weight:600}
.intro-meta{display:grid;grid-template-columns:auto 1fr;gap:8px 20px;font-size:13px;line-height:1.55;align-content:end}
.intro-meta dt{text-transform:uppercase;letter-spacing:.16em;font-size:10px;color:var(--muted);padding-top:.3em}
.intro-meta dd{margin-bottom:8px}
.intro-metrics{display:flex;flex-wrap:wrap;border-top:1px solid var(--line)}
.intro-metrics .m{flex:1 1 18%;min-width:130px;padding:clamp(20px,2.6vw,32px) 0;display:flex;flex-direction:column;border-right:1px solid var(--line)}
.intro-metrics .m:last-child{border-right:none}
.intro-metrics .m .n{font-family:var(--serif);font-size:clamp(30px,3.6vw,52px);line-height:1;padding:0 clamp(14px,2vw,24px)}
.intro-metrics .m .l{text-transform:uppercase;letter-spacing:.12em;font-size:9.5px;color:var(--muted);margin-top:9px;padding:0 clamp(14px,2vw,24px)}
@media(max-width:820px){.intro-grid{grid-template-columns:1fr;gap:30px;align-items:start}.intro-meta{align-content:start}.intro-metrics .m{flex:1 1 45%}}

/* section */
.sec{padding:clamp(44px,6vw,88px) var(--pad);border-bottom:1px solid var(--line)}
.sec-num{text-transform:uppercase;letter-spacing:.22em;font-size:11px;color:var(--muted);margin-bottom:clamp(20px,3vw,40px)}
.sec h2{font-family:var(--serif);font-size:clamp(26px,4vw,52px);line-height:1.02;letter-spacing:-.01em;max-width:18ch}
.sec h2 em{font-style:italic;color:var(--muted)}
.sec .body{max-width:60ch;margin-top:clamp(24px,3vw,40px);font-size:clamp(15px,1.5vw,17px);line-height:1.75;color:var(--ink)}
.sec .body p{margin-bottom:1.1em}
.sec .body b{font-weight:600}

/* role triad */
.triad{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,48px);margin-top:clamp(34px,5vw,64px)}
.triad .t .rt{font-family:var(--serif);font-size:clamp(20px,2.4vw,28px);margin-bottom:10px}
.triad .t .rt span{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--muted);font-family:var(--sans);margin-top:6px}
.triad .t p{font-size:14px;line-height:1.7;color:var(--muted)}
@media(max-width:760px){.triad{grid-template-columns:1fr;gap:28px}}

/* operating loop */
.loop{margin-top:clamp(34px,5vw,60px);display:grid;gap:0}
.loop .step{display:grid;grid-template-columns:72px 1fr;gap:clamp(18px,3vw,40px);padding:clamp(22px,3vw,32px) 0;border-top:1px solid var(--line)}
.loop .step:last-child{border-bottom:1px solid var(--line)}
.loop .step .sn{font-family:var(--serif);font-style:italic;font-size:clamp(26px,3vw,40px);color:var(--muted);line-height:1}
.loop .step h4{font-family:var(--serif);font-size:clamp(19px,2.2vw,26px);font-weight:400;margin-bottom:8px}
.loop .step h4 span{text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--muted);font-family:var(--sans);margin-left:10px}
.loop .step p{font-size:14px;line-height:1.7;color:var(--muted);max-width:60ch}

/* agents grid */
.agents{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:clamp(34px,5vw,60px)}
.agents .a{background:var(--paper);padding:clamp(24px,3vw,36px);transition:background .4s}
.agents .a:hover{background:var(--paper-2)}
.agents .a .top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}
.agents .a .nm{font-family:var(--serif);font-size:clamp(22px,2.6vw,30px)}
.agents .a .rl{text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--muted)}
.agents .a p{font-size:13.5px;line-height:1.7;color:var(--muted);margin-bottom:14px}
.agents .a .sk{display:flex;flex-wrap:wrap;gap:6px}
.agents .a .sk span{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:100px;padding:4px 10px}
@media(max-width:760px){.agents{grid-template-columns:1fr}}

/* scene list (deliverables) */
.scenes{margin-top:clamp(34px,5vw,60px)}
.scene{display:grid;grid-template-columns:90px 1fr;gap:clamp(18px,3vw,40px);padding:clamp(26px,3.5vw,44px) 0;border-top:1px solid var(--line)}
.scene:last-child{border-bottom:1px solid var(--line)}
.scene .sc-n{text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--muted);padding-top:.4em}
.scene h4{font-family:var(--serif);font-size:clamp(22px,3vw,38px);line-height:1.05;margin-bottom:12px;letter-spacing:-.01em}
.scene h4 span{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--muted);font-family:var(--sans);margin-top:8px}
.scene p{font-size:14.5px;line-height:1.75;color:var(--muted);max-width:58ch}
.scene .tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}
.scene .tags span{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:100px;padding:4px 11px}
@media(max-width:760px){.scene{grid-template-columns:1fr;gap:14px}}

/* image series — a folder of related images shown together */
.gallery{margin-top:clamp(28px,4vw,52px)}
.gallery .g-label{text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--muted);margin-bottom:16px;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:14px}
.gallery .g-grid{display:grid;gap:10px}
.gallery .g-grid.cols-2{--gw:420px;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--gw)),var(--gw)));justify-content:center}
.gallery .g-grid.cols-3{--gw:280px;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--gw)),var(--gw)));justify-content:center}
.gallery .g-grid.full{grid-template-columns:1fr}
.gallery figure{margin:0;border:1px solid var(--line);background:var(--paper-2);overflow:hidden}
.gallery img{width:100%;height:auto;display:block}
.gallery figure.ph{aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:var(--serif);font-size:14px;text-align:center;padding:16px}
.gallery figure.ph.sq{aspect-ratio:1/1}
@media(max-width:760px){.gallery .g-grid.cols-2,.gallery .g-grid.cols-3{grid-template-columns:1fr}}

/* image slot (single) */
.shot{margin:clamp(28px,4vw,52px) 0 0;border:1px solid var(--line);background:var(--paper-2);overflow:hidden}
.shot img{width:100%;height:auto;display:block}
.shot.ph{aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:var(--serif);font-size:15px;letter-spacing:.04em;text-align:center;padding:20px}
.shot-cap{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:12px}

/* infra triad */
.infra{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:clamp(34px,5vw,60px)}
.infra .i{background:var(--paper);padding:clamp(24px,3vw,36px)}
.infra .i .ic{font-size:22px;margin-bottom:14px}
.infra .i h4{font-family:var(--serif);font-size:clamp(19px,2.2vw,24px);font-weight:400;margin-bottom:10px}
.infra .i p{font-size:13.5px;line-height:1.7;color:var(--muted);margin-bottom:12px}
.infra .i .meta{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
@media(max-width:760px){.infra{grid-template-columns:1fr}}

/* quote / takeaway */
.takeaway{padding:clamp(60px,10vw,140px) var(--pad);border-bottom:1px solid var(--line)}
.takeaway .q{font-family:var(--serif);font-size:clamp(28px,5vw,64px);line-height:1.1;letter-spacing:-.01em;max-width:20ch}
.takeaway .q em{font-style:italic;color:var(--muted)}
.takeaway .sub{max-width:56ch;margin-top:clamp(24px,3vw,40px);font-size:clamp(15px,1.5vw,17px);line-height:1.75;color:var(--muted)}

/* more projects */
.more{padding:clamp(44px,6vw,88px) var(--pad);border-bottom:1px solid var(--line)}
.more-head{margin-bottom:clamp(20px,2.5vw,32px)}
.more-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(10px,1.4vw,16px)}
.more-card{display:flex;flex-direction:column;border:1px solid color-mix(in srgb, var(--ink) 12%, transparent);border-radius:11px;overflow:hidden;background:color-mix(in srgb, var(--paper) 40%, transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:transform .5s var(--ease),border-color .4s var(--ease)}
.more-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb, var(--ink) 30%, transparent)}
.mc-img{aspect-ratio:1/1;overflow:hidden;background:var(--paper-2)}
.mc-img img{width:100%;height:100%;object-fit:cover;filter:grayscale(.25);transition:transform .6s var(--ease),filter .5s var(--ease)}
.more-card:hover .mc-img img{transform:scale(1.05);filter:grayscale(0)}
.mc-meta{padding:11px 13px 14px;display:flex;flex-direction:column;gap:3px}
.mc-name{font-family:var(--serif);font-size:clamp(15px,1.5vw,19px);line-height:1.1;letter-spacing:-.005em}
.mc-cat{text-transform:uppercase;letter-spacing:.12em;font-size:9px;color:var(--muted)}
@media(max-width:880px){.more-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.more-grid{grid-template-columns:repeat(2,1fr)}}

/* footer */
footer{background:var(--ink);color:var(--paper);padding:clamp(28px,4vw,48px) var(--pad);transition:background .4s,color .4s}
footer .frow{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;margin-top:0;text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--foot-mute)}
footer .frow a:hover{color:var(--paper)}

/* view transition */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
/* bilingual display */




::view-transition-new(root){z-index:1}
::view-transition-old(root){z-index:9999}

/* titles: don't wrap when they fit on one line */
.sec h2{max-width:36ch}
/* ---- app screen gallery ---- */
.pgal{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),200px));justify-content:start;gap:clamp(20px,2.4vw,30px) clamp(14px,1.6vw,22px);width:100%}
.pgal figure{margin:0;min-width:0}
.pgal .img{border:1px solid var(--line);background:var(--paper-2);overflow:hidden;border-radius:6px}
.pgal img{width:100%;height:auto;display:block}
.owrap{margin-top:16px;border:1px solid var(--line);background:var(--paper-2);border-radius:8px;overflow:hidden;max-width:min(100%,880px)}
.owrap img{width:100%;height:auto;display:block}
/* ---- SPECIAL COMMEMORATIVE — celebratory tiles ---- */
.tspecial{margin-top:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:clamp(14px,1.8vw,22px)}
.tspecial figure{margin:0;border:1px solid var(--line);border-radius:14px;background:radial-gradient(125% 100% at 50% 14%,rgba(201,162,75,.16),var(--paper-2) 62%);padding:24px 18px 16px;text-align:center;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.tspecial figure:hover{transform:translateY(-5px);box-shadow:0 18px 44px rgba(0,0,0,.16)}
.tspecial .ti{display:flex;align-items:center;justify-content:center;min-height:150px}
.tspecial img{width:100%;max-width:150px;height:auto;display:block;border-radius:2px}
.tspecial figcaption{margin-top:16px}
.tspecial .n{display:block;font-family:var(--serif);font-size:15px;line-height:1.3;color:var(--ink)}
.tspecial .tag{display:inline-block;margin-top:8px;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#a9862f;border:1px solid rgba(169,134,47,.4);border-radius:999px;padding:3px 9px}
[data-theme="dark"] .tspecial .tag{color:#d8b25e;border-color:rgba(216,178,94,.4)}
/* ---- LIFETIME ACHIEVEMENT — systematic tier ladders ---- */
.tier-group{border-top:1px solid var(--line);padding-top:18px;margin-top:24px}
.tier-group:first-of-type{margin-top:18px}
.tg-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:14px}
.tg-name{font-family:var(--serif);font-size:clamp(17px,2vw,22px);color:var(--ink);white-space:nowrap}
.tg-tiers{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.tier-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:clamp(14px,1.8vw,22px)}
.tier{margin:0;border:1px solid var(--line);border-radius:14px;background:radial-gradient(125% 100% at 50% 14%,rgba(201,162,75,.16),var(--paper-2) 62%);padding:24px 18px 16px;text-align:center;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.tier:hover{transform:translateY(-5px);box-shadow:0 18px 44px rgba(0,0,0,.16)}
.tier .ti{display:flex;align-items:center;justify-content:center;min-height:150px}
.tier img{width:100%;max-width:150px;height:auto;display:block;border-radius:2px}
.tier figcaption{margin-top:16px;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.tier[data-tier="gold"] figcaption{color:#bd9b3e}
.tier[data-tier="silver"] figcaption{color:#8d949b}
.tier[data-tier="bronze"] figcaption{color:#a9713f}
[data-theme="dark"] .tier[data-tier="gold"] figcaption{color:#d8b25e}
[data-theme="dark"] .tier[data-tier="silver"] figcaption{color:#aab1b8}
[data-theme="dark"] .tier[data-tier="bronze"] figcaption{color:#c6864a}
.tier[data-tier="locked"] img{opacity:.45;filter:grayscale(.4)}
.vrow{margin-top:16px;display:flex;gap:14px;justify-content:center;align-items:stretch;flex-wrap:wrap}
.vrow video{height:clamp(240px,38vw,460px);width:auto;max-width:100%;border-radius:8px;border:1px solid var(--line);background:#000}
.vfig{margin:0;display:flex;flex-direction:column;max-width:100%}
.vfig figcaption{margin-top:12px;font-size:12.5px;line-height:1.6;color:var(--muted);max-width:360px}
.vfig figcaption .n{display:block;text-transform:uppercase;letter-spacing:.13em;font-size:9.5px;color:var(--ink);margin-bottom:5px}
@media(max-width:520px){.tg-name{white-space:normal}}

/* ---- cover flow (In the App) ---- */
.cf-stage{margin-top:16px;width:100%;height:min(64vh,620px);position:relative;overflow:hidden}
.cf-flow{position:absolute;inset:0;perspective:1700px}
.cf-item{position:absolute;top:50%;left:50%;height:92%;aspect-ratio:739/1600;cursor:pointer;
  transform-style:preserve-3d;transition:transform .7s cubic-bezier(.3,.1,.2,1),opacity .7s,filter .7s;
  border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.22)}
.cf-scr{width:100%;height:100%;border-radius:14px;overflow:hidden;position:relative;border:1px solid var(--line);background:var(--paper-2)}
.cf-scr img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none}
.cf-bar{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:18px}
.cf-btn{border:1px solid var(--line);background:transparent;border-radius:999px;width:38px;height:38px;
  font-size:15px;color:var(--ink);cursor:pointer;transition:border-color .25s,color .25s,opacity .25s}
.cf-btn:hover{border-color:var(--ink)}
.cf-btn:disabled{opacity:.3;cursor:default}
.cf-count{font-family:Menlo,monospace;font-size:10.5px;letter-spacing:.16em;color:var(--muted);min-width:70px;text-align:center}
.cf-hint{text-align:center;font-size:11.5px;color:var(--muted);letter-spacing:.04em;margin-top:10px}

/* titles: don't wrap when they fit */
.sec h2{max-width:44ch}
/* ---- implemented interface gallery ---- */
.shotwall{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-top:26px}
.shot-card{border:1px solid var(--line);border-radius:10px;background:var(--paper-2);overflow:hidden}
.shot-chrome{display:flex;align-items:center;gap:8px;padding:9px 13px;border-bottom:1px solid var(--line)}
.shot-chrome i{width:8px;height:8px;border-radius:50%}
.shot-chrome i:nth-child(1){background:#ff5f57}.shot-chrome i:nth-child(2){background:#febc2e}.shot-chrome i:nth-child(3){background:#28c840}
.shot-chrome span{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.shot-view{height:400px;overflow:hidden;position:relative}
.shot-view img{width:100%;height:auto;display:block;transform:translateY(0);transition:transform 7s cubic-bezier(.25,.1,.35,1)}
.shot-card:hover .shot-view img{transform:translateY(min(0px,calc(400px - 100%)))}
@media (hover:none){.shot-view{overflow-y:auto}}
.shot-cap{padding:13px 15px 15px}
.shot-cap strong{display:block;font-size:13.5px;color:var(--ink);font-weight:600}
.shot-cap p{margin-top:4px;font-size:12px;line-height:1.6;color:var(--muted)}
.shot-hint{margin-top:12px;font-size:11px;color:var(--muted);letter-spacing:.03em}
.build-evidence{margin-top:26px;border:1px solid var(--line);border-radius:10px;background:var(--paper-2);
  padding:16px 20px;display:flex;flex-wrap:wrap;gap:8px 24px;align-items:baseline}
.build-evidence .lab{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);flex-basis:100%}
.build-evidence b{font-family:var(--serif);font-size:16px;color:var(--ink)}
.build-evidence i{font-style:normal;font-size:11.5px;color:var(--muted)}
/* ---- figma library ---- */
.figma-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:20px;margin-top:26px;align-items:start}
@media(max-width:860px){.figma-grid{grid-template-columns:1fr}}
.figma-hero{border-radius:12px;padding:30px 28px;min-height:300px;display:flex;flex-direction:column;justify-content:space-between;
  color:#eaf4ee;background:radial-gradient(120% 130% at 85% -10%, rgba(190,242,100,.14), transparent 50%),linear-gradient(150deg,#122a24,#0b1c18 70%)}
.figma-hero .top{display:flex;justify-content:space-between;align-items:center;gap:12px}
.figma-hero .k{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(234,244,238,.6)}
.figma-hero .badge{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;border:1px solid rgba(190,242,100,.5);color:#bef264;border-radius:999px;padding:5px 11px;white-space:nowrap}
.figma-hero h4{font-family:var(--serif);font-size:clamp(19px,2.4vw,27px);line-height:1.22;font-weight:500;margin:20px 0;max-width:22ch}
.figma-hero .chips{display:flex;flex-wrap:wrap;gap:7px}
.figma-hero .chips span{font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;border:1px solid rgba(234,244,238,.28);border-radius:999px;padding:6px 11px;color:rgba(234,244,238,.85)}
.figma-hero .foot{margin-top:18px;font-size:10.5px;color:rgba(234,244,238,.5)}
.figma-shots{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.figshot{margin:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--paper-2)}
.figshot img{width:100%;height:auto;display:block}
.figshot figcaption{padding:8px 11px;font-size:10.5px;color:var(--muted);border-top:1px solid var(--line)}
.figshot.missing{display:none}
.figma-cta{display:inline-flex;align-items:center;gap:9px;margin-top:22px;text-decoration:none;border:1px solid var(--ink);
  border-radius:999px;padding:11px 20px;color:var(--ink);font-size:12.5px;letter-spacing:.04em;transition:.25s}
.figma-cta:hover{background:var(--ink);color:var(--paper)}
.figma-note{margin-top:10px;font-size:11px;color:var(--muted)}
/* decision cards reuse .infra from framework */

/* ---- figma specimens rebuilt in code ---- */
.fspec{margin-top:20px;border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:clamp(18px,2.4vw,28px)}
.fspec+.fspec{margin-top:14px}
.fspec .fs-head{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.fspec .fs-id{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:#0e7a5f}
[data-theme="dark"] .fspec .fs-id{color:#5ad0a6}
.fspec .fs-name{font-family:var(--serif);font-size:clamp(16px,1.9vw,21px);color:var(--ink)}
.fspec .fs-note{font-size:11px;color:var(--muted)}
/* button states grid */
.bstates{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.bstate{border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:18px 10px 12px;text-align:center}
.bstate figcaption{margin-top:10px;font-size:10px;color:var(--muted)}
.skbtn{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:9px 18px;font-size:12.5px;font-weight:600;
  background:#0e7a5f;color:#fff;border:2px solid transparent;white-space:nowrap}
.skbtn .gl{font-size:12px}
.skbtn.hover{background:#0b6a52}
.skbtn.focus{outline:2px solid var(--ink);outline-offset:2px}
.skbtn.pressed{background:#12211d}
.skbtn.loading .gl{display:inline-block;animation:skspin 1s linear infinite}
@keyframes skspin{to{transform:rotate(360deg)}}
.skbtn.disabled{background:transparent;border-color:var(--line);color:var(--muted)}
.bsizes{margin-top:14px;display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.bsizes .skbtn.s{padding:7px 14px;font-size:11.5px}
.bsizes .skbtn.l{padding:12px 24px;font-size:14px}
/* line chart specimen */
.fchart-row{display:grid;grid-template-columns:1.5fr 1fr;gap:12px}
@media(max-width:760px){.fchart-row{grid-template-columns:1fr}}
.fcard{border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:16px 16px 12px}
.fcard .fc-top{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink);margin-bottom:8px}
.fcard .fc-top em{font-style:normal;color:var(--muted);font-size:10.5px}
.fcard svg{width:100%;height:auto;display:block}
.fcard .legend{margin-top:8px;display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}
.fcard .legend .dot{width:8px;height:8px;border-radius:50%;background:#0e7a5f}
.fcard .legend b{color:var(--ink);font-weight:600}
.fempty{display:flex;align-items:center;gap:9px;border-radius:8px;background:var(--paper-2);border:1px solid var(--line);
  padding:14px 14px;font-size:11.5px;color:var(--muted);margin-top:6px}
.fempty .ic{width:18px;height:18px;border-radius:50%;border:1.5px solid #3b82c4;color:#3b82c4;display:flex;align-items:center;justify-content:center;font-size:11px;flex:none}
.fempty b{display:block;color:var(--ink);font-weight:600;margin-bottom:2px}
.shot-card.wide{grid-column:1/-1}
.shot-card.wide .shot-view{height:520px}
.fg-sub{margin-top:clamp(26px,3.4vw,42px);display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--line);padding-top:12px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.shot-card.short .shot-view{height:auto;aspect-ratio:1200/750;max-height:300px}
.shot-card.short .shot-cap{padding:10px 13px 12px}
.shot-card.short .shot-cap p{margin-top:2px}
.shot-card.strip .shot-view{height:400px;background:var(--paper-2)}
.shot-card.strip .shot-view img{width:361px;max-width:100%;margin:0 auto;transition-duration:26s}

/* ---- merged case-study content blocks ---- */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}
@media(max-width:760px){.duo{grid-template-columns:1fr}}
.panelbox{border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:20px 22px}
.panelbox .pl{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.panelbox ul,.panelbox ol{margin:0;padding-left:0;list-style:none}
.panelbox li{font-size:13px;line-height:1.7;color:var(--ink);padding:7px 0;border-top:1px solid var(--line);display:flex;gap:10px;align-items:baseline}
.panelbox li:first-child{border-top:0}
.panelbox li .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:#0e7a5f;flex:none;min-width:26px}
[data-theme="dark"] .panelbox li .k{color:#5ad0a6}
.panelbox li .t{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-left:auto;flex:none}
.nstar{margin-top:16px;border:1px solid var(--line);border-radius:999px;background:var(--paper-2);padding:12px 20px;display:flex;flex-wrap:wrap;gap:8px 18px;align-items:baseline;font-size:12.5px;color:var(--muted)}
.nstar b{color:var(--ink)}
/* IA panel */
.iapanel{margin-top:24px;border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:22px}
.iapanel .pl{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.ianav{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.ianav span{border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:11.5px;color:var(--ink);background:var(--paper)}
.ianav span i{font-style:normal;font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-right:7px}
.iarow{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media(max-width:760px){.iarow{grid-template-columns:1fr}}
.iaprinciple{margin-top:16px;font-family:var(--serif);font-size:15px;color:var(--ink)}
/* contract chips */
.contract{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:24px}
.contract .c{border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:16px 18px}
.contract .c .pl{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.contract .chips{display:flex;flex-wrap:wrap;gap:6px}
.contract .chips span{font-family:var(--mono);font-size:9.5px;letter-spacing:.04em;border:1px solid var(--line);border-radius:999px;padding:5px 10px;color:var(--ink);background:var(--paper)}
.statband{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:24px}
.statband .s{border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:16px 18px}
.statband .s b{display:block;font-family:var(--serif);font-size:26px;color:var(--ink)}
.statband .s p{margin-top:6px;font-size:12px;line-height:1.6;color:var(--muted)}
/* journey track */
.jtrack{display:flex;gap:10px;overflow-x:auto;padding:18px 2px 10px;margin-top:22px;scrollbar-width:thin}
.jtrack li{list-style:none;flex:none;width:150px;border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:13px 13px 12px}
.jtrack li small{display:block;font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;color:#0e7a5f}
[data-theme="dark"] .jtrack li small{color:#5ad0a6}
.jtrack li strong{display:block;margin-top:6px;font-size:13px;color:var(--ink)}
.jtrack li em{display:block;margin-top:3px;font-style:normal;font-size:10.5px;color:var(--muted)}
.jfoot{font-size:11px;color:var(--muted);letter-spacing:.03em;margin-top:4px}
/* stages + alpha */
.stages{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-top:24px}
.stages .st{border:1px solid var(--line);border-radius:12px;background:var(--paper-2);padding:16px}
.stages .st small{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:#0e7a5f}
[data-theme="dark"] .stages .st small{color:#5ad0a6}
.stages .st h4{margin-top:8px;font-size:13.5px;color:var(--ink);font-weight:600}
.stages .st p{margin-top:6px;font-size:11.5px;line-height:1.6;color:var(--muted)}
.outcome{margin-top:24px;font-family:var(--serif);font-size:clamp(17px,2vw,22px);color:var(--ink)}
.alpha-label{margin-top:26px;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}


header{display:none!important}
.eca-back{position:fixed;top:0;left:0;width:100%;display:flex;justify-content:center;padding:26px 0;z-index:200;pointer-events:none}
.eca-back a{font-size:14px;color:var(--ink);text-decoration:none;letter-spacing:.3px;opacity:.85;pointer-events:auto;transition:color .4s var(--ease)}
.eca-back a:hover{opacity:1}

:root{--sans:'HNeue',Helvetica,Arial,sans-serif !important;}
