@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/nunito-latin-600.woff2)format("woff2")}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/nunito-latin-700.woff2)format("woff2")}*{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--font-display:"Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif}body{color:#ece8f3;background:radial-gradient(1200px 700px at 50% -10%,#3a2d55 0%,#241d33 55%,#141019 100%) fixed;min-height:100vh;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}button{font-family:inherit}.pwa-toast{z-index:1000;background:#1a2030;border:1px solid #ffffff1f;border-radius:.6rem;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.9rem;display:flex;position:fixed;bottom:1rem;right:1rem;box-shadow:0 8px 24px #0006}.pwa-toast button{color:#0b0f17;cursor:pointer;background:#ffffffeb;border:0;border-radius:.4rem;padding:.35rem .7rem;font-weight:600}.pwa-toast .pwa-dismiss{color:#ffffffb3;background:0 0;font-weight:400}.app{flex-direction:column;align-items:center;gap:16px;max-width:640px;margin:0 auto;padding:20px 16px 48px;display:flex}h1,h2,h3,.level-nav .level-label,.level-nav .daily-label,.toolbar button,.win-card button,.ach-banner,.ach-name{font-family:var(--font-display)}header{justify-content:space-between;align-items:center;width:100%;display:flex}h1{letter-spacing:.5px;margin:0;font-size:26px}.crown{color:#b9a7f0}.level-nav{align-items:center;gap:6px;display:flex}.level-nav button{color:#ece8f3;cursor:pointer;background:#b9a7f01f;border:1px solid #b9a7f059;border-radius:8px;width:30px;height:30px;font-size:18px;line-height:1}.level-nav button:disabled{opacity:.35;cursor:default}.level-nav button.level-label{width:auto;height:auto;font-size:inherit;text-align:center;background:0 0;border:0;min-width:70px;padding:4px 6px;font-weight:600}.level-nav button.level-label:hover{background:#b9a7f026}.level-nav button.mode-tab{margin-left:4px;font-size:14px}.level-nav .zen-size{color:#ece8f3;text-align:center;cursor:pointer;background:#b9a7f01f;border:1px solid #b9a7f059;border-radius:8px;min-width:70px;padding:5px 6px;font-family:inherit;font-size:14px;font-weight:600}.level-nav .zen-size option{color:#ece8f3;background:#241d33}.level-nav button.zen-new{width:auto;padding:0 10px;font-size:13px;font-weight:600}.level-nav .daily-label{text-align:center;min-width:70px;padding:4px 6px;font-weight:600}.level-nav .daily-label .streak{color:#f0ce7a;font-variant-numeric:tabular-nums}.toolbar{align-items:center;gap:10px;width:100%;display:flex}.progress{color:#b6aecb;font-variant-numeric:tabular-nums;margin-right:auto;font-size:14px}.timer{color:#b6aecb;font-variant-numeric:tabular-nums;font-size:14px}.toolbar button{color:#ece8f3;cursor:pointer;background:#b9a7f01f;border:1px solid #b9a7f059;border-radius:10px;padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s}.toolbar button:hover:not(:disabled){background:#b9a7f040}.toolbar button:disabled{opacity:.4;cursor:default}button.primary{background:#7c5fd3;border-color:#8d73dd}button.primary:hover:not(:disabled){background:#8d73dd}.toolbar button.gear,.toolbar button.icon{padding:8px 12px;font-size:16px;line-height:1}.toolbar button.gear.open{background:#b9a7f04d}.settings-panel{background:#b9a7f014;border:1px solid #b9a7f04d;border-radius:12px;width:100%;padding:12px 14px}.setting{cursor:pointer;align-items:flex-start;gap:10px;font-size:14.5px;display:flex}.setting input{accent-color:#7c5fd3;margin-top:3px}.setting small{color:#9b92b3;margin-top:2px;font-size:12.5px;line-height:1.45;display:block}.setting-text{cursor:default;justify-content:space-between;align-items:center;margin-top:12px}.setting-text input[type=text]{color:#ece8f3;background:#14101999;border:1px solid #b9a7f066;border-radius:8px;flex-shrink:0;width:130px;margin-top:0;padding:6px 9px;font-size:14px}.board{--cell:clamp(26px, min(calc(88vw / var(--n)), calc(64vh / var(--n))), 56px);--gutter:26px;--frame:5px;grid-template-columns:var(--gutter) repeat(var(--n), var(--cell));grid-template-rows:var(--gutter) repeat(var(--n), var(--cell));padding:0 var(--frame) var(--frame) 0;-webkit-user-select:none;user-select:none;touch-action:pan-y;align-items:stretch;display:grid}.board .label{color:#8d84a5;justify-content:center;align-items:center;height:auto;min-height:18px;font-size:11px;display:flex}.cell{width:var(--cell);height:var(--cell);font-size:calc(var(--cell) * .58);color:#221a33;cursor:pointer;border:0 solid #181225;border-radius:0;justify-content:center;align-items:center;margin:0;padding:0;line-height:1;transition:opacity .25s;display:flex;position:relative}.cell:focus-visible{outline-offset:-3px;z-index:4;outline:3px solid #0000;box-shadow:inset 0 0 0 2px #f4f1fb,inset 0 0 0 5px #17111f}.cell.grid-top{border-top-width:1px}.cell.grid-left{border-left-width:1px}.cell.fence-top{border-top:3px solid #4d341c}.cell.fence-left{border-left:3px solid #4d341c}.cell.fence-top:before,.cell.fence-left:after{content:"";pointer-events:none;position:absolute}.cell.fence-top:before{background:repeating-linear-gradient(90deg,#b98a4f 0 5px,#0000 5px 9px);height:3px;top:-3px;left:0;right:0}.cell.fence-left:after{background:repeating-linear-gradient(#b98a4f 0 5px,#0000 5px 9px);width:3px;top:0;bottom:0;left:-3px}.board{position:relative}.board:before{content:"";top:calc(var(--gutter) - var(--frame));left:calc(var(--gutter) - var(--frame));border:var(--frame) solid #6e4a26;pointer-events:none;z-index:3;border-radius:12px;position:absolute;bottom:0;right:0;box-shadow:inset 0 0 0 1px #18122599,0 0 0 1px #18122599}.cell.corner-tl{border-top-left-radius:7px}.cell.corner-tr{border-top-right-radius:7px}.cell.corner-bl{border-bottom-left-radius:7px}.cell.corner-br{border-bottom-right-radius:7px}.cell.xmark{font-size:calc(var(--cell) * .4);color:#181225c7;font-weight:700}.cell.xmark.auto{color:#18122561;cursor:default;font-weight:500}.cell.animal{text-shadow:0 1px 2px #00000059}.cell.conflict{color:#c81e3e;animation:.9s ease-in-out infinite throb}.cell.solved.animal{animation:.6s bounce;animation-delay:var(--wave-delay,0s);animation-fill-mode:backwards}@keyframes throb{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes bounce{0%{transform:scale(.4)}60%{transform:scale(1.25)}to{transform:scale(1)}}.cell .glyph{pointer-events:none;line-height:1;display:inline-block}.cell.animal .glyph{animation:.2s ease-out pop-in}.cell.xmark:not(.auto) .glyph{animation:.11s ease-out mark-in}.cell.xmark.auto .glyph{animation:.16s ease-out backwards auto-in;animation-delay:var(--auto-delay,0s)}@keyframes pop-in{0%{transform:scale(.4)}70%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes mark-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes auto-in{0%{opacity:0}to{opacity:1}}@media (hover:hover){.cell:not(.animal):not(.xmark):not(.solved):hover .glyph:after{content:"✕";font-size:calc(var(--cell) * .4);color:#1812253d;font-weight:700}}.cell.conflict-zone{box-shadow:inset 0 0 0 999px #c81e3e21}.cell.hint-change{outline-offset:-3px;z-index:2;outline:3px solid #fff;animation:1.1s ease-in-out infinite hint-pulse}.cell.hint-change.hint-error{--hint-color:#c8102e}.cell.hint-change.hint-place{--hint-color:#056635}.cell.hint-change.hint-mark{--hint-color:#1f2937}.cell.hint-change{outline-color:var(--hint-color,#fff);box-shadow:0 0 12px 2px var(--hint-color,#fff)}.cell.hint-context{z-index:1;box-shadow:inset 0 0 0 3px #ffffff8c}@keyframes hint-pulse{0%,to{outline-offset:-3px}50%{outline-offset:-6px}}.hint-panel{border:1px solid;border-radius:12px;width:100%;padding:12px 14px;font-size:14.5px;line-height:1.5}.hint-panel.hint-error{background:#ff4d6d1f;border-color:#ff4d6d73}.hint-panel.hint-place{background:#3ddc971a;border-color:#3ddc9766}.hint-panel.hint-mark{background:#ffd1661a;border-color:#ffd16666}.hint-panel.hint-solved{background:#b9a7f01f;border-color:#b9a7f073}.hint-panel.hint-nudge{color:#b6aecb;font-style:italic}.rules{color:#9b92b3;text-align:center;max-width:460px;margin:0;font-size:13px;line-height:1.6}.controls{color:#9b92b3;grid-template-columns:auto 1fr;gap:4px 10px;max-width:460px;margin:0;font-size:12.5px;line-height:1.7;display:grid}.controls dt{color:#b6aecb;text-align:right;font-weight:600}.controls dd{margin:0}@media (width<=420px){.controls{text-align:center;grid-template-columns:1fr;gap:0}.controls dt{text-align:center;margin-top:4px}}kbd{color:#d6cff0;text-align:center;background:#b9a7f01f;border:1px solid #b9a7f059;border-bottom-width:2px;border-radius:5px;min-width:1.5em;padding:1px 5px;font-family:inherit;font-size:.92em;line-height:1.4;display:inline-block}.hint-technique{font-family:var(--font-display);letter-spacing:.02em;color:#b9a7f0;margin-bottom:4px;font-size:12.5px;font-weight:700;display:block}.gallery-note{color:#9b92b3;margin:12px 20px 0;font-size:12.5px;line-height:1.5}.tutorial-panel{background:#b9a7f01f;border:1px solid #b9a7f073;border-radius:12px;grid-template-columns:auto 1fr;align-items:center;gap:4px 12px;width:100%;padding:12px 14px;display:grid}.tutorial-count{color:#b9a7f0;font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.tutorial-panel p{margin:0;font-size:14.5px;line-height:1.5}.tutorial-actions{grid-column:2;align-items:center;gap:10px;margin-top:8px;display:flex}.tutorial-panel button{color:#ece8f3;font-family:var(--font-display);cursor:pointer;background:#b9a7f01f;border:1px solid #b9a7f059;border-radius:9px;padding:7px 14px;font-size:13.5px;font-weight:600}.tutorial-panel .tutorial-skip{color:#9b92b3;background:0 0;border-color:#0000}.tutorial-panel .tutorial-skip:hover{color:#ece8f3}.cell.dim{opacity:.28}.setting-action{cursor:default;justify-content:space-between;align-items:center;gap:12px;margin-top:12px}.setting-action button{color:#ece8f3;font-family:var(--font-display);cursor:pointer;background:#b9a7f01f;border:1px solid #b9a7f059;border-radius:9px;flex-shrink:0;padding:7px 14px;font-size:13.5px;font-weight:600}.win-overlay{z-index:10;background:#0e0a16b8;justify-content:center;align-items:center;animation:.3s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.win-card{text-align:center;z-index:11;background:linear-gradient(160deg,#322a4a,#241d33);border:1px solid #b9a7f066;border-radius:18px;padding:32px 44px;animation:.45s cubic-bezier(.2,1.4,.4,1) card-pop;box-shadow:0 18px 60px #00000080}@keyframes card-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.win-crown{font-size:52px;animation:.8s bounce}.win-card h2{margin:8px 0 4px}.win-card p{color:#b6aecb;margin:0 0 20px}.win-card .win-time{margin:-14px 0 20px}.win-card .win-time strong{color:#f0ce7a}.win-card button{color:#fff;cursor:pointer;background:#7c5fd3;border:1px solid #8d73dd;border-radius:12px;padding:10px 24px;font-size:15px;font-weight:600}.win-card button:hover{background:#8d73dd}.win-card .win-streak{color:#f0ce7a;margin:-14px 0 20px;font-weight:600}.win-card .win-actions{justify-content:center;gap:10px;display:flex}.win-card .win-actions button:not(.primary){color:#ece8f3;background:#b9a7f01f;border-color:#b9a7f059}.win-card .win-actions button:not(.primary):hover{background:#b9a7f040}.win-card .share-fallback{color:#ece8f3;resize:none;background:#0e0a1680;border:1px solid #b9a7f059;border-radius:10px;width:100%;margin-top:14px;padding:10px;font-size:13px;line-height:1.4;display:block}.confetti{pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti span{animation-name:confetti-fall;animation-timing-function:linear;animation-fill-mode:forwards;position:absolute;top:-16px}@keyframes confetti-fall{to{transform:translateY(110vh) translateX(var(--drift)) rotate(var(--spin));opacity:.7}}.achievement-toast{pointer-events:none;z-index:50;color:#f4eede;background:linear-gradient(150deg,#3a2f17,#241d33);border:1px solid #f0ce7a8c;border-radius:14px;align-items:center;gap:12px;max-width:min(92vw,420px);padding:12px 18px 12px 14px;animation:.4s cubic-bezier(.2,1.4,.4,1) ach-pop;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 12px 40px #00000080}@keyframes ach-pop{0%{opacity:0;transform:translate(-50%)translateY(-24px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.ach-icon{filter:drop-shadow(0 1px 2px #0006);flex-shrink:0;font-size:28px;line-height:1;animation:.8s bounce}.ach-body{flex-direction:column;gap:2px;min-width:0;display:flex}.ach-banner{color:#f0ce7a;letter-spacing:.01em;font-size:.95rem}.ach-name{color:#f0ce7a;font-size:1rem}.ach-desc{color:#f4eeded1;font-size:.85rem}.gallery-overlay{z-index:20;background:#0e0a16b8;justify-content:center;align-items:center;padding:16px;animation:.25s fade-in;display:flex;position:fixed;inset:0}.gallery-card{background:linear-gradient(160deg,#322a4a,#241d33);border:1px solid #b9a7f066;border-radius:18px;flex-direction:column;width:min(94vw,460px);max-height:86vh;animation:.4s cubic-bezier(.2,1.4,.4,1) card-pop;display:flex;box-shadow:0 18px 60px #00000080}.gallery-head{border-bottom:1px solid #ffffff14;align-items:center;gap:10px;padding:18px 20px 12px;display:flex}.gallery-head h2{margin:0;font-size:1.25rem}.gallery-count{color:#f0ce7a;background:#f0ce7a1f;border:1px solid #f0ce7a59;border-radius:999px;padding:2px 10px;font-size:.9rem}.gallery-close{color:#ece8f3b3;cursor:pointer;background:0 0;border:0;border-radius:8px;margin-left:auto;padding:4px 8px;font-size:1.1rem}.gallery-close:hover{color:#ece8f3;background:#ffffff14}.gallery-list{flex-direction:column;gap:8px;margin:0;padding:12px;list-style:none;display:flex;overflow-y:auto}.gallery-item{opacity:.65;background:#ffffff08;border:1px solid #ffffff0f;border-radius:12px;align-items:center;gap:12px;padding:12px 14px;display:flex}.gallery-item.unlocked{opacity:1;background:linear-gradient(150deg,#3a2f1799,#241d3399);border-color:#f0ce7a66}.gallery-icon{text-align:center;flex-shrink:0;width:30px;font-size:24px;line-height:1}.gallery-item:not(.unlocked) .gallery-icon{filter:grayscale(.4);opacity:.8}.gallery-text{flex-direction:column;gap:2px;min-width:0;display:flex}.gallery-text strong{font-size:.98rem}.gallery-item.unlocked .gallery-text strong{color:#f0ce7a}.gallery-item.secret .gallery-text strong{color:#ece8f3b3;font-style:italic}.gallery-text small{color:#ece8f3b3;font-size:.82rem}.level-sections{flex-direction:column;gap:16px;padding:14px 16px 16px;display:flex;overflow-y:auto}.level-section-head{letter-spacing:.06em;color:#b6aecb;margin:0 0 8px;font-size:.82rem;font-weight:600}.level-grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;display:grid}.level-chip{color:#ece8f3;cursor:pointer;background:#b9a7f01f;border:1px solid #b9a7f059;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;font-size:15px;font-weight:600;transition:background .15s;display:flex}.level-chip:hover:not(:disabled){background:#b9a7f040}.level-chip:disabled{opacity:.35;cursor:default}.level-chip.current{background:#7c5fd373;border-color:#8d73dd}.chip-best{color:#f0ce7a;font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:500}.name-overlay{z-index:40;background:#0e0a16b8;justify-content:center;align-items:center;padding:16px;animation:.25s fade-in;display:flex;position:fixed;inset:0}.name-card{text-align:center;background:linear-gradient(160deg,#322a4a,#241d33);border:1px solid #b9a7f066;border-radius:18px;width:min(92vw,360px);padding:26px 26px 20px;animation:.4s cubic-bezier(.2,1.4,.4,1) card-pop;box-shadow:0 18px 60px #00000080}.name-trophy{font-size:40px;animation:.8s bounce}.name-card h2{margin:8px 0 6px;font-size:1.3rem}.name-card p{color:#ece8f3bf;margin:0 0 16px;font-size:.9rem;line-height:1.5}.name-card input[type=text]{color:#ece8f3;text-align:center;background:#14101999;border:1px solid #b9a7f073;border-radius:10px;width:100%;padding:10px 12px;font-size:1rem}.name-actions{gap:10px;margin-top:16px;display:flex}.name-actions button{cursor:pointer;border:0;border-radius:10px;flex:1;padding:10px 14px;font-size:.95rem;font-weight:600}.name-actions .primary{color:#fff;background:#7c5fd3}.name-actions .primary:disabled{opacity:.5;cursor:default}.name-actions .name-skip{color:#ece8f3cc;background:#ffffff14}.name-actions .name-skip:hover{background:#ffffff24}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.confetti{display:none}}
