/* Tamvoro — a quiet puzzle studio. The seeded generator and solver are unchanged. */
@font-face{font-family:Manrope;src:url('/fonts/manrope-400.woff2?v=a30ddcd349') format('woff2');font-weight:400 800;font-display:swap}
@media screen{
:root{--ui:Manrope,sans-serif;--display:Manrope,sans-serif;--read:Manrope,sans-serif;--ink:#24262b;--ink-2:#4a4d56;--muted:#616672;--paper:#f6f6f8;--rule:#343840;--hair:#d9dce2;--soft:#eceef2;--table:#e9ebf0;--red:#b92e40;--red-ink:#9e2434;--gutter:clamp(16px,3vw,48px)}
body{font-family:var(--ui)}main{max-width:1440px;margin:auto}.topbar{max-width:1440px;margin:auto;min-height:80px;border-bottom:1px solid #d6d9df;background:#fff}.brand{font-size:24px;font-weight:800;letter-spacing:-1px;gap:12px}.brand-mark{width:32px;height:32px}.topnav{gap:0;flex-wrap:wrap}.topnav a{font-size:14px}.masthead{padding-top:28px}.dateline{border:0;font-size:11px;letter-spacing:.1em;gap:10px;color:#5a5f69}.dateline span{padding:0 10px 0 0;margin-right:0}.mast-row{grid-template-columns:minmax(0,1fr) minmax(0,56ch);gap:36px;border:0;padding:12px 0 22px}h1{font-size:clamp(32px,3.5vw,46px);line-height:1.15;letter-spacing:-1.6px;text-transform:none;font-weight:800}h2{letter-spacing:-.7px;text-transform:none}.dek{font-family:var(--ui);font-size:16px;border:0;padding:0;line-height:1.65}.dek-link{font-size:14px;font-weight:700;display:inline-block;min-height:44px;padding-top:12px;margin-right:22px}.task-switch{display:flex;gap:8px;padding:0 var(--gutter) 24px;flex-wrap:wrap}.task-switch a{display:flex;align-items:center;justify-content:center;gap:9px;padding:0 20px;min-height:46px;border:1px solid #b4b8c3;border-radius:8px;font-weight:700;font-size:14px;text-decoration:none;background:#fff}.task-switch a:first-child{background:#292c34;color:#fff;border-color:#292c34}.task-switch a:hover{border-color:#b92e40;box-shadow:0 0 0 1px #b92e40}.task-switch a small{font-size:12px;font-weight:500;color:inherit;opacity:.8}
.player{margin:0 var(--gutter) 36px;padding:28px;background:#fff;border:1px solid #d0d4dc;border-radius:14px;box-shadow:0 12px 30px #35384908;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:22px 36px}.player-head{grid-column:1;grid-row:1;max-width:36ch;align-self:start;padding-top:6px}.player-head .kicker{color:#a22b3c;letter-spacing:1.5px;font-size:12px;margin:0 0 14px}.player-head h2{text-transform:none;font-size:31px;line-height:1.2;letter-spacing:-1px;margin-bottom:16px}.player-dek{font:15px/1.7 var(--ui);margin:0;color:#5d636f}.player-body{grid-column:2;grid-row:1/3;display:grid;grid-template-columns:minmax(0,1fr);gap:20px;max-width:660px}.board-col{max-width:500px;margin:auto;width:100%}.board-top{margin-bottom:12px;font-size:13px}.play-from{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}.play-timer{font-size:15px;color:#8b2636;padding:4px 10px;background:#fff1f3;border-radius:5px}.board{border:2px solid #343943;border-radius:2px;box-shadow:0 4px 18px #333d4b10}.cell{color:#27639a;border-color:#cdd3dd;font-weight:600}.cell.given{color:#282e37;font-weight:800}.cell.peer{background:#f0f3f7}.cell.same{background:#e0e8f0}.cell.sel{background:#fae1e5}.cell.bx-r{border-right:2px solid #444b58}.cell.bx-b{border-bottom:2px solid #444b58}.board:focus-within .cell.sel{box-shadow:inset 0 0 0 2px #a83243}.player-side{max-width:500px;width:100%;margin:auto;gap:14px}.play-tabs button{border:1px solid #a7aeb9;font-size:14px;min-height:44px;border-radius:6px;margin-left:6px}.play-tabs button:first-child{margin-left:0}.play-tabs button[aria-pressed=true]{background:#2c3039}.keys{gap:6px}.keys button{min-height:46px;border:1px solid #c2c8d2;border-radius:6px;background:#f6f8fa;font-size:20px}.keys button:hover{background:#fbe9ec}.tools{gap:8px}.ghost,.primary-sm{border-radius:6px;min-height:42px;font-size:14px;border-width:1px}.play-row{gap:6px}.play-row select{min-height:44px;font-size:16px;border-radius:6px;border:1px solid #bdc3cf;background:#fff;padding:8px}.glabel,legend{font-size:12px;text-transform:none;letter-spacing:0}.play-help{font-size:13px;line-height:1.6}.play-left{font-size:13px;margin-top:12px}.play-status{font-size:14px;line-height:1.6;min-height:22px}.own-result{font-size:14px}.own-tools .glabel{font-size:14px}.own-tools textarea{font-size:16px;max-width:100%}.player-head::after{content:'01 — SELECT  /  02 — SOLVE  /  03 — KEEP';font:10px/1.8 var(--mono);letter-spacing:.06em;color:#7a8090;display:block;margin-top:28px;border-top:1px solid #e1e4e9;padding-top:16px}.desk{margin:0 var(--gutter) 36px;padding:0;grid-template-columns:minmax(0,1fr) 280px;border:1px solid #cfd4dd;border-radius:14px;overflow:clip;background:#fff}.strip{padding:24px;border-color:#d7dce4}.strip-row{gap:18px 24px}.strip-row+.strip-row{margin-top:18px}.actions{padding:24px;border-bottom:1px solid #d6dce4;background:#f0f2f6}.actions .primary{background:#b92e40;border:1px solid #b92e40;color:#fff;border-radius:7px;min-height:50px;font-size:16px}.actions .secondary{min-height:44px;border-radius:7px;font-size:14px}.seg span{border-width:1px;margin-left:-1px;border-color:#a6adba;min-height:46px;font-size:14px;min-width:50px}.seg small{font-size:11px}.seg input:checked+span{background:#303640;border-color:#303640}.seg label:first-child span{border-radius:5px 0 0 5px}.seg label:last-child span{border-radius:0 5px 5px 0}.strip input:not([type]),.strip input[inputmode],#title,#seed{border-radius:5px;border-width:1px;font-size:16px}.stepper button{border-width:1px;border-color:#a9b1be}.stepper input{border-width:1px;border-color:#a9b1be}.spread{background:#e9ecf1;border-top:1px solid #d1d8e2;padding:24px}.spread-head{font-size:14px}.proofs{--pw:260px;gap:24px;padding:8px 4px 20px}.proof-btn{border:1px solid #d0d6df}.proof-cap{font-size:13px}.ledger{background:#fff;padding:18px 24px}.ledger summary{font-size:15px;line-height:1.6}.ledger-table{font-size:14px}.ledger caption{font-size:13px}select{font-size:16px}.article h2{font-size:30px;text-transform:none}.article p,.article li{font-family:var(--ui);font-size:16px;line-height:1.75}.article{padding-top:20px}.article h3{font-size:20px}.kicker{font-size:12px}.site-foot{background:#292e37;color:#fff}.site-foot a{color:#fff}.topnav a.nav-out{border-left:0}.player,.desk,#levels,#faq{scroll-margin-top:20px}.task-switch a:focus-visible{outline-color:#b92e40}
@media(min-width:1100px){.player-head{position:static}.player-side{position:relative}.player-body{grid-template-columns:minmax(0,1fr);}.player-head .player-dek{max-width:34ch}.player{grid-template-columns:300px minmax(0,1fr)}.player-body{width:100%}}
@media(max-width:1000px){.mast-row{grid-template-columns:1fr;gap:12px}.player{grid-template-columns:1fr;gap:20px;padding:24px}.player-head{grid-column:1;grid-row:1;max-width:none;padding:0}.player-head h2{font-size:26px;margin-bottom:10px}.player-head::after{display:none}.player-body{grid-column:1;grid-row:2;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);max-width:none;gap:24px}.player-dek{max-width:none}.desk{grid-template-columns:minmax(0,1fr) 250px}.strip{padding:20px}.actions{padding:20px}.player-side{align-self:start}.topbar{flex-wrap:wrap;gap:8px;padding-top:12px;padding-bottom:12px}.topnav a{font-size:13px;padding:8px}.player .keys{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.player-body{grid-template-columns:1fr;gap:18px}.player{padding:20px}.player .keys{grid-template-columns:repeat(var(--keys,9),minmax(0,1fr))}.desk{grid-template-columns:1fr}.strip{border-right:0}.actions{border:0}.topnav{width:100%;justify-content:space-between}.topnav a{font-size:12px;padding:8px 4px}.brand{font-size:23px}.masthead{padding-top:22px}.mast-row{padding:14px 0 16px}.task-switch{padding-bottom:20px}.task-switch a{flex:1;padding:0 10px;font-size:13px}.task-switch a small{display:none}.player-head h2{font-size:25px}.player-dek{font-size:15px}.player .keys button{font-size:19px;padding:0;min-width:0;min-height:42px}.spread{padding:18px}.ledger{padding:18px}.proofs{--pw:240px}.player{margin-bottom:28px}.play-tabs button{font-size:13px}.dateline span{font-size:10px}.strip-row{gap:18px 20px}h1{font-size:34px}.desk .glabel,.desk legend{font-size:13px}.article h2{font-size:26px}}
@media(prefers-reduced-motion:reduce){.proof-btn:hover{transform:none}}
}
@media print{.task-switch{display:none}}
@media screen and (min-width:1001px){
.player{display:block;padding:28px}.player-head{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.1fr);max-width:none;gap:8px 36px;margin-bottom:24px;align-items:center}.player-head .kicker{grid-column:1/-1;margin:0}.player-head h2{margin:0;font-size:28px;line-height:1.2}.player-head .player-dek{max-width:none;font-size:14px}.player-head::after{display:none}.player-body{display:grid;grid-template-columns:minmax(0,500px) minmax(0,1fr);max-width:none;gap:44px;width:100%;align-items:start}.board-col{margin:0;max-width:500px}.player-side{max-width:none;margin:0;gap:18px;padding-top:0}.player .keys{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.player .keys button{min-height:52px;font-size:23px}.play-tabs button{min-height:48px}.player .tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.player .tools button{min-height:44px}.player .play-help{font-size:14px;max-width:60ch}.player .play-status{font-size:15px}.mast-row .dek-link{font-size:13px;margin-right:10px;padding-top:8px;min-height:36px}.mast-row{padding-bottom:18px}.masthead .dek{font-size:15px}
}
@media screen and (min-width:1001px) and (max-height:750px){.board-col{max-width:420px}.player-body{grid-template-columns:minmax(0,440px) minmax(0,1fr)}.player-head{margin-bottom:16px}.player{padding:22px}.masthead{padding-top:20px}}
@media screen{#playPick{font-size:16px}}
@media screen and (max-width:860px){.actions{position:static;margin:0;padding:20px;border-top:1px solid #d6dce4;background:#f0f2f6}.spread{order:0}.player-side{display:flex}.topnav{display:flex}}
@media screen and (max-width:700px){.topnav a.nav-out{display:none}.mast-row .dek-link{font-size:14px;margin-right:16px;min-height:40px}.player-head h2{font-size:25px}.player-dek{font-size:14px}.player-head{margin-bottom:0}}
@media screen and (max-width:1000px){.board-col,.player-side{order:0}}
