:root{
  --bg:#0c0e13; --panel:#171b24; --panel2:#1d2230; --border:#2a313f;
  --text:#e8ecf3; --muted:#93a0b4; --faint:#5b6678;
  --green:#22c55e; --green-d:#15803d; --amber:#f5a524; --red:#ef4444;
  --shadow:0 8px 28px rgba(0,0,0,.45); --r:14px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:radial-gradient(1200px 700px at 72% -12%, #16202c 0%, var(--bg) 55%) fixed;
  color:var(--text);
  font-family:'Vazirmatn','Segoe UI',Tahoma,system-ui,sans-serif;
  min-height:100vh;-webkit-font-smoothing:antialiased;
}
a{color:var(--green);text-decoration:none}
.wrap{max-width:1240px;margin:0 auto;padding:24px}
.muted{color:var(--muted)}.center{text-align:center}.rtl{direction:rtl;text-align:right}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}

/* topbar */
.topbar{display:flex;justify-content:space-between;align-items:center;padding:13px 22px;
  border-bottom:1px solid var(--border);background:rgba(18,21,28,.72);backdrop-filter:blur(8px);
  position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.5px;color:var(--text)}
.brand .dot{width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 14px var(--green)}
.tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;background:#22304a;color:#bcd}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;
  border:1px solid var(--border);background:var(--panel2);color:var(--text);
  padding:11px 16px;border-radius:10px;font:inherit;font-size:15px;font-weight:600;transition:.15s;user-select:none}
.btn:hover{border-color:#3a4560;background:#222a3a}
.btn.primary{background:linear-gradient(180deg,#26d366,#16a34a);border-color:#16a34a;color:#04210f}
.btn.warn{background:linear-gradient(180deg,#f8b13c,#e08c12);border-color:#e08c12;color:#2a1800}
.btn.danger{background:linear-gradient(180deg,#f76b6b,#dc2626);border-color:#dc2626;color:#fff}
.btn.ghost{background:transparent}
.btn.on{outline:2px solid var(--green);outline-offset:1px;background:#16271b}
.btn[disabled]{opacity:.4;cursor:not-allowed}
.btn.sm{padding:7px 11px;font-size:13px}

/* panels / forms */
.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow)}
.pad{padding:18px}
input,select,textarea{font:inherit;color:var(--text);background:#0f131b;border:1px solid var(--border);
  border-radius:10px;padding:11px 13px;width:100%}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--green)}
textarea{resize:vertical;min-height:84px;line-height:1.6}
label{display:block;margin:0 0 6px;font-size:13px;color:var(--muted);font-weight:600}
.field{margin-bottom:14px}
table{width:100%;border-collapse:collapse}
th,td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px;vertical-align:middle}
th{color:var(--muted);font-weight:600}

/* login + hub */
.login-card{max-width:380px;margin:9vh auto;padding:30px}
.hubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-top:22px}
.hubcard{padding:22px;display:block;border:1px solid var(--border);border-radius:14px;background:var(--panel);transition:.15s}
.hubcard:hover{border-color:var(--green-d);transform:translateY(-2px)}
.hubcard h3{margin:0 0 6px;font-size:18px}
.hubcard p{margin:0;color:var(--muted);font-size:14px}
.notice{background:#101725;border:1px solid var(--border);border-left:4px solid var(--amber);
  border-radius:10px;padding:12px 14px;color:#dfe6f0;font-size:14px}
.err{background:#241316;border:1px solid #5b2330;border-radius:10px;padding:11px 14px;color:#ffb4b4;font-size:14px;margin-bottom:14px}

/* ===== question board (display / presenter / console preview) ===== */
.board{direction:rtl;text-align:center;padding:26px}
.q-label{display:inline-block;color:var(--green);font-weight:800;letter-spacing:1px;border:1px solid var(--green-d);
  border-radius:999px;padding:6px 18px;margin-bottom:18px;font-size:clamp(14px,2vw,20px)}
.q-text{font-size:clamp(20px,3.4vw,40px);font-weight:700;line-height:1.5;margin:0 auto 28px;max-width:1040px}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:1040px;margin:0 auto}
.opt{position:relative;display:flex;align-items:center;gap:14px;background:var(--panel2);border:2px solid var(--border);
  border-radius:14px;padding:18px 20px;font-size:clamp(16px,2.1vw,26px);font-weight:600;min-height:76px;
  transition:.2s;overflow:hidden}
.opt .badge{flex:0 0 auto;width:44px;height:44px;display:grid;place-items:center;border-radius:10px;
  background:#0e1320;color:var(--green);font-weight:800;border:1px solid var(--border)}
.opt .otext{flex:1;text-align:right}
.opt.elim{opacity:.26;filter:grayscale(.6)}
.opt.selected{border-color:var(--amber);box-shadow:0 0 0 3px rgba(245,165,36,.25) inset}
.opt.selected .badge{background:var(--amber);color:#2a1800}
.opt.correct{border-color:var(--green);background:linear-gradient(180deg,rgba(34,197,94,.22),rgba(34,197,94,.06))}
.opt.correct .badge{background:var(--green);color:#04210f}
.opt.wrong{border-color:var(--red);background:linear-gradient(180deg,rgba(239,68,68,.18),rgba(239,68,68,.05))}
.opt.wrong .badge{background:var(--red);color:#fff}
.opt.hint{border-color:var(--green-d);border-style:dashed}
.opt.hint .badge{color:var(--green)}
.barwrap{position:absolute;inset:auto 0 0 0;height:8px;background:#0c111b}
.bar{height:100%;width:0;background:linear-gradient(90deg,#16a34a,#22d36b);transition:width .5s}
.opt .pct{position:absolute;left:12px;bottom:11px;font-size:13px;color:var(--muted);font-weight:700}
.q-note{margin:24px auto 0;max-width:920px;background:#101725;border:1px dashed #2c3a2f;border-right:4px solid var(--green);
  border-radius:10px;padding:16px 18px;color:#cfe6d6;font-size:clamp(14px,1.8vw,20px);line-height:1.7;text-align:right}
.tgv-blank{min-height:48vh;display:grid;place-items:center;color:var(--faint);font-size:24px}

/* fullscreen stage (display) */
.stagebody{overflow:hidden}
.stage{min-height:100vh;display:flex;flex-direction:column;justify-content:center}
.stage .live-pill{position:fixed;top:16px;left:16px;font-size:13px;font-weight:700;color:#9fb;
  background:#0e2018;border:1px solid var(--green-d);border-radius:999px;padding:6px 14px;z-index:5}
.stage .live-pill.off{color:#b9c2d0;background:#161b24;border-color:var(--border)}

/* console */
.grid2{display:grid;grid-template-columns:400px 1fr;gap:20px;align-items:start}
.qlist{max-height:64vh;overflow:auto;padding:8px}
.qrow{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;cursor:pointer;border:1px solid transparent}
.qrow:hover{background:#1a2030;border-color:var(--border)}
.qrow.active{background:#16271b;border-color:var(--green-d)}
.qrow .qn{flex:0 0 auto;min-width:36px;height:36px;display:grid;place-items:center;background:#0e1320;
  border:1px solid var(--border);border-radius:8px;color:var(--green);font-weight:700;font-size:13px}
.qrow .qt{flex:1;direction:rtl;text-align:right;font-size:14px;color:#d6deea;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.controls{display:flex;flex-wrap:wrap;gap:12px;padding:16px;border-top:1px solid var(--border);margin-top:4px}
.cgroup{display:flex;gap:6px;align-items:center;background:#0f131b;border:1px solid var(--border);border-radius:12px;padding:8px}
.cgroup>.lbl{font-size:12px;color:var(--muted);font-weight:700;padding:0 4px}

/* keypad */
.kbd{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:560px;margin:0 auto}
.keybtn{font-size:clamp(26px,11vw,46px);padding:34px 10px;font-weight:800}
.keybtn .kt{display:block;font-size:clamp(13px,3.6vw,18px);font-weight:600;margin-top:8px;direction:rtl}
.keystate{max-width:560px;margin:0 auto 18px;text-align:center}

@media(max-width:760px){.grid2{grid-template-columns:1fr}.opts{grid-template-columns:1fr}}
