:root{--bg: #0f1020;--bg-2: #16172e;--card: #1c1e3a;--card-2: #23264a;--text: #eef0ff;--muted: #9aa0c8;--accent: #6c5ce7;--accent-2: #8f7bff;--good: #2ecc71;--bad: #ff5c7a;--warn: #ffb347;--radius: 14px;--shadow: 0 10px 30px rgba(0, 0, 0, .35);--ring: 0 0 0 2px var(--accent-2)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 600px at 70% -10%,rgba(108,92,231,.25),transparent 60%),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.app{min-height:100%;display:flex;flex-direction:column}.app__inner{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:24px 16px 48px}.app__conn{position:fixed;top:10px;right:12px;z-index:20;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);background:#00000040;padding:4px 10px;border-radius:999px}.app__dot{width:8px;height:8px;border-radius:50%;background:var(--warn)}.app__conn[data-status=open] .app__dot{background:var(--good)}.app__conn[data-status=closed] .app__dot{background:var(--bad)}.app__footer{text-align:center;color:var(--muted);font-size:12px;padding:16px}.card{background:linear-gradient(180deg,var(--card),var(--bg-2));border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.layout{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:start}.sidebar{position:sticky;top:16px}@media (max-width: 760px){.layout{grid-template-columns:1fr}.sidebar{position:static}}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(255,255,255,.12);background:var(--card-2);color:var(--text);padding:10px 16px;border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;transition:transform .05s ease,background .15s ease,opacity .15s}.btn:hover{background:#2a2d55}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:linear-gradient(180deg,var(--accent-2),var(--accent));border-color:transparent}.btn--primary:hover{filter:brightness(1.07);background:linear-gradient(180deg,var(--accent-2),var(--accent))}.btn--danger{background:transparent;border-color:#ff5c7a80;color:var(--bad)}.btn--danger:hover{background:#ff5c7a1f}.linkbtn{background:none;border:none;color:var(--accent-2);cursor:pointer;font-weight:600;padding:6px 0;font-size:14px}.linkbtn:hover{text-decoration:underline}.linkbtn--muted{color:var(--muted);display:block;margin-top:16px}.input{width:100%;background:#00000040;border:1px solid rgba(255,255,255,.12);color:var(--text);padding:11px 13px;border-radius:10px;font-size:15px;outline:none;transition:box-shadow .15s,border-color .15s}.input:focus{border-color:var(--accent-2);box-shadow:var(--ring)}.input--code{text-transform:uppercase;letter-spacing:3px;font-weight:700;text-align:center}.field{display:block;margin-bottom:14px}.field__label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.muted{color:var(--muted)}.notice{margin-top:12px;padding:10px 12px;border-radius:10px;font-size:14px;background:#ffffff0d}.notice--warn{background:#ffb3471f;color:var(--warn)}.toast{position:fixed;top:44px;left:50%;transform:translate(-50%);z-index:30;padding:10px 16px;border-radius:10px;font-size:14px;cursor:pointer;box-shadow:var(--shadow)}.toast--error{background:var(--bad);color:#fff}.badge{display:inline-block;margin-left:6px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;background:var(--accent);color:#fff;padding:1px 6px;border-radius:999px;vertical-align:middle}.home{max-width:460px;margin:6vh auto 0}.hero{text-align:center;margin-bottom:24px}.logo{font-size:52px;margin:0;font-weight:800;letter-spacing:-1px}.logo__accent{color:var(--accent-2)}.tagline{color:var(--muted);margin:6px 0 0}.joinrow{display:flex;gap:10px;margin-bottom:8px}.joinrow .input{flex:1}.hostbox{margin-top:10px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}.hostbox__actions{display:flex;gap:10px;justify-content:flex-end}.lobby__code{display:flex;flex-direction:column;gap:2px;margin-bottom:4px}.roomcode{font-size:40px;font-weight:800;letter-spacing:8px;color:var(--accent-2)}.config h3,.sidebar__title{margin:0 0 12px;font-size:15px}.config__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media (max-width: 520px){.config__grid{grid-template-columns:1fr}}.config__actions,.gameover__actions{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}.waiting{margin-top:8px}.waiting--center{text-align:center;padding:24px 0}.playerlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.playerlist__item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:9px;background:#ffffff08;font-size:14px}.playerlist__item--me{outline:1px solid rgba(143,123,255,.5)}.playerlist__dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.playerlist__dot[data-on="1"]{background:var(--good)}.playerlist__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playerlist__score{font-weight:700;color:var(--accent-2)}.phasebar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.phasebar__label{font-weight:700;font-size:16px}.round-badge{display:inline-block;font-size:12px;color:var(--muted);margin-bottom:12px;background:#ffffff0d;padding:4px 10px;border-radius:999px}.prompt{margin:0 0 16px;padding:16px 18px;font-size:20px;font-weight:600;line-height:1.35;border-left:4px solid var(--accent);background:#6c5ce71a;border-radius:0 10px 10px 0}.countdown{font-variant-numeric:tabular-nums;font-weight:800;font-size:18px;color:var(--accent-2)}.countdown--urgent{color:var(--bad);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.4}}.gifpicker .input{margin-bottom:12px}.gifgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;max-height:46vh;overflow-y:auto;padding:2px}.gifgrid__item{padding:0;border:2px solid transparent;border-radius:10px;overflow:hidden;cursor:pointer;background:#000;aspect-ratio:1 / 1}.gifgrid__item img{width:100%;height:100%;object-fit:cover;display:block}.gifgrid__item--sel{border-color:var(--accent-2);box-shadow:var(--ring)}.gifgrid__status{grid-column:1 / -1;text-align:center;padding:24px}.submitbar{display:flex;align-items:center;gap:12px;margin-top:14px}.submitbar__thumb{width:48px;height:48px;border-radius:8px;object-fit:cover}.preview{max-width:260px;border-radius:10px;margin-top:12px}.checkmark{width:54px;height:54px;margin:0 auto 10px;border-radius:50%;background:var(--good);color:#fff;font-size:28px;display:grid;place-items:center}.votegrid,.revealgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.votecard{position:relative;padding:0;border:2px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden;cursor:pointer;background:#000;transition:transform .08s,border-color .15s}.votecard:hover{transform:translateY(-3px);border-color:var(--accent-2)}.votecard img{width:100%;display:block;aspect-ratio:1 / 1;object-fit:cover}.votecard__cta{position:absolute;inset:auto 0 0 0;padding:8px;text-align:center;font-weight:700;background:linear-gradient(transparent,#000c)}.revealcard{position:relative;border-radius:12px;overflow:hidden;background:var(--card-2);border:2px solid rgba(255,255,255,.06)}.revealcard--winner{border-color:var(--warn);box-shadow:0 0 0 2px #ffb34766}.revealcard img{width:100%;display:block;aspect-ratio:1 / 1;object-fit:cover}.revealcard__crown{position:absolute;top:6px;left:8px;font-size:22px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}.revealcard__meta{display:flex;justify-content:space-between;align-items:center;padding:8px 10px}.revealcard__author{font-weight:700}.revealcard__votes{color:var(--muted);font-size:13px}.revealcard__points{margin-left:6px;color:var(--good);font-weight:700}.hostcontrols{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:8px}.hostcontrols__label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.gameover{max-width:520px;margin:4vh auto 0}.gameover__title{text-align:center;margin:0 0 8px}.gameover__winner{text-align:center;margin:12px 0 20px}.gameover__crown{font-size:40px}.gameover__winnername{font-size:26px;font-weight:800}.standings{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:6px}.standings__row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#ffffff0a;border-radius:10px}.standings__rank{width:24px;font-weight:800;color:var(--accent-2)}.standings__name{flex:1}.standings__score{font-weight:700}
