/* Ironstrike brand tokens (copied from ironstrike-ai/index.html). Zero dependencies. */
:root{--bg:#0a0a0b;--panel:#141416;--steel-line:#38393e;--text:#eae8e4;--dim:#9a9a9f;--ember:#f5821f;--ember-bright:#ff9e42}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;min-height:100vh;display:flex;flex-direction:column}
h1{font-size:2rem;line-height:1.15;margin:0 0 8px}
p{margin:0 0 12px}
a{color:var(--ember-bright)}
.lede{color:var(--dim)}
button,.btn{min-height:44px;min-width:44px;padding:10px 20px;font:inherit;font-weight:600;color:#0a0a0b;background:var(--ember);border:0;border-radius:8px;cursor:pointer}
button:focus-visible,a:focus-visible{outline:3px solid var(--ember-bright);outline-offset:2px}
.is-footer{border-top:1px solid var(--steel-line);color:var(--dim);font-size:.875rem;padding:16px;max-width:760px;margin:0 auto;width:100%}
.is-footer p{margin:0 0 8px}

:root{--steel:#2c2d31;--red:#7a1d0e;--hot:#fff4e0;--glow:#2c2d31;--g:0;--panel2:#1a1a1d}
h2{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:0 0 8px}
.dim{color:var(--dim)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.app{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:8px 12px 16px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"play";gap:12px}
.left,.log{display:none}
.rside{display:contents}
.play{grid-area:play;display:flex;flex-direction:column;gap:8px;min-width:0}
.hud{display:flex;align-items:center;justify-content:space-between;gap:12px;height:48px;padding:0 4px}
.m{display:flex;flex-direction:column;line-height:1.1}.m b{font-size:1.35rem;font-variant-numeric:tabular-nums}
.k{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.pips{display:flex;gap:8px;font-size:1.4rem;color:var(--ember)}.pips .x{color:var(--dim)}
.stage{position:relative;height:calc(100svh - 76px);min-height:440px;max-height:760px;background:var(--panel);border:1px solid var(--steel-line);border-radius:14px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;cursor:pointer}
.stage.nudge{animation:nudge .12s linear}
@keyframes nudge{0%{transform:translate(0,0)}30%{transform:translate(3px,-3px)}70%{transform:translate(-3px,2px)}100%{transform:translate(0,0)}}
.bar{position:absolute;left:50%;bottom:16%;width:clamp(64px,22vw,96px);height:62%;transform:translateX(-50%);background:var(--bg);border:2px solid var(--steel-line);border-radius:10px;box-shadow:0 0 calc(var(--g)*44px) var(--glow)}
.fill{position:absolute;inset:0;border-radius:8px;background:var(--glow);transform:scaleY(0);transform-origin:50% 100%}
.band{position:absolute;left:-14px;right:-14px;border-left:3px solid var(--hot);border-right:3px solid var(--hot);background:rgba(255,158,66,.14);pointer-events:none}
.tk{position:absolute;left:-26px;right:-26px;height:0;border-top:3px solid var(--hot);transform:translateY(50%);pointer-events:none}
.ring{position:absolute;left:-22px;right:-22px;height:44px;margin-bottom:-22px;border:3px dashed var(--hot);border-radius:50%;display:none}
body.calm .ring.on{display:block}
.stage.cold .fill,.stage.burnt .fill{background:var(--steel)}
canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pop{position:absolute;left:calc(50% + clamp(54px,18vw,80px));bottom:50%;font-weight:800;font-size:1.15rem;line-height:1.2;white-space:pre;opacity:0;pointer-events:none;color:var(--hot)}
.pop.on{opacity:1;animation:pop .6s ease-out forwards}
@keyframes pop{from{transform:translateY(8px);opacity:1}to{transform:translateY(-26px);opacity:0}}
body.calm .pop.on{animation:none;opacity:1}
.pop.miss{color:var(--dim)}
.cue{position:absolute;left:0;right:0;bottom:5%;text-align:center;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);pointer-events:none}
.cue.wait{color:var(--text)}
body:not(.calm) .cue.wait{animation:wait .25s ease-out}
@keyframes wait{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1)}}
.stage[data-p=rise] .cue{color:var(--ember-bright)}
.flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.flash.on{animation:fl .18s ease-out}
@keyframes fl{from{opacity:.5}to{opacity:0}}
.ov{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px;text-align:center;background:rgba(10,10,11,.9);overflow:auto;cursor:default}
.ov[hidden],.result[hidden]{display:none}
.ov h1{font-size:2.6rem;margin:0}.ov .lede{font-size:1.1rem;margin:0}
.how{max-width:30ch;color:var(--dim);font-size:.95rem;margin:0}
.big-t{font-size:1.8rem;font-weight:800;margin:0}
.big{min-width:180px;font-size:1.15rem}
button.quiet{background:none;color:var(--ember-bright);text-decoration:underline;font-weight:500}
button.tg,#share{background:var(--panel2);color:var(--text);border:1px solid var(--steel-line);font-weight:500}
button.tg[aria-pressed=true]{border-color:var(--ember);color:var(--ember-bright)}
button:disabled{opacity:.6;cursor:default}
.tgs{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.rtg{display:none;margin-top:4px}
.result{grid-area:play;z-index:5;align-self:stretch;background:rgba(10,10,11,.96);border:1px solid var(--steel-line);border-radius:14px;padding:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;margin-top:56px;overflow:auto}
.result h2{font-size:1.3rem;color:var(--text);text-transform:none;letter-spacing:0;margin:0}
.rscore{font-size:3rem;font-weight:800;margin:0;color:var(--ember-bright);font-variant-numeric:tabular-nums}
.result p{margin:0}.btns{display:flex;flex-direction:column;gap:8px;align-items:center;margin:10px 0 4px;flex-shrink:0}.btns button{flex-shrink:0}
#sharebox{width:100%;max-width:320px;background:var(--bg);color:var(--text);border:1px solid var(--steel-line);border-radius:8px;padding:8px;font:inherit;user-select:text;-webkit-user-select:text}
.panel{background:var(--panel);border:1px solid var(--steel-line);border-radius:14px;padding:16px}
.panel p{margin:0 0 10px}
ol{margin:0 0 14px;padding:0;list-style:none;font-size:.95rem;font-variant-numeric:tabular-nums}li{padding:3px 0;border-bottom:1px solid var(--panel2)}li.best{color:var(--ember-bright)}
@media (min-width:820px){
  .app{grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"play rside" "play left";grid-template-rows:auto 1fr;align-items:start;padding:20px 24px}
  .left,.log{display:block}.left{grid-area:left}
  .rside{display:flex;flex-direction:column;gap:12px;grid-area:rside}
  .result{grid-area:auto;margin-top:0;background:var(--panel);align-self:auto}
  .stage{height:78vh;min-height:520px;max-height:760px}
  .bar{height:64%;bottom:15%}.ov{background:rgba(10,10,11,.8)}
  .tgs{justify-content:flex-start}
  .ov .tgs{display:none}
}
@media (min-width:1440px){
  .app{grid-template-columns:280px minmax(0,1fr) 320px;grid-template-areas:"left play rside";grid-template-rows:auto}
  .rside{display:flex}.left{align-self:start}
}
@media (max-height:450px) and (orientation:landscape){
  .app{grid-template-columns:minmax(0,1fr);grid-template-areas:"play";grid-template-rows:auto;align-items:stretch;padding:8px 12px 16px}
  .left,.log{display:none}.rside{display:contents}
  .play{flex-direction:row-reverse}.hud{flex-direction:column;align-items:flex-start;justify-content:center;height:auto;width:130px}
  .stage{flex:1;min-width:0;height:calc(100svh - 24px);min-height:0;max-height:none}.bar{bottom:12%;height:76%}.ov{gap:6px;padding:10px;background:rgba(10,10,11,.9)}.ov h1{font-size:1.8rem}.how{display:none}
  .result{grid-area:play;margin-top:0;background:rgba(10,10,11,.96);align-self:stretch}
  .tgs{justify-content:center}.ov .tgs,.rtg{display:flex}
  .result{padding:10px 16px;gap:2px}.rscore{font-size:2.2rem}.btns{flex-direction:row;flex-wrap:wrap;justify-content:center;margin:6px 0 2px}
}
@media (max-width:819px){.rtg{display:flex}}
body[data-phase=idle] .band,body[data-phase=idle] .tk{display:none}
@media (max-width:819px){body[data-phase=over] .band,body[data-phase=over] .tk{display:none}}
