@font-face{font-family:'Anton';src:url('assets/fonts/Anton.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('assets/fonts/SpaceGrotesk.woff2') format('woff2');font-weight:300 700;font-display:swap}

:root{
  --ink:#0a0705;
  --ink2:#120c09;
  --panel:rgba(12,8,6,.66);
  --panel2:rgba(10,7,5,.82);
  --line:rgba(255,231,206,.16);
  --line2:rgba(255,231,206,.30);
  --cream:#f3e9dc;
  --muted:#bda998;
  --accent:#ff6a1a;
  --accent2:#ffb15c;
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:var(--ink);overflow:hidden;color:var(--cream);
  font-family:'Space Grotesk',system-ui,sans-serif;overscroll-behavior:none}
img{display:block}
#app{position:fixed;inset:0;overflow:hidden;background:var(--ink)}
#stage{position:absolute;inset:0;transition:filter .5s ease}
#stage canvas{display:block;width:100%;height:100%;touch-action:none}

.display{font-family:'Anton',Impact,sans-serif;font-weight:400;letter-spacing:.01em;line-height:.86;text-transform:uppercase}
.card{background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.btn{display:block;width:100%;border:1px solid var(--line2);background:transparent;color:var(--cream);
  font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:12px;letter-spacing:.16em;
  text-transform:uppercase;padding:14px 16px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#150a04}
.btn.primary:active{background:var(--accent2)}
.btn.ghost:hover{border-color:var(--line2);background:rgba(255,255,255,.05)}
.btn+.btn{margin-top:8px}

/* ---------- HUD ---------- */
#hud{position:absolute;inset:0;pointer-events:none;z-index:5;
  font-family:'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.1em}
#topbar{position:absolute;top:calc(var(--safe-t) + 10px);left:10px;right:10px;display:flex;gap:8px;align-items:flex-start}
#lvbadge{width:58px;height:58px;flex:0 0 58px;background:var(--ink2);border:1px solid var(--line2);
  display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.lvtiny{font-size:9px;color:var(--muted);letter-spacing:.18em;margin-bottom:1px}
#lvnum{font-family:'Anton',Impact,sans-serif;font-size:30px;color:var(--cream);transition:transform .18s}
#lvnum.pop{transform:scale(1.35)}
#xpcol{flex:1;min-width:0;padding-top:2px}
#xptrack{position:relative;height:26px;background:rgba(0,0,0,.58);border:1px solid var(--line);overflow:hidden}
#xpfill{position:absolute;inset:0 auto 0 0;width:0%;background:var(--accent);
  transition:width .18s linear,filter .3s;filter:brightness(1)}
#xptrack.swell{animation:swell .22s ease}
@keyframes swell{50%{transform:scaleY(1.28)}}
#xpseg{position:absolute;top:0;bottom:0;left:33.33%;width:1px;background:rgba(0,0,0,.35);box-shadow:66.66vw 0 0 rgba(0,0,0,.35)}
#xptext{margin-top:4px;font-size:9px;color:var(--muted);letter-spacing:.16em}
#stats{width:112px;flex:0 0 112px;background:var(--panel2);border:1px solid var(--line);padding:7px 8px}
.strow{display:flex;justify-content:space-between;align-items:baseline;font-size:9px;line-height:1.7;color:var(--muted)}
.strow b{font-size:12px;color:var(--cream);font-weight:700;letter-spacing:.04em}
.strow b.up{color:var(--accent);animation:up .5s ease}
@keyframes up{0%{transform:translateY(6px);opacity:0}100%{transform:none;opacity:1}}
#lineage{position:absolute;left:50%;bottom:calc(var(--safe-b) + 8px);transform:translateX(-50%);
  display:flex;align-items:flex-end;gap:3px;padding:5px 7px;background:rgba(9,6,4,.55);border:1px solid var(--line)}
#lineage img{height:27px;width:auto;opacity:.20;filter:grayscale(1);transition:opacity .4s,filter .4s}
#lineage img.on{opacity:1;filter:sepia(1) saturate(4) hue-rotate(-12deg) brightness(1.85)}
#nowplaying{position:absolute;left:12px;bottom:calc(var(--safe-b) + 50px);font-size:9px;color:var(--muted);
  max-width:46vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#nowplaying .note{color:var(--accent);margin-right:5px}
#hint{position:absolute;left:50%;bottom:calc(var(--safe-b) + 74px);transform:translateX(-50%);
  font-size:10px;letter-spacing:.18em;color:rgba(243,233,220,.72);transition:opacity .6s;white-space:nowrap}
#hint.gone{opacity:0}
#pauseBtn{position:absolute;right:12px;bottom:calc(var(--safe-b) + 46px);pointer-events:auto;
  width:38px;height:38px;background:var(--panel2);border:1px solid var(--line);color:var(--cream);
  font-size:12px;letter-spacing:.1em;cursor:pointer}

/* ---------- screens ---------- */
.screen{position:absolute;inset:0;z-index:20;display:none;pointer-events:none;overflow:hidden}
.screen.on{display:block;pointer-events:auto}
.scrim{position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(10,7,5,.86) 0%,rgba(10,7,5,.25) 32%,rgba(10,7,5,.35) 55%,rgba(10,7,5,.94) 100%)}
.scrim.solid{background:rgba(8,5,3,.82);backdrop-filter:blur(4px)}
.bghero{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center}
.bghero img{height:86%;width:auto;max-width:96%;object-fit:contain;object-position:bottom center;
  filter:drop-shadow(0 0 60px rgba(255,90,20,.28))}
.bghero.dim img{opacity:.6}

/* start */
.start-top{position:absolute;left:20px;right:20px;top:calc(var(--safe-t) + 26px);z-index:2}
.kicker{font-size:9px;letter-spacing:.28em;color:var(--accent2);text-transform:uppercase;margin-bottom:8px}
h1{font-size:clamp(58px,17vw,150px);letter-spacing:-.015em;text-shadow:0 2px 30px rgba(0,0,0,.6)}
.sub{margin-top:10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(243,233,220,.8);max-width:30ch}
.start-bottom{position:absolute;left:12px;right:12px;bottom:calc(var(--safe-b) + 12px);z-index:3;
  display:flex;gap:10px;align-items:stretch}
.stages-card{flex:1;min-width:0;padding:12px 12px 10px}
.stages-card h2{font-size:13px;letter-spacing:.14em;margin-bottom:10px;color:var(--cream)}
.stages{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.stage{min-width:0;text-align:center}
.stage img{height:42px;width:auto;max-width:100%;object-fit:contain;margin:0 auto 4px;filter:drop-shadow(0 0 10px rgba(255,106,26,.35))}
.stage .lv{display:block;font-size:8px;letter-spacing:.14em;color:var(--accent2)}
.stage .nm{display:block;font-size:7px;letter-spacing:.06em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.run-card{width:210px;flex:0 0 210px;padding:12px;display:flex;flex-direction:column;justify-content:center}
.runrow{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;
  font-size:9px;letter-spacing:.14em;color:var(--muted)}
.runrow b{font-family:'Anton',Impact,sans-serif;font-size:26px;color:var(--cream);letter-spacing:0}
.run-card .btn{margin-top:6px}

/* evolution */
#evolve{z-index:30;display:none}
#evolve.on{display:flex;align-items:center;justify-content:center}
#evolve .drain{position:absolute;inset:0;background:radial-gradient(60% 60% at 50% 50%,rgba(10,7,5,.25),rgba(10,7,5,.9));
  opacity:0;transition:opacity .5s}
#evolve.reveal .drain{opacity:1}
.evhero{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  opacity:0;transform:scale(.86);transition:opacity .5s,transform .7s cubic-bezier(.2,.8,.2,1)}
.evhero img{height:74%;width:auto;max-width:100%;object-fit:contain;
  filter:drop-shadow(0 0 90px rgba(255,106,26,.75)) drop-shadow(0 0 24px rgba(255,177,92,.55))}
#evolve.reveal .evhero{opacity:1;transform:scale(1)}
.evrings{position:absolute;left:50%;top:50%;width:min(80vw,540px);aspect-ratio:1;transform:translate(-50%,-50%);
  border-radius:50%;box-shadow:0 0 0 1px rgba(255,106,26,.5),0 0 120px 20px rgba(255,106,26,.25) inset;opacity:0;transition:opacity .6s,transform 1s}
#evolve.reveal .evrings{opacity:1;transform:translate(-50%,-50%) scale(1.2)}
#evcard{position:absolute;left:0;right:0;top:58%;transform:translateY(-50%) scaleY(.2);opacity:0;
  background:var(--accent);color:#150a04;text-align:center;padding:14px 16px 16px;
  transition:opacity .18s,transform .38s cubic-bezier(.2,.9,.2,1.3)}
#evolve.card #evcard{opacity:1;transform:translateY(-50%) scaleY(1)}
.evkicker{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:11px;letter-spacing:.5em;margin-bottom:2px}
#evname{font-size:clamp(40px,11vw,96px);letter-spacing:.02em}
.evform{font-size:9px;letter-spacing:.42em;font-weight:700;margin-top:4px;opacity:.75}

/* over */
.over-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:14px;z-index:3}
.over-card{width:100%;max-width:520px;padding:18px}
.over-card h2{font-size:26px;letter-spacing:.06em;margin-bottom:14px}
.over-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px;margin-bottom:14px}
.over-stat>span{display:block;font-size:8px;letter-spacing:.16em;color:var(--muted);margin-bottom:4px}
.over-stat b{font-family:'Anton',Impact,sans-serif;font-size:32px;line-height:1;color:var(--cream)}
.bigrow{display:flex;align-items:center;gap:8px}
.newbest{font-style:normal;font-size:8px;font-weight:700;letter-spacing:.12em;background:var(--accent);
  color:#150a04;padding:3px 5px;display:none}
.newbest.show{display:inline-block}
.lineage.big{display:flex;justify-content:center;gap:6px;padding:8px 6px;border:1px solid var(--line);
  background:rgba(0,0,0,.3);margin-bottom:14px}
.lineage.big img{height:38px;width:auto;opacity:.22;filter:grayscale(1)}
.lineage.big img.on{opacity:1;filter:sepia(1) saturate(4) hue-rotate(-12deg) brightness(1.85)}
.over-btns{display:flex;gap:8px}
.over-btns .btn{margin:0}

/* pause + help */
#pause,#help{display:none}
#pause.on,#help.on{display:flex;align-items:center;justify-content:center;padding:16px}
.pause-card,.help-card{width:100%;max-width:340px;padding:20px;z-index:3}
.pause-card h2,.help-card h2{font-size:26px;margin-bottom:16px}
.help-card{max-width:420px}
.help-card p{font-size:12px;line-height:1.65;color:rgba(243,233,220,.86);margin-bottom:10px}
.help-card p b{color:var(--accent2)}
.help-card .btn{margin-top:14px}

#flash{position:absolute;inset:0;background:var(--accent);opacity:0;pointer-events:none;z-index:9;mix-blend-mode:screen}
#pulse{position:absolute;inset:0;pointer-events:none;z-index:9;opacity:0;
  box-shadow:inset 0 0 130px 20px rgba(255,106,26,.8)}

@media (max-width:520px){
  .start-top{left:14px;right:14px;top:calc(var(--safe-t) + 18px)}
  .start-bottom{flex-direction:column;left:10px;right:10px;gap:8px}
  .run-card{width:auto;flex:0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:0 12px;padding:10px 12px}
  .run-card .runrow{margin:0;flex-direction:column;align-items:flex-start;gap:2px}
  .run-card .runrow b{font-size:24px}
  .run-card .btn{grid-column:1/-1;margin-top:8px}
  .run-card #helpBtn{display:none}
  .stages-card{padding:10px}
  .stage img{height:36px}
  .stage .nm{display:none}
  .bghero img{height:74%}
  #stats{width:96px;flex:0 0 96px}
  .over-grid{grid-template-columns:1fr 1fr}
  .over-stat:first-child{grid-column:1/-1}
}
@media (max-height:430px) and (orientation:landscape){
  .start-top{top:calc(var(--safe-t) + 10px)}
  h1{font-size:clamp(40px,9vw,84px)}
  .sub{display:none}
  .start-bottom{bottom:calc(var(--safe-b) + 8px)}
  .stages-card{display:none}
  .run-card{width:100%;flex:1;flex-direction:row;align-items:center;gap:14px;display:flex}
  .run-card .runrow{flex:1;margin:0;flex-direction:column;align-items:flex-start;gap:2px}
  .run-card .btn{width:auto;flex:0 0 auto;margin:0}
  .run-card .btn+.btn{display:none}
  #hud{--safe-b:0px}
  #lineage{bottom:4px;padding:3px 5px}
  #lineage img{height:20px}
  #hint{bottom:56px}
  #nowplaying{display:none}
  #pauseBtn{bottom:32px;width:32px;height:32px}
}
#app:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:4;
  box-shadow:inset 0 0 140px 34px rgba(0,0,0,.55)}
