:root{--bg-top:#f6f8fc;--bg-bottom:#eef1f8;--surface:#fbf7ee;--ink:#1c1a17;--ink-soft:#57514a;--hairline:#d8cfc0;--grid-line:#b9ae9c;--cage-border:#1c1a17;--accent:#a4262c;--accent-ink:#fff;--accent-soft:#e8d9c3;--selected-ink:#1c1a17;--cage-fill:#f1e8d8;--constraint-ink:#1c1a17;--success-ink:#1c1a17;--success-bg:#cfe0c4;--failure-ink:#1c1a17;--failure-bg:#f0c9c6;--neutral-ink:#1c1a17;--neutral-bg:#e8d9c3;--shadow-card:none;--shadow-control:none;--shadow-press:none;--radius-card:2px;--radius-control:2px;--border-width:1px;--page-ink:#0f172a;--page-ink-soft:#475569;--page-accent:#2447f0;--cage-border-width:2px;--grid-line-width:1px;--clue-font:Georgia, "Times New Roman", serif;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg-top:#0b1120;--bg-bottom:#0b1120;--surface:#141414;--ink:#f5f5f5;--ink-soft:#a8b3c4;--hairline:#3f3f46;--grid-line:#3f3f46;--cage-border:#f5f5f5;--accent:#8aa0ff;--accent-ink:#0b0b0b;--accent-soft:#ffd447;--selected-ink:#0f172a;--cage-fill:#1f1f22;--constraint-ink:#e5e7eb;--success-ink:#0f172a;--success-bg:#a6f4a6;--failure-ink:#0f172a;--failure-bg:#ff6b6b;--neutral-ink:#0f172a;--neutral-bg:#7ce7e1;--page-ink:#f5f5f5;--page-ink-soft:#a8b3c4;--page-accent:#8aa0ff}[data-theme=paper]{--surface:#1b1815;--ink:#efe7d8;--ink-soft:#b9ad99;--hairline:#3a332b;--grid-line:#4a4238;--cage-border:#efe7d8;--accent:#d4625a;--accent-ink:#141110;--accent-soft:#3a2a28;--selected-ink:#efe7d8;--cage-fill:#241f1a;--constraint-ink:#efe7d8;--success-ink:#efe7d8;--success-bg:#2f3f2a;--failure-ink:#efe7d8;--failure-bg:#4a2422;--neutral-ink:#efe7d8;--neutral-bg:#3a2a28;--shadow-card:none;--shadow-control:none;--shadow-press:none;--radius-card:2px;--radius-control:2px;--border-width:1px;--cage-border-width:2px;--grid-line-width:1px;--clue-font:Georgia, "Times New Roman", serif}}[data-theme=blueprint]{--surface:#0e2a47;--ink:#eaf2fb;--ink-soft:#a9c4de;--hairline:#29527a;--grid-line:#2f6796;--cage-border:#fff;--accent:#56d6ff;--accent-ink:#06202f;--accent-soft:#1d4a72;--selected-ink:#eaf2fb;--cage-fill:#12314f;--constraint-ink:#eaf2fb;--success-ink:#06202f;--success-bg:#9be8c1;--failure-ink:#06202f;--failure-bg:#ff8f8f;--neutral-ink:#06202f;--neutral-bg:#56d6ff;--shadow-card:none;--shadow-control:none;--shadow-press:none;--radius-card:0;--radius-control:0;--border-width:1px;--cage-border-width:2px;--grid-line-width:1px;--clue-font:var(--font-mono)}[data-theme=editorial]{--surface:#fff;--ink:#000;--ink-soft:#5a5a5a;--hairline:#e2e2e2;--grid-line:#111;--cage-border:#000;--accent:#e2001a;--accent-ink:#fff;--accent-soft:#ffe1e4;--selected-ink:#000;--cage-fill:#f2f2f2;--constraint-ink:#000;--success-ink:#000;--success-bg:#d6f5d6;--failure-ink:#000;--failure-bg:#ffd6d6;--neutral-ink:#000;--neutral-bg:#eee;--shadow-card:none;--shadow-control:none;--shadow-press:none;--radius-card:0;--radius-control:0;--border-width:1px;--cage-border-width:3px;--grid-line-width:1px;--clue-font:"Baloo 2", var(--font-sans)}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/baloo2-cage-700.woff2)format("woff2")}.App{text-align:center;box-sizing:border-box;min-height:100vh;font-family:var(--font-sans);color:var(--ink);flex-direction:column;align-items:center;gap:8px;padding:16px 16px 32px;font-size:1rem;line-height:1.5;display:flex}.Title{letter-spacing:-.04em;color:var(--page-ink);margin:0;padding-top:8px;font-size:clamp(1.75rem,5vw,2.5rem);font-weight:800;line-height:1.1}.ModePanel{flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.App>p:last-child{margin:8px 0 0}.App a{min-height:44px;color:var(--page-accent);text-underline-offset:4px;border-radius:0;align-items:center;padding:0 8px;font-weight:600;text-decoration:underline;text-decoration-thickness:2px;display:inline-flex}.App a:hover{text-decoration-thickness:3px}.App a:focus-visible{outline:3px solid var(--page-accent);outline-offset:2px}.ModePanel>ul{box-sizing:border-box;text-align:left;width:min(92vw,520px);font-family:var(--font-mono);color:var(--ink-soft);background:var(--surface);border:var(--border-width) solid var(--cage-border);box-shadow:var(--shadow-card);overflow-wrap:anywhere;border-radius:0;margin:8px 0 0;padding:12px 16px 12px 32px;font-size:.75rem;line-height:1.6}[data-theme=editorial] .ModeToggleButton,[data-theme=editorial] .PlayButton,[data-theme=editorial] .ButtonWrapper .btn,[data-theme=editorial] .ModalButtons .btn,[data-theme=editorial] .ScanButtonButton,[data-theme=editorial] .Close{border:0;border-bottom:2px solid var(--cage-border);box-shadow:none;letter-spacing:.12em;text-transform:uppercase;border-radius:0;font-weight:700}[data-theme=editorial] .Title,[data-theme=editorial] .PlayCardTitle,[data-theme=editorial] .PlayWonTitle{letter-spacing:-.05em}.Cell{box-sizing:border-box;--cage-label-size:clamp(.625rem, calc(var(--cell-size) * .3), 1.25rem);border:0 solid var(--grid-line);border-right-width:var(--grid-line-width);border-bottom-width:var(--grid-line-width);background-color:var(--surface);width:100%;min-width:0;height:100%;min-height:0;color:var(--constraint-ink);white-space:nowrap;letter-spacing:-.01em;font-variant-numeric:tabular-nums;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-khtml-user-select:none;touch-action:none;justify-content:flex-start;align-items:flex-start;margin:0;padding:2px 4px;font-size:clamp(.6rem,2.2vw,.8rem);font-weight:600;line-height:1.1;transition:background-color 80ms;display:flex;overflow:hidden}.CellLabel{font-family:var(--clue-font);font-weight:700;font-size:var(--cage-label-size);letter-spacing:0;line-height:1.1}.isGreyedOut{background-color:var(--cage-fill)}.Cell.isSelected{background-color:var(--accent-soft);color:var(--selected-ink);box-shadow:inset 0 0 0 3px var(--accent)}.borderLeft{border-left-width:0}.borderTop{border-top-width:0}.borderRight{border-right:var(--cage-border-width) solid var(--cage-border)!important}.borderBottom{border-bottom:var(--cage-border-width) solid var(--cage-border)!important}.App[data-solve-state="3"] .Cell{font-size:clamp(1rem, calc(var(--cell-size) * .5), 2.25rem);color:var(--ink);justify-content:center;align-items:center;padding:0;animation:.24s ease-out both CellAnswerIn}.App[data-solve-state="3"] .Cell.isSelected{color:var(--selected-ink)}.App[data-solve-state="3"] .CellLabel{font-family:inherit;font-weight:600;font-size:inherit;letter-spacing:-.01em;font-variant-numeric:tabular-nums}@keyframes CellAnswerIn{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.Cell{transition:none}.App[data-solve-state="3"] .Cell{animation:none}}.BoardContainer{--board-width:min(92vw, 520px);--cell-size:calc(var(--board-width) / var(--board-size,5));box-sizing:border-box;width:var(--board-width);aspect-ratio:1;text-align:center;background:var(--surface);border:var(--cage-border-width) solid var(--cage-border);box-shadow:var(--shadow-card);border-radius:0;align-items:center;margin-block:8px 4px;margin-inline:auto;position:relative;overflow:hidden}.BoardContainer:after{content:"";border:var(--cage-border-width) solid var(--cage-border);pointer-events:none;transition:opacity .2s;position:absolute;inset:0}.BoardContainer>div{position:absolute;top:0;left:0}.Board{box-sizing:border-box;text-align:center;border-top:var(--cage-border-width) solid var(--cage-border);border-left:var(--cage-border-width) solid var(--cage-border);grid-auto-rows:minmax(0,1fr);width:100%;height:100%;transition:opacity .2s;display:grid;overflow:hidden}.App[data-solve-state="2"] .Board,.App[data-solve-state="2"] .BoardContainer:after{opacity:.45}.BoardSlider{text-align:center;display:grid}.ModePanel>div>p:has(>input[type=range]){box-sizing:border-box;background-color:var(--surface);border:var(--border-width) solid var(--cage-border);max-width:min(92vw,520px);min-height:52px;box-shadow:var(--shadow-control);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:0;align-items:center;gap:12px;margin:8px 0 0;padding:6px 18px 6px 16px;font-size:.95rem;font-weight:700;display:inline-flex}.App input[type=range]{appearance:none;cursor:pointer;width:clamp(140px,40vw,220px);height:44px;accent-color:var(--accent);background:0 0;margin:0;padding:0}.App input[type=range]:focus{outline:none}.App input[type=range]::-webkit-slider-runnable-track{background:var(--cage-border);border-radius:0;height:6px}.App input[type=range]::-webkit-slider-thumb{appearance:none;box-sizing:border-box;border:var(--border-width) solid var(--cage-border);background:var(--accent);width:28px;height:28px;box-shadow:var(--shadow-press);border-radius:0;margin-top:-11px}.App input[type=range]:focus-visible::-webkit-slider-thumb{outline:3px solid var(--accent);outline-offset:2px}.App input[type=range]::-moz-range-track{background:var(--cage-border);border-radius:0;height:6px}.App input[type=range]::-moz-range-progress{background:var(--accent-soft);border-radius:0;height:6px}.App input[type=range]::-moz-range-thumb{box-sizing:border-box;border:var(--border-width) solid var(--cage-border);background:var(--accent);width:28px;height:28px;box-shadow:var(--shadow-press);border-radius:0}.App input[type=range]:focus-visible::-moz-range-thumb{outline:3px solid var(--accent);outline-offset:2px}.ButtonWrapper .btn.btn--blue{color:var(--ink);background-color:var(--surface);box-shadow:var(--shadow-control)}.ButtonWrapper .btn.btn--blue:hover{background-color:var(--cage-fill)}.ButtonWrapper .btn.btn--blue:active{box-shadow:var(--shadow-press)}@keyframes rl-spinner{0%{opacity:1}to{opacity:0}}.rl-spinner{-webkit-transform:translate(calc(var(--rl-spinner-translate) * -1), calc(var(--rl-spinner-translate) * -1)) scale(var(--rl-spinner-scale)) translate(var(--rl-spinner-translate), var(--rl-spinner-translate));transform:translate(calc(var(--rl-spinner-translate) * -1), calc(var(--rl-spinner-translate) * -1)) scale(var(--rl-spinner-scale)) translate(var(--rl-spinner-translate), var(--rl-spinner-translate));display:inline-block;position:relative;width:var(--rl-spinner-size)!important;height:var(--rl-spinner-size)!important}.rl-spinner div{-webkit-animation:rl-spinner linear var(--rl-spinner-speed) infinite;animation:rl-spinner linear var(--rl-spinner-speed) infinite;background:var(--rl-spinner-color);transform-origin:6px 52px;border-radius:40%;width:12px;height:24px;position:absolute;top:48px;left:94px}.rl-spinner div:first-child{animation-delay:-.916667s;transform:rotate(0)}.rl-spinner div:nth-child(2){animation-delay:-.833333s;transform:rotate(30deg)}.rl-spinner div:nth-child(3){animation-delay:-.75s;transform:rotate(60deg)}.rl-spinner div:nth-child(4){animation-delay:-.666667s;transform:rotate(90deg)}.rl-spinner div:nth-child(5){animation-delay:-.583333s;transform:rotate(120deg)}.rl-spinner div:nth-child(6){animation-delay:-.5s;transform:rotate(150deg)}.rl-spinner div:nth-child(7){animation-delay:-.416667s;transform:rotate(180deg)}.rl-spinner div:nth-child(8){animation-delay:-.333333s;transform:rotate(210deg)}.rl-spinner div:nth-child(9){animation-delay:-.25s;transform:rotate(240deg)}.rl-spinner div:nth-child(10){animation-delay:-.166667s;transform:rotate(270deg)}.rl-spinner div:nth-child(11){animation-delay:-.0833333s;transform:rotate(300deg)}.rl-spinner div:nth-child(12){animation-delay:0s;transform:rotate(330deg)}.LoadingSpinner{z-index:10;color:var(--accent);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.Modal{z-index:20;box-sizing:border-box;background-color:#0f172a8c;width:100%;height:100%;padding:20px;display:none;position:fixed;top:0;left:0;overflow:auto}.ModalOn{justify-content:center;align-items:center;display:flex!important}.ModalContent{box-sizing:border-box;background-color:var(--surface);width:100%;max-width:360px;color:var(--ink);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);font-family:var(--font-sans);margin:auto;padding:64px 24px 24px;animation:.16s ease-out both ModalIn;position:relative}@keyframes ModalIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.ModalInput{box-sizing:border-box;font-variant-numeric:tabular-nums;text-align:center;width:100%;min-height:56px;color:var(--ink);background-color:var(--surface);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-control);outline:none;padding:8px 12px;font-family:inherit;font-size:clamp(1.5rem,6vw,2rem);font-weight:600}.ModalInput:focus{outline:3px solid var(--accent);outline-offset:2px}.ModalButtons{grid-template-columns:repeat(5,minmax(0,1fr));justify-items:center;gap:8px;margin-top:16px;display:grid}.ModalButtons .btn{box-sizing:border-box;letter-spacing:0;width:100%;min-width:0;max-width:56px;height:52px;text-shadow:none;color:var(--ink);background-color:var(--surface);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-control);box-shadow:var(--shadow-control);margin:0;padding:0;font-family:inherit;font-size:1.5rem;font-weight:700;line-height:1;transition:background-color 80ms,box-shadow 80ms,transform 80ms}.ModalButtons .btn:hover{background-color:var(--cage-fill)}.ModalButtons .btn:active{color:var(--selected-ink);background-color:var(--accent-soft);box-shadow:var(--shadow-press);margin:0;padding:0;transform:translate(2px,2px)}.ModalButtons .btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.Close{box-sizing:border-box;border:var(--border-width) solid var(--cage-border);background:var(--surface);width:44px;height:44px;box-shadow:var(--shadow-control);color:var(--ink);cursor:pointer;border-radius:0;justify-content:center;align-items:center;margin:0;padding:0;font-family:inherit;font-size:28px;font-weight:700;line-height:1;transition:background-color 80ms,box-shadow 80ms,transform 80ms;display:flex;position:absolute;top:8px;right:10px}.Close:hover,.Close:focus{color:var(--ink);background-color:var(--cage-fill);cursor:pointer;text-decoration:none}.Close:active{box-shadow:var(--shadow-press);transform:translate(2px,2px)}.Close:focus-visible{outline:3px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.ModalContent{animation:none}}.ButtonWrapper{margin:16px 0 0}.ButtonWrapper .btn{box-sizing:border-box;min-width:160px;min-height:48px;font-family:var(--font-sans);letter-spacing:0;text-shadow:none;border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-control);box-shadow:var(--shadow-control);padding:10px 32px;font-size:1.125rem;font-weight:700;line-height:1.5;transition:background-color 80ms,box-shadow 80ms,transform 80ms}.ButtonWrapper .btn:active{box-shadow:var(--shadow-press);margin-top:0;padding-bottom:10px;transform:translate(2px,2px)}.ButtonWrapper .btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.ButtonWrapper .btn.btn--green{color:var(--accent-ink);background-color:var(--accent)}.ButtonWrapper .btn.btn--green:hover{background-color:color-mix(in srgb, var(--accent) 88%, var(--ink))}.ButtonWrapper.ButtonWrapperDisabled .btn,.ButtonWrapper.ButtonWrapperDisabled .btn:hover,.ButtonWrapper.ButtonWrapperDisabled .btn:active{color:var(--ink-soft);background-color:var(--hairline);border-color:var(--ink-soft);box-shadow:none;cursor:not-allowed;transform:none}@media (prefers-reduced-motion:reduce){.ButtonWrapper .btn{transition:none}}.btn{border:var(--border-width) solid var(--cage-border);box-shadow:var(--shadow-control);color:var(--ink);cursor:pointer;font-family:var(--font-sans);letter-spacing:1px;text-shadow:none;vertical-align:middle;-webkit-user-select:none;user-select:none;border-radius:0;padding:.5em 1.5em .75em;font-weight:700;line-height:1.5;text-decoration:none;display:inline-block;position:relative}.btn:active{box-shadow:var(--shadow-press);transform:translate(2px,2px)}.btn:active,.btn:focus{outline:none}.btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn--blue{color:var(--neutral-ink);background-color:var(--neutral-bg)}.btn--green{color:var(--success-ink);background-color:var(--success-bg)}.btn--red{color:var(--failure-ink);background-color:var(--failure-bg)}.btn--lg{font-size:1.5em}.btn--df{font-size:1.25em}.btn--md{font-size:1em}.btn--sm{font-size:.75em}.TooltipContainer{z-index:10;color:var(--neutral-ink);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.Tooltip{border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-card);max-width:calc(100% - 48px);box-shadow:var(--shadow-card);color:var(--neutral-ink);margin:24px;padding:12px 20px;font-size:1.05rem;font-weight:700;line-height:1.35}.Tooltip p{margin:0}.App[data-solve-state="1"] .Tooltip{color:var(--neutral-ink);background-color:var(--neutral-bg)!important}.App[data-solve-state="3"] .Tooltip{color:var(--success-ink);background-color:var(--success-bg)!important}.App[data-solve-state="4"] .Tooltip{color:var(--failure-ink);background-color:var(--failure-bg)!important}.Tooltip-enter{opacity:0}.Tooltip-enter-active{opacity:1;transition:opacity .2s}.Tooltip-exit{opacity:1}.Tooltip-exit-active{opacity:0;transition:opacity .2s}.Tooltip-exit-done{display:none}@media (prefers-reduced-motion:reduce){.Tooltip-enter-active,.Tooltip-exit-active{transition:none}}.PlayCell{--cage-label-size:clamp(.625rem, calc(var(--cell-size) * .3), 1.25rem);box-sizing:border-box;border:0 solid var(--grid-line);border-right-width:var(--grid-line-width);border-bottom-width:var(--grid-line-width);background-color:var(--surface);width:100%;min-width:0;height:100%;min-height:0;color:var(--accent);cursor:pointer;font-variant-numeric:tabular-nums;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;transition:background-color 80ms;display:flex;position:relative}.PlayCell.borderLeft{border-left-width:0}.PlayCell.borderTop{border-top-width:0}.PlayCell.borderRight{border-right:var(--cage-border-width) solid var(--cage-border)}.PlayCell.borderBottom{border-bottom:var(--cage-border-width) solid var(--cage-border)}.PlayCell.isFocused,.PlayCell:focus-visible{outline:3px solid var(--accent);outline-offset:-3px;color:var(--selected-ink);background-color:var(--accent-soft)}.PlayCellLabel{font-family:var(--clue-font);font-size:var(--cage-label-size);letter-spacing:0;white-space:nowrap;color:var(--constraint-ink);pointer-events:none;font-weight:700;line-height:1.05;position:absolute;top:1px;left:3px}.PlayCellValue{font-size:clamp(1rem, calc(var(--cell-size) * .5), 2.25rem);font-weight:600;line-height:1}.PlayCell.isLocked{color:var(--ink);background-color:var(--cage-fill);cursor:default}.PlayCellPencils{box-sizing:border-box;width:100%;height:100%;padding:calc(var(--cage-label-size) * 1.05 + 2px) 3px 2px;font-size:clamp(.5rem, calc(var(--cell-size) * .17), .75rem);color:var(--ink-soft);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);place-items:center;font-weight:500;line-height:1;display:grid}.PlayCell.isWrong{color:var(--failure-ink);background-color:var(--failure-bg);animation:.42s ease-out PlayCellWrongA}.PlayBoard[data-check-round="1"] .PlayCell.isWrong{animation-name:PlayCellWrongB}.PlayCell.isFocused .PlayCellLabel,.PlayCell:focus-visible .PlayCellLabel,.PlayCell.isWrong .PlayCellLabel,.PlayCell.isFocused .PlayCellPencils,.PlayCell:focus-visible .PlayCellPencils,.PlayCell.isWrong .PlayCellPencils{color:inherit}@keyframes PlayCellWrongA{0%,to{transform:none}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}@keyframes PlayCellWrongB{0%,to{transform:none}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}@media (prefers-reduced-motion:reduce){.PlayCell{transition:none}.PlayCell.isWrong,.PlayBoard[data-check-round="1"] .PlayCell.isWrong{animation:none}}.PlayBoard{--board-width:min(92vw, 520px);--cell-size:calc(var(--board-width) / var(--board-size,5));box-sizing:border-box;width:var(--board-width);aspect-ratio:1;background:var(--surface);border:var(--cage-border-width) solid var(--cage-border);box-shadow:var(--shadow-card);border-radius:0;margin-block:8px 4px;margin-inline:auto;position:relative;overflow:hidden}.PlayBoard:after{content:"";border:var(--cage-border-width) solid var(--cage-border);pointer-events:none;position:absolute;inset:0}.PlayBoardGrid{box-sizing:border-box;border-top:var(--cage-border-width) solid var(--cage-border);border-left:var(--cage-border-width) solid var(--cage-border);grid-auto-rows:minmax(0,1fr);width:100%;height:100%;display:grid}.PlayBoardRow{display:contents}.PlayBoard[data-pencil-mode=true]:after{border-color:var(--accent)}.PlayApp[data-play-state="3"] .PlayBoard{border-color:var(--success-bg)}.ModeToggle{background:var(--surface);border:var(--border-width) solid var(--cage-border);box-shadow:var(--shadow-control);border-radius:0;gap:4px;margin:8px 0 0;padding:4px;display:inline-flex}.ModeToggleButton{min-width:96px;min-height:40px;font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);border:var(--border-width) solid transparent;cursor:pointer;background:0 0;border-radius:0;padding:0 18px;font-size:.95rem;font-weight:700}.ModeToggleButton[aria-selected=true]{color:var(--accent-ink);background:var(--accent);border-color:var(--cage-border)}.ModeToggleButton:active{transform:translate(2px,2px)}.ModeToggleButton:focus-visible{outline:3px solid var(--accent);outline-offset:2px}@media (width<=420px){.ModeToggle{gap:2px}.ModeToggleButton{letter-spacing:.06em;white-space:nowrap;min-width:0;padding:0 12px;font-size:.85rem}}.PlayApp{box-sizing:border-box;flex-direction:column;align-items:center;gap:8px;width:min(92vw,520px);display:flex}.PlayChoose{gap:12px;width:100%;margin-top:8px;display:grid}.PlayCard{box-sizing:border-box;text-align:left;background:var(--surface);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:16px 20px 20px}.PlayCardTitle{letter-spacing:-.04em;margin:0;font-size:1.25rem;font-weight:800}.PlayCardMeta{text-transform:uppercase;letter-spacing:.08em;font-variant-numeric:tabular-nums;color:var(--ink-soft);margin:2px 0 0}.PlayCardStatus{color:var(--neutral-ink);margin:8px 0 0;font-weight:600}.PlayCardActions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.PlaySize{flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px;display:flex}.PlaySizeLabel{text-transform:uppercase;letter-spacing:.08em;font-variant-numeric:tabular-nums;color:var(--ink-soft);font-weight:700}.PlayButton{box-sizing:border-box;min-height:44px;font-family:var(--font-sans);color:var(--ink);background:var(--surface);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-control);box-shadow:var(--shadow-control);cursor:pointer;padding:0 16px;font-size:1rem;font-weight:600;transition:background-color 80ms,box-shadow 80ms,transform 80ms}.PlayButton:hover{background:var(--cage-fill)}.PlayButton:active{box-shadow:var(--shadow-press);transform:translate(2px,2px)}.PlayButton:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.PlayButtonPrimary{color:var(--accent-ink);background:var(--accent)}.PlayButtonPrimary:hover{background:color-mix(in srgb, var(--accent) 88%, var(--ink))}.PlayButtonDanger{color:var(--failure-ink);background:var(--failure-bg)}.PlayButton[aria-pressed=true]{color:var(--accent-ink);background:var(--accent)}.PlayGame{flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.PlayHeader{box-sizing:border-box;font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:48px;margin-top:8px;padding:0 4px;display:flex}.PlayHeaderTitle,.PlayHintCount{text-transform:uppercase;letter-spacing:.08em;color:var(--page-ink-soft);font-weight:700}.PlayTimer{font-family:var(--font-mono);color:var(--page-ink);font-size:1.5rem;font-weight:700}.PlayWonPanel{box-sizing:border-box;text-align:center;width:100%;color:var(--success-ink);background:var(--success-bg);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);flex-direction:column;align-items:center;gap:6px;margin-top:8px;padding:16px 20px;display:flex;position:relative;overflow:hidden}.PlayWonTitle{letter-spacing:-.04em;font-size:2.5rem;font-weight:800;line-height:1.1}.PlayWonMeta{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:600}.PlayWonPanel.isCelebrating{animation:.35s cubic-bezier(.2,.9,.3,1.2) both play-won-in}@keyframes play-won-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.PlayConfetti{pointer-events:none;position:absolute;inset:0}.PlayConfetti>span{--spread:calc((var(--i) - 3.5) * 34px);background:var(--success-ink);opacity:0;width:8px;height:8px;animation:play-confetti .9s ease-out calc(var(--i) * 25ms) 1 both;border-radius:0;position:absolute;top:6px;left:50%}.PlayConfetti>span:nth-child(odd){background:var(--accent)}@keyframes play-confetti{0%{opacity:1;transform:translate(-50%)rotate(0)}to{opacity:0;transform:translate(calc(-50% + var(--spread)), 72px) rotate(200deg)}}.PlayBoardFrame{width:100%}.PlayBoardFrame.isCelebrating>.PlayBoard{animation:.7s ease-out play-board-pulse}@keyframes play-board-pulse{0%{box-shadow:var(--shadow-card), 0 0 0 0 var(--success-bg)}40%{box-shadow:var(--shadow-card), 0 0 0 8px var(--success-bg)}to{box-shadow:var(--shadow-card), 0 0 0 0 transparent}}.PlayWonActions{margin-top:8px}.PlayControls{flex-direction:column;gap:8px;width:100%;display:flex}.PlayNumpad{grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:6px;display:grid}.PlayNumpadKey{font-variant-numeric:tabular-nums;min-height:52px;padding:0;font-size:1.375rem}.PlayTools{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.PlayConfirm{color:var(--page-ink);align-items:center;gap:6px;padding-left:8px;font-weight:600;display:inline-flex}.PlayStatus{text-transform:uppercase;letter-spacing:.08em;min-height:1.5em;color:var(--page-ink-soft);margin:4px 0 0;font-weight:700}@media (prefers-reduced-motion:reduce){.PlayButton{transition:none}.PlayButton:active{transform:none}.PlayWonPanel.isCelebrating,.PlayBoardFrame.isCelebrating>.PlayBoard{animation:none}.PlayConfetti{display:none}}.ScanButton{margin:16px 0 0}.ScanButtonButton{box-sizing:border-box;min-height:44px;font-family:var(--font-sans);color:var(--ink);background-color:var(--accent-soft);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-control);box-shadow:var(--shadow-control);cursor:pointer;padding:8px 24px;font-size:1rem;font-weight:700;transition:box-shadow 80ms,transform 80ms}.ScanButtonButton:active{box-shadow:var(--shadow-press);transform:translate(2px,2px)}.ScanButtonButton:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.ScanButtonButton:disabled{color:var(--ink-soft);background-color:var(--hairline);box-shadow:none;cursor:progress;transform:none}.ScanButton .visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ScanButtonError{color:var(--failure-ink);background-color:var(--failure-bg);border:var(--border-width) solid var(--cage-border);margin:12px 0 0;padding:8px 12px;display:inline-block}.ScanButtonPreview{max-width:240px;margin:12px auto 0}.ScanButtonPreview img{border:var(--border-width) solid var(--cage-border);max-width:100%;height:auto;box-shadow:var(--shadow-card);display:block}.ScanButtonPreview figcaption{font-family:var(--font-mono);color:var(--ink-soft);margin-top:8px;font-size:.875rem}@media (prefers-reduced-motion:reduce){.ScanButtonButton{transition:none}}.ScanPanel{margin:16px 0 0}.ScanPanelStatus,.ScanPanelSummary{color:var(--ink);margin:12px 0 0}.ScanPanelNumber{font-family:var(--font-mono);font-weight:700}.ScanPanelErrors{text-align:left;color:var(--failure-ink);background-color:var(--failure-bg);border:var(--border-width) solid var(--cage-border);margin:12px 0 0;padding:8px 12px 8px 32px;display:inline-block}.ScanPanelActions{flex-wrap:wrap;justify-content:center;gap:12px;margin:12px 0 0;display:flex}.ScanPanelButton{box-sizing:border-box;min-height:44px;font-family:var(--font-sans);color:var(--ink);background-color:var(--accent-soft);border:var(--border-width) solid var(--cage-border);border-radius:var(--radius-control);box-shadow:var(--shadow-control);cursor:pointer;padding:8px 24px;font-size:1rem;font-weight:700;transition:box-shadow 80ms,transform 80ms}.ScanPanelButton:active{box-shadow:var(--shadow-press);transform:translate(2px,2px)}.ScanPanelButton:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.ScanPanelButton:disabled{color:var(--ink-soft);background-color:var(--hairline);box-shadow:none;cursor:not-allowed;transform:none}@media (prefers-reduced-motion:reduce){.ScanPanelButton{transition:none}}.LabelPanel{margin:16px 0 0}.LabelPanel .visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.LabelPanelPrompt{color:var(--ink);margin:12px 0 0;font-weight:700}.LabelPanelImageWrap{border:var(--border-width) solid var(--cage-border);max-width:100%;margin:12px auto 0;line-height:0;display:inline-block;position:relative}.LabelPanelImage{cursor:crosshair;max-width:100%;height:auto;display:block}.LabelPanelMarker{width:22px;height:22px;font-family:var(--font-mono);text-align:center;color:var(--ink);background-color:var(--brut-cyan);border:2px solid var(--cage-border);pointer-events:none;border-radius:50%;margin:-11px 0 0 -11px;font-size:.75rem;font-weight:700;line-height:22px;position:absolute}.LabelPanelActions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin:12px 0 0;display:flex}.LabelPanelField{color:var(--ink)}.BoardExport{margin:16px 0 0}.BoardExportActions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.BoardExportField{color:var(--ink)}.BoardExportReason{color:var(--ink-soft);margin:8px 0 0}
