:root{color:#20242c;background:#f5f6f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility}html,body,#root{width:100%;height:100%;overflow:hidden}*{box-sizing:border-box}body{min-width:0;margin:0}button{font:inherit}.appShell{--board-bg: #1e2229;--board-line-thick: #1e2229;--board-line-thin: #cbd1dc;--cell-bg: #fbfcfd;--cell-border: #cbd1dc;--cell-hover: #eef7f5;--cage-line: #0f625c;--cage-label: #12625d;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;width:100%;height:100dvh;overflow:hidden;padding:12px;background:#f5f6f8;color:#20242c}.appShell[data-theme=dark]{--board-bg: #121212;--board-line-thick: #737373;--board-line-thin: #353535;--cell-bg: #121212;--cell-border: #353535;--cell-hover: #1d1d1d;--cage-line: #f7f7f2;--cage-label: #63d7d1;background:#101318;color:#e6ebf2}.topBar{display:flex;align-items:center;justify-content:space-between;gap:10px;width:min(1180px,100%);min-height:38px;margin:0 auto}.appTitle{min-width:0}.headerActions{display:flex;align-items:center;gap:8px}.headerButton{min-height:38px;padding:0 14px;border:1px solid #cbd1dc;border-radius:8px;background:#fff;color:#303640;cursor:pointer;font-weight:850}.headerButton:hover{border-color:#17736d;background:#edf8f6}.eyebrow{margin:0 0 2px;color:#6f5968;font-size:.78rem;font-weight:700;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;color:#171a20;font-size:1rem;line-height:1.1;letter-spacing:0;white-space:nowrap}h2{margin-bottom:10px;color:#23272f;font-size:1rem}.gameLayout{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,280px);gap:10px;align-items:stretch;width:min(1180px,100%);height:100%;min-height:0;margin:0 auto;overflow:hidden}.preGameLayout{display:grid;place-items:center;width:min(760px,100%);height:100%;min-height:0;margin:0 auto;overflow:hidden}.preGamePanel{display:grid;gap:14px;width:min(520px,100%);padding:24px;border:1px solid #d9dde5;border-radius:8px;background:#fff;box-shadow:0 16px 40px #1a1f281a}.preGamePanel h2{margin:0;font-size:1.45rem}.preGamePanel dl{margin-bottom:0}.loadingMark{width:34px;height:34px;border:3px solid #d8edea;border-top-color:#176f68;border-radius:999px;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.boardArea{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-width:0;min-height:0;overflow:hidden;padding:10px;border:1px solid #d9dde5;border-radius:8px;background:#fff;box-shadow:0 16px 40px #1a1f281a}.boardToolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;margin-bottom:0}.puzzleTitle{display:block;color:#252a33;font-weight:800}.difficulty{color:#8a5b1e;font-size:.86rem;font-weight:700;text-transform:capitalize}.modeSwitch{display:grid;grid-template-columns:repeat(2,1fr);overflow:hidden;min-width:154px;border:1px solid #cdd3dd;border-radius:8px}.modeSwitch button{min-height:38px;border:0;background:#f6f7f9;color:#3d434f;cursor:pointer;font-size:.9rem;font-weight:800}.modeSwitch button.active{background:#176f68;color:#fff}.modeSwitch button:disabled{color:#939ba8;cursor:not-allowed}.difficultyGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.difficultyGridLarge{grid-template-columns:repeat(2,minmax(0,1fr))}.difficultyGrid button{min-height:38px;border:1px solid #cbd1dc;border-radius:8px;background:#fff;color:#303640;cursor:pointer;font-weight:850;text-transform:capitalize}.difficultyGridLarge button{min-height:54px;font-size:1rem}.difficultyGrid button:hover,.difficultyGrid button.active{border-color:#17736d;background:#edf8f6;color:#12625d}.boardFrame{container:board-frame / size;display:grid;place-items:center;min-width:0;min-height:0;overflow:hidden}.sudokuBoard{position:relative;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr));width:min(100%,720px);height:auto;aspect-ratio:1;margin:0;border:3px solid var(--board-line-thick);background:var(--board-bg);touch-action:none;-webkit-user-select:none;user-select:none}@supports (width: 100cqw){.sudokuBoard{width:min(100cqw,100cqh,720px)}}.cursorLayer{position:absolute;inset:0;z-index:6;pointer-events:none}.remoteCursor{--player-color: #4b69d8;position:absolute;display:grid;gap:3px;transform:translate(2px,2px);transition:left 80ms linear,top 80ms linear;will-change:left,top}.remoteCursor:before{width:17px;height:22px;background:var(--player-color);clip-path:polygon(0 0,0 18px,5px 13px,8px 21px,12px 20px,9px 12px,16px 12px);filter:drop-shadow(0 2px 2px rgb(0 0 0 / 25%));content:""}.remoteCursor span{width:max-content;max-width:120px;padding:2px 6px;border-radius:6px;background:var(--player-color);color:#fff;font-size:.72rem;font-weight:850;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 4px 10px #0000002e}.cell{position:relative;display:grid;place-items:center;min-width:0;min-height:0;overflow:hidden;padding:0;border:0;background:var(--cell-bg);color:#21262f;cursor:pointer}.cageOverlay{position:absolute;inset:0;z-index:3;pointer-events:none}.gridOverlay{position:absolute;inset:0;z-index:5;pointer-events:none}.gridOverlay line{vector-effect:non-scaling-stroke}.gridOverlay .thin{stroke:var(--board-line-thin);stroke-width:1}.gridOverlay .thick{stroke:var(--board-line-thick);stroke-width:3}.cageOverlay path{fill:none;stroke:var(--cage-line);stroke-width:.032;stroke-dasharray:.15 .11;stroke-linecap:round;stroke-linejoin:round}.cell:hover{background:var(--cell-hover)}.cell.selected{z-index:2;background:#fff4cc;border-color:#fff4cc}.cell.peerSelected:after{position:absolute;right:4px;bottom:4px;width:8px;height:8px;border-radius:999px;background:var(--player-color, #4b69d8);content:""}.cell.conflict{background:#ffe8e4;color:#8d2218}.cell.cageConflict{background:#fff0df}.cageSvgLabels text{color:var(--cage-label);fill:currentColor;font-size:.19px;font-weight:900;letter-spacing:0;paint-order:stroke;stroke:transparent;stroke-width:0}.cellValue{font-size:clamp(1.2rem,5vw,2.4rem);font-weight:750;line-height:1}.notesGrid{display:grid;grid-template-columns:repeat(3,1fr);width:72%;height:68%;color:#65707d;font-size:clamp(.46rem,1.55vw,.74rem);font-weight:800;line-height:1}.notesGrid span{display:grid;place-items:center;min-width:0}.numberPad{display:grid;grid-template-columns:repeat(3,minmax(54px,1fr));gap:6px;width:100%;margin-top:0;margin-right:auto;margin-left:auto}.numberPad button,.resetButton{min-height:36px;border:1px solid #cbd1dc;border-radius:8px;background:#fff;color:#262b34;cursor:pointer;font-weight:850}.inputPanel .numberPad button,.inputPanel .numberPad .clearButton{min-height:28px}.inputActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:8px}.inputActions .resetButton{min-height:28px;font-size:.82rem}.numberPad button:hover,.resetButton:hover{border-color:#17736d;background:#edf8f6}.numberPad button:disabled,.resetButton:disabled{border-color:#d7dce4;background:#f0f2f5;color:#8f98a6;cursor:not-allowed}.numberPad .clearButton{grid-column:1 / -1;color:#8d2218}.sidePanel{display:grid;grid-template-rows:max-content max-content max-content max-content;gap:8px;min-height:0;align-content:start;overflow:hidden}.statusPanel{min-height:0;overflow:visible;padding:10px;border:1px solid #d9dde5;border-radius:8px;background:#fff;box-shadow:0 10px 24px #1a1f2814}.cagePanel,.selectionPanel{min-height:0}.playersPanel{align-self:start}.combinationBlock{margin-top:10px}.combinationBlock h3{margin:0 0 8px;color:#4b5360;font-size:.78rem;font-weight:900;text-transform:uppercase}.combinationList{display:flex;flex-wrap:wrap;gap:5px}.combinationList span{padding:4px 7px;border:1px solid #cdd8e6;border-radius:6px;background:#f7fbff;color:#26313f;font-size:.82rem;font-weight:850}dl{display:grid;gap:4px;margin:0 0 8px}dl div{display:flex;justify-content:space-between;gap:12px}dt{color:#737985;font-weight:700}dd{margin:0;font-weight:850}.resetButton{width:100%}.cageDetails{display:grid;grid-template-columns:56px 1fr;gap:4px 12px;align-items:center}.cageDetails strong{grid-row:span 2;display:grid;place-items:center;width:48px;height:48px;border-radius:8px;background:#e8f5f3;color:#12625d;font-size:1.3rem}.cageDetails span,.muted{color:#69717e}.playerList{display:grid;gap:6px;padding:0;margin:0;list-style:none}.playerList li{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;min-height:30px}.avatar{--player-color: #4b69d8;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--player-color);color:#fff;font-weight:900;text-transform:uppercase;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.playerList em{color:#8a5b1e;font-size:.78rem;font-style:normal;font-weight:900;text-transform:uppercase}.playerBadges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}.appShell[data-theme=dark] h1,.appShell[data-theme=dark] h2,.appShell[data-theme=dark] .puzzleTitle{color:#f2f5f9}.appShell[data-theme=dark] .eyebrow,.appShell[data-theme=dark] dt,.appShell[data-theme=dark] .muted,.appShell[data-theme=dark] .cageDetails span{color:#aab4c2}.appShell[data-theme=dark] .roomBadge,.appShell[data-theme=dark] .boardArea,.appShell[data-theme=dark] .statusPanel,.appShell[data-theme=dark] .preGamePanel{border-color:#2c3542;background:#171c24;box-shadow:0 14px 34px #00000047}.appShell[data-theme=dark] .themeToggle,.appShell[data-theme=dark] .headerButton,.appShell[data-theme=dark] .numberPad button,.appShell[data-theme=dark] .resetButton,.appShell[data-theme=dark] .difficultyGrid button{border-color:#354151;background:#222936;color:#e8edf5}.appShell[data-theme=dark] .themeToggle:hover,.appShell[data-theme=dark] .headerButton:hover,.appShell[data-theme=dark] .numberPad button:hover,.appShell[data-theme=dark] .resetButton:hover,.appShell[data-theme=dark] .difficultyGrid button:hover,.appShell[data-theme=dark] .difficultyGrid button.active{border-color:#35a59b;background:#17332f}.appShell[data-theme=dark] .numberPad button:disabled,.appShell[data-theme=dark] .resetButton:disabled{border-color:#303845;background:#1a202a;color:#748091}.appShell[data-theme=dark] .modeSwitch{border-color:#354151}.appShell[data-theme=dark] .modeSwitch button{background:#222936;color:#cbd5e1}.appShell[data-theme=dark] .modeSwitch button.active{background:#1c8b80;color:#fff}.appShell[data-theme=dark] .modeSwitch button:disabled{color:#748091}.appShell[data-theme=dark] .cell{color:#f2f5f9}.appShell[data-theme=dark] .cell:hover{background:var(--cell-hover)}.appShell[data-theme=dark] .cell.selected{background:#5a4216;border-color:#5a4216}.appShell[data-theme=dark] .cell.conflict{background:#45211e;color:#ffd2cb}.appShell[data-theme=dark] .cell.cageConflict{background:#3b2a19}.appShell[data-theme=dark] .notesGrid{color:#aab4c2}.appShell[data-theme=dark] .cageDetails strong{background:#163c38;color:#72e1d5}.appShell[data-theme=dark] .combinationBlock h3{color:#aab4c2}.appShell[data-theme=dark] .combinationList span{border-color:#354151;background:#202938;color:#edf4ff}@media(max-width:920px){.gameLayout{grid-template-columns:minmax(0,1fr) 210px}.sidePanel{gap:6px}.difficultyGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.appShell{padding:8px}.topBar{min-height:34px}.headerButton{min-height:32px;padding:0 10px;font-size:.86rem}.gameLayout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.sidePanel{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}.playersPanel{display:none}.inputPanel{order:2}.statusPanel{padding:8px}}@media(max-height:720px){.appShell{gap:8px;padding:8px}.topBar{min-height:32px}.headerButton{min-height:30px;padding:0 10px;font-size:.84rem}h1{font-size:.92rem}.boardToolbar,.modeSwitch button{min-height:32px}.numberPad{width:min(190px,100%)}.numberPad button,.resetButton{min-height:28px;font-size:.84rem}}@media(max-height:760px){.playersPanel{display:none}}@media(max-height:640px){.cagePanel{display:none}.sidePanel{grid-template-rows:max-content max-content}.inputPanel h2{display:none}.inputPanel .numberPad button{min-height:26px}.inputActions .resetButton{min-height:26px;font-size:.78rem}}@media(max-height:540px){.selectionPanel h2{display:none}.statusPanel{padding:8px}}@media(max-width:430px),(max-height:430px){.appShell{gap:6px;padding:6px}.topBar{min-height:28px}h1{font-size:.8rem}.themeToggle{display:none}.headerButton{min-height:28px;padding:0 8px;font-size:.78rem}.preGamePanel{gap:8px;padding:12px}.preGamePanel h2{font-size:1rem}.difficultyGridLarge{grid-template-columns:1fr}.difficultyGridLarge button{min-height:34px}.gameLayout{grid-template-rows:minmax(0,1fr)}.boardArea{grid-template-rows:minmax(0,1fr);padding:6px}.boardToolbar,.sidePanel,.inputPanel{display:none}}
