:root{--bg:#fff7e7;--paper:#fffdf5;--panel:#ffeec3;--ink:#3f3a34;--muted:#8b806d;--line:#d8c59d;--mint:#8abf93;--blue:#80bdd8;--coral:#e98575;--yellow:#f2ca62;--cell:#fffaf0;--given:#e8dfcc;--shadow:#ccb995}
[data-theme="dark"]{--bg:#172735;--paper:#203747;--panel:#2d4650;--ink:#fff0c9;--muted:#b1b6a7;--line:#566f73;--mint:#8fd2a4;--blue:#80c7df;--coral:#ed927e;--yellow:#f2ce68;--cell:#243b45;--given:#334d55;--shadow:#0a151d}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:12px ui-rounded,"SF Pro Rounded","Arial Rounded MT Bold",system-ui,sans-serif}body{display:flex;justify-content:center}.page{width:min(760px,100%);padding:14px 14px max(22px,env(safe-area-inset-bottom))}button,a,select{-webkit-tap-highlight-color:transparent}header{min-height:60px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;border-bottom:2px dashed var(--line);margin-bottom:12px}header h1{margin:0;font-size:clamp(18px,4vw,27px);font-weight:950;letter-spacing:.08em;white-space:nowrap;text-align:center;transform:rotate(-1deg)}header a,header button{min-height:44px;border:0;background:none;color:var(--muted);font:900 9px inherit;letter-spacing:.08em;text-decoration:none;cursor:pointer}.brand{text-align:center;min-width:0}.brand span{display:block;margin-top:5px;color:var(--muted);font-size:7px;font-weight:900;letter-spacing:.07em;white-space:nowrap}.toolbar{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:6px;margin-bottom:10px}.toolbar>*{border:2px solid var(--ink);border-radius:11px 8px 13px 9px;background:var(--panel);padding:8px;display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:8px;font-weight:900;letter-spacing:.07em;box-shadow:2px 3px var(--shadow)}.toolbar b{font-size:12px;color:var(--ink)}select{border:0;background:transparent;color:var(--ink);font:950 11px inherit;padding:0}.game-layout{display:flex;justify-content:center;align-items:flex-start;gap:15px}.board-wrap{position:relative;width:min(100%,486px);padding:8px;border:3px solid var(--ink);border-radius:21px 16px 24px 17px;background:var(--paper);box-shadow:7px 8px var(--shadow);transform:rotate(-.1deg)}.bento-lid{height:22px;margin:0 5px 6px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:7px;font-weight:950;letter-spacing:.12em}.bento-lid i{display:block;width:44px;height:5px;border-radius:10px;background:var(--coral)}.board{display:grid;grid-template-columns:repeat(9,1fr);background:var(--line);border:2px solid var(--line);touch-action:manipulation;user-select:none;-webkit-user-select:none}.cell{position:relative;aspect-ratio:1;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--cell);color:var(--mint);font:950 clamp(18px,5vw,29px) inherit;display:grid;place-items:center;padding:0;cursor:pointer;touch-action:manipulation}.cell:nth-child(3n){border-right:2px solid var(--ink)}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--ink)}.cell.given{color:var(--ink);background:var(--given)}.cell.peer{background:color-mix(in srgb,var(--blue) 18%,var(--cell))}.cell.same{background:color-mix(in srgb,var(--yellow) 42%,var(--cell))}.cell.selected{outline:3px solid var(--coral);outline-offset:-3px;background:color-mix(in srgb,var(--yellow) 55%,var(--cell))}.cell.error{animation:shake .35s ease;background:var(--coral);color:#fffdf5}.notes{display:grid;grid-template-columns:repeat(3,1fr);width:80%;height:80%;font-size:clamp(7px,1.8vw,11px);line-height:1;color:var(--muted)}.notes span{display:grid;place-items:center}.overlay{position:absolute;inset:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:color-mix(in srgb,var(--paper) 94%,transparent);text-align:center}.overlay.hide{display:none}.bento-mark{color:var(--coral);font-size:44px;line-height:1;transform:rotate(12deg)}.overlay b{font-size:clamp(24px,6vw,38px);font-weight:950;letter-spacing:.06em}.overlay span{color:var(--muted);font-size:9px;font-weight:900;letter-spacing:.07em}.overlay button,.actions button{min-height:46px;padding:11px 17px;border:2px solid var(--ink);border-radius:13px 10px 15px 11px;background:var(--yellow);color:var(--ink);box-shadow:3px 4px var(--ink);font:950 10px inherit;letter-spacing:.08em;cursor:pointer}.overlay button:hover,.actions button:hover{background:var(--mint)}aside{width:165px;display:flex;flex-direction:column;gap:9px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.actions button{min-height:62px;padding:7px;background:var(--panel);font-size:19px}.actions span{display:block;margin-top:3px;color:var(--muted);font-size:7px}.actions button.active{background:var(--coral);color:#fffdf5}.bento-note{padding:12px;border:2px dashed var(--line);border-radius:13px 10px 15px 11px;background:var(--panel);transform:rotate(1deg)}.bento-note b{color:var(--coral);font-size:10px;letter-spacing:.08em}.bento-note p{margin:7px 0 0;color:var(--muted);font-size:9px;font-weight:800;line-height:1.7}.number-pad{display:grid;grid-template-columns:repeat(9,1fr);gap:6px;width:min(100%,486px);margin:11px auto 0}.number-pad button{min-height:46px;border:2px solid var(--ink);border-radius:11px 8px 13px 9px;background:var(--panel);color:var(--ink);box-shadow:2px 3px var(--shadow);font:950 16px inherit;cursor:pointer;touch-action:manipulation}.number-pad button:hover,.number-pad button:focus-visible{background:var(--yellow);outline:none}footer{margin-top:12px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.07em;line-height:1.5;text-align:center}@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}@media(max-width:620px){.page{padding:10px 10px max(18px,env(safe-area-inset-bottom))}header{min-height:52px;gap:6px}.brand h1{font-size:16px}.brand span{display:none}.toolbar{grid-template-columns:repeat(2,1fr);gap:5px}.game-layout{flex-direction:column;gap:9px}.board-wrap{width:100%;padding:5px;border-width:2px;border-radius:18px 14px 21px 15px;box-shadow:5px 6px var(--shadow)}.overlay{inset:5px}.cell{border-radius:2px}.number-pad{gap:4px;margin-top:8px}.number-pad button{min-height:44px;font-size:15px}aside{width:100%}.actions{grid-template-columns:repeat(4,1fr)}.actions button{min-height:50px;padding:5px}.bento-note{display:none}footer{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
