/* =========================================================
   RICCARDO WOLF — cinematic 90s
   ========================================================= */
:root{
  --black:#050403;
  --film:#0b0907;
  --ink:#efe6d2;
  --dim:#8f8473;
  --faint:#3a342b;
  --gold:#e8a33d;
  --gold-2:#f6cf7c;
  --teal:#1d3434;
  --red:#d6391f;
  --display:"Cinzel", "Trajan Pro", Georgia, serif;
  --type:"Courier Prime", "Courier New", monospace;
  --osd:"VT323", "Courier New", monospace;
  --ease:cubic-bezier(.77,0,.18,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --gutter:clamp(18px,4vw,64px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;background:var(--black)}
body{background:var(--black);color:var(--ink);font-family:var(--type);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.is-intro,body.scene-open{overflow:hidden}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
img,video{display:block}
:focus-visible{outline:1px solid var(--gold);outline-offset:4px}
::selection{background:var(--gold);color:var(--black)}

/* ---------- atmosphere ---------- */
.atmos{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.leak{position:absolute;border-radius:50%;filter:blur(90px);mix-blend-mode:screen;opacity:.55}
.leak-a{width:70vmax;height:55vmax;left:-25vmax;top:-20vmax;background:radial-gradient(closest-side,#8a3a0e,transparent);animation:drift-a 38s ease-in-out infinite alternate}
.leak-b{width:60vmax;height:60vmax;right:-30vmax;top:30vh;background:radial-gradient(closest-side,#173c3b,transparent);animation:drift-b 46s ease-in-out infinite alternate;opacity:.7}
.leak-c{width:40vmax;height:30vmax;left:30vw;bottom:-25vmax;background:radial-gradient(closest-side,#6b4a16,transparent);animation:drift-a 52s ease-in-out infinite alternate-reverse;opacity:.35}
@keyframes drift-a{to{transform:translate(18vw,12vh) scale(1.2)}}
@keyframes drift-b{to{transform:translate(-14vw,-18vh) scale(.9)}}
.vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.75) 100%)}
#grain{position:absolute;inset:0;width:100%;height:100%;opacity:.09;mix-blend-mode:overlay;image-rendering:pixelated}
.scratches{position:absolute;inset:0}
.scratches i{position:absolute;top:0;bottom:0;width:1px;background:rgba(239,230,210,.35);animation:scr .25s steps(3) forwards}
.scratches b{position:absolute;border-radius:50%;background:rgba(239,230,210,.5);animation:scr .12s steps(2) forwards}
@keyframes scr{to{opacity:0;transform:translateX(3px)}}
main,.top{position:relative;z-index:2}

/* ---------- intro ---------- */
.intro{position:fixed;inset:0;z-index:60;pointer-events:none}
/* projector start: film burn, gate flicker, running edge codes */
.leader{position:absolute;inset:0;background:#070605;overflow:hidden;pointer-events:auto;transition:opacity .7s}
.leader.done{opacity:0;pointer-events:none}
.pj-flash{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,#fff3d2 0%,#e9b46a 40%,#3a1a08 100%);opacity:0;animation:pjFlicker 1.9s steps(1) forwards}
@keyframes pjFlicker{0%{opacity:0}6%{opacity:.75}9%{opacity:.05}15%{opacity:.55}18%{opacity:0}26%{opacity:.4}30%{opacity:.12}38%{opacity:.32}46%{opacity:.08}60%{opacity:.18}75%{opacity:.05}100%{opacity:0}}
.pj-frame{position:absolute;left:0;right:0;height:16vh;background:#000;box-shadow:0 0 40px 10px #000;top:-20vh;animation:pjRoll .55s linear 3 .15s}
@keyframes pjRoll{to{top:110vh}}
.pj-burn{position:absolute;width:90vmax;height:90vmax;right:-30vmax;top:-30vmax;border-radius:50%;background:radial-gradient(circle,#fff8e6 0%,#f6c46d 14%,#d9601a 30%,rgba(120,30,6,.7) 46%,transparent 64%);mix-blend-mode:screen;opacity:0;transform:scale(.2);animation:pjBurn 1.9s var(--ease-out) .5s forwards;filter:blur(8px)}
@keyframes pjBurn{0%{opacity:0;transform:scale(.2)}35%{opacity:.95}100%{opacity:0;transform:scale(1.5)}}
.pj-edge{position:absolute;top:0;bottom:0;width:34px;overflow:hidden;font-family:var(--osd);font-size:15px;color:#e8a33d;opacity:.55;writing-mode:vertical-rl}
.pj-edge-l{left:10px}.pj-edge-r{right:10px;transform:rotate(180deg)}
.pj-edge span{display:block;white-space:nowrap;animation:pjEdge .9s linear infinite}
@keyframes pjEdge{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.pj-holes{position:absolute;top:0;bottom:0;width:14px;left:52px;background:repeating-linear-gradient(transparent 0 14px,rgba(239,230,210,.18) 14px 26px);animation:pjHoles .3s linear infinite}
.pj-holes.r{left:auto;right:52px}
@keyframes pjHoles{to{background-position:0 26px}}

.bar{position:absolute;left:0;right:0;height:12vh;background:#000;transition:transform 1.4s var(--ease);z-index:2}
.bar-top{top:0}.bar-bot{bottom:0}
.is-entered .bar-top{transform:translateY(-101%)}
.is-entered .bar-bot{transform:translateY(101%)}

.title-card{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;opacity:0;transition:opacity 1.6s;pointer-events:none;padding:0 var(--gutter)}
.title-card.show{opacity:1;pointer-events:auto}
.is-entered .title-card{opacity:0!important;pointer-events:none!important;transition:opacity .5s}
.presents{font-family:var(--type);font-style:italic;color:var(--dim);letter-spacing:.08em;opacity:0;animation:none}
.tc-name{font-family:var(--display);font-weight:500;font-size:clamp(2.6rem,8vw,7rem);letter-spacing:.14em;line-height:1.05;margin:.4rem 0 3rem;text-shadow:0 0 40px rgba(0,0,0,.6)}
.title-card.show .presents{animation:fadeIn 1.4s .2s forwards}
.title-card.show .tc-name{animation:titleIn 2.6s var(--ease-out) .5s both}
@keyframes fadeIn{to{opacity:1}}
@keyframes titleIn{from{opacity:0;letter-spacing:.5em;filter:blur(14px)}to{opacity:1;letter-spacing:.14em;filter:blur(0)}}
.enter-btn{display:inline-flex;align-items:center;gap:.9rem;padding:1rem 1.6rem;border:1px solid rgba(239,230,210,.4);background:rgba(5,4,3,.35);backdrop-filter:blur(6px);letter-spacing:.06em;opacity:0;transition:border-color .4s,background .4s}
.title-card.show .enter-btn{animation:fadeIn 1.2s 2.2s forwards}
.enter-btn:hover{border-color:var(--gold);background:rgba(232,163,61,.12)}
.eb-dot{width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 12px var(--red);animation:blink 1.2s steps(2) infinite}
@keyframes blink{50%{opacity:.15}}

/* stage = hero video */
.stage{position:fixed;inset:0;z-index:55;overflow:hidden;background:#000}
.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:sepia(.18) saturate(1.05) contrast(1.06)}
.stage-fallback{position:absolute;inset:0;background:radial-gradient(ellipse at 65% 40%,#7a3412 0%,#2b1407 40%,#050403 80%);z-index:-1}
.stage.flying{transition:top 1.5s var(--ease),left 1.5s var(--ease),width 1.5s var(--ease),height 1.5s var(--ease);}
.stage.docked{display:none}

/* ---------- header ---------- */
.top{position:fixed;top:0;left:0;right:0;z-index:30;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:20px var(--gutter);opacity:0;transform:translateY(-14px);transition:opacity 1s 1.2s,transform 1s 1.2s var(--ease-out),background .5s}
.is-entered .top{opacity:1;transform:none}
.top.scrolled{background:rgba(5,4,3,.72);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 1px 0 rgba(239,230,210,.06)}
.is-entered .top.hide{transform:translateY(-110%);transition:transform .7s var(--ease),background .5s}
.is-entered .top.shown{transition:transform .7s var(--ease),background .5s}
.cpp{grid-column:2;display:flex;flex-direction:column;align-items:center;gap:7px}
.cpp-label{font-size:.66rem;letter-spacing:.24em;color:var(--dim);font-style:italic}
.cpp-window{position:relative;padding:0 26px}
.cpp-track{display:flex;align-items:center;gap:0;animation:cppDrift 26s ease-in-out infinite alternate}
@keyframes cppDrift{from{transform:translateX(-22px)}to{transform:translateX(22px)}}
.cpp-track a{display:inline-flex;align-items:center;font-family:var(--display);font-size:.84rem;font-weight:500;letter-spacing:.16em;color:var(--ink);padding:2px 0;transition:transform .5s var(--ease-out),color .4s,text-shadow .4s}
.cpp-track a+a::before{content:"✦";font-size:.5em;color:var(--gold);margin:0 1.15em;display:inline-block;transform:none}
.cpp-track a:hover{transform:scale(1.15);color:var(--gold-2);text-shadow:0 0 18px rgba(232,163,61,.5)}
.menu{grid-column:3;justify-self:end;display:flex;gap:clamp(14px,2.4vw,36px);font-size:.92rem;letter-spacing:.06em}
.menu a{position:relative;padding:4px 0}
.menu a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.menu a:hover::after{transform:scaleX(1);transform-origin:left}
.menu-cta{color:var(--gold)}

/* ---------- hero ---------- */
#site{opacity:0;transition:opacity 1.2s .4s}
.is-entered #site{opacity:1}
.hero{min-height:100svh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:center;gap:clamp(24px,4vw,72px);padding:120px var(--gutter) 90px;position:relative}
.credit{color:var(--gold);font-style:italic;letter-spacing:.04em;margin-bottom:1.2rem}
.name{font-family:var(--display);font-weight:500;font-size:clamp(3.2rem,8.4vw,8.8rem);line-height:.95;letter-spacing:.02em;display:flex;flex-direction:column}
.name .w{display:block;white-space:nowrap}
.name .ch{display:inline-block;opacity:0;filter:blur(12px);transform:translateY(.25em)}
.is-entered .name .ch{animation:chIn 1.6s var(--ease-out) forwards;animation-delay:calc(1.3s + var(--i) * .07s)}
@keyframes chIn{to{opacity:1;filter:blur(0);transform:none}}
.logline{margin:2rem 0 2.6rem;max-width:40ch;font-size:clamp(1rem,1.25vw,1.15rem);line-height:1.7;color:#d9cfbb}
.logline span{display:block;opacity:0;transform:translateY(10px);filter:blur(6px)}
.logline span:first-child{font-family:var(--display);font-size:1.5em;line-height:1.25;color:var(--ink);letter-spacing:.02em;margin-bottom:.9rem;white-space:nowrap}
.is-entered .logline span{animation:lineIn 1.4s var(--ease-out) forwards}
.is-entered .logline span:nth-child(1){animation-delay:2.3s}
.is-entered .logline span:nth-child(2){animation-delay:2.9s}
.is-entered .logline span:nth-child(3){animation-delay:3.3s}
@keyframes lineIn{to{opacity:1;transform:none;filter:none}}

.stats{display:flex;align-items:center;gap:clamp(22px,3vw,46px);position:relative;padding:1.3rem 0;width:max-content;max-width:100%}
.stats::before,.stats::after{content:"";position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(232,163,61,0),var(--gold) 20%,var(--gold) 80%,rgba(232,163,61,0));transform:scaleX(0);transition:transform .9s var(--ease)}
.stats::before{top:0}.stats::after{bottom:0}
.stats.run::before,.stats.run::after{transform:scaleX(1)}
.stat{display:flex;align-items:center;gap:.85rem;opacity:0;filter:blur(10px);transform:translateY(8px);transition:opacity .7s var(--ease-out),filter .7s,transform .7s var(--ease-out)}
.stats.run .stat{opacity:1;filter:none;transform:none}
.stats.run .stat:nth-child(2){transition-delay:.12s}.stats.run .stat:nth-child(3){transition-delay:.24s}
.stat dt{font-family:var(--display);font-weight:500;font-size:clamp(2.2rem,3.6vw,3.4rem);line-height:1;color:var(--gold-2);font-variant-numeric:lining-nums;white-space:nowrap}
.stats.run .stat dt{animation:statGlow 1.2s ease-out}
@keyframes statGlow{0%{text-shadow:0 0 0 rgba(246,207,124,0);color:#fff8e6}30%{text-shadow:0 0 34px rgba(246,207,124,.9)}100%{text-shadow:0 0 22px rgba(232,163,61,.25)}}
.stat dd{font-size:.78rem;line-height:1.35;font-style:italic;color:var(--dim);border-left:1px solid rgba(232,163,61,.35);padding-left:.85rem;white-space:nowrap}

.hero-frame-wrap{position:relative}
.hero-frame{position:relative;aspect-ratio:16/9;width:100%;background:#000;box-shadow:0 40px 120px -30px rgba(0,0,0,.9),0 0 0 1px rgba(239,230,210,.08);overflow:hidden}
.hero-frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:sepia(.18) saturate(1.05) contrast(1.06)}
.hero-frame::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.14) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}
.osd{position:absolute;z-index:3;font-family:var(--osd);font-size:20px;letter-spacing:.06em;color:#f2ead6;text-shadow:0 0 6px rgba(0,0,0,.9),1px 0 rgba(214,57,31,.5);display:flex;align-items:center;gap:8px;opacity:0;transition:opacity .8s 1.6s}
.is-entered .osd,.tape .osd{opacity:1}
.osd-tl{left:14px;top:10px}.osd-br{right:14px;bottom:8px}
.rec{width:10px;height:10px;border-radius:50%;background:var(--red);animation:blink 1.2s steps(2) infinite}
.sound{position:absolute;right:0;bottom:-46px;display:flex;align-items:center;gap:10px;font-size:.82rem;color:var(--dim);letter-spacing:.06em;padding:6px 0;transition:color .3s}
.sound:hover{color:var(--ink)}
.eq{display:flex;gap:2px;align-items:flex-end;height:12px}
.eq i{width:2px;background:var(--gold);height:30%;animation:eq 1s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:-.3s}.eq i:nth-child(3){animation-delay:-.6s}.eq i:nth-child(4){animation-delay:-.15s}
@keyframes eq{50%{height:100%}}
.sound[aria-pressed="false"] .eq i{animation:none;height:20%}
.scroll-cue{position:absolute;left:50%;bottom:28px;width:1px;height:56px;background:rgba(239,230,210,.15);overflow:hidden}
.scroll-cue span{position:absolute;left:0;top:-50%;width:1px;height:50%;background:var(--gold);animation:cue 2.4s var(--ease) infinite}
@keyframes cue{to{top:110%}}

/* ---------- reveals ---------- */
[data-reveal]{clip-path:inset(50% 0 50% 0);filter:brightness(.3) blur(8px);transform:scale(1.06);transition:clip-path 1.6s var(--ease),filter 1.8s var(--ease-out),transform 2.4s var(--ease-out)}
[data-reveal].in{clip-path:inset(0 0 0 0);filter:none;transform:none}
[data-line]{opacity:0;transform:translateY(16px);filter:blur(6px);transition:opacity 1.2s var(--ease-out),transform 1.2s var(--ease-out),filter 1.2s;transition-delay:var(--d,0s)}
[data-line].in{opacity:1;transform:none;filter:none}
[data-reveal-text] .wd{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em}
[data-reveal-text] .wd>span{display:inline-block;transform:translateY(105%);transition:transform 1.3s var(--ease);transition-delay:calc(var(--i) * .08s)}
[data-reveal-text].in .wd>span{transform:none}

/* ---------- sections ---------- */
section{position:relative}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:clamp(28px,5vh,56px)}
.sec-title{font-family:var(--display);font-weight:500;font-size:clamp(2.1rem,5vw,4.6rem);line-height:1.02;letter-spacing:.01em}
.link{color:var(--gold);border-bottom:1px solid rgba(232,163,61,.4);padding-bottom:3px;white-space:nowrap;transition:border-color .3s}
.link:hover{border-color:var(--gold)}
.work{padding:clamp(80px,14vh,160px) var(--gutter)}
.work-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,36px)}
.col-title{font-family:var(--type);font-weight:400;font-style:italic;color:var(--dim);font-size:.95rem;margin-bottom:.8rem}
.feature{position:relative;aspect-ratio:16/9;overflow:hidden;background:#100d0a}
.feature video,.feature img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.6s var(--ease-out);filter:sepia(.12) contrast(1.05)}
.feature:hover video,.feature:hover img{transform:scale(1.04)}
.feature figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.6rem 1rem .8rem;display:flex;justify-content:space-between;gap:1rem;font-size:.85rem;background:linear-gradient(transparent,rgba(0,0,0,.75));z-index:2}
.feature figcaption em{color:var(--gold);font-style:italic}
.ph{position:absolute;inset:0;background:linear-gradient(135deg,#2a1608 0%,#120f0c 45%,#1a2828 100%)}
.ph::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 40%,rgba(232,163,61,.18),transparent 55%)}
.tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px}
.tile{position:relative;aspect-ratio:16/9;overflow:hidden;background:#100d0a;cursor:pointer}
.tile img,.tile video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:sepia(.15) contrast(1.05)}
.tile .fresh{animation:cut .5s var(--ease-out)}
@keyframes cut{0%{opacity:0;transform:scale(1.18);filter:brightness(2.2) sepia(.6) blur(3px)}60%{opacity:1}100%{opacity:1;transform:none;filter:sepia(.15) contrast(1.05)}}
.tile::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(239,230,210,0);transition:box-shadow .4s}
.tile:hover::after{box-shadow:inset 0 0 0 1px var(--gold)}

/* about teaser */
.about-home{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,110px);align-items:center;padding:clamp(80px,14vh,160px) var(--gutter)}
.tape{background:#141210;padding:clamp(12px,1.6vw,22px);border-radius:14px;box-shadow:inset 0 0 0 1px #2a251f,0 40px 100px -30px #000}
.tape-screen{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:18px/24px;background:#0b0a09}
.tape-screen img,.ab-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:sepia(.25) saturate(.85) contrast(1.1)}
.tape-screen img{filter:sepia(.25) saturate(.85) contrast(1.1) drop-shadow(2px 0 rgba(214,57,31,.5)) drop-shadow(-2px 0 rgba(29,120,140,.4))}
.portrait-ph{background:linear-gradient(160deg,#3a1e0c,#0f0d0b 60%,#152626)}
.tape-lines{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.25) 0 2px,transparent 2px 4px);pointer-events:none}
.tape-lines::after{content:"";position:absolute;left:0;right:0;height:14%;background:linear-gradient(transparent,rgba(239,230,210,.08),transparent);animation:roll 6s linear infinite}
@keyframes roll{from{top:-15%}to{top:110%}}
.osd.vhs{opacity:1}
.about-copy p{max-width:44ch;color:#d9cfbb;margin-top:1.4rem}
.btn-ghost{display:inline-flex;align-items:center;gap:.8rem;margin-top:2rem;padding:.9rem 1.4rem;border:1px solid rgba(239,230,210,.35);letter-spacing:.04em;transition:border-color .4s,color .4s,background .4s}
.btn-ghost::before{content:"►";font-size:.7em;color:var(--gold)}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold-2);background:rgba(232,163,61,.06)}

/* contact teaser */
.contact-home{padding:clamp(70px,12vh,140px) var(--gutter) 40px;text-align:center;overflow:hidden}
.ticker{overflow:hidden;margin:0 calc(var(--gutter) * -1) clamp(40px,8vh,80px);border-top:1px solid var(--faint);border-bottom:1px solid var(--faint);padding:14px 0}
.ticker-track{display:flex;width:max-content;animation:tick 60s linear infinite}
.ticker-track span{font-family:var(--display);font-size:clamp(1rem,1.8vw,1.4rem);letter-spacing:.12em;color:var(--dim);padding:0 2.4rem;position:relative}
.ticker-track span::after{content:"✦";position:absolute;right:-.4rem;color:var(--gold);font-size:.6em;top:.35em}
@keyframes tick{to{transform:translateX(-50%)}}
.cta-title{font-family:var(--display);font-weight:500;font-size:clamp(2.4rem,7vw,6.6rem);line-height:1.02;max-width:16ch;margin:0 auto}
.cta-sub{max-width:46ch;margin:1.8rem auto 0;color:#d9cfbb}
.btn-gold{position:relative;display:inline-flex;align-items:center;justify-content:center;margin-top:2.6rem;padding:1.15rem 2.4rem;background:var(--gold);color:var(--black);font-weight:700;letter-spacing:.06em;overflow:hidden;transition:transform .5s var(--ease-out),box-shadow .5s}
.btn-gold::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);animation:shine 4.5s var(--ease) infinite}
@keyframes shine{0%,55%{transform:translateX(-120%)}85%,100%{transform:translateX(120%)}}
.btn-gold span{position:relative}
.btn-gold:hover{transform:translateY(-2px);box-shadow:0 18px 50px -12px rgba(232,163,61,.6)}
.foot{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:clamp(80px,14vh,150px);padding-top:22px;border-top:1px solid var(--faint);font-size:.82rem;color:var(--dim);text-align:left}
.foot-links{display:flex;gap:1.4rem}
.foot-links a:hover{color:var(--ink)}

/* =========================================================
   SCENES
   ========================================================= */
.scene{position:fixed;inset:0;z-index:80;background:var(--black);overflow-y:auto;overscroll-behavior:contain}
.scene[hidden]{display:none}
.scene-inner{position:relative;z-index:3;min-height:100%;padding:90px var(--gutter) 60px;opacity:0;transition:opacity 1s}
.scene.live .scene-inner{opacity:1}
.scene-close{position:fixed;top:22px;right:var(--gutter);z-index:10;font-size:.9rem;letter-spacing:.08em;padding:8px 0;border-bottom:1px solid rgba(239,230,210,.3);opacity:0;transition:opacity .6s .6s,border-color .3s,color .3s}
.scene.live .scene-close{opacity:1}
.scene-close:hover{color:var(--gold);border-color:var(--gold)}
.scene-title{font-family:var(--display);font-weight:500;font-size:clamp(2rem,4.6vw,4rem);line-height:1.05}
.scene.leaving{animation:sceneOut .6s var(--ease) forwards}
@keyframes sceneOut{to{opacity:0;filter:brightness(2.5) blur(6px)}}

/* --- portfolio: screening room --- */
.beam{position:fixed;left:50%;top:-10vh;width:140vw;height:120vh;transform:translateX(-50%);background:conic-gradient(from 180deg at 50% 0%,transparent 160deg,rgba(246,207,124,.13) 172deg,rgba(246,207,124,.2) 180deg,rgba(246,207,124,.13) 188deg,transparent 200deg);opacity:0;z-index:1;pointer-events:none;mix-blend-mode:screen}
.scene-portfolio.live .beam{animation:beamOn 1.6s steps(1) forwards,beamFlick 3s 1.6s infinite}
@keyframes beamOn{0%{opacity:0}10%{opacity:.8}14%{opacity:0}30%{opacity:.9}34%{opacity:.1}50%,100%{opacity:1}}
@keyframes beamFlick{0%,100%{opacity:1}48%{opacity:.86}50%{opacity:.98}52%{opacity:.82}}
.beam-dust{position:absolute;inset:0;background-image:radial-gradient(1px 1px at 20% 30%,rgba(255,240,200,.7),transparent),radial-gradient(1px 1px at 60% 20%,rgba(255,240,200,.6),transparent),radial-gradient(1.5px 1.5px at 45% 60%,rgba(255,240,200,.5),transparent),radial-gradient(1px 1px at 52% 45%,rgba(255,240,200,.7),transparent),radial-gradient(1px 1px at 48% 80%,rgba(255,240,200,.6),transparent);background-size:300px 300px;animation:dust 20s linear infinite}
@keyframes dust{to{background-position:60px 300px}}
.sr{display:flex;flex-direction:column;gap:22px;max-width:1280px;margin:0 auto}
.sr-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.sr-tabs{display:flex;gap:4px;border:1px solid var(--faint);padding:4px}
.sr-tabs button{padding:.5rem 1.1rem;font-size:.88rem;letter-spacing:.06em;color:var(--dim);transition:background .4s,color .4s}
.sr-tabs button[aria-selected="true"]{background:var(--gold);color:var(--black)}
.screen{position:relative;aspect-ratio:16/9;width:min(100%,calc((100svh - 330px) * 16 / 9));min-width:min(100%,520px);margin:0 auto;background:#000;box-shadow:0 0 120px -20px rgba(246,207,124,.25),0 0 0 1px rgba(239,230,210,.08);overflow:hidden}
.screen-media{position:absolute;inset:0}
.screen-media video,.screen-media img{width:100%;height:100%;object-fit:contain;background:#000}
.screen-flash{position:absolute;inset:0;background:#fff3d6;opacity:0;pointer-events:none}
.screen.cut .screen-flash{animation:flash .55s ease-out}
@keyframes flash{0%{opacity:.85}100%{opacity:0}}
.screen.cut .screen-media{animation:gateWeave .55s steps(5)}
@keyframes gateWeave{0%{transform:translateY(-4%)}40%{transform:translateY(2%)}100%{transform:none}}
.screen-cap{position:absolute;left:16px;bottom:12px;font-family:var(--osd);font-size:22px;text-shadow:0 0 6px #000;z-index:2}
.filmstrip{display:flex;gap:0;overflow-x:auto;padding:16px 0;background:#000;scrollbar-width:thin;scrollbar-color:var(--faint) transparent;position:relative}
.filmstrip::before,.filmstrip::after{content:"";position:sticky;flex:none}
.frame{flex:none;position:relative;width:clamp(150px,16vw,220px);aspect-ratio:16/9;margin:0 6px;cursor:pointer;opacity:.55;transition:opacity .4s,transform .5s var(--ease-out)}
.frame:hover,.frame.on{opacity:1}
.frame.on{transform:translateY(-3px)}
.frame.on::after{content:"";position:absolute;inset:-3px;border:1px solid var(--gold)}
.frame img,.frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.frame span{position:absolute;left:6px;bottom:4px;font-family:var(--osd);font-size:16px;text-shadow:0 0 4px #000}
.filmstrip{background:#000 repeating-linear-gradient(90deg,transparent 0 10px,rgba(239,230,210,.55) 10px 18px,transparent 18px 28px) top/28px 8px repeat-x,#000 repeating-linear-gradient(90deg,transparent 0 10px,rgba(239,230,210,.55) 10px 18px,transparent 18px 28px) bottom/28px 8px repeat-x;background-color:#000}

/* --- about: iris in, slow push on the portrait --- */
.scene-about{background:#060504}
.iris{position:fixed;inset:0;z-index:6;pointer-events:none;background:#000;--r:0vmax;-webkit-mask:radial-gradient(circle at 50% 50%,transparent var(--r),#000 calc(var(--r) + 2px));mask:radial-gradient(circle at 50% 50%,transparent var(--r),#000 calc(var(--r) + 2px))}
@property --r{syntax:"<length>";inherits:false;initial-value:0vmax}
.scene-about.live .iris{animation:irisIn 1.5s var(--ease) forwards}
@keyframes irisIn{to{--r:110vmax}}
.ab-osd{position:fixed;inset:0;z-index:5;pointer-events:none;font-family:var(--osd);font-size:20px;color:rgba(239,230,210,.55)}
.ab-osd span{position:absolute;bottom:18px}.v-bl{left:var(--gutter)}.v-br{right:var(--gutter)}
.ab{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(30px,6vw,100px);align-items:center;max-width:1240px;margin:0 auto;padding-top:110px;min-height:100svh}
.ab-photo{position:relative;aspect-ratio:4/5;overflow:hidden;box-shadow:0 50px 120px -30px #000}
.ab-photo img{transform:scale(1.18);filter:sepia(.28) saturate(.85) contrast(1.12)}
.ab-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(6,5,4,.85)),radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.55))}
.scene-about.live .ab-photo img{animation:kenBurns 22s ease-out forwards}
@keyframes kenBurns{to{transform:scale(1.02) translateY(-1.5%)}}
.ab-photo-cap{position:absolute;left:16px;bottom:14px;z-index:2;font-style:italic;font-size:.82rem;color:var(--dim)}
.ab-quote{font-family:var(--display);font-weight:500;font-size:clamp(1.7rem,3.2vw,2.9rem);line-height:1.15;margin-bottom:1.8rem}
.ab-name{font-family:var(--display);font-size:1rem;letter-spacing:.2em;color:var(--gold)}
.ab-role{color:var(--dim);font-style:italic;margin:.2rem 0 1.8rem;font-size:.9rem}
.ab-body p{color:#ddd3bf;margin-bottom:1.1rem;max-width:56ch}
.ab-stats{display:flex;gap:2.6rem;margin:2rem 0 1.6rem;padding:1.2rem 0;border-top:1px solid var(--faint);border-bottom:1px solid var(--faint)}
.ab-stats dt{font-family:var(--display);font-size:2.2rem;line-height:1;color:var(--gold-2)}
.ab-stats dd{font-size:.78rem;color:var(--dim);font-style:italic;margin-top:.3rem}
.ab-cpps{font-family:var(--display);font-size:.8rem;letter-spacing:.16em;color:var(--ink);line-height:2}
.ab-cpps span+span::before{content:"✦";color:var(--gold);font-size:.55em;margin:0 1em;vertical-align:.2em}
.ab-cpps-label{font-size:.75rem;color:var(--dim);font-style:italic;margin-bottom:.2rem}
.scene-about [data-a]{opacity:0;transform:translateY(14px);filter:blur(8px)}
.scene-about.live [data-a]{animation:lineIn 1.3s var(--ease-out) forwards;animation-delay:calc(.9s + var(--a) * .16s)}
.scene-about.live .ab-photo{animation:fadeIn 1.6s .6s both}
/* --- contact: a letter on the desk --- */
.scene-contact{background:#0a0806 radial-gradient(ellipse at 50% 20%,rgba(138,74,24,.35),transparent 60%)}
.desk-lamp{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 60% 50% at 50% 30%,rgba(246,207,124,.12),transparent 70%);opacity:0;transition:opacity 1.6s}
.scene-contact.live .desk-lamp{opacity:1;animation:lamp 6s ease-in-out infinite 1.6s}
@keyframes lamp{50%{opacity:.82}}
.ct{max-width:760px;margin:0 auto;padding-top:80px}
.ct-head{text-align:center;min-height:2.3em;font-family:var(--display);font-weight:500;font-size:clamp(1.8rem,4.2vw,3.2rem);line-height:1.15;margin-bottom:2rem}
.ct-head .caret{display:inline-block;width:.06em;height:.9em;background:var(--gold);margin-left:.06em;vertical-align:-.08em;animation:blink .8s steps(2) infinite}
.letter{position:relative;color:#231c14;background:#efe3c8;padding:clamp(28px,5vw,64px) clamp(22px,5vw,64px) clamp(34px,5vw,56px);box-shadow:0 60px 120px -30px rgba(0,0,0,.95),0 0 0 1px rgba(0,0,0,.2),inset 0 0 120px rgba(120,80,30,.28);transform:translateY(70vh) rotate(3deg);opacity:0;font-family:var(--type);font-size:1.02rem;line-height:1.9}
.letter::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;mix-blend-mode:multiply;background:radial-gradient(circle at 12% 18%,rgba(140,90,30,.25),transparent 30%),radial-gradient(circle at 88% 80%,rgba(140,90,30,.22),transparent 34%),repeating-linear-gradient(0deg,rgba(80,50,20,.025) 0 1px,transparent 1px 3px)}
.letter::after{content:"";position:absolute;left:0;right:0;top:33%;height:1px;background:rgba(80,50,20,.12);box-shadow:0 1px 0 rgba(255,255,255,.35)}
.scene-contact.paper .letter{animation:paperIn 1.1s var(--ease-out) forwards}
@keyframes paperIn{0%{transform:translateY(70vh) rotate(3deg);opacity:1}70%{transform:translateY(-6px) rotate(-.6deg)}100%{transform:translateY(0) rotate(-.4deg);opacity:1}}
.lh{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid rgba(35,28,20,.25);padding-bottom:12px;margin-bottom:26px;font-size:.78rem;color:#6e5e48}
.lh b{font-family:var(--display);font-weight:600;font-size:1rem;letter-spacing:.24em;color:#231c14}
.typed{white-space:pre-wrap}
.typed .k{opacity:0}
.typed .k.on{opacity:1;animation:strike .12s ease-out}
@keyframes strike{0%{filter:blur(1px);transform:translateY(-1px)}100%{filter:none;transform:none}}
.lt{opacity:0;transform:translateY(6px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
.lt.on{opacity:1;transform:none}
.letter p{margin:0 0 .9rem}
.letter input,.letter textarea{font:inherit;color:#1a140e;background:transparent;border:0;border-bottom:1px dashed rgba(35,28,20,.45);outline:none;padding:0 .2em;transition:border-color .3s,background .3s}
.letter input{width:14em;max-width:100%}
.letter input:focus,.letter textarea:focus{border-bottom:1px solid #8e2216;background:rgba(255,255,255,.25)}
.letter textarea{display:block;width:100%;border:0;resize:vertical;line-height:1.9;padding:0;background:repeating-linear-gradient(transparent 0 calc(1.9em - 1px),rgba(35,28,20,.28) calc(1.9em - 1px) 1.9em);min-height:calc(1.9em * 4)}
.letter textarea::placeholder,.letter input::placeholder{color:#8f7d62;font-style:italic}
.chips{display:inline-flex;flex-wrap:wrap;gap:6px;vertical-align:middle}
.chips button{font-family:var(--type);font-size:.86rem;line-height:1.4;padding:.25rem .7rem;border:1px solid rgba(35,28,20,.4);color:#231c14;transition:all .3s}
.chips button:hover{border-color:#231c14;background:rgba(35,28,20,.06)}
.chips button[aria-pressed="true"]{background:#231c14;color:#efe3c8;border-color:#231c14}
.sign{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:1.6rem;flex-wrap:wrap}
.sign em{font-style:italic}
.seal{position:relative;width:104px;height:104px;border-radius:50%;flex:none;display:grid;place-items:center;text-align:center;color:#f3d9b8;background:radial-gradient(circle at 35% 30%,#c0412b,#8e2216 55%,#5e140b);box-shadow:0 6px 16px rgba(60,10,4,.45),inset 0 -4px 10px rgba(0,0,0,.35),inset 0 3px 6px rgba(255,180,150,.25);transition:transform .4s var(--ease-out),box-shadow .4s}
.seal::before{content:"";position:absolute;inset:9px;border-radius:50%;border:1px dashed rgba(243,217,184,.45)}
.seal span{font-family:var(--display);font-size:.72rem;letter-spacing:.14em;line-height:1.3}
.seal span b{display:block;font-size:1.5rem;letter-spacing:.06em}
.seal:hover{transform:rotate(-8deg) scale(1.05);box-shadow:0 12px 26px rgba(60,10,4,.55),inset 0 -4px 10px rgba(0,0,0,.35)}
.seal:disabled{opacity:.7}
.ps{margin-top:2rem;padding-top:1.2rem;border-top:1px solid rgba(35,28,20,.2);font-size:.95rem}
.mail-chip{position:relative;display:inline-flex;align-items:center;gap:.6rem;margin:.5rem .6rem .3rem 0;padding:.55rem 1rem;background:#231c14;color:#efe3c8;font-family:var(--type);font-size:.95rem;cursor:pointer;transition:transform .35s var(--ease-out)}
.mail-chip::before{content:"";position:absolute;inset:-5px;border:1px solid #8e2216;opacity:0;animation:ring 2.4s ease-out infinite 4s}
@keyframes ring{0%{opacity:.8;transform:scale(.96)}100%{opacity:0;transform:scale(1.12)}}
.mail-chip:hover{transform:translateY(-2px)}
.mail-chip .hint{font-size:.72rem;color:#c9a676;font-style:italic;border-left:1px solid rgba(239,227,200,.25);padding-left:.6rem}
.mail-chip.copied .hint{color:#9fd28a}
.mail-open{font-size:.88rem;color:#8e2216;border-bottom:1px solid rgba(142,34,22,.4);white-space:nowrap}
.mail-open:hover{border-color:#8e2216}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.form-err{color:#8e2216;font-size:.88rem;min-height:1.2em;margin:.6rem 0 0}
.stamp{position:absolute;right:10%;top:36%;z-index:3;padding:.5rem 1.1rem;border:3px double #8e2216;color:#8e2216;font-family:var(--display);font-weight:600;font-size:clamp(1.4rem,3vw,2.2rem);letter-spacing:.14em;text-align:center;line-height:1.1;transform:rotate(-14deg) scale(3);opacity:0;mix-blend-mode:multiply;pointer-events:none}
.stamp small{display:block;font-family:var(--type);font-size:.4em;letter-spacing:.1em;font-weight:400}
.letter.sent .stamp{animation:stamp .45s cubic-bezier(.5,1.8,.6,1) forwards}
@keyframes stamp{0%{opacity:0;transform:rotate(-14deg) scale(3)}100%{opacity:.88;transform:rotate(-14deg) scale(1)}}
.done-note{margin-top:1.4rem;font-style:italic}
/* ---------- responsive ---------- */
@media (max-width:1180px){
  .top{grid-template-columns:1fr auto;row-gap:10px;padding-top:16px}
  .cpp{grid-column:1/-1;grid-row:2}
  .menu{grid-column:2;grid-row:1}
}
@media (max-width:980px){
  .hero{grid-template-columns:1fr;padding-top:150px}
  .hero-frame-wrap{order:-1}
  .work-cols,.about-home,.ab{grid-template-columns:1fr}
  .ab{min-height:auto}
  .ab-photo{max-width:420px}
  .sound{position:relative;bottom:auto;margin:10px 0 0 auto}
}
@media (max-width:600px){
  .logline span:first-child{white-space:normal}
  .menu{gap:16px;font-size:.84rem}
  .top{grid-template-columns:1fr}
  .menu{grid-column:1;justify-self:center}
  .cpp-window{padding:0 6px}
  .cpp-track{flex-wrap:wrap;justify-content:center;animation:none;row-gap:2px}
  .cpp-track a{font-size:.68rem;letter-spacing:.1em}
  .cpp-track a+a::before{margin:0 .7em}
  .stats{gap:16px;width:100%;justify-content:space-between}
  .stat{flex-direction:column;align-items:flex-start;gap:.4rem}
  .stat dd{border-left:0;padding-left:0;white-space:normal;font-size:.72rem}
  .tiles{grid-template-columns:repeat(5,1fr);gap:4px}
  .sec-head{flex-direction:column;align-items:flex-start}
  .ab-stats{gap:1.4rem}
  .letter input{width:11em}
  .seal{width:92px;height:92px}
  .stamp{right:4%}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
}
.letter .ct-socials{display:flex;gap:1.1rem;margin-top:.9rem;font-size:.85rem;color:#6e5e48}.letter .ct-socials a:hover{color:#8e2216}

[hidden]{display:none!important}
