:root{color:#183144;font-synthesis:none;text-rendering:optimizelegibility;--surface:#fff;--surface-soft:#ffffffc7;--text:#183144;--muted:#607687;--line:#18314426;--water:#338dcc;--water-dark:#246f9f;--land:#85c254;--warning:#f26b26;--danger:#b53030;background:#f8fbfd;font-family:Inter,ui-rounded,SF Pro Rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=dark]{--surface:#122033;--surface-soft:#122033e6;--text:#eef7fc;--muted:#abc1d1;--line:#ffffff29;--water:#1c4266;--water-dark:#123052;--land:#4d783d;--warning:#f08b52;--danger:#ff7575;color:#eef7fc;background:#0d1828}@media (prefers-color-scheme:dark){:root[data-theme=system]{--surface:#122033;--surface-soft:#122033e6;--text:#eef7fc;--muted:#abc1d1;--line:#ffffff29;--water:#1c4266;--water-dark:#123052;--land:#4d783d;--warning:#f08b52;--danger:#ff7575;color:#eef7fc;background:#0d1828}}:root[data-palette=colorblindSafe]{--warning:#cc6baa}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px;color:var(--text);background:var(--surface);overscroll-behavior:none}button,select,input{font:inherit}button{color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,select:focus-visible,input:focus-visible,dialog:focus-visible{outline-offset:3px;outline:3px solid #ffcc4d}.sr-only{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.icon-button,.back-button{background:var(--surface-soft);border:0;border-radius:999px;min-width:44px;min-height:44px;font-weight:800;box-shadow:0 2px 10px #0000001a}.primary-button{font-weight:800;color:#fff!important;background:var(--water)!important;border-color:var(--water)!important}.full-button{width:100%}.splash{text-align:center;background:linear-gradient(#d8eef8,#b5dfe9 60%,#83bdca);place-content:center;animation:.35s 1s both splash-out;display:grid;position:fixed;inset:0;overflow:hidden}.splash:after{content:"";background:#85c254;border-radius:50%;width:140%;height:36%;position:absolute;bottom:-15%;left:-20%;box-shadow:0 -15px #edd999}.splash-animals{z-index:1;justify-content:center;gap:16px;display:flex;position:relative}.splash-animals img{object-fit:contain;background:#fff8;border-radius:50%;width:78px;height:78px;animation:.55s cubic-bezier(.2,.9,.25,1.3) splash-pop}.splash h1{letter-spacing:-.055em;z-index:1;margin:12px 0 2px;font-size:clamp(3rem,10vw,5rem);position:relative}.splash p{color:#4b6c7c;z-index:1;margin:0;font-weight:700;position:relative}@keyframes splash-pop{0%{opacity:0;transform:scale(.5)}}@keyframes splash-out{to{opacity:0}}.island-background{background:radial-gradient(circle at 80% 10%,#ffe29a88 0 28px,#0000 100px),repeating-radial-gradient(at 50% 100%,#0000 0 32px,#ffffff17 33px 35px),linear-gradient(#d8eef8,#b8e0eb 50%,#8fc8d4);min-height:100vh}:root[data-theme=dark] .island-background{background:radial-gradient(circle at 80% 10%,#e6e8d788 0 22px,#0000 80px),linear-gradient(#111d34,#102a40 55%,#103548)}.top-bar,.puzzle-header{height:64px;padding:8px max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));grid-template-columns:1fr auto;align-items:center;display:grid}.brand{align-items:center;gap:8px;font-size:1.25rem;font-weight:850;display:flex}.brand img{border-radius:12px;width:42px;height:42px}.menu-wrap{position:relative}.menu-popover{z-index:20;border:1px solid var(--line);background:var(--surface);border-radius:14px;min-width:170px;padding:8px;display:grid;position:absolute;top:50px;right:0;box-shadow:0 12px 35px #0003}.menu-popover button{text-align:left;background:0 0;border:0;border-radius:8px;padding:10px 12px}.menu-popover button:hover{background:var(--line)}.level-list-content{width:min(960px,100%);margin:auto;padding:8px 16px 70px}.pack-tabs{scrollbar-width:none;gap:10px;padding:6px 2px 12px;display:flex;overflow-x:auto}.pack-tabs button{border:1px solid var(--line);background:var(--surface-soft);border-radius:999px;flex:none;gap:1px;padding:8px 15px;display:grid}.pack-tabs button.active{color:#fff;background:var(--water-dark);border-color:#0000}.pack-tabs span{opacity:.8;font-size:.72rem}.solved-pill{background:var(--surface-soft);border-radius:99px;width:max-content;margin:0 auto 18px;padding:7px 14px;font-weight:700;box-shadow:0 2px 10px #0001}.level-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:16px;display:grid}.level-card{background:0 0;border:0;gap:7px;min-width:0;display:grid}.level-preview{aspect-ratio:1;background:var(--water);border:1px solid #ffffff80;border-radius:18px;position:relative;overflow:hidden;box-shadow:0 8px 20px #17496828}.level-preview canvas{filter:blur(3px)saturate(.85);width:100%;height:100%;transform:scale(1.05)}.level-number{color:#fff;text-shadow:0 2px 7px #0008;background:#0002;place-items:center;font-size:2rem;font-weight:900;display:grid;position:absolute;inset:0}.complete-mark{color:#fff;background:#38a84a;border:2px solid #fff;border-radius:50%;place-items:center;width:24px;height:24px;font-weight:900;display:grid;position:absolute;top:7px;right:7px}.level-card.locked .level-preview{filter:grayscale(.7);opacity:.7}.difficulty{background:var(--surface-soft);border-radius:99px;justify-self:center;padding:3px 9px;font-size:.75rem;font-weight:700}.stars{justify-content:center;gap:1px;line-height:1;display:inline-flex}.star-on{color:#f2b827;text-shadow:0 1px #7f5f0b}.star-off{color:#9aa9b5;opacity:.4}.stars-large{font-size:1.8rem}.puzzle-page{background:var(--surface);min-height:100vh}.puzzle-header{border-bottom:1px solid var(--line);grid-template-columns:48px 1fr 48px}.puzzle-header h1{text-align:center;margin:0;font-size:1.02rem}.puzzle-layout{width:min(1180px,100%);padding:12px 16px max(20px,env(safe-area-inset-bottom));gap:16px;margin:auto;display:grid}.board-column{min-width:0}.game-hint{text-align:center;color:var(--muted);margin:0 0 10px;font-size:.9rem}.board-shell{touch-action:none;border-radius:18px;width:100%;position:relative;overflow:hidden;box-shadow:0 8px 24px #123e5d36}.board-canvas{width:100%;height:100%;display:block}.board-grid{grid-auto-rows:1fr;display:grid;position:absolute;inset:0}.board-grid span,.board-grid button{background:0 0;border:0;border-radius:4px;min-width:0;min-height:0;padding:0}.board-grid button:focus-visible{outline-offset:-4px;background:#fff2;outline:3px solid #ffdb57}.controls{justify-items:center;gap:8px;margin-top:12px;display:grid}.controls>div:first-child{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.controls button,.win-card button{border:1px solid var(--line);background:var(--surface);border-radius:10px;min-height:40px;padding:7px 12px}.attempt-status{color:var(--muted);align-items:center;gap:14px;font-size:.8rem;display:flex}.tray-column h2{margin:0;font-size:1.1rem}.tray-column>p{color:var(--muted);margin:4px 0 10px;font-size:.8rem}.tile-tray{gap:12px;min-height:96px;padding:5px 3px 10px;display:flex;overflow-x:auto}.tray-tile{background:color-mix(in srgb,var(--water) 15%,var(--surface));touch-action:none;border:2px solid #0000;border-radius:14px;flex:0 0 86px;height:86px;padding:5px;transition:transform .18s,border-color .18s,opacity .18s}.tray-tile:hover{transform:translateY(-2px)}.tray-tile.selected{border-color:#f2b827;box-shadow:0 0 0 3px #f2b82744}.tray-tile.dragging{opacity:.2}.tray-tile canvas{width:100%;height:100%}.keyboard-help{display:none}.floating-tile{z-index:50;pointer-events:none;opacity:.92;width:124px;height:124px;transition:left .25s ease-out,top .25s ease-out,transform .25s ease-out,opacity .25s;position:fixed;transform:translate(-50%,-50%)}.floating-tile canvas{width:100%;height:100%}.floating-tile.snapping{opacity:.35;transform:translate(-50%,-50%)scale(.68)}.win-overlay{z-index:60;background:#0008;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.confetti{text-align:center;color:#ffd65c;word-spacing:5vw;font-size:clamp(2rem,8vw,5rem);animation:.9s ease-out both confetti;position:absolute;inset:15% 5% auto}.win-card{text-align:center;background:var(--surface);border-radius:24px;gap:10px;width:min(390px,100%);padding:26px;animation:.45s cubic-bezier(.2,.9,.25,1.25) win-pop;display:grid;position:relative;box-shadow:0 30px 80px #0008}.win-card h2,.win-card p{margin:0}.win-seal{color:#fff;background:#38a84a;border-radius:50%;justify-self:center;place-items:center;width:62px;height:62px;font-size:2.6rem;font-weight:900;display:grid}.win-card button{width:100%}.win-card button:last-child{background:0 0}@keyframes win-pop{0%{opacity:0;transform:scale(.6)}}@keyframes confetti{0%{opacity:0;transform:translateY(-100px)}}.modal{width:min(540px,100% - 24px);max-height:calc(100dvh - 24px);color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:0 20px 22px;box-shadow:0 30px 90px #0007}.modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0007}.modal-header{z-index:2;background:var(--surface);justify-content:space-between;align-items:center;padding:16px 0 10px;display:flex;position:sticky;top:0}.modal-header h2{margin:0}.settings-form{gap:16px;display:grid}.settings-form fieldset{border:1px solid var(--line);border-radius:14px;gap:12px;padding:13px;display:grid}.settings-form legend{padding:0 6px;font-weight:800}.settings-form label:not(.toggle){justify-content:space-between;align-items:center;display:flex}.settings-form select{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:7px}.toggle{align-items:center;gap:9px;display:flex}.toggle input{width:20px;height:20px;accent-color:var(--water)}.field-note,.version{color:var(--muted);font-size:.78rem}.danger-button{color:var(--danger);background:0 0;border:1px solid;border-radius:10px;padding:9px 12px}.confirm-reset{background:color-mix(in srgb,var(--danger) 10%,transparent);border-radius:12px;padding:12px}.confirm-reset div{justify-content:flex-end;gap:8px;display:flex}.confirm-reset button{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 12px}.about{text-align:center;justify-items:center;gap:8px;display:grid}.about img{border-radius:22px;width:96px}.about h3,.about p{margin:0}.tutorial-card{text-align:center;align-content:center;justify-items:center;min-height:250px;animation:.35s tutorial-in;display:grid}.tutorial-art{color:#fff;background:linear-gradient(#66bde8,#338dcc);border-radius:22px;place-items:center;width:260px;height:150px;font-size:3.3rem;display:grid;box-shadow:inset 0 0 0 1px #fff6,0 8px 22px #0002}.tutorial-card h3{margin:18px 0 5px}.tutorial-card p{color:var(--muted);max-width:370px;margin:0}.tutorial-dots{justify-content:center;gap:8px;margin:10px 0 18px;display:flex}.tutorial-dots button{background:var(--muted);opacity:.35;border:0;border-radius:50%;width:11px;height:11px;padding:0}.tutorial-dots button.active{opacity:1;background:var(--water)}@keyframes tutorial-in{0%{opacity:0;transform:translateY(8px)}}.update-toast{z-index:100;left:50%;bottom:max(16px,env(safe-area-inset-bottom));width:min(620px,100% - 24px);color:var(--text);background:var(--surface);border-radius:12px;align-items:center;gap:9px;padding:10px 12px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 35px #0005}.update-toast span{flex:1}.update-toast button{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:7px 10px}@media (width>=820px){.puzzle-layout{grid-template-columns:minmax(0,760px) minmax(240px,320px);align-items:start;padding-top:20px}.tray-column{border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,var(--water));border-radius:18px;padding:20px;position:sticky;top:80px}.tile-tray{grid-template-columns:repeat(2,1fr);display:grid;overflow:visible}.tray-tile{aspect-ratio:1;width:100%;height:auto}.keyboard-help{line-height:1.45;display:block!important}.level-grid{grid-template-columns:repeat(5,1fr)}}@media (height<=580px) and (orientation:landscape){.puzzle-layout{grid-template-columns:minmax(0,65vh) 1fr}.puzzle-header{height:50px}.game-hint{display:none}.tray-column{position:static}.tile-tray{grid-template-columns:repeat(3,minmax(70px,1fr));display:grid}.tray-tile{aspect-ratio:1;width:auto;height:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
