:root{--bg-app: #0f172a;--bg-frame: #1e293b;--bg-screen: #020617;--text-main: #f8fafc;--text-muted: #94a3b8;--border-color: #334155;--accent-color: #38bdf8;--board-bg: #090d16;--bubble-border: rgba(255, 255, 255, .15);--font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--score-badge-bg: rgba(14, 165, 233, .9);--score-badge-text: #ffffff;--header-bg: linear-gradient(180deg, #1e3a8a 0%, #172554 100%);--header-border: #1e40af;--bubble-shadow: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -2px rgba(0, 0, 0, .3);--selected-outline: #ffffff;--selected-glow: rgba(255, 255, 255, .45)}[data-theme=pocketpc]{--bg-app: #1e2430;--bg-frame: #cbd5e1;--bg-screen: #ffffff;--text-main: #0f172a;--text-muted: #475569;--border-color: #94a3b8;--accent-color: #0284c7;--board-bg: #e2e8f0;--bubble-border: rgba(0, 0, 0, .2);--header-bg: linear-gradient(180deg, #2563eb 0%, #1d4ed8 45%, #1e40af 100%);--header-border: #172554;--header-text: #ffffff;--header-icon: #bfdbfe;--board-inset: inset 0 3px 6px rgba(0, 0, 0, .25), inset 0 -1px 2px rgba(255, 255, 255, .8);--btn-bg: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);--btn-border: #94a3b8;--btn-text: #1e293b;--btn-hover: #f1f5f9;--btn-active: #cbd5e1;--score-badge-bg: #0369a1;--score-badge-text: #ffffff;--bubble-red: radial-gradient(circle at 35% 30%, #ff8a80, #f44336 45%, #b71c1c 95%);--bubble-blue: radial-gradient(circle at 35% 30%, #93c5fd, #2563eb 45%, #1e3a8a 95%);--bubble-green: radial-gradient(circle at 35% 30%, #b9f6ca, #16a34a 45%, #14532d 95%);--bubble-yellow: radial-gradient(circle at 35% 30%, #fff59d, #eab308 45%, #854d0e 95%);--bubble-purple: radial-gradient(circle at 35% 30%, #f5d0fe, #d946ef 45%, #701a75 95%);--selected-outline: #ffffff;--selected-glow: rgba(255, 255, 255, .55)}[data-theme=palmos]{--bg-app: #283020;--bg-frame: #474f3e;--bg-screen: #8ea876;--text-main: #142008;--text-muted: #2f4018;--border-color: #2b391a;--accent-color: #1a2c0b;--board-bg: #859f6d;--bubble-border: #233412;--header-bg: #748d5d;--header-border: #3b4e26;--header-text: #101c05;--header-icon: #1f330e;--font-family: "Courier New", Courier, monospace;--board-inset: inset 0 2px 4px rgba(0, 0, 0, .4);--btn-bg: #7d9664;--btn-border: #3b4e26;--btn-text: #101c05;--btn-hover: #8ca771;--btn-active: #6c8255;--score-badge-bg: #1c2e0d;--score-badge-text: #8ea876;--bubble-red: radial-gradient(circle at 35% 30%, #c46868, #882222 65%, #380808 100%);--bubble-blue: radial-gradient(circle at 35% 30%, #93c5fd, #1d4ed8 65%, #0f172a 100%);--bubble-green: radial-gradient(circle at 35% 30%, #7db87d, #276927 65%, #0b310b 100%);--bubble-yellow: radial-gradient(circle at 35% 30%, #d8ca77, #9b8a25 65%, #3d3506 100%);--bubble-purple: radial-gradient(circle at 35% 30%, #f472b6, #a21caf 65%, #4a044e 100%);--selected-outline: #0a1203;--selected-glow: rgba(10, 18, 3, .5)}[data-theme=modern]{--bg-app: #0b0f19;--bg-frame: #111827;--bg-screen: #1e293b;--text-main: #f3f4f6;--text-muted: #9ca3af;--border-color: #374151;--accent-color: #38bdf8;--board-bg: #0f172a;--bubble-border: rgba(255, 255, 255, .2);--header-bg: #111827;--header-border: #374151;--header-text: #f9fafb;--header-icon: #38bdf8;--board-inset: inset 0 2px 8px rgba(0, 0, 0, .5);--btn-bg: #1f2937;--btn-border: #4b5563;--btn-text: #f9fafb;--btn-hover: #374151;--btn-active: #111827;--score-badge-bg: #0284c7;--score-badge-text: #ffffff;--bubble-red: radial-gradient(circle at 35% 30%, #fca5a5, #ef4444 60%, #991b1b 100%);--bubble-blue: radial-gradient(circle at 35% 30%, #93c5fd, #2563eb 60%, #1e3a8a 100%);--bubble-green: radial-gradient(circle at 35% 30%, #86efac, #22c55e 60%, #15803d 100%);--bubble-yellow: radial-gradient(circle at 35% 30%, #fef08a, #eab308 60%, #a16207 100%);--bubble-purple: radial-gradient(circle at 35% 30%, #f5d0fe, #d946ef 60%, #701a75 100%);--selected-outline: #ffffff;--selected-glow: rgba(56, 189, 248, .6)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}html,body{width:100%;height:100%;height:100dvh;background-color:var(--bg-app);font-family:var(--font-family);color:var(--text-main);overflow:hidden;touch-action:manipulation}#app{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0}.device-shell{display:flex;flex-direction:column;width:100%;max-width:520px;height:100%;max-height:100dvh;background:var(--bg-frame);position:relative;overflow:hidden;box-shadow:0 20px 35px -10px #00000080,0 0 0 1px var(--border-color)}@media(min-width:560px){#app{padding:12px}.device-shell{border-radius:20px;max-height:94dvh}}.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--header-bg);border-bottom:2px solid var(--header-border);color:var(--header-text, var(--text-main));flex-shrink:0}.brand{display:flex;align-items:center;gap:8px}.brand-icon{width:26px;height:26px;border-radius:50%;background:var(--bubble-blue);box-shadow:0 2px 4px #0000004d;position:relative}.brand-icon:after{content:"";position:absolute;top:4px;left:5px;width:7px;height:4px;border-radius:50%;background:#ffffffd9;transform:rotate(-30deg)}.brand-title{font-size:1.15rem;font-weight:800;letter-spacing:.5px;text-transform:uppercase}.mode-badge{font-size:.72rem;font-weight:600;padding:2px 7px;border-radius:10px;background:#fff3;letter-spacing:.5px;text-transform:uppercase}.header-actions{display:flex;align-items:center;gap:6px}.icon-btn{background:transparent;border:none;color:var(--header-icon, var(--text-main));width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,transform .1s}.icon-btn:hover{background:#ffffff26}.icon-btn:active{transform:scale(.92)}.icon-btn svg{width:20px;height:20px;fill:currentColor}.scoreboard{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:8px 12px;background:var(--bg-frame);border-bottom:1px solid var(--border-color);flex-shrink:0}.score-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 4px;background:var(--bg-screen);border-radius:8px;border:1px solid var(--border-color)}.score-label{font-size:.68rem;font-weight:700;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.score-value{font-size:1.15rem;font-weight:800;color:var(--accent-color);transition:transform .15s}.score-value.bump{transform:scale(1.2);color:#10b981}.remaining-badge{color:var(--text-main)}.remaining-badge.bonus-active{color:#10b981;font-weight:800}.board-container{flex:1;display:flex;align-items:center;justify-content:center;padding:8px;position:relative;background:var(--bg-screen);overflow:hidden}.grid-wrapper{position:relative;width:100%;max-width:480px;aspect-ratio:1 / 1;background:var(--board-bg);border-radius:12px;padding:6px;box-shadow:var(--board-inset, inset 0 2px 6px rgba(0,0,0,.3));border:2px solid var(--border-color);display:flex;align-items:center;justify-content:center}.grid-board{display:grid;width:100%;height:100%;gap:3px;position:relative}.grid-board[data-grid="10x10"]{grid-template-columns:repeat(10,1fr);grid-template-rows:repeat(10,1fr)}.grid-board[data-grid="12x12"]{grid-template-columns:repeat(12,1fr);grid-template-rows:repeat(12,1fr);gap:2px}.cell{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.bubble{width:92%;height:92%;border-radius:50%;position:relative;cursor:pointer;transition:transform .12s ease-out,filter .15s ease;box-shadow:var(--bubble-shadow);display:flex;align-items:center;justify-content:center}.bubble:before{content:"";position:absolute;top:10%;left:14%;width:40%;height:25%;border-radius:50%;background:radial-gradient(ellipse at center,#ffffffd9,#fff0 80%);transform:rotate(-25deg);pointer-events:none}.bubble:after{content:"";position:absolute;bottom:8%;left:20%;width:60%;height:20%;border-radius:50%;background:radial-gradient(ellipse at center,#ffffff4d,#fff0 75%);pointer-events:none}.bubble[data-color=red]{background:var(--bubble-red);border:1px solid var(--bubble-border)}.bubble[data-color=blue]{background:var(--bubble-blue);border:1px solid var(--bubble-border)}.bubble[data-color=green]{background:var(--bubble-green);border:1px solid var(--bubble-border)}.bubble[data-color=yellow]{background:var(--bubble-yellow);border:1px solid var(--bubble-border)}.bubble[data-color=purple]{background:var(--bubble-purple);border:1px solid var(--bubble-border)}.bubble-symbol{font-size:clamp(.7rem,2vw,1.1rem);font-weight:900;color:#ffffffd9;text-shadow:0 1px 2px rgba(0,0,0,.6);pointer-events:none;display:none}[data-colorblind=true] .bubble-symbol{display:block}.bubble.selected{transform:scale(1.05);filter:brightness(1.1);z-index:5}.bubble.previewed{filter:brightness(1.05);z-index:4}.cluster-outline-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:15;overflow:visible}.cluster-contour-path{fill:var(--cluster-fill, rgba(255, 255, 255, .07));stroke:var(--selected-outline, #ffffff);stroke-width:3.2px;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 4px var(--selected-glow, rgba(255, 255, 255, .5))) drop-shadow(0 1px 2px rgba(0,0,0,.4));transition:opacity .12s ease;animation:cluster-contour-pulse 1.3s infinite alternate ease-in-out}@keyframes cluster-contour-pulse{0%{stroke-opacity:.88;filter:drop-shadow(0 0 3px var(--selected-glow)) drop-shadow(0 1px 2px rgba(0,0,0,.35))}to{stroke-opacity:1;filter:drop-shadow(0 0 6px var(--selected-glow)) drop-shadow(0 1px 3px rgba(0,0,0,.45))}}@keyframes bubble-bounce{0%{transform:scale(1.04)}to{transform:scale(1.1)}}.bubble.popping{animation:bubble-pop .22s cubic-bezier(.175,.885,.32,1.275) forwards;pointer-events:none;z-index:10}@keyframes bubble-pop{0%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.7;filter:brightness(1.6)}to{transform:scale(.1);opacity:0}}.bubble.hinted{animation:bubble-hint .7s infinite alternate ease-in-out;box-shadow:0 0 10px 2px #facc15}@keyframes bubble-hint{0%{transform:scale(1)}to{transform:scale(1.12)}}.score-tooltip{position:absolute;pointer-events:none;z-index:50;background:var(--score-badge-bg);color:var(--score-badge-text);padding:4px 10px;border-radius:12px;font-size:.85rem;font-weight:800;box-shadow:0 4px 12px #00000059;transform:translate(-50%,-120%) scale(.9);opacity:0;transition:opacity .15s,transform .15s;white-space:nowrap;letter-spacing:.5px}.score-tooltip.visible{opacity:1;transform:translate(-50%,-135%) scale(1);animation:tooltip-pulse 1s infinite alternate ease-in-out}.score-tooltip:after{content:"";position:absolute;bottom:-6px;left:50%;transform:translate(-50%);border-width:6px 6px 0;border-style:solid;border-color:var(--score-badge-bg) transparent transparent transparent}@keyframes tooltip-pulse{0%{transform:translate(-50%,-135%) scale(1)}to{transform:translate(-50%,-140%) scale(1.05)}}.bottom-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg-frame);border-top:1px solid var(--border-color);gap:10px;flex-shrink:0}.btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 14px;border-radius:10px;border:1px solid var(--btn-border, var(--border-color));background:var(--btn-bg, var(--bg-screen));color:var(--btn-text, var(--text-main));font-size:.92rem;font-weight:700;cursor:pointer;transition:all .12s ease;min-height:44px}.btn:hover:not(:disabled){background:var(--btn-hover, rgba(255, 255, 255, .1))}.btn:active:not(:disabled){background:var(--btn-active, rgba(0, 0, 0, .2));transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,#0284c7,#0369a1);border-color:#0369a1;color:#fff;box-shadow:0 2px 4px #0003}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,#0369a1,#075985)}.btn-undo,.btn-new{flex:1}.btn-hint{width:44px;padding:0}.badge-counter{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:10px;font-size:.75rem;font-weight:800;background:#0003}.palmos-bezel{display:none;background:#384232;border-top:2px solid #232c1e;padding:6px 12px;align-items:center;justify-content:space-around;flex-shrink:0}[data-theme=palmos] .palmos-bezel{display:flex}.silkscreen-btn{background:#2b3326;border:1px solid #1c2219;color:#8da372;font-size:.72rem;font-weight:800;padding:4px 10px;border-radius:6px;cursor:pointer;text-transform:uppercase}dialog{border:1px solid var(--border-color);border-radius:16px;padding:0;background:var(--bg-frame);color:var(--text-main);max-width:440px;width:90%;margin:auto;box-shadow:0 25px 50px -12px #000000a6}dialog::backdrop{background:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{display:flex;flex-direction:column;max-height:85dvh}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--header-bg);border-bottom:1px solid var(--header-border);color:var(--header-text, var(--text-main))}.modal-title{font-size:1.15rem;font-weight:800}.modal-body{padding:18px;overflow-y:auto;display:flex;flex-direction:column;gap:16px;font-size:.95rem;line-height:1.5}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 18px;border-top:1px solid var(--border-color);background:var(--bg-screen)}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-weight:700;font-size:.88rem;color:var(--text-main)}.select-control,.input-control{padding:9px 12px;border-radius:8px;border:1px solid var(--border-color);background:var(--bg-screen);color:var(--text-main);font-family:inherit;font-size:.92rem}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.toggle-switch{position:relative;width:46px;height:26px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#475569;transition:.2s;border-radius:34px}.toggle-slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;bottom:3px;background-color:#fff;transition:.2s;border-radius:50%}input:checked+.toggle-slider{background-color:var(--accent-color)}input:checked+.toggle-slider:before{transform:translate(20px)}.gameover-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.stat-box{background:var(--bg-screen);border:1px solid var(--border-color);border-radius:10px;padding:10px;text-align:center}.stat-box .val{font-size:1.4rem;font-weight:800;color:var(--accent-color)}.stat-box .lbl{font-size:.72rem;font-weight:700;color:var(--text-muted);text-transform:uppercase}.new-record-badge{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;padding:6px 12px;border-radius:20px;font-weight:800;font-size:.85rem;text-align:center;animation:bounce-badge 1s infinite alternate ease-in-out}@keyframes bounce-badge{0%{transform:scale(.98)}to{transform:scale(1.04)}}.rule-example{background:var(--bg-screen);padding:10px;border-radius:8px;border-left:4px solid var(--accent-color);font-size:.9rem}
