:root{--bg: #0d0a14;--bg2: #16101f;--panel: #1c1528;--gold: #c9a227;--pink: #d4548e;--orange: #e07b39;--purple: #7b4fc0;--teal: #2bb3a3;--red: #b3322b;--green: #2f9e44;--text: #f5eee6;--muted: #9b8fa8;--cat: var(--gold);--radius: 18px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:radial-gradient(120% 100% at 50% 0%,var(--bg2),var(--bg));color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:18px;line-height:1.4}.screen{min-height:100%;display:flex;flex-direction:column;padding:16px}.screen.center{align-items:center;justify-content:center}.card-panel{background:var(--panel);border:1px solid #2c2238;border-radius:var(--radius);padding:28px 24px;width:100%;max-width:440px;box-shadow:0 24px 60px #00000080;text-align:center}.logo{font-size:34px;font-weight:900;letter-spacing:1px;margin:0;background:linear-gradient(90deg,var(--gold),var(--pink),var(--orange));-webkit-background-clip:text;background-clip:text;color:transparent}.logo.small{font-size:18px}.tagline{color:var(--muted);margin:4px 0 20px;font-style:italic}.field{display:block;text-align:left;margin:14px 0}.field span{display:block;font-size:14px;color:var(--muted);margin-bottom:6px}.field input,.code-input{width:100%;padding:14px;font-size:18px;border-radius:12px;border:1px solid #382b48;background:#120c1b;color:var(--text)}.code-input{font-size:30px;letter-spacing:8px;text-align:center;font-weight:800}.btn{display:block;width:100%;padding:15px;margin:10px 0;font-size:18px;font-weight:700;border:none;border-radius:14px;cursor:pointer;transition:transform .06s ease,filter .15s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(90deg,var(--pink),var(--orange));color:#1a0f12}.btn.secondary{background:#2c2238;color:var(--text)}.btn.ghost{background:transparent;color:var(--muted)}.btn.good{background:var(--green);color:#fff}.btn.bad{background:var(--red);color:#fff}.btn.big{font-size:20px;padding:18px}.btn.tiny{width:auto;display:inline-block;padding:8px 12px;font-size:14px;margin:0 4px}.toggle{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:15px;color:var(--muted);text-align:left}.toggle input{width:20px;height:20px}.cats{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;justify-content:center}.cat-chip{font-size:11px;font-weight:800;letter-spacing:.5px;border:1px solid;border-radius:999px;padding:5px 10px}.footer{margin-top:22px;color:var(--muted);font-size:12px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:12px}.lobby{text-align:center;max-width:440px;margin:0 auto;width:100%}.roomcode{font-size:52px;font-weight:900;letter-spacing:12px;cursor:pointer;background:var(--panel);border-radius:16px;padding:18px;margin:8px 0;color:var(--gold);border:1px solid #2c2238}.playerlist{list-style:none;padding:0}.playerlist li{background:var(--panel);border-radius:10px;padding:12px;margin:6px 0}.badge{display:inline-block;background:var(--purple);color:#fff;font-size:12px;font-weight:800;padding:4px 12px;border-radius:999px;margin-top:12px}.warn{color:var(--orange);font-size:14px}.screen.game{gap:12px}.round{font-weight:800;color:var(--gold)}.cat-label{font-size:12px;font-weight:800;letter-spacing:1px;color:var(--cat)}.gamecard{background:linear-gradient(160deg,var(--panel),#120c1b);border:2px solid var(--cat);border-radius:var(--radius);padding:26px 22px;flex:1;display:flex;flex-direction:column;justify-content:center;text-align:center;box-shadow:0 0 50px color-mix(in srgb,var(--cat) 20%,transparent)}.gamecard-tag{font-size:13px;font-weight:900;letter-spacing:1.5px;margin-bottom:14px}.gamecard-q{font-size:24px;font-weight:700;margin:0 0 16px;line-height:1.35}.gamecard-type{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.gamecard-turn{margin-top:18px;font-size:16px;color:var(--gold)}.timer{display:flex;align-items:center;gap:12px}.timer-bar-track{flex:1;height:14px;background:#241a30;border-radius:999px;overflow:hidden}.timer-bar-fill{height:100%;transition:width .25s linear}.timer-num{font-weight:900;font-size:22px;min-width:32px;text-align:right}.timer-num.urgent{color:var(--red);animation:pulse .5s infinite alternate}@keyframes pulse{to{transform:scale(1.25)}}.buzzer{width:100%;padding:28px;font-size:28px;font-weight:900;letter-spacing:2px;border:none;border-radius:20px;cursor:pointer;color:#1a0f12;background:radial-gradient(circle at 50% 30%,#ffd34d,var(--orange));box-shadow:0 10px #9a4f1e,0 14px 30px #00000080}.buzzer:active{transform:translateY(6px);box-shadow:0 4px #9a4f1e}.buzzer.hit{background:#555;color:#ccc;box-shadow:none}.buzzed-note{text-align:center;font-weight:700;color:var(--gold)}.voting{text-align:center}.vote-buttons{display:flex;gap:12px}.btn.vote{font-size:20px;padding:22px;background:#2c2238;color:var(--text)}.btn.vote.good.active{background:var(--green);color:#fff}.btn.vote.bad.active{background:var(--red);color:#fff}.vote-tally{display:flex;gap:16px;justify-content:center;margin-top:12px;font-weight:800}.reveal{text-align:center;background:var(--panel);border-radius:14px;padding:18px}.reveal .answer{font-size:18px}.roast-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0610eb;display:flex;align-items:center;justify-content:center;z-index:50;animation:fadein .2s ease}@keyframes fadein{0%{opacity:0}}.roast-card{background:linear-gradient(160deg,#2a0f12,#160a0a);border:3px solid var(--red);border-radius:22px;padding:36px 28px;max-width:420px;text-align:center;position:relative;box-shadow:0 0 80px #b3322b80;animation:roastpop .35s cubic-bezier(.2,1.4,.4,1)}@keyframes roastpop{0%{transform:scale(.6) rotate(-4deg);opacity:0}}.roast-flame{font-size:48px}.roast-text{font-size:24px;font-weight:800;margin:14px 0}.roast-stamp{color:var(--red);font-weight:900;letter-spacing:4px;border:2px solid var(--red);padding:4px 14px;border-radius:8px;display:inline-block;transform:rotate(-6deg)}.hostbar{position:sticky;bottom:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:#120c1b;border-top:1px solid #2c2238;padding:12px;margin:0 -16px -16px}.hostbar .btn{width:auto;flex:1;margin:0;min-width:90px}.hostbar-label{font-size:11px;font-weight:900;color:var(--gold);letter-spacing:1px}.timer-pause{background:#2c2238;color:var(--text)}.mini-scores{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.mini-score{font-size:12px;background:var(--panel);border-radius:999px;padding:3px 8px}.mini-score.me{background:var(--purple)}.winner{font-size:18px;color:var(--gold);font-weight:700}.finalboard{list-style:none;padding:0;text-align:left}.finalboard li{display:flex;align-items:center;gap:12px;background:var(--panel);border-radius:10px;padding:12px;margin:6px 0}.finalboard li.me{border:1px solid var(--purple)}.finalboard .rank{font-weight:900;color:var(--gold);width:24px}.finalboard .pname{flex:1}.finalboard .pscore{font-weight:900;font-size:20px}.callhint{margin-top:16px;font-size:13px;color:var(--muted);background:#120c1b;border:1px solid #2c2238;border-radius:10px;padding:10px 12px}.chat-fab{position:fixed;right:14px;bottom:14px;z-index:60;width:54px;height:54px;border-radius:50%;border:none;cursor:pointer;font-size:24px;background:var(--purple);color:#fff;box-shadow:0 8px 24px #00000080}.chat-badge{position:absolute;top:-2px;right:-2px;background:var(--pink);color:#1a0f12;font-size:11px;font-weight:900;border-radius:999px;padding:2px 6px;min-width:18px}.chat-panel{position:fixed;right:12px;bottom:78px;z-index:60;width:min(340px,calc(100vw - 24px));height:min(440px,60vh);display:flex;flex-direction:column;background:var(--panel);border:1px solid #2c2238;border-radius:16px;overflow:hidden;box-shadow:0 20px 50px #0009}.chat-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid #2c2238;font-weight:800}.chat-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer}.chat-messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.chat-empty{text-align:center;margin-top:20px}.chat-msg{display:flex;flex-direction:column;max-width:85%}.chat-msg.mine{align-self:flex-end;align-items:flex-end}.chat-name{font-size:11px;color:var(--muted);margin-bottom:2px}.chat-text{background:#241a30;padding:8px 12px;border-radius:12px;font-size:15px;word-break:break-word}.chat-msg.mine .chat-text{background:var(--purple)}.chat-input{display:flex;gap:8px;padding:10px;border-top:1px solid #2c2238}.chat-input input{flex:1;padding:10px;font-size:15px;border-radius:10px;border:1px solid #382b48;background:#120c1b;color:var(--text)}.chat-input .btn{width:auto;margin:0;padding:10px 16px}.howto-trigger{margin-top:14px;font-size:15px}.howto-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#08050cd9;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadein .2s ease}.howto-modal{background:var(--panel);border:1px solid #2c2238;border-radius:18px;width:100%;max-width:480px;max-height:86vh;display:flex;flex-direction:column;box-shadow:0 24px 60px #0009}.howto-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #2c2238}.howto-head h2{margin:0}.howto-body{overflow-y:auto;padding:8px 20px 20px;text-align:left}.howto-body h3{margin:18px 0 6px;color:var(--gold);font-size:16px}.howto-body p,.howto-body li{font-size:15px;line-height:1.5}.howto-body ol,.howto-body ul{padding-left:20px;margin:6px 0}.howto-body li{margin:4px 0}.howto-foot{margin-top:18px;font-weight:700;color:var(--pink);text-align:center}.notice{text-align:left;margin-top:16px}.notice ol{padding-left:20px}.notice code{background:#120c1b;padding:2px 6px;border-radius:5px;font-size:14px}.muted{color:var(--muted)}.tiny{font-size:12px}.unlock-box{margin-top:16px;padding:14px;border-radius:14px;background:#160f21;border:1px solid #2c2238;text-align:left}.unlock-box.ok{border-color:var(--green);color:var(--text);font-size:14px;line-height:1.4}.unlock-pitch{margin:0 0 12px;font-size:13px;line-height:1.45;color:var(--muted)}.unlock-pitch strong{color:var(--text)}.btn.small{padding:8px 12px;font-size:13px;margin-top:10px}.code-redeem{display:flex;gap:8px;margin-top:10px}.code-redeem .code-input{flex:1;margin:0;letter-spacing:1px}.code-redeem .btn{width:auto;margin:0;white-space:nowrap}.unlock-msg{margin:10px 0 0;font-size:13px}.unlock-msg.ok{color:var(--green)}.unlock-msg.err{color:var(--orange)}
