:root{--font:"Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;--ease:cubic-bezier(.2, .8, .2, 1);--spring:cubic-bezier(.34, 1.36, .64, 1);--radius:14px;--shadow:0 1px 2px #0000000a, 0 6px 20px -10px #0000001f;--font-digits:var(--font);--board-radius:12px}[data-digits=mono]{--font-digits:"IBM Plex Mono", ui-monospace, monospace}[data-mode=dark]{--shadow:0 1px 2px #0000004d}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-size:15px;line-height:1.4;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer;text-align:inherit;background:0 0;border:none}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.tnum{font-variant-numeric:tabular-nums}kbd{font-family:var(--font);background:var(--surface2);min-width:20px;color:var(--text-dim);border:1px solid var(--line);border-radius:5px;justify-content:center;padding:3px 6px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}@media (width<=759px){.hide-sm{display:none!important}}.app{flex-direction:column;align-items:center;min-height:100dvh;display:flex}.topbar,.main{z-index:1;position:relative}.main{flex-direction:column;flex:1;align-items:center;width:100%;display:flex}.screen{width:100%;max-width:980px;padding:8px 20px 48px}::view-transition-old(.vt-out){animation:.14s ease-out both vtOut}::view-transition-new(.vt-in){animation:vtIn .26s var(--ease) both}::view-transition-group(.vt-in){animation-duration:.26s}::view-transition-group(.vt-out){animation-duration:.26s}::view-transition-old(root){animation-duration:.3s}::view-transition-new(root){animation-duration:.3s}@keyframes vtOut{to{opacity:0}}@keyframes vtIn{0%{opacity:0;transform:translateY(6px)}}.topbar{justify-content:space-between;align-items:center;gap:8px;width:100%;max-width:1080px;padding:10px 14px;display:flex}.topbar-left,.top-actions{align-items:center;gap:2px;display:flex}.brand{border-radius:10px;align-items:center;gap:10px;padding:6px 8px;display:flex}.brand-name{letter-spacing:-.01em;font-size:18px;font-weight:700}.brand-mark{grid-template-columns:repeat(3,1fr);gap:2px;width:22px;height:22px;display:grid}.brand-mark i{background:var(--text);opacity:.18;border-radius:2px}.brand-mark i:nth-child(5){background:var(--accent);opacity:1}.icon-btn{width:40px;height:40px;color:var(--text-dim);border-radius:10px;place-items:center;transition:background-color .15s,color .15s,transform .12s;display:grid}.icon-btn:hover{background:color-mix(in srgb, var(--text) 6%, transparent);color:var(--text)}.icon-btn:active{transform:scale(.92)}.icon-btn.on{color:var(--accent)}.icon-btn.sm{border-radius:8px;width:32px;height:32px}.app.zen .topbar{opacity:.3;transition:opacity .3s}.app.zen .topbar:hover,.app.zen .topbar:focus-within{opacity:1}@media (width<=400px){.app[data-screen=play] .brand-name{display:none}.icon-btn{width:36px;height:36px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.eyebrow{color:var(--text-dim);font-size:13px;font-weight:600}.section-label{color:var(--text-dim);justify-content:space-between;margin:0 4px 8px;font-size:13px;font-weight:600;display:flex}.section-label span{opacity:.8;font-weight:500}.btn{white-space:nowrap;background:var(--surface2);height:42px;color:var(--text);border-radius:11px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:600;transition:background-color .15s,transform .12s,filter .15s;display:inline-flex}.btn:hover{filter:brightness(.97)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{color:var(--text-dim);background:0 0}.btn.ghost:hover{background:color-mix(in srgb, var(--text) 6%, transparent);color:var(--text)}.btn.danger{background:var(--error-bg);color:var(--error)}.btn.block{width:100%}.link{color:var(--text-dim);border-radius:8px;align-items:center;gap:6px;padding:6px 8px;font-size:13.5px;font-weight:600;display:inline-flex}.link:hover{color:var(--text);background:color-mix(in srgb, var(--text) 5%, transparent)}.chip{background:var(--surface2);color:var(--text-dim);border-radius:99px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.stars-row{color:var(--line);gap:1px;display:inline-flex}.stars-row .on{color:var(--accent)}.level{align-items:flex-end;gap:2px;height:12px;display:inline-flex}.level i{background:var(--line);border-radius:1px;width:3px}.level i:first-child{height:5px}.level i:nth-child(2){height:7px}.level i:nth-child(3){height:9px}.level i:nth-child(4){height:11px}.level i.on{background:var(--accent)}.list{overflow:hidden}.list-row{align-items:center;gap:14px;width:100%;padding:13px 16px;transition:background-color .12s;display:flex}.list-row+.list-row{border-top:1px solid var(--line)}button.list-row:hover{background:color-mix(in srgb, var(--text) 3.5%, transparent)}button.list-row:active{background:color-mix(in srgb, var(--text) 6%, transparent)}.row-body{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.row-title{font-size:15.5px;font-weight:600}.row-sub{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.row-meta{color:var(--text-dim);font-size:13px;font-weight:600}.row-icon{background:color-mix(in srgb, var(--accent) 12%, transparent);width:34px;height:34px;color:var(--accent);border-radius:10px;flex:none;place-items:center;display:grid}.list-row .level{flex:none;justify-content:center;width:34px}.home-head{margin:12px 4px 24px}.home-head h1{letter-spacing:-.02em;margin-top:2px;font-size:32px;font-weight:700;line-height:1.15}.streak{color:var(--accent);align-items:center;gap:5px;margin-top:8px;font-size:13px;font-weight:600;display:inline-flex}.home-grid{gap:24px;display:grid}.home-col{flex-direction:column;gap:20px;min-width:0;display:flex}@media (width>=860px){.home-grid{grid-template-columns:1fr 1fr;align-items:start;gap:28px}}.resume{width:100%;transition:transform .15s var(--ease), border-color .15s;align-items:center;gap:14px;padding:14px 16px;display:flex;position:relative;overflow:hidden}.resume:hover,.daily:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.resume:active,.daily:active{transform:scale(.99)}.resume .progress{height:3px;width:calc(var(--p) * 100%);background:var(--accent);position:absolute;bottom:0;left:0}.chev{color:var(--text-dim);flex:none}.daily{width:100%;transition:transform .15s var(--ease), border-color .15s;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px 18px;padding:16px;display:grid}.daily-body{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.daily-title{letter-spacing:-.01em;font-size:26px;font-weight:700}.daily-sub{color:var(--text-dim);font-size:13.5px}.daily-sub b{color:var(--text)}.daily-foot{border-top:1px solid var(--line);grid-column:1/-1;justify-content:space-between;align-items:center;gap:12px;padding-top:14px;display:flex}.daily-cta{height:38px;padding:0 22px}.week{gap:7px;display:flex}.week-day{color:var(--text-dim);flex-direction:column;align-items:center;gap:3px;font-size:10.5px;font-weight:600;display:flex}.week-day i{border:1.5px solid var(--line);border-radius:50%;place-items:center;width:18px;height:18px;display:grid}.week-day.today{color:var(--text)}.week-day.today i{border-color:var(--text-dim)}.week-day.done i{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.preview-board{--pv:128px;width:var(--pv);height:var(--pv);background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--line-strong);border-radius:8px;flex:none;grid-template-columns:repeat(9,1fr);display:grid;position:relative;overflow:hidden}.preview-board i{font-style:normal;font-size:calc(var(--pv) / 13);color:var(--given);place-items:center;font-weight:600;display:grid}.preview-board .grid-lines line{stroke-width:.6px}.preview-board .grid-lines .thick line{stroke-width:1.2px}@media (width>=480px){.preview-board{--pv:156px}}@media (width<=360px){.preview-board{--pv:104px}.week{gap:4px}}.home-foot{color:var(--text-dim);justify-content:space-between;align-items:center;margin-top:28px;font-size:13px;display:flex}.home-foot span{align-items:center;gap:6px;display:inline-flex}.mini-board{width:var(--s);height:var(--s);background:var(--surface2);border-radius:8px;flex:none;grid-template-columns:repeat(9,1fr);gap:1px;padding:3px;display:grid}.mini-board i{background:var(--line);border-radius:1px}.mini-board i.g{background:var(--text-dim)}.mini-board i.u{background:var(--accent)}.play{--board-size:min(calc(100vw - 24px), 520px, max(280px, calc(100dvh - 330px)));flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;width:100%;padding:0 12px 24px;display:flex}.play-col{flex-direction:column;align-items:center;gap:10px;display:flex}.play .side{width:var(--board-size);flex-direction:column;gap:12px;display:flex}@media (width>=900px){.play{--board-size:min(calc(100dvh - 120px), 620px, calc(100vw - 460px));flex-direction:row;justify-content:center;align-items:center;gap:40px;padding-top:4px}.play .side{width:320px}}.panel{display:none}@media (width>=1200px) and (height>=600px){.play{--board-size:min(calc(100dvh - 120px), 620px, calc(100vw - 690px));gap:36px}.panel{background:var(--bg);border-radius:16px;flex-direction:column;flex:none;width:230px;padding:6px 18px;display:flex}.play .side{width:300px}.play-col .status-bar{display:none}.countdown-bar{margin-top:0}}.panel-block{flex-direction:column;gap:10px;padding:16px 0;display:flex}.panel-block+.panel-block{border-top:1px solid var(--line)}.panel-timer{letter-spacing:-.02em;font-size:40px;font-weight:700;line-height:1}.panel-timer.low{color:var(--error)}.panel-row{justify-content:space-between;align-items:center;min-height:32px;display:flex}.panel-dim{color:var(--text-dim);font-size:13px}.panel-pause{gap:6px;height:32px;padding:0 10px;font-size:13px}.panel-label{color:var(--text-dim);justify-content:space-between;font-size:12.5px;font-weight:600;display:flex}.box-map{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.bm-box{background:var(--surface2);border-radius:8px;grid-template-columns:repeat(3,1fr);gap:3px;padding:7px;transition:background-color .3s,transform .12s;display:grid}.bm-box:hover{background:color-mix(in srgb, var(--accent) 10%, var(--surface2))}.bm-box:active{transform:scale(.95)}.bm-box i{aspect-ratio:1;background:var(--line);border-radius:2px;transition:background-color .25s}.bm-box i.g{background:color-mix(in srgb, var(--text) 45%, transparent)}.bm-box i.u{background:var(--user)}.bm-box.done{background:color-mix(in srgb, var(--accent) 16%, transparent)}.bm-box.done i{background:var(--accent)}.panel-list{flex-direction:column;gap:7px;font-size:13.5px;display:flex}.panel-list div{justify-content:space-between;align-items:center;gap:10px;display:flex}.panel-list dt{color:var(--text-dim)}.panel-list dd{color:var(--text);gap:1px;font-weight:600;display:inline-flex}.panel-list dd svg{color:var(--accent)}.tech-list{flex-direction:column;gap:2px;margin:0 -8px;list-style:none;display:flex}.tech-list button{border-radius:8px;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:6px 8px;font-size:13.5px;font-weight:500;display:flex}.tech-list button:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.tech-list .tech-n{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:12px}.tech-list li.seen button span:first-child:after{content:" ✓";color:var(--accent);font-weight:700}.tech-list p{color:var(--text-dim);padding:2px 8px 8px;font-size:12.5px;line-height:1.5}.reveal{align-self:flex-start;margin-left:-8px}.status-bar{width:var(--board-size);justify-content:space-between;align-items:center;height:34px;display:flex}.game-label{align-items:center;gap:8px;font-size:14px;font-weight:600;display:inline-flex}.game-label svg{color:var(--accent)}.stat-row{align-items:center;gap:12px;display:flex}.timer{color:var(--text-dim);text-align:right;min-width:44px;font-size:15px;font-weight:600}.timer.countdown{color:var(--text)}.timer.countdown.low{color:var(--error)}.mistake-marks{gap:4px;display:flex}.mistake-marks i{border:1.5px solid var(--line-strong);opacity:.4;border-radius:50%;width:8px;height:8px;transition:background-color .2s,opacity .2s}.mistake-marks i.hit{background:var(--error);border-color:var(--error);opacity:1;animation:pop .3s var(--spring)}.mistake-count{color:var(--error);font-size:13px;font-weight:600}.countdown-bar{width:var(--board-size);background:var(--surface2);border-radius:2px;height:3px;margin-top:-6px;overflow:hidden}.countdown-bar i{background:var(--accent);transform-origin:0;height:100%;transition:transform 1s linear;display:block}.side-note{text-align:center;color:var(--text-dim);font-size:13px;line-height:1.45}.side-note b{color:var(--accent)}.replay-card{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:16px;font-weight:600;display:flex}.board-wrap{width:var(--board-size);height:var(--board-size);flex:none;position:relative}.board{border-radius:var(--board-radius);background:var(--surface);box-shadow:var(--shadow);touch-action:manipulation;outline:none;position:absolute;inset:0;overflow:hidden}.board:after{content:"";border:2px solid var(--line-strong);border-radius:inherit;pointer-events:none;z-index:4;position:absolute;inset:0}.board:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 45%, transparent)}.cells{grid-template-rows:repeat(9,1fr);grid-template-columns:repeat(9,1fr);display:grid;position:absolute;inset:0}.grid-lines{pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;inset:0}.grid-lines line{vector-effect:non-scaling-stroke}.grid-lines .thin line{stroke:var(--line);stroke-width:1px}.grid-lines .thick line{stroke:var(--line-strong);stroke-width:2px}.box-tint{pointer-events:none;grid-template-columns:repeat(3,1fr);display:grid;position:absolute;inset:0}[data-boxes=checker] .box-tint i:nth-child(odd){background:var(--box-alt)}[data-lines=dashed] .board .grid-lines .thin line{stroke-dasharray:3 4}html[data-ink=riso] .board .digit.given{text-shadow:.05em .035em 0 color-mix(in srgb, var(--accent) 50%, transparent)}html[data-ink=glow] .board .digit.user{text-shadow:0 0 .45em color-mix(in srgb, var(--user) 45%, transparent)}.hl-layer{pointer-events:none;position:absolute;inset:0}.hl-layer i{opacity:0;transition:transform .2s var(--ease), opacity .15s;position:absolute;top:0;left:0}.hl-row{width:100%;height:11.1111%;transform:translateY(calc(var(--r,0) * 100%));background:var(--peer)}.hl-col{width:11.1111%;height:100%;transform:translateX(calc(var(--c,0) * 100%));background:var(--peer)}.hl-box{width:33.3333%;height:33.3333%;transform:translate(calc(var(--bc,0) * 100%), calc(var(--br,0) * 100%));background:var(--peer)}.hl-sel{width:11.1111%;height:11.1111%;transform:translate(calc(var(--c,0) * 100%), calc(var(--r,0) * 100%));background:var(--selected)}.board.has-sel.peers .hl-row,.board.has-sel.peers .hl-col,.board.has-sel.peers .hl-box,.board.has-sel .hl-sel{opacity:1}.board .cursor{z-index:3;pointer-events:none;width:11.1111%;height:11.1111%;transform:translate(calc(var(--c,0) * 100%), calc(var(--r,0) * 100%));box-shadow:inset 0 0 0 2px var(--accent);opacity:0;transition:transform .2s var(--ease), opacity .15s;border-radius:3px;position:absolute;top:0;left:0}.board.has-sel .cursor{opacity:1}.board.painting .cursor{box-shadow:inset 0 0 0 2.5px var(--accent), inset 0 0 0 5px color-mix(in srgb, var(--accent) 22%, transparent)}.cell{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:calc(var(--board-size) * .058);place-items:center;line-height:1;transition:background-color .15s;display:grid;position:relative}.cell.same{background:var(--same)}.cell.hint-unit{background:color-mix(in srgb, var(--accent) 12%, transparent)}.cell.err{background:var(--error-bg)}.cell.hint-focus:before{content:"";border:2px dashed var(--accent);pointer-events:none;z-index:2;border-radius:5px;position:absolute;inset:3px}.cell.hint-target{animation:1.4s ease-in-out infinite targetPulse}@keyframes targetPulse{50%{background:color-mix(in srgb, var(--accent) 22%, transparent)}}.digit{z-index:1;font-weight:500;font-family:var(--font-digits);position:relative}.digit.given{color:var(--given);font-weight:600}.digit.user{color:var(--user)}.cell.err .digit{color:var(--error)}.digit.conflict{color:var(--error);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:2px}.digit.pop{animation:pop .26s var(--spring)}@keyframes pop{0%{opacity:.3;transform:scale(.6)}}.cell.shake .digit{animation:.4s shake}@keyframes shake{20%,60%{transform:translate(-3px)}40%,80%{transform:translate(3px)}}.wave{background:var(--accent);opacity:0;pointer-events:none;animation:.6s ease-out both wash;position:absolute;inset:0}.wave.win{animation-duration:.9s}@keyframes wash{30%{opacity:.16}to{opacity:0}}.digit.lift{animation:lift .5s var(--ease) both}@keyframes lift{35%{transform:translateY(-8%)scale(1.08)}}.pencil{font-size:max(9.5px, calc(var(--board-size) * .027));color:var(--note);z-index:1;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font-weight:600;line-height:1;display:grid;position:absolute;inset:5%}.pencil span{opacity:0;transition:opacity .12s, transform .18s var(--ease), background-color .15s, color .15s;border-radius:3px;place-items:center;display:grid;transform:scale(.5)}.pencil span.on{opacity:1;transform:none}.pencil span.hl{background:color-mix(in srgb, var(--accent) 22%, transparent);color:var(--text)}.pencil span.elim{color:var(--error);text-decoration:line-through;text-decoration-thickness:2px}.board.enter .cell{animation:cellIn .4s var(--ease) both;animation-delay:calc(var(--rc) * 14ms)}@keyframes cellIn{0%{opacity:0;transform:scale(.9)}}.cell .digit,.cell .pencil{transition:opacity .3s,filter .3s}.cell.fogged .digit,.cell.fogged .pencil{opacity:.07;filter:blur(3px)}.board.paused .digit,.board.paused .pencil{filter:blur(8px);opacity:.35}.board-overlay{z-index:5;cursor:pointer;border-radius:var(--board-radius);place-items:center;display:grid;position:absolute;inset:0}.board-overlay .inner{flex-direction:column;align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.board-overlay small{color:var(--text-dim);font-size:13px;font-weight:500}.board-overlay .play-icon{background:var(--accent);width:56px;height:56px;color:var(--on-accent);border-radius:50%;place-items:center;padding-left:3px;display:grid}.replay-bar{background:var(--surface2);border-radius:2px;height:3px;position:absolute;bottom:-10px;left:0;right:0;overflow:hidden}.replay-bar i{background:var(--accent);height:100%;transition:width .1s linear;display:block}.loading-board{border-radius:var(--board-radius);background:var(--surface);border:2px solid var(--line);grid-template-columns:repeat(9,1fr);gap:3px;padding:3px;display:grid;position:absolute;inset:0}.loading-board i{background:var(--surface2);animation:1.2s ease-in-out infinite shimmer;animation-delay:calc(var(--rc) * 40ms);border-radius:4px}@keyframes shimmer{50%{opacity:.4}}.toolbar{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;display:grid}.tool{color:var(--text-dim);border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;font-size:12px;font-weight:600;transition:background-color .15s,color .15s,transform .12s;display:flex}.tool:hover:not(:disabled){background:color-mix(in srgb, var(--text) 6%, transparent);color:var(--text)}.tool:active:not(:disabled){transform:scale(.94)}.tool:disabled{opacity:.3}.tool.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.tool-icon{place-items:center;display:grid}.tool-label{white-space:nowrap}.pad{grid-template-columns:repeat(9,minmax(0,1fr));gap:5px;display:grid}.key{aspect-ratio:1/1.3;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:1px;transition:background-color .15s,border-color .15s,transform .1s,opacity .2s;display:flex;position:relative}@media (width<=899px) and (height>=720px){.key{aspect-ratio:1/1.45}}@media (width<=899px) and (height>=800px){.key{aspect-ratio:1/1.6}}.key .num{font-family:var(--font-digits);transition:transform .2s var(--ease), color .15s;font-size:clamp(20px,6.4vw,28px);font-weight:500;line-height:1}.pips{grid-template-columns:repeat(3,3px);gap:2px;margin-top:3px;display:grid}.pips i{background:var(--line);width:3px;height:3px;transition:background-color .25s, transform .25s var(--spring);border-radius:50%}.pips i.on{background:color-mix(in srgb, var(--text) 60%, transparent)}.key.locked .pips i{background:color-mix(in srgb, var(--on-accent) 30%, transparent)}.key.locked .pips i.on{background:var(--on-accent)}.key.done .pips{visibility:hidden}.key:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 40%, var(--line))}.key:active:not(:disabled),.key.pressed{background:var(--selected);transform:scale(.94)}.key.match{border-color:var(--accent)}[data-keys=raised] .key{box-shadow:0 2px 0 var(--line), var(--shadow)}[data-keys=raised] .key:active:not(:disabled),[data-keys=raised] .key.pressed{box-shadow:0 0 0 var(--line);transform:translateY(2px)}[data-keys=flat] .key{background:var(--surface2);box-shadow:none;border-color:#0000}[data-keys=outline] .key{border:1.5px solid color-mix(in srgb, var(--line-strong) 35%, transparent);box-shadow:none;background:0 0}[data-keys=flat] .key.match,[data-keys=outline] .key.match{border-color:var(--accent)}[data-keys] .key.locked{background:var(--accent);border-color:var(--accent)}.key.locked{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.key.done{opacity:.3}.key:disabled:not(.done){opacity:.5}.pad.notes-mode .key .num{color:var(--accent);transform:scale(.72)}.pad.notes-mode .key{border-style:dashed}@media (width>=900px){.pad{grid-template-columns:repeat(3,1fr);gap:8px}.key{aspect-ratio:auto;border-radius:12px;height:64px}.key .num{font-size:28px}.pips{grid-template-columns:repeat(3,4px);gap:2.5px;margin-top:4px}.pips i{width:4px;height:4px}}.hint-card{animation:cardIn .25s var(--ease);padding:14px 16px 16px}@keyframes cardIn{0%{opacity:0;transform:translateY(6px)}}.hint-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.hint-bulb{background:color-mix(in srgb, var(--accent) 14%, transparent);width:28px;height:28px;color:var(--accent);border-radius:8px;flex:none;place-items:center;display:grid}.hint-head .tech{flex:1;font-size:15px;font-weight:700}.hint-head .close{width:30px;height:30px}.lvl{gap:3px;display:inline-flex}.lvl i{background:var(--line);border-radius:50%;width:6px;height:6px}.lvl i.on{background:var(--accent)}.hint-ladder{gap:4px;margin-bottom:10px;list-style:none;display:flex}.hint-ladder li{color:var(--text-dim);background:var(--surface2);border-radius:99px;padding:3px 9px;font-size:11.5px;font-weight:600;transition:background-color .2s,color .2s}.hint-ladder li.past{color:var(--text)}.hint-ladder li.now{background:color-mix(in srgb, var(--accent) 15%, transparent);color:var(--accent)}.hint-steps{gap:4px;margin-bottom:10px;display:flex}.hint-steps i{background:var(--line);border-radius:2px;flex:1;height:3px;transition:background-color .2s}.hint-steps i.on{background:var(--accent)}.hint-card p{font-size:14px;line-height:1.5}.hint-card .blurb{color:var(--text-dim);margin-top:6px;font-size:13px}.hint-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.hint-actions .btn{height:38px;padding:0 14px;font-size:14px}.hint-actions kbd{background:color-mix(in srgb, var(--on-accent) 18%, transparent);color:inherit;border-color:#0000}.sheet{background:var(--surface);color:var(--text);border:none;border-radius:20px;width:min(500px,100vw - 24px);max-height:min(86dvh,760px);margin:auto;padding:0;overflow:hidden;box-shadow:0 24px 60px -12px #00000059}.sheet[open]{animation:sheetIn .25s var(--ease);flex-direction:column;display:flex}.sheet::backdrop{background:#00000059;animation:.2s fadeIn}@keyframes sheetIn{0%{opacity:0;transform:translateY(10px)scale(.98)}}@keyframes fadeIn{0%{opacity:0}}@keyframes sheetUp{0%{opacity:0;transform:translateY(40px)}}@media (width<=600px){.sheet{width:100vw;max-width:100vw;max-height:90dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:20px 20px 0 0;margin:auto 0 0}.sheet[open]{animation:sheetUp .3s var(--ease)}}.sheet-head{justify-content:space-between;align-items:center;padding:16px 16px 4px 22px;display:flex}.sheet-head h2{font-size:18px;font-weight:700}.sheet-body{padding:8px 22px 24px;overflow-y:auto}.section-title{color:var(--text-dim);align-items:center;gap:8px;margin:24px 0 6px;font-size:13px;font-weight:600;display:flex}.section-title.first{margin-top:4px}.setting{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:11px 0;display:flex}.setting+.setting{border-top:1px solid var(--line)}.setting .label{font-size:15px;font-weight:500}.setting .desc{color:var(--text-dim);margin-top:1px;font-size:13px}.switch{background:var(--line);border-radius:13px;flex:none;width:44px;height:26px;transition:background-color .2s;position:relative}.switch:after{content:"";width:20px;height:20px;transition:transform .22s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true]:after{transform:translate(18px)}.segmented{background:var(--surface2);border-radius:10px;flex:none;padding:3px;display:inline-flex}.segmented button{color:var(--text-dim);border-radius:8px;padding:6px 13px;font-size:13px;font-weight:600;transition:background-color .15s,color .15s}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}input[type=range]{accent-color:var(--accent);width:140px}.swatches{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;display:grid}.swatch{border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:5px 5px 7px;transition:background-color .15s;display:flex}.swatch:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.swatch{--ring:var(--accent);--ring-gap:var(--surface)}.swatch-art{aspect-ratio:1.3;background:var(--bg);width:100%;box-shadow:inset 0 0 0 1px var(--line);border-radius:10px;place-items:center;padding:7px;transition:box-shadow .15s;display:grid}.swatch.on .swatch-art{box-shadow:0 0 0 2px var(--ring-gap), 0 0 0 4px var(--ring)}.sw-board{aspect-ratio:1;border-radius:min(var(--board-radius), 7px);background:var(--surface);border:1.5px solid var(--line-strong);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);height:100%;display:grid;overflow:hidden}.sw-board i{border-right:1px solid var(--line);border-bottom:1px solid var(--line);place-items:center;min-height:0;font-style:normal;display:grid;position:relative}.sw-board i:nth-child(3n){border-right:0}.sw-board i:nth-child(n+7){border-bottom:0}.swatch-art[data-lines=dashed] .sw-board i{border-style:dashed}.swatch-art[data-boxes=checker] .sw-board i.alt{background:var(--box-alt)}.sw-board b{color:var(--given);font-size:12px;font-weight:600;font-family:var(--font)}.swatch-art[data-digits=mono] .sw-board b{font-family:IBM Plex Mono,ui-monospace,monospace}.sw-board b.u{color:var(--user);font-weight:500}.sw-board em{background:var(--selected);box-shadow:inset 0 0 0 1.5px var(--accent);border-radius:3px;position:absolute;inset:2px}.swatch-art[data-ink=riso] .sw-board b.g{text-shadow:1px 1px 0 color-mix(in srgb, var(--accent) 45%, transparent)}.swatch-art[data-ink=glow] .sw-board b.u{text-shadow:0 0 5px color-mix(in srgb, var(--user) 60%, transparent)}.swatch-name{color:var(--text-dim);text-align:center;font-size:12px;font-weight:600}.swatch.on .swatch-name{color:var(--text)}.tabs{background:var(--surface2);border-radius:10px;margin-bottom:14px;padding:3px;display:flex}.tabs button{text-align:center;color:var(--text-dim);border-radius:8px;flex:1;padding:7px;font-size:13.5px;font-weight:600}.tabs button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.shortcut-group h3{color:var(--text-dim);margin:16px 0 4px;font-size:13px;font-weight:600}.shortcut{justify-content:space-between;align-items:center;gap:12px;padding:6px 0;font-size:14px;display:flex}.shortcut .keys{flex:none;align-items:center;gap:4px;display:inline-flex}.prose p{margin-bottom:10px;font-size:14.5px;line-height:1.6}.tech-item{margin-bottom:14px}.tech-item .t{align-items:center;gap:8px;font-weight:600;display:flex}.tech-item p{color:var(--text-dim);margin-top:2px;font-size:13.5px;line-height:1.5}.import textarea{resize:none;border:1px solid var(--line);background:var(--bg);width:100%;height:120px;color:var(--text);border-radius:12px;padding:12px;font:14px/1.5 ui-monospace,monospace}.import .err{color:var(--error);min-height:20px;margin:6px 0;font-size:13px}.win{text-align:center;padding:18px 0 2px}.win-check{background:color-mix(in srgb, var(--success) 15%, transparent);width:52px;height:52px;color:var(--success);animation:pop .4s var(--spring) both;border-radius:50%;place-items:center;margin:0 auto 12px;display:grid}.win-title{color:var(--text-dim);font-size:15px;font-weight:600}.win-time{letter-spacing:-.02em;margin:2px 0;font-size:48px;font-weight:700;line-height:1.1}.win-sub{color:var(--text-dim);font-size:14px}.win-stars{color:var(--line);flex-wrap:wrap;justify-content:center;gap:6px;margin-top:14px;display:flex}.win-stars span.on{color:var(--accent);animation:pop .35s var(--spring) both}.win-stars small{width:100%;color:var(--text-dim);margin-top:2px;font-size:12px}.badges{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:14px;display:flex}.badge{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border-radius:99px;padding:4px 10px;font-size:12.5px;font-weight:600}.win-stats{border-block:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin:20px 0;padding:14px 0;display:grid}.win-stats b{font-size:20px;font-weight:700;display:block}.win-stats span{color:var(--text-dim);font-size:12px}.win-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.win.lost{padding-top:8px}.win.lost .win-title{color:var(--text);font-size:22px;font-weight:700}.win.lost .win-sub{max-width:340px;margin:6px auto 20px;line-height:1.5}.win.lost .btn.primary{grid-column:1/-1}.page-head{margin:12px 4px 20px}.page-head h1{letter-spacing:-.02em;font-size:30px;font-weight:700}.page-head p{color:var(--text-dim);margin-top:2px;font-size:14px}.stats .section-label{margin-top:28px}.stat-tiles{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}@media (width>=700px){.stat-tiles{grid-template-columns:repeat(6,1fr)}}.stat-tile{text-align:center;padding:14px 8px}.stat-tile b{font-size:24px;font-weight:700;display:block}.stat-tile span{color:var(--text-dim);font-size:12px}.heatmap{grid-template-rows:repeat(7,13px);grid-auto-columns:13px;grid-auto-flow:column;gap:3px;padding:14px;display:grid;overflow-x:auto}.heatmap i{background:var(--surface2);border-radius:3px}.heatmap i.on{background:var(--accent)}.heatmap i.today{box-shadow:inset 0 0 0 1.5px var(--text-dim)}.heatmap i.future{opacity:.3}.diff-stats{gap:10px;display:grid}@media (width>=700px){.diff-stats{grid-template-columns:1fr 1fr}}.diff-stat{padding:14px 16px}.diff-stat .top{justify-content:space-between;align-items:baseline;display:flex}.diff-stat .top b{font-size:15px}.diff-stat .top span{color:var(--text-dim);font-size:13px}.diff-stat .nums{color:var(--text-dim);gap:14px;margin-top:6px;font-size:13px;display:flex}.diff-stat .nums b{color:var(--text);font-weight:600}.spark{width:100%;height:36px;margin-top:8px;display:block}.stats .reset{margin:28px auto 0;display:flex}.toast-wrap{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:100;pointer-events:none;position:fixed;transform:translate(-50%)}.toast{background:var(--text);color:var(--bg);white-space:nowrap;animation:toastIn .25s var(--ease);border-radius:12px;padding:10px 16px;font-size:14px;font-weight:600;box-shadow:0 8px 24px -8px #00000059}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}::view-transition-group(*){transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}::view-transition-old(*){transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}::view-transition-new(*){transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}
