@font-face{font-family:Figtree;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/figtree-latin-400-normal-g7Dtegnw.woff2)format("woff2"),url(/assets/figtree-latin-400-normal-BD4aNku5.woff)format("woff")}@font-face{font-family:Figtree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/figtree-latin-600-normal-Cv_xCTDl.woff2)format("woff2"),url(/assets/figtree-latin-600-normal-BM_oTo4n.woff)format("woff")}@font-face{font-family:Figtree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/figtree-latin-700-normal-th6qEP7c.woff2)format("woff2"),url(/assets/figtree-latin-700-normal-BCCt2T1q.woff)format("woff")}@font-face{font-family:Figtree;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/figtree-latin-800-normal-30yxI7TZ.woff2)format("woff2"),url(/assets/figtree-latin-800-normal-B7vj2UK8.woff)format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-700-normal-gtcctNPv.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-700-normal-DvJDmrLu.woff)format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-latin-800-normal-J50vIsBe.woff2)format("woff2"),url(/assets/bricolage-grotesque-latin-800-normal-Br4b-5gk.woff)format("woff")}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-ui);font-size:calc(17px * var(--fs));-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1,h2,h3,p{margin:0}.muted{color:var(--muted)}.seo{max-width:460px;margin:0 auto;padding:24px 16px}.app{max-width:460px;height:100%;margin:0 auto;position:relative;overflow:hidden}.view{padding-block:max(16px, env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-bottom,0px));padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));flex-direction:column;gap:16px;animation:.24s cubic-bezier(.22,1,.36,1) viewIn;display:flex;position:absolute;inset:0;overflow-y:auto}@keyframes viewIn{0%{opacity:0;transform:translateY(10px)}}.view--game{gap:12px}.bar{align-items:center;gap:10px;min-height:48px;display:flex}.bar__title{font-weight:800;font-size:calc(20px * var(--fs));flex:auto}.icon-btn{background:var(--surface);cursor:pointer;border:0;border-radius:14px;flex:none;place-items:center;width:48px;height:48px;display:grid;box-shadow:inset 0 -3px #0000001f}.icon-btn:active{transform:translateY(2px)}.icon-btn svg{width:24px;height:24px;stroke:var(--ink);fill:none;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.stack{flex-direction:column;gap:10px;display:flex}.row{gap:10px;display:flex}.row>*{flex:1 1 0;min-width:0}.rl-btn__badge,.rl-btn{white-space:nowrap}.home-head{justify-content:center;align-items:center;min-height:52px;display:flex;position:relative}.home-head .icon-btn{position:absolute;top:0;right:0}.logo{font:800 calc(52px * var(--fs))/1 var(--font-display);letter-spacing:-1.5px;text-align:center}.logo span{color:var(--accent)}.home-best{text-align:center;color:var(--muted);font-weight:700}.levels{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.level{background:var(--surface);text-align:left;cursor:pointer;border:0;border-radius:16px;flex-direction:column;gap:0;min-width:0;padding:10px 14px;display:flex;box-shadow:inset 0 -3px #0000001a}.level strong{font-size:calc(17px * var(--fs))}.level span{color:var(--muted);font-size:calc(14px * var(--fs));font-weight:600}.level[aria-pressed=true]{background:var(--ink);color:var(--ground)}.level[aria-pressed=true] span{color:inherit;opacity:.8}@media (height<=760px){.view--home{gap:12px}.logo{font-size:calc(44px * var(--fs))}.level span{display:none}.level{padding:12px 14px}}.hud{font-variant-numeric:tabular-nums;flex:auto;justify-content:center;gap:16px;font-weight:800;display:flex}.hud span{line-height:1.1;font-size:calc(18px * var(--fs));flex-direction:column;align-items:center;display:flex}.hud small{font-size:calc(12px * var(--fs));letter-spacing:.8px;text-transform:uppercase;color:var(--muted)}.hud .bad{color:var(--err)}.board{aspect-ratio:1;background:var(--paper);width:100%;box-shadow:0 0 0 2px var(--grid-strong), 0 6px 18px #0000001a;touch-action:manipulation;border-radius:14px;flex:none;grid-template-rows:repeat(9,1fr);grid-template-columns:repeat(9,1fr);display:grid;position:relative;overflow:hidden}.cell{font:700 calc(min(7.2vw, 30px) * var(--fs)) var(--font-ui);color:var(--pen);box-shadow:inset -1px -1px 0 var(--grid);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;transition:background-color .12s;display:grid;position:relative}.cell.given{color:var(--given)}.cell.c3,.cell.c6{box-shadow:inset -1px -1px 0 var(--grid), inset 2px 0 0 var(--grid-strong)}.cell.r3,.cell.r6{box-shadow:inset -1px -1px 0 var(--grid), inset 0 2px 0 var(--grid-strong)}.cell.c3.r3,.cell.c3.r6,.cell.c6.r3,.cell.c6.r6{box-shadow:inset -1px -1px 0 var(--grid), inset 2px 2px 0 var(--grid-strong)}.cell.peer{background:var(--peer)}.cell.same{background:var(--same)}.cell.sel{background:var(--sel)}.cell.err{color:var(--err);background:var(--err-bg)}.cell.hint{animation:1.2s ease-in-out 2 hintCell}@keyframes hintCell{50%{background:var(--gold-soft);box-shadow:inset 0 0 0 3px var(--gold)}}.cell.placed{animation:.28s cubic-bezier(.34,1.56,.64,1) placed}@keyframes placed{0%{transform:scale(.6)}}.cell.flash{animation:flash .6s ease-out var(--d,0s) backwards}@keyframes flash{30%{background:var(--flash);transform:scale(1.06)}}.notes{font:700 calc(min(2.7vw, 11.5px) * var(--fs)) var(--font-ui);color:var(--pencil);pointer-events:none;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);display:grid;position:absolute;inset:6%}.notes i{place-items:center;font-style:normal;display:grid}.notes i.match{color:var(--pen)}.tools{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.tool{background:var(--surface);min-height:60px;font-weight:800;font-size:calc(14px * var(--fs));cursor:pointer;border:0;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:relative;box-shadow:inset 0 -3px #0000001a}.tool svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.tool[aria-pressed=true]{background:var(--ink);color:var(--ground)}.tool .badge{background:var(--gold);color:#1c1d2b;border-radius:99px;padding:1px 6px;font-size:12px;font-weight:800;position:absolute;top:6px;right:8px}.tool:disabled{opacity:.45;cursor:default}.tool:active:not(:disabled){transform:translateY(2px)}.pad{grid-template-columns:repeat(9,1fr);gap:5px;display:grid}.key{background:var(--surface);cursor:pointer;min-height:58px;color:var(--pen);border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:0;display:flex;box-shadow:inset 0 -3px #0000001a}.key b{font:700 calc(26px * var(--fs))/1 var(--font-ui)}.key small{color:var(--muted);font-size:12px;font-weight:700}.key:disabled{visibility:hidden}.key:active{transform:translateY(2px)}.pad--pencil .key{color:var(--pencil)}.coach{background:var(--gold-soft);color:var(--ink);font-size:calc(15px * var(--fs));border-radius:16px;align-items:flex-start;gap:10px;padding:12px 14px;animation:.3s cubic-bezier(.22,1,.36,1) viewIn;display:flex}.coach svg{fill:none;width:22px;height:22px;stroke:var(--gold-ink);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;flex:none;margin-top:1px}.coach strong{display:block}.coach p{color:var(--muted);font-weight:600}.coach button{color:var(--gold-ink);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:4px 6px;font-weight:800}.end-top{text-align:center;flex-direction:column;align-items:center;gap:10px;padding-top:8px;display:flex}.eyebrow{font-size:calc(13px * var(--fs));letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);font-weight:800}.end-headline{font:800 calc(32px * var(--fs))/1.05 var(--font-display);color:var(--gold)}.end-time{font:800 calc(60px * var(--fs))/1 var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-1px}.stamp{animation:.5s cubic-bezier(.2,1.4,.4,1) .45s backwards stamp}@keyframes stamp{0%{opacity:0;transform:scale(1.8)}}.delta{background:var(--gold-soft);color:var(--gold-ink);font-weight:800;font-size:calc(14px * var(--fs));border-radius:999px;align-items:center;gap:6px;padding:5px 12px;display:inline-flex}.facts{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.fact{background:var(--surface);font-size:calc(13px * var(--fs));color:var(--muted);border-radius:999px;align-items:baseline;gap:6px;padding:6px 12px;font-weight:700;display:inline-flex}.fact b{color:var(--ink);font-size:calc(15px * var(--fs))}.end-mid{flex-direction:column;align-items:center;gap:14px;margin-block:auto;display:flex}.mini9{aspect-ratio:1;background:var(--paper);width:180px;box-shadow:0 0 0 2px var(--grid-strong);border-radius:10px;grid-template-columns:repeat(9,1fr);display:grid;overflow:hidden}.mini9 i{font:700 11px var(--font-ui);color:var(--pen);box-shadow:inset -1px -1px 0 var(--grid);place-items:center;font-style:normal;display:grid}.mini9 i.g{color:var(--given)}.next-mission{background:var(--surface);text-align:left;border-radius:18px;align-items:center;gap:12px;width:100%;padding:10px 12px;display:flex}.next-mission svg{width:26px;height:26px;fill:var(--gold);flex:none}.next-mission strong{font-size:calc(15px * var(--fs));display:block}.next-mission .muted{font-size:calc(13px * var(--fs));display:block}.group{background:var(--surface);border-radius:20px;flex-direction:column;display:flex;overflow:hidden}.link-row{color:inherit;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;text-decoration:none}.fine{font-size:calc(14px * var(--fs));color:var(--muted);text-align:center}.ad{min-height:0}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root[data-reduce] *,:root[data-reduce] :before,:root[data-reduce] :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
