@font-face{font-family:Fraunces;src:url(./fraunces-latin-DuyUSUgP.woff) format("woff");font-weight:500 600;font-style:normal;font-display:swap}:root{--bg: #f4f1ea;--surface: #fffdf8;--ink: #2a2018;--ink-soft: #6f6357;--line: #e4ddd0;--outline: #4a4034;--accent: #2f7d55;--danger: #b4442f;--radius: 12px;--display: "Fraunces", Georgia, "Times New Roman", serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #16151a;--surface: #201e26;--ink: #f1ece3;--ink-soft: #a49a8c;--line: #322e3a;--outline: #bab1a4;--accent: #6bbd8c;--danger: #e07a63}}:root[data-theme=dark]{--bg: #16151a;--surface: #201e26;--ink: #f1ece3;--ink-soft: #a49a8c;--line: #322e3a;--outline: #bab1a4;--accent: #6bbd8c;--danger: #e07a63}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}body{min-height:100dvh;overscroll-behavior:none;touch-action:manipulation;-webkit-user-select:none;user-select:none}.sheet{-webkit-user-select:text;user-select:text}html.fits,html.fits body{height:100dvh;overflow:hidden}.app{max-width:460px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 14px 0;display:flex;flex-direction:column;gap:12px}.board-wrap{width:100%;max-width:min(100%,38vh);margin-inline:auto}.topbar{display:flex;align-items:center;gap:8px}.brand{font-family:var(--display);font-size:20px;font-weight:600;font-variation-settings:"SOFT" 40,"WONK" 1;letter-spacing:-.015em;margin:0}.puzzle-no{font-size:14px;color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.puzzle-no.is-practice{font-style:italic}.chip{margin-left:auto;font-size:12px;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:2px 9px}.link-btn{border:none;background:none;padding:0;min-height:0;white-space:nowrap;font-size:13px;color:var(--accent);text-decoration:underline;text-underline-offset:3px}.link-btn[hidden]{display:none}.icon-btn{display:grid;place-items:center;padding:0;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);font-size:14px;cursor:pointer}.icon-btn[hidden]{display:none}.status{display:flex;align-items:center;justify-content:space-between;gap:10px}.clock{margin:0;font-size:15px}.clock strong,.sheet-score{font-variant-numeric:tabular-nums}.clock strong{font-size:19px;font-weight:500}.muted{color:var(--ink-soft);font-weight:400}.status-actions{display:flex;gap:8px}.replay-btn{width:100%;min-height:44px;font-size:15px}button{font:inherit;font-size:14px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;min-height:36px}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button:active:not(:disabled){transform:scale(.97)}.board-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px;position:relative}.pause-btn{display:inline-flex;align-items:center;gap:5px;padding:0 10px;min-height:24px;font-size:13px;color:var(--ink-soft)}.pause-btn[hidden]{display:none}.board-cover{position:absolute;inset:-1px;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer}.board-cover[hidden]{display:none}.board-cover-title{font-size:20px;font-weight:500;color:var(--ink)}.board-cover-hint{font-size:13px;color:var(--ink-soft)}.app.is-paused .tray-wrap{pointer-events:none}.app.is-paused .tray-piece{visibility:hidden}.app.is-paused .tray-pager{opacity:.35}.app.is-unstarted .tray-piece{visibility:hidden}.tray-cover{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer}.tray-cover[hidden]{display:none}.tray-cover-title{font-family:var(--display);font-size:20px;font-weight:600;color:#fff;background:var(--accent);border-radius:999px;padding:11px 34px;line-height:1.2;transition:transform .12s ease-out}.tray-cover:hover .tray-cover-title{transform:scale(1.03)}.tray-cover:active .tray-cover-title{transform:scale(.97)}.tray-cover:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .tray-cover-title{color:var(--bg)}}:root[data-theme=dark] .tray-cover-title{color:var(--bg)}.board{display:block;width:100%;height:auto;touch-action:none;-webkit-touch-callout:none}.board-guide{opacity:.34}.board-outline{fill:none;stroke:var(--outline);stroke-width:2.5;stroke-linejoin:round;vector-effect:non-scaling-stroke}.piece-seam-halo{fill:none;stroke:#ffffff73;stroke-width:2.75;stroke-linejoin:round;vector-effect:non-scaling-stroke;transition:opacity .6s ease .25s}.piece-seam{fill:none;stroke:#00000080;stroke-width:1.25;stroke-linejoin:round;vector-effect:non-scaling-stroke;transition:opacity .6s ease .25s}.board.is-solved .piece-seam,.board.is-solved .piece-seam-halo{opacity:0}.board-piece{animation:drop-in .18s ease-out}.board-piece.is-hinted{animation:hint-flash .7s ease-out}@keyframes drop-in{0%{opacity:.35}}@keyframes hint-flash{0%,40%{opacity:.3}}.board-piece.is-misplaced .piece-seam{stroke:var(--danger);stroke-width:2.5;stroke-dasharray:4 2.5;animation:nudge 1.4s ease-in-out infinite}.board-piece.is-misplaced .piece-seam-halo{opacity:0}@keyframes nudge{50%{stroke-opacity:.35}}.ghost-fill{opacity:.18}.ghost-outline{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.board-ghost.is-legal .ghost-outline{stroke:var(--accent)}.board-ghost.is-blocked .ghost-outline{stroke:var(--danger)}.board.is-solved{animation:reveal .7s ease-out}@keyframes reveal{40%{transform:scale(1.035)}}.tray{display:flex;flex-wrap:wrap;justify-content:center;align-content:start;gap:4px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.tray.is-dragging+.tray-pager .tray-page-btn{pointer-events:none}.tray-wrap{position:relative}.colophon{margin:0;padding:4px 0 calc(8px + env(safe-area-inset-bottom));font-size:11px;line-height:15px;text-align:center;color:var(--ink-soft)}.colophon p{margin:0}.colophon a{color:inherit;text-decoration:underline;text-underline-offset:2px}.colophon-link{padding:0;border:0;background:none;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer;min-height:0}.colophon a:focus-visible,.colophon-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:2px}.tray-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin:6px 0 0;height:44px}.tray-pager[hidden]{display:none}.tray-page-btn{min-width:44px;min-height:44px;display:grid;place-items:center;padding:0;font-size:22px;line-height:1;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;cursor:pointer}.tray-page-btn:disabled{opacity:.3;cursor:default}.tray-page-label{font-size:13px;color:var(--ink-soft);font-variant-numeric:tabular-nums;min-width:4ch;text-align:center}.tray-piece{display:grid;place-items:center;padding:0;min-height:0;border-radius:10px;border:1px solid transparent;background:transparent;touch-action:none;-webkit-touch-callout:none;line-height:0;cursor:grab}.tray-wrap.is-empty,.tray-piece.is-placed,.tray-piece.is-offpage{display:none}.tray-piece.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.piece-edge{fill:none;stroke:#00000061;stroke-width:1.25;stroke-linejoin:round;vector-effect:non-scaling-stroke}.coach{margin:-4px 0 0;text-align:center;font-size:13px;color:var(--ink-soft);min-height:18px}.drag-layer{position:fixed;inset:0;pointer-events:none;z-index:40}.drag-layer .drag-svg{position:absolute;top:0;left:0;filter:drop-shadow(0 6px 12px rgb(0 0 0 / .25))}.sheet{position:fixed;inset:0;z-index:60;width:100%;height:100%;max-width:100%;max-height:100%;margin:0;border:0;color:inherit}.sheet::backdrop{background:transparent}.sheet[open]{display:flex;align-items:flex-start;justify-content:center;background:#0000006b;padding:16px;overflow-y:auto;overscroll-behavior:contain}.sheet-card{width:100%;max-width:420px;margin-top:auto;background:var(--surface);border-radius:18px;padding:22px 20px calc(20px + env(safe-area-inset-bottom));animation:rise .22s ease-out}@keyframes rise{0%{transform:translateY(18px);opacity:0}}.sheet-eyebrow{margin:0;font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft)}.sheet-title{font-family:var(--display);margin:4px 0 10px;font-size:26px;font-weight:600;font-variation-settings:"SOFT" 40,"WONK" 1;letter-spacing:-.015em}.sheet-score{margin:0 0 10px;font-family:var(--display);font-size:34px;font-weight:600;line-height:1}.sheet-detail{margin:0 0 14px;font-size:13px;color:var(--ink-soft)}.sheet-char{margin:2px 0 4px;font-size:46px;line-height:1.1}.sheet-char:empty{display:none}.sheet-streak{margin:0 0 16px;font-size:14px;color:var(--ink-soft)}.sheet-actions{display:flex;gap:8px}.sheet-actions{flex-wrap:wrap}.sheet-actions button{flex:1 1 auto;white-space:nowrap}.sheet-note{margin:10px 0 0;font-size:13px;color:var(--ink-soft);min-height:17px}.sheet-note a{color:inherit;text-decoration:underline;text-underline-offset:2px}.sheet-note a:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:2px}.share-fallback{width:100%;margin-top:10px;padding:10px;font:inherit;font-size:15px;line-height:1.45;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);resize:none}.share-fallback[hidden]{display:none}.help-list{margin:0 0 18px;padding-left:20px;font-size:14px;line-height:1.65;color:var(--ink-soft)}.help-list li+li{margin-top:4px}.help-note{margin:0 0 18px;font-size:14px;line-height:1.65;color:var(--ink-soft)}.help-note a{color:inherit;text-decoration:underline;text-underline-offset:2px}.help-note a:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:2px}.setting{border-top:1px solid var(--line);padding-top:14px;margin-bottom:18px}.setting-row{display:flex;align-items:center;gap:10px;font-size:15px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.tray-piece:focus-visible,.icon-btn:focus-visible,.pause-btn:focus-visible,.board-cover:focus-visible,.link-btn:focus-visible,.tray-page-btn:focus-visible,.replay-btn:focus-visible,.sheet-actions button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:10px}.tray-piece[aria-pressed=true]{border-color:var(--accent)}.help-subhead{margin:18px 0 6px;font-family:var(--display);font-size:15px;font-weight:600;color:var(--ink)}.sheet-card:focus,.sheet-card:focus-visible{outline:none}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:14px 0 20px}.stat-figure{display:flex;flex-direction:column;align-items:center;gap:2px}.stat-figure b{font-family:var(--display);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}.stat-figure span{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.stat-caption{margin:0 0 8px;font-size:12px;color:var(--ink-soft)}.stat-chart{display:flex;flex-direction:column;gap:5px}.stat-bar{display:grid;grid-template-columns:46px 1fr 22px;align-items:center;gap:8px;font-size:12px;font-variant-numeric:tabular-nums}.stat-bar-label{color:var(--ink-soft)}.stat-bar-track{height:14px;border-radius:7px;background:var(--line);overflow:hidden}.stat-bar-fill{display:block;height:100%;border-radius:7px;background:var(--accent);min-width:0}.stat-bar b{text-align:right;font-weight:500;color:var(--ink-soft)}.segmented{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:9px;background:var(--bg)}.segmented button{min-height:30px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--ink-soft);font:inherit;font-size:12px;cursor:pointer}.segmented button[aria-checked=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #00000014}.segmented button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.archive{display:flex;flex-direction:column;gap:14px;max-height:min(380px,52vh);overflow-y:auto;overscroll-behavior:contain;padding:2px}.archive-month-name{margin:0 0 6px;font-family:var(--display);font-size:15px;font-weight:600;color:var(--ink)}.archive-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.archive-weekday{text-align:center;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.archive-blank,.archive-day{display:grid;place-items:center;min-height:34px;border-radius:8px;font-size:12px;font-variant-numeric:tabular-nums}.archive-blank{color:var(--line)}.archive-day{position:relative;border:1px solid var(--line);background:var(--bg);color:var(--ink-soft);text-decoration:none}.archive-day.is-solved{border-color:var(--accent);background:color-mix(in oklab,var(--accent) 16%,var(--surface));color:var(--ink)}.archive-day.is-solved:after{content:"✓";position:absolute;top:1px;right:3px;font-size:9px;line-height:1;color:var(--accent)}.archive-day.is-today{outline:2px solid var(--ink);outline-offset:-1px;font-weight:600;color:var(--ink)}.archive-day:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.archive-legend{display:flex;gap:14px;margin:0 0 10px;font-size:12px;color:var(--ink-soft)}.archive-legend span{display:inline-flex;align-items:center;gap:6px}.archive-legend i{width:14px;height:14px;border-radius:4px;border:1px solid var(--line);background:var(--bg)}.archive-legend i.is-solved{border-color:var(--accent);background:color-mix(in oklab,var(--accent) 16%,var(--surface))}.archive-legend i.is-today{outline:2px solid var(--ink);outline-offset:-1px}.stale{max-width:28rem;margin:15vh auto 0;padding:0 20px;text-align:center}.stale h1{font-family:var(--display);font-weight:500;font-size:28px;margin:0 0 12px}.stale p{color:var(--ink-soft);margin:0 0 20px}.stale .sheet-actions{justify-content:center;margin-bottom:14px}
