@font-face{font-family:"Space Grotesk";src:url(/fonts/space-grotesk.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(/fonts/jetbrains-mono-500.woff2) format("woff2");font-weight:500;font-display:swap}
@property --a{syntax:'<angle>';inherits:false;initial-value:0deg}
:root{
 --bg:#07070A;--t1:#F4F2EE;--t2:rgba(244,242,238,.7);--t3:rgba(244,242,238,.46);
 --glass-2:rgba(255,255,255,.09);--edge:rgba(255,255,255,.12);--edge-hi:rgba(255,255,255,.28);
 --ember:#FF6A3D;--amber:#FFB86B;--violet:#8B7CFF;--ok:#52D990;
 --sans:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Noto Sans SC","Source Han Sans SC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
 --cn-serif:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","SimSun",serif;
 --num:"Space Grotesk",var(--sans);--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
 --gut:clamp(18px,4vw,64px);--max:1280px;--sec:clamp(72px,9vw,120px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;background:var(--bg)}
body{background:var(--bg);color:var(--t1);font:400 15px/1.7 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
button,input{font-family:inherit;color:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
section[id]{scroll-margin-top:24px}
:focus-visible{outline:2px solid var(--ember);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut);position:relative}
.mono{font:500 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--t3)}
.it{font-family:var(--cn-serif);font-style:normal;font-weight:500}

/* ambient light */
.aura{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.aura i{position:absolute;border-radius:50%;filter:blur(90px);opacity:.55;will-change:transform}
.aura .o1{width:46vw;height:46vw;left:-8vw;top:-12vw;background:radial-gradient(circle,#FF6A3D 0%,transparent 65%);animation:drift1 22s ease-in-out infinite alternate}
.aura .o2{width:52vw;height:52vw;right:-14vw;top:8vh;background:radial-gradient(circle,#6B5CFF 0%,transparent 65%);opacity:.42;animation:drift2 26s ease-in-out infinite alternate}
.aura .o3{width:40vw;height:40vw;left:30vw;top:70vh;background:radial-gradient(circle,#FFB86B 0%,transparent 65%);opacity:.18;animation:drift1 30s ease-in-out infinite alternate-reverse}
@keyframes drift1{to{transform:translate(8vw,10vh) scale(1.15)}}
@keyframes drift2{to{transform:translate(-10vw,14vh) scale(.9)}}
.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.gridlines{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse 70% 60% at 50% 35%,#000 20%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 35%,#000 20%,transparent 75%)}
main,header{position:relative;z-index:2}

/* glass */
.glass{position:relative;background:linear-gradient(160deg,rgba(255,255,255,.085),rgba(255,255,255,.025));backdrop-filter:blur(22px) saturate(140%);-webkit-backdrop-filter:blur(22px) saturate(140%);border:1px solid var(--edge);border-radius:18px;box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 30px 80px -40px rgba(0,0,0,.8)}
.spot{overflow:hidden}
.spot::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.1),transparent 45%);z-index:1}
.spot:hover::before{opacity:1}
.tilt{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.7,.2,1),border-color .3s}
.tilt:hover{border-color:var(--edge-hi)}
.cta{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:0;border-radius:999px;background:var(--t1);color:#0A0A0D;font-weight:500;font-size:13px;transition:transform .2s,box-shadow .2s}
.cta:hover{transform:translateY(-1px);box-shadow:0 10px 30px -10px rgba(255,255,255,.5)}

/* header */
.hd{position:fixed;top:0;left:0;right:0;z-index:50;border-bottom:1px solid transparent;transition:background .4s,border-color .4s}
.hd.on{background:rgba(7,7,10,.62);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-color:rgba(255,255,255,.07)}
.hd .bar{display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{display:flex;align-items:baseline;gap:14px}
.brand b{font:700 19px/1 var(--cn-serif);letter-spacing:.06em}
.brand .role-t{font-size:12px;color:var(--t3);padding-left:14px;border-left:1px solid var(--edge);line-height:1}
.nav{display:flex;align-items:baseline;gap:30px;font-size:13px}
.nav a{color:var(--t2);transition:color .2s}
.nav a i{font:500 10px var(--mono);font-style:normal;color:var(--t3);margin-right:6px}
.nav a:hover{color:var(--t1)}
.nav .mailto{color:var(--t1);border-bottom:1px solid var(--ember);padding-bottom:2px}

/* hero */
.hero{position:relative;padding:150px 0 40px}
.hero .wrap{text-align:center}
.kicker{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 14px;font-size:13px;letter-spacing:.04em;color:var(--t2);min-height:22px}
.kicker span+span::before{content:"";display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--t3);margin-right:14px;vertical-align:middle}
.kicker .open{color:var(--amber)}
h1{margin-top:26px;font:900 clamp(38px,6.6vw,96px)/1.06 var(--sans);letter-spacing:-.04em}
h1 span{display:block}
#hero-title{white-space:nowrap}
h1 .it{font-size:.56em;letter-spacing:-.01em;margin-top:.3em;background:linear-gradient(90deg,#FFD7B8,var(--ember) 45%,#B6A9FF);-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{max-width:40em;margin:22px auto 0;color:var(--t2);font-size:15px;text-wrap:balance}
.stage{position:relative;max-width:1120px;margin:30px auto 0;padding:56px 0;perspective:1400px}
.ask{position:relative;z-index:3;max-width:620px;margin:0 auto;text-align:left;padding:18px}
.ask-h{display:flex;align-items:center;gap:10px;padding:2px 4px 14px}
.live{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 10px var(--ok);margin:0 2px 0 4px;flex:none}
.ask-h b{font-size:14px;font-weight:500}
.ask-h small{margin-left:auto;font:500 11px var(--mono);letter-spacing:.1em;color:var(--t3)}
.log{display:grid;gap:10px;padding:4px;max-height:260px;overflow:auto;scrollbar-width:none}
.bub{max-width:90%;padding:11px 14px;border-radius:4px 14px 14px 14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.07);font-size:13.5px;color:var(--t2);line-height:1.7;white-space:pre-wrap}
.bub.me{justify-self:end;background:rgba(255,106,61,.14);border-color:rgba(255,106,61,.25);color:var(--t1);border-radius:14px 4px 14px 14px}
.bub small{display:block;margin-top:8px;font-size:11.5px;color:var(--t3)}
.cites{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;white-space:normal}
.cites b{font-size:11px;color:var(--t3);font-weight:500;align-self:center}
.cites a,.cites button,.cites span{font-size:11.5px;padding:3px 9px;border-radius:999px;border:1px solid var(--edge);background:rgba(255,255,255,.04);color:var(--t2)}
.cites a:hover,.cites button:hover{border-color:var(--ember);color:var(--t1)}
.dots{display:inline-flex;gap:4px;vertical-align:middle}.dots i{width:5px;height:5px;border-radius:50%;background:var(--t2);animation:dot 1.2s infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,80%,100%{opacity:.25;transform:none}40%{opacity:1;transform:translateY(-3px)}}
.qs{display:flex;flex-wrap:wrap;gap:6px;margin:14px 4px 0}
.qs::before{content:"招聘者常问";width:100%;font:500 11px var(--mono);letter-spacing:.12em;color:var(--t3);margin-bottom:2px}
.qs:empty{display:none}
.qs button{font-size:12px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.04);border:1px solid var(--edge);color:var(--t2);transition:.2s}
.qs button:hover{background:rgba(255,255,255,.1);color:var(--t1);border-color:var(--edge-hi)}
.qs button.used{opacity:.5}
.qs button:disabled{cursor:wait}
.ring{position:relative;margin-top:14px;border-radius:16px;padding:1.5px;background:conic-gradient(from var(--a),rgba(255,255,255,.08) 0deg,var(--ember) 70deg,var(--violet) 150deg,rgba(255,255,255,.08) 220deg);animation:spin 5s linear infinite}
.ring::after{content:"";position:absolute;inset:-8px;border-radius:22px;background:inherit;filter:blur(18px);opacity:.35;z-index:-1}
@keyframes spin{to{--a:360deg}}
.prompt{display:flex;align-items:center;gap:10px;background:#0E0E14;border-radius:15px;padding:8px 8px 8px 16px}
.prompt input{flex:1;min-width:0;background:none;border:0;outline:0;font-size:14px}
.prompt input::placeholder{color:var(--t3)}
.prompt kbd{font:500 10px var(--mono);color:var(--t3);border:1px solid var(--edge);border-radius:6px;padding:3px 6px}
.send{width:36px;height:36px;border-radius:11px;border:0;background:linear-gradient(135deg,var(--ember),#FF8F5C);color:#fff;font-size:16px;box-shadow:0 6px 20px -6px var(--ember)}
.send:disabled{opacity:.5;cursor:wait}

.float{position:absolute;z-index:2;padding:14px 16px;text-align:left;border-radius:16px;animation:bob 7s ease-in-out infinite;will-change:transform;cursor:pointer;color:inherit;font:inherit}
.float .mono{font-size:10.5px}
.float b{display:block;font:600 26px/1.1 var(--num);letter-spacing:-.03em;margin:6px 0 2px}
.float span{font-size:11.5px;color:var(--t3)}
.float:hover{border-color:var(--edge-hi)}
.float.f1{left:0;top:0;transform:rotate(-6deg)}
.float.f2{right:2%;top:0;transform:rotate(5deg);animation-delay:-2s}
.float.f3{right:0;bottom:-34px;width:150px;padding:6px;animation-delay:-4s;transform:rotate(6deg)}
.float.f3 .pv{display:block;aspect-ratio:9/13;border-radius:11px;overflow:hidden;position:relative}
.float.f3 .pv::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(0,0,0,.75))}
.float.f3 .pv em{position:absolute;z-index:2;left:10px;bottom:8px;font:600 16px var(--num);font-style:normal;color:#fff}
.float.f4{left:3%;bottom:0;animation-delay:-1s;transform:rotate(-3deg)}
.spark{display:flex;align-items:flex-end;gap:3px;height:26px;margin-top:8px}
.spark i{flex:1;border-radius:2px;background:linear-gradient(var(--ember),rgba(255,106,61,.25));animation:eq 2.4s ease-in-out infinite;transform-origin:bottom}
@keyframes eq{50%{transform:scaleY(.55)}}
@keyframes bob{50%{translate:0 -10px}}
.badge-play{position:absolute;z-index:3;top:8px;left:8px;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.9);color:#000;display:grid;place-items:center;font-size:9px}

.marq{position:relative;margin-top:70px;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge);overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.marq>div{display:flex;gap:46px;width:max-content;padding:16px 0;animation:mq 38s linear infinite;font:500 13px var(--mono);letter-spacing:.14em;color:var(--t3);text-transform:uppercase}
.marq span::before{content:"✦";color:var(--ember);margin-right:46px}
@keyframes mq{to{transform:translateX(-50%)}}

/* sections */
.sec{padding-top:var(--sec)}
.sh{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px}
.sh h2{font:900 clamp(28px,3.4vw,46px)/1.12 var(--sans);letter-spacing:-.03em;margin-top:10px}
.sh h2 .it{color:var(--t2)}
.sh .aside{font-size:13px;color:var(--t3);text-align:right;max-width:24em}

/* cases */
.cases{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:16px}
.case{display:flex;flex-direction:column;cursor:pointer;color:inherit;text-align:left;font:inherit;padding:0}
.case .vis,.case .body,.case .do,.case .ct,.case .mono{display:block}
.case .vis{position:relative;margin:8px 8px 0;border-radius:12px;overflow:hidden;aspect-ratio:16/10;background:#111}
.case:first-child .vis{aspect-ratio:16/9.2}
.case .vis img{object-position:top;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.case:hover .vis img{transform:scale(1.05)}
.tag{position:absolute;z-index:2;left:10px;top:10px;font:500 10.5px var(--mono);letter-spacing:.1em;padding:5px 9px;border-radius:999px;background:rgba(10,10,13,.78);border:1px solid var(--edge);color:var(--t1)}
.case .body{position:relative;z-index:2;padding:18px 20px 20px;display:flex;flex-direction:column;flex:1}
.case .ct{font:700 19px/1.35 var(--sans);margin:6px 0 8px}
.case .body{display:flex}
.case .do{font-size:13px;color:var(--t2)}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:auto;padding-top:18px}
.kpis>span{display:block;padding:10px 10px 9px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);min-width:0}
.kpis b{display:block;font:600 clamp(16px,1.45vw,21px)/1.1 var(--num);letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpis>span:first-child b{background:linear-gradient(90deg,#FFE1CC,var(--ember));-webkit-background-clip:text;background-clip:text;color:transparent}
.kpis span{display:block;font-size:10.5px;color:var(--t3);margin-top:4px;line-height:1.4}
.bars{display:grid;gap:10px;padding:26px 22px;height:100%;align-content:center;background:radial-gradient(circle at 20% 0%,rgba(255,106,61,.18),transparent 60%),#0E0E14}
.br{display:grid;grid-template-columns:58px 1fr 56px;gap:10px;align-items:center;font-size:11.5px;color:var(--t2)}
.br i{height:6px;border-radius:99px;background:linear-gradient(90deg,rgba(255,255,255,.5),rgba(255,255,255,.2));transform-origin:left;transform:scaleX(var(--w));transition:transform 1.4s cubic-bezier(.2,.7,.2,1)}
.br.top i{background:linear-gradient(90deg,var(--amber),var(--ember));box-shadow:0 0 14px -2px var(--ember)}
.br b{font:600 12px var(--num);text-align:right;color:var(--t1)}
.js .bars:not(.in) .br i{transform:scaleX(0)}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:3px;height:100%}
.duo>span,.duo>button{position:relative;overflow:hidden;display:block;border:0;padding:0;background:#111;color:#fff}
.duo>span::after,.duo>button::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(0,0,0,.75))}
.duo em{position:absolute;z-index:2;left:10px;bottom:8px;font:600 17px var(--num);font-style:normal}

/* accounts */
.acc{padding:clamp(16px,2.4vw,28px);border-radius:26px;overflow:hidden}
.acc::after{content:"";position:absolute;left:-15%;bottom:-40%;width:60%;height:90%;background:radial-gradient(closest-side,rgba(255,106,61,.18),transparent);pointer-events:none}
.acc-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}
.acc-tabs button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 16px;border-radius:14px;border:1px solid var(--edge);background:rgba(255,255,255,.03);transition:.25s;text-align:left}
.acc-tabs button b{font-size:13.5px;font-weight:700}
.acc-tabs button small{font-size:11px;color:var(--t3)}
.acc-tabs button:hover{border-color:var(--edge-hi)}
.acc-tabs button[aria-selected="true"]{background:var(--t1);color:#0A0A0D;border-color:var(--t1)}
.acc-tabs button[aria-selected="true"] small{color:rgba(0,0,0,.55)}
.acc-body{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(20px,3vw,44px);align-items:center;min-height:420px}
.fan{position:relative;height:420px;perspective:1200px}
.fan button{position:absolute;top:50%;left:50%;height:86%;width:auto;max-width:46%;aspect-ratio:9/17;margin:0;padding:0;border:1px solid var(--edge-hi);border-radius:18px;overflow:hidden;background:#111;cursor:zoom-in;box-shadow:0 40px 70px -30px rgba(0,0,0,.9);transform:translate(-50%,-50%) translateX(var(--x)) rotate(var(--r)) translateZ(var(--z));transition:transform .7s cubic-bezier(.2,.8,.2,1),box-shadow .4s,border-color .3s;animation:float 6s ease-in-out infinite;animation-delay:var(--d)}
.fan button img{object-position:top}
.fan button small{position:absolute;left:0;right:0;bottom:0;padding:22px 10px 9px;font-size:11px;text-align:left;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.85))}
.fan:hover button{transform:translate(-50%,-50%) translateX(calc(var(--x) * 1.55)) rotate(calc(var(--r) * 1.4)) translateZ(var(--z))}
.fan button:hover{z-index:9!important;border-color:var(--ember);box-shadow:0 40px 80px -24px rgba(255,106,61,.45)}
@keyframes float{50%{translate:0 -8px}}
.acc-info h3{font:900 clamp(20px,2.2vw,28px)/1.25 var(--sans);letter-spacing:-.02em;margin:6px 0 4px}
.acc-info .lead{font-size:13.5px;color:var(--t2);margin:6px 0 16px}
.acc-rows{display:grid;gap:8px}
.acc-rows[hidden]{display:none}
.acc-row{display:grid;grid-template-columns:1fr auto;gap:4px 16px;align-items:center;padding:12px 14px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);transition:.2s}
a.acc-row:hover{border-color:var(--edge-hi);background:rgba(255,255,255,.07)}
.acc-row b{font:600 13.5px var(--num);overflow-wrap:anywhere}
.acc-row span{font-size:11.5px;color:var(--t3)}
.acc-row strong{grid-row:span 2;grid-column:2;grid-row-start:1;font:600 22px var(--num);letter-spacing:-.02em;text-align:right}
.acc-row strong small{display:block;font:400 10.5px var(--sans);color:var(--t3);letter-spacing:0}
.acc-more{margin-top:10px;font-size:12.5px;color:var(--t2);background:none;border:0;padding:4px 0}
.acc-more:hover{color:var(--t1)}
.co{display:inline-block;font:500 10.5px var(--sans);padding:1px 6px;border-radius:5px;background:rgba(255,184,107,.14);color:var(--amber);margin-left:6px;vertical-align:1px}
.fine{margin-top:14px;font-size:11.5px;color:var(--t3);line-height:1.65}

/* works */
.works-panel{padding:clamp(14px,3vw,36px);border-radius:26px;overflow:hidden}
.works-panel::after{content:"";position:absolute;width:60%;height:70%;right:-10%;top:-30%;background:radial-gradient(closest-side,rgba(139,124,255,.25),transparent);pointer-events:none}
.reel{position:relative;z-index:2;display:grid;grid-template-columns:1.7fr repeat(4,1fr);gap:12px;perspective:1200px}
.reel[data-n="4"]{grid-template-columns:1.7fr repeat(3,1fr)}.reel[data-n="3"]{grid-template-columns:1.7fr repeat(2,1fr)}.reel[data-n="2"]{grid-template-columns:1.7fr 1fr;max-width:760px}.reel[data-n="1"]{grid-template-columns:minmax(0,520px)}
.w{position:relative;display:block;border-radius:14px;overflow:hidden;aspect-ratio:9/15;cursor:pointer;border:1px solid var(--edge);background:#111;padding:0;color:#fff;text-align:left;font:inherit;transition:transform .6s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .4s}
.reel .w:first-child{aspect-ratio:auto}
.reel[data-n="1"] .w{aspect-ratio:16/10}
.w:hover{transform:translateY(-8px) rotateX(4deg);border-color:var(--edge-hi);box-shadow:0 30px 60px -30px rgba(255,106,61,.5)}
.w img{transition:transform 1s cubic-bezier(.2,.7,.2,1)}
.w:hover img{transform:scale(1.06)}
.w::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(0,0,0,.82))}
.w .cap{position:absolute;z-index:2;left:14px;right:14px;bottom:12px;font-size:12.5px;line-height:1.45}
.w .cap em{display:block;font:500 10.5px var(--mono);letter-spacing:.1em;color:rgba(255,255,255,.6);font-style:normal;margin-bottom:4px}
.w .cap strong{font:600 26px var(--num);letter-spacing:-.03em}
.w .badge-play{top:12px;left:12px;width:32px;height:32px;font-size:10px;transition:transform .3s}
.w:hover .badge-play{transform:scale(1.12)}
.w-fallback{display:grid;place-items:center;height:100%;font-size:13px;color:var(--t3);background:linear-gradient(160deg,#1c1c24,#0e0e14)}
.wall{position:relative;z-index:2;margin-top:14px;display:grid;gap:10px;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.wall:empty{display:none}
.wall-row{display:flex;gap:10px;width:max-content;animation:wall var(--dur,60s) linear infinite}
.wall-row:empty{display:none}
.wall-row.rev{animation-direction:reverse}
.wall:hover .wall-row,.wall:focus-within .wall-row{animation-play-state:paused}
.wall .w{flex:0 0 auto;width:132px;aspect-ratio:9/13;border-radius:12px}
.wall .w .cap{font-size:11px;left:10px;right:10px;bottom:8px}
.wall .w .cap em{display:none}
.wall .w .badge-play{width:24px;height:24px;font-size:8px;top:8px;left:8px}
.wall .w:hover{transform:translateY(-4px)}
@keyframes wall{to{transform:translateX(-50%)}}
.sub-h{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;margin:24px 0 12px}
.decks{position:relative;z-index:2;display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.deck{position:relative;display:flex;flex-direction:column;align-items:stretch;padding:0;border:1px solid var(--edge);border-radius:18px;background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.02));overflow:hidden;transition:border-color .3s,transform .4s cubic-bezier(.2,.8,.2,1);text-align:left}
.deck:hover{border-color:var(--edge-hi);transform:translateY(-4px)}
.deck .stack3{position:relative;height:150px}
.deck .stack3 img{position:absolute;left:50%;top:54%;height:78%;width:auto;aspect-ratio:3/4;object-fit:cover;border-radius:10px;border:1px solid rgba(255,255,255,.25);box-shadow:0 18px 30px -12px rgba(0,0,0,.9);transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.deck .stack3 img:nth-child(1){transform:translate(-50%,-50%) translateX(-34%) rotate(-12deg) scale(.88)}
.deck .stack3 img:nth-child(2){transform:translate(-50%,-50%) translateX(34%) rotate(12deg) scale(.88)}
.deck .stack3 img:nth-child(3){transform:translate(-50%,-50%) translateY(-6%);z-index:2}
.deck:hover .stack3 img:nth-child(1){transform:translate(-50%,-50%) translateX(-58%) rotate(-18deg) scale(.9)}
.deck:hover .stack3 img:nth-child(2){transform:translate(-50%,-50%) translateX(58%) rotate(18deg) scale(.9)}
.deck:hover .stack3 img:nth-child(3){transform:translate(-50%,-50%) translateY(-14%) scale(1.04)}
.deck .dl{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:baseline;padding:10px 12px 12px;background:rgba(14,14,19,.9);border-top:1px solid rgba(255,255,255,.08)}
.deck .dl b{font-size:13px}
.deck .dl small{font:500 11px var(--num);color:var(--t3)}

/* projects + experience */
.split{display:grid;grid-template-columns:1.1fr 1fr;gap:16px}
.panel{padding:24px;border-radius:22px;display:flex;flex-direction:column}
.panel h3.t{position:relative;z-index:2;font:700 17px var(--sans);display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}
.projs{position:relative;z-index:2;display:flex;flex-direction:column;gap:10px;flex:1}
.proj{display:grid;grid-template-columns:42% 1fr;gap:16px;align-items:center;flex:1;padding:10px;border-radius:14px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);transition:.25s;text-align:left;color:inherit;font:inherit}
.proj:hover{background:rgba(255,255,255,.07);border-color:var(--edge-hi)}
.proj .shot{border-radius:9px;overflow:hidden;aspect-ratio:16/10;background:#111}
.proj .shot img{object-position:top}
.proj .shot,.proj .mono,.proj .pt,.proj .pd{display:block}
.proj .pt{font-size:15px;font-weight:700;margin:4px 0}
.proj .pd{font-size:12.5px;color:var(--t2);line-height:1.6}
.steps{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.steps span{font:500 10.5px var(--mono);padding:3px 7px;border-radius:6px;background:rgba(139,124,255,.12);color:#C4BBFF}
.tl{position:relative;z-index:2;padding-left:20px}
.tl::before{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:1px;background:linear-gradient(var(--ember),rgba(255,255,255,.08))}
.x{position:relative;margin-left:-12px;border-radius:12px;transition:background .2s}
.x:hover{background:rgba(255,255,255,.05)}
.x-h{display:block;width:100%;padding:10px 12px;background:none;border:0;text-align:left;color:inherit;font:inherit}
.x-h>span{display:block}
.x .xd>div{padding:0 12px}
.x::before{content:"";position:absolute;left:-12px;top:17px;width:9px;height:9px;border-radius:50%;background:var(--bg);border:2px solid var(--t3)}
.x:first-child::before{border-color:var(--ember);box-shadow:0 0 10px var(--ember)}
.x .p{font:500 11px var(--num);color:var(--t3)}
.x .xt{font-size:14.5px;font-weight:700}
.x .xt small{font-weight:400;color:var(--t3);margin-left:8px;font-size:12.5px}
.x .xt::after{content:"+";float:right;color:var(--t3);font-weight:400;transition:transform .3s}
.x.open .xt::after{transform:rotate(45deg)}
.x .sum{font-size:12.5px;color:var(--t2)}
.x .xd{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1)}
.x.open .xd{grid-template-rows:1fr}
.x .xd>div{overflow:hidden}
.x ul{margin:4px 0 4px 16px;font-size:12.5px;color:var(--t2);display:grid;gap:4px}
.x .acc-t{margin-top:10px;font:500 11px var(--mono);letter-spacing:.1em;color:var(--t3)}
.x .acc-l{margin-top:4px;font-size:12px;color:var(--amber)}
.x .xd>div>:last-child{margin-bottom:12px}
.plat{position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
.plat:empty{display:none}
.plat div{padding:10px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);font-size:10.5px;color:var(--t3)}
.plat b{display:block;font:600 15px var(--num);color:var(--t1)}

/* contact */
.end{margin-top:var(--sec);padding-bottom:28px;position:relative;z-index:2}
.end-card{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:22px;padding:28px 32px;border-radius:24px;overflow:hidden}
.acc,.works-panel,.panel{transition:border-color .3s}
.acc:hover,.works-panel:hover,.panel:hover{border-color:var(--edge-hi)}
.end-card{transition:border-color .3s,box-shadow .4s}
.end-card:hover{border-color:var(--edge-hi);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 40px 90px -40px rgba(255,106,61,.45)}
.end-card::after{content:"";position:absolute;left:-10%;bottom:-120%;width:60%;height:260%;background:radial-gradient(closest-side,rgba(255,106,61,.3),transparent);pointer-events:none;opacity:.75;transition:opacity .6s,translate .9s cubic-bezier(.2,.7,.2,1)}
.end-card:hover::after{opacity:1;translate:8% -6%}
.end h2{position:relative;z-index:2;font:900 clamp(22px,2.6vw,34px)/1.25 var(--sans);letter-spacing:-.02em}
.end h2{text-wrap:balance}
.end h2 .it{color:var(--t2)}
.end .r{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.mail{font:500 15px var(--num);padding:10px 16px;border-radius:999px;border:1px solid var(--edge);background:rgba(255,255,255,.04)}
.mail:hover{border-color:var(--ember)}
.wx{display:inline-flex;align-items:center;gap:10px;cursor:pointer;color:var(--t1)}
.wx .wx-l{font:500 12px var(--sans);color:var(--ok)}
.wx b{font:500 15px var(--num)}
.wx .wx-c{font:500 11px var(--sans);padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.08);color:var(--t2)}
.wx:hover .wx-c{background:var(--t1);color:#0A0A0D}
.foot{display:flex;justify-content:space-between;gap:16px;margin-top:18px;font-size:12px;color:var(--t3)}
.foot a:hover{color:var(--t1)}

/* sheet dialog */
.sheet{margin:auto;width:min(1080px,calc(100% - 40px));max-width:none;max-height:calc(100svh - 40px);padding:0;border:0;background:transparent;color:var(--t1);overflow:visible}
.sheet.narrow{width:min(760px,calc(100% - 40px))}
.sheet::backdrop{background:rgba(4,4,6,.66);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.sheet[open]{animation:pop .45s cubic-bezier(.2,.8,.2,1)}
.sheet[open]::backdrop{animation:fade .3s}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(24px) scale(.97)}}
.sheet-card{position:relative;max-height:calc(100svh - 40px);overflow:auto;border-radius:24px;padding:clamp(18px,2.6vw,32px);background:linear-gradient(160deg,rgba(28,28,36,.97),rgba(14,14,19,.98));border:1px solid var(--edge);box-shadow:0 40px 120px -40px #000;scrollbar-width:thin;overscroll-behavior:contain}
.sheet-x{position:sticky;float:right;top:0;z-index:5;width:38px;height:38px;border-radius:50%;border:1px solid var(--edge);background:rgba(30,30,38,.9);font-size:20px;line-height:1;transition:.2s}
.sheet-x:hover{background:var(--t1);color:#000}
.st{font:900 clamp(22px,2.6vw,32px)/1.25 var(--sans);letter-spacing:-.02em;margin:6px 50px 14px 0}
.lead{color:var(--t2);font-size:14px;max-width:48em}
.dgrid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;margin-top:22px}
.dimg{position:relative;border-radius:14px;overflow:auto;border:1px solid var(--edge);background:#000;cursor:zoom-in;max-height:min(68svh,620px)}
.dimg img{height:auto;max-height:min(68svh,620px);object-fit:contain}
.dimg.zoomed{cursor:zoom-out}
.dimg.zoomed img{width:auto;max-width:none;max-height:none}
.dtools{display:flex;justify-content:space-between;gap:10px;margin-top:8px;font-size:11.5px;color:var(--t3)}
.dtools a:hover{color:var(--t1)}
.mrow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}
.mrow div{padding:12px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);min-width:0}
.mrow b{display:block;font:600 22px var(--num);letter-spacing:-.02em;overflow-wrap:anywhere}
.mrow span{display:block;font-size:11.5px;color:var(--t2);margin-top:4px}
.mrow small{display:block;font-size:10.5px;color:var(--t3);margin-top:4px;line-height:1.45}
.story{display:grid;gap:12px}
.story div{padding-left:14px;border-left:2px solid var(--ember)}
.story b{font-size:13px}
.story p{font-size:13.5px;color:var(--t2)}
.ulist{margin:6px 0 0 16px;font-size:13.5px;color:var(--t2);display:grid;gap:4px}
.thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.thumbs button{border:1px solid var(--edge);border-radius:10px;overflow:hidden;padding:0;background:#000;aspect-ratio:9/12;position:relative;opacity:.7;transition:.2s}
.thumbs.wide button{aspect-ratio:16/10}
.thumbs button.on,.thumbs button:hover{opacity:1;border-color:var(--ember)}
.thumbs img{object-position:top}
.thumbs small{position:absolute;left:6px;right:6px;bottom:5px;font-size:11px;text-align:left;color:#fff;text-shadow:0 1px 4px #000}
.acct{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px;margin-top:10px}
.acct div{padding:8px 10px;border-radius:9px;background:rgba(255,255,255,.04);font-size:11.5px;color:var(--t3)}
.acct b{display:block;color:var(--t1);font:500 12.5px var(--num)}
details.more-d{margin-top:16px}
details.more-d summary{cursor:pointer;font-size:13px;color:var(--t2)}
.player{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}
.screen{position:relative;border-radius:16px;overflow:hidden;background:#000;display:grid;place-items:center;max-height:calc(100svh - 120px)}
.screen video,.screen>img{width:100%;max-height:calc(100svh - 120px);object-fit:contain}
.screen.photo{overflow:auto;cursor:zoom-in;place-items:start center}
.screen.photo.zoomed{cursor:zoom-out}
.screen.photo.zoomed>img{width:auto;max-width:none;max-height:none}
.pinfo h3{font:700 20px/1.35 var(--sans);margin:6px 0 10px}
.pinfo .stats{display:flex;gap:18px;margin:14px 0}
.pinfo .stats b{display:block;font:600 24px var(--num)}
.pinfo .stats span{font-size:11px;color:var(--t3)}
.pinfo dl{display:grid;gap:8px;margin-top:14px;font-size:12.5px}
.pinfo dt{color:var(--t3);font-size:11px}
.pinfo dd{color:var(--t2)}
.pnav{display:flex;align-items:center;gap:8px;margin-top:18px}
.pnav button{height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--edge);background:rgba(255,255,255,.05);font-size:13px;transition:.2s}
.pnav button:hover{background:var(--t1);color:#000}
.pnav span{font:500 12px var(--num);color:var(--t3);margin:0 4px}
.back{border:0;background:none;color:var(--t2);font-size:13px;margin-bottom:12px}
.back:hover{color:var(--t1)}
.ext{display:inline-block;margin-top:14px;font-size:12.5px;color:var(--t2);border-bottom:1px solid var(--edge)}
.ext:hover{color:var(--t1);border-color:var(--ember)}
.vfail{position:absolute;inset:0;display:grid;place-content:center;gap:12px;text-align:center;background:rgba(7,7,10,.78);font-size:14px;color:var(--t2)}
.vfail button{justify-self:center;height:40px;padding:0 20px;border-radius:999px;border:0;background:var(--t1);color:#000;font-weight:500}
.lib-tools{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 4px;align-items:center}
.lib-tools input{flex:1;min-width:200px;height:42px;border-radius:999px;border:1px solid var(--edge);background:rgba(255,255,255,.05);padding:0 18px;outline:0;font-size:14px}
.lib-tools input:focus{border-color:var(--ember)}
.lib-tools select{height:42px;border-radius:999px;border:1px solid var(--edge);background:#16161d;color:var(--t1);padding:0 14px;font:inherit;font-size:13px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chip{font-size:12.5px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.04);border:1px solid var(--edge);color:var(--t2);transition:.2s}
.chip span{color:var(--t3);margin-left:6px;font-family:var(--num)}
.chip:hover,.chip.on{background:var(--t1);color:#0A0A0D;border-color:var(--t1)}
.chip:hover span,.chip.on span{color:rgba(0,0,0,.5)}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:16px}
.lib-grid .w{aspect-ratio:9/13}
.lib-grid .w .cap{font-size:12px}
.lib-meta{font-size:12px;color:var(--t3);margin-top:14px}
.pager{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin-top:18px}
.pager button{min-width:36px;height:36px;border-radius:10px;border:1px solid var(--edge);background:rgba(255,255,255,.04);font:500 13px var(--num)}
.pager button.on{background:var(--t1);color:#000}
.empty{padding:40px;text-align:center;color:var(--t3);grid-column:1/-1}

/* image failure */
img.fail{opacity:0}
[data-fail]{position:relative;background:rgba(255,255,255,.04)!important;min-height:80px}
[data-fail]::after{content:"图片暂时没加载出来 · 点击重试";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--t3);cursor:pointer;z-index:4;text-align:center;padding:8px}
.site-feedback{position:fixed;z-index:120;left:50%;bottom:20px;transform:translateX(-50%);padding:12px 20px;border-radius:12px;background:rgba(30,30,38,.95);border:1px solid var(--edge);color:var(--t1);font-size:13px}

/* reveal: content only hides when JS runs, with a timed fallback */
/* Elements with backdrop-filter must not be transformed: Chromium can leave the frosted
   layer (border + background) behind the content. Glass blocks fade only. */
.js .rv{opacity:0;transition:opacity .9s cubic-bezier(.2,.7,.2,1)}
.js .rv:not(.glass):not(:has(.glass)){transform:translateY(22px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}
/* Moving cards (floating, tilting) use an opaque tint instead of a live backdrop blur. */
.float.glass,.case.glass{backdrop-filter:none;-webkit-backdrop-filter:none;background:linear-gradient(160deg,rgba(34,34,42,.94),rgba(17,17,23,.94))}

@media (max-width:1020px){
 .nav a:not(.mailto){display:none}
 .cases{grid-template-columns:1fr 1fr}.case:first-child{grid-column:span 2}
 .split{grid-template-columns:1fr}
 .acc-body{grid-template-columns:1fr}.fan{height:360px}
 .reel,.reel[data-n]{grid-template-columns:repeat(4,1fr);max-width:none}.reel .w:first-child{grid-column:span 4;aspect-ratio:16/9}
 .reel[data-n="4"]{grid-template-columns:repeat(3,1fr)}.reel[data-n="4"] .w:first-child{grid-column:span 3}
 .reel[data-n="3"],.reel[data-n="2"]{grid-template-columns:repeat(2,1fr)}.reel[data-n="3"] .w:first-child{grid-column:span 2}.reel[data-n="2"] .w:first-child{grid-column:auto;aspect-ratio:9/15}
 .decks{grid-template-columns:repeat(3,1fr)}
 .stage{max-width:660px;margin-top:26px;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
 #hero-floats{display:contents}
 .ask{grid-column:1/-1;order:-1}
 .float{position:relative;inset:auto!important;transform:none!important;animation:none;width:auto!important}
 .float.f3{display:none}
}
@media (max-width:720px){
 .brand .role-t{display:none}
 .hero{padding:112px 0 20px}
 .sub{font-size:14px}
 .stage{grid-template-columns:1fr 1fr}
 .ask{padding:14px}
 .qs button{padding:8px 13px;font-size:12.5px}
 .float.f4{grid-column:span 2}.float .spark{display:none}
 .marq{margin-top:50px}
 .sh{flex-direction:column;align-items:flex-start;gap:6px}.sh .aside{text-align:left}
 .cases{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 calc(var(--gut)*-1);padding:4px var(--gut) 10px;scrollbar-width:none}
 .case,.case:first-child{flex:0 0 86%;scroll-snap-align:center}
 .acc-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.acc-tabs button{flex:none}
 .fan{height:320px}.fan button{height:84%}
 .works-panel{border-radius:20px}
 .reel,.reel[data-n]{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
 .reel .w,.reel .w:first-child{flex:0 0 62%;aspect-ratio:9/15;scroll-snap-align:start}
 .wall .w{width:112px}
 .decks{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -14px;padding:0 14px 6px}
 .deck{flex:0 0 44%;scroll-snap-align:start}
 .proj{grid-template-columns:1fr}
 .plat{grid-template-columns:1fr 1fr}
 .end-card{padding:22px}
 .end h2 .it{display:block}
 .foot{flex-direction:column;gap:4px}
 .sheet,.sheet.narrow{width:100%;max-height:94svh;margin:auto 0 0}
 .sheet-card{border-radius:22px 22px 0 0;max-height:94svh}
 .dgrid,.player{grid-template-columns:1fr}
 .mrow b{font-size:17px}
}
@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important}
 .js .rv,.js .rv:not(.glass):not(:has(.glass)){opacity:1;transform:none}
 .wall{overflow-x:auto}
 .js .bars:not(.in) .br i{transform:scaleX(var(--w))}
}
