:root{--bg:#12100e;--bg-raised:#1c1916;--line:#332e28;--text:#f0e9df;--muted:#a39a8d;--accent:#e8b647;--on-accent:#1a1408;--ok:#6fca7a;--danger:#ff8f6b;--danger-bg:#4a1f14;--danger-line:#7a3a24;--reveal:#f7f4ee;--reveal-casing:#000000b8;--shadow:0 2px 8px #00000073;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-text-size-adjust:100%;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none}html,body,.app{touch-action:pan-x pan-y}.board,.topbar{touch-action:none}.app{flex-direction:column;height:100dvh;min-height:100dvh;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--bg-raised);align-items:center;gap:12px;padding:10px 14px;display:flex}.title{margin:0;font-size:1.05rem;font-weight:700}.title-day{color:var(--muted);font-weight:500}.clock{font-variant-numeric:tabular-nums;color:var(--muted);border:1px solid var(--line);border-radius:999px;margin:0;padding:3px 10px;font-size:1.05rem}.clock.is-running{color:var(--text);border-color:var(--accent)}.topbar-actions{gap:6px;margin-left:auto;display:flex}.test-pill{font:inherit;color:var(--accent);border:1px solid var(--accent);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;margin-left:-6px;padding:2px 7px;font-size:.7rem;font-weight:700}.test-pill:hover,.test-pill.is-open{color:var(--bg);background:var(--accent)}.test-pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.title-stack{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.title-stack>.title{max-width:100%}@media (width>=521px){.title-stack{flex-direction:row;align-items:center;gap:6px}}.unreported-pill{font:inherit;white-space:nowrap;color:var(--muted);border:1px solid var(--line);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;padding:1px 7px;font-size:.7rem;font-weight:600}.unreported-pill:hover,.unreported-pill.is-open{color:var(--text);border-color:var(--muted)}.unreported-pill:focus-visible{outline:2px solid var(--muted);outline-offset:2px}.test-note{color:var(--muted);background:var(--bg-raised);border-bottom:1px solid var(--line);align-items:center;gap:8px;margin:0;padding:7px 14px;font-size:.78rem;line-height:1.4;display:flex}.test-note a{color:var(--accent);text-decoration:underline}.test-note a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.howto p.howto-invite{border:1px solid var(--accent);border-radius:10px;margin:0 0 12px;padding:10px 12px;font-size:.88rem}.howto-invite a{color:var(--accent);text-decoration:underline}.note-close{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;margin-left:auto;padding:2px 4px;font-size:1rem;line-height:1}.note-close:hover{color:var(--text)}.note-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.storage-note{color:var(--text);background:var(--danger-bg);border-bottom:1px solid var(--danger-line);align-items:flex-start;gap:10px;margin:0;padding:8px 14px;font-size:.8rem;line-height:1.4;display:flex}.storage-note strong{color:var(--danger)}.practice-note{color:var(--bg);background:var(--accent);justify-content:center;align-items:center;gap:12px;margin:0;padding:5px 14px;font-size:.82rem;font-weight:600;display:flex}.practice-note a,.test-banner a{color:inherit;text-underline-offset:2px;text-decoration:underline}.practice-note a:focus-visible,.test-banner a:focus-visible{outline:2px solid var(--bg);outline-offset:2px}.test-banner{color:var(--bg);background:var(--accent);justify-content:center;align-items:center;gap:12px;margin:0;padding:5px 10px 5px 14px;font-size:.82rem;font-weight:600;display:flex}.test-banner-what{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.test-banner-exit{border:1px solid var(--bg);color:var(--bg);font:inherit;border-radius:999px;flex:none;padding:2px 12px;text-decoration:none}.test-banner-exit:hover,.test-banner-exit:focus-visible{color:var(--accent);background:var(--bg);text-decoration:none}@media (width<=26rem){.test-banner-what span{display:none}}.marquee{white-space:nowrap;min-width:0;display:block;overflow:hidden}.practice-note .marquee,.test-banner .marquee{flex:0 auto}.marquee-inner{vertical-align:top;display:inline-block}.marquee.is-over{cursor:pointer}.marquee.is-over .marquee-inner{animation:marquee var(--marquee-time,6s) ease-in-out infinite alternate}@keyframes marquee{0%,20%{transform:translate(0)}80%,to{transform:translateX(var(--marquee-shift,0))}}.marquee.is-open{white-space:normal}.marquee.is-open .marquee-inner{animation:none}@media (prefers-reduced-motion:reduce){.marquee.is-over .marquee-inner{text-overflow:ellipsis;max-width:100%;animation:none;overflow:hidden}}.diag{max-width:34rem;margin:0 auto;padding:24px 18px 48px;line-height:1.5}.diag h1{margin:0 0 12px;font-size:1.15rem}.diag-lead{color:#bdb3a5;font-size:.9rem}.diag dl{grid-template-columns:1fr auto;gap:6px 14px;margin:20px 0;font-size:.9rem;display:grid}.diag dt{color:#bdb3a5}.diag dd{text-align:right;overflow-wrap:anywhere;margin:0}.diag dd.ok{color:var(--ok)}.diag dd.bad{color:var(--danger)}.diag a{color:var(--accent)}.transfer-code{letter-spacing:.12em;text-align:center;color:var(--accent);overflow-wrap:anywhere;margin:10px 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.4rem}.transfer-form{flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0;display:flex}.transfer-input{letter-spacing:.08em;text-transform:uppercase;min-width:0;color:var(--text);background:#00000040;border:1px solid #ffffff2e;border-radius:8px;flex:14ch;padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.05rem}.btn{font:inherit;color:var(--text);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:8px 16px;font-size:.92rem;transition:border-color .15s,background .15s}.btn:hover{border-color:var(--muted)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-icon{width:34px;height:34px;padding:0;font-size:1rem;line-height:1}.btn-icon svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px;margin:0 auto;display:block}.btn-icon:disabled{opacity:.35;cursor:default}.btn-ring{color:var(--muted)}.btn-ring.is-on{color:var(--reveal);border-color:var(--reveal)}.btn-pause[aria-pressed=true] svg{fill:currentColor;stroke-linejoin:round}.board{flex:1;min-height:0;position:relative;overflow:hidden}.stage{isolation:isolate;touch-action:none;cursor:grab;background:#0b0a09;position:absolute;inset:0;overflow:hidden}.stage:active{cursor:grabbing}.stage:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.stage-viewport{isolation:isolate;transition:filter .35s ease-out;position:absolute;inset:0}.stage-viewport.is-blurred{filter:blur(14px)brightness(.75)saturate(.8)}.stage-canvas{transform-origin:0 0;position:absolute;top:0;left:0}.stage-image{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.stage-target{pointer-events:none;display:grid;position:absolute}.stage-target svg{grid-area:1/1}.stage-shape{z-index:1}.stage-target svg{filter:blur(calc(var(--shape-blur,0px) / var(--stage-zoom,1)))}.stage-ring{border-style:solid;border-color:var(--reveal);box-shadow:0 0 0 var(--ring-casing) var(--reveal-casing), inset 0 0 0 var(--ring-casing) var(--reveal-casing);pointer-events:none;border-radius:50%;animation:.4s ease-out ring-in;position:absolute}.stage-hint-circle{border-style:dashed;border-color:var(--reveal);box-shadow:0 0 0 var(--ring-casing) var(--reveal-casing), inset 0 0 0 var(--ring-casing) var(--reveal-casing);pointer-events:none;border-radius:50%;animation:.4s ease-out ring-in;position:absolute}.stage-hint-circle.is-outer{opacity:.45}@keyframes ring-in{0%{opacity:0;transform:scale(1.6)}}.stage-start-hint,.loading{color:var(--text);border:1px solid var(--line);pointer-events:none;white-space:nowrap;background:#12100ee6;border-radius:999px;margin:0;padding:8px 16px;font-size:.85rem;position:absolute;bottom:96px;left:50%;transform:translate(-50%)}.loading{z-index:2;top:50%;bottom:auto}.stage-failed{z-index:2;text-align:center;width:min(320px,100% - 32px);color:var(--text);border:1px solid var(--line);background:#12100ee6;border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:16px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.stage-failed p{margin:0;font-size:.9rem}.reference{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:none;flex-direction:column;align-items:center;gap:6px;padding:10px 10px 8px;display:flex;position:absolute;top:12px;right:12px}.reference-well{background:#6d6862;border-radius:8px;outline:2px solid #0000;place-items:center;transition:outline-color .2s ease-out;display:grid}.reference.is-near{border-color:var(--accent);border-style:dashed}.reference.is-near .reference-well{outline:2px dashed var(--accent)}.reference.is-near .reference-label{color:var(--accent)}.reference.is-solved{border-color:var(--ok)}.reference.is-solved .reference-well{outline:2px solid var(--ok)}.reference.is-solved .reference-label{color:var(--ok)}button.reference{font:inherit;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent}button.reference:hover .reference-well,button.reference:focus-visible .reference-well{outline:2px solid var(--ok);filter:brightness(1.08)}button.reference:focus-visible{outline:2px solid var(--ok);outline-offset:2px}.reference-label{text-align:center;min-width:8ch;min-height:1em;color:var(--muted);margin:0;font-size:.75rem}.reference-nudges{color:var(--accent);white-space:nowrap;justify-items:center;gap:2px;margin:0;padding:0;font-size:.72rem;font-weight:600;line-height:1.25;list-style:none;display:grid}.reference-nudges li.is-ok{color:var(--muted);font-weight:400}.scrim{z-index:4;position:absolute;inset:0}.howto,.result{z-index:5;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);width:min(420px,100% - 24px);max-height:calc(100% - 28px);box-shadow:var(--shadow);touch-action:pan-y pinch-zoom;padding:20px;animation:.25s ease-out panel-in;position:absolute;bottom:14px;left:50%;overflow-y:auto;transform:translate(-50%)}@keyframes panel-in{0%{opacity:0;transform:translate(-50%,14px)}}.howto h2{margin:0 0 10px;font-size:1.05rem}.howto p{margin:0 0 10px;font-size:.92rem;line-height:1.5}.howto ul{color:var(--muted);margin:0 0 12px;padding-left:20px;font-size:.9rem;line-height:1.6}.howto-note{color:var(--muted);font-size:.85rem}.result{text-align:center}.result-eyebrow{color:var(--muted);margin:0;font-size:.85rem}.result-time{font-variant-numeric:tabular-nums;color:var(--ok);margin:4px 0 2px;font-size:2.4rem;font-weight:700}.result-time.is-quiet{color:var(--muted);font-weight:500}.result-bar{letter-spacing:2px;margin:0 0 10px}.result-glyph{font:inherit;line-height:inherit;cursor:pointer;background:0 0;border:0;margin:-4px -2px;padding:4px 3px;position:relative}.result-glyph:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.result-tip{z-index:1;background:var(--text);color:var(--bg);letter-spacing:normal;white-space:nowrap;pointer-events:none;border-radius:6px;padding:3px 8px;font-size:.75rem;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.result-age-block{margin:0 0 14px}.result-age{color:var(--muted);margin:0;font-size:.95rem}.result-age strong{font-variant-numeric:tabular-nums;color:var(--text);font-size:1.15rem}.result-age-why{color:var(--muted);margin:2px 0 0;font-size:.76rem}.result-others{color:var(--muted);margin:0 0 12px;font-size:.8rem;line-height:1.45}.result-crowd{color:var(--text);margin:-8px 0 12px;font-size:.86rem}.result-retuned{color:var(--muted);margin:0 0 12px;font-size:.8rem;line-height:1.45}.result-retuned a{color:inherit;text-decoration:underline}.result-art{flex-direction:column;gap:2px;margin:0 0 14px;font-size:.9rem;display:flex}.result-art span{color:var(--muted);font-size:.82rem}.result-note{color:var(--muted);margin:-6px 0 14px;font-size:.8rem;line-height:1.45}.result-note a{color:inherit;white-space:nowrap;text-decoration:underline}.result-stats{justify-content:center;gap:22px;margin:0 0 16px;display:flex}.result-stats div{flex-direction:column;gap:2px;display:flex}.result-stats dt{color:var(--muted);order:2;font-size:.75rem}.result-stats dd{font-variant-numeric:tabular-nums;order:1;margin:0;font-size:1.15rem;font-weight:600}.result-actions{justify-content:center;gap:8px;display:flex}.result-age-info{width:18px;height:18px;font:inherit;color:var(--muted);vertical-align:.15em;cursor:pointer;background:0 0;border:1.5px solid;border-radius:50%;justify-content:center;align-items:center;margin:0 0 0 6px;padding:0;font-family:Georgia,Times New Roman,serif;font-size:.72rem;font-style:italic;font-weight:700;line-height:1;display:inline-flex}.result-age-info:hover{color:var(--text)}.result-age-info:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.result-next{color:var(--muted);font-variant-numeric:tabular-nums;margin:14px 0 0;font-size:.82rem}@media (width<=420px){.reference{padding:8px 8px 6px;top:8px;right:8px}.giveup-btn{bottom:8px;left:8px}.hint-btn{left:auto;right:8px}.result-time{font-size:2rem}}.stage-start-hint{z-index:2;color:var(--muted);bottom:56px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.resume-note{z-index:3;text-align:center;color:var(--bg);background:var(--ok);pointer-events:none;margin:0;padding:5px 14px;font-size:.82rem;font-weight:600;position:absolute;top:0;left:0;right:0}.stage-start-hint.is-resumed{color:var(--ok);border-color:var(--ok)}.update-scrim{z-index:50;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));background:#000c;place-items:center;animation:.25s ease-out update-in;display:grid;position:fixed;inset:0}.update-notice{box-sizing:border-box;text-align:center;width:100%;max-width:560px;min-height:min(78vh,560px);color:var(--text);background:var(--bg-raised);border:2px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:56px 32px 48px;display:flex;position:relative}@keyframes update-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.update-scrim{animation:none}}.update-title{margin:0;font-size:1.6rem;line-height:1.2}.update-body{max-width:34ch;color:var(--muted);margin:0;font-size:1.05rem;line-height:1.5}.update-refresh{font:inherit;color:var(--on-accent);background:var(--accent);cursor:pointer;border:0;border-radius:999px;margin-top:8px;padding:14px 44px;font-size:1.15rem;font-weight:600;transition:filter .15s}.update-refresh:hover{filter:brightness(1.1)}.update-refresh:focus-visible,.update-close:focus-visible{outline:2px solid var(--text);outline-offset:3px}.update-close{width:44px;height:44px;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;font-size:1.8rem;line-height:1;position:absolute;top:10px;right:10px}.update-close:hover{color:var(--text)}.update-refresh:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-stats{color:var(--muted)}.btn-stats.is-on{color:var(--text);border-color:var(--accent)}.btn-stats svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;width:18px;height:18px;margin:0 auto;display:block}.stats h3{color:var(--text);margin:16px 0 4px;font-size:.9rem;font-weight:600}.stats .result-stats{margin:4px 0 8px}.stats-when{letter-spacing:normal;text-transform:none;margin-top:1px;font-size:.72rem;display:block}.howto p.stats-note{color:var(--muted);margin:0 0 8px;font-size:.8rem}.stats-week{margin:8px 0 6px;padding:0;list-style:none}.stats-week li{grid-template-columns:2.4em 1fr 3.2em;grid-template-areas:"day track time"".sub sub";align-items:center;column-gap:8px;margin:0 0 6px;display:grid}.stats-day{grid-area:day;font-size:.82rem}.stats-track{background:var(--line);border-radius:999px;grid-area:track;height:10px;position:relative}.stats-bar{background:var(--ok);border-radius:999px;position:absolute;inset:0 auto 0 0}.stats-tick{background:var(--text);width:2px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.stats-time{text-align:right;font-variant-numeric:tabular-nums;grid-area:time;font-size:.85rem}.stats-sub{color:var(--muted);grid-area:sub;font-size:.72rem}.howto p.stats-legend{color:var(--muted);align-items:center;gap:6px;font-size:.72rem;display:flex}.stats-key-bar{background:var(--ok);border-radius:999px;width:14px;height:8px}.stats-key-tick{background:var(--text);width:2px;height:12px;margin-left:8px}.legend-mark{border-radius:3px;flex:none;width:11px;height:11px}.legend-mark:not(:first-child){margin-left:8px}.stats-recent{grid-template-columns:repeat(7,1fr);gap:5px;max-width:260px;margin:8px 0 14px;display:grid}.stats-head{text-align:center;color:var(--muted);font-size:.68rem}.stats-mark{aspect-ratio:1;border:1px solid var(--line);border-radius:4px}button.stats-mark{font:inherit;cursor:pointer;background:0 0;padding:0}.stats-mark.is-picked{outline-offset:1px;outline:2px solid}.stats-mark.is-solved{background:var(--ok);border-color:var(--ok)}.stats-mark.is-gave-up{background:var(--muted);border-color:var(--muted);opacity:.55}.stats-mark.is-today{border-color:var(--accent)}.stats-mark.is-ahead,.stats-mark.is-none{opacity:.35;border-style:dashed}.gallery{grid-template-columns:repeat(3,1fr);gap:12px 10px;margin:8px 0 10px;padding:0;list-style:none;display:grid}.gallery-frame{aspect-ratio:1;background:var(--bg);border:2px solid var(--line);cursor:pointer;border-radius:4px;width:100%;padding:6px;display:block}.gallery-frame img,.gallery-picture img{object-fit:contain;width:100%;height:100%;display:block}.gallery-frame.is-full,.gallery-picture.is-full{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.gallery-frame:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gallery-marks{grid-template-columns:repeat(7,1fr);gap:2px;margin-top:6px;display:grid}.gallery-marks .stats-mark{border-radius:2px}.gallery-marks.is-labeled{gap:5px;max-width:260px;margin:12px 0 10px}.gallery-marks.is-labeled .stats-mark{border-radius:4px}.gallery-picture{background:var(--bg);border:2px solid var(--line);border-radius:4px;padding:8px}.gallery-picture img{height:auto;max-height:46vh}.gallery-notes{text-align:left;flex-direction:column;gap:10px;margin:4px 0 16px;display:flex}.gallery-notes dt{color:var(--muted);font-size:.75rem}.gallery-notes dd{margin:2px 0 0;font-size:.85rem;line-height:1.45}.btn:disabled{opacity:.5;cursor:default}.result-actions+.result-actions{margin-top:8px}.howto-foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.btn-quiet{color:var(--muted);padding:7px 13px;font-size:.85rem}.btn-quiet:hover{color:var(--text)}.link-btn{font:inherit;color:var(--accent);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.link-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.howto h3{color:var(--text);margin:14px 0 4px;font-size:.9rem;font-weight:600}.reporting ul{margin-bottom:10px}.switch{font:inherit;color:var(--text);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;margin:4px 0 8px;padding:0;font-size:.92rem;display:flex}.switch-track{background:var(--line);border-radius:999px;flex:none;width:40px;height:22px;transition:background .15s;position:relative}.switch-thumb{background:var(--muted);border-radius:50%;width:16px;height:16px;transition:transform .15s,background .15s;position:absolute;top:3px;left:3px}.switch[aria-checked=true] .switch-track{background:var(--accent)}.switch[aria-checked=true] .switch-thumb{background:var(--on-accent);transform:translate(18px)}.switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.testbed-card,.review{width:min(460px,100% - 24px);margin:auto;animation:.2s ease-out card-in;position:static;transform:none}@keyframes card-in{0%{opacity:0;transform:translateY(10px)}}.testbed{justify-content:center}.testbed-summary{color:var(--muted);margin:0 0 12px;padding:0;font-size:.85rem;list-style:none}.testbed-summary li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:5px 0;display:flex}.testbed-summary li span:first-child{color:var(--text)}.testbed-giveup{color:var(--muted);padding:6px 12px;font-size:.82rem}.testbed-giveup:hover{color:var(--text)}.review-step{color:var(--muted);margin:0 0 6px;font-size:.8rem}.review-q{margin:16px 0 6px;font-size:.92rem;font-weight:600}.review-hint{color:var(--muted);margin:0 0 8px;font-size:.8rem;line-height:1.45}.review-scale{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.review-rung{min-height:74px;font:inherit;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;transition:border-color .15s,background .15s,color .15s;display:flex}.review-rung:hover{border-color:var(--muted)}.review-rung.is-on{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.review-rung-n{font-size:1.05rem;font-weight:700}.review-rung-l{text-align:center;font-size:.62rem;line-height:1.2}.review-fair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.review-thumb{color:var(--muted);padding:12px 8px}.review-thumb.is-on{color:var(--on-accent);background:var(--ok);border-color:var(--ok);font-weight:600}.review-thumb.is-off{color:var(--text);background:var(--danger-line);border-color:var(--danger-line);font-weight:600}.review-next{width:100%;margin-top:18px;padding:13px 16px;font-size:1rem}.review-next:disabled{opacity:.4;cursor:default}.survey-options{flex-wrap:wrap;gap:6px;display:flex}.survey-option{min-height:40px;font:inherit;color:var(--text);border:1px solid var(--line);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;padding:8px 14px;font-size:.88rem;transition:border-color .15s,background .15s,color .15s}.survey-option:hover{border-color:var(--muted)}.survey-option.is-on{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.reveal-note{z-index:4;width:min(460px,100% - 24px);color:var(--muted);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:10px;padding:10px 14px;font-size:.82rem;line-height:1.45;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.reveal-show{white-space:nowrap;flex:none;padding:6px 10px;font-size:.76rem}.testbed-rate{padding:6px 14px;font-size:.82rem}.testbed-giveup:disabled{opacity:.35;cursor:default}.giveup-btn{font:inherit;color:var(--muted);background:var(--bg-raised);border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:999px;padding:7px 12px;font-size:.78rem;transition:color .15s,border-color .15s,opacity .15s;position:absolute;bottom:12px;left:12px}.giveup-btn:hover{color:var(--text);border-color:var(--muted)}.giveup-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.giveup-btn.is-shut{opacity:.5}.giveup-btn.is-arming{opacity:.8}.giveup-btn.is-arming:before{content:"";background:conic-gradient(var(--accent) calc(var(--arm,0) * 360deg), transparent 0);-webkit-mask-composite:xor;pointer-events:none;border-radius:999px;padding:2px;position:absolute;inset:-3px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.hint-btn{left:auto;right:12px}.hint-btn.is-nudge{animation:.9s ease-in-out 3 hint-nudge}@keyframes hint-nudge{50%{color:var(--text);border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 45%, transparent), var(--shadow)}}.giveup-note{z-index:5;width:min(460px,100% - 24px);color:var(--text);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 10px;margin:0;padding:10px 14px;font-size:.82rem;line-height:1.45;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.giveup-note[role=dialog]{justify-content:flex-start}.giveup-note span{flex:100%}.giveup-note.is-plea{color:var(--muted);justify-content:flex-start}.giveup-yes,.giveup-no{white-space:nowrap;flex:none;padding:6px 10px;font-size:.76rem}.giveup-yes{color:var(--muted)}.giveup-hint{white-space:nowrap;flex:none;padding:6px 12px;font-size:.76rem}.result-gaveup{color:var(--muted);margin:0 0 14px;font-size:.86rem;line-height:1.5}.btn-hide{color:color-mix(in srgb, var(--muted) 70%, var(--text));justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.btn-hide svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linejoin:round;width:18px;height:18px}.hide-layer{z-index:100;background:var(--bg);position:fixed;inset:0}.hide-layer[hidden]{display:none}button.test-banner-exit{cursor:pointer;background:0 0}.btn-back{flex:none;padding:6px 12px 6px 9px;font-size:.85rem}.hide-maker .title{min-width:0}.hide-hint{color:var(--text);pointer-events:none;white-space:nowrap;background:#12100ecc;border-radius:999px;margin:0;padding:6px 14px;font-size:.85rem;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.hide-controls{max-height:44dvh;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg-raised);touch-action:pan-y;flex-direction:column;flex:none;gap:10px;display:flex;overflow-y:auto}.hide-row{color:var(--muted);grid-template-columns:76px minmax(0,1fr);align-items:center;gap:10px;font-size:.85rem;display:grid}.hide-row select,.hide-row input[type=range]{width:100%;min-width:0}.hide-row select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px 8px}.hide-row input[type=range]{accent-color:var(--accent)}.hide-swatches{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.hide-shapes{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;touch-action:pan-x;gap:6px;margin:0 -12px 0 -4px;padding:2px 12px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 20px),#0000);mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 20px),#0000)}.hide-shapes::-webkit-scrollbar{display:none}.hide-shapes .hide-shape{scroll-snap-align:start;flex:none}.hide-shape{width:34px;height:34px;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0;display:flex}.hide-shape.is-on{color:var(--accent);border-color:var(--accent)}.hide-swatch{border:2px solid var(--line);cursor:pointer;border-radius:50%;width:24px;height:24px;padding:0}.hide-swatch.is-on{border-color:var(--accent)}.hide-custom{border:2px solid var(--line);cursor:pointer;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:6px;width:30px;height:24px;padding:0}.hide-custom.is-on{border-color:var(--accent)}.hide-mix{gap:2px;display:grid}.hide-mix input[type=range]{appearance:none;border:1px solid var(--line);border-radius:999px;height:14px;margin:4px 0}.hide-mix input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:2px solid #fff;border-radius:50%;width:22px;height:22px;box-shadow:0 0 0 1px #0009}.hide-mix input[type=range]::-moz-range-thumb{background:0 0;border:2px solid #fff;border-radius:50%;width:18px;height:18px;box-shadow:0 0 0 1px #0009}.hide-share{align-items:center;gap:12px;display:flex}.hide-share .btn{flex:none}.hide-share .btn:disabled{opacity:.45;cursor:default}.hide-status{min-width:0;color:var(--muted);overflow-wrap:anywhere;flex:1;font-size:.8rem}.hide-trace{letter-spacing:.05em;font-size:1.2rem}.hide-actions{flex-wrap:wrap;gap:8px;display:flex}.hide-actions a.btn{text-decoration:none}.hide-controls[hidden]{display:none}.hide-warning{min-width:0;color:var(--accent);flex:1;font-size:.78rem;line-height:1.3}.hide-auto{font:inherit;height:24px;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:0 8px;font-size:.78rem}.hide-auto.is-on{color:var(--accent);border-color:var(--accent)}.hide-painting{align-items:center;gap:6px;min-width:0;display:flex}.hide-painting select{flex:auto}.hide-name-btn{max-width:45%;font:inherit;height:30px;color:var(--muted);border:1px solid var(--line);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;flex:0 auto;align-items:center;gap:4px;padding:0 10px;font-size:.78rem;display:inline-flex}.hide-name-btn.is-on{color:var(--accent);border-color:var(--accent)}.hide-name-label{text-overflow:ellipsis;min-width:0;overflow:hidden}.hide-name{align-items:center;gap:8px;min-width:0;display:flex}.hide-name input{min-width:0;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:8px;flex:auto;padding:6px 8px}.hide-name-count{font-variant-numeric:tabular-nums;font-size:.72rem}.friend-title{min-width:0}.friend-title~.clock,.friend-title~.topbar-actions,:is(.title-stack:has(>.friend-title)~.clock,.title-stack:has(>.friend-title)~.topbar-actions){flex-shrink:0}.board.is-loading .stage-canvas{visibility:hidden}.hide-skeleton{z-index:1;background:var(--bg-raised);pointer-events:none;border-radius:4px;animation:1.2s ease-in-out infinite alternate hide-skeleton;position:absolute}@keyframes hide-skeleton{0%{opacity:.45}to{opacity:1}}.hide-level{grid-template-columns:minmax(0,1fr) 84px;align-items:center;gap:10px;display:grid}.hide-level-now{color:var(--text);text-align:right;white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.intro .stage{background:var(--intro-field)}.intro-lead,.intro-step{pointer-events:none;color:#1d1d1b;margin:0;line-height:1.3;position:absolute}.intro-lead p{margin:0 0 22px;font-size:34px}.intro-lead p.intro-big{font-size:44px;font-weight:700}.intro-step{color:#0b3317;text-align:center;transition:opacity .35s ease-out,filter .35s ease-out}.intro-move{font-size:26px}.intro-match{font-size:15px;font-weight:600}.intro-hint{text-align:left;font-size:20px}.intro-giveup-step{text-align:left;font-size:18px}.intro-arrow{transition:opacity .35s ease-out,filter .35s ease-out}.giveup-btn.is-lit{color:var(--text);border-color:var(--accent)}.giveup-btn.intro-giveup.is-lit{opacity:.85;cursor:default}.hint-btn.is-lit{animation:1.2s ease-in-out infinite hint-nudge}.intro-arrow{pointer-events:none;fill:none;stroke:#1d1d1b;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;transform-origin:50%;position:absolute}.intro-skip{color:var(--muted);padding:6px 12px;font-size:.82rem}.intro-skip:hover{color:var(--text)}.intro-close{z-index:4;max-width:220px;color:var(--accent);background:var(--bg-raised);border:1px dashed var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:none;margin:0;padding:8px 12px;font-size:.82rem;line-height:1.4;position:absolute;right:12px}@media (width<=420px){.intro-close{right:8px}}.intro-done{color:var(--muted);text-align:center;margin:12px 0 8px;font-size:.9rem;line-height:1.45}.intro-ready{text-align:center;margin:12px 0;font-weight:600}.tour{z-index:3;background:var(--bg-raised);border:1px solid var(--line);width:min(420px,100% - 24px);box-shadow:var(--shadow);pointer-events:none;border-radius:14px;padding:10px 12px 12px;position:absolute;bottom:56px;left:50%;transform:translate(-50%)}.intro-tour .stage-start-hint{top:50%;bottom:auto;transform:translate(-50%,-50%)}.tour-steps{counter-reset:none;justify-content:space-between;gap:4px;margin:0 0 10px;padding:0;list-style:none;display:flex}.tour-steps li{color:var(--muted);opacity:.7;flex:1;justify-content:center;align-items:center;gap:6px;font-size:.8rem;transition:color .25s,opacity .25s;display:flex}.tour-steps li.is-now{color:var(--text);opacity:1}.tour-steps li.is-done{color:var(--ok);opacity:1}.tour-dot{letter-spacing:0;border:1.5px solid;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;font-size:.7rem;font-weight:700;display:grid}.tour-steps li.is-now .tour-dot{color:var(--bg);background:var(--accent);border-color:var(--accent)}.tour-steps li.is-done .tour-dot{color:var(--bg);background:var(--ok);border-color:var(--ok)}.tour-now{border-top:1px solid var(--line);align-items:center;gap:12px;padding-top:10px;animation:.3s ease-out tour-in;display:flex}.tour-now p{color:var(--text);margin:0;font-size:.95rem;line-height:1.35}.tour-swatch{vertical-align:-5px;background:#ffffff1f;border-radius:5px;place-items:center;width:22px;height:22px;display:inline-grid}.tour-tip{color:var(--accent);margin-top:3px;font-size:.8rem;display:block}@keyframes tour-in{0%{opacity:0;transform:translateY(4px)}}.tour-gesture{fill:none;width:40px;height:40px;stroke:var(--text);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;flex:none}.tour-gesture .g-finger{fill:var(--accent);stroke:none}.tour-gesture .g-faint{stroke:var(--muted);stroke-dasharray:2 3}.tour-gesture .g-sweep{animation:2.4s ease-in-out infinite g-sweep}.tour-gesture .g-a{animation:1.6s ease-in-out infinite g-pinch-a}.tour-gesture .g-b{animation:1.6s ease-in-out infinite g-pinch-b}.tour-gesture .g-orbit{transform-origin:20px 20px;animation:2s ease-in-out infinite g-orbit}.tour-gesture .g-fit{stroke:var(--accent);transform-origin:20px 20px;animation:2.4s ease-in-out infinite g-fit}@keyframes g-sweep{0%,to{transform:translate(0)}33%{transform:translate(5px,2px)}66%{transform:translate(1px,5px)}}@keyframes g-pinch-a{0%,15%{transform:translate(0)}60%,80%{transform:translate(-6px,6px)}to{transform:translate(0)}}@keyframes g-pinch-b{0%,15%{transform:translate(0)}60%,80%{transform:translate(6px,-6px)}to{transform:translate(0)}}@keyframes g-orbit{0%,15%{transform:rotate(-35deg)}65%,85%{transform:rotate(25deg)}to{transform:rotate(-35deg)}}@keyframes g-fit{0%,10%{transform:rotate(28deg)scale(.6)}60%,90%{stroke:var(--ok);transform:rotate(0)scale(1)}to{transform:rotate(28deg)scale(.6)}}@media (prefers-reduced-motion:reduce){.tour-gesture *{animation:none!important}.tour-now{animation:none}}@media (width<=420px){.tour{width:calc(100% - 16px);padding:8px 10px 10px;bottom:48px}.tour-steps li{gap:4px;font-size:.68rem}.tour-now p{font-size:.9rem}}.tune-card{max-height:calc(100dvh - 24px);overflow-y:auto}.tune-knob{margin:14px 0 0}.tune-knob-head{justify-content:space-between;align-items:center;gap:8px;font-size:.9rem;font-weight:600;display:flex}.tune-info{min-width:36px;min-height:32px;font:inherit;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;padding:0 8px;font-size:1rem}.tune-info[aria-expanded=true]{color:var(--text);border-color:var(--muted)}.tune-knob-info{color:var(--muted);margin:6px 0 4px;font-size:.8rem;line-height:1.45}.tune-knob input[type=range]{width:100%;accent-color:var(--accent);margin:6px 0 0}.tune-ends{color:var(--muted);justify-content:space-between;font-size:.72rem;display:flex}.tune-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;display:grid}.tune-actions .btn:only-child{grid-column:1/-1}.tune-actions .btn:disabled{opacity:.45;cursor:default}.tune-tries{text-align:center;margin:10px 0 0}.tune-track{touch-action:pan-y;cursor:pointer;padding:4px 0}.tune-track input[type=range]{pointer-events:none}.reveal-note.tune-solved{flex-wrap:wrap}.tune-solved>span{flex-basis:100%}.tune-solved .btn{flex:1 1 0;padding-inline:8px}
