:root{color-scheme:dark;--bg:#0e0d0c;--ink:#f4f0e9;--accent:#ff4d24;--mono:"Roboto Mono",monospace;--display:"Archivo",sans-serif}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--display)}
button,a{color:inherit}.playground{position:fixed;inset:0;overflow:hidden;background:var(--bg)}
.page-intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;overflow:hidden;pointer-events:none;background:#0e0d0c;perspective:1200px;will-change:opacity;animation:intro-away .82s cubic-bezier(.22,1,.36,1) 1.74s forwards}
.page-intro::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 4px,rgba(255,255,255,.012) 4px 5px);mix-blend-mode:screen}
.page-intro__glow{position:absolute;width:min(680px,90vw);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,77,36,.23),transparent 66%);animation:intro-glow 2.45s ease-out both}
.page-intro__echo{position:absolute;width:190px;aspect-ratio:.635;display:grid;place-items:center;border:1px solid rgba(244,240,233,.12);border-radius:14px;color:rgba(244,240,233,.1);font:700 44px var(--display);animation:echo-drift 2.15s cubic-bezier(.22,1,.36,1) both}
.page-intro__echo::before{content:"";position:absolute;left:20px;right:20px;bottom:24px;height:22px;background:repeating-linear-gradient(90deg,currentColor 0 2px,transparent 2px 7px)}
.page-intro__echo--one{margin-left:-560px;transform:rotate(-14deg);--ex:-90px;--ey:-30px;--er:-8deg}
.page-intro__echo--two{margin-left:550px;margin-top:-120px;transform:rotate(12deg);--ex:110px;--ey:-80px;--er:18deg;animation-delay:.06s}
.page-intro__echo--three{margin-left:420px;margin-top:430px;transform:rotate(-7deg);--ex:90px;--ey:110px;--er:4deg;animation-delay:.12s}
.page-intro__lanyard{position:absolute;left:50%;top:-30vh;width:12px;height:62vh;border:3px solid rgba(244,240,233,.34);border-bottom:0;transform:translateX(-50%) rotate(-3deg);animation:lanyard-swing 2.4s cubic-bezier(.22,1,.36,1) both}
.page-intro__badge{position:relative;z-index:2;width:min(300px,66vw);aspect-ratio:.635;padding:46px 25px 24px;border-radius:18px;color:#111;background:#f4f0e9;box-shadow:0 36px 90px rgba(0,0,0,.68);transform-origin:50% -35%;will-change:transform,opacity;animation:badge-pass 2.55s cubic-bezier(.65,0,.2,1) both}
.page-intro__clip{position:absolute;top:15px;left:50%;width:56px;height:14px;border:2px solid #111;border-radius:7px;transform:translateX(-50%)}
.page-intro__badge>span{display:block;font:8px var(--mono);letter-spacing:.24em;color:#77716a}
.page-intro__badge>strong{display:block;margin-top:26px;font-size:clamp(44px,10vw,62px);letter-spacing:-.07em;line-height:.75}
.page-intro__badge>strong::first-letter{color:var(--accent)}
.page-intro__meta{display:flex;justify-content:space-between;align-items:end;margin-top:30px;padding-top:11px;border-top:2px solid #111;font:8px var(--mono);letter-spacing:.16em}
.page-intro__meta i{font-style:normal;color:var(--accent)}.page-intro__meta b{font-size:12px}
.page-intro__barcode{position:absolute;left:25px;right:25px;bottom:25px;height:38px;background:repeating-linear-gradient(90deg,#111 0 2px,transparent 2px 5px,#111 5px 6px,transparent 6px 10px,#111 10px 14px,transparent 14px 17px)}
.page-intro__flash{position:absolute;z-index:4;inset:0;background:#f4f0e9;opacity:0;animation:camera-flash .42s ease-out 1.66s both}
.playground{opacity:0;filter:blur(9px);transform:scale(.94);animation:world-in 1.18s cubic-bezier(.22,1,.36,1) 1.38s forwards}
.title-lockup,.counter,.back{opacity:0;animation:ui-in .72s cubic-bezier(.22,1,.36,1) 1.82s forwards}
.plane{position:absolute;inset:0;cursor:grab;touch-action:none;user-select:none}.plane:active{cursor:grabbing}
.pattern{position:absolute;left:0;top:0;width:2520px;height:1320px;transform-origin:top left;will-change:transform}
.slot{position:absolute;width:200px}.card{position:relative;width:200px;height:317px;transform-style:preserve-3d;animation:turn var(--speed,9s) linear infinite;animation-delay:var(--delay,0s);will-change:transform}
.face{position:absolute;inset:0;overflow:hidden;border-radius:12px;backface-visibility:hidden;transform:translateZ(1px);background:#151412;border:1px dashed rgba(244,240,233,.2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.face--back{transform:rotateY(180deg) translateZ(1px)}.face img{width:100%;height:100%;object-fit:cover}.badge .face{border:0;box-shadow:0 16px 40px rgba(0,0,0,.5)}
.placeholder b{font-size:38px;color:rgba(244,240,233,.15)}.placeholder small{font:8px var(--mono);letter-spacing:.3em;text-transform:uppercase;color:rgba(244,240,233,.25)}
.slot__caption{text-align:center;margin-top:14px;pointer-events:none}.slot__caption b{display:block;font-size:18px}.slot__caption span{font:9px var(--mono);letter-spacing:.3em;color:var(--accent)}
.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.58))}
.back{position:absolute;z-index:3;left:20px;top:20px;text-decoration:none;font:10px var(--mono);letter-spacing:.22em;text-transform:uppercase;color:rgba(244,240,233,.55);transition:color .2s}.back:hover{color:var(--accent)}
.title-lockup{position:absolute;z-index:3;bottom:24px;left:20px;pointer-events:none}.title-lockup h1{margin:0;font-size:20px;letter-spacing:-.03em}.title-lockup h1 span{color:var(--accent)}
.title-lockup p,.counter{font:9px var(--mono);letter-spacing:.23em;text-transform:uppercase;color:rgba(244,240,233,.42)}.title-lockup p{margin:5px 0 0}.counter{position:absolute;z-index:3;right:20px;bottom:22px;text-align:right;pointer-events:none}.counter p{margin:5px 0}.counter strong{color:rgba(244,240,233,.82);font-weight:400}
.viewer{position:fixed;z-index:20;inset:0;background:rgba(0,0,0,.76);backdrop-filter:blur(6px);display:flex;flex-direction:column;align-items:center;justify-content:center}.viewer[hidden]{display:none}.viewer__close{position:absolute;right:20px;top:14px;border:0;background:none;font:32px var(--display);cursor:pointer;color:rgba(244,240,233,.65)}
.viewer__stage{perspective:1400px;cursor:grab;touch-action:none;user-select:none}.viewer__stage:active{cursor:grabbing}.viewer__card{position:relative;height:min(62vh,540px);width:calc(min(62vh,540px)/1.586);transform-style:preserve-3d;will-change:transform}.viewer__card .face{border-radius:18px;border:0;box-shadow:0 30px 70px rgba(0,0,0,.55)}
.viewer__caption{text-align:center;margin-top:28px;pointer-events:none}.viewer__caption h2{margin:0;font-size:30px}.viewer__caption p{margin:6px 0 15px;font:11px var(--mono);letter-spacing:.3em;color:var(--accent)}.viewer__caption small{font:9px var(--mono);letter-spacing:.22em;text-transform:uppercase;color:rgba(244,240,233,.38)}
@keyframes turn{to{transform:rotateY(360deg)}}
@keyframes badge-pass{0%{opacity:0;transform:translateY(-80vh) rotateZ(-11deg) rotateY(-20deg) scale(.82)}16%{opacity:1}36%{transform:translateY(2vh) rotateZ(4deg) rotateY(0) scale(1)}44%{transform:translateY(-3vh) rotateZ(-2.5deg) scale(1.025)}52%,68%{opacity:1;transform:translateY(-1vh) rotateZ(1deg) rotateY(0) scale(1)}100%{opacity:0;transform:translate(112vw,-18vh) rotateZ(22deg) rotateY(34deg) scale(.88)}}
@keyframes lanyard-swing{0%{transform:translateX(-50%) translateY(-55vh) rotate(-12deg)}38%{transform:translateX(-50%) rotate(4deg)}55%,70%{transform:translateX(-50%) rotate(-2deg)}100%{transform:translateX(70vw) rotate(20deg)}}
@keyframes echo-drift{0%{opacity:0;translate:calc(var(--ex)*-.35) calc(var(--ey)*-.35);rotate:calc(var(--er)*-.4);scale:.8}35%{opacity:1}100%{opacity:0;translate:var(--ex) var(--ey);rotate:var(--er);scale:1.08}}
@keyframes intro-glow{0%{opacity:0;transform:scale(.5)}55%{opacity:1}100%{opacity:0;transform:scale(1.35)}}
@keyframes camera-flash{0%,100%{opacity:0}28%{opacity:.14}}
@keyframes world-in{to{opacity:1;filter:blur(0);transform:scale(1)}}
@keyframes ui-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes intro-away{0%{opacity:1;visibility:visible}99%{visibility:visible}100%{opacity:0;visibility:hidden}}
@media(max-width:640px){.title-lockup p{max-width:240px;line-height:1.5}.counter{bottom:68px}.viewer__caption small{display:none}}
@media(prefers-reduced-motion:reduce){.card{animation:none}.page-intro{display:none}.playground,.title-lockup,.counter,.back{opacity:1;transform:none;animation:none}}
