:root{--navy:#102a43;--blue:#1565c0;--ink:#172b4d;--muted:#627d98;--line:#d9e2ec;--surface:#fff;--page:#f0f4f8;--good:#0f9d58;--bad:#d64545;--warn:#a15c00;--shadow:0 10px 30px #102a4314;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--page)}
*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--page);color:var(--ink)}body.dark{--ink:#eaf2f8;--muted:#a0b3c5;--line:#334e68;--surface:#1e354b;--page:#102438;--navy:#071b2d;--blue:#5ba7f7}button,select{font:inherit}button{cursor:pointer;border:0;border-radius:9px;padding:.65rem .9rem;background:var(--navy);color:#fff;font-weight:700}button:hover{filter:brightness(1.1)}button:disabled{opacity:.45;cursor:not-allowed}.ghost,.secondary{background:transparent;border:1px solid var(--line);color:var(--ink)}.danger{background:var(--bad)}.success{background:var(--good)}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;z-index:9;background:#fff;padding:.5rem}.site-header{padding:1rem max(1rem,calc((100% - 1120px)/2));background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:flex;gap:.75rem;align-items:center}.brand strong{display:block;font-size:1.05rem}.brand small{display:block;opacity:.76;font-size:.75rem}.brand-mark{width:2.3rem;height:2.3rem;display:grid;place-items:center;border:2px solid #fff;border-radius:50%;font-weight:900}.header-actions{display:flex;gap:.5rem}.site-header .ghost{color:#fff;border-color:#ffffff66}.icon-button{padding:.5rem;background:#ffffff1f}.main-nav{position:sticky;top:0;z-index:5;display:flex;overflow:auto;background:var(--surface);border-bottom:1px solid var(--line);padding:0 max(1rem,calc((100% - 1120px)/2))}.main-nav a{padding:.85rem .75rem;white-space:nowrap;color:var(--muted);text-decoration:none;font-weight:700;font-size:.9rem}.main-nav a.active{color:var(--blue);box-shadow:inset 0 -3px var(--blue)}main{max-width:1120px;margin:auto;padding:1.25rem 1rem 5rem}.loading{color:var(--muted);padding:3rem;text-align:center}.hero{padding:1.6rem;border-radius:16px;background:linear-gradient(135deg,var(--navy),#164b7a);color:#fff;display:flex;justify-content:space-between;gap:1rem;align-items:center}.eyebrow{color:var(--blue);font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.hero .eyebrow{color:#b9e3ff}.hero h1{margin:.2rem 0;font-size:clamp(1.7rem,4vw,2.5rem)}.hero p{margin:.3rem 0;max-width:60ch;color:#e1effb}.grid{display:grid;gap:1rem;margin:1rem 0}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.1rem;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.metric{font-size:2rem;font-weight:900}.muted{color:var(--muted)}.notice{padding:.85rem;border-left:4px solid var(--blue);background:#d9efff;color:#102a43;border-radius:6px}.dark .notice{background:#163956;color:#eaf2f8}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:.8rem}.topic-card{width:100%;text-align:left;background:var(--surface);color:var(--ink);border:1px solid var(--line);padding:1rem}.topic-card.selected{border:2px solid var(--blue);background:#eaf4ff}.dark .topic-card.selected{background:#163956}.topic-card small{display:block;color:var(--muted);margin-top:.4rem}.topic-card b{color:var(--blue)}.choice-grid{display:grid;gap:.65rem}.choice{background:var(--surface);border:1px solid var(--line);color:var(--ink);text-align:left}.choice.selected{border:2px solid var(--blue)}.choice.correct{background:#def7e7;border-color:var(--good);color:#075e32}.choice.incorrect{background:#ffe7e7;border-color:var(--bad);color:#8d1d1d}.question-meta{display:flex;justify-content:space-between;gap:1rem;color:var(--muted);font-size:.9rem}.question-text{font-size:1.15rem;line-height:1.55}.controls{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1rem}.controls .spacer{flex:1}.progress-bar{height:.55rem;background:var(--line);border-radius:99px;overflow:hidden}.progress-bar>*{height:100%;background:var(--blue)}.ring{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--blue) var(--value),var(--line) 0)}.ring>span{width:92px;height:92px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:1.4rem;font-weight:900}.list{padding-left:1.1rem}.list li{margin:.4rem 0}.pill{display:inline-block;padding:.25rem .5rem;border-radius:99px;background:#d9efff;color:#0b4a6f;font-size:.75rem;font-weight:800}.dark .pill{background:#163956;color:#bee3f8}.tool-dock{position:fixed;right:1rem;bottom:1rem;z-index:4;display:flex;gap:.45rem;box-shadow:var(--shadow)}.tool-dock button{font-size:.8rem}dialog{border:1px solid var(--line);border-radius:14px;max-width:min(680px,94vw);background:var(--surface);color:var(--ink);box-shadow:0 20px 60px #0006}dialog::backdrop{background:#0008}.calculator{width:min(340px,86vw)}.calc-display{padding:.75rem;background:var(--page);border-radius:8px;text-align:right;min-height:3rem;overflow:auto}.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin-top:.5rem}.calc-grid button{padding:.8rem}.whiteboard{touch-action:none;width:100%;height:350px;border:1px solid var(--line);border-radius:8px;background:#fff}.tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.tabs button{background:var(--surface);border:1px solid var(--line);color:var(--ink)}.tabs button.active{background:var(--blue);color:#fff}.review-item{border-top:1px solid var(--line);padding:1rem 0}.review-item:first-of-type{border-top:0}.status-good{color:var(--good)}.status-bad{color:var(--bad)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:.6rem;text-align:left;border-bottom:1px solid var(--line)}.print-only{display:none}.flashcard{min-height:160px;display:grid;align-content:center;text-align:center}.flashcard p{font-size:1.1rem}.inline-select{padding:.6rem;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}
@media(max-width:700px){.grid.two,.grid.three{grid-template-columns:1fr}.hero{display:block}.hero button{margin-top:1rem}.header-actions .ghost{display:none}.site-header{position:relative}.question-text{font-size:1.05rem}}
@media print{body{background:#fff;color:#000}.site-header,.main-nav,.tool-dock,button,dialog,.no-print{display:none!important}main{max-width:none;padding:0}.card{box-shadow:none;border-color:#bbb;break-inside:avoid}.print-only{display:block}.grid{display:block}.grid>.card{margin:0 0 .5rem}.topic-grid{grid-template-columns:repeat(2,1fr)}.page-break{break-before:page}}
.tool-dock{left:50%;right:auto;transform:translateX(-50%)}.tool-dock button{white-space:nowrap}.calc-grid .equals{background:var(--blue)}.calc-grid .empty{visibility:hidden}.board-toolbar{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}.board-toolbar button.active{background:var(--blue);color:#fff}
.session-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.7rem}.session-top .next{justify-self:end}.session-timer{font-weight:900;font-size:1.1rem;text-align:center}.session-count{text-align:center;margin:.75rem 0;color:var(--muted);font-weight:700}.session-actions{display:flex;justify-content:center;gap:.55rem;flex-wrap:wrap;margin:.75rem 0 1rem}.session-actions button{min-width:5.5rem}.readiness-card{display:flex;align-items:center;gap:1.1rem}.ring{flex:none}.pause-screen{max-width:600px;margin:4rem auto;text-align:center}.pause-screen p{line-height:1.55}
.tool-dock button{min-width:2.65rem;padding:.65rem}.pause-button{background:var(--blue)!important;color:#fff}.restart-button{background:#6b7280!important;color:#fff}.dark .whiteboard{background:#102438}.review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(2.4rem,1fr));gap:.4rem}.review-grid button{padding:.55rem .25rem;background:#7b8794}.review-grid button.correct{background:var(--good)}.review-grid button.incorrect{background:var(--bad)}.review-grid button.unanswered{background:#7b8794}.review-grid button.active{outline:3px solid var(--blue);outline-offset:2px}
.session-top button{font-size:0;min-width:2.8rem}.session-top button:first-child:after{content:'←';font-size:1.25rem}.session-top button.next:after{content:'→';font-size:1.25rem}.session-actions button:first-child{background:var(--blue)!important;color:#fff}.session-actions button:nth-child(2){background:#6b7280!important;color:#fff}
.hero button,.pause-screen .eyebrow{text-transform:capitalize}
.brand-mark{object-fit:cover;background:#fff}.session-top{width:100%}.session-top button:first-child{justify-self:start}.session-top .next{justify-self:end}.flashcard{min-height:230px;padding:1.5rem 1rem;border:1px solid var(--line);border-radius:12px;background:linear-gradient(145deg,var(--surface),var(--page));gap:1rem}.flashcard .pill{justify-self:center}.flashcard p{max-width:34ch;margin:0 auto;line-height:1.65}.flashcard+.controls{justify-content:center}.study-materials .study-note{padding:1rem;border-left:4px solid var(--blue);background:var(--page);border-radius:8px;margin:.65rem 0}.splash-mark{object-fit:cover;background:#fff}.dark .whiteboard{background:#102438}
.whiteboard{background:#fff}.dark .whiteboard{background:#fff;filter:invert(1) hue-rotate(180deg)}.flashcard+.controls{display:flex;justify-content:space-between;margin:1.4rem 0 2.2rem}.splash-mark{width:9rem;height:9rem;border:0;border-radius:22%;box-shadow:0 14px 38px #0004}
.tool-dock[hidden]{display:none!important}.tool-dock{position:fixed;left:50%;right:auto;bottom:0;transform:translateX(-50%);padding:.45rem .7rem calc(.45rem + env(safe-area-inset-bottom));background:var(--surface);border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;box-shadow:0 -8px 24px #102a4326}.tool-dock button{font-size:1.35rem;line-height:1;min-width:3.25rem;min-height:3.1rem;padding:.5rem}.session-top button{color:transparent}.session-top button:after{color:var(--ink)}main{padding-bottom:7.5rem}.app-splash{position:fixed;inset:0;z-index:50;display:grid;place-content:center;background:#111827}.splash-mark{width:160px;height:160px;margin:0;border:0;border-radius:0;box-shadow:none;background:transparent;object-fit:contain}
@media(max-width:700px){.session-top{grid-template-columns:1fr auto 1fr}.session-top button{padding:.55rem .65rem;font-size:.8rem}.session-timer{font-size:.95rem}.session-actions button{flex:1}.readiness-card{justify-content:center}}
/* Flashcard session */
.flashcard-definition{max-width:55ch;font-size:clamp(1.1rem,2.2vw,1.65rem);line-height:1.6;font-weight:500}
.flashcard-session-launch{margin-bottom:1.25rem}
.practice-field{display:grid;gap:.45rem;font-weight:700}.practice-field .inline-select{width:100%}
.account-label{font-size:.85rem;font-weight:800;max-width:13rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-shell{max-width:920px;margin:clamp(1.5rem,7vw,5rem) auto}.auth-intro{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.5rem}.auth-intro img{width:104px;height:104px;object-fit:contain;flex:none}.auth-intro h1{margin:.15rem 0;font-size:clamp(1.8rem,4vw,2.6rem)}.auth-intro p{color:var(--muted);max-width:54ch;line-height:1.6}.auth-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.auth-form{display:grid;gap:1rem}.auth-form label{display:grid;gap:.45rem;font-weight:800}.auth-form input{width:100%;padding:.7rem;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink)}.auth-form small{font-weight:500;color:var(--muted);line-height:1.35}.auth-error{min-height:1.4rem;color:var(--bad);font-weight:700;margin:1rem 0;text-align:center}.dark .auth-form input{background:var(--page)}@media(max-width:700px){.auth-grid{grid-template-columns:1fr}.auth-intro{align-items:flex-start}.auth-intro img{width:72px;height:72px}.account-label{display:none}}
.main-nav[hidden]{display:none}.account-chip{display:flex;align-items:center;gap:.5rem;padding:.28rem .55rem .28rem .32rem;border:1px solid #ffffff3d;border-radius:999px;background:#ffffff14;color:#fff}.account-avatar{width:2rem;height:2rem;display:grid;place-items:center;border-radius:50%;background:#fff;color:var(--navy);font-size:.82rem;font-weight:900}.account-copy{display:grid;line-height:1.05}.account-copy small{opacity:.72;font-size:.62rem}.account-copy strong{font-size:.82rem}.auth-mobile-switch{display:none}.auth-form input{min-height:2.85rem}.auth-form button{min-height:2.9rem}@media(max-width:700px){.auth-shell{margin:1rem auto 2rem}.auth-intro{display:grid;grid-template-columns:72px minmax(0,1fr);gap:1rem;align-items:start;margin-bottom:1.35rem}.auth-intro img{width:72px;height:72px}.auth-intro h1{font-size:1.7rem;line-height:1.12}.auth-intro p{font-size:.96rem;margin-top:.65rem}.auth-grid{grid-template-columns:1fr;gap:0}.auth-mobile-switch{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:0 0 .8rem}.auth-mobile-switch button{min-height:3rem}.auth-panel:not(.active){display:none}.auth-panel{padding:1.25rem}.auth-form{gap:1.1rem}.account-copy{display:none}.account-chip{padding:.25rem}.account-avatar{width:2.15rem;height:2.15rem}.header-actions{gap:.35rem}.header-actions .ghost{padding:.5rem .65rem}.auth-error{text-align:left;margin:.8rem .1rem}.main-nav[hidden]{display:none!important}}
.flashcard-setup fieldset{margin:0 0 1.25rem;padding:1rem;border:1px solid var(--line);border-radius:12px}.flashcard-setup legend{padding:0 .35rem;font-weight:800}.flashcard-choice{display:flex;gap:.7rem;align-items:flex-start;padding:.75rem;border:1px solid transparent;border-radius:9px;cursor:pointer}.flashcard-choice:has(input:checked){border-color:var(--blue);background:color-mix(in srgb,var(--blue) 10%,transparent)}.flashcard-choice input{margin-top:.2rem}.flashcard-choice b,.flashcard-choice small{display:block}.flashcard-choice small{margin-top:.2rem;color:var(--muted)}.flashcard-topic-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.45rem;margin-top:.8rem;padding:.85rem;border-top:1px solid var(--line)}.flashcard-topic-option{display:flex;gap:.45rem;align-items:flex-start;padding:.45rem;border-radius:7px;cursor:pointer}.flashcard-topic-option:has(input:checked){background:color-mix(in srgb,var(--blue) 13%,transparent)}body.flashcard-session-active{overflow:hidden;background:#111827}body.flashcard-session-active .site-header,body.flashcard-session-active .main-nav{display:none}body.flashcard-session-active main#app{position:fixed;inset:0;z-index:40;max-width:none;margin:0;padding:0;background:#111827;color:#f8fafc;overflow:auto}.flashcard-stage{min-height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:1rem;padding:clamp(1rem,3vw,2.5rem);background:radial-gradient(circle at 50% 20%,#1e3a5f 0,#111827 55%);color:#f8fafc}.flashcard-stage-top{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1rem;font-weight:800}.flashcard-stage-top span{justify-self:end}.flashcard-stage .secondary{color:#f8fafc;border-color:#94a3b866}.flashcard-rotate-note{margin:0;text-align:center;color:#cbd5e1}.flashcard-play-card{width:min(980px,100%);height:100%;min-height:340px;justify-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;padding:clamp(1.5rem,5vw,5rem);border:1px solid #93c5fd55;border-radius:24px;background:#f8fafc;color:#111827;box-shadow:0 24px 70px #0007;text-align:center}.flashcard-play-card.revealed{background:linear-gradient(135deg,#eff6ff,#dbeafe)}.flashcard-stage-label{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:#1d4ed8;font-weight:900}.flashcard-play-card strong{font-size:clamp(1.7rem,4vw,3.25rem);line-height:1.15}.flashcard-play-card p{max-width:55ch;margin:0;font-size:clamp(1.1rem,2.2vw,1.65rem);line-height:1.6;font-weight:500}.flashcard-play-card small{color:#475569;font-weight:700}.flashcard-stage-controls{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;width:min(980px,100%);justify-self:center}.flashcard-stage-controls button{min-height:3.2rem}@media(max-width:700px){.flashcard-stage{padding:1rem}.flashcard-stage-top span{font-size:.84rem;text-align:right}.flashcard-play-card{min-height:300px}.flashcard-stage-controls{gap:.55rem}.flashcard-stage-controls button{padding:.65rem .4rem}}
