html{-webkit-text-size-adjust:100%}
body{margin:0}
img{max-width:100%}
[hidden]{display:none!important}

/* Layout: draw stage on top (one row of 5 per player), roster editor below with a tab per player */
:root{
  --bg:#eef0f5; --surface:#ffffff; --ink:#151a2b; --muted:#5e6580; --line:#d5d9e6;
  --accent:#d6283c; --accent-ink:#ffffff; --pick:#1f3fbf; --pick-soft:#e3e8fb; --gold:#e7a613;
  --display:"Dela Gothic One","Hiragino Kaku Gothic StdN","Yu Gothic",sans-serif;
  --body:"Zen Kaku Gothic New","Hiragino Sans","Yu Gothic UI","Meiryo",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#10131d; --surface:#1a1f2e; --ink:#eef0f7; --muted:#9aa1bb; --line:#2c3347;
  --accent:#ff4a5c; --accent-ink:#1a0508; --pick:#8fa6ff; --pick-soft:#232d52; --gold:#ffc43d; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#10131d; --surface:#1a1f2e; --ink:#eef0f7; --muted:#9aa1bb; --line:#2c3347;
  --accent:#ff4a5c; --accent-ink:#1a0508; --pick:#8fa6ff; --pick-soft:#232d52; --gold:#ffc43d; color-scheme:dark}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.6}
.wrap{max-width:1040px;margin:0 auto;padding-inline:16px;padding-block:28px 56px;display:flex;flex-direction:column;gap:28px}
h1{font-family:var(--display);font-weight:400;font-size:clamp(28px,6vw,44px);line-height:1.15;margin:0;letter-spacing:.01em;text-wrap:balance}
h1 em{font-style:normal;color:var(--accent)}
h2{font-family:var(--display);font-weight:400;font-size:20px;margin:0;text-wrap:balance}
.lead{margin:6px 0 0;color:var(--muted)}

/* Draw stage */
.stage{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:18px}
.stage-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.results{display:flex;flex-direction:column;gap:14px}
.prow{display:grid;grid-template-columns:8.5em minmax(0,1fr) auto;gap:12px;align-items:center}
.pname{font-weight:700;min-width:0;overflow-wrap:anywhere;line-height:1.3}
.pname small{display:block;font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:500}
.slots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.slot{min-width:0;min-height:74px;border-radius:10px;border:2px dashed var(--line);display:flex;flex-direction:column;justify-content:space-between;padding:7px 9px;background:var(--bg)}
.slot .no{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--muted);line-height:1}
.slot .nm{font-weight:700;font-size:clamp(12px,1.8vw,15px);line-height:1.3;word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.slot.filled{border:2px solid var(--pick);background:var(--pick-soft)}
.slot.filled .no{color:var(--pick)}
.slot.rolling .nm,.slot.rolling .no{opacity:.55}
.slot.land{animation:land .35s ease-out both}
@keyframes land{0%{transform:scale(.92)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
@media (max-width:640px){
  .prow{grid-template-columns:minmax(0,1fr) auto}
  .prow .slots{grid-column:1 / -1;grid-row:2}
  .slots{grid-template-columns:repeat(3,minmax(0,1fr))}
}

.btn{font:inherit;font-weight:700;border-radius:999px;padding:10px 20px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.btn:hover{border-color:var(--ink)}
.btn:focus-visible,.chip:focus-visible,.tab:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-family:var(--display);font-weight:400;font-size:18px;padding:12px 28px;letter-spacing:.04em}
.btn.primary:hover{filter:brightness(1.07)}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.btn.small{padding:6px 14px;font-size:13px;font-weight:500}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.note{font-size:13px;color:var(--muted);margin:0}
label.tog{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--muted);cursor:pointer}

.history{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:14px}
.history h3{margin:0;font-size:12px;letter-spacing:.1em;color:var(--muted);font-weight:500}
.history ol{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-size:13px}
.history li{display:flex;gap:10px;min-width:0}
.history li .t{font-family:var(--mono);color:var(--muted);flex:none}
.history li .names{min-width:0;display:flex;flex-direction:column}

/* Roster */
.roster{display:flex;flex-direction:column;gap:14px}
.tabs{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tab{font:inherit;font-size:14px;font-weight:700;border-radius:10px;padding:8px 14px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;display:flex;gap:8px;align-items:baseline;max-width:100%}
.tab .c{font-family:var(--mono);font-size:12px;color:var(--muted);font-weight:500}
.tab[aria-selected="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.tab[aria-selected="true"] .c{color:var(--bg);opacity:.75}
.tab.add{border-style:dashed;color:var(--muted);font-weight:500}
.editor{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:14px}
.editor-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.namefield{display:flex;flex-direction:column;gap:4px;min-width:0}
.namefield label{font-size:12px;color:var(--muted);letter-spacing:.06em}
input[type=text],input[type=search]{font:inherit;padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink);min-width:0;width:220px;max-width:100%}
input[type=text]{font-weight:700}
.counter{font-family:var(--mono);font-size:28px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}
.counter .of{font-size:16px;color:var(--muted)}
.counter.full{color:var(--pick)}
.tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.sample{background:var(--pick-soft);color:var(--ink);border-radius:10px;padding:10px 14px;font-size:13px;margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:8px}
.chip{font:inherit;text-align:left;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;min-width:0}
.chip .n{font-family:var(--mono);font-size:12px;color:var(--muted);width:2.6em;flex:none}
.chip .l{font-size:14px;font-weight:500;line-height:1.3;min-width:0;overflow-wrap:anywhere}
.chip:hover{border-color:var(--pick)}
.chip[aria-pressed="true"]{background:var(--pick);border-color:var(--pick);color:var(--surface)}
.chip[aria-pressed="true"] .n{color:var(--surface);opacity:.8}
.chip:disabled{opacity:.4;cursor:not-allowed}
.chip:disabled:hover{border-color:var(--line)}
.danger{color:var(--accent)}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:8px 16px;border-radius:999px;font-size:13px;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.show{opacity:1}
.backup{display:flex;flex-direction:column;gap:14px}
.bk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.bk-card{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px}
.bk-card h3{margin:0;font-size:15px}
textarea{font-family:var(--mono);font-size:12px;width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);resize:vertical;word-break:break-all}
textarea:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.confirm{background:var(--pick-soft);border:1px solid var(--pick);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.confirm p{margin:0;font-size:14px}
.btn.primary-s{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}
/* Fixed (always-picked) fighters */
.counts{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.fixcount{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--muted)}
.fixcount.on{color:var(--gold)}
.modebar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.modelabel{font-size:13px;color:var(--muted)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:var(--bg)}
.seg-btn{font:inherit;font-size:13px;font-weight:700;border:0;border-radius:999px;padding:6px 14px;background:transparent;color:var(--muted);cursor:pointer}
.seg-btn[aria-pressed="true"]{background:var(--pick);color:var(--surface)}
.seg-btn.fix[aria-pressed="true"]{background:var(--gold);color:#1f1500}
.seg-btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.chip.fixed,.chip.fixed[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:#1f1500}
.chip.fixed .n{color:#1f1500;opacity:.8}
.chip .star{margin-left:auto;flex:none;font-size:13px}
.slot.fixed{border-color:var(--gold)}
.slot.fixed .no{color:var(--gold)}
.slot .no .star{margin-left:4px}
/* Unlucky: a random "おまかせ" slot */
.unlucky-ctl{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.unlucky-ctl select{font:inherit;font-size:13px;padding:3px 8px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}
.unlucky-ctl select:disabled{opacity:.45}
.unlucky-ctl select:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.slot.omakase{border:2px solid var(--accent);background:repeating-linear-gradient(135deg,var(--bg) 0 8px,var(--surface) 8px 16px)}
.slot.omakase .no{color:var(--accent);font-family:var(--body);font-size:11px;font-weight:700;letter-spacing:.06em}
.slot.omakase .nm{color:var(--accent)}
/* Face icons in the draw results and the roster */
.slot .face{display:block;width:100%;max-width:76px;height:auto;aspect-ratio:1;object-fit:contain;margin:4px auto}
.slot.rolling .face{opacity:.55}
.chip .face{display:block;flex:none;width:32px;height:32px;object-fit:contain}
.chip:has(.face){gap:6px}
.chip:has(.face) .n{width:2.2em}
/* View switch: gacha / bingo */
header{display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.view{display:flex;flex-direction:column;gap:28px;min-width:0}
.viewtabs .seg-btn{font-size:14px;padding:8px 18px}
/* Beam bingo */
.bingo-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.bingo-card{min-width:0;border:1px solid var(--line);border-radius:14px;padding:12px;background:var(--bg);display:flex;flex-direction:column;gap:10px}
.bingo-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.bingo-card-head h3{margin:0;font-size:16px;min-width:0;overflow-wrap:anywhere}
.bingo-status{flex:none;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--muted)}
.bingo-status.on{font-family:var(--body);font-weight:700;color:var(--ink)}
.bingo-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.bingo-cell{font:inherit;min-width:0;min-height:76px;padding:5px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;cursor:pointer}
.bingo-cell .face{display:block;width:100%;max-width:64px;height:auto;aspect-ratio:1;object-fit:contain}
button.bingo-cell:hover{border-color:var(--pick)}
.bingo-cell:focus-visible{outline:3px solid var(--gold);outline-offset:1px}
.bingo-cell.empty{border-style:dashed;background:transparent;cursor:default}
.bingo-cell .nm{font-size:clamp(10px,1.3vw,13px);font-weight:700;line-height:1.25;overflow-wrap:anywhere}
.bingo-cell.marked{background:var(--pick);border-color:var(--pick);color:var(--surface)}
.bingo-cell.line{background:var(--gold);border-color:var(--gold);color:#1f1500}
.note.warn{color:var(--accent)}
@media (max-width:760px){
  .bingo-cards{grid-template-columns:minmax(0,1fr)}
  .bingo-cell .nm{font-size:clamp(10px,2.5vw,14px)}
}
.team-fields{display:flex;flex-wrap:wrap;gap:12px;min-width:0}
input[type=number]{font:inherit;font-weight:700;padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink);width:110px;max-width:100%}
.chip.ban[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.chip.ban[aria-pressed="true"] .n{color:var(--accent-ink);opacity:.8}
.chip.ban[aria-pressed="true"] .l{text-decoration:line-through}
.chip.ban:hover{border-color:var(--accent)}
@media (prefers-reduced-motion:reduce){.slot.land{animation:none}.toast{transition:none}}
