:root{--ink:#1c1410;--ink-soft:#5c4a3d;--paper:#fff6eb;--paper-2:#ffe4c8;--blast:#e85d04;--blast-deep:#c43c00;--fuse:#2a9d8f;--smoke:#3d2f26;--danger:#d62828;--ok:#2a9d8f;--line:#1c14101f;--shadow:0 18px 50px #1c14102e;--font-display:"Fredoka", "Noto Sans TC", sans-serif;--font-body:"Noto Sans TC", "Segoe UI", sans-serif;color:var(--ink);background:var(--paper);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:linear-gradient(165deg,#fff8f0 0%,#ffd8b0 45%,#f0b27a 100%);overflow:hidden}button,input{font:inherit}button{cursor:pointer}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{min-height:100dvh;position:relative;overflow:hidden}.lobby-bg,.play-bg{z-index:0;background:radial-gradient(80% 60% at 10% 10%,#e85d0447,#0000 55%),radial-gradient(70% 50% at 90% 20%,#2a9d8f38,#0000 50%),radial-gradient(70% 50% at 50% 100%,#c43c0047,#0000 55%),linear-gradient(165deg,#fff8f0 0%,#ffd8b0 40%,#f0b27a 100%);position:fixed;inset:0}.lobby-bg:after{content:"";opacity:.5;background-image:radial-gradient(circle at 20% 30%,#1c14100f 0 2px,#0000 3px);background-size:28px 28px;animation:28s linear infinite drift;position:absolute;inset:-20%}@keyframes drift{0%{transform:translate(0,0)}to{transform:translate(-28px,28px)}}.lobby{place-items:center;height:100%;padding:2rem;display:grid;overflow-y:auto}.lobby-hero{z-index:1;text-align:left;max-width:40rem;animation:.7s ease-out both rise;position:relative}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.brand,.brand-inline{font-family:var(--font-display);letter-spacing:.04em;font-weight:700}.brand{color:var(--blast-deep);text-shadow:0 4px #fff6ebcc;margin:0 0 1.25rem;font-size:clamp(3rem,10vw,5.5rem);line-height:.95;animation:2.8s ease-in-out infinite pulse-brand}@keyframes pulse-brand{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.lobby-line{font-family:var(--font-display);color:var(--ink);margin:0 0 .75rem;font-size:clamp(1.35rem,3.5vw,1.9rem);font-weight:500}.lobby-sub{color:var(--ink-soft);max-width:32rem;margin:0 0 1.75rem;line-height:1.65}.lobby-error{color:var(--danger);margin:.85rem 0 0;font-size:.92rem}.lobby-form{flex-wrap:wrap;gap:.65rem;display:flex}.lobby-form input,.composer input,.guesser input{border:2px solid var(--ink);background:#fff6ebeb;border-radius:.65rem;outline:none;flex:1;min-width:12rem;padding:.85rem 1rem;transition:border-color .15s,box-shadow .15s}.lobby-form input:focus,.composer input:focus,.guesser input:focus{border-color:var(--blast);box-shadow:0 0 0 3px #e85d0433}.lobby-form button,.composer button,.guesser button,.overlay-card button{background:var(--blast);color:#fffaf4;border:none;border-radius:.65rem;padding:.85rem 1.35rem;font-weight:700;transition:transform .15s,background .15s}.lobby-form button:hover,.composer button:hover,.guesser button:hover,.overlay-card button:hover{background:var(--blast-deep);transform:translateY(-1px)}.lobby-form button:active,.composer button:active,.guesser button:active{transform:translateY(1px)}.play{flex-direction:column;height:100dvh;max-height:100dvh;display:flex;overflow:hidden}.topbar,.board{z-index:1;position:relative}.topbar{grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1rem 1.25rem;display:grid}.topbar-right{justify-self:end;align-items:center;gap:.65rem;display:flex}.rules-btn,.rules-fab,.rules-close,.rules-done{border:2px solid var(--ink);color:var(--ink);cursor:pointer;background:#fff6ebf2;border-radius:.65rem;padding:.45rem .85rem;font-weight:700;transition:transform .15s,background .15s}.rules-btn:hover,.rules-fab:hover,.rules-close:hover,.rules-done:hover{background:#ffe0c2;transform:translateY(-1px)}.rules-fab{z-index:5;position:absolute;top:1rem;right:1rem}.rules-overlay{z-index:30}.rules-card{text-align:left;flex-direction:column;gap:.75rem;width:min(100%,28rem);max-height:min(88dvh,40rem);display:flex}.rules-head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.rules-head h2{font-family:var(--font-display);color:var(--blast-deep);margin:0;font-size:1.45rem}.rules-paused{color:var(--blast-deep);background:#e85d041f;border:1.5px solid #e85d0459;border-radius:.55rem;margin:0;padding:.55rem .75rem;font-size:.9rem;font-weight:600}.rules-body{flex-direction:column;gap:.85rem;padding-right:.15rem;display:flex;overflow-y:auto}.rules-body section h3{color:var(--fuse);margin:0 0 .25rem;font-size:.95rem}.rules-body section p{color:var(--ink-soft);margin:0;font-size:.92rem;line-height:1.55}.rules-done{background:var(--blast);color:#fffaf4;border-color:var(--blast-deep);align-self:stretch;padding:.75rem 1rem}.rules-done:hover{background:var(--blast-deep)}.brand-inline{color:var(--blast-deep);font-size:1.35rem}.topic-row{justify-self:center;align-items:center;gap:.55rem;min-width:0;max-width:min(100%,42rem);display:flex}.topic-pill{border:2px solid var(--ink);background:#fff6ebd1;border-radius:999px;flex:1;align-items:baseline;gap:.55rem;min-width:0;padding:.45rem 1rem;display:flex}.restart-btn{border:2px solid var(--ink);color:var(--blast-deep);cursor:pointer;white-space:nowrap;background:#fff6ebf2;border-radius:.65rem;flex-shrink:0;padding:.45rem .75rem;font-weight:700;transition:transform .15s,background .15s}.restart-btn:hover:not(:disabled){background:#ffe0c2;transform:translateY(-1px)}.restart-btn:disabled{opacity:.65;cursor:wait}.topic-label{color:var(--fuse);text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;font-weight:700}.topic-text{font-weight:600}.timer{font-family:var(--font-display);text-align:right;min-width:3.2rem;color:var(--smoke);font-size:1.4rem;font-weight:700;transition:color .2s,transform .2s}.timer.danger{color:var(--danger);animation:1s ease-in-out infinite tick}@keyframes tick{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.board{flex:1;grid-template-columns:minmax(220px,300px) 1fr;gap:1rem;min-height:0;padding:0 1.25rem 1.25rem;display:grid;overflow:hidden}.roster,.chat-panel{border:2px solid var(--ink);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fff6ebe0;border-radius:1rem;min-height:0;max-height:100%}.roster{flex-direction:column;gap:.75rem;padding:1rem;display:flex}.roster h2{font-family:var(--font-display);margin:0;font-size:1.15rem}.roster ul{flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.roster li{border:1.5px solid var(--line);background:#ffffff73;border-radius:.75rem;padding:.7rem .8rem}.roster li.you{border-color:var(--blast);background:#e85d0414}.roster li.out{opacity:.45;filter:grayscale(.4)}.roster-head{justify-content:space-between;align-items:center;gap:.5rem;min-width:0;margin-bottom:.35rem;display:flex}.roster-name{text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0;font-weight:700;overflow:hidden}.hearts{white-space:nowrap;flex-wrap:nowrap;flex-shrink:0;justify-content:flex-end;gap:.02rem;line-height:1;display:inline-flex}.heart{color:var(--danger);flex-shrink:0;font-size:.8rem;line-height:1}.heart-extra,.heart-empty{color:var(--ink-soft);margin-left:.2rem;font-size:.75rem}.taboo-row{color:var(--ink-soft);font-size:.9rem}.taboo{color:var(--ink);font-weight:700}.taboo.hidden{color:var(--blast-deep);letter-spacing:.12em}.hint{color:var(--ink-soft);margin:auto 0 0;font-size:.82rem;line-height:1.5}.chat-panel{flex-direction:column;min-height:0;display:flex;overflow:hidden}.log{overscroll-behavior:contain;flex-direction:column;flex:auto;gap:.65rem;min-height:0;padding:1rem;display:flex;overflow-y:auto}.composer,.guesser{flex-shrink:0}.chat-footer{background:#fff6ebfa;border-radius:0 0 .85rem .85rem;flex-direction:column;flex-shrink:0;display:flex}.bubble{border:1.5px solid var(--line);background:#fff;border-radius:.85rem;max-width:85%;padding:.65rem .85rem;animation:.28s ease-out pop}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.bubble.mine{background:#ffe0c2;border-color:#e85d0459;align-self:flex-end}.bubble.system{text-align:center;background:#2a9d8f1f;border-color:#2a9d8f59;align-self:center;max-width:95%;font-size:.92rem}.bubble.system.bomb,.bubble.system.guess-wrong{background:#d628281f;border-color:#d6282859}.bubble.system.guess-right,.bubble.system.win{background:#e85d0429;border-color:#e85d0473;font-weight:600}.bubble-name{color:var(--ink-soft);margin-bottom:.2rem;font-size:.75rem;font-weight:700;display:block}.bubble p{word-break:break-word;margin:0;line-height:1.5}.composer,.guesser{border-top:1.5px solid var(--line);gap:.5rem;padding:.75rem 1rem;display:flex}.guesser{background:#e85d040f;padding-top:.55rem}.guess-btn{background:var(--smoke)!important}.guess-btn:hover{background:#241c17!important}button:disabled,input:disabled{opacity:.55;cursor:not-allowed}.overlay{z-index:20;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1c141073;place-items:center;padding:1.25rem;animation:.25s ease-out fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}to{opacity:1}}.overlay-card{background:var(--paper);border:2px solid var(--ink);width:min(100%,26rem);box-shadow:var(--shadow);text-align:center;border-radius:1.1rem;padding:1.5rem;animation:.35s ease-out rise}.overlay-kicker{font-family:var(--font-display);color:var(--blast);letter-spacing:.12em;margin:0;font-size:1.1rem}.overlay-card h2{margin:.35rem 0 1rem;font-size:1.25rem;line-height:1.4}.overlay-taboos{text-align:left;color:var(--ink-soft);flex-direction:column;gap:.4rem;margin:0 0 1.25rem;padding:0;font-size:.95rem;list-style:none;display:flex}@media (width<=820px){.topbar{grid-template-columns:1fr auto;grid-template-areas:"brand actions""topic topic"}.brand-inline{grid-area:brand}.topbar-right{grid-area:actions}.timer{min-width:auto;font-size:1.15rem}.topic-row{grid-area:topic;justify-self:stretch;max-width:none}.topic-pill{border-radius:.75rem}.board{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr}.roster{order:2;max-height:38%;overflow-y:auto}.chat-panel{order:1;height:auto;min-height:0}}.bomb-fx{z-index:80;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.bomb-fx-flash{background:radial-gradient(circle at 50% 45%,#ffdc78d9,#e85d0473 35%,#0000 70%);animation:.7s ease-out both bomb-flash;position:absolute;inset:0}.bomb-fx-shock{border:3px solid #c43c00bf;border-radius:50%;width:4rem;height:4rem;animation:.75s ease-out both bomb-shock;position:absolute}.bomb-fx-core{filter:drop-shadow(0 0 18px #ff8c00b3);font-size:clamp(3.5rem,14vw,6rem);line-height:1;animation:.75s cubic-bezier(.2,.9,.3,1.2) both bomb-core;position:relative}.bomb-fx-spark{--i:0;width:.55rem;height:.55rem;animation:.75s ease-out both bomb-spark;animation-delay:calc(var(--i) * 12ms);transform:rotate(calc(var(--i) * 30deg)) translateY(0);background:#ffb703;border-radius:50%;margin:-.28rem;position:absolute;top:45%;left:50%;box-shadow:0 0 8px #ff7800cc}.bomb-fx-spark:nth-child(odd){background:#e85d04;border-radius:2px;width:.4rem;height:.9rem}.shell.is-blasting{animation:.45s ease-out bomb-shake}@keyframes bomb-flash{0%{opacity:1}35%{opacity:.85}to{opacity:0}}@keyframes bomb-shock{0%{opacity:1;transform:scale(.2)}to{opacity:0;transform:scale(18)}}@keyframes bomb-core{0%{opacity:0;transform:scale(.2)rotate(-12deg)}35%{opacity:1;transform:scale(1.25)rotate(4deg)}to{opacity:0;transform:scale(1)rotate(0)}}@keyframes bomb-spark{0%{transform:rotate(calc(var(--i) * 30deg)) translateY(0) scale(1);opacity:1}to{transform:rotate(calc(var(--i) * 30deg)) translateY(-42vh) scale(.2);opacity:0}}@keyframes bomb-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px,3px)}40%{transform:translate(7px,-4px)}60%{transform:translate(-4px,-2px)}80%{transform:translate(3px,2px)}}
