:root{color-scheme:light dark;--page-bg: #fbf9f5;--page-gradient: linear-gradient(-45deg, #dbeafe, #ede9fe, #fde2e4, #fef3c7, #d1fae5);--text: #2b2b33;--text-strong: #1f1f26;--text-muted: #6b6b76;--text-faint: #8a8a93;--text-instructions: #3a3a42;--panel-bg: #ffffff;--panel-shadow: rgba(43, 43, 51, .08);--panel-shadow-strong: rgba(43, 43, 51, .18);--surface-tint: rgba(43, 43, 51, .06);--surface-tint-soft: rgba(43, 43, 51, .03);--border-soft: rgba(43, 43, 51, .12);--border-hairline: rgba(43, 43, 51, .08);--ink: #2b2b33;--ink-contrast: #ffffff;--btn-secondary-bg: rgba(43, 43, 51, .08);--btn-secondary-text: #2b2b33;--error: #b3261e;--accent: #c9a227;--accent-soft: rgba(201, 162, 39, .12);--accent-soft-strong: rgba(201, 162, 39, .15);--accent-ring: rgba(201, 162, 39, .5);--overlay-bg: rgba(251, 249, 245, .85)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--page-bg: #1c1c22;--page-gradient: linear-gradient(-45deg, #1e2a4a, #2d1b4e, #3a1a24, #4a3418, #163a2e);--text: #e8e6f0;--text-strong: #f5f4fa;--text-muted: #a5a3b0;--text-faint: #8b8996;--text-instructions: #cfcdd8;--panel-bg: #26262f;--panel-shadow: rgba(0, 0, 0, .35);--panel-shadow-strong: rgba(0, 0, 0, .5);--surface-tint: rgba(232, 230, 240, .08);--surface-tint-soft: rgba(232, 230, 240, .04);--border-soft: rgba(232, 230, 240, .16);--border-hairline: rgba(232, 230, 240, .1);--ink: #f0eff5;--ink-contrast: #1c1c22;--btn-secondary-bg: rgba(232, 230, 240, .1);--btn-secondary-text: #e8e6f0;--error: #ff6b6b;--accent: #e0b84a;--accent-soft: rgba(224, 184, 74, .18);--accent-soft-strong: rgba(224, 184, 74, .22);--accent-ring: rgba(224, 184, 74, .55);--overlay-bg: rgba(28, 28, 34, .85)}}:root[data-theme=dark]{--page-bg: #1c1c22;--page-gradient: linear-gradient(-45deg, #1e2a4a, #2d1b4e, #3a1a24, #4a3418, #163a2e);--text: #e8e6f0;--text-strong: #f5f4fa;--text-muted: #a5a3b0;--text-faint: #8b8996;--text-instructions: #cfcdd8;--panel-bg: #26262f;--panel-shadow: rgba(0, 0, 0, .35);--panel-shadow-strong: rgba(0, 0, 0, .5);--surface-tint: rgba(232, 230, 240, .08);--surface-tint-soft: rgba(232, 230, 240, .04);--border-soft: rgba(232, 230, 240, .16);--border-hairline: rgba(232, 230, 240, .1);--ink: #f0eff5;--ink-contrast: #1c1c22;--btn-secondary-bg: rgba(232, 230, 240, .1);--btn-secondary-text: #e8e6f0;--error: #ff6b6b;--accent: #e0b84a;--accent-soft: rgba(224, 184, 74, .18);--accent-soft-strong: rgba(224, 184, 74, .22);--accent-ring: rgba(224, 184, 74, .55);--overlay-bg: rgba(28, 28, 34, .85)}*{box-sizing:border-box}html{min-height:100%}body{margin:0;min-height:100%;background-color:var(--page-bg);background-image:var(--page-gradient);background-size:400% 400%;background-attachment:fixed;animation:gradient-flow 20s ease infinite;color:var(--text);font-family:-apple-system,Segoe UI,system-ui,sans-serif;-webkit-tap-highlight-color:transparent}@keyframes gradient-flow{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@media(prefers-reduced-motion:reduce){body{animation:none}}h1,h2{font-family:Iowan Old Style,Palatino Linotype,Georgia,serif;font-weight:600;letter-spacing:.01em;margin:0}button{font-family:inherit;cursor:pointer}.app-shell{max-width:960px;margin:0 auto;padding:20px 16px 48px}.app-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.app-header h1{font-size:clamp(22px,4vw,30px);color:var(--text-strong)}.header-actions{display:flex;gap:8px}.menu-wrapper{position:relative}.menu-dropdown{display:none;position:absolute;top:calc(100% + 8px);left:0;z-index:10;flex-direction:column;gap:2px;min-width:180px;padding:6px;background:var(--panel-bg);border:1px solid var(--border-hairline);border-radius:14px;box-shadow:0 12px 40px var(--panel-shadow-strong)}.menu-dropdown.open{display:flex}.menu-item{display:block;width:100%;text-align:left;border:none;background:transparent;border-radius:9px;padding:10px 12px;font-size:14px;font-weight:600;color:var(--text)}.menu-item:hover{background:var(--surface-tint)}.mute-toggle{border:none;background:var(--surface-tint);border-radius:999px;width:40px;height:40px;font-size:18px;line-height:1}.setup-panel{background:var(--panel-bg);border:1px solid var(--border-hairline);border-radius:20px;padding:28px;box-shadow:0 12px 40px var(--panel-shadow)}.setup-subtitle{color:var(--text-muted);margin:6px 0 24px}.setup-panel h2{font-size:16px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin:24px 0 10px}.segmented{display:inline-flex;background:var(--surface-tint);border-radius:12px;padding:4px;gap:4px}.segmented.small{padding:3px}.segmented-btn{border:none;background:transparent;border-radius:9px;padding:8px 16px;font-size:14px;color:var(--text-muted);transition:background .15s ease,color .15s ease}.segmented.small .segmented-btn{padding:6px 12px;font-size:13px}.segmented-btn.active{background:var(--ink);color:var(--ink-contrast)}.player-rows{display:flex;flex-direction:column;gap:12px}.player-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--surface-tint-soft);border-radius:14px;padding:10px 12px}.name-input{flex:1 1 140px;min-width:100px;border:1px solid var(--border-soft);border-radius:10px;padding:9px 12px;font-size:14px;background:var(--panel-bg);color:var(--text)}.difficulty-select{border:1px solid var(--border-soft);border-radius:10px;padding:8px 10px;font-size:14px;background:var(--panel-bg);color:var(--text)}.swatch-picker{display:flex;gap:6px}.swatch-btn{width:26px;height:26px;border-radius:50%;border:2px solid transparent;padding:0}.swatch-btn.selected{border-color:var(--ink);transform:scale(1.1)}.swatch-btn.taken:not(.selected){opacity:.25;cursor:not-allowed}.avatar-picker{display:flex;flex-wrap:wrap;gap:4px}.avatar-btn{width:30px;height:30px;border-radius:50%;border:2px solid transparent;padding:0;background:var(--surface-tint);font-size:15px;line-height:1}.avatar-btn.selected{border-color:var(--ink);background:var(--accent-soft);transform:scale(1.1)}.setup-errors{color:var(--error);font-size:14px;margin:16px 0 0;padding-left:20px}.btn{border:none;border-radius:12px;padding:12px 22px;font-size:15px;font-weight:600}.btn.primary{background:var(--ink);color:var(--ink-contrast)}.btn.secondary{background:var(--btn-secondary-bg);color:var(--btn-secondary-text)}.start-btn{margin-top:24px;width:100%}.high-scores-link{display:block;margin:20px auto 0}.high-score-rows{display:flex;flex-direction:column;gap:8px;margin:20px 0}.high-score-row{display:grid;grid-template-columns:24px 1fr auto auto auto;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:var(--surface-tint-soft);font-size:14px}.high-score-rank{font-weight:700;color:var(--text-faint)}.high-score-name{text-align:left;font-weight:600}.high-score-board,.high-score-date{font-size:12px;color:var(--text-muted);white-space:nowrap}.high-score-value{font-weight:700;color:var(--accent);white-space:nowrap}.instructions{margin-top:12px;padding-top:16px;border-top:1px solid var(--border-hairline)}.instructions h2{font-size:16px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin:20px 0 8px}.instructions h2:first-child{margin-top:0}.instructions p{margin:0 0 10px;font-size:14px;line-height:1.5;color:var(--text-instructions)}.room-link-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--surface-tint-soft);border-radius:14px;padding:10px 12px;margin-top:8px}.room-link-text{flex:1 1 200px;font-size:13px;color:var(--text);word-break:break-all;background:none}.game-screen{display:grid;grid-template-columns:220px 1fr;gap:24px;align-items:start;position:relative}.game-toolbar{grid-column:1 / -1;display:flex;justify-content:flex-end}.quit-btn{padding:8px 16px;font-size:13px}.scoreboard-container{background:var(--panel-bg);border:1px solid var(--border-hairline);border-radius:18px;padding:18px;box-shadow:0 12px 40px var(--panel-shadow)}.turn-banner{font-size:14px;font-weight:600;color:var(--text-muted);margin-bottom:14px;min-height:18px}.scoreboard-rows{display:flex;flex-direction:column;gap:10px}.score-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;transition:background .2s ease,box-shadow .2s ease}.score-row.active{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent-ring)}.avatar-badge{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-size:15px;line-height:1;flex-shrink:0;box-shadow:inset 0 0 0 1px #0000001a}.score-row .name{flex:1;font-size:14px;display:flex;flex-direction:column;gap:1px}.score-row .badge{font-size:11px;color:var(--text-faint)}.score-row .score{font-size:18px;font-weight:700;transition:transform .2s ease}.score.pop{transform:scale(1.35)}.board-wrapper{display:flex;justify-content:center;background:var(--panel-bg);border:1px solid var(--border-hairline);border-radius:20px;padding:20px;box-shadow:0 12px 40px var(--panel-shadow)}.board-svg{width:min(92vw,560px);height:auto;touch-action:none;-webkit-user-select:none;user-select:none}.box{fill:transparent;fill-opacity:0;transition:fill-opacity .26s ease-out,fill .26s ease-out}.box.owned{fill-opacity:.55;filter:drop-shadow(0 1px 2px rgba(0,0,0,.15))}.box-shine{fill-opacity:0;mix-blend-mode:soft-light;pointer-events:none;transition:fill-opacity .32s ease-out}.box-shine.owned{fill-opacity:.9}.sparks-group{pointer-events:none}.box-spark{cx:var(--start-x);cy:var(--start-y);opacity:1;animation:box-spark-burst .55s ease-out forwards}@keyframes box-spark-burst{to{cx:var(--end-x);cy:var(--end-y);r:.5px;opacity:0}}.edge-visible{stroke:var(--line-guide-color);stroke-width:2;stroke-linecap:round;transition:stroke-dashoffset .19s ease-out,stroke .19s ease-out,stroke-width .19s ease-out}.edge-hit{fill:none;stroke:#0000;cursor:pointer}.edge-hit.drawn{cursor:default;pointer-events:none}.dot-visible{fill:var(--dot-color);filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.18));transition:fill .15s ease-out,r .15s ease-out}.dot-visible.selected{fill:var(--selected-color);r:8}.dot-visible.legal-target{fill:var(--highlight-color);r:7}.dot-visible.drag-hover{fill:var(--selected-color);r:8}.dot-hit{fill:#0000;cursor:pointer}.drag-preview{stroke:var(--selected-color);stroke-width:4;stroke-linecap:round;pointer-events:none;opacity:0}.drag-preview.active{opacity:1}.game-over-overlay{display:none;position:absolute;inset:0;align-items:center;justify-content:center;background:var(--overlay-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:20px}.game-over-overlay.visible{display:flex}.game-over-panel{position:relative;background:var(--panel-bg);border:1px solid var(--border-hairline);border-radius:20px;padding:28px 32px;box-shadow:0 20px 60px var(--panel-shadow-strong);text-align:center;min-width:260px}.game-over-panel.win{animation:panel-pop .42s ease-out}.game-over-panel.lose{animation:panel-slump .5s ease-out}@keyframes panel-pop{0%{transform:scale(.85);opacity:0}60%{transform:scale(1.04);opacity:1}to{transform:scale(1)}}@keyframes panel-slump{0%{transform:scale(1) rotate(0);opacity:0}40%{transform:scale(.97) rotate(-1.5deg);opacity:1}70%{transform:scale(.99) rotate(1deg)}to{transform:scale(1) rotate(0)}}.effect-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit}.firework-particle{position:absolute;width:7px;height:7px;border-radius:50%;transform:translate(0);opacity:0;animation:firework-burst .9s ease-out forwards}@keyframes firework-burst{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.4);opacity:0}}.raindrop{position:absolute;top:-8%;width:2px;height:14px;border-radius:2px;background:var(--text-muted);opacity:0;animation:raindrop-fall linear infinite}@keyframes raindrop-fall{0%{transform:translateY(0);opacity:0}15%{opacity:.5}90%{opacity:.5}to{transform:translateY(340px);opacity:0}}.game-over-panel h2{font-size:24px;margin-bottom:16px}.series-summary{margin:-8px 0 16px;font-size:13px;color:var(--text-muted)}.final-scores{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.final-score-row{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:10px}.final-score-row.winner{background:var(--accent-soft-strong);font-weight:700}.final-score-row .name{flex:1;text-align:left}.game-over-actions{display:flex;gap:10px;justify-content:center}@media(max-width:640px){.game-screen{grid-template-columns:1fr}.scoreboard-rows{flex-direction:row;flex-wrap:wrap}.score-row{flex:1 1 45%}.high-score-row{grid-template-columns:20px 1fr auto}.high-score-board,.high-score-date{display:none}}
