:root{
  --bg:#0f1020;
  --bg2:#1a1b33;
  --card:#22243f;
  --card2:#2b2d4d;
  --text:#f4f1e8;
  --muted:#a7a9c4;
  --gold:#ffcf5c;
  --gold-d:#e0a92b;
  --red:#ff5d6c;
  --green:#4ade80;
  --line:rgba(255,255,255,.12);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(1000px 600px at 50% -10%, #33305e 0%, transparent 60%),
    var(--bg);
  color:var(--text);
  font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",system-ui,-apple-system,sans-serif;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

/* ---------- 上部バー ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 20px;border-bottom:1px solid var(--line);
  background:rgba(15,16,32,.7);backdrop-filter:blur(8px);
  position:sticky;top:0;z-index:10;flex-wrap:wrap;
}
.topbar h1{font-size:20px;margin:0;letter-spacing:.04em}
.topbar-right{display:flex;align-items:center;gap:10px}
.badge{
  background:var(--gold);color:#2a1e00;font-weight:800;
  padding:6px 14px;border-radius:999px;font-size:14px;
}

main{max-width:820px;margin:0 auto;padding:24px 16px 80px}

/* ---------- カード ---------- */
.card{
  background:linear-gradient(180deg,var(--card2),var(--card));
  border:1px solid var(--line);
  border-radius:20px;
  padding:28px 24px;
  margin-bottom:18px;
  box-shadow:0 18px 40px rgba(0,0,0,.35);
}
.step{color:var(--gold);font-weight:800;letter-spacing:.16em;font-size:12px;margin:0 0 6px}
h2{font-size:26px;margin:0 0 8px;line-height:1.35}
h3.side-title{font-size:16px;margin:18px 0 10px;color:var(--gold)}
.lead{color:var(--muted);margin:0 0 20px;line-height:1.7;font-size:15px}

.hidden{display:none !important}

/* ---------- 入力 ---------- */
.input-xl{
  width:100%;font-size:22px;padding:16px 18px;border-radius:14px;
  border:2px solid var(--line);background:#151731;color:var(--text);
  outline:none;
}
.input-xl:focus{border-color:var(--gold)}

.chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}
.chip{
  background:#151731;border:1px solid var(--line);color:var(--muted);
  border-radius:999px;padding:8px 14px;font-size:14px;cursor:pointer;
}
.chip:hover{border-color:var(--gold);color:var(--gold)}

/* ---------- ボタン ---------- */
.btn{
  font-family:inherit;font-size:16px;font-weight:700;
  border-radius:12px;padding:13px 22px;border:1px solid transparent;
  cursor:pointer;transition:transform .06s ease, filter .15s ease;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(180deg,var(--gold),var(--gold-d));color:#2a1e00}
.btn-primary:hover{filter:brightness(1.07)}
.btn-accent{background:#3d5afe;color:#fff}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--muted)}
.btn-ghost:hover{color:var(--text);border-color:var(--gold)}
.btn-sm{font-size:13px;padding:8px 14px}
.btn-big{font-size:22px;padding:18px 46px;border-radius:16px}
.btn-round{
  width:52px;height:52px;border-radius:50%;font-size:26px;
  background:#151731;border:1px solid var(--line);color:var(--text);
}
.btn-mic{background:#151731;border:1px solid var(--line);color:var(--text)}
.btn-mic.recording{background:var(--red);border-color:var(--red);color:#fff;animation:pulse 1.1s infinite}
@keyframes pulse{50%{filter:brightness(1.25)}}

.row-end{display:flex;justify-content:flex-end;margin-top:22px}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:22px}
.row-center{display:flex;justify-content:center;gap:12px;margin-top:22px;flex-wrap:wrap}

/* ---------- 人数カウンター ---------- */
.counter{display:flex;align-items:center;justify-content:center;gap:24px;margin:10px 0 24px}
.counter-value{font-size:44px;font-weight:800;color:var(--gold);min-width:110px;text-align:center}
.counter-value small{font-size:18px;color:var(--muted);margin-left:4px}

.name-list{display:flex;flex-direction:column;gap:10px}
.name-row{display:flex;align-items:center;gap:12px}
.name-row .num{
  width:34px;height:34px;flex:0 0 34px;border-radius:50%;
  background:var(--gold);color:#2a1e00;font-weight:800;
  display:flex;align-items:center;justify-content:center;font-size:15px;
}
.name-row input{
  flex:1;font-size:18px;padding:12px 14px;border-radius:12px;
  border:2px solid var(--line);background:#151731;color:var(--text);outline:none;
}
.name-row input:focus{border-color:var(--gold)}

/* ---------- 順番リスト ---------- */
.order-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.order-item{
  display:flex;align-items:center;gap:12px;
  background:#151731;border:1px solid var(--line);border-radius:14px;padding:12px 14px;
}
.order-item .pos{font-size:13px;color:var(--gold);font-weight:800;min-width:64px}
.order-item .nm{flex:1;font-size:18px;font-weight:700}
.order-item .mv{background:transparent;border:1px solid var(--line);color:var(--muted);
  border-radius:10px;width:38px;height:38px;font-size:16px;cursor:pointer}
.order-item .mv:hover:not(:disabled){color:var(--gold);border-color:var(--gold)}
.order-item .mv:disabled{opacity:.25;cursor:default}

.settings{margin:18px 0 4px;border:1px solid var(--line);border-radius:14px;padding:12px 16px;background:#151731}
.settings summary{cursor:pointer;color:var(--muted);font-size:14px}
.setting{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;font-size:15px;flex-wrap:wrap}
.setting select{
  font-family:inherit;font-size:15px;padding:8px 12px;border-radius:10px;
  background:var(--card);color:var(--text);border:1px solid var(--line);
}

/* ---------- 対戦画面 ---------- */
.play-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.turn-info{display:flex;align-items:baseline;gap:12px}
.turn-label{color:var(--muted);font-size:14px}
.current-player{font-size:32px;font-weight:800;color:var(--gold)}
.timer-area{display:flex;align-items:center;gap:10px}
.timer{
  font-size:34px;font-weight:800;font-variant-numeric:tabular-nums;
  background:#151731;border:2px solid var(--line);border-radius:14px;padding:6px 20px;
}
.timer.warn{color:var(--red);border-color:var(--red)}
.timer.paused{opacity:.45}
#btn-pause{padding:11px 16px}
#btn-pause.paused{background:var(--gold);border-color:var(--gold);color:#2a1e00}
.pause-note{
  background:rgba(255,207,92,.14);border:1px solid var(--gold);color:var(--gold);
  border-radius:14px;padding:14px 18px;margin:0 0 14px;font-weight:700;text-align:center;
}
.filler-note{
  color:var(--muted);font-size:13px;line-height:1.6;margin:-6px 0 16px;
  border-left:3px solid var(--line);padding-left:10px;
}

.play-card{padding-top:22px}
.instruction{font-size:17px;line-height:1.7;margin:0 0 16px}
.instruction b{color:var(--gold)}

.input-answer{
  width:100%;font-size:20px;line-height:1.6;padding:16px;border-radius:14px;
  border:2px solid var(--line);background:#151731;color:var(--text);
  outline:none;resize:vertical;font-family:inherit;
}
.input-answer:focus{border-color:var(--gold)}
/* マイク使用中：文字だけをぼかす（枠やカーソルは見えたまま） */
.input-answer.masked{
  color:transparent;
  text-shadow:0 0 9px rgba(244,241,232,.9);
  caret-color:var(--gold);
}
.input-answer.masked::selection{background:rgba(255,207,92,.25)}
.btn-reveal{background:#151731;border:1px solid var(--gold);color:var(--gold)}
.mask-note{
  color:var(--gold);font-size:13px;line-height:1.6;margin:10px 0 0;
  border-left:3px solid var(--gold);padding-left:10px;
}
.mic-row{display:flex;align-items:center;gap:12px;margin-top:10px;flex-wrap:wrap}
.mic-status{color:var(--muted);font-size:13px}

.verdict{border-radius:14px;padding:16px 18px;margin-top:20px;font-size:17px;line-height:1.7}
.verdict.ok{background:rgba(74,222,128,.14);border:1px solid var(--green);color:#c9f7d8}
.verdict.ng{background:rgba(255,93,108,.14);border:1px solid var(--red);color:#ffd3d7}
.verdict .big{display:block;font-size:24px;font-weight:800;margin-bottom:6px}

.side-card{padding:20px 24px}
.word-list{margin:0;padding-left:26px;line-height:2;font-size:17px}
.word-list li{padding-left:4px}
.word-list .who{color:var(--muted);font-size:13px;margin-left:8px}
.word-list.masked li span.w{filter:blur(7px);user-select:none}
.hidden-note{color:var(--muted);font-size:13px;margin:10px 0 0}

/* ---------- 結果 ---------- */
.result-emoji{font-size:56px;text-align:center;margin:0 0 8px}
#result-title{text-align:center}
#result-detail{text-align:center}
.log-list{margin:0;padding-left:20px;color:var(--muted);font-size:14px;line-height:1.9}
.log-list .ng{color:var(--red)}
.log-list .ok{color:var(--green)}

@media(max-width:560px){
  h2{font-size:22px}
  .current-player{font-size:26px}
  .btn-big{font-size:19px;padding:16px 32px}
  main{padding:16px 12px 60px}
  .card{padding:22px 18px}
}
