:root{--bg:#fff;--fg:#1a1a1b;--muted:#5c5f62;--border:#c9ccd0;--field-border:#767a7e;--focus:#1a5fd0;--link:#1b5e20;--accent:#2e7d32;--on-accent:#fff;--danger:#b3261e;--on-danger:#fff;--correct:#2e7d32;--present:#9a6b00;--absent:#5f6368;--on-tile:#fff;--tile-empty-border:#d3d6da;--tile-typed-border:#878a8c;--key-bg:#d3d6da;--key-fg:#1a1a1b;--toast-bg:#1a1a1b;--toast-fg:#fff;--hl-peer:#eef2f8;--hl-same:#dce6f5;--hl-selected:#c6d9f5;--placed:#1550b0}:root[data-theme=dark]{--bg:#121213;--fg:#f2f2f3;--muted:#a9adb1;--border:#3a3a3c;--field-border:#8a8f94;--focus:#8ab4f8;--link:#81c784;--accent:#5cb860;--on-accent:#08210b;--danger:#f2b8b5;--on-danger:#601410;--correct:#2e7d32;--present:#9a6b00;--absent:#3a3a3c;--on-tile:#fff;--tile-empty-border:#3a3a3c;--tile-typed-border:#818384;--key-bg:#565758;--key-fg:#fff;--toast-bg:#f2f2f3;--toast-fg:#121213;--hl-peer:#1e2530;--hl-same:#2a3547;--hl-selected:#34445c;--placed:#8ab4f8}:root[data-palette=colorblind],:root[data-theme=dark][data-palette=colorblind]{--correct:#c25100;--present:#1565c0}:root{--flip-step:.25s;--flip-duration:.5s;--bounce-step:.1s;--bounce-duration:.6s;--tile-size:clamp(2.75rem, min(14vw, 7dvh), 3.75rem);--key-height:3.25rem;--key-gap:.4rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--fg);-webkit-text-size-adjust:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.45}#root{flex-direction:column;min-height:100dvh;display:flex}h1,h2{line-height:1.2}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.muted{color:var(--muted)}.app-header{padding:.25rem max(.75rem, env(safe-area-inset-right)) .25rem max(.75rem, env(safe-area-inset-left));border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.brand{min-height:2.75rem;color:var(--fg);font:inherit;letter-spacing:.03em;cursor:pointer;background:0 0;border:0;padding:0 .5rem;font-size:1.5rem;font-weight:800}.header-actions{gap:.25rem;display:flex}.icon-button{width:2.75rem;height:2.75rem;color:var(--fg);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;display:grid}.icon-button[aria-pressed=true]{background:var(--key-bg);color:var(--key-fg)}.page{width:100%;max-width:40rem;padding:1rem max(1rem, env(safe-area-inset-right)) 2rem max(1rem, env(safe-area-inset-left));margin:0 auto}.page.narrow{max-width:26rem}.page.game-page{padding-top:.25rem;flex:1;max-width:34rem;padding-inline:.5rem}.notice{text-align:center;padding:2rem 1rem}.notice-box{border:1px solid var(--field-border);border-radius:8px;padding:.75rem 1rem}section+section{margin-top:1.75rem}.links{flex-wrap:wrap;gap:.5rem 1rem;display:flex}.credit-links{padding-left:1.25rem}.credit-links li{margin:.4rem 0}a,.link{color:var(--link)}.link{min-height:2.75rem;font:inherit;cursor:pointer;background:0 0;border:0;padding:.25rem 0;text-decoration:underline}.form{gap:1rem;display:grid}.field{gap:.35rem;font-weight:600;display:grid}.field small,.field .muted{font-weight:400}.field.inline{justify-content:center;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}input[type=text],input:not([type]),select{border:1px solid var(--field-border);background:var(--bg);min-height:2.75rem;color:var(--fg);font:inherit;border-radius:8px;padding:.5rem .7rem;font-weight:400}.mono,.code{letter-spacing:.06em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.code{border:1px dashed var(--field-border);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:8px;padding:.75rem;font-size:1.25rem;font-weight:700;display:block}.button{border:1px solid var(--field-border);min-height:2.75rem;color:var(--fg);font:inherit;cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1.1rem;font-weight:600}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.button.danger{background:var(--danger);border-color:var(--danger);color:var(--on-danger)}.button:disabled{opacity:.55;cursor:not-allowed}.check{align-items:center;gap:.6rem;min-height:2.75rem;display:flex}.check input{width:1.25rem;height:1.25rem;accent-color:var(--accent)}.hint{margin:-.4rem 0 0 1.85rem;font-size:.9rem}fieldset.choice{border:0;margin:0 0 .5rem;padding:0}fieldset.choice legend{padding:0;font-weight:600}.row-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.error{color:var(--danger);margin:0;font-weight:600}:root[data-theme=dark] .error{color:var(--danger)}.danger-zone{border-top:1px solid var(--border);padding-top:1rem}.game{flex-direction:column;align-items:center;gap:.75rem;display:flex}.toast-region{justify-content:center;align-items:center;width:100%;height:2.75rem;display:flex}.toast{background:var(--toast-bg);color:var(--toast-fg);opacity:0;border-radius:8px;padding:.5rem 1rem;font-weight:600;transition:opacity .12s}.toast[data-visible=true]{opacity:1}.grid{gap:5px;display:grid}.row{grid-template-columns:repeat(var(--columns), var(--tile-size));gap:5px;display:grid}.row[data-shake=even]{animation:.4s ease-in-out shake}.row[data-shake=odd]{animation:.4s ease-in-out shake-again}.tile{width:var(--tile-size);height:var(--tile-size);border:2px solid var(--tile-empty-border);font-size:calc(var(--tile-size) * .55);text-transform:uppercase;-webkit-user-select:none;user-select:none;place-items:center;font-weight:700;line-height:1;display:grid}.tile[data-state=typed]{border-color:var(--tile-typed-border);animation:.11s ease-out pop}.tile[data-state=correct]{--final:var(--correct)}.tile[data-state=present]{--final:var(--present)}.tile[data-state=absent]{--final:var(--absent)}.tile[data-state=correct],.tile[data-state=present],.tile[data-state=absent]{background:var(--final);border-color:var(--final);color:var(--on-tile)}.tile[data-reveal=true]{animation:flip var(--flip-duration) linear calc(var(--column) * var(--flip-step)) both, settle var(--flip-duration) linear calc(var(--column) * var(--flip-step)) both;backface-visibility:hidden}.row[data-win=true] .tile{animation:bounce var(--bounce-duration) ease-out calc(var(--column) * var(--bounce-step)) both}@keyframes flip{0%{animation-timing-function:ease-in;transform:perspective(600px)rotateX(0)}50%{animation-timing-function:ease-out;transform:perspective(600px)rotateX(-90deg)}to{transform:perspective(600px)rotateX(0)}}@keyframes pop{0%{transform:scale(.85)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes bounce{0%,to{transform:translateY(0)}30%{transform:translateY(-35%)}50%{transform:translateY(0)}65%{transform:translateY(-12%)}80%{transform:translateY(0)}}@keyframes settle{0%,49.99%{background:var(--bg);border-color:var(--tile-typed-border);color:var(--fg)}50%,to{background:var(--final);border-color:var(--final);color:var(--on-tile)}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes shake-again{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@media (prefers-reduced-motion:reduce){.tile[data-reveal=true],.tile[data-state=typed],.row[data-win=true] .tile,.row[data-shake]{animation:none}.key,.toast{transition:none}}.controls{width:100%;min-height:calc(4 * var(--key-height) + 3 * var(--key-gap));justify-content:center;align-items:flex-start;display:flex}.keyboard{gap:var(--key-gap);flex-direction:column;width:100%;display:flex}.key-row{justify-content:center;gap:.3rem;display:flex}.key{min-width:0;height:var(--key-height);background:var(--key-bg);color:var(--key-fg);font:inherit;text-transform:uppercase;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0;border-radius:6px;flex:1 1 0;padding:0;font-weight:700;transition:background-color .15s,color .15s}.key-wide{flex:1.7 1 0;font-size:.8rem}.key[data-state=correct]{background:var(--correct);color:var(--on-tile)}.key[data-state=present]{background:var(--present);color:var(--on-tile)}.key[data-state=absent]{background:var(--absent);color:var(--on-tile)}.key-enter[data-ready=true]{background:var(--correct);color:var(--on-tile)}.key:disabled{opacity:.6;cursor:default}.result{text-align:center;width:100%}.result h2{margin:.25rem 0}.answer-line{font-weight:600}.share-status{min-height:1.5rem;color:var(--muted);margin:.5rem 0 0}.next{margin:.75rem 0 0}.countdown{font-variant-numeric:tabular-nums;font-weight:700}.overlay{z-index:10;background:#00000080;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog{border:1px solid var(--border);background:var(--bg);width:100%;max-width:26rem;max-height:100%;color:var(--fg);border-radius:12px;padding:1rem 1.25rem 1.25rem;overflow-y:auto}.dialog-head{justify-content:space-between;align-items:center;display:flex}.dialog-head h2{margin:0}.dialog h3{margin:1.25rem 0 .5rem;font-size:1rem}.figures{text-align:center;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:1rem 0 0;display:grid}.figure{flex-direction:column-reverse;display:flex}.figure dt{color:var(--muted);font-size:.8rem}.figure dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.75rem;font-weight:700}.distribution{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.distribution li{font-variant-numeric:tabular-nums;grid-template-columns:1.25rem 1fr;align-items:center;gap:.4rem;display:grid}.bar{width:calc(1.75rem + (100% - 1.75rem) * var(--share));background:var(--absent);color:var(--on-tile);text-align:end;padding:.1rem .4rem;font-weight:700}.distribution li[data-today=true] .bar{background:var(--correct)}.small{font-size:.85rem}.join-first{max-width:26rem;margin:1rem auto 0}.group-list,.roster,.member-list{gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.group-card{border:1px solid var(--field-border);width:100%;color:var(--fg);font:inherit;text-align:start;cursor:pointer;background:0 0;border-radius:8px;flex-direction:column;padding:.75rem 1rem;display:flex}.group-name{font-weight:700}.roster-entry,.member-list li{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;min-height:2.75rem;display:flex}.roster-name,.member-list li>span{flex:1}.roster-check{text-align:center;width:1.75rem;color:var(--muted);font-weight:700}.roster-check[data-finished=true]{color:var(--accent)}.roster-count{text-align:end;font-variant-numeric:tabular-nums;width:1.5rem;font-weight:700}.mini-grid{gap:2px;padding:.25rem 0;display:grid}.mini-row{gap:2px;display:flex}.mini-tile{background:var(--absent);width:.7rem;height:.7rem}.mini-tile[data-state=correct]{background:var(--correct)}.mini-tile[data-state=present]{background:var(--present)}.segmented{gap:.5rem;margin-bottom:.75rem;display:flex}.segmented .button[aria-pressed=true]{background:var(--key-bg);color:var(--key-fg)}.standings{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.standings th,.standings td{border-bottom:1px solid var(--border);text-align:end;padding:.4rem .3rem}.standings th:nth-child(2),.standings td:nth-child(2){text-align:start}.standings thead th{color:var(--muted);font-size:.8rem}.standings tr[aria-current=true] th[scope=row]{font-weight:800}.header-start{align-items:center;display:flex}.tabular{font-variant-numeric:tabular-nums}.today-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.today-row{border:1px solid var(--field-border);width:100%;min-height:4.5rem;color:var(--fg);font:inherit;text-align:start;cursor:pointer;touch-action:manipulation;background:0 0;border-radius:12px;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.today-icon{background:var(--key-bg);width:2.75rem;height:2.75rem;color:var(--key-fg);border-radius:8px;flex:none;place-items:center;font-size:1.2rem;font-weight:800;display:grid}.today-text{flex-direction:column;flex:1;min-width:0;display:flex}.today-name{font-size:1.1rem;font-weight:700}.today-status{color:var(--muted)}.today-row[data-status=done] .today-status{color:var(--link);font-weight:600}.today-chevron{color:var(--muted);font-size:1.75rem}.timed-game{flex-direction:column;align-items:center;gap:.5rem;display:flex}.timed-game .toast-region{height:2.25rem;margin:-.25rem 0}.timed-bar{justify-content:center;gap:2.5rem;width:100%;display:flex}.timed-figure{flex-direction:column;align-items:center;display:flex}.timed-label{color:var(--muted);font-size:.8rem}.timed-value{font-size:1.4rem;font-weight:700;line-height:1.2}.timed-figure[data-mistakes=true] .timed-value{color:var(--danger)}.timed-penalty{font-size:.9rem}.start-panel{text-align:center;max-width:26rem;margin:2rem auto 0}.button.big{min-height:3.25rem;padding:.5rem 2.5rem;font-size:1.15rem}.row-actions.centered{justify-content:center}.give-up{width:100%;max-width:26rem}.score-line{margin:.25rem 0 0;font-size:1.25rem}.paused-panel{border:1px dashed var(--field-border);width:100%;max-width:26rem;min-height:50dvh;color:var(--fg);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:1.5rem;display:flex}.paused-title{font-size:1.75rem;font-weight:800}.sudoku{--cell:clamp(2rem, min(10.2vw, 5.3dvh), 3.1rem)}.sudoku-grid{border:2px solid var(--fg);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.sudoku-row{border-bottom:1px solid var(--border);display:flex}.sudoku-row:nth-child(3n){border-bottom:2px solid var(--fg)}.sudoku-row:last-child{border-bottom:0}.sudoku-cell{width:var(--cell);height:var(--cell);border-right:1px solid var(--border)}.sudoku-cell:nth-child(3n){border-right:2px solid var(--fg)}.sudoku-cell:last-child{border-right:0}.sudoku-cell[data-highlight=peer]{background:var(--hl-peer)}.sudoku-cell[data-highlight=same]{background:var(--hl-same)}.sudoku-cell[data-highlight=selected]{background:var(--hl-selected);box-shadow:inset 0 0 0 2px var(--focus)}.sudoku-cell-button{width:100%;height:100%;color:var(--fg);font:inherit;font-size:calc(var(--cell) * .58);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;place-items:center;padding:0;line-height:1;display:grid}.sudoku-cell-button:focus-visible{outline-offset:-3px}.sudoku-cell[data-kind=given] .sudoku-digit{font-weight:700}.sudoku-cell[data-kind=placed] .sudoku-digit{color:var(--placed)}.sudoku-cell[data-kind=revealed] .sudoku-digit{color:var(--muted);font-style:italic}.sudoku-digit.waiting{color:var(--muted)}.sudoku-digit.wrong{color:var(--danger);font-weight:700;animation:.4s ease-in-out shake}.sudoku-notes{width:100%;height:100%;font-size:calc(var(--cell) * .24);color:var(--muted);grid-template-columns:repeat(3,1fr);padding:1px;line-height:1;display:grid}.sudoku-notes span{place-items:center;display:grid}.numpad{width:calc(9 * var(--cell) + 4px);grid-template-columns:repeat(9,1fr);gap:.25rem;max-width:100%;display:grid}.numpad-key{background:var(--key-bg);min-width:0;height:3.5rem;color:var(--key-fg);font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;padding:0;display:flex}.numpad-key[data-done=true]{visibility:hidden}.numpad-digit{font-size:1.4rem;font-weight:700;line-height:1.1}.numpad-count{font-size:.75rem}.timed-game .button[aria-pressed=true]{background:var(--key-bg);color:var(--key-fg)}.arrows-left{margin:0}.arrows-board{width:min(100%, calc((100dvh - 17rem) * var(--ratio)));touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-width:14rem;height:auto;display:block}.arrows-dot{fill:var(--border)}.arrow{cursor:pointer;transform-box:view-box;transform-origin:var(--ox) var(--oy);animation:arrow-in .32s ease-out calc(var(--i) * 18ms) both;outline:none}.arrow-body{transform-box:view-box;transform-origin:var(--ox) var(--oy);transition:transform .12s ease-out,filter .12s ease-out}@media (hover:hover){.arrow:hover .arrow-body:not([data-state]){filter:drop-shadow(0 .8px .8px #0000004d);transform:scale(1.06)}}.arrow:active .arrow-body:not([data-state]){transition-duration:60ms;transform:scale(.95)}.arrow-hit{fill:none;stroke:#0000;stroke-width:8px;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke}.arrow-line{fill:none;stroke:var(--fg);stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round}.arrow-head{fill:var(--fg)}.arrow:focus-visible .arrow-line{stroke:var(--focus)}.arrow:focus-visible .arrow-head{fill:var(--focus)}.arrow-body[data-state=leaving]{pointer-events:none}.arrow-body[data-state=blocked] .arrow-line{stroke:var(--danger)}.arrow-body[data-state=blocked] .arrow-head{fill:var(--danger)}.block-flash{fill:var(--danger);opacity:0;animation:.6s ease-out block-flash}@keyframes arrow-in{0%{opacity:0;transform:scale(.8)}}.arrows-board[data-cleared=true] .arrows-dot{transform-box:fill-box;transform-origin:50%;animation:dot-wave .5s ease-out calc(.25s + var(--ring) * 70ms) both}@keyframes dot-wave{0%,to{transform:scale(1)}40%{fill:var(--correct);transform:scale(2.6)}}@keyframes block-flash{0%,40%{opacity:.55}to{opacity:0}}@media (prefers-reduced-motion:reduce){.sudoku-digit.wrong,.arrow,.arrows-board[data-cleared=true] .arrows-dot{animation:none}.arrow-body{transition:none}.block-flash{opacity:.4;animation:none}}.puzzle-switch{flex-wrap:wrap;margin:.75rem 0 0}.puzzle-switch .button{flex:1;padding-inline:.5rem}.figures.times{grid-template-columns:repeat(2,1fr)}.streak-card{border:1px solid var(--field-border);border-radius:12px;padding:.75rem 1rem}.streak-card h2{margin:0;font-size:1.1rem}.streak-figures{grid-template-columns:repeat(3,1fr);margin:.5rem 0 0}.streak-headline{margin:.5rem 0 0;font-weight:600}.streak-risk{color:var(--danger);margin:.75rem 0 0;font-weight:600}.member-streak{white-space:nowrap;color:var(--muted);font-size:.85rem}.member-streak[data-state=at_risk] .member-streak-state{color:var(--danger)}.roster-time{white-space:nowrap}.streak-confirm{font-weight:600}
