:root{--ink: #17161c;--paper: #f6f3ec;--card: #ffffff;--muted: #4e4a57;--muted-2: #5e5a66;--blue: #2e47e0;--blue-hover: #1c2fa8;--red: #ff5a4e;--yellow: #ffc93c;--green: #2bb673;--green-text: #1e7f50;--outline: 2px solid var(--ink);--shadow-key: 0 4px 0 var(--ink);--shadow-key-up: 0 6px 0 var(--ink);--shadow-key-down: 0 0 0 var(--ink);--shadow-card: 8px 8px 0 var(--ink);--r-key: 12px;--r-tile: 14px;--r-card: 24px;--press: 80ms ease-out;--font-display: Unbounded, "Arial Black", system-ui, sans-serif;--font-body: Outfit, system-ui, -apple-system, "Segoe UI", sans-serif;--bg: var(--paper);--surface: var(--card);--border: var(--ink);--line: #dad4c6;--solved: var(--green);--accent-ink: #ffffff;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}html{touch-action:manipulation}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}body{background:var(--paper);color:var(--ink);font:16px/1.5 var(--font-body);padding:env(safe-area-inset-top,0) 16px env(safe-area-inset-bottom,0)}a{color:var(--blue);font-weight:600;text-underline-offset:3px}a:hover{color:var(--blue-hover)}h1,h2{line-height:1.2;margin:0}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}[hidden]{display:none!important}.page{max-width:880px;margin:0 auto;padding-block:20px 64px}.page-head{margin-bottom:32px}.back{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font-weight:600}.eyebrow{display:flex;align-items:center;gap:6px;margin:10px 0 0;font:700 14px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase}.eyebrow-dot{width:12px;height:12px;border-radius:50%;background:var(--c)}.eyebrow-dot:last-of-type{margin-right:6px}.page-head h1{margin-top:14px;font:900 clamp(40px,7vw,74px) / .98 var(--font-display);letter-spacing:-.02em}.lede{color:var(--muted);font-size:1.1rem;max-width:58ch;margin:16px 0 0}.howto-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin:22px 0 0}.account-line{min-height:1.5em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 18px;border:var(--outline);border-radius:var(--r-key);background:var(--card);color:var(--ink);box-shadow:var(--shadow-key);font:600 1rem/1 var(--font-body);text-decoration:none;cursor:pointer;transition:transform var(--press),box-shadow var(--press)}.btn:hover:not(:disabled){color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-key-up)}.btn:active:not(:disabled){transform:translateY(4px);box-shadow:var(--shadow-key-down)}.btn:disabled{opacity:.45;cursor:default}.btn.primary,.btn.primary:hover{background:var(--blue);color:#fff}.btn[aria-pressed=true],.btn[aria-pressed=true]:hover{background:var(--ink);color:#fff}.btn.small{min-height:44px;padding:0 14px;font-size:.95rem}.tabs{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 24px}.tab small{margin-left:2px;color:var(--muted-2);font-weight:500;font-size:.85rem}.tab[aria-pressed=true] small{color:inherit;opacity:.8}.continue{display:flex;align-items:center;gap:24px;background:var(--blue);color:#fff;border:var(--outline);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:22px 26px 22px 22px;margin-bottom:36px}.continue p{margin:0}.continue-text{flex:1;min-width:0}.continue-label{font:700 13px/1.3 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:#dce2ff}.continue-big{margin-top:8px!important;font:800 32px/1.1 var(--font-display);letter-spacing:-.01em}.continue-sub{margin-top:8px!important;font-weight:500;font-size:1.05rem}.continue :focus-visible{outline-color:#fff}.btn.cta,.btn.cta:hover{flex-shrink:0;min-height:58px;padding:0 26px;background:var(--yellow);color:var(--ink);font:800 20px/1 var(--font-display)}.btn.cta:hover:not(:disabled){animation:wiggle .36s ease-in-out infinite}.btn.cta:active:not(:disabled){animation:none}.cta-icon{font-size:.8em}@keyframes wiggle{0%,to{transform:translateY(-2px) rotate(-3deg)}50%{transform:translateY(-2px) rotate(3deg)}}.daily{display:flex;align-items:center;gap:18px;background:var(--yellow);color:var(--ink);border:var(--outline);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:16px 20px 16px 16px;margin-bottom:22px}.daily p{margin:0}.daily-cal{flex:none;width:64px;display:flex;flex-direction:column;overflow:hidden;background:var(--card);border:var(--outline);border-radius:12px;text-align:center}.daily-month{background:var(--red);color:#fff;font:700 12px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;padding:5px 0 4px;border-bottom:var(--outline)}.daily-day{font:900 28px/1 var(--font-display);padding:7px 0 8px}.daily-text{flex:1;min-width:0}.daily-label{font:700 12px/1.3 var(--font-body);letter-spacing:.14em;text-transform:uppercase}.daily-big{margin-top:4px!important;font:800 22px/1.15 var(--font-display)}.daily-sub{margin-top:4px!important;font-weight:500;font-size:.95rem}.btn.daily-play{flex:none;background:var(--ink);color:#fff}.btn.daily-play:hover:not(:disabled){background:var(--ink);color:#fff}.daily-done{flex:none;font:800 16px/1 var(--font-display);padding:10px 14px;border:var(--outline);border-radius:999px;background:var(--card)}@media(max-width:719px){.daily{flex-wrap:wrap;gap:12px 14px;padding:14px}.daily-cal{width:56px}.daily-day{font-size:24px}.daily-text{flex:1 1 160px}.daily-big{font-size:18px}.btn.daily-play{flex:1 1 100%}}.win-card .streak{margin:-10px 0 18px;color:var(--ink);font-weight:700}.preview{flex:0 0 auto;width:190px;aspect-ratio:1;background:var(--card);border:var(--outline);border-radius:16px;overflow:hidden;animation:bob 2.4s ease-in-out infinite}.preview svg{display:block;width:100%;height:100%}@keyframes bob{50%{transform:translateY(-6px)}}@media(max-width:719px){.continue{flex-wrap:wrap;gap:16px 18px;padding:18px}.preview{width:112px}.continue-text{flex:1 1 150px}.continue-big{font-size:22px}.tabs{display:grid;grid-template-columns:1fr 1fr}.continue-sub{font-size:.95rem}.btn.cta{flex:1 1 100%}}.sets{display:flex;flex-direction:column;gap:18px}.set{background:var(--card);border:var(--outline);border-radius:var(--r-card)}.set.open{padding:24px;box-shadow:var(--shadow-card)}.set.open:focus{outline:none}.set-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}.set-head h2,.set-title{font:800 1.15rem/1.25 var(--font-display)}.set-count{font:800 1.15rem/1.25 var(--font-display);color:var(--green-text);white-space:nowrap;font-variant-numeric:tabular-nums}.bar{display:block;height:14px;border:var(--outline);border-radius:999px;background:var(--paper);overflow:hidden}.bar-fill{display:block;height:100%;width:0;background:var(--green);box-shadow:2px 0 0 var(--ink);transition:width .7s cubic-bezier(.3,1.2,.5,1)}.set.closed{display:grid;grid-template-columns:15rem 1fr auto auto;align-items:center;gap:16px;width:100%;min-height:64px;padding:0 22px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;box-shadow:var(--shadow-key);transition:transform var(--press),box-shadow var(--press)}.set.closed:hover{transform:translateY(-2px);box-shadow:var(--shadow-key-up)}.set.closed:active{transform:translateY(4px);box-shadow:var(--shadow-key-down)}.set.closed .set-title,.set.closed .set-count{font-size:1rem}.chev{width:18px;height:18px}.levels{display:grid;grid-template-columns:repeat(10,1fr);gap:12px;margin-top:22px}.level{position:relative;aspect-ratio:1;min-height:44px;padding:0;border:var(--outline);border-radius:var(--r-tile);background:var(--card);color:var(--ink);box-shadow:var(--shadow-key);font:700 22px/1 var(--font-body);font-variant-numeric:tabular-nums;cursor:pointer;transition:transform var(--press),box-shadow var(--press);animation:drop .5s cubic-bezier(.3,1.5,.5,1) calc(var(--i, 0) * 30ms) backwards}.level:hover{transform:translateY(-3px) rotate(-2deg);box-shadow:0 7px 0 var(--ink)}.level:active{transform:translateY(4px);box-shadow:var(--shadow-key-down)}.level.solved{background:var(--green)}.level.next{background:var(--yellow);animation:drop .5s cubic-bezier(.3,1.5,.5,1) calc(var(--i, 0) * 30ms) backwards,bob-next 1.4s ease-in-out calc(var(--i, 0) * 30ms + .5s) infinite}.level.next:hover,.level.next:active{animation:none}.check{position:absolute;top:-7px;right:-7px;width:20px;height:20px;padding:3px;border-radius:50%;background:var(--ink);color:#fff}@keyframes drop{0%{opacity:0;transform:translateY(-24px)}}@keyframes bob-next{50%{transform:translateY(-5px)}}@media(max-width:719px){.set.open{padding:18px}.levels{grid-template-columns:repeat(5,1fr)}.set.closed{grid-template-columns:1fr auto auto;row-gap:10px;padding-block:14px}.set.closed .bar{grid-row:2;grid-column:1 / -1}}.play{max-width:560px;margin:0 auto;padding-block:12px 24px;min-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:12px}.play-head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.play-head .back{white-space:nowrap}.play-head h1{font:800 1.1rem/1.2 var(--font-display);text-align:center}.timer{justify-self:end;font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted)}.play-foot{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:auto}.status{color:var(--muted);font-size:.95rem;font-variant-numeric:tabular-nums}.actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.win{position:absolute;inset:0;display:grid;place-items:center;overflow:auto;background:color-mix(in srgb,var(--paper) 55%,transparent);border-radius:6px;animation:fade .25s ease-out}.win-card{background:var(--card);border:var(--outline);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:24px 28px;text-align:center;max-width:min(340px,calc(100% - 16px))}.win-card h2{font:800 1.5rem/1.2 var(--font-display)}.win-card p{color:var(--muted);margin:8px 0 18px}.book{max-width:340px;margin-inline:auto;display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:16px;border-top:2px dashed var(--line);text-align:left}.book .book-text{margin:0;color:var(--ink);font-size:.92rem;line-height:1.4}.book-cover{width:52px;height:auto;border:2px solid var(--ink);border-radius:4px;flex:none}.book-fan{display:flex;flex:none}.book-fan .book-cover{width:40px}.book-fan .book-cover+.book-cover{margin-left:-18px}.book-fan .book-cover:nth-child(2){position:relative;z-index:1;transform:translateY(-3px)}.book-fan .book-cover:nth-child(1){transform:rotate(-8deg)}.book-fan .book-cover:nth-child(3){transform:rotate(8deg)}.book-link{font-weight:700;color:var(--blue)}.book-link:after{content:" →"}@keyframes fade{0%{opacity:0}}.help{justify-self:end;display:flex;align-items:center;gap:10px}.help-btn{width:44px;height:44px;padding:0;border:var(--outline);border-radius:50%;background:var(--card);color:var(--ink);box-shadow:var(--shadow-key);font:700 1.05rem/1 var(--font-body);cursor:pointer;transition:transform var(--press),box-shadow var(--press)}.help-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-key-up)}.help-btn:active{transform:translateY(4px);box-shadow:var(--shadow-key-down)}.ht-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:#17161c8c;animation:ht-fade .2s ease-out}.ht-card{position:relative;width:min(100% - 8px,440px);max-height:calc(100dvh - 40px);overflow-y:auto;background:var(--card);border:var(--outline);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:66px 22px 22px;text-align:center}.ht-close{position:absolute;top:12px;right:12px;width:44px;height:44px;padding:0 0 2px;border:var(--outline);border-radius:50%;background:var(--card);color:var(--ink);box-shadow:var(--shadow-key);font:600 1.5rem/1 var(--font-body);cursor:pointer;transition:transform var(--press),box-shadow var(--press)}.ht-close:hover{transform:translateY(-2px);box-shadow:var(--shadow-key-up)}.ht-close:active{transform:translateY(4px);box-shadow:var(--shadow-key-down)}.ht-art{aspect-ratio:4 / 3;display:grid;place-items:center;margin:0 0 14px;background:var(--paper);border:var(--outline);border-radius:16px;overflow:hidden}.ht-art svg{width:100%;height:100%;display:block}.ht-card h2{font:800 1.2rem/1.25 var(--font-display)}.ht-text{color:var(--muted);margin:8px 0 16px;min-height:4.5em}.ht-dots{display:flex;justify-content:center;gap:2px;margin-bottom:16px}.ht-dot{width:26px;height:26px;border:0;padding:0;background:transparent;cursor:pointer;display:grid;place-items:center}.ht-dot:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--card);border:2px solid var(--ink)}.ht-dot[aria-current=step]:before{width:22px;border-radius:6px;background:var(--yellow)}.ht-nav{display:flex;gap:12px}.ht-nav .btn{flex:1}@keyframes ht-fade{0%{opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}:root{--accent: #8e4ec6;--accent-soft: #efe4fb}.pg-tools{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}.seg{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:500;cursor:pointer}.seg+.seg{border-left:1px solid var(--line)}.seg[aria-pressed=true]{background:var(--ink);color:var(--bg)}.sw-fill{width:14px;height:14px;border-radius:3px;background:currentColor}.sw-mark{font-size:.85rem;line-height:1}.pg-scroll{max-width:100%;overflow:auto;overscroll-behavior:contain}.pg-scroll.zoomed{max-height:calc(100dvh - 230px);border:1px solid var(--line);border-radius:8px}.pg-table{display:grid;width:max-content;margin:0 auto;line-height:1;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.pg-table.moving{touch-action:pan-x pan-y}.pg-table .corner{position:sticky;top:0;left:0;z-index:3;background:var(--bg)}.cclue,.rclue{display:flex;font-size:.5em;font-weight:600;color:var(--ink);background:var(--bg);font-variant-numeric:tabular-nums}.cclue{position:sticky;top:0;z-index:2;flex-direction:column;align-items:center;justify-content:flex-end;gap:.15em;padding:.3em 0 .4em}.rclue{position:sticky;left:0;z-index:2;align-items:center;justify-content:flex-end;gap:.5em;padding:0 .5em 0 .3em}.cclue.done,.rclue.done{color:var(--muted);opacity:.45}.cclue.hot,.rclue.hot{background:var(--accent-soft);opacity:1}.pg-table .cell{background:var(--surface);border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;place-items:center;cursor:pointer}.pg-table .cell.t{border-top:2px solid var(--border)}.pg-table .cell.l{border-left:2px solid var(--border)}.pg-table .cell.r{border-right:2px solid var(--border)}.pg-table .cell.b{border-bottom:2px solid var(--border)}.pg-table .cell.g5r{border-right:2px solid var(--border)}.pg-table .cell.g5b{border-bottom:2px solid var(--border)}.pg-table .cell.f{background:var(--ink)}.pg-table .cell.x:after{content:"✕";font-size:.55em;color:var(--muted)}.pg-table.solved .cell{border-color:transparent;cursor:default}.pg-table.solved .cell.f{background:var(--accent);transition:background .6s}.pg-table.solved .cclue,.pg-table.solved .rclue{opacity:.25}.pg-win{text-align:center}.pg-win h2{font-size:1.4rem}.pg-win p{color:var(--muted);margin:6px 0 14px}.levels{grid-template-columns:repeat(5,1fr)}@media(max-width:719px){.levels{grid-template-columns:repeat(4,1fr)}}.level{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px}.level .tile-num{font-weight:700}.level .tile-size,.level .tile-name{font-size:.7rem;font-weight:600;line-height:1.1;text-align:center;overflow:hidden;max-width:100%}.level .tile-size{color:var(--muted-2)}.level .thumb{width:64%;height:auto;max-height:58%;fill:var(--ink)}.play .pg-tools{margin-top:auto}.ht-art .grid{stroke:var(--line);stroke-width:.4}.ht-art .frame{fill:none;stroke:var(--ink);stroke-width:.8}.ht-art .cell{fill:var(--surface)}.ht-art .num{fill:var(--ink);font-weight:600;text-anchor:middle;font-family:Outfit,system-ui,sans-serif}.ht-art .num.mut{fill:var(--muted);font-weight:500}.ht-art .num.acc{fill:var(--accent)}.ht-art .num.red{fill:var(--danger, #d13b3b)}.ht-art .num.light{fill:#fff}.ht-art .ink{fill:var(--ink)}.ht-art .acc{fill:var(--accent)}.ht-art .acc-line{fill:none;stroke:var(--accent);stroke-linecap:round;stroke-linejoin:round}.ht-art .red-line{fill:none;stroke:var(--danger, #d13b3b);stroke-linecap:round;stroke-linejoin:round}.ht-art .ink-line{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round}.ht-art .mut-line{fill:none;stroke:var(--muted);stroke-linecap:round}.ht-art .red{fill:var(--danger, #d13b3b)}.ht-art .mutd{fill:var(--muted)}.ht-art .isl{fill:var(--surface);stroke:var(--ink);stroke-width:.7}.ht-art .isl.done{fill:color-mix(in srgb,var(--accent) 16%,var(--surface));stroke:var(--accent)}.ht-art .good-bg{fill:var(--solved)}.ht-art .bad-bg{fill:var(--danger, #d13b3b)}.ht-art .mark{fill:none;stroke:#fff;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.ht-art .soft{fill:color-mix(in srgb,var(--accent) 16%,var(--surface))}.ht-art .tap{fill:none;stroke:var(--ink);stroke-width:.8;opacity:0;animation:ht-tap .7s ease-out var(--d, 0s)}.ht-art .draw{stroke-dasharray:1;stroke-dashoffset:1;animation:ht-draw .9s ease-in-out var(--d, 0s) forwards}.ht-art .pop{opacity:0;transform-box:fill-box;transform-origin:center;animation:ht-pop .35s ease-out var(--d, 0s) forwards}.ht-art .appear{opacity:0;animation:fade-in .4s ease-out var(--d, 0s) forwards}.ht-art .vanish{animation:fade-out .3s ease-in var(--d, 0s) forwards}@keyframes ht-draw{to{stroke-dashoffset:0}}@keyframes ht-pop{0%{opacity:0;transform:scale(.3)}70%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes fade-in{to{opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes ht-tap{0%{opacity:.8;transform:scale(.4)}to{opacity:0;transform:scale(1.6)}}.ht-art .tap{transform-box:fill-box;transform-origin:center}@media(prefers-reduced-motion:reduce){.ht-art .draw{animation:none;stroke-dashoffset:0}.ht-art .pop,.ht-art .appear{animation:none;opacity:1}.ht-art .vanish{animation:none;opacity:0}.ht-art .tap{display:none}}
