:root{color-scheme:light;--color-bg: #FFF7E8;--color-surface: #FFFFFF;--color-surface-2: #FBEFD9;--color-surface-3: #F3E2C4;--color-border: #E6D7BE;--color-border-strong: #9C8D74;--color-ad-frame: #FBF1DF;--color-board-frame: #1B1F3B;--color-grid-line: #E6D7BE;--color-cell-border: #9C8D74;--color-highlight: #FFD43B;--color-highlight-wash: rgba(255,212,59,.18);--color-given-hatch: rgba(27,31,59,.05);--color-ink: #1B1F3B;--color-muted: #555A75;--color-on-accent: #FFFFFF;--color-on-cta: #FFFFFF;--color-rail: #E8461E;--color-rail-deep: #B8320F;--color-rail-active: #B8320F;--color-rail-sleeper: #F2B9A6;--color-rail-given: #1B1F3B;--color-mark-x: #7C8299;--color-endpoint-a: #1565C0;--color-endpoint-b: #C2185B;--color-success: #2E7D32;--color-danger: #C62828;--color-warning: #B8320F;--color-focus-ring: #1565C0;--tool-bg: var(--color-surface);--tool-fg: var(--color-ink);--tool-border: var(--color-border-strong);--tool-bg-hover: var(--color-surface-2);--tool-bg-pressed: var(--color-surface-3);--tool-track-selected-bg: #B8320F;--tool-track-selected-fg: #FFFFFF;--tool-block-selected-bg: #FFD43B;--tool-selected-fg: #1B1F3B;--tool-selected-ring: #1B1F3B;--tool-disabled-opacity: .45;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, "Roboto Mono", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-clue: 1.1875rem;--text-xl: 1.5rem;--text-2xl: 2rem;--leading-tight: 1.15;--leading-normal: 1.5;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-black: 800;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(27,31,59,.1);--shadow-md: 0 4px 12px rgba(27,31,59,.12);--shadow-lg: 0 12px 32px rgba(27,31,59,.18);--shadow-glow: 0 0 0 2px var(--color-surface), 0 0 0 4px var(--color-focus-ring);--motion-fast: .12s;--motion-base: .2s;--motion-slow: .36s;--motion-sweep-step: 40ms;--ease-out: cubic-bezier(.2,.7,.2,1);--ease-in-out: cubic-bezier(.65,0,.35,1);--shake-distance: 3px;--cell-min: 44px;--cell-max: 60px;--board-max: 420px;--clue-size: 28px;--badge-size: 26px;--tool-height: 48px;--btn-height: 44px;--rail-stroke-ratio: .22;--x-stroke: 8;--bp-sm: 480px;--bp-md: 768px;--bp-lg: 1024px;--bp-xl: 1280px;--z-base: 0;--z-sticky: 10;--z-overlay: 100;--z-toast: 200}:root[data-theme=dark]{color-scheme:dark;--color-bg: #141A2E;--color-surface: #1E2640;--color-surface-2: #283252;--color-surface-3: #323E63;--color-ink: #F5F7FF;--color-muted: #AEB6D4;--color-on-accent: #141A2E;--color-on-cta: #141A2E;--color-rail: #FF7A45;--color-rail-deep: #FF7A45;--color-rail-active: #FF9A6E;--color-rail-sleeper: #6B4A45;--color-rail-given: #FFD166;--color-given-hatch: rgba(255,209,102,.08);--color-mark-x: #8C95B8;--color-endpoint-a: #4DABF7;--color-endpoint-b: #F783AC;--color-success: #51CF66;--color-danger: #FF6B6B;--color-warning: #FFD166;--color-focus-ring: #4DABF7;--color-highlight: #FFD43B;--color-highlight-wash: rgba(255,212,59,.12);--color-board-frame: #AEB6D4;--color-grid-line: #2E3858;--color-cell-border: #6A7396;--color-border: #3A4566;--color-border-strong: #6A7396;--color-ad-frame: #1A2138;--tool-track-selected-bg: #FF7A45;--tool-block-selected-bg: #FFD43B;--tool-selected-fg: #141A2E;--tool-track-selected-fg: #141A2E;--tool-selected-ring: #F5F7FF;--shadow-sm: 0 1px 2px rgba(0,0,0,.35);--shadow-md: 0 4px 12px rgba(0,0,0,.4);--shadow-lg: 0 12px 32px rgba(0,0,0,.5)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--color-bg: #141A2E;--color-surface: #1E2640;--color-surface-2: #283252;--color-surface-3: #323E63;--color-ink: #F5F7FF;--color-muted: #AEB6D4;--color-on-accent: #141A2E;--color-on-cta: #141A2E;--color-rail: #FF7A45;--color-rail-deep: #FF7A45;--color-rail-active: #FF9A6E;--color-rail-sleeper: #6B4A45;--color-rail-given: #FFD166;--color-given-hatch: rgba(255,209,102,.08);--color-mark-x: #8C95B8;--color-endpoint-a: #4DABF7;--color-endpoint-b: #F783AC;--color-success: #51CF66;--color-danger: #FF6B6B;--color-warning: #FFD166;--color-focus-ring: #4DABF7;--color-highlight: #FFD43B;--color-highlight-wash: rgba(255,212,59,.12);--color-board-frame: #AEB6D4;--color-grid-line: #2E3858;--color-cell-border: #6A7396;--color-border: #3A4566;--color-border-strong: #6A7396;--color-ad-frame: #1A2138;--tool-track-selected-bg: #FF7A45;--tool-block-selected-bg: #FFD43B;--tool-selected-fg: #141A2E;--tool-track-selected-fg: #141A2E;--tool-selected-ring: #F5F7FF;--shadow-sm: 0 1px 2px rgba(0,0,0,.35);--shadow-md: 0 4px 12px rgba(0,0,0,.4);--shadow-lg: 0 12px 32px rgba(0,0,0,.5)}}@media (prefers-reduced-motion: reduce){:root{--motion-fast: 0ms;--motion-base: 0ms;--motion-slow: 0ms;--motion-sweep-step: 0ms;--shake-distance: 0px}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0}[hidden]{display:none!important}body{background:var(--color-bg);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);min-height:100dvh;-webkit-tap-highlight-color:transparent}.layout{display:grid;grid-template-columns:1fr;justify-content:center;gap:var(--space-6);padding:var(--space-4);padding-bottom:max(var(--space-4),env(safe-area-inset-bottom))}.ad{display:none;min-height:250px}@media (min-width: 1024px){.layout{grid-template-columns:minmax(0,520px)}.ad{display:flex;align-items:center;justify-content:center;min-width:160px;min-height:600px;position:sticky;top:var(--space-6);background:var(--color-ad-frame);border:1px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-muted);font-size:var(--text-xs)}}.app{width:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-4)}.header{text-align:center;position:relative;padding-inline:52px}.icon-btn{position:absolute;top:var(--space-1);right:0;width:44px;height:44px;border-radius:var(--radius-pill);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink);font:inherit;font-weight:var(--weight-bold);font-size:var(--text-lg);cursor:pointer}.icon-btn:hover{background:var(--color-surface-2)}.icon-btn:focus-visible{outline:none;box-shadow:var(--shadow-glow)}.title{font-family:var(--font-display);font-size:var(--text-2xl);line-height:var(--leading-tight);margin:var(--space-2) 0 var(--space-1);color:var(--color-ink)}.subtitle{margin:0;color:var(--color-muted);font-size:var(--text-sm)}.board-wrap{display:flex;justify-content:center}.board{--n: 6;display:grid;grid-template-columns:var(--clue-size) repeat(var(--n),minmax(var(--cell-min),var(--cell-max)));grid-auto-rows:auto;gap:0;position:relative;width:min(100%,calc(var(--clue-size) + var(--n) * var(--cell-max)));max-width:var(--board-max);touch-action:none;-webkit-user-select:none;user-select:none}.corner{aspect-ratio:auto}.board:after{content:"";position:absolute;pointer-events:none;z-index:3;left:calc(var(--clue-size) - 2px);top:calc(var(--clue-size) - 2px);right:-2px;bottom:-2px;border:2px solid var(--color-board-frame);border-radius:var(--radius-lg)}.clue{display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--weight-bold);font-size:var(--text-clue);line-height:var(--leading-tight);color:var(--color-ink);min-height:var(--clue-size);transition:color var(--motion-fast) var(--ease-out)}.clue.ok{color:var(--color-success)}.clue.over{color:var(--color-danger);text-decoration:underline 2px;text-underline-offset:3px}.clue-mark{font-size:var(--text-xs);margin-left:1px;text-decoration:none}.clue.over .clue-mark{font-size:var(--text-sm)}.cell{position:relative;aspect-ratio:1;padding:0;margin:0;background:var(--color-surface);border:0;box-shadow:inset 0 0 0 .5px var(--color-grid-line);border-radius:0;cursor:pointer;color:inherit;font:inherit;display:flex;align-items:center;justify-content:center;overflow:visible;transition:background var(--motion-fast) var(--ease-out)}.cell:hover{background:var(--color-surface-2)}.cell:focus-visible{outline:none;box-shadow:var(--shadow-glow);z-index:4}.board>.cell:nth-child(9){border-top-left-radius:calc(var(--radius-lg) - 2px)}.board>.cell:nth-child(14){border-top-right-radius:calc(var(--radius-lg) - 2px)}.board>.cell:nth-child(44){border-bottom-left-radius:calc(var(--radius-lg) - 2px)}.board>.cell:nth-child(49){border-bottom-right-radius:calc(var(--radius-lg) - 2px)}.cell--given{background:repeating-linear-gradient(45deg,var(--color-surface-2) 0 6px,color-mix(in srgb,var(--color-surface-2) 70%,var(--color-ink)) 6px 7px);cursor:not-allowed}.cell--given:hover{background:repeating-linear-gradient(45deg,var(--color-surface-2) 0 6px,color-mix(in srgb,var(--color-surface-2) 70%,var(--color-ink)) 6px 7px)}.cell .rivet{fill:var(--color-surface)}.cell--given .sleepers{stroke:var(--color-muted)}.cell--shake{animation:dt-shake var(--motion-fast) linear 2}@keyframes dt-shake{25%{transform:translate(calc(var(--shake-distance) * -1))}75%{transform:translate(var(--shake-distance))}}.cell svg{width:100%;height:100%;display:block;overflow:visible}.cell .rail{fill:none;stroke:var(--color-rail);stroke-width:22;stroke-linecap:butt}.cell .sleepers{fill:none;stroke:var(--color-rail-sleeper);stroke-width:40;stroke-dasharray:6 10}.cell--given .rail{stroke:var(--color-rail-given)}.cell .stub{fill:var(--color-rail);opacity:.7}.cell .x{color:var(--color-mark-x);font-size:var(--text-lg)}.badge{position:absolute;width:20px;height:20px;border-radius:var(--radius-pill);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--color-on-accent);pointer-events:none;z-index:2}.badge--a{background:var(--color-endpoint-a)}.badge--b{background:var(--color-endpoint-b)}.badge--N{top:-10px;left:calc(50% - 10px)}.badge--S{bottom:-10px;left:calc(50% - 10px)}.badge--E{right:-10px;top:calc(50% - 10px)}.badge--W{left:-10px;top:calc(50% - 10px)}.board--done .cell{cursor:default}.board--done:not(.board--sweeping) .rail,.board--sweeping .cell--swept .rail{stroke:var(--color-success);transition:stroke var(--motion-base) var(--ease-out)}.help{margin:0;color:var(--color-muted);font-size:var(--text-sm);text-align:center}.toolbar{display:flex;gap:var(--space-2);justify-content:center}.btn--tool:disabled{opacity:var(--tool-disabled-opacity)}.btn--tool[aria-pressed=true],.btn--tool-active{background:var(--color-rail-active);color:var(--color-on-accent);border-color:transparent}.board[data-tool=x]{cursor:crosshair}.actions{display:flex;gap:var(--space-3);justify-content:center}.btn{min-height:var(--cell-min);padding:0 var(--space-5);border-radius:var(--radius-pill);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);font:inherit;font-weight:var(--weight-medium);cursor:pointer}.btn:hover:not(:disabled){background:var(--color-surface-2)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-glow)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--color-rail-deep);color:var(--color-on-cta);border-color:transparent}.btn--primary:hover:not(:disabled){background:var(--color-rail-active)}.footer-zone{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.result{font-weight:var(--weight-semibold);text-align:center}.result--ok{color:var(--color-success)}.result--error{color:var(--color-danger)}.countdown{margin:0;color:var(--color-muted);font-size:var(--text-sm)}.countdown time{font-family:var(--font-mono);color:var(--color-ink)}@media (prefers-reduced-motion: reduce){*{transition:none!important}}.intro{margin:0 0 var(--space-2);color:var(--color-ink);font-size:var(--text-sm);max-width:46ch;margin-inline:auto}.intro a,.site-footer a{color:var(--color-rail-active)}.brand{font-family:var(--font-mono)}.site-footer{text-align:center;font-size:var(--text-sm);color:var(--color-muted);padding:var(--space-2) 0}.share-box{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);width:100%}.share-x{font-size:var(--text-sm);color:var(--color-rail-active)}.share-opts{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;font-size:var(--text-sm);color:var(--color-muted)}.share-opt{display:flex;align-items:center;gap:.35rem;cursor:pointer}.share-fallback{display:flex;flex-direction:column;gap:var(--space-2);width:min(100%,28rem)}.share-fallback textarea{width:100%;box-sizing:border-box;min-height:6rem;padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-ink);font:inherit;resize:vertical}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ad{display:none!important}.coach{background:var(--color-surface);border:2px solid var(--color-board-frame);border-radius:var(--radius-xl);padding:var(--space-4);box-shadow:var(--shadow-md)}.coach h2{margin:0 0 var(--space-2);font-family:var(--font-display);font-size:var(--text-lg)}.coach ol{margin:0 0 var(--space-3);padding-left:1.2em;font-size:var(--text-sm)}.coach li{margin:2px 0}.coach-row{display:flex;gap:var(--space-3);align-items:center}.coach-foot{margin:var(--space-2) 0 0;font-size:var(--text-xs);color:var(--color-muted)}.cta{min-height:52px;padding:0 var(--space-6);border:0;border-radius:var(--radius-pill);background:var(--color-rail-deep);color:var(--color-on-cta);font:inherit;font-weight:var(--weight-bold);font-size:var(--text-base);cursor:pointer}.coach .cta{min-height:44px}.cta:hover:not(:disabled){filter:brightness(1.08)}.cta:active:not(:disabled){transform:scale(.98)}.cta:disabled{opacity:.5;cursor:not-allowed}.cta:focus-visible,.link-btn:focus-visible,.sheet-close:focus-visible{outline:none;box-shadow:var(--shadow-glow)}.cta--wide{width:100%;max-width:320px}.link-btn{background:none;border:0;color:var(--color-ink);text-decoration:underline;font:inherit;font-size:var(--text-sm);min-height:44px;padding:0 var(--space-2);cursor:pointer;display:inline-flex;align-items:center}.keys{display:none;font-size:var(--text-xs)}@media (hover: hover) and (pointer: fine){.keys{display:block}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--color-bg) 60%,transparent);opacity:0;transition:opacity var(--motion-base) var(--ease-out);z-index:var(--z-overlay)}.sheet{position:fixed;left:50%;bottom:0;width:min(100%,440px);max-height:92dvh;overflow-y:auto;transform:translate(-50%,105%);background:var(--color-surface);color:var(--color-ink);border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-lg);padding:var(--space-6) var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom));text-align:center;transition:transform var(--motion-slow) var(--ease-out),opacity var(--motion-slow) var(--ease-out);z-index:calc(var(--z-overlay) + 1)}.sheet-open .sheet-backdrop{opacity:1}.sheet-open .sheet{transform:translate(-50%)}@media (min-width: 768px){.sheet{bottom:50%;border-radius:var(--radius-xl);transform:translate(-50%,60%);opacity:0}.sheet-open .sheet{transform:translate(-50%,50%);opacity:1}}.sheet-close{position:absolute;right:var(--space-2);top:var(--space-2);width:44px;height:44px;border:0;background:none;color:var(--color-muted);font-size:var(--text-lg);cursor:pointer;border-radius:var(--radius-pill)}.sheet h2{margin:0;font-family:var(--font-display);font-size:var(--text-xl);color:var(--color-success);font-weight:var(--weight-black)}.sheet-line2{color:var(--color-muted);font-size:var(--text-sm);margin:2px 0 var(--space-4)}.sheet-mile{font-size:var(--text-sm);margin:calc(var(--space-2) * -1) 0 var(--space-3)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);margin-bottom:var(--space-4)}.stat{background:var(--color-surface-2);border-radius:var(--radius-md);padding:var(--space-2)}.stat b{display:block;font-family:var(--font-mono);font-size:var(--text-xl)}.stat span{font-size:var(--text-xs);color:var(--color-muted)}.share-preview{width:100%;text-align:left;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre-wrap;margin:var(--space-2) 0 0}.sheet-cd-label{margin:var(--space-3) 0 0;font-size:var(--text-sm);color:var(--color-muted)}.sheet-cd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-2xl);font-weight:var(--weight-bold)}.sheet-foot{font-size:var(--text-xs);color:var(--color-muted);margin:0}.toast{position:fixed;left:50%;bottom:calc(var(--space-6) + env(safe-area-inset-bottom));transform:translate(-50%,8px);background:var(--color-ink);color:var(--color-bg);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);box-shadow:var(--shadow-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);opacity:0;pointer-events:none;transition:opacity var(--motion-base),transform var(--motion-base);z-index:var(--z-toast);max-width:92vw;text-align:center}.toast--show{opacity:1;transform:translate(-50%)}.clue--pending:after{content:"";display:block;width:.9em;height:.9em;margin:auto;border-radius:var(--radius-pill);background:var(--color-surface-2)}.board[aria-busy=true] .cell--shell{opacity:.7}#btn-retry{display:block;margin:var(--space-2) auto 0}.ts-widget{position:fixed;left:50%;bottom:var(--space-4);transform:translate(-50%);z-index:var(--z-toast)}.link-btn--quiet{font-size:inherit;color:var(--color-muted);padding:0;min-height:0}
