.setup{flex-direction:column;justify-content:center;align-items:center;gap:.75rem;width:100%;height:100%;padding:1rem;display:flex;overflow-y:auto}.setup-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:400px;max-height:100%;transition:background var(--transition-normal), border-color var(--transition-normal), box-shadow var(--transition-normal);flex-direction:column;gap:1.25rem;padding:2rem 1.75rem;display:flex;overflow:hidden}.setup-title{text-align:center;letter-spacing:-.5px;flex-shrink:0;font-size:1.6rem;font-weight:800}.upload-zone{border:2px dashed var(--border-color);border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:all var(--transition-fast);flex:auto;justify-content:center;align-items:center;min-height:5rem;padding:1.25rem;display:flex;overflow:hidden}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--accent);background:var(--accent-light)}.upload-zone.has-image{border-style:solid;min-height:0;padding:.4rem}.upload-preview{object-fit:contain;border-radius:var(--radius-md);width:100%;max-height:200px}.upload-prompt{color:var(--text-secondary);flex-direction:column;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.upload-icon{border-radius:var(--radius-full);background:var(--bg-tertiary);width:2.5rem;height:2.5rem;color:var(--text-secondary);justify-content:center;align-items:center;font-size:1.3rem;font-weight:300;display:flex}.setup-controls{flex-direction:column;flex-shrink:0;gap:1rem;display:flex}.grid-selector{flex-direction:column;flex-shrink:0;gap:.4rem;display:flex}.grid-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);font-size:.7rem;font-weight:600}.grid-options{gap:.4rem;display:flex}.grid-btn{border-radius:var(--radius-md);background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);transition:all var(--transition-fast);flex:1;padding:.5rem 0;font-size:.8rem;font-weight:600}.grid-btn:hover{border-color:var(--border-hover)}.grid-btn.active{background:var(--accent);color:var(--text-on-color);border-color:var(--accent)}.start-btn{border-radius:var(--radius-md);background:var(--accent);color:var(--text-on-color);letter-spacing:.3px;box-shadow:0 0 12px var(--accent-light);transition:all var(--transition-fast);flex-shrink:0;padding:.8rem 1.5rem;font-size:.95rem;font-weight:600}.start-btn:hover:not(:disabled){box-shadow:0 0 20px var(--accent-light);transform:translateY(-2px)}.history-card{flex-shrink:0;gap:.5rem;max-height:none;padding:1rem 1.25rem;overflow:visible}.history-list{touch-action:pan-x;scrollbar-width:thin;gap:.5rem;padding:.25rem 0;display:flex;overflow-x:auto}.history-item{border-radius:var(--radius-md);border:2px solid var(--border-color);transition:all var(--transition-fast);flex-shrink:0;padding:0;overflow:hidden}.history-item:hover{border-color:var(--accent);transform:scale(1.05)}.history-thumb{object-fit:cover;width:3.5rem;height:3.5rem;display:block}.saved-item{position:relative}.saved-progress{background:var(--accent);color:var(--text-on-color);border-radius:4px;padding:1px 4px;font-size:.55rem;font-weight:700;line-height:1.2;position:absolute;bottom:2px;right:2px}@media (height<=500px) and (aspect-ratio>=1){.setup-card{flex-direction:row;align-items:stretch;gap:1rem;max-width:700px;padding:1rem}.setup-title{display:none}.upload-zone{flex:auto;min-width:160px;min-height:0}.upload-preview{height:100%;max-height:none}.setup-controls{flex-direction:column;justify-content:center;gap:.6rem;min-width:200px;display:flex}}.puzzle-container{touch-action:none;gap:2px;width:100%;height:100%;padding:2px;display:flex;overflow:hidden}.puzzle-container.portrait,.puzzle-container.landscape{justify-content:center;align-items:center}.puzzle-group{gap:2px;display:flex}.portrait .puzzle-group{flex-direction:column;align-items:center}.landscape .puzzle-group{flex-direction:row;align-items:center}.puzzle-board-wrapper{flex-shrink:0;position:relative}.puzzle-board-area{background:var(--board-bg);border:2px solid var(--board-border);border-radius:var(--radius-md);box-shadow:var(--board-shadow);transition:background var(--transition-normal), border-color var(--transition-normal), box-shadow var(--transition-normal);position:relative;overflow:visible}.board-grid{pointer-events:none;position:absolute;top:0;left:0}.puzzle-complete{animation:3s ease-in-out board-glow}@keyframes board-glow{0%{box-shadow:var(--board-shadow)}15%{box-shadow:0 0 20px #ffdc6499,0 0 40px #ffc8324d,0 0 80px #ffb41e26}85%{box-shadow:0 0 20px #ffdc6499,0 0 40px #ffc8324d,0 0 80px #ffb41e26}to{box-shadow:var(--board-shadow)}}.puzzle-tray{scrollbar-width:thin;scrollbar-color:var(--board-grid) transparent;flex-shrink:0;display:flex}.portrait .puzzle-tray{touch-action:pan-x;align-items:center;overflow:auto hidden}.landscape .puzzle-tray{touch-action:pan-y;justify-content:flex-start;overflow:hidden auto}.tray-inner{gap:2px;display:flex}.portrait .tray-inner{flex-direction:row;align-items:center;width:max-content;height:100%}.landscape .tray-inner{flex-direction:column;align-items:center;width:100%;height:max-content}.tray-piece-wrapper{cursor:grab;flex-shrink:0}.piece{will-change:transform;cursor:grab;filter:drop-shadow(2px 3px 3px #0006);transition:filter .2s,transform .2s;position:absolute;top:0;left:0}.piece-image{pointer-events:none}.piece-edge{pointer-events:none;position:absolute;top:0;left:0}.piece-placed{cursor:default;pointer-events:none;filter:none;animation:.6s ease-out snap-glow}@keyframes snap-glow{0%{z-index:9999;filter:drop-shadow(0 0 8px #ffdc64cc)drop-shadow(0 0 16px #ffc83280)}90%{z-index:9999}to{z-index:0;filter:none}}.piece-dragging{cursor:grabbing;filter:drop-shadow(5px 8px 8px #00000073);transition:none}.piece-placed .piece-edge{opacity:.5}.win-overlay{background:var(--bg-overlay);z-index:500;justify-content:center;align-items:center;animation:.4s ease-out win-fade-in;display:flex;position:absolute;inset:0}.win-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);text-align:center;min-width:260px;transition:background var(--transition-normal), border-color var(--transition-normal);flex-direction:column;align-items:center;gap:1rem;padding:2.5rem 2rem;animation:.6s cubic-bezier(.34,1.56,.64,1) win-pop;display:flex}.win-icon{border-radius:var(--radius-full);background:var(--accent);width:3.5rem;height:3.5rem;color:var(--text-on-color);justify-content:center;align-items:center;font-size:1.6rem;font-weight:700;display:flex}.win-title{font-size:1.3rem;font-weight:800}.win-stats{gap:1.5rem;display:flex}.win-stat{flex-direction:column;align-items:center;gap:.15rem;display:flex}.win-stat-value{font-variant-numeric:tabular-nums;font-size:1.2rem;font-weight:700;font-family:var(--font-mono)}.win-stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);font-size:.65rem;font-weight:600}.win-btn{border-radius:var(--radius-md);background:var(--accent);color:var(--text-on-color);box-shadow:0 0 12px var(--accent-light);transition:all var(--transition-fast);margin-top:.5rem;padding:.8rem 2rem;font-size:.95rem;font-weight:600}.win-btn:hover{box-shadow:0 0 20px var(--accent-light);transform:translateY(-2px)}@keyframes win-fade-in{0%{opacity:0}to{opacity:1}}@keyframes win-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.app{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.game-layout{width:100%;height:100%}:root{--board-bg:linear-gradient(135deg, #f7f2e7 0%, #ede6d3 100%);--board-bg-flat:#f2ece0;--board-border:#b8a88a;--board-grid:#d8d0be;--board-shadow:0 8px 32px #78643c33, 0 2px 8px #00000014;--board-inner-shadow:inset 0 1px 0 #ffffff80;--bg-primary:#faf8f4;--bg-secondary:#fff;--bg-tertiary:#f5f2eb;--bg-overlay:#1e190f73;--text-primary:#2c2416;--text-secondary:#7a7060;--text-on-color:#fff;--border-color:#e0d8c8;--border-hover:#c8bea8;--accent:#c87830;--accent-light:#f8e8d4;--shadow-sm:0 1px 2px #0000000f, 0 1px 3px #00000014;--shadow-md:0 4px 8px #00000014, 0 2px 4px #0000000f;--shadow-lg:0 12px 28px #0000001a, 0 4px 10px #0000000f;--shadow-glow:none;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:50%;--font-family:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--transition-fast:.15s ease;--transition-normal:.3s ease;--transition-slow:.5s ease}[data-theme=dark]{--board-bg:linear-gradient(135deg, #1c1b2e 0%, #161525 100%);--board-bg-flat:#1a1928;--board-border:#3d3a58;--board-grid:#2a283e;--board-shadow:0 8px 32px #00000080, 0 2px 8px #503ca026;--board-inner-shadow:inset 0 1px 0 #ffffff0a;--bg-primary:#0e0d18;--bg-secondary:#1a1928;--bg-tertiary:#222038;--bg-overlay:#000000b3;--text-primary:#e8e6f0;--text-secondary:#8884a8;--text-on-color:#fff;--border-color:#332f50;--border-hover:#4a4570;--accent:#9078f0;--accent-light:#2a2548;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 12px #00000073, 0 0 1px #8c78f01a;--shadow-lg:0 12px 28px #00000080, 0 0 2px #8c78f026;--shadow-glow:0 0 20px #8c78f014}[data-theme=neon]{--board-bg:linear-gradient(135deg, #08081a 0%, #0c0c24 50%, #0a0818 100%);--board-bg-flat:#0a0a1c;--board-border:#00dcff40;--board-grid:#18183a;--board-shadow:0 0 40px #00b4ff1f, 0 0 80px #00b4ff0f, 0 8px 32px #0009;--board-inner-shadow:inset 0 1px 0 #00ffff0d;--bg-primary:#040410;--bg-secondary:#0a0a1c;--bg-tertiary:#101030;--bg-overlay:#000000d9;--text-primary:#e0e8ff;--text-secondary:#7080b0;--text-on-color:#000;--border-color:#00b4ff26;--border-hover:#00dcff59;--accent:#00dcff;--accent-light:#081828;--shadow-sm:0 0 4px #00c8ff26, 0 1px 2px #0006;--shadow-md:0 0 12px #00c8ff26, 0 4px 12px #00000080;--shadow-lg:0 0 24px #00c8ff26, 0 12px 28px #00000080;--shadow-glow:0 0 30px #00c8ff1a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}html,body,#root{width:100%;height:100dvh;overflow:hidden}body{font-family:var(--font-family);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-normal), color var(--transition-normal);line-height:1.5}#root{justify-content:center;align-items:center;display:flex}button{cursor:pointer;color:inherit;font-family:inherit;font-size:inherit;transition:all var(--transition-fast);background:0 0;border:none}button:disabled{opacity:.5;cursor:not-allowed}button:active:not(:disabled){transform:scale(.97)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}.menu-toggle{z-index:500;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:36px;height:36px;box-shadow:var(--shadow-sm);flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:0;display:flex;position:fixed;top:12px;right:12px}.menu-bar{background:var(--text-primary);border-radius:1px;width:18px;height:2px;display:block}.menu-overlay{background:var(--bg-overlay);z-index:300;justify-content:flex-end;animation:.2s ease-out menu-fade-in;display:flex;position:fixed;inset:0}.menu-panel{background:var(--bg-secondary);border-left:1px solid var(--border-color);width:280px;max-width:85vw;height:100%;transition:background var(--transition-normal), border-color var(--transition-normal);flex-direction:column;gap:20px;padding:24px;animation:.2s ease-out menu-slide-in;display:flex;overflow-y:auto;box-shadow:-4px 0 24px #00000026}.menu-title{font-size:20px;font-weight:700}.menu-section{flex-direction:column;gap:8px;display:flex}.menu-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);font-size:12px;font-weight:600}.language-options{flex-direction:column;gap:2px;display:flex}.lang-option{border-radius:var(--radius-sm);align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.lang-option:hover{background:var(--bg-primary)}.lang-option.active{background:var(--bg-primary);border:1px solid var(--border-color);font-weight:600}.lang-option .flag{font-size:20px}.lang-name{font-size:13px}.theme-options{gap:8px;display:flex}.theme-btn{border-radius:var(--radius-sm);background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);text-align:center;flex:1;padding:8px 0;font-size:13px;font-weight:500}.theme-btn:hover{background:var(--border-color)}.theme-btn.active{background:var(--accent);color:var(--text-on-color);border-color:var(--accent)}.menu-action{border-radius:var(--radius-md);background:var(--bg-primary);border:1px solid var(--border-color);text-align:center;padding:10px 16px;font-size:14px;font-weight:500}.menu-action:hover{background:var(--border-color)}.menu-action--danger{color:#dc3545}.menu-about{border-top:1px solid var(--border-color);margin-top:auto;padding-top:16px}.menu-about-text{color:var(--text-secondary);font-size:13px;line-height:1.5}@media (prefers-reduced-motion:reduce){.menu-overlay,.menu-panel{animation:none}}@keyframes menu-fade-in{0%{opacity:0}to{opacity:1}}@keyframes menu-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}:root{--piece-shadow:0 2px 8px #00000026;--piece-shadow-hover:0 4px 16px #0003;--piece-snap-glow:0 0 12px #c8783066}[data-theme=dark]{--piece-shadow:0 2px 8px #0006;--piece-shadow-hover:0 4px 16px #00000080;--piece-snap-glow:0 0 12px #8c78f066}[data-theme=neon]{--piece-shadow:0 0 8px #00c8ff33, 0 2px 8px #0006;--piece-shadow-hover:0 0 16px #00c8ff4d, 0 4px 16px #00000080;--piece-snap-glow:0 0 16px #00dcff80}body{touch-action:none}#root{position:fixed;inset:0;overflow:hidden}
