/* Shared proportions and scroll assembly, scoped to the four selected projects. */
#work .deckwrap{height:1210svh}
#work .deck{position:sticky;top:0;height:100svh;display:grid;place-items:center;perspective:1500px;overflow:hidden;mask-image:none;-webkit-mask-image:none}
#work .work-atmosphere{position:absolute;inset:0;overflow:hidden;pointer-events:none}
#work .work-glow{position:absolute;inset:-25%;background:radial-gradient(ellipse at 24% 48%,hsl(var(--work-hue,273) 70% 56% / .14),transparent 42%),radial-gradient(ellipse at 76% 60%,hsl(calc(var(--work-hue,273) + 48) 75% 60% / .10),transparent 40%);transform:translate3d(0,calc(var(--work-drift,0px) * -.35),0)}
#work .work-grid{position:absolute;left:-50%;right:-50%;top:48%;height:110%;background-image:linear-gradient(hsl(var(--work-hue,273) 40% 70% / .13) 1px,transparent 1px),linear-gradient(90deg,hsl(var(--work-hue,273) 40% 70% / .13) 1px,transparent 1px);background-size:80px 80px;transform-origin:center top;transform:perspective(650px) rotateX(64deg) translateY(var(--work-drift,0px));mask-image:radial-gradient(ellipse at 50% 18%,#0008,transparent 62%)}
#work .work-orbit{position:absolute;width:115%;height:64%;left:-7.5%;top:22%;border:1px solid hsl(var(--work-hue,273) 55% 70% / .12);border-radius:50%;transform:rotate(calc(-18deg + var(--work-turn,0deg)));box-shadow:0 0 70px hsl(var(--work-hue,273) 70% 55% / .035),inset 0 0 60px hsl(var(--work-hue,273) 70% 55% / .025)}
#work .work-orbit::after{content:"";position:absolute;inset:12%;border:1px solid hsl(var(--work-hue,273) 55% 70% / .06);border-radius:50%;transform:rotate(-20deg)}
#work .work-streak{position:absolute;inset:0;opacity:calc(var(--handoff,0) * .7);background:linear-gradient(115deg,transparent 30%,hsl(var(--work-hue,273) 75% 70% / .05) 44%,hsl(var(--work-hue,273) 80% 80% / .15) 50%,transparent 65%);transform:translateX(calc(var(--handoff,0) * 12%))}
#work .work-stars{position:absolute;inset:12% 8%;opacity:.35;background-image:radial-gradient(circle at 6% 32%,#bcaae9 0 1px,transparent 2px),radial-gradient(circle at 88% 18%,#9bb9d7 0 1px,transparent 2px),radial-gradient(circle at 78% 86%,#bcaae9 0 1px,transparent 2px),radial-gradient(circle at 18% 76%,#9bb9d7 0 1px,transparent 2px);transform:translateY(calc(var(--work-drift,0px) * -.2))}
#work .dstage{z-index:1}
#work .dstage{--card-pad:24px;--copy-height:88px;--copy-gap:18px;--card-chrome:calc(var(--card-pad) * 2 + var(--copy-height) + var(--copy-gap) + 2px);width:min(1120px,calc(100% - 80px),calc((100svh - 180px - var(--card-chrome)) * 16 / 9 + var(--card-pad) * 2 + 2px));height:auto;position:relative;display:block;padding-top:var(--card-chrome);animation:none;transform-style:preserve-3d}
#work .dstage::before{content:"";display:block;width:calc(100% - var(--card-pad) * 2 - 2px);margin-inline:calc(var(--card-pad) + 1px);aspect-ratio:16/9}
#work .dcard{position:absolute;inset:0;width:auto;display:grid;grid-template-rows:var(--copy-height) minmax(0,1fr);padding:var(--card-pad);gap:var(--copy-gap);transform:var(--deck-transform,none)!important;opacity:var(--deck-opacity,1)!important}
#work .dcard .vis{width:100%;height:100%;aspect-ratio:16/9;flex:none;min-height:0;border:0;box-shadow:inset 0 0 0 1px var(--dark-line)}
#work .dcard .tp{height:var(--copy-height);min-height:0;gap:20px}
#work .dcard .tp>div{min-width:0}
#work .dcard .tp .badge{flex:none;margin-top:2px}
#work .dcard h3{font-size:clamp(24px,2.4vw,32px)}
#work .dcard .sb{font-size:13px;line-height:1.6}
#work .dcard[data-deck-duplicate]{display:none}
#work .assembly-card .vis{overflow:visible;border-color:transparent;background:transparent;box-shadow:none;display:grid;place-items:center}
#work .assembly-scene{position:absolute;inset:0;display:grid;place-items:center;perspective:1200px;container-type:size;--design-opacity:0;--wire-opacity:1;--frame-opacity:0}
#work .assembly-plane{position:relative;width:min(100cqw,177.777cqh);aspect-ratio:1280/720;transform-style:preserve-3d;will-change:transform}
#work .assembly-design,#work .assembly-wire{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:9px}
#work .assembly-design{opacity:var(--design-opacity);object-fit:contain;box-shadow:0 12px 30px #0002}
#work .assembly-wire{opacity:var(--wire-opacity);overflow:visible}
#work .assembly-parts{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
#work .assembly-blueprint{position:absolute;inset:0;opacity:var(--blueprint-opacity,.42);pointer-events:none}
#work .assembly-blueprint .assembly-part{opacity:1;transform:none;filter:none;will-change:auto}
#work .assembly-blueprint .assembly-panel{fill:none;stroke:#b4a3d2;stroke-opacity:.7;stroke-dasharray:3 5}
#work .assembly-blueprint .assembly-line{fill:#a9a0c3;fill-opacity:.35}
#work .assembly-part{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform,opacity;opacity:calc(var(--wire-opacity) * var(--part-opacity,0));filter:drop-shadow(0 0 calc(var(--lock-glow,0) * 1px) #a58aff80)}
#work .assembly-part svg{width:100%;height:100%;display:block;overflow:visible}
#work .assembly-aura{position:absolute;inset:-45%;pointer-events:none;background:radial-gradient(ellipse at 42% 50%,#8661e044,transparent 48%),radial-gradient(ellipse at 65% 60%,#53b6cc30,transparent 46%);opacity:var(--aura-opacity,0)}
#work .assembly-guide{pointer-events:none}
#work .assembly-crosshair{fill:none;stroke:#cbb8f0;stroke-width:1.3;opacity:var(--guide-opacity,0)}
#work .assembly-grid{stroke:#8f9bc4;stroke-width:.7;stroke-dasharray:4 12}
#work .assembly-sweep{position:absolute;inset:0;overflow:hidden;border-radius:9px;opacity:var(--sweep-opacity,0);pointer-events:none;transform:translateZ(1px)}
#work .assembly-sweep::after{content:"";position:absolute;inset:-25%;background:linear-gradient(115deg,transparent 38%,#b597ff12 46%,#e9e2ffb0 50%,#91d8ef28 53%,transparent 61%);transform:translateX(var(--sweep-x,-130%))}
#work .assembly-open{position:absolute;inset:0;z-index:3;width:100%;height:100%;padding:0;border:0;border-radius:9px;background:transparent;cursor:pointer}
#work .assembly-open:disabled{pointer-events:none;cursor:default}
#work .assembly-open:focus-visible{outline:2px solid #c297d1;outline-offset:5px}
#work .assembly-frame{fill:#151921;stroke:#8996b4;stroke-opacity:.35;opacity:var(--frame-opacity)}
#work .assembly-panel{fill:#20252e;stroke:#aab6cc;stroke-width:1.2;stroke-opacity:.6}
#work .assembly-line{fill:#8895ae;fill-opacity:.4}
#work .assembly-accent{fill:#c297d1;fill-opacity:.8}
#work .assembly-selected{fill:#3c3048;stroke:#b794c8}
#work .assembly-card{background:rgba(26,29,36,var(--assembly-shell,1));border-color:rgba(255,255,255,calc(var(--assembly-shell,1) * .1));box-shadow:0 14px 36px rgba(0,0,0,calc(var(--assembly-shell,1) * .12))}
#work .assembly-card .tp{position:relative;z-index:2}
#work .dcard .tp .no,#work .dcard .tp h3,#work .dcard .tp .sb,#work .dcard .tp .badge{opacity:var(--copy-opacity,1);transform:translateY(var(--copy-y,0px)) scale(var(--copy-scale,1));filter:blur(var(--copy-blur,0px));will-change:transform,opacity;transform-origin:left center}
#work .dcard .tp .badge{transform-origin:right top}
#work .dhint{display:block;text-align:center;white-space:nowrap;z-index:5;letter-spacing:.12em}
#work .dprog{display:flex}
@media(max-width:900px){
 #work .dstage{--card-pad:18px;--copy-height:88px;--copy-gap:16px;width:min(calc(100% - 40px),calc((100svh - 180px - var(--card-chrome)) * 16 / 9 + var(--card-pad) * 2));max-height:none}
 #work .dcard{box-shadow:0 14px 36px #0002}
 #work .dcard h3{font-size:22px}
 #work .dcard .sb{font-size:11px;line-height:1.6}
}
@media(max-width:520px){
 #work .work-orbit{width:180%;left:-40%;height:42%;top:32%}
 #work .dstage{--card-pad:16px;--copy-height:100px;--copy-gap:12px;width:calc(100% - 28px)}
 #work .dcard .tp{gap:10px}
 #work .dcard h3{font-size:20px}
 #work .dcard .badge{font-size:10px;padding:5px 8px}
}
@media(min-width:521px) and (max-height:600px){
 #work .dstage{--card-pad:14px;--copy-height:64px;--copy-gap:10px;width:min(calc(100% - 40px),calc((100svh - 130px - var(--card-chrome)) * 16 / 9 + var(--card-pad) * 2))}
 #work .dcard h3{font-size:20px;margin-top:3px}
 #work .dcard .sb{font-size:10px;margin-top:2px}
 #work .dcard .no{font-size:9px}
}
@media(prefers-reduced-motion:reduce){
 #work .work-grid,#work .work-orbit,#work .work-streak,#work .work-stars{display:none}
 #work .deckwrap{height:360svh}
 #work .assembly-part,#work .assembly-plane{will-change:auto}
 #work .dcard .tp .no,#work .dcard .tp h3,#work .dcard .tp .sb,#work .dcard .tp .badge{transform:none;filter:none;will-change:auto}
}
