:root{--bg:#f6f7fb;--card:#fff;--ink:#1b2333;--muted:#576174;--line:#d9dfe9;--accent:#5b3fd1;--accent2:#0f766e;--soft:#efecfd;--good:#15803d;--mid:#b45309;--bad:#b91c1c;--focus:#f59e0b}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:17px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.skip{position:absolute;left:-999px;top:0;background:#000;color:#fff;padding:8px 12px;z-index:50}.skip:focus{left:8px}
header.top{background:linear-gradient(135deg,#5b3fd1,#0f766e);color:#fff;padding:18px 16px 14px}
header.top .wrap{max-width:960px;margin:0 auto;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
header.top h1{margin:0;font-size:1.45rem}header.top p{margin:2px 0 0;opacity:.92;font-size:.95rem}
.donate{display:inline-block;background:#fff;color:#5b3fd1;font-weight:600;text-decoration:none;border-radius:999px;padding:7px 14px;font-size:.92rem}
nav.tabs{position:sticky;top:0;z-index:10;background:var(--card);border-bottom:1px solid var(--line);overflow-x:auto;white-space:nowrap;padding:8px 10px}
nav.tabs .wrap{max-width:960px;margin:0 auto;display:flex;gap:6px}
nav.tabs button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:7px 13px;font:inherit;font-size:.92rem;cursor:pointer;flex:none}
nav.tabs button[aria-current="page"]{background:var(--accent);border-color:var(--accent);color:#fff}
main{max-width:960px;margin:0 auto;padding:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:16px}
h2{margin:0 0 8px;font-size:1.25rem}h3{margin:16px 0 6px;font-size:1.05rem}
.muted{color:var(--muted)}.small{font-size:.88rem}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.tile{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--card)}
.tile h3{margin:0 0 4px}
.btn{font:inherit;padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;min-height:44px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.teal{background:var(--accent2);border-color:var(--accent2);color:#fff}
.btn:disabled{opacity:.5;cursor:default}.btn.sm{padding:6px 10px;min-height:36px;font-size:.9rem}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
label.f{display:flex;flex-direction:column;gap:4px;font-size:.92rem;min-width:150px;flex:1}
input,select,textarea{font:inherit;padding:9px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);width:100%}
.note{background:var(--soft);border-radius:12px;padding:10px 12px;font-size:.93rem}
.warn{background:#fff4e5;border-radius:12px;padding:10px 12px;font-size:.93rem}
.pill{display:inline-block;font-size:.78rem;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--soft);color:var(--accent)}
.passage{background:#fbfaff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;max-height:52vh;overflow:auto;font-size:.97rem}
.passage p{margin:.4em 0}
details.pass summary{cursor:pointer;font-weight:600;margin:6px 0}
.q{border:1px solid var(--line);border-radius:14px;padding:14px;margin:10px 0}
.q .stem{margin:0 0 10px}
.q u{text-decoration-thickness:2px;text-underline-offset:3px}
fieldset{border:0;margin:0;padding:0}legend{padding:0}
.choice{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:6px 0;cursor:pointer;background:#fff}
.choice input{width:22px;height:22px;margin:2px 0 0;flex:none}
.choice.sel{border-color:var(--accent);background:var(--soft)}
.choice.right{border-color:var(--good);background:#ecfdf3}.choice.wrong{border-color:var(--bad);background:#fef2f2}
.letter{font-weight:700;min-width:1.3em}
.fb{margin-top:8px;padding:10px 12px;border-radius:12px;font-size:.95rem}
.fb.ok{background:#ecfdf3}.fb.no{background:#fef2f2}
.timer{position:sticky;top:56px;z-index:9;background:#1b2333;color:#fff;border-radius:12px;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.timer b{font-variant-numeric:tabular-nums;font-size:1.2rem}.timer.low{background:var(--bad)}
.bars{display:grid;gap:8px}.bar{display:grid;grid-template-columns:minmax(120px,210px) 1fr 74px;gap:8px;align-items:center;font-size:.92rem}
.bar .t{height:12px;background:#eceff5;border-radius:6px;overflow:hidden}.bar .t i{display:block;height:100%}
.lv-strong{color:var(--good)}.lv-ok{color:var(--mid)}.lv-focus{color:var(--bad)}
table{border-collapse:collapse;width:100%;font-size:.93rem}th,td{border-bottom:1px solid var(--line);padding:7px 6px;text-align:left;vertical-align:top}
table.data{width:auto;min-width:60%;margin:6px 0 10px;background:#fff}table.data th{background:#f1f3f8}
.sheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px 18px}
.bub{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:1px dashed var(--line)}
.bub .n{width:2.2em;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.bub label{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:2px solid #8b93a7;border-radius:50%;cursor:pointer;font-weight:600;font-size:.9rem;position:relative}
.bub input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.bub label.on{background:#1b2333;color:#fff;border-color:#1b2333}
.bub label:focus-within{outline:3px solid var(--focus);outline-offset:1px}
.bub.miss .n{color:var(--bad)}
.lesson{border:1px solid var(--line);border-radius:14px;padding:14px;margin:10px 0;background:#fff}
.lesson h3{margin-top:0}.lesson .ex{background:#f6f7fb;border-left:4px solid var(--accent2);padding:8px 10px;border-radius:6px}
.week{border-left:4px solid var(--accent);padding:6px 12px;margin:10px 0;background:#fff;border-radius:0 12px 12px 0}
.week h4{margin:0 0 4px}
footer.site{max-width:960px;margin:0 auto;padding:8px 16px 40px;font-size:.85rem;color:var(--muted)}
.sponsors{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:10px 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.sponsors .lab{font-weight:600;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}
.sponsor{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);border:1px dashed transparent;border-radius:10px;padding:4px 8px}
.sponsor img{height:32px;width:auto;max-width:120px;object-fit:contain}
.sponsor.ph{border-color:var(--line);color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (max-width:600px){body{font-size:16px}.bar{grid-template-columns:110px 1fr 60px}.card{padding:14px}.timer{top:52px}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{nav.tabs,header.top,footer.site,.noprint{display:none!important}body{background:#fff}}
/* shared Find My Fit College sponsor strip (sponsors.js) */
.sp-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0;font-size:.82rem;color:var(--muted)}
.sp-label{font-weight:600;margin-right:4px}
.sp-slot{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:140px;min-height:56px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);text-decoration:none;text-align:center}
.sp-slot img{max-width:120px;max-height:40px}
.sp-open{border-style:dashed;color:var(--muted)}.sp-open span{color:var(--accent)}
.sp-more{font-size:.78rem;flex-basis:100%}
.homelink{color:#fff;font-size:.88rem;opacity:.95}
