@font-face{font-family:"Fredoka";src:url(fonts/Fredoka-VF.ttf) format("truetype");font-weight:300 700;font-display:swap}
@font-face{font-family:"Patrick Hand";src:url(fonts/PatrickHand-Regular.ttf) format("truetype");font-display:swap}
:root{--bg:#F4EDE0;--card:#FFFFFF;--line:#E3D8C4;--fg:#1B2B3A;--muted:#56606C;--accent:#C9411F;--accent-deep:#A8371B;--soft:#F8DDD3;--bar:#1B2B3A;--bar2:#2A3E50;--ok:#0F766E;--ok-bg:#E3F3EF;--bad:#B4232F;--bad-bg:#FBE9EA;--paper:#FFFFFF;
--display:"Fredoka",ui-rounded,system-ui,sans-serif;--hand:"Patrick Hand","Comic Neue",cursive;--tabh:64px;color-scheme:light}
@media (prefers-color-scheme:dark){:root{--bg:#121C26;--card:#1B2834;--line:#2E3F4E;--fg:#EEF1F8;--muted:#A9B1C7;--accent:#F0704F;--accent-deep:#F59A80;--soft:#3A231E;--bar:#0D151D;--bar2:#1B2834;--ok:#5ED3BE;--ok-bg:#16332F;--bad:#FF8A93;--bad-bg:#3A1D22;--paper:#F7F4EE;color-scheme:dark}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;height:100%}
body{margin:0;min-height:100%;background:var(--bg);color:var(--fg);font-family:var(--display);font-size:17px;line-height:1.5;-webkit-tap-highlight-color:transparent}
img{max-width:100%}
[hidden]{display:none!important}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
sub,sup{font-size:.7em;line-height:0}

/* top bar */
.bar{position:sticky;top:0;z-index:20;background:var(--bar);color:#fff;display:flex;align-items:center;gap:10px;
  padding:calc(env(safe-area-inset-top,0px) + 10px) max(14px,env(safe-area-inset-right,0px)) 10px max(14px,env(safe-area-inset-left,0px))}
.back{flex:none;width:44px;height:44px;margin-left:-8px;border:0;background:none;color:#fff;display:grid;place-items:center;border-radius:50%;cursor:pointer}
.barlogo{flex:none;width:34px;height:34px;border-radius:50%}
.bartitle{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.bartitle span{font-size:12px;color:var(--accent);font-weight:600;letter-spacing:.04em}
.bartitle strong{font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

main{padding:18px max(16px,env(safe-area-inset-right,0px)) calc(var(--tabh) + 28px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));max-width:720px;margin:0 auto;outline:none}
main.home{padding-bottom:40px}
h1{font-size:26px;line-height:1.2;margin:0 0 6px;text-wrap:balance}
h2{font-size:20px;line-height:1.25;margin:0;text-wrap:balance}
.lead{margin:0 0 18px;color:var(--muted);font-size:15px}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep);margin:0}
.stack{display:flex;flex-direction:column;gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.muted{color:var(--muted)}

/* home */
.hero{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.hero img{width:72px;height:72px;flex:none}
.chap{display:grid;grid-template-columns:56px 1fr;gap:14px;align-items:center;text-decoration:none;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px}
.chap .no{width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:26px;font-weight:600}
.chap h2{font-size:18px}
.chap p{margin:2px 0 0;font-size:14px;color:var(--muted)}
.meter{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:8px}
.meter i{display:block;height:100%;background:var(--ok);border-radius:3px}
.soon{border-style:dashed;color:var(--muted);font-size:14px;text-align:center;padding:16px}
.install{background:var(--soft);border:0}
.install b{color:var(--accent-deep)}

/* bottom tabs */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--card);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(7,1fr);
  padding:4px max(4px,env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) max(4px,env(safe-area-inset-left,0px))}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--tabh);font-size:11px;min-width:0;font-weight:500;color:var(--muted);text-decoration:none;border-radius:12px}
.tabs a svg{width:24px;height:24px}
.tabs a[aria-current="page"]{color:var(--accent-deep);background:var(--soft)}

/* notes */
.page{padding:0;overflow:hidden;cursor:zoom-in;border:1px solid var(--line);background:var(--card);border-radius:14px;text-align:left}
.page img{display:block;width:100%;height:auto;aspect-ratio:794/1123;background:var(--paper)}
.page span{display:flex;justify-content:space-between;padding:10px 14px;font-size:15px;font-weight:500}
.page span em{font-style:normal;color:var(--muted);font-size:13px}
.viewer{position:fixed;inset:0;z-index:50;background:#0B0F1A;display:flex;flex-direction:column}
.vbar{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#fff;padding:calc(env(safe-area-inset-top,0px) + 8px) max(12px,env(safe-area-inset-right,0px)) 8px max(14px,env(safe-area-inset-left,0px))}
.vbar span{font-weight:500;font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vbtns{display:flex;gap:8px;flex:none}
.vbtns button{background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:999px;padding:8px 14px;min-height:40px;font-weight:500;cursor:pointer}
.vscroll{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}
.vscroll img{display:block;width:100%;height:auto;background:#fff}
.vscroll.z img{width:200%;max-width:none}

/* chips / segmented */
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:6px;scrollbar-width:none}
.chips button{flex:none;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 14px;min-height:40px;font-size:14px;font-weight:500;cursor:pointer}
.chips button[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}

/* diagrams */
.fig{position:relative;container-type:inline-size;background:var(--paper);border-radius:10px;overflow:hidden}
.fig img{display:block;width:100%;height:auto}
.lab{position:absolute;white-space:nowrap;font-family:var(--display);line-height:1;border:0;padding:0;background:none;cursor:pointer;color:#1B2B3A}
.lab{padding:3px 5px;margin:-3px -5px}
.lab.hid{color:transparent;background:#F8DDD3;border:1.5px dashed #C9411F;border-radius:4px}
.lab.hid::after{content:"?";color:#A8371B;position:absolute;inset:0;display:grid;place-items:center;font-weight:600}
.btnrow{display:flex;gap:8px;flex-wrap:wrap}
.btn{border:0;border-radius:999px;padding:10px 16px;min-height:44px;font-weight:600;font-size:15px;cursor:pointer;background:var(--accent);color:#fff}
.btn.ghost{background:var(--card);color:var(--fg);border:1.5px solid var(--line)}
.btn.small{min-height:38px;padding:6px 12px;font-size:14px}
.count{font-size:13px;color:var(--muted)}
ol.steps{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px;font-size:15px}
ul.check{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:15px}
ul.check li::before{content:"✓ ";color:var(--ok);font-weight:600}
.warn{background:var(--bad-bg);border-radius:10px;padding:8px 12px;font-size:15px}

/* details */
details{border-top:1px dashed var(--line);padding-top:10px}
summary{cursor:pointer;font-weight:600;color:var(--accent-deep);min-height:36px;display:flex;align-items:center;gap:8px;list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:"+";flex:none;width:22px;height:22px;border-radius:50%;background:var(--soft);display:grid;place-items:center;font-size:16px;line-height:1}
details[open] summary::before{content:"–"}
.qn{font-size:12px;font-weight:600;color:var(--accent-deep);letter-spacing:.05em}
.qtext{margin:0;font-size:17px;font-weight:500;line-height:1.45}
.search{width:100%;font:16px var(--display);color:var(--fg);background:var(--card);border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px}
.group{margin:18px 0 6px;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}

/* NCERT solution markup from the handouts */
.sol{font-size:16px;line-height:1.5}
.sol b{font-weight:600}
.sol .a{margin-top:0}
.sol .eq{font-weight:500}
.sol .arr{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;line-height:1;margin:0 3px}
.sol .arr small{font-size:10px;color:var(--muted)}
.sol .tag{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:22px;padding:0 6px;border-radius:6px;color:#fff;font-size:12px;font-weight:600;vertical-align:middle}
.sol .heat{display:inline-flex;align-items:center;height:22px;padding:0 6px;border-radius:6px;border:1.5px solid currentColor;font-size:12px;font-weight:600;vertical-align:middle}
.sol .ans{display:inline-flex;align-items:center;padding:2px 9px;border-radius:6px;background:var(--soft);color:var(--accent-deep);font-size:14px;font-weight:600}
.sol .hand{font-family:var(--hand);font-size:18px;color:var(--muted)}
.sol .note,.sol .qs{font-size:14px;color:var(--muted)}
.sol .lab{position:static;font-size:14px;font-weight:600;color:var(--accent-deep);white-space:normal;cursor:auto}
.sol .ok{color:var(--ok);font-weight:600}.sol .no{color:var(--bad);font-weight:600}
.sol .sub{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:6px;margin-top:6px;align-items:start}
.sol .sub>span:nth-child(odd){font-weight:600;color:var(--accent-deep)}
.sol .two{display:grid;grid-template-columns:1fr;gap:10px;margin-top:6px}
@media (min-width:560px){.sol .two{grid-template-columns:1fr 1fr}}
.sol .opts{display:grid;grid-template-columns:1fr;gap:2px;color:var(--muted);font-size:15px}
.sol .r8{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.sol .r8 .l{font-weight:600;color:var(--accent-deep)}
.sol .ty{display:flex;align-items:center;gap:6px;font-size:14px}
.sol .cmp{display:grid;grid-template-columns:90px minmax(0,1fr) minmax(0,1fr);border-top:1px solid var(--line);font-size:14px}
.sol .cmp>div{padding:6px 8px}
.sol table.t,.sol table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.4}
.sol table th{background:var(--fg);color:var(--bg);text-align:left;padding:6px 8px;font-weight:600}
.sol table td{border-top:1px solid var(--line);padding:6px 8px;vertical-align:top}
.sol table th[style],.sol table td[style]{width:auto!important}
.sol ul{margin:0;padding-left:20px}
.sol .tbl{overflow-x:auto}
.sol [style*="font-size"]{font-size:inherit!important}

/* quiz */
.dpp{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.dpp h2{font-size:17px}
.best{font-size:13px;font-weight:600;border-radius:999px;padding:4px 10px;background:var(--soft);color:var(--accent-deep);white-space:nowrap}
.best.done{background:var(--ok-bg);color:var(--ok)}
.qhead{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}
.prog{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.prog i{display:block;height:100%;background:var(--accent);transition:width .2s}
.opts{display:flex;flex-direction:column;gap:10px}
.opt{display:flex;gap:12px;align-items:center;text-align:left;border:1.5px solid var(--line);background:var(--card);border-radius:12px;padding:12px 14px;min-height:54px;font-size:16px;cursor:pointer}
.opt span.k{flex:none;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--muted);display:grid;place-items:center;font-weight:600;font-size:14px}
.opt.right{border-color:var(--ok);background:var(--ok-bg)}
.opt.wrong{border-color:var(--bad);background:var(--bad-bg)}
.opt:disabled{cursor:default;color:var(--fg)}
.expl{border-radius:12px;padding:12px 14px;font-size:16px}
.expl.ok{background:var(--ok-bg)}.expl.no{background:var(--bad-bg)}
.expl b{display:block;margin-bottom:2px}
.result{text-align:center;align-items:center}
.big{font-size:48px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}
.review{font-size:15px}
.review .r{border-top:1px solid var(--line);padding:10px 0}

/* practice */
.hand{font-family:var(--hand);font-size:19px;line-height:1.35}
.ar .optgrid{display:grid;grid-template-columns:1fr;gap:8px}
@media (min-width:520px){.ar .optgrid{grid-template-columns:1fr 1fr}}
.tagA,.tagR{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;background:var(--fg);color:var(--bg);font-size:12px;margin-right:4px}
.tagR{background:var(--accent-deep);color:#fff}
.mk{display:inline-block;font-size:12px;font-weight:600;color:var(--accent-deep);background:var(--soft);border-radius:6px;padding:0 6px;margin-left:2px;white-space:nowrap}
.weak{background:var(--bad-bg);border-radius:10px;padding:10px 12px}
.full{background:var(--ok-bg);border-radius:10px;padding:10px 12px;margin-top:8px}
.lbl{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
textarea{font:16px var(--display);color:var(--fg);background:var(--bg);border:1.5px solid var(--line);border-radius:10px;padding:10px;width:100%;resize:vertical}
.fig2{margin:0;background:var(--paper);border-radius:10px;padding:6px;overflow-x:auto}
.fig2 img{display:block;width:100%;min-width:300px}
ol.parts{margin:0;padding-left:26px;list-style:lower-roman;display:flex;flex-direction:column;gap:6px}
ol.parts li::marker{color:var(--accent-deep);font-weight:600}
ul.ansl{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabh) + 22px + env(safe-area-inset-bottom,0px));z-index:60;background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:14px;font-weight:500;box-shadow:0 6px 18px rgba(0,0,0,.2);max-width:calc(100% - 32px)}
footer.foot{margin-top:28px;text-align:center;font-size:13px;color:var(--muted);line-height:2}
footer.foot a{color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* videos */
.vhead{display:flex;justify-content:space-between;align-items:center;gap:10px}
.lno{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-deep)}
.soonpill{font-size:12px;font-weight:600;border-radius:999px;padding:4px 10px;background:var(--line);color:var(--muted)}
.seen{border:1.5px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;min-height:36px;font-size:13px;font-weight:600;cursor:pointer}
.seen.on{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.yt{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:var(--bar)}
.yt iframe,.ytplay{position:absolute;inset:0;width:100%;height:100%;border:0}
.ytplay{padding:0;background:var(--bar);cursor:pointer}
.ytplay img{width:100%;height:100%;object-fit:cover;display:block}
.pbtn{position:absolute;inset:0;display:grid;place-items:center}
.yt.ph{aspect-ratio:16/5;display:grid;place-items:center;background:repeating-linear-gradient(135deg,var(--soft),var(--soft) 14px,var(--card) 14px,var(--card) 28px);border:1px dashed var(--line)}
.yt.ph span{font-weight:600;color:var(--accent-deep);background:var(--card);padding:6px 14px;border-radius:999px}
.vid a{color:var(--accent-deep);font-weight:600}
.vid .btn.ghost{color:var(--fg);text-decoration:none}

.lvl{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:6px;padding:2px 7px;margin-bottom:4px;background:var(--soft);color:var(--accent-deep)}
.lv-Board{background:#E3E9F7;color:#1B2B3A}.lv-Challenge{background:#FBE1CC;color:#8A3A00}.lv-Mixed{background:#E4F2E6;color:#1F5A2B}
@media (prefers-color-scheme:dark){.lv-Board{background:#2A3557;color:#DCE4F8}.lv-Challenge{background:#4A2C14;color:#FFD3B0}.lv-Mixed{background:#1F3A25;color:#CDEBD3}}
.passage{background:var(--soft);border-left:4px solid var(--accent)}
.passage p{margin:4px 0 0;font-size:16px}
.plabel{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-deep)}
.arq{display:block;margin:0 0 6px}
.arhint{margin:0 0 6px;font-size:13px;color:var(--muted)}

.drawans{background:#fff;border-radius:12px;padding:10px;margin-top:10px;display:flex;justify-content:center}
.drawans img{max-width:100%;height:auto;max-height:340px}
.sol .dia{max-width:100%;background:#fff;border-radius:10px;padding:6px;box-sizing:border-box}
.sol .dia svg{width:100%;height:auto;display:block}
.sol .cap{font-size:13px;color:var(--muted);text-align:center}
.sol .g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (max-width:520px){.sol div[style*="display:flex"]{flex-wrap:wrap;justify-content:center}}

.filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;margin-bottom:6px}
.filters label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:600;color:var(--muted);min-width:0}
.filters select{font:inherit;font-size:14px;font-weight:500;color:var(--fg);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 8px;min-width:0;width:100%}
.pyqhead{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.pyq .src{font-size:12px;color:var(--muted);font-weight:500}
.pyq .pt{font-size:16px;margin:2px 0 0}
.pyqo{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;font-size:15px}
.pyqa p{margin:0 0 6px;font-size:15px}
.pnote{background:var(--soft);border-radius:10px;padding:8px 10px;font-size:14px!important}
@media (max-width:420px){.filters{grid-template-columns:1fr 1fr}.filters label:first-child{grid-column:1/-1}}
.pyqo{list-style:none;padding-left:0}
ol.pyqo{list-style:lower-alpha;padding-left:22px}

/* ===== phone notes (generated from the handouts by build_notes.py) ===== */
@font-face{font-family:"Nunito";src:url(fonts/Nunito-VF.woff2) format("woff2");font-weight:300 900;font-display:swap}
:root{--read:"Nunito",ui-rounded,system-ui,sans-serif;--soft-fg:#F8DDD3;--ns:1;--nb:calc(16.5px * var(--ns));
  --c9a5b00:#9A5B00;--c6d28d9:#6D28D9;--c1d4ed8:#1D4ED8;--c0f766e:#0F766E;--cbe123c:#BE123C;--cb23a62:#B23A62}
@media (prefers-color-scheme:dark){:root{--soft-fg:#F8DDD3;--c9a5b00:#F0B44C;--c6d28d9:#B79CFF;--c1d4ed8:#8DB4FF;--c0f766e:#5ED3BE;--cbe123c:#FF8FA6;--cb23a62:#FF9EC0}}

/* topic list */
.ngrp{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep);margin:18px 2px 8px}
.ngrp:first-of-type{margin-top:4px}
.tlist{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.trow{display:grid;grid-template-columns:30px 1fr 20px;gap:12px;align-items:center;padding:13px 14px;min-height:56px;text-decoration:none;color:inherit;border-top:1px solid var(--line)}
.trow:first-child{border-top:0}
.trow .tn{width:30px;height:30px;border-radius:50%;background:var(--soft);color:var(--accent-deep);display:grid;place-items:center;font-size:14px;font-weight:600}
.trow.read .tn{background:var(--ok-bg);color:var(--ok)}
.trow b{display:block;font-size:16px;font-weight:600;line-height:1.3}
.trow small{display:block;font-size:13px;color:var(--muted);margin-top:2px;line-height:1.35}
.trow svg{width:18px;height:18px;color:var(--muted)}
.resume{display:flex;align-items:center;gap:12px;background:var(--soft);border-radius:14px;padding:12px 14px;text-decoration:none;color:inherit;margin-bottom:4px}
.resume span{flex:1;min-width:0}
.resume small{display:block;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-deep)}
.resume b{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* topic page tools */
.ntools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0 10px}
.tsize{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--card);flex:none}
.tsize button{border:0;background:none;min-width:46px;min-height:40px;font-weight:600;cursor:pointer;color:var(--fg)}
.tsize button+button{border-left:1px solid var(--line)}
.tsize button:disabled{opacity:.35}
.a4link{font-size:14px;color:var(--muted);background:none;border:0;padding:8px 0;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.jump{position:sticky;top:calc(env(safe-area-inset-top,0px) + 64px);z-index:5;background:var(--bg);margin:0 -16px 8px;padding:6px 16px 8px;border-bottom:1px solid var(--line)}
.jump .chips{margin:0;padding:0}
.jump .chips button{min-height:36px;padding:6px 12px;font-size:13.5px;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jump .chips button[aria-current="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.npager{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.npager a{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;min-height:64px;min-width:0}
.npager a.nx{text-align:right;grid-column:2}
.npager small{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.npager b{font-weight:600;font-size:15px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* the note body */
.nt{font-family:var(--read);font-size:var(--nb);line-height:1.6;color:var(--fg);display:flex;flex-direction:column;gap:14px;overflow-wrap:break-word;hyphens:auto}
.nt p{margin:0}
.nt b,.nt strong{font-weight:700}
.nt sub,.nt sup{font-size:.72em;line-height:0}
.nt h2,.nt h3,.nt .h2,.nt .h3,.nt .label,.nt .sec,.nt .k,.nt .qn,.nt .no,.nt .num,.nt .ans,.nt .tag,.nt th,.nt .t{font-family:var(--display)}
.nt section{display:flex;flex-direction:column;gap:12px}
.nt .shd{display:flex;flex-wrap:wrap;align-items:center;gap:10px;scroll-margin-top:130px;margin-top:10px;padding-top:14px;border-top:2px dashed var(--line)}
.nt>.shd:first-child,.nt>section:first-child>.shd:first-child{margin-top:0;padding-top:0;border-top:0}
.nt .h2{font-size:1.25em;line-height:1.25;font-weight:600;margin:0;color:var(--fg)}
.nt .h3{font-size:1.06em;line-height:1.3;font-weight:600;margin:0;color:var(--fg)}
.nt .body,.nt .def,.nt .a,.nt .v,.nt .li,.nt .eq{font-size:1em;line-height:1.6}
.nt .sm,.nt .cap,.nt table{font-size:.92em;line-height:1.5}
.nt .muted{color:var(--muted)}
.nt .label,.nt .k{font-size:.72em;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep);line-height:1.5}
.nt .sec{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:0 10px;border-radius:14px;background:var(--accent);color:#fff;font-size:.82em;font-weight:600;flex:none}
.nt .bdg,.nt .num{display:inline-flex;align-items:center;justify-content:center;flex:none;width:1.75em;height:1.75em;border-radius:50%;font-size:.85em;font-weight:600;color:#fff;background:var(--accent);line-height:1}
.nt .pill,.nt .tag,.nt .no,.nt .qn,.nt .ans{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:7px;font-size:.78em;font-weight:600;white-space:nowrap;flex:none;line-height:1.2}
.nt .no{border-radius:12px;background:var(--accent);color:#fff}
.nt .qn{background:var(--bar);color:#fff}
.nt .ans{background:var(--soft);color:var(--accent-deep)}
.nt .tag{color:#fff}
.nt .as{background:#0F766E}.nt .sx{background:#B23A62}.nt .hu{background:#6D28D9}.nt .he{background:#1D4ED8}
.nt .card,.nt .qa,.nt .act{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.nt .def{background:var(--card);border:1.5px solid var(--fg);border-radius:14px;padding:12px 14px}
.nt .trap{background:var(--soft);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.nt .trap .t{font-family:var(--display);font-size:.8em;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-deep)}
.nt .hand{font-family:var(--hand);font-size:1.12em;line-height:1.45;color:var(--fg)}
.nt ul.b,.nt ul{margin:2px 0 0;padding-left:1.2em}
.nt li{margin:4px 0}
.nt li::marker{color:var(--accent)}
.nt .q{font-weight:600;line-height:1.45}
.nt .qh{display:flex;gap:10px;align-items:flex-start}
.nt .rows{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:12px;row-gap:6px;margin-top:4px;align-items:baseline}
.nt .arr{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;line-height:1;margin:0 4px}
.nt .arr small{font-size:.72em;color:var(--muted);margin-bottom:2px;font-weight:600;white-space:nowrap}
.nt .eq{font-weight:600;overflow-x:auto}
.nt .tc{text-align:center}

/* reflowed layout */
.nt .mcol{display:flex;flex-direction:column;gap:10px;min-width:0}
.nt .mrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;min-width:0}
.nt .mrow.mctr{justify-content:center}
.nt .mrow>*{min-width:0}
.nt .mrow.mtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px}
.nt .mrow.mtiles>.card{padding:8px 4px;margin:0}
.nt .mrow.mtiles>.card .sm{font-size:12px!important}
.nt .mrow>.card,.nt .mrow>.mcol,.nt .mrow>.dia,.nt .mrow>.qa,.nt .mrow>.act,.nt .mrow>.def,.nt .mrow>table{flex:1 1 100%}
.nt .mrow>div:not([class]):not(:only-child){flex:1 1 220px}
.nt .mg{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
.nt .mg[data-c="4"],.nt .mg[data-c="5"],.nt .mg[data-c="6"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.nt .mg>*{min-width:0}
@media (min-width:560px){
  .nt .mg[data-c="2"],.nt .mg[data-c="3"]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nt .mg[data-c="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}
  .nt .mg[data-c="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.nt .flow{display:flex;flex-direction:column;align-items:stretch;gap:2px}
.nt .flow>.st{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 12px;text-align:center}
.nt .flow>.ar{align-self:center;color:var(--accent);font-weight:700;transform:rotate(90deg);line-height:1;font-size:1.3em}

/* diagrams: always on light paper, tap to zoom */
.nt .dia{width:100%;margin:0 auto;background:var(--paper);border-radius:12px;padding:8px;cursor:zoom-in;position:relative;color-scheme:light}
.nt .dia svg{display:block;width:100%;height:auto}
.nt .dia::after{content:"";position:absolute;right:6px;bottom:6px;width:26px;height:26px;border-radius:50%;background:rgba(30,42,74,.75) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6'/%3E%3Cpath d='M15 15l5 5M10.5 8v5M8 10.5h5'/%3E%3C/svg%3E") center/16px no-repeat}
.vscroll.svgv{background:#F7F4EE}
.vscroll .vsvg{width:100%;padding:12px}
.vscroll .vsvg svg{display:block;width:100%;height:auto}
.vscroll.z .vsvg{width:220%}

/* tables */
.nt table{border-collapse:separate;border-spacing:0;width:100%;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.nt th{background:var(--bar);color:#fff;font-weight:600;text-align:left;padding:8px 10px;font-size:.88em;line-height:1.3}
.nt td{padding:8px 10px;border-top:1px solid var(--line);vertical-align:top}
@media (max-width:559px){
  .nt table.stk,.nt table.stk tbody,.nt table.stk tr,.nt table.stk td{display:block;width:100%}
  .nt table.stk{background:none;border:0;border-radius:0;display:flex;flex-direction:column;gap:10px}
  .nt table.stk thead,.nt table.stk tr:has(th){display:none}
  .nt table.stk tr{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:4px 0;margin-bottom:10px}
  .nt table.stk td{border-top:1px solid var(--line);padding:7px 14px}
  .nt table.stk td:first-child{border-top:0;font-weight:700;font-family:var(--display)}
  .nt table.stk td[data-l]:not(:first-child)::before{content:attr(data-l);display:block;font-family:var(--display);font-size:.72em;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-deep)}
}

.nt .shd>.h2,.nt .shd>h2{flex:1 1 0;min-width:0}
.nt .kv{display:grid;grid-template-columns:fit-content(40%) minmax(0,1fr);column-gap:12px;row-gap:6px;align-items:baseline}
.nt .kv>*{min-width:0}
.nt .rg{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;padding:10px 0;border-top:1px solid var(--line);align-items:start;justify-items:start}
.nt .rg>*{min-width:0;max-width:100%}
.nt .rg.rgn{grid-template-columns:auto minmax(0,1fr);column-gap:10px}
.nt .rg.rgn>*:not(:first-child){grid-column:2}
.nt .rg.rgn>*:first-child{grid-row:1 / span 6}
.nt .rgs,.nt .mcol:has(>.rg){gap:0}
.nt .rg:first-child{border-top:0}
.nt .rg .eq{font-size:1.02em}
.nt .ifl{display:inline-flex;align-items:center;vertical-align:middle;gap:4px;flex-wrap:wrap}
.nt .ifc{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;line-height:1}
.nt .eq .arr{margin:0 4px}
.nt .tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}
.nt .heat{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:7px;font-size:.78em;font-family:var(--display);font-weight:600;line-height:1}
.nt .card>span,.nt .mcol>span,.nt .act>span,.nt .qa>span,.nt .rg>span{align-self:flex-start;justify-self:start}
.nt .mrow:has(>.bdg:first-child)>:nth-child(2),.nt .mrow:has(>.num:first-child)>:nth-child(2),.nt .mrow:has(>.sec:first-child)>:nth-child(2){flex:1 1 0}
.nt .mrow:has(>.bdg:first-child)>:nth-child(n+3),.nt .mrow:has(>.num:first-child)>:nth-child(n+3),.nt .shd>:nth-child(n+3){flex:1 1 100%}
.nt .far{align-self:center;justify-self:center;transform:rotate(90deg);color:var(--accent);font-weight:700;line-height:1;font-size:1.2em}
.nt .mrow>.far,.nt .mcol>.far,.nt .flow>.far{flex:0 0 100%;text-align:center;transform:none}
.nt svg{max-width:100%;height:auto}
.nt svg[data-small="1"]{display:block;margin:0 auto}
.nt .picrow>:first-child{justify-self:center}
.nt .picrow svg{min-width:120px}
.nt .mtx{display:block}
.nt .mtx>.tag,.nt .mtx>.pill,.nt .mtx>.heat,.nt .mtx>.bdg{margin-right:6px;vertical-align:.1em}
.nt .mrow:has(>.tag:first-child)>:nth-child(2):not(.tag):not(.pill):not(.heat):not(.bdg),.nt .mrow:has(>.pill:first-child)>:nth-child(2):not(.tag):not(.pill):not(.heat):not(.bdg),.nt .mrow:has(>.heat:first-child)>:nth-child(2):not(.tag):not(.pill):not(.heat):not(.bdg),.nt .mrow:has(>.qn:first-child)>:nth-child(2):not(.tag):not(.pill):not(.heat):not(.bdg),.nt .mrow:has(>.no:first-child)>:nth-child(2):not(.tag):not(.pill):not(.heat):not(.bdg){flex:1 1 0}
.nt .mtx>.num,.nt .mtx>.sec{margin-right:10px;vertical-align:.08em}
.nt .trli{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid color-mix(in srgb,var(--accent) 22%,transparent)}
.nt .trli:first-of-type{border-top:0}
.nt .tn{font-family:var(--hand);color:var(--accent-deep);font-size:1.15em;flex:none;min-width:.9em}
.nt .rgh{display:none}
.nt [data-l]:not(td)::before{content:attr(data-l);display:block;font-family:var(--display);font-size:.72em;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-deep)}
.nt .rgs>.rg>:first-child:not(.tag):not(.bdg){font-weight:700}
.resume svg{width:20px;height:20px;flex:none;color:var(--accent-deep)}
.nt .card.rg,.nt .qa.rg,.nt .act.rg{padding:12px 14px;border:1px solid var(--line);border-radius:14px}
.nt .rgs>.card.rg{margin-top:10px}
.nt .mrow:has(>:is(.tag,.pill):first-child):has(>:nth-child(2):not(.tag,.pill,.heat,.bdg)):has(>:nth-child(3))>:nth-child(2){order:3;flex:1 1 100%!important}
.nt .mrow:has(>:is(.tag,.pill):first-child):has(>:nth-child(2):not(.tag,.pill,.heat,.bdg)):has(>:nth-child(3))>:nth-child(n+3){margin-left:auto}
.nt table td:first-child{min-width:5.5em}
.nt table.qa2 td:last-child{font-weight:700}
/* Guided study and question review */
.tabs{grid-template-columns:repeat(5,1fr)}
.resources{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;font-size:13px}
.resources a{color:var(--fg);padding:8px 12px;border:1px solid var(--line);border-radius:24px;text-decoration:none;background:var(--card);min-height:40px;display:flex;align-items:center}
.resources a[aria-current]{background:var(--soft);border-color:var(--accent)}
.edition{font-size:13px;color:var(--muted);margin:0 0 16px}
.lesson-card{border-top:4px solid var(--accent)}
.lesson-steps{padding-left:24px;margin:0}.lesson-steps li{padding:8px 0}
.lesson-steps a,.edition a,.expl a{color:var(--accent-deep)}
.lesson-footer{margin-top:24px;background:var(--soft)}
.question-tools{margin:14px 0 18px}.question-tools label{display:flex;flex-direction:column;gap:6px;font-size:14px}
.question-tools .search{width:100%;margin:0 0 10px}
.question-actions{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line);padding-top:12px}
.question-actions button{min-height:44px}.question-actions [aria-pressed=true]{background:var(--soft);border-color:var(--accent)}
.card[id^=question-]{scroll-margin-top:90px}
.btn,.opt{touch-action:manipulation}.btn{white-space:normal}
.expl a{display:inline-block;margin-top:8px}
@media(max-width:420px){.question-tools .filters{grid-template-columns:1fr 1fr}.question-tools .filters label:first-child{grid-column:1/-1}.question-actions{gap:6px}.question-actions .btn{font-size:13px;padding:8px 10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* ---------- sign-in, courses, admin ---------- */
.signin{align-items:center;text-align:center;padding:22px 16px}
.gbtn{min-height:44px;display:flex;align-items:center;justify-content:center;width:100%}
.linkbtn{border:0;background:none;color:var(--accent-deep);font-size:14px;font-weight:600;text-decoration:underline;cursor:pointer;padding:6px}
.warnc{background:var(--bad-bg);border-color:transparent}
.bigmail{margin:0;font-size:19px;font-weight:600;word-break:break-all;color:var(--accent-deep)}
.btnrow a.btn{text-decoration:none;display:inline-flex;align-items:center}
.who{gap:4px}
.chap .no.cno{font-size:15px;letter-spacing:.02em;background:var(--fg);color:var(--bg)}
.admin-entry{background:var(--soft);border-color:transparent;margin-bottom:4px}
.admin-entry .no{background:var(--accent-deep)}
main.admin{padding-bottom:40px}
.adm-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.adm-stats div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 8px;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}
.adm-stats b{font-size:24px;line-height:1.1}
.adm-stats span{font-size:12px;color:var(--muted);line-height:1.25}
.adm-stats .warnbox{background:var(--bad-bg);border-color:transparent}
@media (max-width:420px){.adm-stats{grid-template-columns:1fr 1fr}}
.chipa{flex:none;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 14px;min-height:40px;font-size:14px;font-weight:600;color:var(--fg);text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.chipa[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.badge{background:var(--accent);color:#fff;border-radius:999px;font-size:12px;padding:1px 7px}
main.admin .filters{grid-template-columns:1fr 1fr}
main.admin .filters label:first-child{grid-column:auto}
main.admin .filters .search{margin:0;padding:9px 10px;font-size:14px;border-width:1px;border-radius:10px}
.srow{text-decoration:none;color:inherit;gap:4px}
.srow.off{opacity:.65}
.srow-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.srow b{font-size:17px}
.pills{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.cpill{font-size:12px;font-weight:600;border-radius:999px;padding:3px 9px;background:var(--soft);color:var(--accent-deep)}
.cpill.offp{background:var(--line);color:var(--muted)}
.cpill.warnp{background:var(--bad-bg);color:var(--bad)}
.sline{font-size:13.5px;color:var(--muted)}
.cchecks{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media (max-width:360px){.cchecks{grid-template-columns:1fr}}
.ccheck{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:12px;padding:9px 10px;font-size:14.5px;font-weight:500;cursor:pointer;min-height:44px}
.ccheck input{width:20px;height:20px;accent-color:var(--accent);flex:none;margin:0}
.ccheck:has(input:checked){border-color:var(--accent);background:var(--soft)}
.ccheck.toggle{margin-top:4px}
.req .search{margin:4px 0 0;font-size:15px;padding:9px 12px}
.req .lbl{display:flex;flex-direction:column;gap:3px}
ul.plain{margin:0;padding-left:18px;font-size:14.5px;display:flex;flex-direction:column;gap:4px}
.btn.danger{color:var(--bad);border-color:var(--bad)}
code{font-family:ui-monospace,Menlo,monospace;font-size:.9em;background:var(--soft);color:var(--accent-deep);border-radius:6px;padding:1px 5px}
