:root{--bg-dark: #0a0a0c;--accent-blue: #007aff;--glass: rgba(255, 255, 255, .1);--font-main: system-ui, -apple-system, sans-serif}#desktop-gate{position:fixed;inset:0;background:linear-gradient(180deg,#1a0a2e,#0a0a1a);display:flex;align-items:center;justify-content:center;z-index:9999;font-family:system-ui,-apple-system,sans-serif}.dg-card{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 40px;background:#9370db14;border:1px solid rgba(147,112,219,.3);border-radius:24px;max-width:360px;text-align:center}.dg-emoji{font-size:56px;line-height:1}.dg-title{font-size:28px;font-weight:900;letter-spacing:4px;color:#f0e6ff;margin:0}.dg-sub{font-size:15px;color:#f0e6ffa6;line-height:1.5;margin:0}.dg-url{font-size:10px;color:#9370db80;word-break:break-all;margin:0}#dg-qr{border-radius:12px;display:block}:root{--glow-color: #9370db;--glow-intensity: 0}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;overscroll-behavior:none}body{background:linear-gradient(180deg,#1a0a2e,#0a0a1a);font-family:system-ui,-apple-system,sans-serif;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:background .5s ease}#app{width:100vw;height:100vh;height:100dvh;position:relative;overflow:hidden}#app:after{content:"";position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 120px var(--glow-color);opacity:var(--glow-intensity);transition:opacity .3s ease,box-shadow .5s ease;z-index:10}#game-canvas{position:absolute;top:0;left:0;width:100%;height:100%;touch-action:none;cursor:pointer;overflow:hidden}.tap-indicator{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:120px;animation:pulse 1.2s ease-in-out infinite;pointer-events:none;z-index:100;filter:drop-shadow(0 0 20px rgba(255,255,255,.5))}@keyframes pulse{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.7}50%{transform:translate(-50%,-50%) scale(1.3);opacity:1}}@keyframes tap-ripple{0%{transform:translate(-50%,-50%) scale(0);opacity:.5}to{transform:translate(-50%,-50%) scale(2);opacity:0}}.stats-icon{position:fixed;top:16px;left:50%;transform:translate(-50%);font-size:28px;opacity:.5;cursor:pointer;z-index:50;transition:opacity .2s ease,transform .2s ease;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.stats-icon:hover{opacity:.8;transform:translate(-50%) scale(1.1)}.stats-icon:active{transform:translate(-50%) scale(.95)}.stats-modal-overlay{position:fixed;inset:0;background:#000000e6;z-index:1000;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .3s ease}.stats-modal-overlay.active{opacity:1;pointer-events:auto}.stats-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.stats-modal-title{color:#fff;font-size:18px;font-weight:600;opacity:.9}.stats-modal-close{background:none;border:none;color:#fff;font-size:32px;cursor:pointer;opacity:.6;line-height:1;padding:0 8px;transition:opacity .2s ease}.stats-modal-close:hover{opacity:1}.stats-help-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:18px;font-weight:600;width:32px;height:32px;border-radius:50%;cursor:pointer;opacity:.7;transition:opacity .2s ease,background .2s ease;margin-right:8px}.stats-help-btn:hover{opacity:1;background:#fff3}.help-overlay{position:fixed;inset:0;background:#000000f2;z-index:1100;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease}.help-overlay.active{opacity:1;pointer-events:auto}.help-content{position:relative;max-width:90vw;width:400px;padding:40px 24px;text-align:center}.help-close{position:absolute;top:0;right:0;background:none;border:none;color:#fff;font-size:32px;cursor:pointer;opacity:.6;line-height:1;padding:8px;transition:opacity .2s ease}.help-close:hover{opacity:1}.help-text{color:#ffffffe6;font-size:calc(var(--presbyopia-font-size, 18px) * .65);line-height:1.6}.help-text h1{font-size:calc(var(--presbyopia-font-size, 18px) * .85);font-weight:600;margin-bottom:24px;color:#fff}.help-text strong{color:#9370db}.help-text em{color:#fff9;font-style:italic}.help-text hr{border:none;border-top:1px solid rgba(255,255,255,.2);margin:24px 0}.word-flash{position:fixed;inset:0;background:radial-gradient(circle at center,rgba(255,255,255,.4) 0%,transparent 70%);pointer-events:none;z-index:5;opacity:0;transition:opacity .1s ease-out}.word-flash.active{opacity:1;animation:word-flash-fade .4s ease-out forwards}@keyframes word-flash-fade{0%{opacity:1}to{opacity:0}}.stats-modal-content{flex:1;overflow-y:auto;padding:20px;-webkit-overflow-scrolling:touch}.stats-section{margin-bottom:24px}.stats-section-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:8px 0;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.1);user-select:none;-webkit-user-select:none}.stats-section-header:hover{opacity:.9}.stats-section-title{color:#9370db;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;opacity:.8}.stats-collapse-icon{color:#fff6;font-size:10px;transition:transform .2s ease}.stats-section.collapsible .stats-section-body{max-height:0;overflow:hidden;transition:max-height .3s ease}.stats-section.collapsible.expanded .stats-section-body{max-height:1000px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.stats-item{background:#ffffff0d;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:4px}.stats-item-label{color:#ffffff80;font-size:11px;text-transform:uppercase;letter-spacing:.3px}.stats-item-value{color:#fff;font-size:18px;font-weight:600;word-break:break-word}.stats-item-value.small{font-size:14px;font-weight:400}.stats-list{background:#ffffff0d;border-radius:8px;padding:12px}.stats-list-item{color:#ffffffb3;font-size:13px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05)}.stats-list-item:last-child{border-bottom:none}.presbyopia-controls{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#ffffff0d;border-bottom:1px solid rgba(255,255,255,.1)}.font-size-label{color:#fff9;font-size:12px;white-space:nowrap}.presbyopia-controls input[type=range]{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:#fff3;border-radius:2px;outline:none}.presbyopia-controls input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:#9370db;border-radius:50%;cursor:pointer}.presbyopia-controls input[type=range]::-moz-range-thumb{width:20px;height:20px;background:#9370db;border-radius:50%;cursor:pointer;border:none}.font-size-display{color:#fff;font-size:14px;font-weight:600;min-width:45px;text-align:right}.stats-modal-content.presbyopia{--presbyopia-font-size: 18px}.stats-modal-content.presbyopia .stats-grid{grid-template-columns:1fr}.stats-modal-content.presbyopia .stats-item{min-height:80px;padding:16px 20px}.stats-modal-content.presbyopia .stats-section{margin-bottom:32px}.stats-modal-content.presbyopia .stats-item-label{font-size:calc(var(--presbyopia-font-size) * .7)}.stats-modal-content.presbyopia .stats-item-value{font-size:var(--presbyopia-font-size)}.stats-modal-content.presbyopia .stats-item-value.small{font-size:calc(var(--presbyopia-font-size) * .85)}.stats-modal-content.presbyopia .stats-section-title{font-size:calc(var(--presbyopia-font-size) * .8)}.stats-modal-content.presbyopia .stats-list-item{font-size:calc(var(--presbyopia-font-size) * .85);padding:10px 0}.stats-modal-content.presbyopia.two-col .stats-grid{grid-template-columns:1fr 1fr}.stats-modal-content.presbyopia.two-col .stats-item{min-height:60px;padding:12px 14px}.debug-actions{display:flex;flex-direction:column;gap:12px;margin-top:24px}.debug-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;padding:14px 16px;border-radius:8px;cursor:pointer;font-size:16px;transition:background .2s ease}.debug-btn:hover{background:#fff3}.debug-btn-danger{border-color:#ff6b6b;color:#ff6b6b}.debug-btn-danger:hover{background:#ff6b6b33}.desktop-warning{position:fixed;bottom:32px;left:50%;transform:translate(-50%);background:#000000d9;border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:12px 20px;display:flex;align-items:center;gap:16px;z-index:100;color:#fffc;font-size:15px;white-space:nowrap;animation:warning-slide-up .3s ease-out}.desktop-warning.dismissing{opacity:0;transform:translate(-50%) translateY(10px);transition:opacity .3s ease,transform .3s ease}.desktop-warning-close{background:none;border:none;color:#ffffff80;font-size:20px;cursor:pointer;line-height:1;padding:0}.desktop-warning-close:hover{color:#fff}@keyframes warning-slide-up{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.challenge-overlay{position:fixed;inset:0;background:#000000bf;z-index:1200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s ease}.challenge-overlay.active{opacity:1;pointer-events:auto}.challenge-box{position:relative;background:#0f081ef7;border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:36px 20px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;width:min(360px,92vw)}.challenge-box.win{animation:challenge-win-flash .4s ease forwards}@keyframes challenge-win-flash{0%{background:#0f081ef7}50%{background:#50c87880;border-color:#50c878cc}to{opacity:0;transform:scale(1.05)}}.challenge-x{position:absolute;top:12px;right:14px;background:none;border:none;color:#ffffff73;font-size:26px;line-height:1;cursor:pointer;padding:4px 8px;transition:color .15s ease}.challenge-x:hover{color:#ffffffd9}.challenge-pips{display:flex;gap:8px}.challenge-pip{width:10px;height:10px;border-radius:50%;border:1.5px solid rgba(255,255,255,.3);background:transparent;transition:background .2s ease,border-color .2s ease}.challenge-pip.filled{background:#9370dbe6;border-color:#9370db}.challenge-pool{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.challenge-pool-btn{aspect-ratio:1;background:#ffffff0d;border:1.5px solid rgba(255,255,255,.1);border-radius:14px;font-size:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;transition:background .1s ease,border-color .1s ease;--tx: 0px;--ty: 0px}.challenge-pool-btn:active{transform:scale(.92)}@keyframes challenge-tap-wiggle{0%{transform:scale(1)}30%{transform:scale(1.25) rotate(-12deg)}60%{transform:scale(1.25) rotate(12deg)}to{transform:scale(1)}}.challenge-pool-btn.tapping{animation:challenge-tap-wiggle .22s ease-out;z-index:2}.challenge-pool-btn.correct{background:#50c87833;border-color:#50c87899;cursor:default;opacity:.6}@keyframes challenge-wrong-flash{0%,to{background:#ff555526;border-color:#f55}50%{background:#f556}}.challenge-pool-btn.wrong{animation:challenge-wrong-flash .2s ease}@keyframes challenge-scatter{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--tx),var(--ty)) scale(.2);opacity:0}}.challenge-pool-btn.scattering{animation:challenge-scatter .55s ease-out forwards;pointer-events:none}.challenge-debug{width:100%;background:#ffc8001a;border:1px solid rgba(255,200,0,.3);border-radius:8px;padding:6px 10px;font-size:12px;color:#ffc800e6;text-align:center;word-break:break-all}.challenge-hint{color:#ffffff4d;font-size:12px;letter-spacing:.3px;text-align:center;margin:0}.owned-palettes-empty{color:#fff6;font-size:13px;margin:0;padding:4px 0}.owned-palette-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.07)}.owned-palette-row:last-child{border-bottom:none}.owned-palette-name{color:#ffffffb3;font-size:13px;flex-shrink:0;margin-right:12px}.owned-palette-emojis{font-size:20px;letter-spacing:2px}.reset-all-btn{margin-top:12px;width:100%;padding:10px;background:transparent;border:1px solid rgba(255,85,85,.35);border-radius:8px;color:#ff5555b3;font-size:13px;cursor:pointer;letter-spacing:.5px}.reset-all-btn:active{background:#ff55551a}.challenge-toggle-label{display:flex;align-items:center;gap:10px;color:#ffffff8c;font-size:13px;cursor:pointer;user-select:none;-webkit-user-select:none}.challenge-toggle-label input[type=checkbox]{width:18px;height:18px;accent-color:#9370db;cursor:pointer}@media(max-width:768px){.tap-indicator{font-size:100px}}@media(orientation:landscape)and (max-height:500px){#app:before{content:"📱";position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg);font-size:80px;animation:rotate-hint 2s ease-in-out infinite;z-index:1000}}@keyframes rotate-hint{0%,to{transform:translate(-50%,-50%) rotate(90deg)}50%{transform:translate(-50%,-50%) rotate(0)}}
