@font-face{font-family:Recursive;font-style:oblique 0deg 15deg;font-weight:300 1000;font-display:swap;src:url(/assets/recursive-latin-full-Bbk0y8ID.woff2)format("woff2-variations")}:root{--paper:#eef0f3;--sheet:#f9fafb;--sunk:#e1e5ec;--ink:#1e2741;--ink-2:#4b5472;--rule:#c9cfdb;--on-ink:#f9fafb;--blue:#3f5fb0;--teal:#1f6d66;--coral:#bc4c37;--yellow:#efbf45;--lilac:#6c5aa8;--mint:#2f7a5f;--orange:#a4520f;--sky:#1d6a8f;--olive:#62661c;--berry:#a3376f;--plum:#7e3f96;--cocoa:#7a5236;--c:var(--blue);--field:15%;--tint:color-mix(in srgb, var(--c) var(--field), var(--paper));--blend:multiply;--grain-op:.22;--shadow:0 .6em 1.4em -.8em #14193259;--wrong:var(--coral);--r-card:24px;--r-board:20px;--r-tile:16px;--r-key:13px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#141927;--sheet:#1b2132;--sunk:#0f131e;--ink:#e9ecf4;--ink-2:#a7aec3;--rule:#2d3549;--on-ink:#141927;--blue:#7f9cec;--teal:#5cc0b5;--coral:#f08f78;--yellow:#e8c062;--lilac:#a897e6;--mint:#86d1b4;--orange:#f2a766;--sky:#6cc4ea;--olive:#c3c86f;--berry:#f19ac5;--plum:#d6a0ea;--cocoa:#dcb497;--field:20%;--blend:screen;--grain-op:.1;--shadow:0 .6em 1.4em -.8em #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}@view-transition{navigation:auto}html,body{background:var(--paper);min-height:100%;color:var(--ink);font-variation-settings:"CASL" .35, "MONO" 0;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;font-family:Recursive,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}::selection{background:color-mix(in srgb, var(--yellow) 60%, transparent);color:var(--ink)}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}:focus-visible{outline:2.5px solid var(--c);outline-offset:2px}[hidden]{display:none!important}#app{min-height:100%;padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom);justify-content:center;display:flex}.screen{width:100%;max-width:480px}svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px}.mono,.timer,.score,.summary,.pad-left,.continue small,.history-time{font-variation-settings:"CASL" 0, "MONO" 1;font-variant-numeric:tabular-nums}.grain{isolation:isolate;position:relative}.grain:after{content:"";border-radius:inherit;pointer-events:none;opacity:var(--grain-op);mix-blend-mode:var(--blend);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 1.4 -.5'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px;position:absolute;inset:0}.home-inner{flex-direction:column;justify-content:center;min-height:100dvh;padding:32px 0;display:flex}.logo{font-variation-settings:"CASL" 1, "MONO" 0;letter-spacing:-.035em;color:var(--c);margin:0;font-size:clamp(2.6rem,12vw,3.6rem);font-weight:900;line-height:.95}.tagline{color:var(--ink-2);margin:10px 0 32px;font-weight:550}.section-label{font-variation-settings:"CASL" 1;color:var(--ink);margin:28px 0 10px;font-size:1rem;font-weight:800}.back-link{background:var(--tint);color:var(--c);border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin:0 0 24px;padding:8px 14px 8px 8px;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-flex}.back-link svg{stroke-width:2.4px;width:20px;height:20px}.back-link:active{filter:brightness(.95)}.btn{background:var(--sheet);box-shadow:inset 0 0 0 2px var(--rule);border:0;border-radius:999px;padding:14px 20px;font-weight:700;transition:transform 80ms,filter .15s}.btn:active{filter:brightness(.96);transform:scale(.98)}.btn-primary{background:var(--c);box-shadow:none;color:var(--on-ink)}.btn-quiet{box-shadow:none;color:var(--ink-2);background:0 0}.continue{border-radius:var(--r-card);justify-content:space-between;align-items:center;width:100%;padding:18px 22px;font-size:1.1rem;display:flex}.continue small{opacity:.9;font-size:.95rem;font-weight:600}.levels{gap:10px;display:grid}.level,.new-game{text-align:left;border-radius:var(--r-tile);background:var(--tint);box-shadow:none;color:var(--ink);justify-content:space-between;align-items:center;padding:16px 18px;font-size:1.05rem;display:flex}.level small,.new-game small{color:var(--ink-2);font-size:.85rem;font-weight:600}.history-link{color:var(--ink-2);background:0 0;justify-content:space-between;align-items:center;margin-top:28px;display:flex}.history-link svg{width:20px;height:20px}a.history-link{text-decoration:none}.history-link+.history-link{margin-top:10px}#history{padding-bottom:24px}.topbar-title{font-variation-settings:"CASL" 1;margin:0;font-size:1.15rem;font-weight:850}.summary{border-collapse:separate;border-spacing:0;background:var(--sheet);border-radius:var(--r-board);width:100%;box-shadow:var(--shadow);margin-top:8px;overflow:hidden}.summary th,.summary td{text-align:right;padding:12px 10px}.summary th:first-child{text-align:left;padding-left:16px}.summary td:last-child,.summary thead th:last-child{padding-right:16px}.summary thead th{color:var(--c);background:var(--tint);font-variation-settings:"CASL" .35, "MONO" 0;font-size:.75rem;font-weight:700}.summary tbody th,.summary tbody td{border-top:1px solid var(--rule)}.summary tbody tr:first-child th,.summary tbody tr:first-child td{border-top:0}.summary tbody th{font-variation-settings:"CASL" .35, "MONO" 0;font-weight:700}.muted{color:var(--ink-2)}.history-empty{color:var(--ink-2);font-size:.9rem;line-height:1.5}.history-list{margin:0;padding:0;list-style:none}.history-row{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.history-row:last-child{border-bottom:0}.history-level{font-weight:700}.history-date{color:var(--ink-2);margin-top:2px;font-size:.8rem}.history-result{text-align:right;flex-shrink:0}.history-time{font-weight:700}.history-status{color:var(--c);margin-top:2px;font-size:.75rem;font-weight:700}.is-unfinished .history-status{color:var(--ink-2)}#game{flex-direction:column;min-height:100dvh;padding-bottom:16px;display:flex}.topbar{grid-template-columns:44px 1fr auto;align-items:center;gap:12px;height:60px;display:grid}#history .topbar{grid-template-columns:44px 1fr 44px}.icon-btn{background:var(--tint);width:44px;height:44px;color:var(--c);border:0;border-radius:50%;place-items:center;display:grid}.icon-btn svg{stroke-width:2.4px;width:22px;height:22px}span.icon-btn{background:0 0}.icon-btn:active{filter:brightness(.94)}.meta{min-width:0;line-height:1.2}.meta b{font-variation-settings:"CASL" 1;font-size:1.15rem;font-weight:850;display:block}.meta span{color:var(--ink-2);font-size:.82rem;font-weight:600}.timer{background:var(--c);min-width:82px;height:40px;color:var(--on-ink);border:0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 14px 0 12px;font-weight:700;display:inline-flex}.timer:before{content:"";background:currentColor;width:14px;height:14px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 5v14M15 5v14' stroke='black' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 5v14M15 5v14' stroke='black' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/contain no-repeat}.timer[aria-label=Resume]:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5l11 7-11 7z' fill='black'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5l11 7-11 7z' fill='black'/%3E%3C/svg%3E")}.paused{place-items:center;display:grid;position:absolute;inset:0}.tools{grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0 12px;display:grid}.tool{color:var(--ink);background:0 0;border:0;flex-direction:column;align-items:center;gap:6px;padding:0;font-size:.8rem;font-weight:650;display:flex}.tool svg{box-sizing:content-box;border-radius:var(--r-tile);background:var(--tint);width:26px;height:26px;color:var(--c);padding:10px 15px;transition:background .15s,color .15s}.tool:active svg{filter:brightness(.94)}.tool b{color:var(--ink-2);font-weight:800}.tool.active svg{background:var(--c);color:var(--on-ink)}.tool.active b{color:var(--c)}.dialog{border-radius:var(--r-card);background:var(--sheet);width:min(360px,100vw - 32px);color:var(--ink);text-align:center;border:0;padding:28px 24px 20px;box-shadow:0 24px 48px -16px #0a0e1e73}.dialog::backdrop{background:#0e122073}.dialog h2{font-variation-settings:"CASL" 1;color:var(--c);margin:0 0 8px;font-size:1.8rem;font-weight:900}.dialog p{color:var(--ink-2);margin:0 0 24px;line-height:1.5}.dialog-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}@view-transition{navigation:none}}.board-wrap{margin:auto 0;padding-top:8px;position:relative;container-type:inline-size}.board{grid-template-columns:repeat(var(--cols), 1fr);grid-template-rows:repeat(var(--rows), 1fr);aspect-ratio:var(--cols) / var(--rows);width:min(100%, calc(100dvh - 280px) * var(--cols) / var(--rows));gap:calc(100cqi / var(--cols) * .06);border-radius:var(--r-board);background:var(--sheet);min-width:260px;box-shadow:var(--shadow);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0 auto;padding:6px;display:grid}.cell{border-radius:calc(100cqi / var(--cols) * .18);background:var(--sunk);min-width:0;min-height:0;color:var(--ink);font-size:calc(100cqi / var(--cols) * .5);font-variation-settings:"CASL" 1;touch-action:manipulation;border:0;place-items:center;padding:0;font-weight:850;line-height:1;transition:background .12s,color .12s;display:grid}.cell.cursor{outline:2.5px solid var(--yellow);outline-offset:-2.5px}.cell.hint{outline:3px solid var(--yellow);outline-offset:-3px;animation:1s ease-in-out infinite alternate hint}@keyframes hint{to{outline-color:#0000}}.board.solved .cell{animation:.5s both ripple;animation-delay:calc(var(--d,0) * 35ms)}@keyframes ripple{40%{transform:scale(.86)}}.board.is-paused .cell{background:var(--c);color:#0000}.board.is-paused .cell>*{visibility:hidden}.tools{margin-bottom:0}.tool:disabled{opacity:.4;cursor:default}:root{--edge:calc(100cqi / var(--cols) * .06)}.summary th,.summary td{padding:12px 8px}.board.cells{gap:0;padding:4px}.board.cells .cell{cursor:pointer;background:var(--sheet);box-shadow:inset 0 0 0 .5px var(--rule);border-radius:0;position:relative}.board.cells .cell:disabled{cursor:default}.cell[data-edges]:before{content:"";pointer-events:none;border:0 solid var(--ink);z-index:1;position:absolute;inset:0}.cell[data-edges*=t]:before{border-top-width:var(--edge)}.cell[data-edges*=r]:before{border-right-width:var(--edge)}.cell[data-edges*=b]:before{border-bottom-width:var(--edge)}.cell[data-edges*=l]:before{border-left-width:var(--edge)}.cell.dot:after{content:"";background:var(--ink-2);border-radius:50%;width:18%;height:18%}.cell.shaded{background:var(--c)!important}.cell.shaded.wrong{background:var(--wrong)!important}.cell.wrong-dot:after{content:"";background:var(--wrong);border-radius:50%;width:22%;height:22%}.cell svg{width:66%;height:66%}.cell .corner{font-size:calc(100cqi / var(--cols) * .3);color:var(--ink);z-index:2;font-weight:850;position:absolute;top:6%;left:10%}.cell.shaded .corner{color:var(--on-ink)}.board .clue{font-size:calc(100cqi / var(--cols) * .42);color:var(--c);place-items:center;font-weight:850;display:grid}.board .clue.met{color:var(--ink-2);opacity:.5}.board .clue.over{color:var(--wrong)}.board.lines{aspect-ratio:auto;padding:8px;display:block}.lattice{stroke:none;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.lattice .dots circle{fill:var(--ink)}.lattice .grid line{stroke:var(--rule);stroke-width:2px}.lattice .loop line{stroke:var(--c);stroke-width:14px;stroke-linecap:round}.lattice .loop line.wrong{stroke:var(--wrong)}.lattice .crosses path{stroke:var(--ink-2);stroke-width:5px;stroke-linecap:round}.lattice .hint line{stroke:var(--yellow);stroke-width:30px;stroke-linecap:round;animation:1s ease-in-out infinite alternate hint-line}@keyframes hint-line{to{opacity:.2}}.lattice text{font-variation-settings:"CASL" 1;text-anchor:middle;dominant-baseline:central;fill:var(--ink);font-family:inherit;font-weight:850}.board.is-paused .lattice>g:not(.grid){visibility:hidden}.board.solved .lattice .loop line{animation:.7s both glow}@keyframes glow{50%{stroke-width:22px}}:root{--c:var(--orange)}.lattice .clues text.met{opacity:.4}.lattice .clues text.over{fill:var(--wrong)}
