:root{--fog:#f4f3ef;--fog-deep:#e9e7e0;--surface:#fbfaf7;--ink:#111;--ink-soft:#4a4a47;--line:#d8d5cc;--fjord:#1f5f6b;--fjord-strong:#164a54;--fjord-soft:#dcebee;--brand:var(--fjord);--brand-strong:var(--fjord-strong);--brand-soft:var(--fjord-soft);--on-brand:#fff;--good:#13612c;--good-soft:#dff3e5;--attention:#7a4700;--attention-soft:#fdeccb;--problem:#c4231b;--problem-soft:#fbe1df;--info:#1f5f6b;--info-soft:#dcebee;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--text-sm:.875rem;--text:1rem;--text-lg:1.125rem;--text-xl:1.5rem;--text-2xl:2rem;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--radius:8px;--radius-lg:12px;--shadow:0 1px 2px #1111110f, 0 2px 8px #1111110a;--focus:0 0 0 3px #1f5f6b59}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--fog);color:var(--ink);font-family:var(--font);font-size:var(--text);margin:0;font-weight:450;line-height:1.5}h1,h2,h3{margin:0 0 var(--s3);font-weight:700;line-height:1.2}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0 0 var(--s3)}a{color:var(--brand);font-weight:600}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:var(--focus);outline:none}.muted{color:var(--ink-soft)}.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}.stack{gap:var(--s4);flex-direction:column;display:flex}.row{gap:var(--s3);flex-wrap:wrap;align-items:center;display:flex}.spread{justify-content:space-between;align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.btn{justify-content:center;align-items:center;gap:var(--s2);min-height:44px;padding:0 var(--s4);border-radius:var(--radius);font:inherit;cursor:pointer;border:1px solid #0000;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:var(--on-brand)}.btn-primary:hover:not(:disabled){background:var(--brand-strong)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-secondary:hover:not(:disabled){background:var(--fog-deep)}.btn-danger{background:var(--surface);color:var(--problem);border-color:var(--problem)}.btn-ghost{color:var(--brand);background:0 0}.btn-block{width:100%}.field{gap:var(--s1);flex-direction:column;display:flex}.field label{font-weight:600;font-size:var(--text-sm)}.field .hint{font-size:var(--text-sm);color:var(--ink-soft)}.field .error-text{font-size:var(--text-sm);color:var(--problem);font-weight:600}.input,.select,.textarea{width:100%;min-height:44px;padding:var(--s2) var(--s3);font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.input[aria-invalid=true]{border-color:var(--problem)}.check{align-items:center;gap:var(--s2);min-height:44px;display:flex}.check input{width:20px;height:20px;accent-color:var(--brand)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--s5);box-shadow:var(--shadow)}.badge{align-items:center;gap:var(--s1);padding:2px var(--s2);font-size:var(--text-sm);border-radius:999px;font-weight:700;display:inline-flex}.badge-good{background:var(--good-soft);color:var(--good)}.badge-attention{background:var(--attention-soft);color:var(--attention)}.badge-problem{background:var(--problem-soft);color:var(--problem)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-neutral{background:var(--fog-deep);color:var(--ink-soft)}.alert{padding:var(--s3) var(--s4);border-radius:var(--radius);border-left:4px solid;font-weight:500}.alert-good{background:var(--good-soft);border-color:var(--good)}.alert-attention{background:var(--attention-soft);border-color:var(--attention)}.alert-problem{background:var(--problem-soft);border-color:var(--problem)}.alert-info{background:var(--info-soft);border-color:var(--info)}.table-wrap{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}th,td{text-align:left;padding:var(--s3);border-bottom:1px solid var(--line);vertical-align:top}th{background:var(--fog-deep);white-space:nowrap;font-weight:700}tr:last-child td{border-bottom:0}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:10;justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--surface);border-bottom:1px solid var(--line);display:flex;position:sticky;top:0}.brand-mark{font-weight:800;font-size:var(--text-lg);color:var(--ink);text-decoration:none}.nav{gap:var(--s1);flex-wrap:wrap;display:flex}.nav a{padding:var(--s2) var(--s3);border-radius:var(--radius);color:var(--ink-soft);font-weight:600;text-decoration:none}.nav a.active,.nav a:hover{background:var(--brand-soft);color:var(--brand-strong)}.page{width:100%;max-width:1100px;padding:var(--s5) var(--s4) var(--s7);margin:0 auto}.auth-page{min-height:100vh;padding:var(--s4);place-items:center;display:grid}.auth-card{width:100%;max-width:420px}.state{text-align:center;padding:var(--s7) var(--s4)}.state h3{margin-bottom:var(--s2)}.modal-backdrop{padding:var(--s4);z-index:50;background:#1116;place-items:center;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:480px}.toasts{bottom:var(--s4);z-index:60;gap:var(--s2);flex-direction:column;width:calc(100% - 32px);max-width:420px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.grid-2{gap:var(--s4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.stat{font-size:var(--text-2xl);font-weight:800}@media (width<=640px){.page{padding:var(--s4) var(--s4) var(--s7)}.card{padding:var(--s4)}.topbar{flex-wrap:wrap}.nav{flex-wrap:nowrap;width:100%;overflow-x:auto}}.page-narrow{width:100%;max-width:720px;margin:0 auto}.small{font-size:var(--text-sm)}.label{font-weight:600;font-size:var(--text-sm)}.stack-sm{gap:var(--s2);flex-direction:column;display:flex}fieldset{border:0;min-width:0;margin:0;padding:0}legend{padding:0}.textarea{resize:vertical;min-height:88px}.streak{flex-direction:column;align-items:center;line-height:1.1;display:flex}.question:first-of-type{border-top:0;padding-top:0}.q-num{font-size:var(--text-sm);font-weight:600;display:block}.q-text{font-size:var(--text-lg);margin-bottom:var(--s3);font-weight:700;display:block}.choices{gap:var(--s2);display:grid}.choice{align-items:center;gap:var(--s3);min-height:48px;padding:var(--s2) var(--s3);border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;font-weight:500;display:flex}.choice input{width:20px;height:20px;accent-color:var(--brand);flex-shrink:0}.choice:has(input:focus-visible){box-shadow:var(--focus)}.choice-picked{border-color:var(--brand);background:var(--brand-soft)}.question:disabled .choice{cursor:not-allowed;opacity:.7}.squares{vertical-align:middle;gap:3px;display:inline-flex}.sq{color:#fff;border-radius:3px;place-items:center;width:16px;height:16px;font-size:11px;font-weight:800;line-height:1;display:inline-grid}.squares-lg .sq{border-radius:6px;width:32px;height:32px;font-size:18px}.my-score{align-items:center;gap:var(--s4);flex-wrap:wrap;display:flex}.answers{margin:0;padding-left:20px}.answer-list{margin:0 0 var(--s2);gap:var(--s1);padding:0;list-style:none;display:grid}.ans{justify-content:space-between;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--radius);background:var(--fog);display:flex}.ans-right{background:var(--good-soft);font-weight:700}.ans-wrong{background:var(--problem-soft)}.ans-tags{gap:var(--s2);flex-shrink:0;align-items:center;display:inline-flex}.row-me td{background:var(--brand-soft);font-weight:700}.choice-editor{gap:var(--s2);flex-direction:column;display:flex}.choice-editor legend{font-weight:600;font-size:var(--text-sm);margin-bottom:var(--s2)}.choice-edit-row{gap:var(--s2);align-items:center;display:flex}.choice-edit-row input[type=radio]{width:22px;height:22px;accent-color:var(--good);flex-shrink:0}.category-grid{gap:0 var(--s3);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.schedule td{vertical-align:middle}.schedule .input{min-width:120px}.save-bar{bottom:var(--s3);z-index:5;position:sticky}.upcoming,.q-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.upcoming li,.q-list li{padding:var(--s3) 0;border-bottom:1px solid var(--line);gap:var(--s2);flex-direction:column;display:flex}.upcoming li:last-child,.q-list li:last-child{border-bottom:0}.upcoming-warn{background:var(--attention-soft);margin:0 calc(-1 * var(--s3));border-radius:var(--radius);padding:var(--s3)!important}.correct-inline{color:var(--good);font-weight:700}.tabs{gap:var(--s1);flex-wrap:wrap;display:flex}.tab{font:inherit;min-height:40px;padding:0 var(--s3);border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);cursor:pointer;border-radius:999px;font-weight:600}.tab-on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}@media (width<=640px){.squares-lg .sq{width:26px;height:26px}}.landing{padding-top:var(--s7)}.landing-title{margin:0;font-size:clamp(1.75rem,5vw,2.5rem);line-height:1.15}.landing-lead{font-size:var(--text-lg);color:var(--ink-soft);margin:0}:root{--font:"Figtree", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fjord-night:#123f47;--buzz:#f5c842;--buzz-soft:#fdf1c7;--sq-right:#1f9d55;--sq-wrong:#d64235;--radius:10px;--radius-lg:16px;--press:0 3px 0 var(--fjord-night)}body{font-weight:500}h1{letter-spacing:-.02em;font-weight:800}h2,h3{letter-spacing:-.01em;font-weight:800}.logo{align-items:center;gap:10px;display:inline-flex}.logo-word{letter-spacing:-.02em;color:var(--ink);font-size:1.2rem;font-weight:800}.brand-mark{text-decoration:none}.btn{border-radius:12px;font-weight:700;transition:transform 80ms,box-shadow 80ms}.btn-primary{box-shadow:var(--press)}.btn-secondary{border:2px solid var(--line);box-shadow:0 2px 0 var(--line)}.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled){box-shadow:0 1px 0 var(--fjord-night);transform:translateY(2px)}.btn-secondary:active:not(:disabled){box-shadow:0 0 0 var(--line)}.btn-lg{min-height:52px;padding:0 var(--s5);font-size:var(--text-lg)}.card{border:2px solid var(--line);box-shadow:none}.card-title{margin:0}.topbar{background:var(--fog);border-bottom:2px solid var(--line)}.nav a{border-radius:999px;font-weight:700}.nav a.active{background:var(--brand);color:var(--on-brand)}.nav a:hover:not(.active){background:var(--fog-deep);color:var(--ink)}.group-name{color:var(--ink-soft);padding-left:var(--s3);border-left:2px solid var(--line);font-weight:700}.choice{border-radius:12px;font-weight:600;transition:border-color .1s}.choice:hover{border-color:var(--brand)}.choice-picked{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand)}.q-num{color:var(--brand)}.q-text{font-size:1.25rem;font-weight:800;line-height:1.3}.sq{border-radius:4px}.sq-right{background:var(--sq-right)}.sq-wrong{background:var(--sq-wrong)}.squares-lg .sq{border-radius:8px}.today-hero{background:var(--fjord-night);color:#fff;border-color:var(--fjord-night)}.today-hero .muted{color:#c7dade}.today-hero a{color:var(--buzz)}.tab{border-width:2px;font-weight:700}.badge{font-weight:800}.auth-page{align-content:start;padding-top:clamp(24px,8vh,96px)}.auth-card{max-width:440px}.auth-head{margin-bottom:var(--s2);justify-content:center;display:flex}.segmented{background:var(--fog-deep);border-radius:14px;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.segmented button{font:inherit;min-height:40px;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:10px;font-weight:700}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 0 var(--line)}@media (prefers-reduced-motion:reduce){.btn,.choice{transition:none}}.landing-page{flex-direction:column;min-height:100vh;display:flex}.landing-top{justify-content:space-between;align-items:center;gap:var(--s3);width:100%;max-width:1120px;padding:var(--s4);margin:0 auto;display:flex}.landing-top .btn{min-height:40px}.hero{background:var(--fjord-night);color:#fff;padding:clamp(32px, 7vw, 88px) var(--s4)}.hero-inner{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:clamp(32px,6vw,72px);max-width:1120px;margin:0 auto;display:grid}.hero h1{letter-spacing:-.035em;margin:0 0 var(--s5);max-width:13ch;font-size:clamp(2.25rem,5.4vw,4rem);line-height:1.02}.hero-lead{color:#d6e6e9;max-width:36ch;margin:0 0 var(--s6);font-size:clamp(1.125rem,1.6vw,1.3rem);line-height:1.5}.hero-note{margin:var(--s4) 0 0;color:#b4cdd2;font-size:var(--text-sm)}.btn-buzz{background:var(--buzz);color:var(--ink);box-shadow:0 4px #b98f12}.btn-buzz:hover{background:#ffd659}.btn-buzz:active{transform:translateY(2px);box-shadow:0 2px #b98f12}.hero a:focus-visible{box-shadow:0 0 0 3px #fff}.demo{color:var(--ink);padding:var(--s5);border:0;border-radius:20px;box-shadow:0 10px #0000002e}.demo-meta{margin:0 0 var(--s2);font-size:var(--text-sm);color:var(--brand);font-weight:700}.demo-q{letter-spacing:-.01em;margin:0 0 var(--s4);font-size:1.4rem;font-weight:800;line-height:1.25}.demo-choices{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.demo-choice{font:inherit;min-height:52px;padding:var(--s2) var(--s3);border:2px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;box-shadow:0 2px 0 var(--line);text-align:left;border-radius:12px;font-weight:700}.demo-choice:hover:not(:disabled){border-color:var(--brand)}.demo-choice:disabled{cursor:default}.demo-choice.is-right{background:var(--sq-right);border-color:var(--sq-right);color:#fff;box-shadow:0 2px #157a40}.demo-choice.is-wrong{background:var(--problem-soft);border-color:var(--sq-wrong)}.demo-choice.is-dim{opacity:.5}.demo-hint{margin:var(--s4) 0 0;color:var(--ink-soft);font-size:var(--text-sm)}.demo-result{gap:var(--s2) var(--s3);margin-top:var(--s4);grid-template-columns:auto 1fr;align-items:start;display:grid}.demo-result .sq{border-radius:8px;width:32px;height:32px;font-size:18px}.demo-result p{margin:0}.demo-again{font:inherit;color:var(--brand);cursor:pointer;background:0 0;border:0;grid-column:2;justify-self:start;min-height:32px;padding:0;font-weight:700;text-decoration:underline}.landing-section{width:100%;max-width:1120px;padding:clamp(48px, 8vw, 96px) var(--s4) 0;margin:0 auto}.landing-section h2{letter-spacing:-.025em;margin:0 0 var(--s4);font-size:clamp(1.6rem,3vw,2.25rem);line-height:1.1}.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(24px,5vw,64px);display:grid}.split-copy p{font-size:var(--text-lg);color:var(--ink-soft);max-width:44ch;margin:0}.board{padding:var(--s4) var(--s5)}.board-head{justify-content:space-between;gap:var(--s2);padding-bottom:var(--s3);border-bottom:2px solid var(--line);flex-wrap:wrap;display:flex}.board-rows{margin:0;padding:0;list-style:none}.board-rows li{gap:var(--s3);border-bottom:1px solid var(--line);grid-template-columns:7rem auto 1fr;align-items:center;min-height:48px;display:grid}.board-rows li:last-child{border-bottom:0}.board-name{font-weight:700}.board-rows .sq{border-radius:6px;width:24px;height:24px;font-size:13px}.board-streak{font-size:var(--text-sm);color:var(--attention);justify-self:end;font-weight:700}.steps{margin:var(--s5) 0 0;gap:var(--s5);grid-template-columns:repeat(4,minmax(0,1fr));padding:0;list-style:none;display:grid}.steps h3{font-size:var(--text-lg);margin:var(--s3) 0 var(--s2)}.steps p{color:var(--ink-soft);margin:0}.step-num{background:var(--brand);color:#fff;width:40px;height:40px;box-shadow:var(--press);border-radius:10px;place-items:center;font-size:1.1rem;font-weight:800;display:inline-grid}.closer{align-items:flex-start;gap:var(--s3);flex-direction:column;display:flex}.landing-foot{width:100%;max-width:1120px;padding:var(--s5) var(--s4) var(--s6);border-top:2px solid var(--line);justify-content:space-between;gap:var(--s3);color:var(--ink-soft);font-size:var(--text-sm);flex-wrap:wrap;margin:clamp(48px,8vw,96px) auto 0;display:flex}@media (width<=860px){.hero-inner,.split{grid-template-columns:1fr}.steps{grid-template-columns:1fr 1fr}}@media (width<=520px){.steps{grid-template-columns:1fr}.demo{padding:var(--s4)}.demo-q{font-size:1.2rem}.board{padding:var(--s3) var(--s4)}.board-rows li{gap:var(--s2);grid-template-columns:5.5rem auto 1fr}}.streak-tile{min-width:76px;padding:var(--s2) var(--s3);background:var(--fog-deep);border-radius:14px;justify-items:center;line-height:1.1;display:grid}.streak-tile.is-on{background:var(--buzz);box-shadow:0 3px #b98f12}.streak-num{font-size:1.75rem;font-weight:800}.streak-label{font-size:var(--text-sm);font-weight:700}.question{border-top:0;padding-top:0}.question legend{float:left;width:100%;margin-bottom:var(--s3)}.question .choices{clear:both}.question+.question{margin-top:var(--s3);padding-top:var(--s5);border-top:2px dashed var(--line)}.q-num{align-items:center;gap:var(--s2);margin-bottom:var(--s1);font-weight:800;display:flex}.q-cat{background:var(--brand-soft);color:var(--brand-strong);border-radius:999px;padding:1px 8px;font-size:.8rem;font-weight:700}.q-text{margin-bottom:0}.progress{margin-bottom:var(--s4);align-items:center;gap:6px;display:flex}.progress-sq{border:2px solid var(--line);background:var(--surface);border-radius:6px;width:22px;height:22px}.progress-sq.is-done{background:var(--brand);border-color:var(--brand)}.progress-label{margin-left:var(--s2);font-size:var(--text-sm);color:var(--ink-soft);font-weight:700}.today-hero .btn-secondary{background:var(--surface);border-color:var(--surface);box-shadow:0 2px #0b2a30}.today-hero .sq-wrong{box-shadow:0 0 0 2px #fff3}td .sq{border-radius:5px;width:20px;height:20px;font-size:12px}@media (width<=640px){.topbar{padding:var(--s3) var(--s4) var(--s2);row-gap:var(--s2)}.topbar>.row{flex-wrap:nowrap;flex:1;min-width:0}.group-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.nav{width:calc(100% + 2 * var(--s4));margin:0 calc(-1 * var(--s4));padding:0 var(--s4) var(--s1);scrollbar-width:none;order:3}.nav a{white-space:nowrap;flex-shrink:0}.topbar>.btn-ghost{min-height:36px;padding:0 var(--s2)}}.save-bar{padding:var(--s3) 0;background:linear-gradient(to bottom, transparent, var(--fog) 30%);justify-content:flex-end;display:flex;bottom:0}
