:root{
  --bg:#081016;
  --bg2:#0d1a24;
  --panel:#13202b;
  --panel2:#1b2a37;
  --line:#2b3c4b;
  --ink:#e9f3fa;
  --dim:#8fa3b3;
  --red:#ff4d4d;
  --gold:#ffcf4d;
  --green:#39d98a;
  --blue:#4cc2ff;
  --purple:#b388ff;
  --shadow:0 0 0 3px #000, 6px 6px 0 0 rgba(0,0,0,.55);
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:"Press Start 2P", ui-monospace, "Courier New", monospace;
  font-size:12px;
  line-height:1.5;
  image-rendering:pixelated;
}

.frame{max-width:1000px;margin:0 auto;padding:18px 16px 40px}

.scanlines{
  position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.16;
  background:repeating-linear-gradient(0deg, rgba(255,255,255,.08) 0 1px, transparent 1px 3px);
}

/* ---------- top bar ---------- */
.topbar{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  border:3px solid var(--line);background:var(--panel);
  padding:10px 14px;margin-bottom:18px;box-shadow:var(--shadow);
}
.logo{font-size:20px;letter-spacing:2px;color:var(--red)}
.logo span{color:var(--gold)}
.career-strip{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
.chip{
  border:2px solid var(--line);background:var(--bg2);padding:6px 9px;font-size:10px;
}
.chip.gold{color:var(--gold)}
.chip.danger{color:var(--red)}

/* ---------- screens ---------- */
.screen{border:3px solid var(--line);background:var(--panel);padding:20px;box-shadow:var(--shadow)}
h1{font-size:34px;margin:0 0 8px;color:var(--gold);letter-spacing:3px}
h2{font-size:16px;margin:0 0 12px;color:var(--blue)}
h3{font-size:14px;margin:0 0 8px}
p{margin:0 0 10px}
.hint{color:var(--dim);font-size:10px}

.btn{
  font-family:inherit;font-size:11px;color:var(--ink);
  background:var(--panel2);border:3px solid var(--line);
  padding:10px 14px;cursor:pointer;box-shadow:4px 4px 0 rgba(0,0,0,.6);
  transition:transform .08s, background .12s;
}
.btn:hover{background:#243545;transform:translate(-1px,-1px)}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 rgba(0,0,0,.6)}
.btn.big{background:var(--red);border-color:#8f2222;color:#fff;font-size:13px;padding:12px 18px}
.btn.big:hover{background:#ff6b6b}
.btn.ghost{background:transparent}
.btn.danger{background:#7a1f1f;border-color:#b33}

/* ---------- title ---------- */
.title-card{display:flex;flex-direction:column;gap:14px;align-items:center}
.title-art canvas{width:240px;height:140px;background:#0b141c;border:3px solid var(--line)}
.subtitle{color:var(--dim)}
.title-actions{display:flex;gap:10px;flex-wrap:wrap}
.controls-legend{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:6px}
.legend-row{border:2px solid var(--line);background:var(--bg2);padding:8px 10px;font-size:10px}
.legend-row b{color:var(--gold)}
.legend-row span{color:var(--dim)}

/* ---------- camp ---------- */
.camp-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:820px){.camp-grid{grid-template-columns:1fr}}
.panel{border:3px solid var(--line);background:var(--bg2);padding:14px}

.stat-list{display:grid;gap:8px}
.stat-row{display:flex;align-items:center;gap:10px;border:2px solid var(--line);padding:8px}
.stat-row .sname{color:var(--dim);font-size:10px}
.stat-row .sval{color:var(--gold);font-size:12px}
.pips{display:flex;gap:3px}
.pip{width:8px;height:8px;background:#2b3c4b}
.pip.on{background:var(--green)}

.condition-bar{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:10px}
.bar{flex:1;height:12px;background:#20303c;border:2px solid var(--line)}
.bar-fill{height:100%;background:var(--green);width:100%}
.bar-fill.low{background:var(--red)}

.injury-list{margin-top:10px;display:grid;gap:6px}
.injury{border:2px solid #7a1f1f;background:#2a1414;padding:6px 8px;font-size:10px;color:#ffb2b2}

.gym-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.gym-item{
  border:3px solid var(--line);background:var(--panel);padding:10px;cursor:pointer;
  box-shadow:4px 4px 0 rgba(0,0,0,.5);transition:transform .08s;
}
.gym-item:hover{transform:translate(-1px,-1px);background:#22303c}
.gym-item:active{transform:translate(2px,2px)}
.gym-item .gi-name{color:var(--gold);font-size:11px}
.gym-item .gi-desc{color:var(--dim);font-size:9px;margin-top:4px}
.gym-item .gi-lvl{color:var(--green);font-size:9px;margin-top:4px}
.gym-item.disabled{opacity:.45;cursor:not-allowed}

.shop-list{display:grid;gap:8px}
.shop-item{display:flex;justify-content:space-between;align-items:center;gap:8px;border:2px solid var(--line);padding:8px;font-size:10px}
.shop-item .price{color:var(--gold)}
.shop-item .lvl{color:var(--dim)}

.opp-card{border:3px solid var(--line);background:var(--panel);padding:12px;margin-bottom:12px}
.opp-card .opp-name{color:var(--red);font-size:13px}
.opp-card .opp-nick{color:var(--dim);font-size:10px}
.opp-card .opp-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:9px;color:var(--dim)}
.tale-side .opp-name{color:var(--gold);font-size:13px}
.tale-side .opp-nick{color:var(--dim);font-size:10px}
.tale-side .opp-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:9px;color:var(--dim)}

/* ---------- gym mini game ---------- */
.gym-wrap{display:flex;flex-direction:column;gap:12px}
#gymCanvas{width:100%;max-width:480px;aspect-ratio:8/5;height:auto;background:#0b141c;border:3px solid var(--line);box-shadow:var(--shadow)}
.gym-status{display:flex;gap:14px;font-size:11px;color:var(--gold)}
.gym-controls{display:flex;gap:8px;flex-wrap:wrap;font-size:10px;color:var(--dim)}
.keycap{border:2px solid var(--line);background:var(--bg2);padding:5px 8px;color:var(--ink)}

/* ---------- pre-fight ---------- */
.prefight{display:flex;flex-direction:column;gap:14px;align-items:center}
.tale-card{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.tale-side{border:3px solid var(--line);background:var(--bg2);padding:12px;min-width:220px}
.tale-vs{font-size:22px;color:var(--red)}
.tale-meta{display:flex;gap:10px;flex-wrap:wrap}
.meta-chip{border:2px solid var(--line);background:var(--bg2);padding:8px 10px;font-size:10px;color:var(--gold)}

/* ---------- fight ---------- */
#screen-fight{padding:12px;position:relative}
.fight-hud{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:10px}
.hud-side{border:3px solid var(--line);background:var(--bg2);padding:8px}
.hud-side.right{text-align:right}
.hud-name{font-size:11px;color:var(--gold)}
.hpbar{display:flex;gap:2px;margin-top:6px}
.hpseg{width:10px;height:12px;background:#2b3c4b}
.hpseg.on{background:var(--green)}
.hpseg.on.hurt{background:var(--red)}
.stbar{height:8px;background:#20303c;border:2px solid var(--line);margin-top:6px}
.stfill{height:100%;background:var(--blue);width:100%}
.hud-mini{font-size:9px;color:var(--dim);margin-top:6px}
.hud-center{border:3px solid var(--line);background:var(--bg2);padding:8px;text-align:center}
.hud-round{font-size:11px;color:var(--blue)}
.hud-clock{font-size:20px;color:var(--gold);margin-top:4px}
.hud-score{font-size:10px;color:var(--dim);margin-top:6px}
.gauge{height:14px;background:#20303c;border:2px solid var(--line);margin-top:8px;position:relative;overflow:hidden}
.gauge-zone{position:absolute;right:0;width:18%;top:0;bottom:0;background:rgba(57,217,138,.35)}
.gauge-needle{position:absolute;top:0;bottom:0;width:4px;background:var(--gold)}
#fightCanvas{width:100%;max-width:640px;aspect-ratio:16/9;height:auto;display:block;background:#0b141c;border:3px solid var(--line);box-shadow:var(--shadow)}
.fight-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.shot{
  font-family:inherit;font-size:10px;color:var(--ink);background:var(--panel2);
  border:3px solid var(--line);padding:8px 10px;cursor:pointer;box-shadow:3px 3px 0 rgba(0,0,0,.5);
}
.shot span{color:var(--gold);font-size:9px}
.shot:hover{background:#263746}
.shot:active{transform:translate(2px,2px)}
.shot.def{border-color:#3a5a70}
.shot.towel{border-color:#8f2222;color:#ffb2b2}

.corner-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(4,8,12,.85)}
.corner-card{border:3px solid var(--gold);background:var(--panel);padding:16px;max-width:420px;box-shadow:var(--shadow)}
.corner-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}

/* ---------- post ---------- */
.post-card{display:flex;flex-direction:column;gap:12px}
.post-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.post-stat{border:2px solid var(--line);background:var(--bg2);padding:8px;font-size:10px}
.post-stat b{color:var(--gold)}

.flash{animation:flash .35s ease-out}
@keyframes flash{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
