@font-face{font-family:Inter;src:url(/fonts/Inter-variable.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Playfair Display;src:url(/fonts/PlayfairDisplay-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none}:root{--bg:#f7f5f0;--surface:#fff;--text:#1a1a1a;--text-muted:#6b6b6b;--text-given:#1a1a1a;--text-entry:#1a4fa8;--text-note:#5a7abf;--border-cell:#c8c4bc;--border-box:#3a3530;--sel-bg:#fde9a0;--region-bg:#f0ede4;--match-bg:#fde9a0;--conflict-bg:#fcd5d5;--given-bg:#f7f5f0;--accent:#1a4fa8;--accent-light:#e8eef8;--notes-active:#d4e3ff;--btn-bg:#fff;--btn-border:#c8c4bc;--btn-hover:#f0ede4;--overlay-bg:#1e19148c;--font-digits:"Inter", system-ui, sans-serif;--font-display:"Playfair Display", Georgia, serif;--font-ui:"Inter", system-ui, sans-serif;--radius:6px}#root{flex-direction:column;min-height:100svh;display:flex}.app{background:var(--bg);flex-direction:column;min-height:100svh;display:flex}.app__header{border-bottom:2px solid var(--border-box);background:var(--surface);flex-wrap:wrap;align-items:center;gap:24px;padding:18px 32px 14px;display:flex}.app__title{font:700 28px/1 var(--font-display);letter-spacing:.06em;color:var(--text);text-transform:uppercase;flex-shrink:0}.puzzle-selector{position:relative}.puzzle-selector__tabs{gap:6px;display:flex}.puzzle-tab{font-family:var(--font-ui);letter-spacing:.04em;text-align:center;border-radius:var(--radius);border:1.5px solid var(--border-box);width:72px;color:var(--text);-webkit-tap-highlight-color:transparent;background:0 0;padding:7px 0;font-size:13px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.puzzle-tab:hover{background:var(--region-bg)}.puzzle-tab:focus,.puzzle-tab:focus-within{background:0 0;outline:none}.puzzle-tab--active,.puzzle-tab--active:focus,.puzzle-tab--active:focus-within{background:var(--border-box);border-color:var(--border-box);color:#fff}.puzzle-tab:focus-visible,.restart-btn:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px}.restart-btn{font-family:var(--font-ui);border-radius:var(--radius);border:1.5px solid var(--btn-border);color:var(--text-muted);-webkit-tap-highlight-color:transparent;background:0 0;padding:7px 14px;font-size:13px;font-weight:500;transition:background .15s,color .15s}.restart-btn:focus,.restart-btn:focus-within{background:0 0;outline:none}.restart-btn:hover{background:var(--conflict-bg);color:#c0392b;border-color:#c0392b}.confirm-overlay{background:var(--overlay-bg);z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-box{background:var(--surface);border-radius:var(--radius);text-align:center;width:90%;max-width:340px;padding:28px 32px;box-shadow:0 8px 32px #0000002e}.confirm-box p{font:var(--font-ui);color:var(--text);margin-bottom:20px}.confirm-box__actions{justify-content:center;gap:10px;display:flex}.confirm-btn{font:var(--font-ui);border-radius:var(--radius);border:1.5px solid var(--btn-border);background:var(--btn-bg);color:var(--text);padding:9px 22px;font-weight:600;transition:background .15s}.confirm-btn:hover{background:var(--btn-hover)}.confirm-btn--danger{color:#fff;background:#c0392b;border-color:#c0392b}.confirm-btn--danger:hover{background:#a93226}@keyframes game-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes board-reveal{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.game{flex-direction:row;flex:1;justify-content:center;align-items:flex-start;gap:40px;padding:32px;animation:.25s ease-out both game-enter;display:flex}.game__board{outline:none;flex-shrink:0;width:min(540px,92vw)}.game__controls{flex-direction:column;gap:24px;padding-top:4px;display:flex}.board{aspect-ratio:1;border:2.5px solid var(--border-box);background:var(--border-box);border-radius:3px;grid-template-columns:repeat(9,1fr);gap:0;width:100%;animation:.2s ease-out both board-reveal;display:grid;overflow:hidden}.cell{aspect-ratio:1;background:var(--surface);cursor:pointer;border:0;border-right:1px solid var(--border-cell);border-bottom:1px solid var(--border-cell);outline:none;justify-content:center;align-items:center;padding:0;transition:background .1s;display:flex;position:relative}.cell:nth-child(9n){border-right:none}.cell:nth-child(n+73){border-bottom:none}.cell--box-right{border-right:2px solid var(--border-box)}.cell--box-bottom{border-bottom:2px solid var(--border-box)}.cell--given{background:var(--given-bg)}.cell--region{background:var(--region-bg)}.cell--match{background:var(--match-bg)}.cell--conflict{background:var(--conflict-bg)}.cell--selected{z-index:1;background:var(--sel-bg)!important}.cell:hover:not(.cell--given){background:var(--btn-hover)}.cell:focus-visible{outline:2.5px solid var(--accent);outline-offset:-2px;z-index:2}.cell__value{font:600 clamp(14px, 3.8vw, 26px)/1 var(--font-digits);pointer-events:none;-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums}.cell--given .cell__value{color:var(--text-given)}.cell--entry .cell__value{color:var(--text-entry)}.cell--conflict .cell__value{color:#c0392b}.cell__notes{pointer-events:none;-webkit-user-select:none;user-select:none;grid-template-columns:repeat(3,1fr);width:90%;height:90%;display:grid}.note{font:500 clamp(7px, 1.4vw, 11px)/1 var(--font-digits);color:#0000;font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:flex}.note--on{color:var(--text-note)}.controls{flex-direction:column;gap:16px;display:flex}.numpad{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.numpad__btn{font:600 clamp(18px, 3vw, 26px)/1 var(--font-digits);color:var(--text-entry);background:var(--btn-bg);border:1.5px solid var(--btn-border);border-radius:var(--radius);aspect-ratio:1;font-variant-numeric:tabular-nums;justify-content:center;align-items:center;min-width:52px;min-height:52px;transition:background .12s,box-shadow .12s;display:flex}.numpad__btn:hover{background:var(--accent-light)}.numpad__btn:active{background:var(--notes-active)}.numpad__btn:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px}.actions{flex-direction:row;gap:8px;display:flex}.action-btn{background:var(--btn-bg);border:1.5px solid var(--btn-border);border-radius:var(--radius);color:var(--text-muted);flex-direction:column;flex:1;align-items:center;gap:4px;min-height:56px;padding:10px 8px;transition:background .12s,color .12s;display:flex}.action-btn:hover:not(:disabled){background:var(--btn-hover);color:var(--text)}.action-btn:disabled{opacity:.38;cursor:default}.action-btn--active{background:var(--notes-active);border-color:var(--accent);color:var(--accent)}.action-btn:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px}.action-btn__icon{font-size:20px;line-height:1}.action-btn__label{font:600 11px/1 var(--font-ui);text-transform:uppercase;letter-spacing:.06em}.completion-overlay{background:var(--overlay-bg);z-index:200;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.completion-box{background:var(--surface);border-radius:var(--radius);text-align:center;width:90%;max-width:360px;padding:40px 48px;box-shadow:0 12px 48px #00000038}.completion-box__icon{color:#27ae60;margin-bottom:12px;font-size:52px;line-height:1}.completion-box__heading{font:700 26px/1.2 var(--font-display);color:var(--text);margin-bottom:6px}.completion-box__sub{font:var(--font-ui);color:var(--text-muted);margin-bottom:28px}.completion-btn{font:var(--font-ui);background:var(--accent);color:#fff;border-radius:var(--radius);border:none;padding:11px 32px;font-weight:700;transition:background .15s}.completion-btn:hover{background:#163d85}.completion-btn:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px}@media (width<=720px){.game{flex-direction:column;align-items:center;gap:20px;padding:20px 16px 32px}.game__board,.game__controls{width:min(480px,96vw)}.controls{flex-direction:row;align-items:stretch;gap:12px}.numpad{flex-shrink:0;gap:5px;width:clamp(100px,26vw,130px)}.numpad__btn{min-width:unset;min-height:unset;aspect-ratio:1;width:100%;font-size:clamp(13px,4vw,19px)}.actions{flex-direction:column;flex:1;gap:6px}.action-btn{min-height:unset;flex-direction:row;flex:1;justify-content:center;gap:8px;padding:0 12px}.action-btn__icon{font-size:17px}.action-btn__label{font-size:12px}}.puzzle-selector{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.timer-bar{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:16px;display:flex}.board-cover{aspect-ratio:1;background:var(--surface);border:2.5px solid var(--border-box);border-radius:3px;justify-content:center;align-items:center;width:100%;display:flex}
