:root{--color-red-lighter:#ffcdd2;--color-red-light:#ff756b;--color-red-default:#f44336;--color-red-dark:#d32f2f;--color-red-darker:#b71c1c;--color-red-darker-2:#8e1313;--color-red-darker-3:#670b0b;--color-pink-lighter:#f8bbd0;--color-pink-light:#f06292;--color-pink-default:#e91e63;--color-pink-dark:#c2185b;--color-pink-darker:#880e4f;--color-pink-darker-2:#560530;--color-pink-darker-3:#280113;--color-magenta-lighter:#f9b0d4;--color-magenta-light:#f759a6;--color-magenta-default:#f34197;--color-magenta-dark:#c72e79;--color-magenta-darker:#9c1657;--color-magenta-darker-2:#6e0c3b;--color-magenta-darker-3:#420422;--color-purple-lighter:#e1bee7;--color-purple-light:#ba68c8;--color-purple-default:#9c27b0;--color-purple-dark:#7b1fa2;--color-purple-darker:#4a148c;--color-purple-darker-2:#2f095c;--color-purple-darker-3:#150330;--color-violet-lighter:#d1c4e9;--color-violet-light:#9575cd;--color-violet-default:#673ab7;--color-violet-dark:#512da8;--color-violet-darker:#311b92;--color-violet-darker-2:#1e0f63;--color-violet-darker-3:#0d0537;--color-indigo-lighter:#c5cae9;--color-indigo-light:#7986cb;--color-indigo-default:#3f51b5;--color-indigo-dark:#303f9f;--color-indigo-darker:#1a237e;--color-indigo-darker-2:#0c114c;--color-indigo-darker-3:#02041f;--color-blue-lighter:#bbdefb;--color-blue-light:#64b5f6;--color-blue-default:#2196f3;--color-blue-dark:#1976d2;--color-blue-darker:#0d47a1;--color-blue-darker-2:#042860;--color-blue-darker-3:#010c27;--color-sky-lighter:#b3e5fc;--color-sky-light:#4fc3f7;--color-sky-default:#03a9f4;--color-sky-dark:#0288d1;--color-sky-darker:#01579b;--color-sky-darker-2:#003461;--color-sky-darker-3:#00152c;--color-cyan-lighter:#b2ebf2;--color-cyan-light:#4dd0e1;--color-cyan-default:#00bcd4;--color-cyan-dark:#0097a7;--color-cyan-darker:#006064;--color-cyan-darker-2:#00393c;--color-cyan-darker-3:#001718;--color-teal-lighter:#b2dfdb;--color-teal-light:#4db6ac;--color-teal-default:#009688;--color-teal-dark:#00796b;--color-teal-darker:#004d40;--color-teal-darker-2:#002720;--color-teal-darker-3:#000705;--color-green-lighter:#c8e6c9;--color-green-light:#81c784;--color-green-default:#4caf50;--color-green-dark:#388e3c;--color-green-darker:#1b5e20;--color-green-darker-2:#0c360f;--color-green-darker-3:#021303;--color-lime-lighter:#dcedc8;--color-lime-light:#aed581;--color-lime-default:#8bc34a;--color-lime-dark:#689f38;--color-lime-darker:#33691e;--color-lime-darker-2:#1d410f;--color-lime-darker-3:#091d04;--color-grass-lighter:#f0f4c3;--color-grass-light:#dce775;--color-grass-default:#cddc39;--color-grass-dark:#afb42b;--color-grass-darker:#827717;--color-grass-darker-2:#5a520d;--color-grass-darker-3:#342f04;--color-yellow-lighter:#fff9c4;--color-yellow-light:#fff176;--color-yellow-default:#ffeb3b;--color-yellow-dark:#fbce2c;--color-yellow-darker:#e8bf29;--color-yellow-darker-2:#c8a522;--color-yellow-darker-3:#aa8b1b;--color-amber-lighter:#ffecb3;--color-amber-light:#ffd54f;--color-amber-default:#ffc107;--color-amber-dark:#ffa000;--color-amber-darker:#ff6f00;--color-amber-darker-2:#d75d00;--color-amber-darker-3:#b14b00;--color-orange-lighter:#ffe0b2;--color-orange-light:#ffb74d;--color-orange-default:#ff9800;--color-orange-dark:#f57c00;--color-orange-darker:#e65100;--color-orange-darker-2:#be4100;--color-orange-darker-3:#973200;--color-coral-lighter:#ffccbc;--color-coral-light:#ff8a65;--color-coral-default:#ff5722;--color-coral-dark:#e64a19;--color-coral-darker:#bf360c;--color-coral-darker-2:#962807;--color-coral-darker-3:#6f1b04;--color-brown-lighter:#d7ccc8;--color-brown-light:#a1887f;--color-brown-default:#795548;--color-brown-dark:#5d4037;--color-brown-darker:#3e2723;--color-brown-darker-2:#1f120f;--color-brown-darker-3:#060202;--color-gray-lighter:#f5f5f5;--color-gray-light:#e0e0e0;--color-gray-default:#9e9e9e;--color-gray-dark:#575756;--color-gray-darker:#212121;--color-gray-darker-2:#131313;--color-gray-darker-3:#080808;--color-glaucous-lighter:#d0e1e8;--color-glaucous-light:#87aec1;--color-glaucous-default:#57879f;--color-glaucous-dark:#3a6477;--color-glaucous-darker:#254758;--color-glaucous-darker-2:#152c37;--color-glaucous-darker-3:#06131a}@media (prefers-color-scheme:dark){:root{--color-red-lighter:#ef9a9a;--color-red-light:#f05750;--color-red-default:#e53935;--color-red-dark:#c62828;--color-red-darker:#a51717;--color-red-darker-2:#7d0f0f;--color-red-darker-3:#570707;--color-pink-lighter:#f48fb1;--color-pink-light:#ec407a;--color-pink-default:#d81b60;--color-pink-dark:#ad1457;--color-pink-darker:#840a4b;--color-pink-darker-2:#5e0534;--color-pink-darker-3:#3b021f;--color-magenta-lighter:#f9a1cc;--color-magenta-light:#f94fa2;--color-magenta-default:#ff3195;--color-magenta-dark:#d01f75;--color-magenta-darker:#9c1657;--color-magenta-darker-2:#6c0c3a;--color-magenta-darker-3:#3f0420;--color-purple-lighter:#ce93d8;--color-purple-light:#ab47bc;--color-purple-default:#8e24aa;--color-purple-dark:#6a1b9a;--color-purple-darker:#3e0d79;--color-purple-darker-2:#220447;--color-purple-darker-3:#09011a;--color-violet-lighter:#b39ddb;--color-violet-light:#7e57c2;--color-violet-default:#5e35b1;--color-violet-dark:#4527a0;--color-violet-darker:#29167f;--color-violet-darker-2:#170a51;--color-violet-darker-3:#070327;--color-indigo-lighter:#9fa8da;--color-indigo-light:#5c6bc0;--color-indigo-default:#3949ab;--color-indigo-dark:#283593;--color-indigo-darker:#151e73;--color-indigo-darker-2:#090f47;--color-indigo-darker-3:#02031f;--color-blue-lighter:#90caf9;--color-blue-light:#42a5f5;--color-blue-default:#1e88e5;--color-blue-dark:#1565c0;--color-blue-darker:#0a3c8a;--color-blue-darker-2:#031e4c;--color-blue-darker-3:#000415;--color-sky-lighter:#81d4fa;--color-sky-light:#29b6f6;--color-sky-default:#039be5;--color-sky-dark:#0277bd;--color-sky-darker:#015190;--color-sky-darker-2:#00315a;--color-sky-darker-3:#00142a;--color-cyan-lighter:#80deea;--color-cyan-light:#26c6da;--color-cyan-default:#00acc1;--color-cyan-dark:#00838f;--color-cyan-darker:#00595d;--color-cyan-darker-2:#003335;--color-cyan-darker-3:#001112;--color-teal-lighter:#80cbc4;--color-teal-light:#26a69a;--color-teal-default:#00897b;--color-teal-dark:#00695c;--color-teal-darker:#015245;--color-teal-darker-2:#00392f;--color-teal-darker-3:#00211b;--color-green-lighter:#a5d6a7;--color-green-light:#66bb6a;--color-green-default:#43a047;--color-green-dark:#2e7d32;--color-green-darker:#206125;--color-green-darker-2:#154619;--color-green-darker-3:#0a2d0d;--color-lime-lighter:#c5e1a5;--color-lime-light:#9ccc65;--color-lime-default:#7cb342;--color-lime-dark:#558b2f;--color-lime-darker:#2b5a19;--color-lime-darker-2:#16330b;--color-lime-darker-3:#041102;--color-grass-lighter:#e6ee9c;--color-grass-light:#d4e157;--color-grass-default:#c0ca33;--color-grass-dark:#9e9d24;--color-grass-darker:#776d13;--color-grass-darker-2:#4f4809;--color-grass-darker-3:#2b2703;--color-yellow-lighter:#fff59d;--color-yellow-light:#ffee58;--color-yellow-default:#fdd835;--color-yellow-dark:#f5c827;--color-yellow-darker:#e0b415;--color-yellow-darker-2:#c09a10;--color-yellow-darker-3:#a2810c;--color-amber-lighter:#ffe082;--color-amber-light:#ffcf3d;--color-amber-default:#ffb03b;--color-amber-dark:#ff8f00;--color-amber-darker:#de6202;--color-amber-darker-2:#aa4901;--color-amber-darker-3:#793201;--color-orange-lighter:#ffcc80;--color-orange-light:#ffa726;--color-orange-default:#fb8c00;--color-orange-dark:#ef6c00;--color-orange-darker:#d84d01;--color-orange-darker-2:#b03d01;--color-orange-darker-3:#8a2e00;--color-coral-lighter:#ffab91;--color-coral-light:#ff7043;--color-coral-default:#f4511e;--color-coral-dark:#d84315;--color-coral-darker:#b5320a;--color-coral-darker-2:#8e2506;--color-coral-darker-3:#681903;--color-brown-lighter:#bcaaa4;--color-brown-light:#8d6e63;--color-brown-default:#6d4c41;--color-brown-dark:#4e342e;--color-brown-darker:#33201c;--color-brown-darker-2:#1a0e0c;--color-brown-darker-3:#060302;--color-gray-lighter:#eee;--color-gray-light:#adadad;--color-gray-default:#757575;--color-gray-dark:#424242;--color-gray-darker:#212020;--color-gray-darker-2:#131313;--color-gray-darker-3:#080808;--color-glaucous-lighter:#9fc2d0;--color-glaucous-light:#6e8d9c;--color-glaucous-default:#446c80;--color-glaucous-dark:#2a576b;--color-glaucous-darker:#224150;--color-glaucous-darker-2:#142a35;--color-glaucous-darker-3:#08151c}}:root{--puzzle-bg-color:#1a237e;--piece-opacity:1;--piece-blank-fill:#fff;--ui-fg:#e0e0e0;--ui-overlay-subtle:#ffffff0d;--ui-overlay:#ffffff1a;--ui-overlay-hover:#ffffff2e;--ui-overlay-active:#ffffff40;--ui-control-scrim:#00000073;--ui-control-scrim-hover:#0000008c;--ui-control-scrim-active:#000000a6;--ui-border-subtle:#ffffff1a;--ui-border:#fff3;--ui-border-hover:#ffffff59;--ui-muted:#ffffff80;--ui-muted-link:#ffffffa6;--ui-muted-link-hover:#ffffffe6;--ui-accent:var(--color-violet-light);--selection-glow:var(--color-violet-lighter);--ui-surface:#1e1b34f2;--ui-toast-bg:#1c192cc7;--ui-backdrop:#0c0a18b8;color:#e0e0e0;background-color:var(--puzzle-bg-color);font-family:system-ui,-apple-system,sans-serif}[data-ui-scheme=light]{--ui-fg:#2d2d2d;--ui-overlay-subtle:#0000000a;--ui-overlay:#00000012;--ui-overlay-hover:#0000001f;--ui-overlay-active:#0000002e;--ui-control-scrim:#ffffff8c;--ui-control-scrim-hover:#ffffffa6;--ui-control-scrim-active:#ffffffbf;--ui-border-subtle:#0000001a;--ui-border:#0000002e;--ui-border-hover:#00000059;--ui-muted:#0006;--ui-muted-link:#0000008c;--ui-muted-link-hover:#000c;--selection-glow:var(--color-violet-darker)}*{box-sizing:border-box;margin:0;padding:0}html,body{touch-action:none;width:100%;height:100%;overflow:hidden}#app{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.new-game-button{z-index:9999;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:8px;padding:8px 16px;font-family:inherit;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s;position:absolute;top:12px;right:12px}.new-game-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.new-game-button:active{background:var(--ui-control-scrim-active)}.gather-pieces-button{z-index:9999;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:8px;padding:8px 16px;font-family:inherit;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s;position:absolute;top:52px;right:12px}.gather-pieces-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.gather-pieces-button:active{background:var(--ui-control-scrim-active)}.select-tool-button,.marquee-tool-button{z-index:9999;width:40px;height:40px;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:10px;justify-content:center;align-items:center;padding:0;transition:background .15s,border-color .15s;display:flex;position:absolute;top:12px;left:12px}.select-tool-button:hover,.marquee-tool-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.select-tool-button:active,.marquee-tool-button:active{background:var(--ui-control-scrim-active)}.select-tool-button--active,.marquee-tool-button--active{border-color:color-mix(in srgb, var(--ui-accent) 70%, transparent);background:color-mix(in srgb, var(--ui-accent) 15%, transparent)}.select-tool-button--active:hover,.marquee-tool-button--active:hover{border-color:color-mix(in srgb, var(--ui-accent) 90%, transparent);background:color-mix(in srgb, var(--ui-accent) 22%, transparent)}.marquee-tool-button{top:64px}.rotate-button{z-index:9999;width:44px;height:44px;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;opacity:0;border-radius:10px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.rotate-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.rotate-button:active{background:var(--ui-control-scrim-active)}.rotate-button--fade-in{opacity:1;transition:opacity .1s ease-out}.rotate-button--fade-out-quick{opacity:0;pointer-events:none;transition:opacity .1s ease-out}.rotate-button--fade-out-slow{opacity:0;transition:opacity .75s ease-out}.rotate-handle{z-index:9999;width:44px;height:44px;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;opacity:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.rotate-handle:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.rotate-handle:active{background:var(--ui-control-scrim-active)}.rotate-handle--fade-in{opacity:1;transition:opacity .1s ease-out}.rotate-handle--fade-out-quick{opacity:0;pointer-events:none;transition:opacity .1s ease-out}.rotate-handle--fade-out-slow{opacity:0;transition:opacity .75s ease-out}.deselect-button{z-index:9999;width:48px;height:48px;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .15s,border-color .15s,transform .15s;animation:.2s ease-out fade-in;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.deselect-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover);transform:translate(-50%)scale(1.05)}.deselect-button:active{background:var(--ui-control-scrim-active);transform:translate(-50%)scale(.95)}[data-group-id]{filter:var(--piece-edge-filter,drop-shadow(0 0 4px #00000059));will-change:transform}[data-puzzle-table].relayer [data-group-id]{will-change:auto}[data-piece-blank]{fill:var(--piece-blank-fill)}[data-piece-id] image,[data-piece-blank]{opacity:var(--piece-opacity)}[data-mateless-edge]{display:none}.show-mateless-edges [data-mateless-edge]{display:block}[data-piece-fill],[data-piece-label],[data-piece-up],.show-debug-pieces [data-piece-id] image,.show-debug-pieces [data-piece-blank]{display:none}.show-debug-pieces [data-piece-fill],.show-debug-pieces [data-piece-label],.show-debug-pieces [data-piece-up]{display:block}[data-group-id].selected{filter:var(--piece-edge-filter,opacity(1)) drop-shadow(0 0 6px color-mix(in srgb, var(--selection-glow) 90%, transparent)) drop-shadow(0 0 14px color-mix(in srgb, var(--selection-glow) 70%, transparent)) drop-shadow(0 0 24px color-mix(in srgb, var(--selection-glow) 40%, transparent))}[data-group-id].selected.dragging{filter:var(--piece-edge-filter,opacity(1)) drop-shadow(0 0 12px #00000073) drop-shadow(0 0 6px color-mix(in srgb, var(--selection-glow) 90%, transparent)) drop-shadow(0 0 14px color-mix(in srgb, var(--selection-glow) 70%, transparent)) drop-shadow(0 0 24px color-mix(in srgb, var(--selection-glow) 40%, transparent))}[data-group-id].dragging{filter:var(--piece-edge-filter,opacity(1)) drop-shadow(0 0 12px #00000073)}[data-group-id].merge-pulse{animation:.25s ease-out merge-pulse}@keyframes merge-pulse{0%{filter:var(--piece-edge-filter,opacity(1)) brightness(1.2)}to{filter:var(--piece-edge-filter,opacity(1)) brightness(1)}}.marquee-box{pointer-events:none;z-index:100;border:1px solid var(--ui-accent);background:color-mix(in srgb, var(--ui-accent) 20%, transparent);position:fixed}.completion-overlay{z-index:10001;cursor:pointer;background:#00000080;justify-content:center;align-items:center;animation:.6s ease-out fade-in;display:flex;position:absolute;inset:0}.completion-message{text-align:center;color:#fff;animation:.5s ease-out .2s both pop-in}.completion-message h1{text-shadow:0 2px 12px #00000080;font-size:2.5rem;font-weight:700}.completion-message p{opacity:.85;margin-top:.5rem;font-size:1.1rem;animation:.5s ease-out .6s both fade-in}.completion-dismiss-hint{font-style:italic;opacity:.6!important;margin-top:1rem!important;font-size:.9rem!important;animation-delay:1s!important}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}.completion-glow [data-group-id]{filter:drop-shadow(0 0 20px color-mix(in srgb, var(--color-amber-default) 60%, transparent)) drop-shadow(0 2px 4px #00000059);transition:filter 1s ease-out}.image-attribution{z-index:9999;color:var(--ui-muted);pointer-events:auto;font-size:.7rem;position:absolute;bottom:8px;left:8px}.image-attribution a{color:var(--ui-muted-link);text-decoration:none;transition:color .15s}.image-attribution a:hover{color:var(--ui-muted-link-hover);text-decoration:underline}.app-version{z-index:9999;color:var(--ui-muted);pointer-events:none;font-size:.7rem;position:absolute;bottom:8px;right:8px}.size-picker-dialog,.info-modal,.swatch-grid{--ui-fg:#e0e0e0;--ui-overlay-subtle:#ffffff0d;--ui-overlay:#ffffff1a;--ui-overlay-hover:#ffffff2e;--ui-overlay-active:#ffffff40;--ui-border-subtle:#ffffff1a;--ui-border:#fff3;--ui-border-hover:#ffffff59;--ui-muted:#ffffff80;--ui-muted-link:#ffffffa6;--ui-muted-link-hover:#ffffffe6}.size-picker-overlay{box-sizing:border-box;z-index:10001;background:#0009;justify-content:center;align-items:center;padding:16px;animation:.2s ease-out fade-in;display:flex;position:absolute;inset:0}.size-picker-dialog{background:var(--ui-surface);border:1px solid var(--ui-border-subtle);-webkit-backdrop-filter:blur(12px);border-radius:16px;flex-direction:column;width:90%;max-width:360px;max-height:100%;padding:24px 0 0;animation:.25s ease-out pop-in;display:flex;overflow:hidden}.size-picker-title{text-align:center;color:var(--ui-fg);margin:0 24px 20px;font-size:1.1rem;font-weight:600}.dialog-content{overscroll-behavior:contain;min-height:0;padding:0 24px 24px;overflow-y:auto}.image-picker-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.image-picker-header .size-picker-subtitle{margin:0}.image-picker-refresh{width:28px;height:28px;color:var(--ui-fg);background:var(--ui-overlay-subtle);border:1px solid var(--ui-border-subtle);cursor:pointer;border-radius:8px;padding:0;font-size:1rem;line-height:1;transition:background .15s,border-color .15s}.image-picker-refresh:hover{background:var(--ui-overlay-hover);border-color:var(--ui-border)}.image-picker-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-bottom:10px;display:grid}.image-picker-tile{aspect-ratio:16/10;border:1px solid var(--ui-border-subtle);background:var(--ui-overlay-subtle);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:12px;padding:0;transition:border-color .15s,transform .1s;overflow:hidden}.image-picker-tile:hover{border-color:var(--ui-border)}.image-picker-tile:active{transform:scale(.97)}.image-picker-tile:disabled{cursor:default;transform:none}.image-picker-tile--loading{animation:1.2s ease-in-out infinite image-tile-pulse}@keyframes image-tile-pulse{0%,to{opacity:1}50%{opacity:.55}}.image-picker-thumb{object-fit:cover;width:100%;height:100%;display:block}.image-picker-error{color:var(--ui-muted);margin:0 0 10px;font-size:.75rem}.image-picker-actions{gap:10px;display:flex}.image-picker-action{border:1px solid var(--ui-border-subtle);background:var(--ui-overlay-subtle);color:var(--ui-fg);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:10px;flex:1;padding:10px 8px;font-family:inherit;font-size:.85rem;transition:background .15s,border-color .15s,transform .1s}.image-picker-action:hover{background:var(--ui-overlay-hover);border-color:var(--ui-border)}.image-picker-action:active{transform:scale(.97)}.image-picker-cell{position:relative}.image-picker-cell .image-picker-tile{width:100%;height:100%}.image-picker-credit{color:#fff;white-space:nowrap;text-overflow:ellipsis;background:linear-gradient(#0000,#0009);border-radius:0 0 12px 12px;padding:8px 6px 3px;font-size:.6rem;line-height:1;text-decoration:none;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.image-picker-credit:hover{text-decoration:underline}.cut-style-section{margin-bottom:16px}.cut-style-title,.size-picker-subtitle{color:silver;margin:0 0 8px;font-size:.85rem;font-weight:600}.cut-style-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.cut-style-option{border:1px solid var(--ui-border-subtle);background:var(--ui-overlay-subtle);color:var(--ui-fg);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;padding:10px 8px;font-family:inherit;transition:background .15s,border-color .15s,transform .1s;display:flex}.cut-style-option:hover{background:var(--ui-overlay-hover);border-color:var(--ui-border)}.cut-style-option:active{background:var(--ui-overlay-hover);transform:scale(.97)}.cut-style-option--selected{border-color:color-mix(in srgb, var(--ui-accent) 60%, transparent);background:color-mix(in srgb, var(--ui-accent) 10%, transparent)}.cut-style-option--selected:hover{border-color:color-mix(in srgb, var(--ui-accent) 80%, transparent);background:color-mix(in srgb, var(--ui-accent) 15%, transparent)}.cut-style-label{font-size:.9rem;font-weight:600;line-height:1}.cut-style-desc{opacity:.6;margin-top:3px;font-size:.65rem}.composable-sliders{background:var(--ui-overlay-subtle);border-radius:12px;margin-top:16px;padding:12px}.dialog-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.composable-sliders .dialog-row:last-child{margin-bottom:0}.dialog-row-label{opacity:.8;min-width:110px;font-size:.75rem}.dialog-row-input{accent-color:var(--ui-accent);cursor:pointer;flex:1}.form-checkbox{width:18px;height:18px;accent-color:var(--ui-accent);cursor:pointer}.dialog-row-value{opacity:.6;text-align:right;min-width:30px;font-size:.75rem}.offline-images-button{border:1px solid var(--ui-border-subtle);background:var(--ui-overlay-subtle);color:var(--ui-fg);cursor:pointer;touch-action:manipulation;border-radius:8px;padding:6px 12px;font-family:inherit;font-size:.75rem}.offline-images-button:hover:not(:disabled){background:var(--ui-overlay-hover)}.offline-images-button:disabled{opacity:.5;cursor:default}.offline-images-status{opacity:.6;font-size:.75rem}.segmented-control{border:1px solid var(--ui-border);border-radius:4px;display:inline-flex;overflow:hidden}.segmented-control .segmented-option{cursor:pointer;-webkit-user-select:none;user-select:none;border-right:1px solid var(--ui-border);align-items:center;gap:4px;padding:4px 8px;font-size:.75rem;display:inline-flex}.segmented-control .segmented-option:last-child{border-right:none}.segmented-control .segmented-option:hover{background:var(--ui-overlay-hover)}.segmented-control .segmented-option input[type=radio]{accent-color:var(--ui-accent);margin:0}@media (width>=700px) and (height<=560px){.size-picker-dialog{max-width:680px}.dialog-content{grid-template-columns:1fr 1fr;align-items:start;column-gap:24px;display:grid}}.info-modal-solve-btn{background:var(--ui-overlay);border:1px solid var(--ui-border);color:var(--ui-muted);cursor:pointer;border-radius:8px;margin:24px auto 0;padding:8px 16px;font-size:.75rem;transition:background .15s;display:block}.info-modal-solve-btn:hover{background:var(--ui-overlay-hover)}.bg-color-button{z-index:9999;text-align:center;width:36px;height:36px;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:8px;padding:0;font-size:1.1rem;line-height:36px;transition:background .15s,border-color .15s;position:absolute;top:92px;right:12px}.bg-color-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.bg-color-button:active{background:var(--ui-control-scrim-active)}.swatch-grid{grid-template-columns:repeat(var(--swatch-columns,20), minmax(0, 1fr));background:var(--ui-surface);border:1px solid var(--ui-border-subtle);-webkit-backdrop-filter:blur(12px);border-radius:10px;gap:4px;width:min(440px,100vw - 16px);padding:8px;animation:.15s ease-out fade-in;display:grid}.bg-color-panel{z-index:10000;position:absolute;top:92px;right:8px}.swatch{aspect-ratio:1;border:1px solid var(--ui-border);cursor:pointer;touch-action:manipulation;border-radius:3px;min-width:0;padding:0;transition:border-color .15s,transform .1s}.swatch:hover{border-color:var(--ui-muted);transform:scale(1.15)}.swatch:active{transform:scale(.95)}.swatch--selected{border-color:color-mix(in srgb, var(--ui-accent) 90%, transparent);box-shadow:0 0 0 2px color-mix(in srgb, var(--ui-accent) 40%, transparent);border-radius:50%}.swatch--selected:hover{border-color:var(--ui-accent)}.outline-color-row{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex;position:relative}.outline-color-row[hidden]{display:none}.outline-color-button{border:1px solid var(--ui-border);cursor:pointer;background:var(--piece-outline-color,#080808);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:8px;width:36px;height:36px;padding:0;transition:border-color .15s}.outline-color-button:hover{border-color:var(--ui-border-hover)}.outline-color-panel{z-index:10000;margin-top:4px;position:absolute;top:100%;right:0}.info-button{z-index:9999;text-align:center;width:36px;height:36px;color:var(--ui-fg);background:var(--ui-control-scrim);border:1px solid var(--ui-border);cursor:pointer;-webkit-backdrop-filter:blur(8px);touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:8px;padding:0;font-size:1.1rem;line-height:36px;transition:background .15s,border-color .15s;position:absolute;top:135px;right:12px}.info-button:hover{background:var(--ui-control-scrim-hover);border-color:var(--ui-border-hover)}.info-button:active{background:var(--ui-control-scrim-active)}.info-modal-overlay{z-index:10001;background:#0009;justify-content:center;align-items:center;animation:.2s ease-out fade-in;display:flex;position:absolute;inset:0}.info-modal{background:var(--ui-surface);border:1px solid var(--ui-border-subtle);-webkit-backdrop-filter:blur(12px);border-radius:16px;width:90%;max-width:480px;max-height:80vh;animation:.25s ease-out pop-in;overflow:hidden}.info-modal-header{border-bottom:1px solid var(--ui-border-subtle);justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.info-modal-title{color:var(--ui-fg);margin:0;font-size:1.25rem;font-weight:600}.info-modal-close{color:var(--ui-muted);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:1.2rem;transition:color .15s,background .15s}.info-modal-close:hover{color:var(--ui-muted-link-hover);background:var(--ui-overlay)}.info-modal-close:active{background:var(--ui-overlay-hover)}.info-modal-content{max-height:calc(80vh - 80px);padding:20px 24px 24px;overflow-y:auto}.info-section{margin-bottom:20px}.info-section:last-child{margin-bottom:0}.info-section h3{color:var(--ui-fg);margin:0 0 8px;font-size:1rem;font-weight:600}.info-section-summary{color:var(--ui-fg);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:revert;margin:0 0 8px;font-size:1rem;font-weight:600}details.info-section[open]>.info-section-summary{margin-bottom:8px}.info-repro-block{color:var(--ui-fg);background:var(--ui-overlay-bg,#00000040);white-space:pre;-webkit-user-select:text;user-select:text;border:1px solid #ffffff1a;border-radius:4px;margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.8rem;overflow-x:auto}.info-section p{color:var(--ui-fg);margin:0 0 8px;line-height:1.5}.info-section ul{color:var(--ui-fg);margin:0;padding-left:18px;line-height:1.5}.info-section ul ul{margin-top:4px;margin-bottom:4px}.info-section li{margin-bottom:4px}.info-inline-icon{vertical-align:-.2em;width:1.15em;height:1.15em}.info-section li:last-child{margin-bottom:0}.info-section a{color:color-mix(in srgb, var(--ui-accent) 90%, transparent);text-decoration:none;transition:color .15s}.info-section a:hover{color:var(--ui-accent);text-decoration:underline}.info-setting{margin-top:4px}.info-setting-label{color:var(--ui-fg);margin-bottom:2px;font-size:.9rem;font-weight:600;display:block}.info-setting-description{opacity:.6;margin:0 0 8px;font-size:.75rem}.info-setting-toggle{cursor:pointer;align-items:center;gap:8px;display:flex}.info-setting-toggle input[type=checkbox]{margin:0}.info-setting-slider{align-items:center;gap:10px;display:flex}.info-setting-slider input[type=range]{cursor:pointer;height:4px;accent-color:var(--ui-fg);flex:1}.info-setting-slider-value{font-variant-numeric:tabular-nums;text-align:right;opacity:.7;min-width:2.2em;font-size:.8rem}.info-device-label-form{gap:8px;display:flex}.info-device-label-form input{background:var(--ui-overlay-subtle);border:1px solid var(--ui-border);min-width:0;color:var(--ui-fg);border-radius:6px;flex:1;padding:6px 8px;font-family:monospace;font-size:.8rem}.info-device-label-form button{background:var(--ui-overlay);border:1px solid var(--ui-border);color:var(--ui-fg);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:.75rem}.info-device-label-form button:hover:not(:disabled){background:var(--ui-overlay-hover)}.info-device-label-form button:disabled{opacity:.4;cursor:default}.info-section .info-device-label-error{color:#e57373;margin:6px 0 0;font-size:.75rem}.preset-options{gap:8px;display:flex}.preset-option{border:1px solid var(--ui-border-subtle);background:var(--ui-overlay-subtle);color:var(--ui-fg);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:10px;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:10px 8px;font-family:inherit;transition:background .15s,border-color .15s,transform .1s;display:flex}.preset-option:hover{background:var(--ui-overlay-hover);border-color:var(--ui-border)}.preset-option:active{background:var(--ui-overlay-hover);transform:scale(.97)}.preset-option.selected{border-color:color-mix(in srgb, var(--ui-accent) 60%, transparent);background:color-mix(in srgb, var(--ui-accent) 10%, transparent)}.preset-option.selected:hover{border-color:color-mix(in srgb, var(--ui-accent) 80%, transparent);background:color-mix(in srgb, var(--ui-accent) 15%, transparent)}.preset-option-label{font-size:.9rem;font-weight:600;line-height:1}.preset-option-desc{opacity:.6;margin-top:3px;font-size:.65rem}@media (height<=400px){.new-game-button,.gather-pieces-button{padding:6px 10px;font-size:.75rem}.new-game-button{top:8px;right:8px}.gather-pieces-button{top:40px;right:8px}.bg-color-button,.bg-color-panel{top:64px;right:8px}.info-button{width:32px;height:32px;font-size:.9rem;line-height:32px;top:88px;right:8px}.select-tool-button{width:34px;height:34px;top:8px;left:8px}.marquee-tool-button{width:34px;height:34px;top:50px;left:8px}.deselect-button{width:40px;height:40px;bottom:16px}.rotate-button{width:36px;height:36px}}.app-toast{background:var(--ui-toast-bg);color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10002;pointer-events:none;border:1px solid #ffffff26;border-radius:12px;padding:12px 20px;font-size:14px;animation:.18s ease-out app-toast-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@keyframes app-toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.update-available-indicator{background:var(--ui-toast-bg);color:#fff;-webkit-backdrop-filter:blur(8px);font:inherit;cursor:pointer;z-index:10002;border:1px solid #ffffff26;border-radius:12px;padding:12px 20px;font-size:14px;animation:.18s ease-out app-toast-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.corrupt-save-overlay,.move-overlay{z-index:10004;background:#0009;justify-content:center;align-items:center;animation:.2s ease-out fade-in;display:flex;position:fixed;inset:0}.corrupt-save-dialog,.move-dialog{background:var(--ui-surface);color:#e0e0e0;-webkit-backdrop-filter:blur(12px);border:1px solid #ffffff1a;border-radius:16px;width:90%;max-width:360px;padding:24px;animation:.25s ease-out pop-in}.corrupt-save-title,.move-title{margin:0 0 12px;font-size:1.1rem;font-weight:600}.corrupt-save-body,.move-body{opacity:.85;margin:0 0 20px;font-size:.875rem;line-height:1.5}.corrupt-save-buttons,.move-buttons{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.corrupt-save-btn,.move-btn{color:#e0e0e0;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:10px;padding:10px 16px;font-family:inherit;font-size:.875rem;transition:background .15s,border-color .15s}.corrupt-save-btn:hover,.move-btn:hover{background:#ffffff2e;border-color:#ffffff59}.corrupt-save-btn:disabled{opacity:.6;cursor:default}.corrupt-save-btn--primary,.move-btn--primary{background:color-mix(in srgb, var(--ui-accent) 22%, transparent);border-color:color-mix(in srgb, var(--ui-accent) 45%, transparent);color:#fff}.corrupt-save-btn--primary:hover,.move-btn--primary:hover{background:color-mix(in srgb, var(--ui-accent) 32%, transparent);border-color:color-mix(in srgb, var(--ui-accent) 60%, transparent)}.share-section .share-primary-btn{background:color-mix(in srgb, var(--ui-accent) 22%, transparent);border:1px solid color-mix(in srgb, var(--ui-accent) 45%, transparent);color:#fff;cursor:pointer;border-radius:10px;margin-top:12px;padding:10px 18px;font-size:14px}.share-section .share-primary-btn:hover{background:color-mix(in srgb, var(--ui-accent) 32%, transparent)}.share-section .share-url-preview{color:#ddd;box-sizing:border-box;text-overflow:ellipsis;background:#00000040;border:1px solid #ffffff26;border-radius:8px;width:100%;margin-top:10px;padding:8px 10px;font-family:monospace;font-size:11px;display:block}.completion-share-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff26;border:1px solid #ffffff59;border-radius:12px;margin-top:16px;padding:10px 22px;font-size:16px}.completion-share-btn:hover{background:#ffffff40}.loading-overlay{z-index:10003;background:var(--ui-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#eee;letter-spacing:.3px;pointer-events:all;flex-direction:column;justify-content:center;align-items:center;gap:18px;font-size:15px;display:flex;position:fixed;inset:0}.loading-overlay__spinner{border:3px solid #fff3;border-top-color:#ffffffd9;border-radius:50%;width:44px;height:44px;animation:.9s linear infinite loading-overlay-spin}.loading-overlay__text{opacity:.85}.loading-overlay__cancel{font:inherit;color:var(--color-gray-lighter);background:color-mix(in srgb, var(--color-gray-lighter) 10%, transparent);border:1px solid color-mix(in srgb, var(--color-gray-lighter) 25%, transparent);cursor:pointer;border-radius:10px;padding:8px 16px;font-size:.875rem;transition:background .15s,border-color .15s}.loading-overlay__cancel:hover{background:color-mix(in srgb, var(--color-gray-lighter) 18%, transparent);border-color:color-mix(in srgb, var(--color-gray-lighter) 40%, transparent)}@keyframes loading-overlay-spin{to{transform:rotate(360deg)}}
