:root{
  --ink:#1a1240; --ink2:#251a5c; --card:#2e2270; --line:#4a3c9a;
  --gold:#ffcc33; --foam:#fff8e7; --hot:#ff4d6d; --mint:#2fd37a; --muted:#b9b0e8;
  --r:18px;
  font-family: ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI Variable Display", "Segoe UI", system-ui, sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%;background:var(--ink);color:var(--foam)}
body{background:radial-gradient(120% 60% at 50% -10%, #3b2a8f 0%, var(--ink) 60%) fixed;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
#app{max-width:520px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 16px calc(28px + env(safe-area-inset-bottom));min-height:100dvh;display:flex;flex-direction:column}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;touch-action:manipulation}
button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
h2{font-size:20px;font-weight:800;margin:22px 0 10px;display:flex;align-items:baseline;gap:8px}
h2 small{font-size:13px;font-weight:600;color:var(--muted)}
.sub{color:var(--muted);text-align:center;margin-top:8px;font-size:15px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 22px;border-radius:999px;background:var(--card);font-weight:800;font-size:17px;transition:transform .08s}
.btn:active{transform:scale(.96)}
.btn.gold{background:var(--gold);color:var(--ink);box-shadow:0 6px 0 #c98f00}
.btn.gold:active{box-shadow:0 2px 0 #c98f00;transform:translateY(4px)}
.btn.ghost{background:transparent;border:2px solid var(--line)}
.btn.big{min-height:62px;font-size:20px;width:100%}
.link{color:var(--muted);text-decoration:underline;margin:14px auto 0;display:block}

/* forside */
.home{display:flex;flex-direction:column;gap:14px;padding-top:6vh}
.logo{font-size:clamp(72px,24vw,118px);font-weight:900;letter-spacing:-.04em;line-height:.9;display:flex;align-items:flex-end;gap:6px;color:var(--gold);text-shadow:0 6px 0 #c98f00, 0 14px 30px rgba(0,0,0,.35)}
.logo i{font-style:normal;font-size:.5em;transform:rotate(14deg);margin-bottom:.12em;text-shadow:none}
.tag{font-size:18px;line-height:1.4;max-width:30ch;margin-bottom:10px}
.field{display:flex;flex-direction:column;gap:6px;font-weight:700;color:var(--muted);font-size:14px}
input{font:inherit;font-size:19px;font-weight:700;color:var(--foam);background:var(--ink2);border:2px solid var(--line);border-radius:14px;padding:14px 16px;width:100%;min-width:0}
input::placeholder{color:#7d72c0}
.or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px}
.or::before,.or::after{content:"";flex:1;height:2px;background:var(--line)}
.coderow{display:flex;gap:10px}
.coderow .btn{white-space:nowrap;flex:none}
.coderow input{text-transform:uppercase;letter-spacing:.3em;text-align:center;font-size:22px}
.joinbox{background:var(--ink2);border:2px solid var(--line);border-radius:var(--r);padding:16px;display:grid;gap:12px;text-align:center;font-size:17px}
.joinbox b{color:var(--gold);letter-spacing:.15em}
.modes-mini{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.modes-mini li{background:var(--ink2);border-radius:999px;padding:8px 14px;font-weight:700;font-size:14px;display:flex;gap:6px}
.fine{color:var(--muted);font-size:13px;margin-top:auto;padding-top:24px}

/* topbjælke */
.bar{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.code{background:var(--ink2);border-radius:999px;padding:8px 14px;font-weight:700;font-size:14px;color:var(--muted)}
.code b{color:var(--gold);letter-spacing:.12em;margin-left:4px}
.who{flex:1;text-align:center;font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.leave{color:var(--muted);font-size:14px;padding:8px 4px}

/* lobby */
.invite{text-align:center;background:var(--ink2);border-radius:24px;padding:18px;margin-top:8px}
.invite p{color:var(--muted);font-weight:700}
.bigcode{font-size:72px;font-weight:900;letter-spacing:.14em;color:var(--gold);line-height:1.1;margin:4px 0 10px;padding-left:.14em}
.board{list-style:none;display:grid;gap:6px}
.board li{display:flex;align-items:center;gap:10px;background:var(--ink2);border-radius:14px;padding:12px 14px;font-weight:700}
.board li.me{outline:2px solid var(--gold)}
.board li.off{opacity:.45}
.board .nm{flex:1;min-width:0;overflow-wrap:anywhere}
.board .dr{font-variant-numeric:tabular-nums}
.board .x{width:32px;height:32px;border-radius:50%;background:var(--card);font-size:20px;line-height:1}
.modes{display:grid;gap:10px}
.mode{display:flex;gap:14px;align-items:center;text-align:left;padding:16px;border-radius:var(--r);background:var(--card);border:2px solid transparent;transition:transform .08s}
.mode:not(:disabled):active{transform:scale(.98)}
.mode:not(:disabled):hover{border-color:var(--gold)}
.mode:disabled{cursor:default;opacity:.6}
.mode .ic{font-size:42px;flex:none;width:58px;height:58px;display:grid;place-items:center;border-radius:16px;background:var(--ink)}
.mode .tx{display:grid;gap:4px}
.mode b{font-size:19px}
.mode small{color:var(--muted);font-size:14px;line-height:1.35}
.mode em{font-style:normal;color:var(--gold);font-size:13px;font-weight:700}
.m-bomb .ic{background:#3a1030}.m-mest .ic{background:#10304a}.m-reak .ic{background:#13401f}

/* resultat */
.result{text-align:center;display:flex;flex-direction:column;gap:6px;padding-top:4vh}
.result .board{text-align:left}
.mode-tag{color:var(--muted);font-weight:700;font-size:14px}
.headline{font-size:clamp(28px,8vw,40px);line-height:1.1;justify-content:center;margin:8px 0 4px;font-weight:900}
.extra{color:var(--muted);font-size:15px;line-height:1.4}
.drinkers{list-style:none;display:grid;gap:6px;margin:14px 0;font-size:18px}
.drinkers small{color:var(--muted)}
.you{background:var(--hot);color:#fff;font-weight:900;font-size:26px;border-radius:var(--r);padding:16px;margin:4px 0 12px;animation:pop .5s cubic-bezier(.2,1.6,.4,1)}
.result.drink .headline{color:var(--hot)}
.row{display:flex;gap:10px;flex-wrap:wrap}.row .btn.big{flex:1 1 200px;width:auto}.row .btn.ghost{flex:1 1 120px;min-height:62px}
.wait{color:var(--muted);margin:10px 0}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}

/* bomben */
.bomb{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:3vh}
.bomb h2{font-size:30px;justify-content:center;margin:6px 0 0}
.bombart{font-size:120px;line-height:1;filter:drop-shadow(0 12px 24px rgba(255,77,109,.35))}
.bomb.watch .bombart{animation:sway 1.6s ease-in-out infinite}
.bombart.shake{animation:shake .35s linear infinite}
.bomb.hot{background:radial-gradient(70% 45% at 50% 18%, rgba(255,77,109,.28), transparent 70%)}
@keyframes shake{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg) translateY(-3px)}}
@keyframes sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.bomb.watch .board{width:100%;margin-top:24px;text-align:left}
.q{font-size:56px;font-weight:900;margin:12px 0 18px;letter-spacing:.02em}
.q.color{font-size:64px;-webkit-text-stroke:2px rgba(255,255,255,.15)}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}
.opt{min-height:96px;border-radius:var(--r);background:var(--card);font-size:34px;font-weight:900;box-shadow:0 6px 0 rgba(0,0,0,.3)}
.opt:active{transform:translateY(4px);box-shadow:0 2px 0 rgba(0,0,0,.3)}
.opts.locked{opacity:.35;pointer-events:none}
.lock{color:var(--hot);font-weight:800;margin-top:12px}
.targets{display:grid;gap:10px;width:100%;margin-top:18px}
.target{min-height:62px;font-size:20px;background:var(--hot);color:#fff;box-shadow:0 6px 0 #a8203a}

/* hvem er mest */
.mest{text-align:center;padding-top:3vh}
.prompt{font-size:clamp(26px,7.5vw,36px);line-height:1.15;justify-content:center;margin:8px 0 20px;font-weight:900}
.vote{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vbtn{min-height:64px;border-radius:16px;font-size:18px;padding:0 10px;overflow-wrap:anywhere}
.vbtn.on{background:var(--gold);color:var(--ink)}

/* reaktion */
.reak{flex:1;margin:6px -16px 0;border-radius:28px 28px 0 0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;user-select:none;-webkit-user-select:none;touch-action:none;cursor:pointer;min-height:70dvh}
.reak.wait{background:#7a1631}
.reak.go{background:var(--mint);color:var(--ink)}
.reak.go .sub{color:var(--ink)}
.reak.done{background:var(--ink2);cursor:default}
.reak h2{font-size:clamp(40px,13vw,72px);font-weight:900;margin:0;justify-content:center}

#toast{position:fixed;left:50%;top:max(14px,env(safe-area-inset-top));transform:translateX(-50%);background:var(--foam);color:var(--ink);font-weight:800;padding:12px 18px;border-radius:999px;z-index:50;max-width:calc(100% - 32px);box-shadow:0 10px 30px rgba(0,0,0,.35)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
