:root{color-scheme:dark;--bg:#090e16;--panel:#121925;--cell:#202936;--line:#354154;--text:#f7f8fc;--muted:#9ca9bd;--accent:#7757ff;--accent2:#9c7cff;--good:#55d995;--bad:#ff646d;--given:#f5f7fb;--entry:#79a7ff;font:16px Inter,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:900px;min-height:100vh;background:radial-gradient(circle at 50% 0,#172031 0,transparent 40%),var(--bg);color:var(--text)}button,select{font:inherit;color:inherit}.shell{max-width:1500px;margin:auto;padding:24px}.topbar{height:96px;display:grid;grid-template-columns:260px 1fr 260px;align-items:center;gap:26px}.brand{display:flex;align-items:center;gap:14px}.brand img{width:52px;height:52px;border-radius:14px}.brand strong{display:block;font-size:27px;letter-spacing:1px}.brand span{color:var(--accent2);font-size:13px;letter-spacing:1.5px}.difficulty{justify-self:center;display:grid;gap:5px;color:var(--muted);font-size:12px;text-transform:uppercase}.difficulty select{width:280px;background:#111822;border:1px solid #303a49;border-radius:14px;padding:12px 16px;font-size:18px;text-transform:none}.session{justify-self:end;display:flex;align-items:center;gap:16px;font-size:22px}.icon{width:44px;height:44px;border-radius:50%;background:transparent;border:1px solid #354050;cursor:pointer}main{display:grid;grid-template-columns:220px minmax(520px,760px) 260px;gap:26px;align-items:start}.panel{background:linear-gradient(145deg,#151d2a,#0e151f);border:1px solid #293342;border-radius:18px;box-shadow:0 18px 55px #0006}.rail{padding:12px;min-height:650px;display:flex;flex-direction:column;gap:8px}.nav{border:0;background:transparent;border-radius:12px;padding:18px;text-align:left;display:flex;gap:14px;cursor:pointer}.nav.active{background:linear-gradient(90deg,#282f43,transparent);color:#b99cff}.challenge{margin-top:auto;padding:18px;display:grid;gap:8px;color:var(--muted)}.challenge b{color:var(--text);font-size:24px}.challenge progress{width:100%;accent-color:var(--accent)}.game-meta{display:flex;justify-content:space-between;align-items:center;margin:0 0 10px;color:var(--muted)}#new-game{background:transparent;border:1px solid #374255;border-radius:10px;padding:7px 12px;cursor:pointer}.board{aspect-ratio:1;display:grid;grid-template-columns:repeat(9,1fr);background:#080c12;border:5px solid #080c12;border-radius:14px;overflow:hidden;box-shadow:0 16px 60px #0008}.cell{position:relative;border:1px solid #111925;background:var(--cell);font-size:clamp(20px,2.5vw,36px);cursor:pointer;display:grid;place-items:center}.cell:nth-child(3n){border-right:4px solid #080c12}.cell:nth-child(9n){border-right:1px solid #111925}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:4px solid #080c12}.cell.given{color:var(--given);font-weight:600}.cell.entry{color:var(--entry)}.cell.selected{background:linear-gradient(145deg,#324265,#242f48);outline:3px solid var(--accent);outline-offset:-3px}.cell.related{background:#283343}.cell.same{color:#c3b0ff}.cell.wrong{color:var(--bad);animation:shake .18s linear 2}.notes{position:absolute;inset:5px;display:grid;grid-template-columns:repeat(3,1fr);font-size:10px;color:#aeb9cb}.statusbar{margin-top:22px;display:flex;justify-content:space-around;padding:20px;color:var(--muted)}.statusbar b{color:var(--text);font-size:20px;margin-right:6px}.controls{padding:18px}.mode{display:grid;grid-template-columns:1fr 1fr;background:#19222e;border-radius:12px;padding:3px}.mode button{border:0;background:transparent;padding:13px;border-radius:9px;cursor:pointer}.mode .active{background:linear-gradient(135deg,#7350fa,#5842ca)}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.keypad button{aspect-ratio:1;border:1px solid #354050;background:#202a37;border-radius:10px;font-size:25px;cursor:pointer}.wide,.actions button{width:100%;border:1px solid #354050;background:#202a37;border-radius:10px;padding:15px;cursor:pointer}.actions{display:grid;gap:8px;margin-top:16px}.actions button:last-child{color:var(--good)}.offline{color:#ffcd70;font-size:13px}dialog{width:min(520px,90vw);border:1px solid #3d485a;border-radius:20px;background:#111923;color:var(--text);padding:0;box-shadow:0 30px 100px #000b}dialog::backdrop{background:#04070bcf;backdrop-filter:blur(5px)}dialog form{padding:28px;position:relative}.close{position:absolute;right:15px;top:12px;border:0;background:transparent;color:var(--muted);font-size:30px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.dialog-actions button{border:1px solid #3c485b;background:#202a37;border-radius:10px;padding:10px 14px}.dialog-actions .primary{background:var(--accent)}.themes{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.theme-card{padding:18px;border-radius:14px;border:1px solid #3b4658;background:#1c2531;cursor:pointer}.ad-frame{min-height:90px;margin-top:18px;display:grid;place-items:center;border:1px dashed #3a4658;border-radius:12px;color:var(--muted)}@keyframes shake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
.field-row{display:flex;gap:8px;margin:12px 0}.field-row input,.field-row select,dialog label input{min-width:0;flex:1;border:1px solid #3c485b;background:#0d141e;color:var(--text);border-radius:10px;padding:11px 12px}dialog label{display:grid;gap:6px;color:var(--muted)}.score-board{display:grid;gap:7px;max-height:330px;overflow:auto;margin-top:16px}.score-row{display:grid;grid-template-columns:48px 1fr auto;gap:10px;align-items:center;padding:11px 12px;border:1px solid #303b4c;border-radius:11px;background:#18212d}.score-row.you{border-color:var(--accent2);background:#2a244d}.score-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-row strong{font-size:13px;color:var(--good)}.rank-note{color:var(--muted);font-size:13px}.primary{background:var(--accent)!important}
body.ivory{--bg:#edf1f6;--panel:#fff;--cell:#f8fafc;--line:#c8d1dc;--text:#17202c;--muted:#667386;--given:#15202d;--entry:#2d67d6;color-scheme:light}body.forest{--bg:#071812;--panel:#10271f;--cell:#183329;--accent:#2fc48a;--accent2:#8ce2bd}body.vintage{--bg:#211c18;--panel:#332b24;--cell:#41372e;--accent:#d69c50;--accent2:#f0ca8d}
@media(max-width:1100px){body{min-width:0}.shell{padding:14px}.topbar{grid-template-columns:190px minmax(0,1fr) 170px;gap:12px}.brand span{display:none}main{grid-template-columns:64px minmax(0,1fr) 190px;gap:10px}.rail{min-height:580px}.nav{padding:14px}.nav span,.challenge{display:none}.difficulty select{width:170px}.statusbar{padding:14px}.controls{padding:12px}}
@media(max-height:850px) and (min-width:901px){.shell{padding-top:12px;padding-bottom:12px}.topbar{height:88px}.rail{min-height:calc(100vh - 124px)}.board{width:min(100%,calc(100vh - 225px));margin-inline:auto}.statusbar{margin-top:10px;padding:10px}.controls{padding:14px}.keypad{margin:12px 0}.mode button{padding:10px}.wide,.actions button{padding:11px}.actions{margin-top:10px}}
@media(max-width:700px){
  body{min-width:0;background:radial-gradient(circle at 50% 0,#172031 0,transparent 28%),var(--bg)}
  .shell{width:100%;padding:8px}
  .topbar{height:auto;min-height:116px;grid-template-columns:1fr auto;gap:8px 12px;padding:6px 4px 12px}
  .brand{gap:9px}.brand img{width:40px;height:40px}.brand strong{font-size:20px}.brand span{display:block;font-size:10px}
  .session{gap:8px;font-size:18px}.icon{width:40px;height:40px}
  .difficulty{grid-column:1/-1;grid-row:2;justify-self:stretch}.difficulty select{width:100%;padding:9px 12px;font-size:16px}
  main{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
  .rail{min-height:0;display:grid;grid-template-columns:repeat(6,minmax(52px,1fr));gap:4px;padding:5px;overflow-x:auto}
  .nav{min-height:46px;padding:9px 5px;justify-content:center;text-align:center;font-size:18px}.nav span,.challenge{display:none}
  .game{min-width:0}.game-meta{font-size:13px;padding-inline:3px}.board{width:100%;max-width:520px;margin-inline:auto;border-width:3px;border-radius:10px}.cell{font-size:clamp(18px,7vw,30px)}
  .notes{inset:2px;font-size:7px}.statusbar{margin-top:9px;padding:11px 5px;gap:4px;font-size:11px}.statusbar span{display:grid;text-align:center}.statusbar b{font-size:16px;margin:0}
  .controls{padding:12px}.keypad{grid-template-columns:repeat(9,1fr);gap:4px;margin:12px 0}.keypad button{aspect-ratio:auto;min-width:0;padding:12px 0;font-size:19px}
  .wide,.actions button{padding:12px}.actions{grid-template-columns:repeat(2,minmax(0,1fr))}.actions button:last-child{grid-column:1/-1}
  dialog form{padding:24px 18px}.field-row{flex-wrap:wrap}.dialog-actions{flex-wrap:wrap}
}

/* Genius Coach, progression and accessibility additions */
.cell.coach{box-shadow:inset 0 0 0 4px #f5c451;background:#4a4128}.board.paused{filter:blur(14px);pointer-events:none}.keypad button.selected-number{outline:3px solid var(--accent2);background:var(--accent)}.button-link{display:inline-flex;align-items:center;padding:10px 14px;border:1px solid #3c485b;border-radius:10px;color:var(--text);text-decoration:none}.profile-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.profile-grid span{display:grid;gap:4px;padding:13px;border:1px solid #303b4c;border-radius:11px;color:var(--muted);font-size:12px}.profile-grid b{color:var(--text);font-size:20px}.achievement-list{display:flex;flex-wrap:wrap;gap:8px}.achievement-list span{padding:8px 11px;border-radius:999px;background:#332b5c;color:#e4dcff;font-size:13px}dialog label select{border:1px solid #3c485b;background:#0d141e;color:var(--text);border-radius:10px;padding:11px 12px;margin-bottom:12px}
body.paper{--bg:#f1eadc;--panel:#fffaf0;--cell:#fffdf7;--text:#2d2922;--muted:#756d60;--given:#1d1a16;--entry:#285f9e;--accent:#a85f37;--accent2:#c88455;color-scheme:light}body.oled{--bg:#000;--panel:#070707;--cell:#111;--line:#303030;--accent:#8b6cff;--accent2:#beaaff}body.contrast{--bg:#000;--panel:#050505;--cell:#111;--text:#fff;--muted:#ddd;--given:#fff;--entry:#00e5ff;--accent:#ffdf00;--accent2:#ffdf00}body.large .cell{font-size:clamp(27px,3.1vw,43px);font-weight:750}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
