:root{
  --accent:#FF9F1C;
  --bg:#0A0A0A;
  --fg:#EDEBE6;
  --muted:#A19E96;
  --line:#2A2A28;
  --panel:#131312;
  --gx:clamp(16px,4vw,40px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:'Instrument Sans',system-ui,sans-serif;min-height:100vh;display:flex;flex-direction:column}
a{color:inherit;text-decoration:none}
a:hover{color:var(--accent)}
button{font:inherit;cursor:pointer}
img,video{display:block}
h1,h2,p{margin:0}
.mono{font-family:'JetBrains Mono',monospace;font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.muted{color:var(--muted)}
.accent{color:var(--accent)}

/* motion */
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes titlein{from{transform:translateY(105%)}to{transform:translateY(0)}}
@keyframes fillbar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes blink{50%{opacity:.15}}
@keyframes rise{from{opacity:0;transform:translateY(56px)}to{opacity:1;transform:none}}
@keyframes menuin{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:none}}
@supports (animation-timeline:view()){
  .reveal{animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 35%}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* nav */
.nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 32px;padding:20px var(--gx)}
.wordmark{font-weight:700;font-size:15px;letter-spacing:.22em}
.nav-actions{display:flex;align-items:center;gap:12px}
.btn-ghost{min-height:44px;padding:0 22px;background:transparent;color:var(--fg);border:1px solid var(--line)}
.btn{display:inline-flex;align-items:center;min-height:44px;padding:0 22px;background:var(--accent);color:#0A0A0A;font-weight:500;transition:background .25s,color .25s}
.btn:hover{background:var(--fg);color:#0A0A0A}
.btn-lg{min-height:56px;padding:0 32px;font-size:14px}

/* menu overlay */
.menu{position:fixed;inset:0;z-index:50;background:var(--bg);overflow:auto;animation:menuin .45s cubic-bezier(.2,.7,.2,1)}
.menu[hidden]{display:none}
.menu-top{display:flex;align-items:center;justify-content:space-between;padding:20px var(--gx)}
.menu-close{min-height:44px;padding:0 22px;background:transparent;color:var(--fg);border:1px solid var(--fg)}
.menu-list{padding:24px var(--gx);display:flex;flex-direction:column}
.menu-list:hover .mi:not(:hover){opacity:.3}
.mi{display:flex;align-items:baseline;gap:24px;padding:14px 0;transition:opacity .3s}
.mi .num{width:48px;font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--muted)}
.mi .mt{display:inline-block;font-weight:700;font-size:clamp(40px,8.3vw,120px);letter-spacing:-.04em;line-height:.95;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.mi:hover .mt{transform:translateX(24px)}
.mp{position:absolute;right:var(--gx);top:150px;width:440px;height:600px;overflow:hidden;border:1px solid var(--fg);background:var(--panel);opacity:0;transition:opacity .35s;pointer-events:none;display:flex;align-items:flex-end;padding:20px}
.mp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.mp span{position:relative}
.mi:hover .mp{opacity:1}
@media (max-width:760px){.mp{display:none}}

/* hero */
.hero{position:relative;overflow:hidden;margin:0 var(--gx);height:clamp(520px,51vw,740px);background:var(--panel);border:1px solid var(--line)}
.hero.tall{height:clamp(520px,54vw,780px)}
.hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.scrim{position:absolute;inset:0;background:rgba(10,10,10,.4)}
.hero-in{position:relative;height:100%;padding:28px;display:flex;flex-direction:column;justify-content:space-between}
.hero-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;color:var(--fg)}
.rec{color:var(--accent);animation:blink 1.6s steps(1) infinite}
.play-btn{align-self:center;display:inline-flex;align-items:center;justify-content:center;width:96px;height:96px;border:1px solid var(--fg);border-radius:50%;color:var(--fg);transition:background .25s,color .25s}
.play-btn:hover{background:var(--fg);color:#0A0A0A}
.hero-bottom{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px}
.titlewrap{overflow:hidden}
.titlewrap h1{animation:titlein 1.2s cubic-bezier(.2,.7,.2,1) backwards}
.hero-title{font-weight:700;font-size:clamp(40px,calc(13.1vw - 5px),184px);line-height:.9;letter-spacing:-.04em}
.hero-title.lead{font-size:clamp(32px,calc(12.6vw - 13px),168px);line-height:.95}
.hero-meta{display:flex;flex-direction:column;gap:8px;font-size:13px;padding-bottom:8px}
.hero-label{display:flex;flex-direction:column;gap:16px}

/* marquee */
.marq-wrap{margin-top:40px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;padding:18px 0}
.marq{display:flex;width:max-content;animation:marq 30s linear infinite}
.marq span{white-space:pre;font-weight:600;font-size:clamp(30px,3.9vw,56px);letter-spacing:-.03em;line-height:1}

/* sections */
.section{padding:120px var(--gx) 0;display:flex;flex-direction:column;gap:40px}
.section.big{padding-top:160px}
.sec-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px}
.h2{font-weight:600;font-size:clamp(34px,4.5vw,64px);letter-spacing:-.03em;line-height:1}
.world-head{padding:160px var(--gx) 0;display:flex;flex-wrap:wrap;gap:24px 40px;align-items:flex-end}
.world-head .h2{flex:1 1 320px}
.world-head p{flex:2 1 420px;max-width:640px;font-size:22px;line-height:1.45;color:var(--muted)}

/* tiles */
.grid{display:flex;flex-wrap:wrap;gap:16px}
.tile{position:relative;overflow:hidden;display:flex;flex-direction:column;min-width:0;padding:20px;background:var(--panel);border:1px solid var(--line);color:var(--fg);transition:opacity .35s,border-color .35s}
.tile:hover{border-color:var(--fg);color:var(--fg)}
.grid:hover .tile:not(:hover){opacity:.4}
.tile.ep{flex:1 1 240px;aspect-ratio:9/16}
.tile.ch{flex:1 1 240px;aspect-ratio:3/4}
.tile.ch.wide{flex:1 1 280px;padding:24px}
.tile.person{flex:1 1 140px;aspect-ratio:9/16;padding:16px}
.tile.wideshot{flex:1 1 360px;aspect-ratio:16/9}
.tile.locked{background:#0E0E0D}
.tbg{position:absolute;inset:0;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.tile:hover .tbg,.still:hover .tbg{transform:scale(1.07)}
.tbg img,.tbg video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tbg .dim{position:absolute;inset:0;background:rgba(10,10,10,.35)}
.tbg img.locked-img{opacity:.35}
.tbg.texture{background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 4px)}
.tin{position:relative;flex:1;display:flex;flex-direction:column;justify-content:space-between}
.tin.end{justify-content:flex-end}
.tile-row{display:flex;justify-content:space-between;align-items:center;color:var(--muted)}
.tile-info{display:flex;flex-direction:column;gap:10px}
.tile-title{font-weight:600;font-size:26px;letter-spacing:-.02em;line-height:1.1}
.tile-name{font-weight:600;font-size:34px;letter-spacing:-.02em;line-height:1.05}
.wide .tile-name{font-size:40px;letter-spacing:-.03em;line-height:1.02}
.tile-hook{font-size:15px;line-height:1.4;color:var(--muted)}
.wide .tile-hook{font-size:16px}
.play{opacity:0;transform:translateY(10px);transition:opacity .3s,transform .3s}
.tile:hover .play{opacity:1;transform:none}
.arr{display:inline-block;transition:transform .35s}
.tile:hover .arr,.next:hover .arr{transform:translateX(10px)}
.prog{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--accent);transform-origin:left;transform:scaleX(0)}
.tile:hover .prog{animation:fillbar 4s linear infinite}
@media (hover:none){.play{opacity:1;transform:none}.prog{animation:fillbar 4s linear infinite}}

/* world */
.band{margin:48px var(--gx) 0;position:relative;overflow:hidden;aspect-ratio:16/9;border:1px solid var(--line)}
.band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top}
.band span{position:absolute;left:20px;bottom:20px;color:var(--fg)}
.grid.flush{margin:16px var(--gx) 0}

/* cta + footer */
.cta{margin-top:160px;padding:120px var(--gx);border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start;gap:40px}
.cta h2{max-width:960px;font-weight:700;font-size:clamp(38px,6.7vw,96px);letter-spacing:-.04em;line-height:.95}
.cta.row{margin-top:140px;padding:100px var(--gx);flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:32px}
.cta.row h2{max-width:780px;font-size:clamp(34px,5vw,72px);line-height:.98}
.cta.noborder{border-top:0}
.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;padding:28px var(--gx) 40px;border-top:1px solid var(--line);color:var(--muted)}
.footer div{display:flex;flex-wrap:wrap;gap:8px 28px}

/* characters index */
.page-head{padding:100px var(--gx) 64px;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px 40px}
.page-title{font-weight:700;font-size:clamp(40px,calc(9.1vw + 20px),152px);line-height:.95;letter-spacing:-.04em}
.page-head p{max-width:360px;font-size:18px;line-height:1.45;color:var(--muted)}
.grid.pad{padding:0 var(--gx)}

/* character page */
.row-sec{padding:120px var(--gx) 0;display:flex;flex-wrap:wrap;gap:24px 40px}
.row-sec>.label{flex:1 1 220px;color:var(--muted)}
.row-sec>.body{flex:3 1 480px}
.bio{max-width:760px;font-size:clamp(22px,2.2vw,32px);line-height:1.3;letter-spacing:-.015em}
.stills{padding:120px var(--gx) 0;display:flex;flex-wrap:wrap;gap:16px}
.stills:hover .still:not(:hover){opacity:.4}
.still{position:relative;overflow:hidden;flex:1 1 320px;min-width:0;aspect-ratio:16/9;padding:16px;display:flex;align-items:flex-end;background:var(--panel);border:1px solid var(--line);color:var(--fg);transition:opacity .35s,border-color .35s}
.still:hover{border-color:var(--fg)}
.still .lab{position:relative}
.rows{display:flex;flex-direction:column}
.line-row{padding:28px 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 24px;transition:padding-left .4s cubic-bezier(.2,.7,.2,1)}
.line-row:hover{padding-left:24px}
.line-row .lt{font-weight:500;font-size:clamp(24px,2.8vw,40px);letter-spacing:-.025em;line-height:1.1;max-width:760px;transition:color .3s}
.line-row:hover .lt{color:var(--accent)}
.rel{padding:24px 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 32px;transition:padding-left .4s cubic-bezier(.2,.7,.2,1)}
.rel:hover{padding-left:24px}
.rel .rn{flex:1 1 200px;font-weight:600;font-size:28px;letter-spacing:-.02em}
.rel .rt{flex:1 1 140px;color:var(--accent)}
.rel .rd{flex:3 1 280px;font-size:17px;line-height:1.4;color:var(--muted)}
.rows-end{border-top:1px solid var(--line)}
.next{margin:140px var(--gx) 0;padding:32px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.next .big{font-weight:700;font-size:clamp(34px,5vw,72px);letter-spacing:-.035em;line-height:1}
