:root{
  --bg:#0b0a16; --bg2:#141232; --card:#1b1840; --card2:#221e4d;
  --ink:#f2f0ff; --dim:#a6a2c9; --line:#332e63;
  --acc:#a855f7; --acc2:#ff2d6a; --ok:#22e08a; --warn:#ffd166; --bad:#ff4d6d;
  --radius:20px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  background:radial-gradient(1200px 700px at 50% -10%, #241a52 0%, var(--bg) 55%, #07060f 100%);
  color:var(--ink); font-family:ui-rounded,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-font-smoothing:antialiased; user-select:none; -webkit-touch-callout:none;
}
#app{max-width:560px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 16px calc(96px + env(safe-area-inset-bottom))}
.screen{display:none;animation:fade .22s ease}
.screen.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.hidden{display:none !important}
.center{text-align:center}
h1{font-size:2.5rem;margin:.2em 0 .1em;letter-spacing:-.02em;
   background:linear-gradient(92deg,#fff,var(--acc) 60%,var(--acc2));-webkit-background-clip:text;background-clip:text;color:transparent}
h2{font-size:1.6rem;margin:.4em 0}
h3{margin:.2em 0}
p{line-height:1.45}
.hero{text-align:center;padding:18px 0 6px}
.logo{font-size:3rem;filter:drop-shadow(0 6px 18px rgba(168,85,247,.5))}
.tagline{color:var(--dim);margin:0 auto;max-width:24rem}
.card{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);
      border-radius:var(--radius);padding:18px;margin:14px 0;box-shadow:0 18px 40px rgba(0,0,0,.35)}
.field{display:block;margin:14px 0}
.field>span{display:block;font-size:.92rem;color:var(--dim);margin-bottom:8px}
.field.row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.field.row>span{margin:0}
input[type=range]{width:100%;accent-color:var(--acc)}
select,input[type=text]{background:#100e28;color:var(--ink);border:1px solid var(--line);border-radius:12px;
  padding:12px;font-size:1rem;font-family:inherit;min-width:11rem;max-width:100%}
.btn{border:0;border-radius:14px;padding:13px 18px;font-size:1rem;font-weight:650;font-family:inherit;
  color:var(--ink);background:#2a2559;cursor:pointer;transition:transform .08s ease,filter .15s ease}
.btn:active{transform:scale(.975)}
.btn.primary{background:linear-gradient(92deg,var(--acc),var(--acc2));box-shadow:0 10px 26px rgba(168,85,247,.35)}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--dim)}
.btn.big{display:block;width:100%;padding:18px;font-size:1.08rem;margin-top:12px}
.btn.link{background:none;color:var(--dim);text-decoration:underline;padding:6px}
.row-btns{display:flex;gap:10px;margin-top:10px}
.row-btns .btn{flex:1}
.hint{color:var(--dim);font-size:.85rem;text-align:center;margin:10px 0 0;min-height:1.1em}
.names summary,.rules summary{cursor:pointer;color:var(--dim)}
.names-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.names-grid input{width:100%;min-width:0}
.rules ol{margin:10px 0 0;padding-left:1.2rem;color:var(--dim)}
.rules li{margin:6px 0}

/* ------- gate / pass ------- */
.pass-wrap{text-align:center;padding-top:8vh}
.pass-kicker{color:var(--dim);margin:0;letter-spacing:.08em;text-transform:uppercase;font-size:.8rem}
.pass-name{font-size:2rem;margin:.15em 0 .4em;
  background:linear-gradient(92deg,#fff,#c9b6ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.pass-note{color:var(--dim);max-width:22rem;margin:6px auto}
.progress{height:6px;background:#1d1a42;border-radius:99px;margin:26px auto 8px;max-width:280px;overflow:hidden}
.progress-bar{height:100%;width:0;background:linear-gradient(92deg,var(--acc),var(--acc2));transition:width .25s ease}

/* ------- card ------- */
.card-screen{text-align:center;padding-top:5vh}
.cardbox{background:linear-gradient(160deg,#2b1f5e,#3b1440 55%,#4a1230);border:1px solid #4a3d86;
  border-radius:26px;padding:30px 22px;min-height:44vh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.role-tag{font-size:.82rem;letter-spacing:.18em;text-transform:uppercase;color:#d9c9ff;opacity:.9}
.card-word{font-size:2.3rem;font-weight:800;line-height:1.1;word-break:break-word}
.card-sub{color:#e6dcff;font-size:.98rem;opacity:.92;max-width:22rem}
.card-timer{color:var(--dim);font-size:.9rem;margin-top:14px}
.cardbox.role-civil{background:linear-gradient(160deg,#123a4d,#1b2a5e 60%,#241a52)}
.cardbox.role-impostor{background:linear-gradient(160deg,#5a1030,#7a1030 60%,#3b1440)}
.cardbox.role-blanco{background:linear-gradient(160deg,#4a3a08,#5d4711 60%,#3b2a14)}

/* ------- turns ------- */
.topbar{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:6px}
.pill{background:#241f52;border:1px solid var(--line);color:var(--ink);border-radius:99px;padding:6px 12px;font-size:.8rem}
.pill.soft{color:var(--dim)}
.turn-card{text-align:center;background:linear-gradient(180deg,var(--card),var(--card2));
  border:1px solid var(--line);border-radius:var(--radius);padding:26px 18px;margin:14px 0}
.turn-kicker{color:var(--dim);margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.1em}
.turn-name{font-size:1.9rem;margin:.2em 0 0}
.dots{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:16px 0}
.dot{width:26px;height:26px;border-radius:50%;background:#241f52;border:1px solid var(--line);display:grid;place-items:center;font-size:.65rem;color:var(--dim)}
.dot.done{background:linear-gradient(92deg,var(--acc),var(--acc2));color:#fff;border-color:transparent}
.dot.now{outline:2px solid var(--acc);outline-offset:1px;color:#fff}

/* ------- discusión ------- */
.timer{font-size:4.2rem;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;
  background:linear-gradient(92deg,#fff,#c9b6ff);-webkit-background-clip:text;background-clip:text;color:transparent;margin:10px 0}
.timer.low{background:linear-gradient(92deg,#ffb3c1,var(--bad));-webkit-background-clip:text;background-clip:text}
.hintbox{background:#151233;border:1px dashed var(--line);border-radius:14px;padding:14px;text-align:center;color:#e6dcff;margin-top:12px}

/* ------- votación ------- */
.vote-list{display:flex;flex-direction:column;gap:10px;margin:16px 0}
.vote-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#1b1840;
  border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-size:1.05rem}
.vote-item.sel{border-color:var(--acc);background:linear-gradient(92deg,rgba(168,85,247,.25),rgba(255,45,106,.18))}
.vote-item small{color:var(--dim)}

/* ------- reveal ------- */
.verdict{text-align:center;font-size:1.5rem;font-weight:800;padding:14px;border-radius:18px;
  background:linear-gradient(92deg,rgba(168,85,247,.22),rgba(255,45,106,.18));border:1px solid var(--line)}
.reveal-card{padding:16px}
.reveal-line{margin:8px 0;font-size:1rem;color:#e8e4ff}
.reveal-line b{color:#fff}
.scoreboard{margin:14px 0}
.score-row{display:flex;justify-content:space-between;padding:9px 12px;border-bottom:1px solid #221f4a;font-size:.98rem}
.score-row.me{color:#fff;font-weight:700}
.score-row .pts{color:var(--warn)}
.foot{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--dim);
  font-size:.78rem;padding:22px 4px 8px;flex-wrap:wrap}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(22px + env(safe-area-inset-bottom));
  background:#241f52;border:1px solid var(--line);color:var(--ink);padding:12px 18px;border-radius:14px;
  box-shadow:0 14px 30px rgba(0,0,0,.45);max-width:86vw;text-align:center;z-index:50}
