:root{--bg-dark: #0D1011;--bg-card: #15191B;--bg-card-glass: rgba(21, 25, 27, .85);--border-subtle: #242B2E;--border-gold: #C69F4E;--text-main: #ECEFF1;--text-muted: #8B989E;--text-dim: #546269;--ruby-base: #B83A4B;--ruby-glow: rgba(216, 88, 105, .4);--amber-base: #D68A2E;--amber-glow: rgba(236, 168, 78, .4);--emerald-base: #2B825B;--emerald-glow: rgba(68, 164, 120, .4);--sapphire-base: #2E62A2;--sapphire-glow: rgba(75, 128, 192, .4);--lead-black: #0B0D0F;--lead-locked: #8A6E33;--lead-conflict: #D4485C;--font-thai: "Prompt", "Anuphan", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{width:100%;height:100%;background-color:var(--bg-dark);color:var(--text-main);font-family:var(--font-thai);font-size:15px;line-height:1.4;overflow-x:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}.app-viewport{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:8px 12px calc(12px + env(safe-area-inset-bottom,0px))}.frame{width:100%;max-width:390px;display:flex;flex-direction:column;align-items:center;gap:8px;margin:0 auto}.topbar{width:100%;display:flex;align-items:center;justify-content:space-between;padding:4px 6px;background:var(--bg-card-glass);border:1px solid var(--border-subtle);border-radius:12px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.level-info{display:flex;flex-direction:column;cursor:pointer;padding:4px 8px;border-radius:8px;transition:background .2s ease}.level-info:hover{background:#ffffff0d}.lvl-title{font-size:1.05rem;font-weight:500;color:var(--text-main);display:flex;align-items:center;gap:4px}.lvl-total{font-size:.8rem;color:var(--text-dim)}.dots{display:flex;gap:4px;margin-top:3px}.dot{width:5px;height:5px;border-radius:50%;background:var(--border-subtle);transition:all .3s ease}.dot.done{background:var(--border-gold);box-shadow:0 0 4px var(--border-gold)}.dot.active{background:var(--text-main);transform:scale(1.2)}.header-controls{display:flex;align-items:center;gap:6px}.icon-btn{background:#1c2226;border:1px solid var(--border-subtle);color:var(--text-main);width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1)}.icon-btn:hover:not(:disabled){background:#283137;border-color:var(--border-gold);color:#fff}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.window-container{width:100%;max-width:340px;aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;position:relative;margin:4px 0;filter:drop-shadow(0 10px 24px rgba(0,0,0,.6))}.stained-glass-window{width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,#0b0e0f,#060809);cursor:pointer}.stained-glass-window .cell{cursor:pointer;transition:fill .15s ease-out}.stained-glass-window .cell.lock{cursor:default}.msg-banner{width:100%;min-height:38px;padding:6px 12px;border-radius:8px;background:#121618a6;border:1px solid var(--border-subtle);color:var(--text-muted);font-size:.85rem;text-align:center;display:flex;align-items:center;justify-content:center;transition:all .25s ease}.msg-banner.conflict{background:#d4485c26;border-color:var(--lead-conflict);color:#ffa2b0}.msg-banner.warning{background:#c69f4e26;border-color:var(--border-gold);color:#ffe29e}.msg-banner.success{background:#44a47826;border-color:#44a478;color:#92e8c0}.palette-wrapper{width:100%;margin-top:2px}.palette{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:6px;background:var(--bg-card-glass);border:1px solid var(--border-subtle);border-radius:14px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.palette-btn{aspect-ratio:1 / 1;border-radius:10px;border:2px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);position:relative;background-color:#171c1e}.palette-btn:active{transform:scale(.93)}.palette-btn.active{border-color:#fff;box-shadow:0 0 12px #ffffff80,inset 0 0 8px #fff3;transform:scale(1.05)}.palette-btn[data-slot="0"]{background:radial-gradient(circle at 36% 28%,#d85869,#b83a4b 60%,#882433)}.palette-btn[data-slot="1"]{background:radial-gradient(circle at 36% 28%,#eca84e,#d68a2e 60%,#9c5e18)}.palette-btn[data-slot="2"]{background:radial-gradient(circle at 36% 28%,#44a478,#2b825b 60%,#1b583d)}.palette-btn[data-slot="3"]{background:radial-gradient(circle at 36% 28%,#4b80c0,#2e62a2 60%,#1b3e6e)}.palette-btn[data-slot="-1"]{background:radial-gradient(circle at 40% 32%,#2a3133,#1b1e22 60%,#121517);border:1px dashed #3D4A50}.palette-btn svg{width:20px;height:20px;stroke:#ffffffe6;fill:none}.palette-btn .pal-name{font-size:.65rem;color:#ffffffd9;font-weight:500}.modal-backdrop{position:fixed;inset:0;background:#060809d9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:1000;opacity:0;pointer-events:none;transition:opacity .3s ease}.modal-backdrop.show{opacity:1;pointer-events:auto}.modal-card{width:100%;max-width:360px;background:#14181a;border:1px solid var(--border-gold);border-radius:18px;padding:24px 20px;text-align:center;box-shadow:0 16px 40px #000c,0 0 24px #c69f4e33;transform:translateY(20px) scale(.96);transition:transform .3s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.modal-backdrop.show .modal-card{transform:translateY(0) scale(1)}.victory-title{font-size:1.4rem;font-weight:600;color:#fff3d6;margin-bottom:4px}.victory-subtitle{font-size:.9rem;color:var(--text-muted);margin-bottom:20px}.victory-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;background:#1b2124;border-radius:12px;padding:12px 8px;margin-bottom:20px}.stat-item{display:flex;flex-direction:column;gap:2px}.stat-label{font-size:.72rem;color:var(--text-dim)}.stat-val{font-size:1.05rem;font-weight:600;color:var(--border-gold);font-family:var(--font-mono)}.victory-actions{display:flex;gap:10px}.btn{flex:1;height:44px;border-radius:10px;font-family:var(--font-thai);font-size:.95rem;font-weight:500;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:all .2s ease;border:none}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(135deg,#d4af37,#aa820a);color:#0a0c0e;font-weight:600;box-shadow:0 4px 14px #d4af3766}.btn-secondary{background:#242d31;border:1px solid var(--border-subtle);color:var(--text-main)}.btn-secondary:hover{background:#313b40}.level-selector-card{max-height:80vh;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.close-btn{background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer}.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;overflow-y:auto;padding:4px 2px;max-height:55vh}.level-tile{aspect-ratio:1 / 1;background:#1b2124;border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease;position:relative}.level-tile:hover{border-color:var(--border-gold);color:#fff}.level-tile.current{border-color:#fff;color:#fff;background:#283338}.level-tile.completed{border-color:var(--border-gold);color:var(--border-gold);background:#c69f4e1a}.level-tile.completed:after{content:"✓";position:absolute;top:2px;right:4px;font-size:.65rem;color:var(--border-gold)}.toast-msg{position:fixed;bottom:calc(85px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%) translateY(20px);background:#14181af2;border:1px solid var(--border-gold);color:var(--text-main);padding:8px 16px;border-radius:20px;font-size:.85rem;box-shadow:0 6px 18px #000000b3;opacity:0;pointer-events:none;transition:all .25s cubic-bezier(.16,1,.3,1);z-index:2000;white-space:nowrap}.toast-msg.show{opacity:1;transform:translate(-50%) translateY(0)}@media (max-width: 340px){.window-container{max-width:270px}.palette{gap:4px;padding:4px}.palette-btn .pal-name{font-size:.58rem}}
