@font-face{font-family:"Inter";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:500 800;font-display:swap;src:url(/fonts/jakarta.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:600;font-display:swap;src:url(/fonts/serifi.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}/* Style B (2026-10-20): warm off-white page, navy ink, gold accent. Plus Jakarta Sans headings, Inter text, a serif italic for the occasional accent. One button system, soft panels with hairline borders. Old token names (--desk, --lamp, --coral ...) are kept and remapped so the part files keep working. */:root{--bg:#ffffff;--desk:#ffffff;--desk-2:#fafafa;--desk-3:#ffffff;--card:#ffffff;--paper:#ffffff;--tint:#f5f5f5;--text:#1b2a4a;--ink:#1b2a4a;--dim:#47536d;--ink-2:#47536d;--mute:#5f697d;--edge:#ebebeb;--line:#ebebeb;--line2:#dcdcdc;--line3:#c4c4c4;--lamp:#8a5a14;--gold:#a9742a;--coral:#a9742a;--coral-ink:#8a5a14;--hl:#f6ecd0;--gold-t:rgba(27,42,74,.06);--gold-t2:rgba(169,116,42,.26);--gold-b:#d3d7e0;--hov:rgba(27,42,74,.05);--navy:#1b2a4a;--navy-2:#24365e;--on-navy:#ffffff;--btn1:#24365e;--btn2:#1b2a4a;--btn1h:#2b4070;--btn2h:#1f3160;--mint:#2f7d4f;--lv-f:#2f7d4f;--lv-c:#2463a6;--lv-e:#c26a12;--lv-x:#b3261e;--s1:#2b3a52;--ok-t:#0b6b4f;--ok-bg:#effaf5;--ok-b:#9fdcc6;--bad-t:#a3301a;--bad-bg:#fff1ec;--bad-b:#f5b4a3;--warn-t:#8a5a00;--warn-bg:#fff8e8;--warn-b:#f0d293;--mint-bg:#eef8f3;--mint-bg2:#e3f4ec;--mint-ink:#21463a;--mint-b:#9fd2bd;--focus:#2463a6;--bd5:#2f7d4f;--bd4:#2463a6;--bd3:#7a52c7;--bd2:#5f697d;--sh1:0 1px 2px rgba(27,42,74,.05),0 4px 12px rgba(27,42,74,.04);--sh2:0 2px 4px rgba(27,42,74,.05),0 12px 28px rgba(27,42,74,.08);--rl:16px;--rs:12px;--head:"Plus Jakarta Sans",Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--body:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--mono:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--serif:"Source Serif 4",Georgia,serif;--hand:"Source Serif 4",Georgia,serif;--w:1240px;color-scheme:light}/* dark mode (2026-10-20): the same tokens, redefined. Screen only, so printing and PDFs stay light. */@media screen{:root[data-theme="dark"]{--bg:#0f1420;--desk:#0f1420;--desk-2:#131a28;--desk-3:#161c2a;--card:#161c2a;--paper:#161c2a;--tint:#1d2536;--text:#e8ecf3;--ink:#e8ecf3;--dim:#a7b0c0;--ink-2:#a7b0c0;--mute:#8d97a9;--edge:#263043;--line:#263043;--line2:#34405a;--line3:#44516c;--lamp:#e0b25c;--gold:#e0b25c;--coral:#e0b25c;--coral-ink:#e0b25c;--hl:#3a3220;--gold-t:rgba(224,178,92,.14);--gold-t2:rgba(224,178,92,.28);--gold-b:rgba(224,178,92,.45);--hov:rgba(255,255,255,.06);--navy:#e8ecf3;--navy-2:#f3f5f9;--on-navy:#0f1420;--btn1:#f3f5f9;--btn2:#dfe4ee;--btn1h:#ffffff;--btn2h:#eef1f7;--mint:#4fbf80;--lv-f:#4fbf80;--lv-c:#6aa8ff;--lv-e:#f0a04b;--lv-x:#ff7a6e;--s1:#8fa4cf;--ok-t:#6fd3a1;--ok-bg:#12281f;--ok-b:#2d5c47;--bad-t:#ff9a8c;--bad-bg:#34191a;--bad-b:#6b2f2a;--warn-t:#f0c36a;--warn-bg:#2f2815;--warn-b:#5c4a22;--mint-bg:#12281f;--mint-bg2:#163326;--mint-ink:#bfe8d3;--mint-b:#2d5c47;--focus:#8ab8ff;--bd5:#4fbf80;--bd4:#6aa8ff;--bd3:#b79aff;--bd2:#a7b0c0;--sh1:0 1px 2px rgba(0,0,0,.3),0 4px 12px rgba(0,0,0,.2);--sh2:0 2px 4px rgba(0,0,0,.3),0 12px 28px rgba(0,0,0,.35);color-scheme:dark}}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--desk);color:var(--text);font:400 16px/1.6 var(--body);overflow-x:hidden;-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}a{color:var(--lamp);text-underline-offset:3px}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:8px}h1,h2,h3{font-family:var(--head);letter-spacing:-.03em;line-height:1.1;margin:0 0 .45em;text-wrap:balance;font-weight:800;color:var(--text)}h1{font-size:clamp(38px,5.4vw,70px)}h2{font-size:clamp(28px,3.8vw,46px)}h3{font-size:19px;letter-spacing:-.02em;line-height:1.25}p{margin:0 0 1em}.wrap{max-width:var(--w);margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:8px;background:#fff;color:#1b2a4a;padding:8px;z-index:99}/* paper: light cards that sit on the desk */.card,.paper,.book-card,.steps li,.offer,details,.ptable,.thumbs a{background:var(--paper);color:var(--ink);border:1px solid var(--line);box-shadow:var(--sh1)}.card a:not(.btn),.paper a:not(.btn),.book-card a,.steps li a,.offer a:not(.btn),details a,.ptable a{color:var(--coral-ink)}/* header */header.site{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;height:66px}.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font:800 19px var(--head);letter-spacing:-.02em}.logo svg{width:34px;height:34px;flex:none}.logo em{font-style:normal;font-weight:600;color:var(--dim)}:root{--owl-ink:#1b2a4a;--owl-ink2:#102843}@media screen{:root[data-theme="dark"]{--owl-ink:#e8ecf3;--owl-ink2:#c3cad6}}.logo i{font-style:italic;font-family:var(--serif);font-weight:600;color:var(--gold)}nav.main ul{list-style:none;margin:0;padding:0;display:flex;gap:2px}nav.main a{display:block;text-decoration:none;color:var(--dim);font-weight:500;font-size:14.5px;padding:8px 11px;border-radius:8px}nav.main a:hover{color:var(--text);background:var(--hov)}nav.main a[aria-current]{background:var(--gold-t);color:var(--lamp)}.signin{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;background:linear-gradient(var(--btn1),var(--btn2));color:var(--on-navy);text-decoration:none;font-weight:600;font-size:14.5px;padding:0 18px;border-radius:10px;white-space:nowrap;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 1px 2px rgba(27,42,74,.3),0 6px 14px rgba(27,42,74,.16)}.signin:hover{background:linear-gradient(var(--btn1h),var(--btn2h))}@media(max-width:900px){nav.main{display:none}}/* breadcrumbs + page hero */.crumbs{font:500 13px var(--body);padding-top:18px}.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px;color:var(--dim)}.crumbs li+li:before{content:"/";margin-right:6px;opacity:.5}.crumbs a{color:var(--dim);text-decoration:none}.crumbs a:hover{color:var(--text);text-decoration:underline}.hero{position:relative;isolation:isolate;padding-block:30px 64px;overflow-x:clip}.hero:before{content:none}.eyebrow{font:600 12px var(--body);color:var(--lamp);text-transform:uppercase;letter-spacing:.16em;margin:0 0 14px}.card .eyebrow,.paper .eyebrow{color:var(--coral-ink)}.lede{font-size:clamp(17px,1.8vw,19px);color:var(--dim);max-width:58ch;line-height:1.55}.glow,mark{background:linear-gradient(transparent 62%,var(--gold-t2) 62%);color:inherit;padding-inline:.06em}.hand{font:italic 600 22px var(--hand);color:var(--lamp);display:inline-block;margin:0 0 6px}.hero-grid{display:grid;gap:40px;align-items:center}@media(min-width:880px){.hero-grid.book{grid-template-columns:320px 1fr}}.cover{border-radius:3px 8px 8px 3px;box-shadow:0 2px 4px rgba(27,42,74,.12),0 18px 34px -14px rgba(27,42,74,.35);background:var(--line)}.stage{display:flex;justify-content:center;perspective:1200px}.stage.single .cover{max-width:250px;transform:rotateY(-10deg) rotate(-2deg);transition:transform .5s cubic-bezier(.2,.8,.2,1)}.stage.single:hover .cover{transform:rotateY(-2deg)}.fan{display:grid;grid-template-columns:1fr 1fr;max-width:340px;margin:0 auto;perspective:1200px}.fan img:first-child{transform:rotateY(14deg) translateX(10%) rotate(-3deg)}.fan img:last-child{transform:rotateY(-14deg) translateX(-10%) translateY(8%) rotate(3deg)}.pills{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:8px}.pills li{font:600 12.5px var(--body);border:1px solid var(--line2);background:var(--card);border-radius:999px;padding:4px 11px;color:var(--ink-2)}.ctas{display:flex;flex-wrap:wrap;gap:12px;margin:6px 0 14px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:600 14.5px/1 var(--body);text-decoration:none;height:44px;padding:0 20px;border-radius:10px;border:0;cursor:pointer;background:var(--card);color:var(--ink);box-shadow:0 0 0 1px var(--line2),0 1px 2px rgba(27,42,74,.06);transition:transform .15s,box-shadow .15s,background .15s;min-height:44px;white-space:nowrap}.btn:hover{transform:translateY(-1px);box-shadow:0 0 0 1px var(--line3),0 6px 14px rgba(27,42,74,.09)}.btn:active{transform:translateY(0)}.btn.primary,.btn.dark{background:linear-gradient(var(--btn1),var(--btn2));color:var(--on-navy);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 1px 2px rgba(27,42,74,.3),0 6px 14px rgba(27,42,74,.16)}.btn.primary:hover,.btn.dark:hover{background:linear-gradient(var(--btn1h),var(--btn2h));box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 2px 4px rgba(27,42,74,.3),0 10px 20px rgba(27,42,74,.2)}.btn.ghost{background:var(--card);color:var(--ink)}.btn[aria-disabled]{opacity:.55;cursor:default;transform:none}.btn:disabled{opacity:.6;cursor:default;transform:none}.btn .arr{transition:transform .2s}.btn:hover .arr{transform:translateX(3px)}.scribble{font:italic 600 20px var(--hand);color:var(--lamp);text-decoration:none;display:inline-block}.note{font-size:14px;color:var(--dim)}.card .note,.paper .note,.offer .note{color:var(--ink-2)}.note a{color:var(--lamp)}.subnav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}.subnav a{font:600 14px var(--body);text-decoration:none;color:var(--dim);border:1px solid var(--line2);background:var(--card);border-radius:999px;padding:7px 14px}.subnav a:hover{color:var(--text);border-color:var(--line3)}.subnav a[aria-current]{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}.prose .pills{margin-top:6px}/* sections */section.section,section.alt,.sec{padding-block:76px}section.alt{background:color-mix(in srgb,var(--tint) 70%,transparent);border-block:1px solid var(--line)}@media(max-width:700px){section.section,section.alt,.sec{padding-block:54px}}.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px 30px;margin-bottom:32px}.head h2{margin:0}.head p{margin:0;color:var(--dim);max-width:46ch}.grid{display:grid;gap:18px}@media(min-width:760px){.grid.c2{grid-template-columns:1fr 1fr}.grid.c3{grid-template-columns:repeat(3,1fr)}}.card{border-radius:var(--rs);padding:26px 24px;min-width:0}.card p:last-child{margin-bottom:0}.panel{background:var(--card);border:1px solid var(--line);box-shadow:var(--sh1);border-radius:var(--rl);padding:clamp(22px,3vw,30px);min-width:0;color:var(--text)}.panel p{color:var(--dim)}.panel a:not(.btn){color:var(--lamp)}ul.ticks{list-style:none;padding:0;margin:0}ul.ticks li{position:relative;padding-left:26px;margin-bottom:.65em}ul.ticks li:before{content:"";position:absolute;left:2px;top:.6em;width:10px;height:10px;border-radius:50%;background:var(--coral)}/* book cards */.bento{display:grid;gap:22px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.book-card{position:relative;display:flex;flex-direction:column;gap:12px;border-radius:16px;padding:16px;box-shadow:var(--sh1);transition:transform .3s}.book-card:hover{transform:translateY(-3px);box-shadow:var(--sh2)}.book-card .shelf{background:var(--tint);border-radius:12px;padding:20px 0;display:flex;justify-content:center}.book-card .shelf img{width:42%;max-width:140px;border-radius:3px 6px 6px 3px;box-shadow:var(--sh1)}.book-card .tag{font:500 11.5px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--coral-ink)}.book-card h2,.book-card h3{font-size:20px;margin:0}.book-card h2 a,.book-card h3 a{color:var(--ink);text-decoration:none}.book-card h2 a:after,.book-card h3 a:after{content:"";position:absolute;inset:0;z-index:1}.book-card p{margin:0;color:var(--ink-2);font-size:15px}.book-card .meta{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:auto;font-size:14px}.book-card .meta a{position:relative;z-index:2;font-weight:700}.price{font:700 16px var(--head);color:var(--ink);letter-spacing:-.02em}/* steps */.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:16px}@media(min-width:720px){.steps{grid-template-columns:1fr 1fr}}@media(min-width:1040px){.steps.four{grid-template-columns:repeat(4,1fr)}}.steps li{counter-increment:s;border-radius:12px;padding:22px;color:var(--ink-2);font-size:15.5px;box-shadow:var(--sh1)}.steps li:before{content:counter(s,decimal-leading-zero);display:block;font:500 12.5px var(--mono);color:var(--coral-ink);margin-bottom:20px}.steps b{display:block;font:700 18px/1.25 var(--head);letter-spacing:-.02em;color:var(--ink);margin-bottom:6px}/* contents */.vol-h{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin:6px 0 4px}.vol-h h3{margin:0}.vol-h span{font:500 12.5px var(--mono);color:var(--dim)}.toc{list-style:none;padding:0;margin:0 0 26px;display:grid;gap:0 32px}@media(min-width:720px){.toc{grid-template-columns:1fr 1fr}}.toc li{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--edge)}.toc .n{font:500 13px var(--mono);color:var(--lamp);min-width:2.6em;padding-top:2px}/* sample pages */.thumbs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}@media(min-width:880px){.thumbs{grid-template-columns:repeat(4,1fr)}}.thumbs figure{margin:0}.thumbs a{display:block;border-radius:10px;overflow:hidden;box-shadow:var(--sh1);transition:transform .3s}.thumbs a:hover{transform:translateY(-3px);box-shadow:var(--sh2)}.thumbs figcaption{font-size:13.5px;color:var(--dim);margin-top:8px;line-height:1.45}/* buy */.offer{display:flex;flex-direction:column;border-radius:16px;padding:24px;box-shadow:var(--sh1)}.offer .btn{margin-top:auto;width:100%}.offer dl{margin:0 0 20px;font-size:15px;display:grid;grid-template-columns:auto 1fr;gap:6px 14px}.offer dt{font:500 11.5px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);padding-top:3px}.offer dd{margin:0}.offer .eyebrow{color:var(--coral-ink)}.big{font:800 42px/1 var(--head);letter-spacing:-.045em;margin:2px 0 14px}.big small{font:500 13px var(--body);letter-spacing:0;color:var(--ink-2);margin-left:6px}/* faq */details{border-radius:14px;padding:16px 20px;margin-bottom:10px}summary{cursor:pointer;font:600 16.5px var(--head);letter-spacing:-.02em;list-style:none;display:flex;justify-content:space-between;gap:14px;color:var(--ink)}summary::-webkit-details-marker{display:none}summary:after{content:"+";color:var(--coral-ink);font-size:22px;line-height:1}details[open] summary:after{content:"\2212"}details p{margin:10px 0 0;color:var(--ink-2)}.prose{max-width:72ch}.prose h2{margin-top:1.4em;font-size:clamp(24px,3vw,32px)}.prose h2:first-child{margin-top:0}.prose li{margin-bottom:.5em}.prose p,.prose li{color:var(--dim)}.prose .steps li,.prose .card li,.prose .card p{color:var(--ink-2)}.prose .ptable td:not(:first-child),.prose .ptable th:not(:first-child){text-align:left}.prose .ptable td:nth-child(2),.prose .ptable th:nth-child(2){text-align:center}code{font-family:var(--mono);font-size:.9em;background:var(--desk-3);color:var(--lamp);padding:1px 6px;border-radius:6px}.chip{display:inline-block;font:500 12.5px var(--mono);border:1px solid rgba(169,116,42,.5);color:var(--lamp);border-radius:999px;padding:4px 10px;margin:0 8px 6px 0}.chip.soon{border-color:var(--line2);color:var(--dim)}/* pricing table */.ptable{overflow-x:auto;border-radius:20px;box-shadow:var(--sh1)}.ptable table{width:100%;border-collapse:collapse;min-width:620px}.ptable th,.ptable td{padding:14px 18px;text-align:left;border-bottom:1px solid var(--line);font-size:15px}.ptable thead th{font:700 17px var(--head);vertical-align:bottom}.ptable thead th small{display:block;font:500 13px var(--body);color:var(--ink-2);margin-top:4px}.ptable thead th.pass{background:var(--ink);color:var(--on-navy);border-radius:16px 16px 0 0}.ptable thead th.pass small{color:#cdd0d6}.ptable td.pass{background:var(--tint)}.ptable td:not(:first-child),.ptable th:not(:first-child){text-align:center}.ptable .y{color:var(--mint);font-weight:700}.ptable .no{color:#8b9099}.ptable tbody tr:last-child td{border-bottom:0}.ptable .pr{font:800 24px var(--head);letter-spacing:-.04em}.ptable .lbl{font:500 13px var(--body);color:var(--ink-2)}@media(max-width:700px){.ptable table{min-width:0}.ptable th,.ptable td{padding:10px 6px;font-size:13px}.ptable td:first-child{width:38%}.ptable thead th{font-size:14px}.ptable thead th small{font-size:11px}.ptable .pr{font-size:17px}}/* trust */.trust{display:grid;gap:22px;align-items:start}@media(min-width:900px){.trust{grid-template-columns:1.2fr .8fr}}.author{background:var(--desk-2);border:1px solid var(--edge);border-radius:20px;padding:26px;display:grid;grid-template-columns:auto 1fr;gap:18px}.avatar{width:72px;height:72px;border-radius:50%;background:var(--gold-t);display:grid;place-items:center;font:800 24px var(--head);color:var(--lamp)}.author h3{font-size:21px;margin-bottom:6px}.author p{color:var(--dim);margin:0}.author a{color:var(--lamp)}.author ul{margin:10px 0 0;padding-left:18px;color:var(--dim);font-size:15px;display:grid;gap:4px}.promise{position:relative;background:var(--hl);color:var(--ink);padding:28px 24px 24px;transform:rotate(1.5deg);box-shadow:var(--sh1)}.promise:before{content:"";position:absolute;top:-11px;left:50%;width:76px;height:22px;margin-left:-38px;background:rgba(255,255,255,.5);transform:rotate(-3deg)}.promise h3{font:700 30px var(--hand);letter-spacing:0;margin-bottom:8px}.promise ol{margin:0;padding-left:20px;display:grid;gap:8px;font-size:15px}.faq{max-width:820px}/* footer */footer.site{border-top:1px solid var(--edge);background:color-mix(in srgb,var(--desk-2) 85%,transparent);color:var(--dim);padding-block:52px 40px;font-size:14.5px}footer.site a{color:var(--text);text-decoration:none}footer.site a:hover{color:var(--lamp)}footer.site .cols{display:grid;gap:26px}@media(min-width:800px){footer.site .cols{grid-template-columns:1.4fr repeat(3,1fr)}}footer.site .fh{display:block;font:500 12px var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--lamp);margin:0 0 10px;list-style:none;cursor:default}footer.site details.fcol{background:none;border:0;box-shadow:none;border-radius:0;padding:0;margin:0;color:inherit}footer.site .fh{font-size:12px;letter-spacing:.1em;gap:0}footer.site .fh::after{content:none}footer.site .fh::-webkit-details-marker{display:none}@media(max-width:720px){footer.site .cols{gap:0}footer.site .cols>div:first-child{padding-bottom:18px}footer.site details.fcol{border-top:1px solid var(--edge)}footer.site details.fcol>ul{padding-bottom:14px}footer.site .fh{cursor:pointer;margin:0;padding:14px 0;display:flex;justify-content:space-between;align-items:center;min-height:44px}footer.site .fh::after{content:"";display:block;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .2s;margin-right:4px}footer.site details[open]>.fh::after{content:"";transform:rotate(-135deg)}}footer.site ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}footer.site .logo{margin-bottom:12px}footer.site p a{text-decoration:underline;text-decoration-color:var(--gold-b)}.disclaimer{border-top:1px solid var(--edge);margin-top:34px;padding-top:20px;font-size:12.5px;color:#8f99a8;line-height:1.65}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.pane.shot{padding:0}.pane.shot img{width:100%;height:100%;object-fit:cover;object-position:left top;display:block}.pane.shot .lab{position:absolute;left:.9em;bottom:.9em;background:var(--paper);padding:.35em .7em;border-radius:999px;box-shadow:0 4px 14px rgba(0,0,0,.25)}/* consistent rhythm: the first section after a page hero starts closer to it */.hero+section.section,.hero+section.alt{padding-top:28px}.hero+section.alt{padding-top:44px}/* style B: header spacing */header.site .wrap{gap:14px}.logo{flex:none}nav.main>ul>li>a,nav.main summary{border-radius:8px}/* theme toggle */.tgl{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:10px;border:0;background:var(--card);color:var(--ink);cursor:pointer;box-shadow:0 0 0 1px var(--line2),0 1px 2px rgba(27,42,74,.06);padding:0;flex:none}.tgl:hover{box-shadow:0 0 0 1px var(--line3),var(--sh1)}.tgl .ic-moon{display:none}:root[data-theme="dark"] .tgl .ic-sun{display:none}:root[data-theme="dark"] .tgl .ic-moon{display:block}.tgl.wide{display:flex;width:100%;justify-content:center;align-items:center;gap:10px;margin-top:14px;font:600 15px var(--body)}.tgl.wide .ic-sun,.tgl.wide .ic-moon{flex:none}@media(max-width:1000px){header.site .hright>.tgl{display:none}}/* home mock screens always stay light, whatever the theme */.screen,.pad,.mock-light{--ink:#1b2a4a;--text:#1b2a4a;--ink-2:#47536d;--dim:#47536d;--line:#ebebeb;--card:#fff;--paper:#fff;--tint:#f5f5f5;--bg:#fff}.cs-article .diagram,.cs-article .cheatsheet-diagram-wrap,.pq-sheet{--ink:#1b2a4a;--text:#1b2a4a;--ink-2:#47536d;--dim:#47536d;--line:#ebebeb;--card:#fff;--tint:#f5f5f5;color:#1b2a4a}/* dark: line art and screenshots that assume a light page sit on a light panel */@media screen{:root[data-theme="dark"] .pq-fig,:root[data-theme="dark"] .pq-q img,:root[data-theme="dark"] .pq-step img,:root[data-theme="dark"] .cs-article img,:root[data-theme="dark"] .cs-article svg.cs-raster,:root[data-theme="dark"] .db-article img{background:#fff;border-radius:8px;padding:6px}:root[data-theme="dark"] img[src*="/img/books/"],:root[data-theme="dark"] .book-card .shelf img{background:none;padding:0}:root[data-theme="dark"] .btn.g,:root[data-theme="dark"] .btn.ghost{background:var(--card)}:root[data-theme="dark"] body{background:var(--bg)}}/* lean sweep: e-book shelf, samples, pricing, book page (2026-10-22) */.badge-soon{display:inline-block;margin-left:8px;font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line3);border-radius:999px;padding:3px 10px;color:var(--ink-2);background:var(--card);vertical-align:middle}.bkwrap{display:grid;gap:40px 36px}@media(min-width:1000px){.bkwrap{grid-template-columns:1fr 1fr}}.bkwrap .bgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}.bkgrp>h2{font-size:clamp(22px,2.6vw,28px);margin:0 0 18px}.book-card.bkx .shelf{background:none;padding:6px 0 0}.book-card.bkx .shelf img{width:46%;max-width:170px}.book-card.bkx .shelf.two img{width:40%;max-width:150px}.book-card.bkx .btn.primary{color:var(--on-navy)}.book-card.bkx .btn.ghost{color:var(--ink)}.book-card.bkx .buys .btn.ghost{flex:0 0 auto}.book-card.bkx .meta{flex-wrap:wrap}.book-card.bkx .meta .btn{height:40px;position:relative;z-index:2}.byline{margin:-4px 0 14px;color:var(--dim);font-size:14.5px}.byline a{color:var(--ink);text-decoration-color:var(--gold-b)}.slider{position:relative}.slider .thumbs{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:4px 2px 8px;-webkit-overflow-scrolling:touch}.slider .thumbs::-webkit-scrollbar{display:none}.slider .thumbs figure{flex:0 0 62%;scroll-snap-align:start}@media(min-width:620px){.slider .thumbs figure{flex-basis:calc(33.33% - 11px)}}@media(min-width:960px){.slider .thumbs figure{flex-basis:calc(25% - 12px)}}.sl-btn{display:none;position:absolute;top:38%;z-index:3;width:44px;height:44px;border-radius:50%;border:1px solid var(--line3);background:var(--card);color:var(--ink);font:400 28px/1 var(--head);cursor:pointer;box-shadow:var(--sh1);align-items:center;justify-content:center;padding:0 0 4px}.sl-btn.prev{left:-14px}.sl-btn.next{right:-14px}.sl-btn:disabled{opacity:.35;cursor:default}@media(min-width:760px){.sl-btn{display:inline-flex}}.otable table{min-width:0}.otable th[scope=row]{font:700 16px var(--head)}.otable td small{color:var(--ink-2);display:block;font-size:12px}.otable td.bt{text-align:right}.otable .btn{white-space:nowrap}.ptable .otable td:not(:first-child){text-align:left}@media(max-width:700px){.otable thead{display:none}.otable table,.otable tbody,.otable tr,.otable td,.otable th{display:block;width:auto}.otable tr{padding:14px 4px;border-bottom:1px solid var(--line)}.otable tr:last-child{border-bottom:0}.otable th,.otable td{border:0;padding:3px 10px;font-size:14px;text-align:left!important}.otable td[data-l]:before{content:attr(data-l)": ";font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2)}.otable td.bt{padding-top:10px}.otable .btn{width:100%}}.ptable thead th.lib{background:var(--ink);color:var(--on-navy);border-radius:16px 16px 0 0}.ptable thead th.lib small{color:#cdd0d6}.ptable td.lib{background:var(--tint)}.ptable .soonc{opacity:.6}.ptable thead th.pass{background:none;color:inherit;border-radius:0}.ptable thead th.soonc small{color:var(--ink-2)}.ptable tfoot td{padding:16px 10px;border:0;text-align:center}.ptable tfoot .btn{height:40px;padding:0 14px;font-size:14px}@media(max-width:700px){.ptable{overflow-x:auto}.ptable table{min-width:560px}.ptable th,.ptable td{padding:10px 6px}.ptable tfoot .btn{padding:0 8px;font-size:12.5px}}/* accounts: /sign-in/, /auth-callback/, /library/ */.ac-hero{padding-bottom:16px}.ac-hero h1{font-size:clamp(34px,4.6vw,56px)}section.ac-sec{padding-top:24px}.ac-box{max-width:520px}.ac-box h2{font-size:clamp(24px,2.6vw,30px)}.ac-box .btn{width:100%}.ac-google{gap:12px}.ac-google svg{background:var(--card);border-radius:50%;padding:2px;width:22px;height:22px}.ac-or{display:flex;align-items:center;gap:12px;margin:22px 0 16px;font:500 12.5px var(--mono);color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em}.ac-or:before,.ac-or:after{content:"";flex:1;height:1px;background:var(--line)}.ac-field{display:grid;gap:6px;margin-bottom:12px;font-size:14px;font-weight:600;color:var(--ink)}.ac-field input{font:500 17px var(--body);color:var(--ink);background:var(--card);border:1.5px solid var(--line2);border-radius:12px;padding:12px 14px;min-height:48px;width:100%}.ac-field input:focus-visible{outline:2px solid var(--coral);outline-offset:2px;border-color:var(--ink)}#acNum{font:700 24px var(--mono);letter-spacing:.3em}.ac-msg{background:var(--bad-bg);color:var(--bad-t);border-radius:10px;padding:10px 14px;font-size:15px;margin:14px 0 0}.section .ac-msg{max-width:720px;margin:0 0 18px}.ac-link{background:none;border:0;padding:0;font:inherit;color:var(--coral-ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.ac-legal{max-width:520px;margin-top:16px}.ac-who{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;color:var(--dim)}.ac-who[hidden]{display:none}.ac-who b{color:var(--text)}.ac-who .ac-link{color:var(--lamp)}.ac-vols{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr))}.ac-vol{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;background:var(--desk-3);border:1px solid var(--edge);border-radius:18px;padding:16px;min-width:0}.ac-vol.own{border-color:var(--gold-b)}.ac-vol h3{margin:0 0 2px;font-size:18px}.ac-vol h3 a{color:var(--text);text-decoration:none}.ac-vol h3 a:hover{text-decoration:underline}.ac-cv img{border-radius:4px 8px 8px 4px;box-shadow:var(--sh1)}.ac-lab{margin:0;font-size:14px;color:var(--dim)}.ac-st{margin:10px 0 4px}.ac-chip{display:inline-block;font:500 12.5px var(--mono);border:1px solid var(--line2);border-radius:999px;padding:3px 10px;color:var(--dim)}.ac-vol.own .ac-chip{border-color:var(--lamp);color:var(--lamp)}.ac-vol.warn .ac-chip{border-color:var(--coral);color:var(--bad-t)}.ac-meta{margin:0 0 10px;font-size:14px;color:var(--dim)}.ac-meta:empty{display:none}.ac-act{margin:0}.ac-act .btn{min-height:42px;padding:9px 16px;font-size:15px}/* My library: PDF library courses, owned first */.ac-courses{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}.ac-course{display:grid;gap:8px;align-content:start;background:var(--desk-3);border:1px solid var(--edge);border-radius:16px;padding:16px;min-width:0}.ac-course h3{margin:0;font-size:17px}.ac-course.own{border-color:var(--gold-b)}.ac-course.own .ac-chip{border-color:var(--lamp);color:var(--lamp)}.ac-course.warn .ac-chip{border-color:var(--coral);color:var(--bad-t)}.ac-cmeta{margin:0;color:var(--dim);font-size:13.5px}.ac-course .ac-st{display:grid;gap:6px;margin:0;justify-items:start}.ac-cnote{color:var(--dim);font-size:13.5px}.ac-course .ac-act{display:flex;flex-wrap:wrap;gap:8px;margin:0}.ac-course .btn{padding:8px 14px;font-size:14px}.ac-sum{background:var(--desk-2);border:1px solid var(--edge);border-left:4px solid var(--lamp);border-radius:12px;padding:12px 16px;color:var(--text);margin:0 0 14px}.ac-vol .ac-act{display:flex;flex-wrap:wrap;gap:8px}/* My library (lean sweep): jump links, e-book cover shelf, subject rows with HL | SL, Coach card, tool chips */.ac-jump{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.ac-jump a,.ac-chips a{font:600 14px var(--body);color:var(--ink);text-decoration:none;border:1px solid var(--line2);border-radius:999px;padding:7px 14px;background:var(--card)}.ac-jump a:hover,.ac-chips a:hover{border-color:var(--frame);background:var(--tint)}.ac-chips{display:flex;flex-wrap:wrap;gap:10px;margin:0}.ac-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.ac-vols{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;padding:4px 2px 14px;scrollbar-width:thin}.ac-vol{flex:0 0 min(86%,310px);scroll-snap-align:start;grid-template-columns:84px minmax(0,1fr);gap:14px;padding:14px;border-top:3px solid var(--frame)}.ac-vol h3{font-size:16px;line-height:1.25}.ac-vol .ac-st:empty{display:none}.ac-courses{display:grid;gap:10px;grid-template-columns:1fr;max-width:none}.ac-subj{display:grid;grid-template-columns:170px 1fr 1fr;align-items:stretch;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--frame);border-radius:var(--rs);box-shadow:var(--sh1)}.ac-sn{margin:0;padding:16px 18px;font:800 19px var(--head);align-self:center;color:var(--ink)}.ac-subj .ac-course{border:0;border-left:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent;padding:14px 18px;gap:6px}.ac-subj .ac-course.own{background:color-mix(in srgb,var(--gold) 8%,transparent)}.ac-subj .ac-course h3{font:800 16px var(--head)}.ac-subj .ac-cnote{display:none}.ac-subj .ac-course .ac-st{display:flex}.ac-coach{display:flex;gap:20px 40px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--frame);color:var(--frame-ink);border-radius:var(--rl);padding:26px 32px;border-bottom:3px solid var(--gold)}.ac-coach h2{margin:4px 0;font-size:clamp(22px,2.4vw,28px);color:var(--frame-ink)!important}.ac-coach p{margin:0}.ac-coach .eyebrow{color:#f2d38b}.ac-coach .ac-act{display:flex;gap:10px;flex-wrap:wrap}.ac-coach .btn.primary{background:#fff;color:#1b2a4a;border-color:#fff}.ac-coach .btn.ghost{background:transparent;color:inherit;border-color:rgba(255,255,255,.5)}@media(max-width:760px){.ac-subj{grid-template-columns:1fr 1fr}.ac-sn{grid-column:1/-1;padding:14px 16px 2px}.ac-subj .ac-course{border-left:0;padding:8px 16px 14px}.ac-subj .ac-course+.ac-course{border-left:1px solid var(--line)}.ac-subj .ac-act{flex-direction:column;align-items:stretch}.ac-subj .ac-act .btn{text-align:center}.ac-coach{padding:22px 20px}}/* /admin/ (owner only). Reuses account.css (ac-*) and library.css (pl-tabs). */.op-load{color:var(--dim)}.op-total{font:800 clamp(34px,5vw,54px) var(--head);letter-spacing:-.03em;margin:0 0 4px}.op-sub{color:var(--dim);margin:0 0 18px}.op-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}.op-tbl{width:100%;border-collapse:collapse;font-size:14px}.op-tbl th,.op-tbl td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.op-tbl th{font:600 12px var(--body);text-transform:uppercase;letter-spacing:.08em;color:var(--dim);white-space:nowrap}.op-tbl tr:last-child td{border-bottom:0}.op-tbl td.n,.op-tbl th.n{text-align:right;font-variant-numeric:tabular-nums}.op-tbl small{display:block;color:var(--dim)}.op-counts{display:flex;flex-wrap:wrap;gap:8px 10px;margin:0 0 14px}.op-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 14px}.op-bar input,.op-bar select,.op-tbl select,.op-tbl input[type=date]{font:500 14px var(--body);color:var(--ink);background:var(--card);border:1.5px solid var(--line2);border-radius:10px;padding:8px 10px;min-height:40px}.op-bar input[type=search]{flex:1 1 220px;max-width:340px}.op-subj{position:relative}.op-subj summary{cursor:pointer;font-size:13px;color:var(--ink);list-style:none}.op-subj summary::-webkit-details-marker{display:none}.op-subj[aria-disabled=true] summary{color:var(--dim);cursor:default}.op-subj .op-menu{position:absolute;z-index:5;left:0;top:100%;min-width:230px;max-height:300px;overflow:auto;background:var(--card);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--sh2);padding:6px}.op-subj label{display:flex;gap:8px;align-items:center;padding:4px 6px;font-size:13.5px;white-space:nowrap}.op-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--navy);color:var(--on-navy);padding:10px 18px;border-radius:10px;font-size:14.5px;z-index:60;box-shadow:var(--sh2);max-width:90vw}.op-toast.err{background:var(--bad-t);color:#fff}.op-more{margin:14px 0 0}.op-pre{white-space:pre-wrap;word-break:break-word;max-height:320px;overflow:auto;background:var(--tint);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:12.5px/1.45 ui-monospace,Menlo,monospace;margin:4px 0 12px}.op-cj>td{background:var(--paper)}.op-two{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:28px;align-items:start}@media(max-width:900px){.op-two{grid-template-columns:1fr}}.op-left{position:sticky;top:84px}.op-two h4{margin:18px 0 6px;font-size:15px}.op-files{list-style:none;padding:0;margin:0}.op-files li{padding:6px 0;border-bottom:1px solid var(--line)}.op-box{border:1px solid var(--line2);border-radius:10px;padding:12px;margin:8px 0;position:relative;background:var(--paper)}.op-box label,.op-fld label{display:block;font:600 12px var(--body);text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin:8px 0 3px}.op-ed,.op-note,#rvTutor{width:100%;font:14.5px/1.45 var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--line2);border-radius:8px;padding:8px 10px;box-sizing:border-box}.op-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.op-del{position:absolute;right:10px;top:8px;color:var(--bad-t)}.op-over{color:var(--bad-t);font-weight:700}.op-ok{color:var(--ok-t);font-weight:700}.op-viol{margin:4px 0 10px;padding-left:20px;color:var(--bad-t)}.op-btns{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 30px}/* Past-paper analysis: table-based charts that sit on paper cards on the dark desk. */.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.achart{padding:22px 20px 20px}.achart h3{margin:0 0 12px;font-size:18px}.achart .note{margin-top:12px}.tscroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}.tscroll:focus-visible{outline:2px solid var(--coral-ink);outline-offset:2px;border-radius:6px}table.at{width:100%;border-collapse:collapse;font-size:14.5px;color:var(--ink)}table.at th,table.at td{padding:6px 10px 6px 0;text-align:left;vertical-align:middle;border-bottom:1px solid var(--line)}table.at thead th{font:500 11.5px var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);border-bottom:1.5px solid var(--ink);vertical-align:bottom}table.at tbody th{font-weight:500;color:var(--ink);width:44%;min-width:9.5em;line-height:1.3}table.at tbody tr:last-child th,table.at tbody tr:last-child td{border-bottom:0}table.at td.sh{font:500 13px var(--mono);white-space:nowrap}.bc{display:flex;align-items:center;gap:8px;min-width:130px}.bc .tr{flex:1;min-width:0;height:14px;background:var(--tint);border-radius:3px;overflow:hidden}.bc i{display:block;height:100%;background:var(--coral);border-radius:3px}.bc b{font:500 13px var(--mono);color:var(--ink);min-width:3.4em;text-align:right;white-space:nowrap}.bc i.s1{background:var(--s1)}.bc i.s2{background:#d9a437}.sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;background:var(--coral)}.sw.s1{background:var(--s1)}.sw.s2{background:#d9a437}table.grp{min-width:420px}table.grp.g3{min-width:560px}table.grp td{padding-right:14px}table.grp .bc{min-width:100px}table.heat{min-width:460px}table.heat td.hm{text-align:center;font:500 13px var(--mono);padding:8px 6px;border:2px solid var(--paper);color:var(--ink)}table.heat thead th{text-align:center}table.heat thead th:first-child{text-align:left}.stack{display:grid;gap:18px;align-content:start}.stack .card h3{margin:0 0 8px}.stack .card h3 a{color:var(--ink)}.panel .ticks li{color:var(--text)}.hero .prose .note a{color:var(--lamp)}@media(max-width:700px){.achart{padding:18px 14px 16px}table.at{font-size:14px}table.at tbody th{min-width:8em}}/* lean sweep: top-10 bars with a toggle, navy stat strip, 3-step revise box, hub subject tiles */.achart.cut:not(.open) tr.xtra{display:none}.atoggle{margin:12px 0 0;padding:8px 16px;font-size:14px}.astrip{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:0;background:var(--frame);color:var(--frame-ink);border-radius:var(--rl);overflow:hidden;width:max-content;max-width:100%}.astrip li{padding:12px 20px;font:700 15px var(--head);border-right:1px solid rgba(255,255,255,.18)}.astrip li:last-child{border-right:0}.asteps{list-style:none;margin:0 0 18px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.asteps li{display:flex;gap:12px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--frame);border-radius:var(--rl);background:var(--card)}.asteps b{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--frame);color:var(--frame-ink);font:700 14px var(--head)}.asteps span{font-size:15px}.atiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.atile{display:grid;align-content:start;gap:6px;padding:20px;border:1px solid var(--line);border-top:3px solid var(--frame);border-radius:var(--rl);background:var(--card)}.atile h3{margin:0;font-size:22px}.atile p{margin:0;color:var(--dim)}.abtns{display:flex;gap:8px;margin-top:10px!important}.abtns .btn{padding:9px 18px;font-size:14.5px}@media(max-width:760px){.asteps{grid-template-columns:1fr}.astrip li{padding:10px 14px;font-size:14px}}/* Blog post "IB learning app" (content/blog/ib-learning-app.html): real app screens in device frames (navy-frame style), numbered callouts, the"In this guide" list and a few small blocks. The screens are the 1.1 app through the preview harness with a demo student, never a real student orpaid content. Pictures: static/img/blog/ib-learning-app/. Inline SVG diagrams use the shared .fig card (white in both themes). *//* a wide figure breaks out of the 72ch text column and stays centred; on phones it is the column width */.prose .appw{width:min(1040px,calc(100vw - 32px));position:relative;left:50%;transform:translateX(-50%);margin:30px 0}@media(max-width:760px){.prose .appw{width:100%;left:0;transform:none}}/* "In this guide" */.app-toc{margin:26px 0 0;padding:18px 20px;background:var(--band);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:var(--rl)}.app-toc .eyebrow{margin:0 0 8px}.app-toc ol{margin:0;padding-left:22px;columns:2;column-gap:30px}.app-toc li{margin:0 0 .35em;break-inside:avoid;font-size:15px;color:var(--ink-2)}.app-toc a{color:var(--ink);font-weight:600;text-decoration:none}.app-toc a:hover{text-decoration:underline}@media(max-width:640px){.app-toc ol{columns:1}}/* buttons under the lede */.app-cta{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 4px}.app-cta .btn{height:46px}.app-note{margin:10px 0 0;font-size:13.5px;color:var(--mute)}/* the short-answer panel */.prose .answer{margin:24px 0;padding:22px 24px;background:var(--band);border:1px solid var(--band-line);border-left:4px solid var(--gold);border-radius:var(--rl);box-shadow:var(--sh1)}.prose .answer .eyebrow{margin:0 0 8px;color:var(--coral-ink)}.prose .answer p{margin:0 0 .7em;color:var(--ink-2)}.prose .answer p:last-child{margin-bottom:0}/* tables: left-aligned text columns (the shared .ptable centres the second one) */.prose .ptable.tl td:nth-child(2),.prose .ptable.tl th:nth-child(2){text-align:left}.prose .ptable.tl td,.prose .ptable.tl th{vertical-align:top}.prose .ptable.tl td:first-child{font-weight:600;color:var(--ink)}.prose .ptable.tl{margin:22px 0}@media(min-width:761px){.prose .ptable.appw{box-shadow:var(--sh1)}}/* stage: a pale band the devices stand on */.dv-stage{margin:28px 0;padding:clamp(20px,3vw,34px) clamp(12px,2.5vw,30px) clamp(16px,2.5vw,26px);background:var(--band);border:1px solid var(--band-line);border-radius:var(--rl);box-shadow:var(--sh1)}.dv-stage figcaption,.dv-cap{margin:14px auto 0;max-width:64ch;font-size:14px;line-height:1.5;color:var(--ink-2);text-align:center}.dv-row{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:30px 26px}.dv-row>figure{margin:0;flex:0 1 218px;min-width:0}.dv-row>figure>figcaption{margin:12px auto 0;max-width:30ch;font-size:13.5px;line-height:1.45;color:var(--ink-2);text-align:center}.dv-row>figure>figcaption b{display:block;margin-bottom:2px;font:700 14px/1.3 var(--head);color:var(--ink);letter-spacing:-.01em}@media(max-width:560px){.dv-row{gap:26px 14px}.dv-row>figure{flex:0 1 calc(50% - 8px)}}/* phone: navy bezel and a Dynamic Island */.dv-phone{position:relative;width:100%;max-width:264px;margin:0 auto;padding:10px;background:var(--frame);border-radius:40px;box-shadow:0 0 0 1px var(--line2),var(--sh2)}.dv-phone img,.dv-phone video{display:block;width:100%;height:auto;border-radius:31px;background:#fff}.dv-phone:before{content:"";position:absolute;z-index:2;top:17px;left:50%;width:30%;height:22px;margin-left:-15%;border-radius:14px;background:#0b1020;pointer-events:none}.dv-phone.dv-sm{max-width:200px;padding:8px;border-radius:32px}.dv-phone.dv-sm img{border-radius:25px}.dv-phone.dv-sm:before{top:14px;height:17px;border-radius:11px}.dv-phone .co{z-index:3}.dv-phone video{aspect-ratio:520/1130}/* tablet and iPhone Duo (opened: a fold line down the middle) */.dv-pad{position:relative;width:100%;margin:0 auto;padding:12px;background:var(--frame);border-radius:26px;box-shadow:0 0 0 1px var(--line2),var(--sh2)}.dv-pad img{display:block;width:100%;height:auto;border-radius:14px;background:#fff}.dv-duo:after{content:"";position:absolute;z-index:2;top:12px;bottom:12px;left:50%;width:3px;margin-left:-1.5px;background:linear-gradient(rgba(11,16,32,.34),rgba(11,16,32,.07) 50%,rgba(11,16,32,.34));pointer-events:none}.dv-duo img{border-radius:12px}/* the browser version: a window with the address of the app */.dv-web{position:relative;margin:0 auto;background:var(--frame);border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px var(--line2),var(--sh2)}.dv-bar{display:flex;align-items:center;gap:12px;padding:9px 14px;color:var(--frame-ink)}.dv-dots{display:flex;gap:6px;flex:none}.dv-dots i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.38)}.dv-url{flex:1;min-width:0;margin-right:30px;padding:4px 12px;border-radius:7px;background:rgba(255,255,255,.12);font:500 12px/1.4 var(--body);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dv-web img{display:block;width:100%;height:auto;background:#fff}/* numbered callouts drawn over a screen, and the list that explains them */.dv-co{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;align-items:center;margin:28px 0}@media(min-width:780px){.dv-co{grid-template-columns:minmax(0,290px) 1fr;gap:38px}}.dv-co>figure{margin:0}.dv-co>figure>figcaption{margin:12px auto 0;max-width:34ch;font-size:13.5px;line-height:1.45;color:var(--ink-2);text-align:center}.co,.co-n{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--gold);color:#fff;font:700 13px/1 var(--body)}.co{position:absolute;margin:-13px 0 0 -13px;box-shadow:0 0 0 3px #fff,0 2px 6px rgba(27,42,74,.38)}.co-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}.co-list li{display:grid;grid-template-columns:26px 1fr;gap:12px;align-items:start;margin:0;color:var(--ink-2);font-size:15.5px;line-height:1.5}.co-list li b{color:var(--ink)}.co-list .co-n{margin-top:1px}.dv-co .dv-web .co{box-shadow:0 0 0 3px #fff,0 2px 6px rgba(27,42,74,.38)}.dv-pos{position:relative}.dv-pos a{display:block}@media(min-width:780px){.dv-co.web{grid-template-columns:minmax(0,640px) 1fr}}/* three readers, one page */.readers{display:grid;gap:16px;margin:26px 0}@media(min-width:900px){.prose .readers.appw{grid-template-columns:repeat(3,1fr)}}.reader{padding:20px 22px;background:var(--card);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:var(--rl);box-shadow:var(--sh1)}.reader h3{margin:0 0 4px;font:700 19px/1.3 var(--head);letter-spacing:-.01em;color:var(--ink)}.reader .rd-who{margin:0 0 12px;font-size:13.5px;color:var(--mute)}.reader ul{margin:0 0 12px;padding-left:18px}.reader li{margin:0 0 .4em;font-size:15px;line-height:1.5;color:var(--ink-2)}.reader p{margin:.6em 0 0;font-size:14.5px;line-height:1.5;color:var(--ink-2)}.reader p b{color:var(--ink)}/* subject cards */.subj{display:grid;gap:16px;margin:24px 0}@media(min-width:760px){.subj{grid-template-columns:1fr 1fr}}.subj>div{padding:18px 20px;background:var(--card);border:1px solid var(--band-line);border-left:4px solid var(--frame);border-radius:var(--rl);box-shadow:var(--sh1)}.subj h3{margin:0 0 6px;font:700 18px/1.3 var(--head);color:var(--ink)}.subj p{margin:0 0 .6em;font-size:15px;line-height:1.55;color:var(--ink-2)}.subj p:last-child{margin:0}.subj a{color:var(--coral-ink);font-weight:600}.dv-stage>.dv-web{max-width:880px}h2[id]{scroll-margin-top:90px}/* the loop video keeps its poster until it scrolls into view */.dv-phone video{background:#fff}.no-motion .dv-loop{display:none}/* three short cards side by side (the shared .steps grid is two columns) */@media(min-width:760px){.prose .steps.three{grid-template-columns:repeat(3,1fr)}}.prose .steps.three li{padding:18px}/* diagrams: wide on desktop, tall on phones (the .fig card stays white in both themes) */.fig .m-only{display:none}@media(max-width:620px){.fig .d-only{display:none}.fig .m-only{display:block}}/* the five practice levels as a list: the shared .lvbars glyph, larger */.lvl{list-style:none;margin:0;padding:0;display:grid;gap:4px}.lvl li{display:grid;grid-template-columns:44px 108px 1fr;gap:4px 14px;align-items:center;margin:0;padding:11px 12px;border-radius:10px;color:#47536d;font-size:15px;line-height:1.4}.lvl li:nth-child(odd){background:#f2f5fa}.lvl b{font:700 17px var(--head);color:#1b2a4a;letter-spacing:-.01em}.lvl .lvbars{height:24px;gap:3px;color:#1b2a4a}.lvl .lvbars i{width:6px;background:#d3d9e5}.lvl .lvbars i.on{background:#1b2a4a}.lvl .lvbars i:nth-child(1){height:10px}.lvl .lvbars i:nth-child(2){height:13px}.lvl .lvbars i:nth-child(3){height:16px}.lvl .lvbars i:nth-child(4){height:20px}.lvl .lvbars i:nth-child(5){height:24px}.lvl-note{margin:12px 0 0;text-align:center;font:700 13px var(--body);color:#8a5a14}@media(max-width:560px){.lvl li{grid-template-columns:44px 1fr}.lvl li>span:last-child{grid-column:2}}/* text tables become stacked cards on phones: each cell carries its column name (data-l) */@media(max-width:700px){.prose .ptable.tl table{display:block;min-width:0}.prose .ptable.tl thead{display:none}.prose .ptable.tl tbody,.prose .ptable.tl tr,.prose .ptable.tl td{display:block;width:auto}.prose .ptable.tl tr{padding:12px 14px 10px;border-bottom:1px solid var(--line)}.prose .ptable.tl tr:last-child{border-bottom:0}.prose .ptable.tl td{border:0;padding:3px 0;font-size:14.5px;text-align:left}.prose .ptable.tl td:first-child{width:auto;padding-bottom:5px;font:700 15.5px/1.35 var(--head);color:var(--ink)}.prose .ptable.tl td[data-l]:not(:first-child):before{content:attr(data-l);display:block;margin-top:6px;font:700 10.5px var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}}/* Blog: /blog/ index cards and post covers (content/blog.html, content/blog/*.html) */.blog-cover{margin:26px 0 0;border-radius:var(--rl);overflow:hidden;border:1px solid var(--line);box-shadow:var(--sh1);background:#fff}.blog-cover img{display:block;width:100%;height:auto}.blog-grid{display:grid;gap:22px}@media(min-width:700px){.blog-grid{grid-template-columns:1fr 1fr}}@media(min-width:1040px){.blog-grid{grid-template-columns:repeat(3,1fr)}}.blog-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1);overflow:hidden;color:var(--text);text-decoration:none;transition:box-shadow .2s,transform .2s}.blog-card:hover{box-shadow:var(--sh2);transform:translateY(-2px)}.blog-card img{display:block;width:100%;height:auto;aspect-ratio:1200/630;background:#fff;border-bottom:1px solid var(--line)}.blog-card .bc-body{padding:18px 20px 22px;display:flex;flex-direction:column;gap:8px;flex:1}.blog-card .bc-tag{font:600 11.5px var(--body);text-transform:uppercase;letter-spacing:.07em;color:var(--coral-ink)}.blog-card h2{font:700 19px/1.3 var(--head);margin:0;color:var(--ink)}.blog-card p{margin:0;color:var(--ink-2);font-size:15px;line-height:1.55}.blog-card .bc-meta{margin-top:auto;padding-top:6px;font-size:13px;color:var(--mute)}.blog-feature{display:grid;gap:0}@media(min-width:900px){.blog-feature{grid-template-columns:1.25fr 1fr}.blog-feature img{border-bottom:0;border-right:1px solid var(--line);align-self:center}.blog-feature .bc-body{padding:30px 32px;justify-content:center}.blog-feature h2{font-size:26px}}/* Inline SVG figures in posts: always on white so the diagram colours work in dark mode */.fig{margin:28px 0;padding:18px;background:#fff;border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1)}.fig svg{display:block;width:100%;height:auto;max-width:100%}.fig figcaption{margin-top:12px;font-size:14px;line-height:1.5;color:#47536d}.prose .panel{margin:26px 0}.prose .table-wrap,.prose .tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}.author-box{display:grid;grid-template-columns:96px 1fr;gap:22px;align-items:start;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--rl);box-shadow:var(--sh1);padding:24px}.author-box img{width:96px;height:128px;object-fit:cover;border-radius:12px}.author-box h2{margin:2px 0 8px;font-size:22px}.author-box p{color:var(--ink-2);font-size:15.5px}.author-box .author-links{display:flex;flex-wrap:wrap;gap:8px 20px;margin:4px 0 0;font-weight:600}.author-box a{color:var(--coral-ink)}@media(max-width:560px){.author-box{grid-template-columns:1fr}.author-box img{width:72px;height:96px}}.blog-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px}.blog-chips button{font:600 13px var(--body);border:1px solid var(--line2);background:var(--card);border-radius:999px;padding:6px 14px;color:var(--ink-2);cursor:pointer}.blog-chips button[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}.blog-grp{margin:34px 0 0}.blog-grp[hidden],.blog-card[hidden]{display:none}.blog-h{font-size:clamp(22px,2.4vw,28px);margin:0 0 16px;padding-left:12px;border-left:4px solid var(--navy)}/* IB grade boundaries (/ib-grade-boundaries/) */.bd-hero{padding-bottom:20px}.bd-hero h1{font-size:clamp(34px,4.6vw,58px);max-width:20ch}.bd-pill{display:inline-block;font:500 13px var(--mono);color:var(--on-navy);background:var(--navy);border-radius:999px;padding:5px 14px}.bd-filters-sec{padding-top:30px}.bd-filters{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0 0 26px;padding:14px 16px;background:var(--desk-2);border:1px solid var(--edge);border-radius:16px}.bd-filters[hidden]{display:none}.bd-f{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.bd-f>span{font:500 12px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.08em;margin-right:6px}.bd-f button,.bd-tz{font:600 14px var(--body);color:var(--text);background:transparent;border:1.5px solid var(--line2);border-radius:999px;padding:8px 14px;min-height:40px;cursor:pointer}.bd-f button[aria-pressed=true],.bd-tz.on{background:var(--navy);border-color:var(--navy);color:var(--on-navy)}.bd-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-top:18px}.bd-tile{display:grid;gap:4px;align-content:start;min-width:0;padding:18px;background:var(--desk-3);border:1px solid var(--edge);border-radius:18px;text-decoration:none;color:var(--text);transition:transform .15s,border-color .15s}.bd-tile:hover{transform:translateY(-2px);border-color:var(--gold-b)}.bd-tile[hidden]{display:none}.bd-tn{font:700 20px var(--head);letter-spacing:-.03em}.bd-tl{font:500 12px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.06em;margin-top:6px}.bd-tv{font:500 14px var(--mono);color:var(--dim)}.bd-tv b{font:800 22px var(--head);color:var(--lamp);letter-spacing:-.03em}.bd-spark{width:100%;max-width:150px;height:38px;margin:6px 0 2px}.bd-spark polyline{fill:none;stroke:var(--lamp);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.bd-spark circle{fill:var(--coral)}.bd-d{font:500 12.5px var(--mono);color:var(--dim)}.bd-d.up{color:var(--bad-t)}.bd-d.down{color:var(--ok-t)}.bd-empty{color:var(--dim)}.bd-sub{padding-top:30px}.bd-sub h2{max-width:26ch}.bd-course{margin:0;padding:0;background:none;border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none}.bd-course[hidden]{display:none}.bd-course summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:14px 54px 14px 4px;position:relative;cursor:pointer}.bd-course summary:hover .bd-sn{color:var(--coral-ink)}.bd-sn{font:700 18px var(--head);letter-spacing:-.02em}.bd-ss{font:500 13px var(--mono);color:var(--ink-2)}.bd-course summary:after{right:8px;top:50%;transform:translateY(-50%)}.bd-body{padding:6px 4px 22px;color:var(--text);min-width:0}.bd-body h3{font-size:22px;margin-bottom:.6em}.bd-sum,.bd-gap{color:var(--dim);max-width:70ch}.bd-sum b,.bd-gap b{color:var(--text)}.bd-ctl{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:14px 0 6px}.bd-ctl[hidden]{display:none}.bd-ctl label{display:flex;align-items:center;gap:8px;font:500 13px var(--mono);color:var(--dim)}.bd-ctl select{font:600 15px var(--body);color:var(--text);background:var(--desk-2);border:1.5px solid var(--line2);border-radius:10px;padding:8px 12px;min-height:40px}.bd-tzs{display:flex;flex-wrap:wrap;gap:6px}.bd-read{font:500 13px var(--mono);color:var(--dim);margin:6px 0 10px;min-height:1.6em}.bd-read b{color:var(--lamp)}.bd-gc{display:inline-block;margin:0 10px 2px 0}.bd-gc b{color:var(--text)}.bd-cw{overflow-x:auto;background:var(--desk-2);border:1px solid var(--edge);border-radius:14px;padding:8px}.bd-chart[hidden],.bd-none[hidden]{display:none}.bd-none{color:var(--dim);margin:20px}.bd-svg{display:block;width:100%;min-width:480px;height:auto}.bd-grid{stroke:var(--edge);stroke-width:1}.bd-ax{fill:var(--dim);font:12px var(--mono)}.bd-end{font:700 13px var(--mono)}.bd-ln{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.bd-col{fill:transparent;cursor:pointer}.bd-col:hover{fill:rgba(27,42,74,.05)}.bd-col.on{fill:var(--gold-t)}.bd-leg{list-style:none;display:flex;flex-wrap:wrap;gap:6px 16px;margin:10px 0 18px;padding:0;font:500 12.5px var(--mono);color:var(--dim)}.bd-leg i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.bd-tw{overflow:auto;max-height:440px;border:1px solid var(--edge);border-radius:12px;max-width:100%}.bd-table{width:100%;min-width:520px;border-collapse:collapse;font:500 14px var(--mono)}.bd-table th,.bd-table td{padding:9px 10px;text-align:center;border-bottom:1px solid var(--edge);white-space:nowrap}.bd-table thead th{position:sticky;top:0;background:var(--desk-2);color:var(--dim);font-size:12px;z-index:1}.bd-table tbody th{text-align:left;font-weight:500;color:var(--text)}.bd-table td.g7{color:var(--lamp);font-weight:700}.bd-table tr.sel{background:var(--gold-t)}.bd-table tr[hidden]{display:none}.bd-links{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;margin:18px 0 0}.bd-links a:not(.btn){font-size:15px}.bd-cta{display:flex;flex-wrap:wrap;gap:18px 30px;align-items:center;justify-content:space-between;padding:clamp(22px,3vw,34px);background:var(--desk-3);border:1px solid var(--edge);border-left:4px solid var(--lamp);border-radius:20px}.bd-cta h2{font-size:clamp(24px,3vw,34px);margin-bottom:.3em}.bd-cta p{margin:0 0 6px;color:var(--dim)}.bd-src{margin-top:18px}@media(max-width:560px){.bd-course summary{padding-right:46px}.bd-body{padding-inline:14px}.bd-filters{padding:12px}}/* Grade 7 at a glance: one framed panel with a subject switcher (owner, 2026-10-21; replaces the 10-tile grid) */.g7{margin-top:18px}.g7bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.g7tabs{display:flex;gap:6px;padding:5px;background:var(--band);border:1px solid var(--band-line);border-radius:14px;overflow-x:auto;scrollbar-width:none;max-width:100%}.g7tabs::-webkit-scrollbar{display:none}.g7tabs button,.g7lv button{flex:none;font:700 14.5px var(--body);color:var(--ink-2);background:none;border:0;border-radius:10px;padding:10px 16px;min-height:42px;cursor:pointer;white-space:nowrap}.g7tabs button[aria-selected=true],.g7lv button[aria-pressed=true]{background:var(--frame);color:var(--frame-ink);box-shadow:var(--sh1)}.g7lv{display:flex;gap:4px;padding:5px;background:var(--band);border:1px solid var(--band-line);border-radius:14px}.g7lv button:disabled{opacity:.35;cursor:default}.g7stage{position:relative}.g7p{background:var(--card);border:1px solid var(--band-line);border-radius:18px;box-shadow:var(--sh2);overflow:hidden;animation:g7in .3s both}.g7p[hidden]{display:none}@keyframes g7in{from{opacity:.4;transform:translateX(10px)}}.g7p header{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;padding:16px 22px;background:var(--band);border-bottom:1px solid var(--band-line);border-left:5px solid var(--frame)}.g7p h3{margin:0;font:800 24px var(--head);letter-spacing:-.02em}.g7b{font:600 12.5px var(--body);text-transform:uppercase;letter-spacing:.08em;color:var(--mute)}.g7m{display:grid;gap:18px 30px;padding:22px;align-items:center}@media(min-width:860px){.g7m{grid-template-columns:minmax(260px,.8fr) 1.2fr}}.g7ss{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:10px;margin-bottom:12px}.g7s{border:1px solid var(--band-line);border-radius:14px;padding:12px 14px;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 2px;background:var(--card)}.g7s span{width:100%;font:700 12px var(--body);letter-spacing:.08em;color:var(--mute)}.g7s b{font:800 34px/1.1 var(--head);color:var(--lamp);letter-spacing:-.03em}.g7s i{font-style:normal;font-weight:700;color:var(--lamp)}.g7m .bd-d{font-size:14px;display:inline-block;padding:4px 10px;border-radius:999px;background:var(--band)}.g7n{font-size:13.5px;color:var(--mute);margin:12px 0 0}.g7r{min-width:0}.g7c{width:100%;height:auto;display:block}.g7c .gr line{stroke:var(--band-line);stroke-width:1}.g7c text{font:500 11px var(--body);fill:var(--mute)}.g7c .ar{fill:var(--gold-t)}.g7c polyline{fill:none;stroke:var(--lamp);stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}.g7c circle{fill:var(--card);stroke:var(--lamp);stroke-width:2}.g7c circle.last{fill:var(--lamp)}.g7c text.v{font:700 11.5px var(--body);fill:var(--ink)}.g7p footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 22px;border-top:1px solid var(--band-line)}.g7p footer a:not(.btn){font-weight:600;color:var(--coral-ink)}.g7nav{position:absolute;top:50%;z-index:2;width:42px;height:42px;margin-top:-21px;border-radius:50%;border:1px solid var(--band-line);background:var(--card);box-shadow:var(--sh2);font:400 26px/1 var(--body);color:var(--ink);cursor:pointer}.g7nav.prev{left:-20px}.g7nav.next{right:-20px}.g7dots{display:flex;justify-content:center;gap:6px;margin-top:14px}.g7dots i{width:7px;height:7px;border-radius:50%;background:var(--line2);transition:.2s}.g7dots i.on{width:22px;border-radius:4px;background:var(--frame)}.bd-all{padding-top:10px}@media(max-width:700px){.g7nav{display:none}.g7bar{flex-direction:column;align-items:stretch}.g7lv{align-self:flex-start}.g7m{padding:16px}.g7p header{padding:14px 16px}.g7s b{font-size:28px}}@media(prefers-reduced-motion:reduce){.g7p{animation:none}}/* lean list: one framed panel per subject group, courses as rows that open their chart and table */.bd-sub{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--frame);border-radius:var(--rl);padding:6px 20px 8px;margin:0 0 16px}.bd-sub .bd-course:first-of-type{border-top:0}.bd-sub[hidden]{display:none}.bd-grp{margin:12px 0 2px!important}.bd-all{padding-top:30px}.bd-hero{padding-bottom:0}.bd-all .note{margin:0 0 14px}/* Free notes: a readable sheet of paper on the night desk. */.cs-width{max-width:calc(76ch + 96px);min-width:0}.cs-hero{padding-bottom:30px}.cs-hero h1{font-size:clamp(32px,4.8vw,57px);line-height:1.12;overflow-wrap:anywhere}.cs-hero .lede{max-width:76ch}.cs-hero .pills{margin-bottom:0}.cs-body{padding-bottom:64px}.cs-article{padding:clamp(20px,4.5vw,48px);color:var(--ink);overflow-wrap:anywhere;--navy:var(--ink);--navy-deep:var(--ink);--gold:var(--coral-ink)}.cs-article p,.cs-article li,.cs-article td,.cs-article .faq-answer{color:var(--ink-2)}.cs-article strong,.cs-article b,.cs-article h2,.cs-article h3,.cs-article h4{color:var(--ink)}.cs-article h2{font-size:clamp(23px,3vw,31px);line-height:1.3;margin:1.7em 0 .7em;scroll-margin-top:90px}.cs-article h2:first-child{margin-top:0}.cs-article h3{font-size:20px;line-height:1.4;margin:1.4em 0 .6em}.cs-article h4{font:700 17px/1.4 var(--head);margin:.7em 0}.cs-article li{margin-bottom:.6em}.cs-article ul,.cs-article ol{padding-left:1.5em}.cs-article a:focus-visible,.cs-article summary:focus-visible{outline-color:var(--coral-ink)}.cs-article code{background:var(--line);color:var(--ink);white-space:normal}.cs-article .syl-tag{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:3px 8px;font:500 11px/1.5 var(--mono);color:var(--coral-ink);vertical-align:middle;letter-spacing:0}.cs-article .formula-row{display:grid;grid-template-columns:minmax(120px,30%) minmax(0,1fr);gap:4px 18px;align-items:baseline;border-bottom:1px solid var(--line);padding:13px 4px;margin:0;min-width:0;overflow-x:auto;overflow-y:hidden;color:var(--ink)}.cs-article :not(.formula-row)+.formula-row{border-top:1px solid var(--line);margin-top:14px}.cs-article .formula-row+:not(.formula-row){margin-top:22px}.cs-article .formula-row:hover{background:color-mix(in srgb,var(--hl) 14%,transparent)}@media(max-width:560px){.cs-article .formula-row{grid-template-columns:minmax(0,1fr);padding:12px 2px}}.cs-article .formula-row__label{font:500 12px/1.5 var(--mono);color:var(--ink-2)}.cs-article .katex{font-size:1.03em}.cs-article .katex-display{max-width:100%;overflow-x:auto;overflow-y:hidden;padding:6px 0;margin:.7em 0}.cs-article .katex-display>.katex{white-space:nowrap}.cs-article .callout{border-left:4px solid var(--coral);padding:16px 18px;background:color-mix(in srgb,var(--coral) 7%,var(--paper));margin:20px 0;border-radius:0 10px 10px 0;color:var(--ink-2)}.cs-article .callout--trick{border-color:var(--lamp);background:color-mix(in srgb,var(--lamp) 17%,var(--paper))}.cs-article .callout--note{border-color:var(--ink-2);background:color-mix(in srgb,var(--ink) 4%,var(--paper))}.cs-article .worked-example{padding:clamp(16px,3vw,26px);border:1px solid var(--line);border-top:4px solid var(--coral);border-radius:10px;margin:28px 0}.cs-article .worked-example__title{font:700 16px/1.5 var(--head);color:var(--coral-ink);margin-bottom:12px}.cs-article .cs-table{max-width:100%;overflow-x:auto;margin:20px 0;border:1px solid var(--line);border-radius:10px}.cs-article table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.55}.cs-article th,.cs-article td{padding:12px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);min-width:130px}.cs-article th{font-weight:700;color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,var(--paper))}.cs-article tr:last-child td{border-bottom:0}.cs-article details{border:1px solid var(--line);padding:17px;margin:12px 0}.cs-article summary{line-height:1.55;display:block}.cs-article summary:after{float:right;margin-left:10px}.cs-article .faq-answer{padding-top:14px}.cs-article .diagram,.cs-article .cheatsheet-diagram-wrap{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin:24px 0;max-width:100%;overflow-x:auto}.cs-article svg{display:block;max-width:100%;height:auto;margin:auto}.cs-article svg.cs-raster{width:100%}.cs-article .diagram__cap,.cs-article .cheatsheet-caption{font-size:14px;line-height:1.6;color:var(--ink-2);margin:14px 0 0}.cs-article .exam-bank{border:1px solid var(--line);border-radius:10px;margin:22px 0;overflow:hidden}.cs-article .exam-bank__head{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--ink);color:var(--paper);font:500 12px/1.6 var(--mono)}.cs-article .exam-bank__head svg{width:18px;margin:0}.cs-article .exam-bank__body{padding:18px}.cs-article .exam-bank__tests{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.cs-article .exam-bank__tests span,.cs-article .exam-freq{font:500 11px/1.6 var(--mono);background:var(--navy);color:var(--on-navy);padding:3px 7px;border-radius:6px}.cs-article .exam-bank__tip{border-top:1px solid var(--line);padding:12px 0;color:var(--ink-2)}.cs-article .related-strip{border-top:1px solid var(--line);margin-top:32px;padding-top:8px}.cs-article .related-strip__links{display:flex;gap:10px;flex-wrap:wrap}.cs-article .related-strip__links a{font-size:14px}.cs-article .theme-block{margin:26px 0}.cs-article .theme-header{border-bottom:1px solid var(--line);margin-bottom:16px}.cs-article .theme-letter{font:500 12px var(--mono);color:var(--coral-ink)}.cs-article .theme-title{margin-top:8px}.cs-article .topic-grid{display:grid;gap:12px}.cs-article .topic-card{display:block;border:1px solid var(--line);border-radius:12px;padding:18px;text-decoration:none;min-width:0}.cs-article .topic-card:hover{border-color:var(--coral-ink)}.cs-article .topic-card__free,.cs-article .topic-card__num,.cs-article .topic-card__meta{font:500 11px/1.6 var(--mono);color:var(--coral-ink)}.cs-article .topic-card__free{float:right}.cs-article .topic-card__desc{font-size:14px}.cs-article .topic-card__meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px}.cs-article .topic-card__meta__cta svg{display:inline-block;width:14px;vertical-align:middle}.cs-going{padding:40px 0 28px}.cs-going h2{font-size:30px}.cs-links{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:20px}.cs-links a{display:block;border:1px solid var(--edge);border-radius:12px;padding:18px;text-decoration:none;color:var(--text);overflow-wrap:anywhere}.cs-links a:hover{border-color:var(--lamp)}.cs-links small{display:block;font:500 11px/1.6 var(--mono);color:var(--lamp);margin-bottom:7px}.cs-live h2{font-size:21px;line-height:1.45;max-width:36ch}.cs-live p{margin-bottom:0}@media(min-width:768px){.cs-article .topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.cs-links{grid-template-columns:1fr}.cs-article{padding:22px 18px}.cs-article .worked-example{padding:14px}.cs-article .callout{padding:14px}.cs-article table{font-size:13px}}.cs-article .callout>strong:first-child{display:block;font:500 11.5px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--coral-ink);margin-bottom:6px}.cs-article .callout--trap{border-color:var(--coral)}.cs-article{overflow-x:clip}.cs-article .katex-mathml{max-width:100%;overflow:hidden}.cs-article p .katex,.cs-article li .katex{white-space:normal}.cs-article,.cs-article .cs-table,.cs-article .katex-display,.cs-article .formula-row,.cs-article .diagram{position:relative}/* Option A layout (owner-approved 2026-10-22): compact hero, PDF strip, folded sections, contents rail. */:root{--cs-fr:#1b2a4a}:root[data-theme="dark"]{--cs-fr:#5b6b8c}.cs-hero.hA{padding:26px 0 10px}.mk-wide{max-width:1040px}.hA h1{margin:.1em 0 .25em;font-size:clamp(28px,3.4vw,42px)}.hA .lede{max-width:70ch;margin-bottom:10px}.mk-btnrow{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:18px}.btn.big{padding:15px 28px;font-size:17px}.mk-tlink{font-weight:600;font-size:14px}.tA-h{max-width:660px;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:20px 0 10px;font:600 13px var(--mono);color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em}.tA{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:0 0 6px;max-width:660px}.tA a{position:relative;display:block;transition:transform .15s}.tA a:hover{transform:translateY(-3px)}.tA a::after{content:'p.'attr(data-n);position:absolute;left:8px;bottom:8px;background:var(--navy);color:var(--on-navy);font:700 11px/1 var(--head);padding:4px 7px;border-radius:6px}.tA img{display:block;width:100%;height:auto;aspect-ratio:240/340;border:1.5px solid var(--cs-fr);border-radius:8px;background:#fff}.mk-badge,.tb{display:inline-grid;place-items:center;border-radius:10px;background:var(--navy);color:var(--on-navy);font:700 15px/1 var(--head);flex:none}.mk-badge{min-width:34px;height:34px;padding:0 8px}.tb{min-width:20px;height:20px;border-radius:6px;font-size:11px;margin-right:6px}.cs-body .gA{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:32px;align-items:start;margin-top:22px}.railA{position:sticky;top:84px;border:1.5px solid var(--cs-fr);border-radius:14px;padding:14px 12px;background:var(--card);max-height:calc(100vh - 110px);overflow:auto}.railA h2{font:700 12px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin:0 0 8px 6px}.railA ol{list-style:none;margin:0;padding:0}.railA a{display:flex;gap:8px;align-items:baseline;padding:7px 8px;border-radius:8px;font-size:13.5px;line-height:1.35;color:var(--ink-2);text-decoration:none;border-left:3px solid transparent}.railA a:hover{background:var(--hov)}.railA a.on{border-left-color:var(--lv-c);background:var(--tint);color:var(--ink);font-weight:600}.railA .tb{margin-right:0}.chipsA{display:none;position:relative}.mk-chips a{display:inline-flex;align-items:center;white-space:nowrap;border:1.5px solid var(--cs-fr);border-radius:999px;padding:6px 12px 6px 8px;font-size:13px;color:var(--ink);text-decoration:none;background:var(--card)}.mk-chips a.on{background:var(--navy);color:var(--on-navy)}.mk-chips a.on .tb{background:var(--on-navy);color:var(--navy)}.cs-fold{padding:0;border:0;background:none;box-shadow:none}.cs-fold .ctlA{display:flex;justify-content:space-between;align-items:center;margin:0 0 12px;gap:10px}.cs-fold .ctlA .mk-tlink{color:var(--ink-2)}.cs-fold .ctlA button{cursor:pointer}.cs-article details.introA{margin:0 0 16px;border:1.5px dashed var(--line3);border-radius:14px;padding:4px 18px;background:var(--card)}.introA>summary{cursor:pointer;font-weight:600;padding:12px 0;color:var(--ink)}.cs-article details.mk-sec{border:1.5px solid var(--cs-fr);border-radius:14px;background:var(--card);margin:0 0 16px;padding:0;scroll-margin-top:90px;overflow:hidden}.mk-sec>summary{list-style:none;cursor:pointer;display:block;padding:16px 18px 14px}.mk-sec>summary::-webkit-details-marker{display:none}.cs-article .mk-sec>summary::after{display:none}.mk-sec[open]>summary{border-bottom:1.5px solid var(--cs-fr);background:linear-gradient(var(--tint),var(--card))}.sh{display:flex;gap:12px;align-items:center}.st{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}.cs-article .st h2{font-size:clamp(18px,2.4vw,23px);line-height:1.25;margin:0}.chev{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--cs-fr);flex:none;position:relative}.chev::before{content:"";position:absolute;left:9px;top:8px;width:8px;height:8px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg);transition:transform .2s}.mk-sec[open] .chev::before{transform:rotate(-135deg);top:12px}.mk-sec .sb{padding:6px 20px 20px;color:var(--ink-2)}.mk-sec .sb>h3:first-child{margin-top:.8em}.cs-article .kf{border:1.5px solid var(--cs-fr);border-left:6px solid var(--lv-c);border-radius:10px;background:var(--tint);padding:4px 14px;margin:12px 0 4px;cursor:auto}.cs-article .kf .formula-row{border:0;border-bottom:1px solid var(--line);margin:0;padding:10px 2px;display:grid;grid-template-columns:minmax(110px,26%) minmax(0,1fr);gap:4px 14px;align-items:baseline;overflow-x:auto;overflow-y:hidden;color:var(--ink)}.cs-article .kf .formula-row:last-child{border-bottom:0}.cs-article .kf .formula-row+.formula-row{margin:0}.kc{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:12px 0 4px}.kc span{font:500 12px/1.5 var(--mono);background:var(--tint);border:1px solid var(--line2);color:var(--ink);padding:3px 9px;border-radius:999px}.kc .kc-l{background:none;border:0;padding:0 4px 0 0;color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.cs-article .kq{margin:10px 0 2px;padding-left:1.2em;color:var(--ink-2);font-size:14px}.cs-article .kq li{margin:3px 0}.cs-body .cs-up{border:1.5px solid var(--cs-fr);border-radius:14px;margin:28px 0}@media(max-width:1000px){.cs-body .gA{grid-template-columns:minmax(0,1fr)}.railA{display:none}.chipsA{display:flex;gap:8px;overflow-x:auto;padding:8px 0 10px;margin:14px 0 0;scrollbar-width:none}.chipsA::-webkit-scrollbar{display:none}.tA{grid-template-columns:repeat(5,minmax(96px,1fr));overflow-x:auto}}@media(max-width:600px){.hA .cs-meta{display:none}.mk-sec .sb{padding:4px 14px 16px}.mk-sec>summary{padding:14px}.btn.big{width:100%;justify-content:center;text-align:center}.mk-btnrow .btn{flex:1 1 auto;text-align:center}.cs-article .kf .formula-row{grid-template-columns:minmax(0,1fr)}}@media print{.railA,.chipsA,.tA,.tA-h,.ctlA{display:none}.mk-sec>summary{border-bottom:0}}/* Course pages /<course>/ (tools/pages_course.py), owner-approved 2026-10-22. */.cp-hero{padding:18px 0 26px}.cp-hw{display:grid;gap:22px;align-items:center}@media(min-width:900px){.cp-hw{grid-template-columns:1fr 330px}}.cp-lv{display:inline-flex;gap:4px;padding:4px;background:var(--band);border:1px solid var(--band-line);border-radius:12px;margin-bottom:12px}.cp-lv a{font:700 13.5px var(--body);padding:6px 16px;border-radius:9px;color:var(--ink-2);text-decoration:none}.cp-lv a[aria-current]{background:var(--frame);color:var(--frame-ink)}.cp-hl h1{font:800 clamp(34px,5vw,56px)/1.05 var(--head);letter-spacing:-.03em;margin:0 0 8px}.cp-lede{font-size:18px;color:var(--ink-2);margin:0 0 14px}.cp-facts{list-style:none;padding:0;margin:0 0 20px;display:flex;flex-wrap:wrap;gap:8px}.cp-facts li{font-size:14px;color:var(--ink-2);padding:6px 12px;border-radius:999px;background:var(--band);border:1px solid var(--band-line)}.cp-facts b{color:var(--ink);font-weight:800}.cp-cta{display:flex;flex-wrap:wrap;gap:10px}.cp-gb{display:grid;gap:6px;padding:18px 20px;border-radius:18px;background:var(--card);border:1px solid var(--band-line);box-shadow:var(--sh2);text-decoration:none;color:var(--ink);transition:transform .2s,box-shadow .2s}.cp-gb:hover{transform:translateY(-2px)}.cp-gbk{font:700 11.5px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}.cp-gbv{display:flex;gap:16px}.cp-gbv span{display:grid}.cp-gbv i{font:600 11px var(--body);font-style:normal;color:var(--mute)}.cp-gbv b{font:800 30px/1 var(--head);color:var(--lamp)}.cp-spark{width:100%;height:40px}.cp-spark polyline{fill:none;stroke:var(--lamp);stroke-width:2.2;stroke-linejoin:round}.cp-spark circle{fill:var(--lamp)}.cp-gbl{font:600 13.5px var(--body);color:var(--coral-ink)}.cp-bar{position:sticky;top:var(--hdr-h,64px);z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-block:1px solid var(--band-line)}.cp-bar .wrap{display:flex;gap:4px;align-items:center;overflow-x:auto;scrollbar-width:none}.cp-bar a{flex:none;padding:12px 14px;font:600 14px var(--body);color:var(--ink-2);text-decoration:none;border-bottom:2px solid transparent}.cp-bar a:hover,.cp-bar a.on{color:var(--ink);border-bottom-color:var(--frame)}.cp-bar .cp-bar-go{margin-left:auto;color:var(--coral-ink)}html{scroll-behavior:smooth}.cp-sec{scroll-margin-top:120px;padding:30px 0}.cp-tools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.cp-tool{display:grid;gap:2px;padding:14px;border-radius:14px;border:1px solid var(--band-line);background:var(--card);text-decoration:none;color:var(--ink);transition:transform .18s,border-color .18s,box-shadow .18s}.cp-tool:hover{transform:translateY(-3px);border-color:var(--c);box-shadow:var(--sh2)}.cp-ti{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 13%,transparent);margin-bottom:8px}.cp-tool b{font:700 14.5px var(--head)}.cp-tool span:last-child{font-size:12.5px;color:var(--mute)}@media(max-width:980px){.cp-tools{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:560px){.cp-tools{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:0;padding:2px 2px 8px;scrollbar-width:none}.cp-tool{flex:0 0 150px;scroll-snap-align:start}}.cp-h2{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:12px}.cp-h2 h2,.cp-faqw h2{font:800 28px var(--head);margin:0}.cp-legend{font-size:12.5px;color:var(--mute);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.cp-legend .lvbars{margin-left:8px}.cp-gs{display:grid;gap:16px;align-items:start}@media(min-width:900px){.cp-gs{grid-template-columns:1fr 1fr}}.cp-g,.cp-skill{border:1px solid var(--band-line);border-radius:16px;overflow:hidden;background:var(--card);box-shadow:none}.cp-g{padding:0!important;margin:0}.cp-g>summary.cp-gh{padding:12px 46px 12px 16px;position:relative}.cp-g>summary.cp-gh:after{right:16px;top:50%;transform:translateY(-50%);position:absolute}.cp-skill{margin-bottom:16px}.cp-gh{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:12px 16px;background:var(--band);border-bottom:1px solid var(--band-line);border-left:4px solid var(--frame)}.cp-gh::-webkit-details-marker{display:none}.cp-gh b{font:800 16px var(--head)}.cp-g:not([open]) .cp-gh{border-bottom:0}.cp-gh span{font-size:12.5px;color:var(--mute)}.cp-t{display:grid;grid-template-columns:44px 1fr auto auto 18px;gap:10px;align-items:center;padding:11px 16px;border-top:1px solid var(--band-line);text-decoration:none;color:var(--ink);transition:background .15s}.cp-g .cp-gh+.cp-t,.cp-skill .cp-t:first-child{border-top:0}.cp-t:hover{background:var(--hov)}.cp-t:hover .cp-go{transform:translateX(3px);color:var(--ink)}.cp-code{font:700 12px var(--body);color:var(--frame-ink);background:var(--frame);border-radius:7px;text-align:center;padding:4px 0}.cp-tn{font-size:15px;font-weight:500;min-width:0}.cp-free{font:700 10.5px var(--body);letter-spacing:.06em;text-transform:uppercase;color:var(--ok-t);background:var(--ok-bg);border:1px solid var(--ok-b);border-radius:999px;padding:2px 8px}.cp-t:not(:has(.cp-free)) .cp-dots{grid-column:4}.cp-dots{display:flex;align-items:flex-end;gap:2px;height:11px}.cp-dots i{width:3px;border-radius:1px;background:var(--line3)}   /* four levels = four small bars, never four colours (owner, 2026-11-07) */.cp-dots i:nth-child(1){height:5px}.cp-dots i:nth-child(2){height:7px}.cp-dots i:nth-child(3){height:9px}.cp-dots i:nth-child(4){height:11px}.cp-go{color:var(--mute);transition:transform .15s}@media(max-width:520px){.cp-t{grid-template-columns:40px 1fr auto 14px}.cp-dots{display:none}.cp-t:not(:has(.cp-free)) .cp-go{grid-column:4}}.cp-faqw{display:grid;gap:14px}@media(min-width:900px){.cp-faqw{grid-template-columns:260px 1fr}}.cp-endb{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:22px 24px;border-radius:18px;background:var(--frame);color:var(--frame-ink)}.cp-endb b{display:block;font:800 22px var(--head)}.cp-endb span{opacity:.8}.cp-endb .btn.primary{background:var(--frame-ink);color:var(--frame);border-color:var(--frame-ink)}.cp-endb .btn.ghost{background:transparent;color:var(--frame-ink);border-color:color-mix(in srgb,var(--frame-ink) 40%,transparent)}.cp-oth{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:18px 0 0}.cp-oth span{font:700 12px var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-right:6px}.cp-oth a{font:600 14px var(--body);padding:7px 14px;border-radius:999px;border:1px solid var(--band-line);color:var(--ink);text-decoration:none}.cp-oth a:hover{border-color:var(--frame)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cp-tool,.cp-gb,.cp-t,.cp-go{transition:none}}.cp-hl h1 .cp-h1s{display:block;font:600 clamp(17px,1.7vw,20px)/1.4 var(--body);letter-spacing:0;color:var(--ink-2);margin-top:8px}.cp-hl h1{margin-bottom:16px}.cp-gh h3{margin:0;font:800 16px var(--head);display:inline}.cp-h2s{font:700 13px var(--body)!important;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);margin:0 0 12px}.cp-tools{grid-template-columns:repeat(var(--n,6),minmax(0,1fr))}.cp-tools.cp-t4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:980px){.cp-tools,.cp-tools.cp-t4{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:560px){.cp-tools,.cp-tools.cp-t4{display:flex}}.avatar-photo{width:84px;height:112px;object-fit:cover;object-position:top;border-radius:14px;box-shadow:var(--sh1)}.trust{grid-template-columns:1fr}@media(min-width:900px){.trust{grid-template-columns:1.1fr .9fr .8fr}}.quotes{display:grid;gap:12px;align-content:start}.quotes blockquote{margin:0;background:var(--paper);color:var(--ink);border-radius:12px;padding:16px 18px;box-shadow:var(--sh1)}.quotes blockquote p{margin:0 0 6px;font-size:15px;line-height:1.5}.quotes cite{font:500 12px var(--mono);font-style:normal;color:var(--ink-2)}.quotes .note a{color:var(--lamp)}.certs{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin:12px 0 4px}.certs figure{margin:0}.certs img{border-radius:10px;box-shadow:var(--sh1)}.certs figcaption{font-size:13.5px;color:var(--dim);margin-top:6px}.author-hero{display:grid;gap:26px;align-items:center}@media(min-width:760px){.author-hero{grid-template-columns:200px 1fr}}.author-hero img{border-radius:18px;box-shadow:var(--sh1)}/* Lean content components (about, author, EE, method, legal): navy frame, icon tiles, stat band */.statband{display:grid;grid-template-columns:repeat(4,1fr);background:var(--frame);color:var(--frame-ink);border-radius:14px;overflow:hidden;margin:6px 0 0}.statband div{padding:18px 12px;text-align:center;border-right:1px solid rgba(255,255,255,.16)}.statband div:last-child{border:0}.statband b{display:block;font:800 clamp(24px,3vw,34px)/1.1 var(--head)}.statband span{font-size:13.5px;opacity:.88}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:0}.tile{border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:12px;padding:20px;background:var(--card)}.tile .ti{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--frame);color:var(--frame-ink);margin-bottom:12px}.tile .ti svg{width:24px;height:24px}.tile h2,.tile h3{font-size:19px;margin:0 0 6px}.tile p{margin:0;color:var(--dim);font-size:15px}.tile a{font-weight:600}.tickrow{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px 22px}.tickrow li{position:relative;padding-left:28px;color:var(--ink-2);font-size:15px}.tickrow li:before{content:"";position:absolute;left:0;top:3px;width:18px;height:18px;border-radius:50%;background:var(--frame) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 9.5l2.5 2.5L13 6.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}.pillcta{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--frame);border-radius:999px;padding:10px 20px;font-weight:700;text-decoration:none;color:var(--ink)}.pillcta:hover{background:var(--frame);color:var(--frame-ink)}.badges{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none}.badges li{background:var(--frame);color:var(--frame-ink);border-radius:999px;padding:5px 13px;font:600 13px var(--body)}.profile{display:grid;gap:26px;align-items:center;border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:16px;background:var(--band);padding:24px}@media(min-width:760px){.profile{grid-template-columns:200px 1fr}}.profile img{border-radius:14px;box-shadow:var(--sh1)}.certs figure{border:1px solid var(--band-line);border-radius:12px;padding:8px;background:var(--card)}.navypanel{background:var(--frame);border-radius:14px;padding:22px;color:var(--frame-ink)}.navypanel h2{color:var(--frame-ink);margin-top:0}.navypanel .quotes{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.shelf{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 14px;margin:0;list-style:none}.shelf li{flex:0 0 150px;scroll-snap-align:start}@media(min-width:900px){.shelf{flex-wrap:wrap;overflow:visible}.shelf li{flex:0 0 calc(16.66% - 14px)}}.shelf a{display:block;text-decoration:none;color:var(--ink);font:600 13.5px/1.3 var(--body)}.shelf img{width:100%;height:auto;border-radius:6px;box-shadow:var(--sh1);margin-bottom:8px;display:block}.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;counter-reset:f;list-style:none;padding:0;margin:0}.flow li{counter-increment:f;position:relative;border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:12px;padding:18px;background:var(--card)}.flow li:before{content:counter(f);position:absolute;top:-16px;right:14px;width:30px;height:30px;border-radius:50%;background:var(--frame);color:var(--frame-ink);display:grid;place-items:center;font:700 14px var(--body)}.flow b{display:block;font:700 17px var(--head);margin:8px 0 4px;color:var(--ink)}.flow span{color:var(--dim);font-size:14.5px}.flow .ti{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--frame);color:var(--frame-ink)}.flow .ti svg{width:22px;height:22px}.limits{border-left:4px solid var(--frame);background:var(--band);border-radius:0 12px 12px 0;padding:16px 20px}.legal{border:1px solid var(--band-line);border-left:5px solid var(--frame);border-radius:12px;background:var(--card);padding:10px clamp(18px,3vw,36px) 20px}.legal h2:first-child{margin-top:18px}.badge-upd{display:inline-block;background:var(--frame);color:var(--frame-ink);border-radius:999px;padding:4px 12px;font:600 12.5px var(--body);margin:0 0 4px}@media(max-width:640px){.statband{grid-template-columns:1fr 1fr}.statband div:nth-child(2){border-right:0}.statband div:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.16)}}/* Notebook page shell for content pages (Extended Essay): ruled paper, red margin line, pen accents (font and colours come from the page head) */.nbk{background-image:linear-gradient(90deg,transparent 46px,var(--margin-rule) 46px,var(--margin-rule) 48px,transparent 48px),repeating-linear-gradient(transparent 0 31px,var(--rule) 31px 32px)}@media(max-width:700px){.nbk{background-image:repeating-linear-gradient(transparent 0 31px,var(--rule) 31px 32px)}}.nbk .hero,.nbk .section,.nbk section{background:transparent}.nbk .pen{font:700 22px/1.1 "Caveat",cursive;color:var(--pen)}.crit5{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;list-style:none;padding:0;margin:14px 0}.crit5 li{background:var(--paper);border:1px solid var(--line2);border-top:3px solid var(--frame);border-radius:12px;padding:14px 16px;position:relative}.crit5 .L{font:700 40px/1 "Caveat",cursive;color:var(--pen)}.crit5 .M{position:absolute;top:12px;right:12px;background:var(--frame);color:var(--frame-ink);border-radius:999px;font:700 12px var(--body);padding:3px 10px}.crit5 b{display:block;font:700 15.5px var(--head);color:var(--ink);margin:4px 0}.crit5 span.d{font-size:14px;color:var(--dim)}.crit5 li.top{border-top-color:var(--pen)}.navypanel p,.prose .navypanel p{color:var(--frame-ink);opacity:.92}.navypanel .btn{color:var(--ink)}.navypanel .note{opacity:1}.flow{grid-template-columns:repeat(2,1fr)}@media(min-width:640px){.flow{grid-template-columns:repeat(4,1fr)}}/* annotated data booklet: plain = official, mint = ours */.db-hero .ctas{margin-top:22px}.db-key{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.db-key>div{display:flex;gap:12px;align-items:flex-start;background:var(--desk-2);border:1px solid var(--edge);border-radius:14px;padding:14px 16px}.db-key p{margin:0;font-size:14.5px;color:var(--dim);line-height:1.5}.db-key b{color:var(--text)}.sw{flex:none;width:22px;height:22px;border-radius:6px;margin-top:2px}.sw.plain{background:var(--paper)}.sw.note{background:var(--paper);box-shadow:inset 4px 0 0 var(--mint)}.sw.extra{background:var(--mint-bg2);border:2px solid var(--mint)}.db-toc ul{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:8px}.db-toc a{display:block;border:1px solid var(--edge);border-radius:999px;padding:7px 13px;font-size:13.5px;color:var(--text);text-decoration:none}.db-toc a:hover{border-color:var(--lamp);color:var(--lamp)}.db-article{padding:clamp(18px,4vw,44px);position:relative;overflow-x:clip;color:var(--ink)}.db-article h2{font-size:clamp(22px,2.8vw,30px);margin:1.6em 0 .6em;scroll-margin-top:90px;color:var(--ink)}.db-article section:first-of-type h2:first-child{margin-top:0}.db-article .db-theme{scroll-margin-top:80px}.db-article .db-theme>h2{border-top:2px solid var(--ink);padding-top:.8em;margin-top:1.8em}.db-table{border:1px solid var(--line2);border-radius:10px;overflow:hidden}.db-row{display:grid;grid-template-columns:minmax(150px,32%) minmax(0,1fr);border-top:1px solid var(--line)}.db-row:first-child{border-top:0}.db-row.one{grid-template-columns:minmax(0,1fr)}.db-k{padding:12px 14px;font-size:14.5px;color:var(--ink);background:var(--tint)}.db-v{padding:10px 14px;min-width:0}.db-where{display:block;font-size:13.5px;color:var(--ink-2)}.tx{color:var(--ink)}.tx.dm{display:block;overflow-x:auto;overflow-y:hidden;padding:4px 0;position:relative}.tx.dm .katex-display{margin:0}.tx.dm>.katex{text-align:left}.math-ready .tx.dm{font-size:1.08em}.db-note{margin:6px 0 2px;padding:6px 10px 6px 12px;border-left:4px solid var(--mint);background:var(--mint-bg);border-radius:0 8px 8px 0;font-size:13.5px;line-height:1.5;color:var(--mint-ink)}.db-note .who,.db-extra .who{display:block;font:500 10.5px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mint);margin-bottom:2px}.db-extra{margin:14px 0 6px;border:2px solid var(--mint);background:var(--mint-bg2);border-radius:12px;padding:12px 14px}.db-extra .who{margin-bottom:8px}.db-x{padding:8px 0;border-top:1px dashed var(--mint-b)}.db-x:first-of-type{border-top:0;padding-top:0}.db-x b{display:block;font:600 14px var(--head);color:var(--ok-t)}.db-x p{margin:4px 0 0;font-size:13.5px;color:var(--mint-ink);line-height:1.5}.db-x .tx{color:var(--ok-t)}.db-scroll{overflow-x:auto;border:1px solid var(--line2);border-radius:10px;position:relative}.db-tbl{border-collapse:collapse;width:100%;font-size:14.5px}.db-tbl th{background:var(--tint);text-align:left;padding:10px 12px;font-weight:700;color:var(--ink)}.db-tbl td{padding:9px 12px;border-top:1px solid var(--line);vertical-align:top;color:var(--ink)}.db-tbl td:first-child{min-width:150px}.db-tbl.si td,.db-tbl.si th{text-align:center}.db-symbols{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.db-symbols figure{margin:0;border:1px solid var(--line);border-radius:10px;padding:12px 10px 10px;text-align:center}.db-symbols svg{width:100%;max-width:130px;height:auto;fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.db-symbols svg text{fill:var(--ink);stroke:none;font:600 17px var(--body)}.db-symbols figcaption{font-size:13px;color:var(--ink-2);margin-top:6px}.db-spec .arrowline{display:flex;justify-content:space-between;font:500 12px var(--mono);color:var(--ink-2);margin:0 0 6px}.bands{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line2);border-radius:10px;overflow:hidden}.band{padding:10px 8px;border-left:1px solid var(--line);min-width:0}.band:first-child{border-left:0}.band b{display:block;font-size:13.5px;color:var(--ink)}.band span{display:block;font:500 11px/1.4 var(--mono);color:var(--ink-2);margin-top:3px;overflow-wrap:anywhere}.band.b3{background:linear-gradient(90deg,#8a5cf6,#3b82f6,#22c55e,#facc15,#f97316,#ef4444);}.band.b3 b,.band.b3 span{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.vis{font-size:13.5px;color:var(--ink-2);margin:8px 0 0}.db-level{font:700 13px var(--body);background:var(--tint);color:var(--ink);padding:9px 12px;border-radius:8px;margin:18px 0 10px}.db-level.ahl{background:var(--ink);color:var(--paper)}.db-topic{display:grid;grid-template-columns:minmax(150px,26%) minmax(0,1fr);gap:4px 22px;padding:14px 0;border-top:1px solid var(--line)}.db-topic h3{font-size:17px;margin:4px 0 0;color:var(--ink)}.db-topic h3 small{font:500 10.5px var(--mono);background:var(--ink);color:var(--paper);border-radius:999px;padding:2px 7px;vertical-align:middle;margin-left:4px}.db-topic>.db-extra{grid-column:2}.db-eq{padding:6px 0;border-bottom:1px dotted var(--line);min-width:0}.db-eq:last-child{border-bottom:0}.db-empty{margin:4px 0;font-size:14px;color:var(--ink-2);font-style:italic}.db-foot{margin:30px 0 0;padding-top:16px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-2);line-height:1.6}.print-only{display:none}@media(max-width:760px){.db-key{grid-template-columns:minmax(0,1fr)}.db-row,.db-topic{grid-template-columns:minmax(0,1fr)}.db-k{padding:10px 12px 4px;background:none;font-weight:600}.db-topic>.db-extra{grid-column:1}.bands{grid-template-columns:repeat(2,minmax(0,1fr))}.band{border-top:1px solid var(--line)}}@media print{@page{size:A4;margin:14mm 12mm 16mm}html,body{background:var(--card)!important}header.site,footer.site,.crumbs,.skip,.db-hero,.db-key,.db-toc,.db-more,script{display:none!important}.section,.wrap{padding:0!important;max-width:none!important}.db-article{box-shadow:none!important;border:0!important;padding:0!important;border-radius:0!important;background:var(--card)!important}.print-only{display:block;margin:0 0 10px;font-size:11px;color:var(--ink-2);border-bottom:2px solid #ff6a45;padding-bottom:6px}.db-theme{break-before:page}.db-topic,.db-row,.db-extra,.db-eq,.db-symbols figure,tr{break-inside:avoid}.db-note,.db-extra,.band.b3,.db-level.ahl,.sw{-webkit-print-color-adjust:exact;print-color-adjust:exact}.tx.dm{overflow:visible}}.tx.dm .katex-display{text-align:left}.tx.dm .katex-display>.katex{text-align:left}@media print{:root,html{color-scheme:light!important;background:var(--card)!important}body{font-size:12px}.db-article h2{font-size:19px;margin:1.1em 0 .45em}.db-row{grid-template-columns:34% minmax(0,1fr)}.db-k{padding:5px 8px;font-size:11.5px;background:var(--tint);font-weight:400}.db-v{padding:4px 8px}.db-where,.db-note,.db-x p,.db-tbl,.db-empty{font-size:10.5px}.db-note{padding:3px 8px;margin:3px 0 1px}.db-note .who,.db-extra .who{font-size:8.5px}.db-extra{padding:7px 10px;margin:8px 0 4px;border-radius:8px}.db-x{padding:4px 0}.db-x b{font-size:11.5px}.db-topic{grid-template-columns:24% minmax(0,1fr);gap:2px 14px;padding:7px 0}.db-topic h3{font-size:13px}.db-topic>.db-extra{grid-column:2}.db-eq{padding:2px 0}.math-ready .tx.dm{font-size:.95em}.db-tbl th,.db-tbl td{padding:4px 8px}.db-symbols{grid-template-columns:repeat(5,1fr);gap:6px}.db-symbols figure{padding:6px}.bands{grid-template-columns:repeat(7,1fr)}.db-level{padding:5px 9px;margin:10px 0 6px;font-size:11px}#circuits{break-before:page}}@media print{.db-topic{break-inside:auto}.db-level,.db-article h2,.db-topic h3{break-after:avoid}.db-eq,.db-x,.db-note{break-inside:avoid}.db-extra{break-inside:auto}}@media print{.db-level.ahl{break-before:page;margin-top:0}}@media print{.db-extra{break-inside:avoid}}@media screen and (max-width:760px){.db-tbl:not(.si) thead{display:none}.db-tbl:not(.si),.db-tbl:not(.si) tbody{display:block}.db-tbl:not(.si) tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:10px 12px;border-top:1px solid var(--line)}.db-tbl:not(.si) tr:first-child{border-top:0}.db-tbl:not(.si) td{border:0;padding:0;min-width:0}.db-tbl:not(.si) td:first-child{min-width:0;font-weight:600}.db-tbl:not(.si) td:nth-child(3){grid-column:1/-1}}@media screen and (max-width:560px){.db-symbols{grid-template-columns:repeat(2,minmax(0,1fr))}}/* maths formula sheets */.fs-lab{margin:0 0 2px;font-size:13.5px;font-weight:600;color:var(--ink)}.fs-article .db-topic h3 small{display:inline-block;font:500 10.5px var(--mono);border-radius:999px;padding:2px 7px;vertical-align:middle;margin-left:4px}.fs-article .db-topic h3 small.sl{background:var(--tint);color:var(--ink-2)}.fs-article .db-topic h3 small.hl{background:var(--ink);color:var(--paper)}.fs-article .db-topic{grid-template-columns:minmax(120px,18%) minmax(0,1fr)}.fs-article .db-theme>.db-extra{margin-top:18px}@media print{.fs-lab{font-size:10.5px}.fs-article .db-topic{grid-template-columns:15% minmax(0,1fr)}}@media(max-width:760px){.fs-article .db-topic{grid-template-columns:minmax(0,1fr)}}/* chemistry: periodic table and not-retyped list */.pt-wrap,.opt-wrap{overflow-x:auto;position:relative}.pt{display:grid;grid-template-columns:repeat(18,minmax(38px,1fr));grid-template-rows:repeat(7,auto) 10px repeat(2,auto);gap:2px;min-width:720px}.pt .el{border:1px solid var(--line2);border-radius:4px;padding:2px 3px;text-align:center;background:var(--card);line-height:1.1}.pt .el small{display:block;font:500 9px var(--mono);color:var(--ink-2);text-align:left}.pt .el b{display:block;font:700 14px var(--head);color:var(--ink)}.pt .el span{display:block;font-size:9.5px;color:var(--ink-2)}.pt .el.fk{display:grid;place-items:center;font:500 9px var(--mono);color:var(--ink-2);background:var(--tint)}.db-nr{margin:0;padding-left:1.2em}.db-nr li{margin:.4em 0;color:var(--ink-2);font-size:14.5px}.db-nr b{color:var(--ink)}@media print{.pt{min-width:0;grid-template-columns:repeat(18,1fr)}.pt .el b{font-size:10px}.pt .el small,.pt .el span{font-size:6.5px}}/* one-page periodic table */.opt{display:grid;grid-template-columns:repeat(18,1fr);grid-template-rows:repeat(7,auto) 3px repeat(2,auto);gap:1px}.opt .el{border:.5px solid var(--line2);padding:0 1px;line-height:1.05;text-align:center}.opt .el small{display:block;font-size:4.6px;color:var(--ink-2);text-align:left}.opt .el b{display:block;font:700 7.4px var(--head)}.opt .el span{display:block;font-size:4.6px;color:var(--ink-2)}.opt .el.fk{font-size:4.6px;color:var(--ink-2);display:grid;place-items:center}.op-span{column-span:all;margin:0 0 4px}/* sticky section chips + back-to-top (lean sweep) */.db-toc{position:sticky;top:60px;z-index:20;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 0;margin:0 0 14px;overflow-x:auto;scrollbar-width:none}.db-toc::-webkit-scrollbar{display:none}.db-toc ul{flex-wrap:nowrap;margin:0}.db-toc a{white-space:nowrap}.db-top{text-align:center;margin:20px 0 0}.db-top a{display:inline-block;border:1px solid var(--edge);border-radius:999px;padding:8px 16px;font-weight:600;text-decoration:none}@media print{.db-top{display:none}}/* IB grade calculator (/tools/ib-grade-calculator/) */.gc-hero{padding-bottom:20px}.gc-hero h1{font-size:clamp(34px,4.6vw,58px);max-width:20ch}.gc-sec{padding-top:30px}.gc-grid{display:grid;gap:22px;align-items:start}@media(min-width:960px){.gc-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,.9fr)}.gc-out{position:sticky;top:90px}}.gc-form h2{font-size:clamp(24px,2.6vw,30px)}.gc-rows{display:grid;gap:10px;margin:18px 0 24px}.gc-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.gc-name{font:600 15.5px var(--head);letter-spacing:-.02em;min-width:0}@media(max-width:560px){.gc-row{grid-template-columns:1fr auto}.gc-name{grid-column:1/-1}.gc-lvl{justify-self:start}.gc-cas{grid-column:1/-1}}.gc-lvl{display:inline-flex;border:1.5px solid var(--ink);border-radius:999px;overflow:hidden}.gc-lvl label{position:relative;cursor:pointer}.gc-lvl input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}.gc-lvl span{display:block;font:500 14px var(--mono);padding:10px 16px;min-width:56px;text-align:center;color:var(--ink)}.gc-lvl input:checked+span{background:var(--ink);color:var(--on-navy)}.gc-lvl input:focus-visible+span{outline:2px solid var(--coral);outline-offset:-4px;border-radius:999px}.gc-sel{display:grid;gap:4px;font-size:14px;color:var(--ink-2)}.gc-sel select{appearance:none;-webkit-appearance:none;font:700 18px var(--head);color:var(--ink);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23b8341a' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 12px center;border:1.5px solid var(--line2);border-radius:12px;padding:9px 34px 9px 14px;min-height:46px;min-width:78px}.gc-sel select:focus-visible{outline:2px solid var(--coral);outline-offset:2px}.gc-core-h{margin-top:4px}.gc-core{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;align-items:end}.gc-cas{display:flex;gap:10px;align-items:center;min-height:46px;font-weight:600;cursor:pointer}.gc-cas input{width:22px;height:22px;accent-color:var(--coral-ink);margin:0}.gc-actions{margin-top:22px}.gc-out{background:var(--desk-3);border:1px solid var(--edge);border-left:4px solid var(--dim);border-radius:20px;padding:clamp(22px,3vw,30px);min-width:0}.gc-out.pass{border-left-color:var(--mint)}.gc-out.fail{border-left-color:var(--coral)}.gc-big{margin:0;display:flex;align-items:baseline;gap:10px}.gc-big b{font:800 clamp(64px,9vw,96px)/1 var(--head);letter-spacing:-.05em;color:var(--lamp)}.gc-big span{font:500 20px var(--mono);color:var(--dim)}.gc-status{font:700 20px var(--head);letter-spacing:-.02em;margin:14px 0 8px}.gc-out.pass .gc-status{color:var(--ok-t)}.gc-out.fail .gc-status{color:var(--bad-t)}.gc-why{margin:0 0 18px;padding-left:18px;color:var(--dim);font-size:15px}.gc-why li{margin-bottom:6px}.gc-break{list-style:none;margin:0;padding:14px 0 0;border-top:1px solid var(--edge);display:grid;gap:8px}.gc-break li{display:flex;justify-content:space-between;gap:12px;font-size:15px;color:var(--dim)}.gc-break b{font:500 15px var(--mono);color:var(--text)}.gc-matrix{background:var(--paper);color:var(--ink);border-radius:18px;padding:8px;box-shadow:var(--sh1);max-width:520px}.gc-matrix table{width:100%;border-collapse:collapse;table-layout:fixed}.gc-matrix th,.gc-matrix td{text-align:center;padding:10px 2px;font:500 14px var(--mono);border-bottom:1px solid var(--line)}.gc-matrix thead th{font-size:12px;color:var(--ink-2)}.gc-matrix tbody th{font-size:12px;color:var(--ink-2);text-align:left;padding-left:8px}.gc-matrix td{font:700 18px var(--head)}.gc-matrix td.x{font:500 12px var(--mono);color:var(--coral-ink)}.gc-matrix td.on{background:var(--hl);border-radius:8px;outline:2px solid var(--ink)}.gc-matrix tbody tr:last-child>*{border-bottom:0}.gc-list{margin:0 0 18px;padding-left:20px;display:grid;gap:10px}.gc-list b{display:block;font:600 15px var(--head);color:var(--text)}.gc-list li{color:var(--dim)}.gc-more{margin-top:26px}/* mobile sticky result bar */.gc-bar{display:none}@media(max-width:959px){.gc-bar{display:flex;align-items:baseline;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:12px max(16px,env(safe-area-inset-left)) calc(12px + env(safe-area-inset-bottom,0px));background:var(--frame);color:var(--frame-ink);text-decoration:none;box-shadow:0 -4px 16px rgba(0,0,0,.18)}.gc-bar b{font:800 26px/1 var(--head)}.gc-bar span{font:600 14px var(--body);opacity:.8}.gc-bar em{font:600 14px var(--body);font-style:normal;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gc-bar i{font:600 13px var(--body);font-style:normal;opacity:.85}.gc-bar.pass em:before{content:"\2713 "}.gc-bar.fail{background:#7a2330}body:has(.gc-bar) footer.site{padding-bottom:84px}}/* Home: IA & EE Coach highlight (tools/home_coach.py). Option A = product row with a sample report card;option B = navy band after the numbers strip. Navy-frame tokens from zz-navy-frame.css. */@font-face{font-family:"Caveat";src:url(/fonts/caveat.woff2) format("woff2");font-display:swap}:root{--hpen:#d23a2c}:root[data-theme="dark"]{--hpen:#ff8a7a}.hco-wrap{position:relative;max-width:520px;margin:0 auto;padding:10px 0 18px}.hco-card{background:var(--card);border:1px solid var(--band-line);border-radius:14px;box-shadow:0 1px 2px rgba(27,42,74,.06),0 18px 40px rgba(27,42,74,.14);overflow:hidden;transform:rotate(-.6deg);text-align:left}.hco-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;background:var(--band);border-bottom:1px solid var(--band-line);box-shadow:inset 4px 0 0 var(--frame);padding:12px 18px 12px 20px}.hco-t{font:700 11.5px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--frame)}:root[data-theme="dark"] .hco-t{color:var(--frame-ink)}.hco-bd{font:700 12px var(--body);color:var(--ok-t,#2f7d4f);background:var(--ok-bg,#eaf6ee);border:1px solid var(--ok-b,#bfe0cb);border-radius:999px;padding:3px 10px}.hco-b{padding:16px 20px 16px}.hco-ti{font:800 22px/1.15 var(--head);letter-spacing:-.02em;margin:0 0 6px;color:var(--ink)}.hco-rq{font:italic 500 15px/1.45 var(--serif);color:var(--ink);border-left:3px solid var(--hpen);padding:1px 0 1px 12px;margin:8px 0 14px}.hco-s{font:700 14px var(--body);margin:0 0 4px;color:var(--ink)}.hco-pen{font:700 20px "Caveat",cursive;color:var(--hpen);margin-left:6px}.hco-pr{list-style:none;margin:0;padding:0;counter-reset:p}.hco-pr li{counter-increment:p;display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start;padding:10px 0;border-bottom:1px dashed var(--band-line)}.hco-pr li:before{content:counter(p);width:30px;height:30px;display:grid;place-items:center;font:700 24px "Caveat",cursive;color:var(--hpen);border:2px solid var(--hpen);border-radius:50%;transform:rotate(-6deg)}.hco-pr b{display:block;font:700 14.5px/1.3 var(--head);color:var(--ink)}.hco-m{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap}.hco-m i{font:600 11px var(--body);font-style:normal;border:1px solid var(--band-line);background:var(--band);border-radius:999px;padding:2px 8px;color:var(--dim)}.hco-c{position:relative;white-space:nowrap}.hco-c:after{content:"";position:absolute;inset:-.25em -.3em -.2em -.3em;pointer-events:none;border:2px solid var(--hpen);border-radius:50%/60%;transform:rotate(-2deg)}.hco-ft{display:flex;align-items:center;gap:12px;margin-top:14px;padding-top:12px;border-top:2px solid var(--hpen);flex-wrap:wrap}.hco-stamp{font:700 18px "Caveat",cursive;color:var(--hpen);border:2px solid var(--hpen);border-radius:8px;padding:0 9px;transform:rotate(-4deg);line-height:1.3}.hco-n{font-size:12.5px;color:var(--dim)}/* option B: a navy highlight band */.hcb{background:var(--frame);color:var(--frame-ink);border-block:3px solid var(--gold,#a9742a)}.hcbw{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.1fr) auto;gap:20px 34px;align-items:center;padding-top:26px;padding-bottom:26px}.hcb-l h2{margin:6px 0 4px;font-size:clamp(22px,2.4vw,30px);color:var(--frame-ink)!important;letter-spacing:-.02em}.hcb-l p{margin:0;opacity:.88;font-size:15.5px;max-width:32em}.hcb-new{display:inline-block;font:700 11px var(--body);letter-spacing:.12em;text-transform:uppercase;background:#f2d38b;color:#1b2a4a;border-radius:999px;padding:3px 10px}.hcb-q{margin:0 0 8px;font:700 13px var(--body);letter-spacing:.06em;text-transform:uppercase;opacity:.8}.hcb-chips{display:flex;flex-wrap:wrap;gap:8px}.hcb-chips a{color:inherit;text-decoration:none;font:600 14px var(--body);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:7px 14px;background:rgba(255,255,255,.07)}.hcb-chips a:hover{background:rgba(255,255,255,.18);border-color:#f2d38b}.hcb-r{display:flex;gap:10px;flex-wrap:wrap}.hcb .btn.primary{background:#fff;color:#1b2a4a;border-color:#fff}.hcb .btn.ghost{background:transparent;color:inherit;border-color:rgba(255,255,255,.5)}@media(max-width:1000px){.hcbw{grid-template-columns:1fr}}/* Home hero (option B, owner pick 2026-10-21): headline, course search, five illustrated subject tiles, drifting notation.Markup in tools/build.py home(); tile art in HERO_ART. Everything below the hero is unchanged. */.hhx{position:relative;overflow:hidden;padding:clamp(44px,7vw,96px) 0 clamp(40px,6vw,72px);text-align:center}.hgl{position:absolute;inset:0;pointer-events:none}.hgl span{position:absolute;font:600 22px var(--serif);font-style:italic;color:var(--ink);opacity:.07;animation:hh-drift 22s linear infinite;white-space:nowrap}@keyframes hh-drift{0%{transform:translateY(30px) rotate(-6deg)}50%{transform:translateY(-30px) rotate(6deg)}100%{transform:translateY(30px) rotate(-6deg)}}.hhb{position:relative}.hhb h1{font:800 clamp(40px,6.4vw,80px)/1.02 var(--head);letter-spacing:-.03em;margin:12px auto 16px;max-width:14em;color:var(--ink)}.hhb h1 em{font-style:normal;color:var(--gold);position:relative}.hhb .lede{margin:0 auto;max-width:36em;font-size:clamp(17px,1.6vw,19px);color:var(--ink-2)}.hhb .h2s{margin:26px auto 0;max-width:560px}.hcts{display:grid;gap:14px;margin:34px auto 0;max-width:1120px;grid-template-columns:repeat(5,1fr)}.hct{--c:var(--lv-c);position:relative;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh1);padding:18px 16px 16px;text-align:left;display:flex;flex-direction:column;gap:4px;transition:transform .25s,box-shadow .25s;animation:hh-rise .6s both}.hct:nth-child(2){animation-delay:.08s}.hct:nth-child(3){animation-delay:.16s}.hct:nth-child(4){animation-delay:.24s}.hct:nth-child(5){animation-delay:.32s}@keyframes hh-rise{from{transform:translateY(16px)}}.hct:hover{transform:translateY(-4px);box-shadow:var(--sh2)}.hct:before{content:"";position:absolute;left:16px;right:16px;top:0;height:4px;border-radius:0 0 4px 4px;background:var(--c)}.hcart{width:100%;height:auto;aspect-ratio:200/120;color:var(--c);margin:6px 0 12px;background:linear-gradient(160deg,color-mix(in srgb,var(--c) 13%,transparent),color-mix(in srgb,var(--c) 4%,transparent));border-radius:14px;overflow:visible}.hcart .ax{fill:none;stroke:var(--line3);stroke-width:1.6;stroke-linecap:round}.hcart .ln{fill:none;stroke:currentColor;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}.hcart .ln.alt{opacity:.55}.hcart .dash{stroke-dasharray:3 7;stroke-width:2.6}.hcart .fillc{fill:currentColor;opacity:.22}.hcart .fillc.soft{opacity:.12}.hcart .gl2{fill:none;stroke:var(--gold);stroke-width:2.4;stroke-linecap:round}.hcart .vec{fill:none;stroke:var(--ink);stroke-width:2.4;stroke-linecap:round}.hcart .pt{fill:var(--gold);stroke:var(--card);stroke-width:2}.hcart .dot{fill:currentColor;animation:hh-dp 3s ease-in-out infinite}@keyframes hh-dp{0%,100%{transform:none}50%{transform:translateY(-3px)}}.hcart .lab{font:italic 600 13px var(--serif);fill:var(--ink-2)}.hcart .lab.sm{font-size:11px}/* tangent rides the curve: the point stays on f(x) and the line turns with the slope */.hcart .tan{offset-path:path("M36 96 C60 56 80 36 108 44 S150 112 182 30");offset-rotate:auto;offset-distance:22%;animation:hh-tan 6s ease-in-out infinite alternate}@keyframes hh-tan{from{offset-distance:22%}to{offset-distance:82%}}.hcart .draw{stroke-dasharray:170;animation:hh-dr 4s ease-in-out infinite}@keyframes hh-dr{0%{stroke-dashoffset:170}45%,100%{stroke-dashoffset:0}}.hcart .ball{offset-path:path("M26 102 Q100 -14 176 102");animation:hh-fly2 3.2s cubic-bezier(.45,.05,.55,.95) infinite}@keyframes hh-fly2{0%{offset-distance:0%}100%{offset-distance:100%}}.hcart .bub{fill:var(--card);opacity:.9;animation:hh-bub 2.6s ease-in infinite}@keyframes hh-bub{0%{transform:none;opacity:0}20%{opacity:.9}100%{transform:translateY(-22px);opacity:0}}.hcart .bond{stroke:var(--line3);stroke-width:4;stroke-linecap:round}.hcart .atom.c{fill:var(--ink)}.hcart .atom.o{fill:currentColor}.hcart .atom.h{fill:var(--card);stroke:var(--line3);stroke-width:2}.hcart .spin{animation:hh-wob 6s ease-in-out infinite}@keyframes hh-wob{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}.hcart .rung{stroke-width:3.4;stroke-linecap:round}.hcart .r0{stroke:var(--lv-f)}.hcart .r1{stroke:var(--lv-c)}.hcart .r2{stroke:var(--gold)}.hcart .r3{stroke:var(--bd3)}.hcart .helix{animation:hh-hx 4s ease-in-out infinite;transform-origin:70px 60px}@keyframes hh-hx{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.82)}}.hcart .nuc{fill:currentColor;opacity:.35}.hcart .org{fill:var(--gold);opacity:.7}.hct b{font:800 19px var(--head);color:var(--ink)}.hct .hcn{font-size:13px;color:var(--mute)}.hcl{display:flex;gap:8px;margin-top:10px}.hcl a{flex:1;text-align:center;border-radius:10px;padding:9px 0;font:700 14px var(--body);border:1px solid var(--line2);color:var(--ink);text-decoration:none}.hcl a:first-child{background:var(--c);border-color:var(--c);color:var(--on-navy)}.hcl a:hover{filter:brightness(1.08)}.hhb .trust{justify-content:center;margin-top:26px}.hhb .h2c{display:none}.hct[hidden]{display:none}@media(max-width:1020px){.hcts{grid-template-columns:repeat(3,1fr)}}@media(max-width:640px){.hcts{grid-template-columns:1fr 1fr}.hct:last-child{grid-column:1/-1}.hct:last-child .hcart{max-height:130px}}@media(prefers-reduced-motion:reduce){.hhx *,.hcart *{animation:none!important;transition:none!important}}.hcart-l{display:block;border-radius:14px}.hcart-l:focus-visible{outline:2px solid var(--focus);outline-offset:2px}/* Home product overview: A grid / B study journey. Static, no motion required. */.hp{padding-block:64px;background:var(--band);border-block:2px solid var(--frame)}.hp-intro{color:var(--dim);margin-bottom:28px;max-width:65ch}.hp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.hp-card{min-width:0;padding:22px;background:var(--card);border:1px solid var(--frame);border-top:4px solid var(--hp-colour);border-radius:var(--rs);box-shadow:var(--sh1);display:flex;flex-direction:column;overflow-wrap:anywhere}.hp-card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:18px}.hp-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;border-radius:10px;color:var(--hp-colour);background:color-mix(in srgb,var(--hp-colour) 13%,var(--card));border:1px solid currentColor}.hp-icon svg{width:26px;height:26px}.hp-price{display:inline-block;max-width:100%;border:1px solid var(--band-line);border-radius:6px;padding:4px 8px;background:var(--band);color:var(--text);font-size:12px;font-weight:700}.hp-card h3,.hp-card h4{font:800 19px/1.3 var(--head);letter-spacing:-.02em;color:var(--text);margin:0 0 10px;text-wrap:balance}.hp-dot{display:inline-block;width:9px;height:9px;margin-right:8px;border-radius:50%;background:var(--hp-colour)}.hp-description{color:var(--dim);font-size:14px;line-height:1.55;margin-bottom:14px}.hp-for{font-size:12px;font-weight:600;color:var(--dim);margin-bottom:8px}.hp-card ul{padding-left:18px;margin:0 0 20px;font-size:13px;color:var(--dim);line-height:1.65}.hp-card li+li{margin-top:4px}.hp-links{margin-top:auto;display:flex;flex-direction:column;align-items:flex-start;gap:2px}.hp-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:13px;line-height:1.5;font-weight:700;color:var(--text);text-decoration:underline;text-decoration-color:var(--band-line);text-underline-offset:4px}.hp-link:hover{color:var(--lamp);text-decoration-color:currentColor}.hp-link:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.hp-free{margin:22px 0 0;padding:14px 18px;border-left:4px solid var(--frame);background:var(--card);font-size:13px;font-weight:600;color:var(--text)}.hp-path{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;list-style:none;margin:0;padding:0}.hp-stage{min-width:0;position:relative}.hp-stage>h3{display:flex;align-items:center;gap:9px;font-size:20px;margin:0 0 20px;padding-block:10px;border-bottom:2px solid var(--frame)}.hp-number{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;background:var(--frame);color:var(--frame-ink);border-radius:50%;font-size:11px}.hp-next{margin-left:auto;color:var(--dim)}.hp-stage:last-child .hp-next{display:none}.hp-path .hp-card{padding:16px;margin-bottom:14px}.hp-path .hp-card h4{font-size:17px}.hp-path .hp-card-head{margin-bottom:14px}.hp-schools{margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center;border:1px solid var(--frame);border-radius:var(--rs);padding:24px;background:var(--zebra)}.hp-schools .eyebrow{margin-bottom:10px}.hp-schools h3{font-size:24px;max-width:24ch}@media(max-width:1050px){.hp-path{grid-template-columns:repeat(2,minmax(0,1fr))}.hp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.hp{padding-block:40px}.hp-grid,.hp-path,.hp-schools{grid-template-columns:minmax(0,1fr)}.hp-card{padding:20px}.hp-path{gap:22px}.hp-stage:not(:last-child){padding-bottom:22px;border-bottom:1px solid var(--band-line)}.hp-stage:not(:last-child):after{content:'↓';position:absolute;bottom:-15px;left:calc(50% - 12px);width:24px;text-align:center;background:var(--band);color:var(--dim)}.hp-next{display:none}.hp-schools{padding:18px;gap:16px}.hp-free{padding:12px;font-size:12px}}/* owner picked A (2026-10-26): cards read left-aligned (bullets beside their text); intro centred under the heading */.hp-card{text-align:left}.hp-intro{margin-inline:auto;text-align:center}.hp-free{text-align:center}/* Home sections (tools/home_sections.py): practice demo (.px*), 'Written, not reworded' band (.ob*), feature explorer (.fx*). */.mv{font-family:"Iowan Old Style","Palatino Linotype",Georgia,serif;font-style:italic}.pxs-sec{padding:clamp(48px,7vw,96px) 0;background:linear-gradient(180deg,color-mix(in srgb,var(--lv-c) 9%,var(--bg)),var(--bg))}.pxh2{font:800 clamp(30px,4vw,46px)/1.1 var(--head);letter-spacing:-.02em;text-align:center;margin:8px 0 14px;color:var(--ink)}.pxlede{max-width:46em;margin:0 auto;text-align:center;color:var(--ink-2);font-size:17px}:is(.pxtabs,.lntabs){display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:30px 0 26px}:is(.pxtabs,.lntabs) button{height:48px;padding:0 26px;border-radius:12px;border:0;background:var(--card);box-shadow:0 0 0 1px var(--line);font:700 15px var(--body);color:var(--ink-2);cursor:pointer;transition:.2s}:is(.pxtabs,.lntabs) button[aria-selected=true]{background:var(--btn2);color:var(--on-navy);box-shadow:var(--sh2)}.pxwin{display:grid;grid-template-columns:1fr 290px;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--sh2);overflow:hidden;max-width:1120px;margin:0 auto}.pxmain{min-width:0}.pxh{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 22px;border-bottom:1px solid var(--line)}.pxt{font:700 11.5px var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--lv-c);background:color-mix(in srgb,var(--lv-c) 12%,transparent);padding:6px 10px;border-radius:7px}.pxl{font:700 13px var(--body);color:var(--ink);display:inline-flex;align-items:center;gap:8px}.pxc{margin-left:auto;font-size:13px;color:var(--mute)}.pxb{padding:22px 24px 26px;font-family:"Iowan Old Style","Palatino Linotype",Georgia,"Times New Roman",serif;font-size:18.5px;line-height:1.6;color:var(--ink)}.pxmm{margin:0 0 10px;color:var(--ink-2)}.pxs{margin:0 0 14px}.pxp{list-style:none;margin:0;padding:0;display:grid;gap:10px}.pxp li,.pxms li{display:grid;grid-template-columns:36px 1fr auto;gap:8px;align-items:baseline}.pxpm{color:var(--ink-2)}.pxms{margin-top:20px;border-top:1px dashed var(--line2);padding-top:14px;font-family:var(--body);font-size:15.5px}.pxmsh{font:700 11.5px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--coral-ink);margin:0 0 10px}.pxms ol{list-style:none;margin:0;padding:0;display:grid;gap:8px}.pxms li{color:var(--ink-2);animation:pxin .4s both;animation-delay:var(--d)}.pxms li b{font:700 12px var(--body);color:var(--on-navy);background:var(--gold);border-radius:999px;padding:2px 9px}.pxms.step li{animation:none}.pxms.step li.h{visibility:hidden}@keyframes pxin{from{opacity:0;transform:translateX(-8px)}}.pxside{border-left:1px solid var(--line);padding:22px;display:flex;flex-direction:column;gap:10px;background:var(--desk-2)}.pxbtn{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:0 16px;border-radius:12px;border:0;background:color-mix(in srgb,var(--lv-c) 10%,var(--card));color:var(--ink);font:700 15px var(--body);cursor:pointer;text-align:left;flex-wrap:wrap}.pxbtn.pri{background:var(--btn2);color:var(--on-navy)}.pxbtn:hover{filter:brightness(1.05)}.pxbtn[aria-pressed=true]{box-shadow:0 0 0 2px var(--gold)}.pxtm{font-style:normal;font-weight:500;font-size:12.5px;color:var(--mute);margin-left:auto}.pxlink{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:var(--ink-2);font-size:14.5px;text-decoration:none;border-radius:10px}.pxlink:hover{background:var(--hov)}.pxlink:first-of-type{margin-top:auto}.pxfoot{text-align:center;margin:22px 0 0;color:var(--ink-2)}.pxfoot a{color:var(--coral-ink);font-weight:700}@media(max-width:860px){.pxwin{grid-template-columns:1fr}.pxside{border-left:0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr}.pxlink:first-of-type{margin-top:0}.pxc{margin-left:0;width:100%}}@media(max-width:520px){.pxside{grid-template-columns:1fr}.pxb{padding:18px;font-size:17px}:is(.pxtabs,.lntabs) button{padding:0 16px;height:42px}}.ob{padding:clamp(48px,7vw,90px) 0;background:var(--btn2);color:var(--on-navy)}.obw{display:grid;gap:clamp(28px,5vw,60px);align-items:center}@media(min-width:960px){.obw{grid-template-columns:1.15fr .85fr}}.ob .eyebrow{color:var(--gold)}:root[data-theme=dark] .ob .eyebrow{color:#8a5a14}.ob h2{font:800 clamp(28px,3.6vw,42px)/1.12 var(--head);letter-spacing:-.02em;margin:10px 0 16px;color:var(--on-navy)}.ob p{color:color-mix(in srgb,var(--on-navy) 80%,transparent);font-size:17px;line-height:1.65}.obt{list-style:none;padding:0;margin:26px 0 0;display:flex;flex-wrap:wrap;gap:12px}.obt li{flex:1 1 150px;border:1px solid color-mix(in srgb,var(--on-navy) 20%,transparent);border-radius:14px;padding:14px 16px}.obt b{display:block;font:800 22px var(--head);color:var(--gold)}:root[data-theme=dark] .obt b{color:#8a5a14}.obt span{font-size:13.5px;color:color-mix(in srgb,var(--on-navy) 75%,transparent)}.obq{margin:0 0 14px;background:color-mix(in srgb,var(--on-navy) 7%,transparent);border:1px solid color-mix(in srgb,var(--on-navy) 16%,transparent);border-radius:16px;padding:20px 22px}.obq blockquote{margin:0 0 10px;font:600 17px/1.5 var(--head);color:var(--on-navy)}.obq blockquote:before{content:"\201C";color:var(--gold);font-size:30px;line-height:0;vertical-align:-10px;margin-right:4px}.obq figcaption{font-size:13.5px;color:color-mix(in srgb,var(--on-navy) 70%,transparent)}.obby{font-size:14.5px!important}.ob a{color:var(--on-navy);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:3px}@media(prefers-reduced-motion:reduce){.pxms li,.fxp,.fxlv i:after,.fxtp i:after,.fxbar i:after{animation:none}}/* Product slider (home_sections.slider): tabs + one scroll-snap track, navy frame, tallest slide sets the height. */.pst{padding:clamp(40px,6vw,72px) 0 clamp(24px,4vw,48px)}.pstabs{display:flex;justify-content:center;gap:8px;margin:24px auto 22px;overflow-x:auto;scrollbar-width:none;max-width:100%;padding:2px}.pstabs::-webkit-scrollbar{display:none}.pstabs button{flex:none;height:44px;padding:0 20px;border-radius:999px;border:0;background:var(--card);box-shadow:0 0 0 1px var(--line);font:700 14.5px var(--body);color:var(--ink-2);cursor:pointer;display:inline-flex;align-items:center;gap:9px;transition:.2s}.pstabs button:before{content:"";width:9px;height:9px;border-radius:3px;background:var(--dot)}.pstabs button:hover{box-shadow:0 0 0 1px var(--line3)}.pstabs button[aria-selected=true]{background:var(--btn2);color:var(--on-navy);box-shadow:var(--sh2)}.psf{position:relative;max-width:1104px;width:calc(100% - 44px);margin:0 auto;background:var(--card);border:1px solid var(--line);border-top:4px solid var(--frame);border-radius:var(--rl);box-shadow:var(--sh1);overflow:hidden}.psv{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}.psv::-webkit-scrollbar{display:none}.pss{flex:0 0 100%;scroll-snap-align:start;display:grid;grid-template-columns:1fr 1fr;gap:48px;padding:44px 64px;min-width:0}.pss .hpt h3{font-size:clamp(26px,2.8vw,34px);font-weight:800;letter-spacing:-.03em;margin:0 0 20px;color:var(--ink)}.pss .hpt ul{margin-bottom:24px}.psa{position:absolute;top:50%;z-index:2;width:42px;height:42px;margin-top:-21px;border-radius:50%;border:1px solid var(--line2);background:var(--card);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:var(--sh1)}.psa.prev{left:10px}.psa.next{right:10px}.psa:hover:not(:disabled){background:var(--btn2);color:var(--on-navy)}.psa:disabled{opacity:.3;cursor:default}.pstabs button{position:relative;overflow:hidden}.pstabs button.run:after{content:"";position:absolute;left:18px;bottom:6px;height:3px;width:0;border-radius:2px;background:var(--gold);animation:ps-fill 7s linear forwards}.pst.paused .pstabs button.run:after{animation-play-state:paused}@keyframes ps-fill{to{width:calc(100% - 36px)}}.psdots{display:flex;justify-content:center;gap:10px;margin:16px 0 0}.psdots button{width:10px;height:10px;padding:0;border-radius:99px;border:0;background:var(--line3);cursor:pointer;transition:width .25s,background .25s}.psdots button[aria-current=true]{width:28px;background:var(--btn2)}.psdots button:before{content:"";display:block;margin:-12px -6px;height:34px}.pslinks{text-align:center;margin:18px 0 0;font-size:14px;color:var(--mute)}.pslinks a{color:var(--ink);font-weight:600;text-decoration:none;border-bottom:1px solid var(--gold);margin:0 2px}@media(max-width:900px){.psf{width:calc(100% - 32px)}.pss{grid-template-columns:1fr;gap:20px;padding:24px 20px 28px;align-content:start}.pss .hpt{justify-content:flex-start}.psa{display:none}.pss .hpv{min-height:0;padding:14px;max-height:360px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 82%,transparent);mask-image:linear-gradient(#000 82%,transparent)}.pstabs{justify-content:flex-start;margin-inline:-16px;padding-inline:16px}}/* Learning Studio trial: native controls and textbook-ink concept figures. */:root{--learning-dot:#167c87}:root[data-theme=dark]{--learning-dot:#68cbd1}.lnsec{background:var(--band);border-top:1px solid var(--band-line)}.lnwin{max-width:900px;margin:auto;background:var(--card);border:1px solid var(--line);border-top:4px solid var(--frame);border-radius:20px;box-shadow:var(--sh2);overflow:hidden}.lnstep{margin-left:auto;color:var(--mute);font-size:13px}.lnbody{padding:clamp(18px,4vw,32px);color:var(--ink);font-size:17px;line-height:1.65}.lnbody p:first-child{margin-top:0}.lnidea figure{margin:20px auto;max-width:440px;color:var(--ink)}.lnidea svg{display:block;width:100%;height:auto;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.lnidea svg text{fill:currentColor;stroke:none;font:16px var(--body);text-anchor:middle}.lnidea svg .lnaxis{text-anchor:start}.lnidea svg .lnfigheading{font-weight:600}.lnidea svg .lnshade,.lnidea svg .lnarea{fill:color-mix(in srgb,var(--learning-dot) 23%,var(--card));stroke:none}.lnidea svg .lnarea-alt{fill:color-mix(in srgb,var(--learning-dot) 38%,var(--card))}.lnidea svg .lnplot{stroke-width:2.5}.lnidea svg .lnarealabel{font-weight:700}.lnidea svg .lndashed{stroke-dasharray:4 4;stroke-width:1}.lnidea svg .lnspectrum{stroke:var(--learning-dot);stroke-width:8;stroke-linecap:butt}.lnidea svg .lnbackbone{stroke-width:2.5}.lnidea svg .lnsugar{fill:var(--card)}.lnidea svg .lnphosphate{fill:currentColor}@media(prefers-reduced-motion:no-preference){.lnfigure-active .lnshade{animation:ln-shade .65s both}.lnfigure-active .lnshade-2{animation-delay:.7s}.lnfigure-active .lnshade-3{animation-delay:1.4s}.lnfigure-active .lnshade-4{animation-delay:2.1s}}@keyframes ln-shade{from{opacity:0}to{opacity:1}}.lnidea figcaption{font-size:13px;color:var(--mute);text-align:center;margin-top:8px}#lnp-biology svg .lnbond{stroke-dasharray:3 4;stroke-width:1.3}.lncheck fieldset{border:0;padding:0;margin:0 0 20px;min-width:0}.lncheck legend{font-weight:700;padding:0;max-width:100%}.lnoptions{display:grid;gap:12px;margin-top:20px}.lnoptions label{display:flex;gap:12px;align-items:center;min-height:48px;padding:12px 16px;border:1px solid var(--line2);border-radius:12px;cursor:pointer;background:var(--desk-2)}.lnoptions label:has(input:checked){border-color:var(--focus);background:var(--band)}.lnoptions input{flex:none;width:18px;height:18px;accent-color:var(--focus)}.lnfeedback h3{font:800 23px var(--head);margin:0 0 16px}.lnright{color:var(--ok-t)}.lnlink{display:block;margin-top:22px;font-weight:700;color:var(--coral-ink);overflow-wrap:anywhere}.lnsec :is(button,input,a):focus-visible{outline:3px solid var(--focus);outline-offset:3px}@media(max-width:520px){.lnstep{width:100%;margin:0}.lntabs{gap:8px}.lntabs button{padding-inline:12px}.lnbody{font-size:16px}}/* home, e-books grid, learning app (2026-10-19 night): short, visual, a CTA in every block */nav.main>ul{gap:2px}nav.main>ul>li>a{display:flex;align-items:center;gap:6px;color:var(--dim);font-weight:500;font-size:15px;padding:8px 12px;border-radius:999px;text-decoration:none;white-space:nowrap}nav.main>ul>li>a:hover{color:var(--text);background:var(--hov)}nav.main>ul>li>a[aria-current]{background:var(--gold-t);color:var(--lamp)}.soon{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.06em;border:1px solid rgba(169,116,42,.5);color:var(--lamp);border-radius:999px;padding:1px 6px}/* ---- home (2026-10-20, approved mockup option-b3): hero panel, course picker, product rows with device frames ---- */.home{--dot:var(--gold)}.home .hw{max-width:1160px;padding-inline:max(22px,env(safe-area-inset-left,0px))}.home h1,.home h2{color:var(--ink)}.home em{font-family:var(--serif);font-style:italic;font-weight:600;color:var(--gold);letter-spacing:-.01em}.hh{padding:32px 0 8px}.hp{background:var(--desk-2);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh2);padding:72px 48px 48px;text-align:center}.hp h1{font-size:clamp(34px,4.8vw,56px);font-weight:800;letter-spacing:-.035em;max-width:16em;margin:0 auto;line-height:1.08;text-wrap:balance}.hp .lede{margin:20px auto 32px;text-align:center;font-size:18px;color:var(--dim)}.hp .ctas{justify-content:center}.trust{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;margin:40px 0 0;padding:24px 0 0;border-top:1px solid var(--line);gap:8px 0}.trust li{padding:0 20px;font-size:13px;font-weight:600;color:var(--dim);border-left:1px solid var(--line2)}.trust li:first-child{border:0}/* hero option 2 (owner choice 2026-10-20): course search + chips, overlapping devices, numbers strip, how it works */.h2x .hp{padding:56px 40px 0;overflow:hidden}.h2x .hp h1{max-width:15em}.h2x .hp .lede{margin:18px auto 28px}.h2s{max-width:640px;margin:0 auto;text-align:left}.h2s label{position:relative;display:block}.h2s svg.si{position:absolute;left:16px;top:50%;margin-top:-8px;color:var(--mute)}.h2s input{width:100%;height:56px;border:0;border-radius:12px;background:var(--card);box-shadow:0 0 0 1px var(--line2),var(--sh2);padding:0 18px 0 46px;font:500 16px var(--body);color:var(--ink)}.h2s input::placeholder{color:var(--mute)}.h2s input:focus{outline:2px solid var(--focus);outline-offset:1px}.h2c{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:16px auto 0;max-width:760px}.h2g{display:contents}.h2g[hidden]{display:none}.h2c a{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px;border-radius:10px;background:var(--card);box-shadow:0 0 0 1px var(--line3),0 1px 2px rgba(27,42,74,.06);font:600 14px var(--body);color:var(--ink);transition:.15s;text-decoration:none}.h2c a:hover{transform:translateY(-1px);box-shadow:0 0 0 1px var(--gold),0 6px 14px rgba(27,42,74,.1)}.h2c a i{font-style:normal;font-size:11px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:5px;background:var(--tint);color:var(--dim)}.h2c a[hidden]{display:none}.h2n{font-size:13px;color:var(--mute);margin:12px 0 0;text-align:center}.h2x .trust{margin-top:28px;padding-top:0;border:0}.h2d{container-type:inline-size;position:relative;margin:36px auto 0;max-width:900px;padding:0 2%}.hsl{position:relative;aspect-ratio:900/540}.hs{position:absolute;inset:0;display:grid;place-items:center;opacity:0;visibility:hidden;transform:translateX(5%) scale(.97);transition:opacity .7s ease,transform .7s ease,visibility 0s .7s}.hs.on{opacity:1;visibility:visible;transform:none;transition-delay:0s}.hs.out{transform:translateX(-5%) scale(.97)}.hs .dev{margin:0;max-width:none}.hs .mac{width:80%}.hs .ipad.land{width:68%}.hs .ipad.port{width:40%}.hs .iph{width:25%;max-width:none;border-radius:min(32px,4cqw);padding:max(3px,.7cqw)}.hs .iph .sc{border-radius:min(26px,3.2cqw)}.hs .ipad{border-radius:min(18px,2.4cqw);padding:max(4px,.9cqw)}.hs .ipad .sc{border-radius:min(10px,1.4cqw)}.hsd{display:flex;justify-content:center;gap:2px;height:28px;margin-top:6px}.hsd button{width:24px;height:28px;padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center;border-radius:6px}.hsd button:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--line3);transition:.25s}.hsd button:hover:before{background:var(--mute)}.hsd button[aria-selected=true]:before{width:22px;border-radius:4px;background:var(--gold)}.hsd button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}/* scrolling screens: a tall page slides up inside the device (build.py sets --k = share of the image that is off-screen) */.sc.tall{position:relative}:is(.dev,.iph) .sc.tall img{position:absolute;left:0;top:0;width:100%;height:auto;object-fit:initial;will-change:transform;animation:hscroll var(--d,18s) infinite;animation-play-state:paused}.sc.tall.run img{animation-play-state:running}:is(.dev,.iph):hover .sc.tall.run img{animation-play-state:paused}@keyframes hscroll{0%,6%{transform:translateY(0);animation-timing-function:cubic-bezier(.45,0,.25,1)}52%,62%{transform:translateY(calc(var(--k) * -100%));animation-timing-function:cubic-bezier(.5,0,.2,1)}82%,100%{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.hs{transition:none}:is(.dev,.iph) .sc.tall img{animation:none;transform:none}}/* "Get the iPhone and iPad app" and the desktop QR under the Learning Studio slide's buttons (tools/build.py; same classes as the /learning-studio/ hero, whose rules are in learning.css) */.happ{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:16px 0 2px}.happ .lsh-qr{margin-left:0;padding-left:0;border-left:0}.xnstrip{padding:24px 0 0}.xns{list-style:none;margin:0 auto;padding:0;max-width:1104px;width:calc(100% - 44px);display:grid;grid-template-columns:repeat(4,1fr);background:var(--card);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1)}.xns li{padding:28px 20px;text-align:center;border-left:1px solid var(--line)}.xns li:first-child{border:0}.xns b{display:block;font:800 clamp(30px,4vw,46px)/1 var(--head);letter-spacing:-.03em;color:var(--ink)}.xns span{display:block;margin-top:8px;font-size:13px;font-weight:600;color:var(--dim)}.xhow{padding:40px 0 16px}.xhow .eyebrow{text-align:center;margin-bottom:20px}.xsteps{list-style:none;margin:0 auto;padding:0;max-width:1104px;width:calc(100% - 44px);display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.xsteps li{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--rs);box-shadow:var(--sh1);padding:24px 24px 26px}.xsteps li:not(:last-child):after{content:"→";position:absolute;right:-19px;top:50%;margin-top:-12px;width:14px;color:var(--gold);font-weight:700;z-index:1}.xsteps .xico{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:var(--tint);color:var(--ink);border:1px solid var(--line);margin-bottom:16px}.xsteps .xsn{position:absolute;top:24px;right:24px;font:700 12px var(--body);letter-spacing:.14em;color:var(--mute)}.xsteps h3{font:800 18px/1.25 var(--head);letter-spacing:-.02em;margin:0 0 6px;color:var(--ink)}.xsteps p{margin:0;color:var(--dim);font-size:14.5px}@media(max-width:900px){.xns{grid-template-columns:1fr 1fr;width:calc(100% - 32px)}.xns li:nth-child(3){border-left:0}.xns li:nth-child(n+3){border-top:1px solid var(--line)}.xns li{padding:20px 12px}.xsteps{grid-template-columns:1fr;width:calc(100% - 32px);gap:16px}.xsteps li:not(:last-child):after{display:none}.h2x .hp{padding:40px 22px 0}}@media(max-width:640px){.h2x .hp{padding:32px 16px 0}.h2x .hp .lede{margin:14px auto 20px;font-size:16px}.h2s input{height:50px;font-size:15px}.h2c{display:grid;grid-template-columns:1fr 1fr;gap:8px}.h2g{display:flex;align-items:center;gap:4px;min-width:0;height:44px;padding:0 5px 0 10px;border-radius:10px;background:var(--card);box-shadow:0 0 0 1px var(--line3),0 1px 2px rgba(27,42,74,.06)}.h2g:before{content:attr(data-name);flex:1;min-width:0;font:600 13px var(--body);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.h2c .h2g a{height:30px;padding:0 7px;box-shadow:none;background:var(--tint);border-radius:7px;font-size:12px;gap:0}.h2c .h2g a .gn{display:none}.h2c .h2g a i{background:none;padding:0;font-size:12px;color:var(--ink)}.h2c .h2g a:hover{transform:none;box-shadow:0 0 0 1px var(--gold)}.h2x .trust{display:grid;grid-template-columns:auto auto;justify-content:center;gap:4px 0;margin-top:20px}.h2x .trust li{border:0;padding:0;font-size:12.5px;white-space:nowrap}.h2x .trust li:nth-child(odd):after{content:"·";margin:0 8px;color:var(--mute)}.h2x .trust li:nth-child(even){text-align:left}.h2d{margin-top:22px;padding:0}.hsl{aspect-ratio:1/1.04}.hs .mac,.hs .ipad.land{width:100%}.hs .ipad.port{width:62%}.hs .iph{width:45%;border-radius:30px;padding:6px}.hs .iph .sc{border-radius:25px}.hs .ipad{border-radius:14px;padding:6px}.hs .ipad .sc{border-radius:8px}.xnstrip{padding-top:16px}.xns li{padding:14px 8px}.xns b{font-size:28px}.xns span{font-size:12px;margin-top:4px}.xhow{padding-top:28px}.xsteps{gap:10px}.xsteps li{display:grid;grid-template-columns:44px 1fr;gap:0 14px;align-items:center;padding:14px 16px}.xsteps .xico{grid-row:1/3;width:44px;height:44px;margin:0}.xsteps .xsn{display:none}.xsteps h3{font-size:15.5px;margin:0 0 2px}.xsteps p{font-size:13.5px;line-height:1.4}}.hprs{padding:12px 0}.home .hrow{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:stretch;background:var(--card);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1);padding:48px;max-width:1104px;width:calc(100% - 44px);margin-inline:auto}.hrow.flip .hpt{order:2}.hpt{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-width:0}.hpt h2{font-size:clamp(26px,2.8vw,34px);font-weight:800;letter-spacing:-.03em;margin-bottom:20px}.hpt .eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:11.5px}.hpt .eyebrow:before{content:"";width:8px;height:8px;border-radius:2px;background:var(--dot)}.hpt ul{list-style:none;padding:0;margin:0 0 28px;width:100%;color:var(--dim)}.hpt li{padding:12px 0 12px 28px;position:relative;font-size:15.5px;border-top:1px solid var(--line)}.hpt li:last-child{border-bottom:1px solid var(--line)}.hpt li:before{content:"";position:absolute;left:2px;top:19px;width:12px;height:8px;border-left:2px solid var(--dot);border-bottom:2px solid var(--dot);transform:rotate(-45deg) scale(.8)}.hpt li b{color:var(--ink)}.home .ctas{align-items:center;gap:12px;margin:0}.unl{font-size:13px;color:var(--mute);margin:20px 0 0;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}.unl a{color:var(--ink);font-weight:600;border-bottom:1px solid var(--gold);text-decoration:none}.hpv{background:var(--tint);border:1px solid var(--line);border-radius:var(--rs);padding:24px;display:grid;place-items:center;min-height:380px;min-width:0}/* device frames: CSS only, screenshots inside */.dev{position:relative;width:100%;margin:0 auto}.dev img{display:block;width:100%;height:100%;object-fit:cover;object-position:top left}.mac{max-width:520px}.mac .bz{background:#17171a;border-radius:12px 12px 4px 4px;padding:2.4% 2.4% 3.2%;position:relative;box-shadow:inset 0 0 0 1px #3a3a40,0 2px 4px rgba(27,42,74,.15),0 24px 40px -8px rgba(27,42,74,.28)}.mac .bz:before{content:"";position:absolute;top:1.1%;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:#2c2c32;box-shadow:inset 0 0 0 1px #3d3d44}.mac .sc{aspect-ratio:16/10;border-radius:3px;overflow:hidden;background:#fff}.mac .bs{height:12px;margin:0 -4.5%;border-radius:0 0 14px 14px;background:linear-gradient(#e4e6ea,#b8bbc2 70%,#9da1a9);position:relative;box-shadow:0 14px 22px -6px rgba(27,42,74,.3)}.mac .bs:before{content:"";position:absolute;left:50%;top:0;width:18%;height:5px;margin-left:-9%;background:linear-gradient(#a7aab2,#cfd2d8);border-radius:0 0 8px 8px}.ipad{background:#17171a;border-radius:20px;padding:9px;box-shadow:inset 0 0 0 1px #3a3a40,0 2px 4px rgba(27,42,74,.15),0 24px 40px -8px rgba(27,42,74,.28)}.ipad .sc{border-radius:12px;overflow:hidden;background:#fff}.ipad.land{max-width:480px}.ipad.land .sc{aspect-ratio:1180/820}.ipad.port{max-width:330px}.ipad.port .sc{aspect-ratio:3/4}.ipad.port .sc img{object-position:top center}.iph{background:#17171a;border-radius:38px;padding:7px;box-shadow:inset 0 0 0 1px #3a3a40,0 2px 4px rgba(27,42,74,.15),0 20px 34px -8px rgba(27,42,74,.35);width:100%;max-width:230px;position:relative}.iph .sc{aspect-ratio:390/844;border-radius:31px;overflow:hidden;background:#fff;position:relative}.iph .sc:after{content:"";position:absolute;top:2.6%;left:50%;width:30%;height:3.3%;margin-left:-15%;background:#0a0a0c;border-radius:20px}.iph:before{content:"";position:absolute;right:-2px;top:22%;width:2px;height:12%;background:#2d2d33;border-radius:0 2px 2px 0}.iph:after{content:"";position:absolute;left:-2px;top:18%;width:2px;height:7%;background:#2d2d33;border-radius:2px 0 0 2px;box-shadow:0 36px 0 #2d2d33}.iph .sc svg{display:block;width:100%;height:100%}.combo{position:relative;width:100%;max-width:520px;margin:0 auto;padding-bottom:6%}.combo .iph{position:absolute;right:-3%;bottom:0;width:23%;border-radius:22px;padding:4px}.combo .iph .sc{border-radius:18px}.combo .iph:before,.combo .iph:after{display:none}.hq{padding:56px 0 24px}.htwo{display:grid;grid-template-columns:.7fr 1.3fr;gap:48px}.hq h2{font-size:clamp(26px,3vw,34px);font-weight:800;letter-spacing:-.03em}.faqw{background:var(--card);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1);padding:0 24px}.faqw details{background:none;border:0;border-radius:0;box-shadow:none;border-top:1px solid var(--line);padding:0;margin:0}.faqw details:first-child{border-top:0}.faqw summary{padding:20px 0;font:600 17px var(--body);letter-spacing:0;color:var(--ink)}.faqw summary:after{width:28px;height:28px;display:grid;place-items:center;background:var(--tint);border-radius:8px;font-size:18px;line-height:1;padding-bottom:2px;flex:none}.faqw p{margin:0 0 22px;color:var(--dim);max-width:46em}.hfin{padding:24px 0 64px}.fp{border-radius:var(--rl);padding:64px 32px;text-align:center;color:#fff;background-color:#1b2a4a;background-image:radial-gradient(circle at 12% 0%,rgba(169,116,42,.35),transparent 45%),radial-gradient(circle at 90% 100%,rgba(36,99,166,.35),transparent 50%);box-shadow:var(--sh2)}.fp h2{color:#fff;font-size:clamp(28px,3.6vw,42px);font-weight:800}.fp p{color:#cdd5e6;font-size:17px;margin:12px 0 28px}.fp .ctas{justify-content:center}.fp .btn.primary{background:#fff;color:#1b2a4a;box-shadow:0 6px 16px rgba(0,0,0,.2)}.fp .btn.ghost{background:transparent;color:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.4)}@media(max-width:1000px){.combo .iph{right:0}}@media(max-width:900px){.home .hrow{grid-template-columns:1fr;gap:24px;padding:24px 20px;width:calc(100% - 32px)}.hrow.flip .hpt{order:0}.hpv{min-height:0;padding:16px}.hp{padding:48px 22px 32px}.htwo{grid-template-columns:1fr;gap:20px}.trust li{padding:0 12px}.mac,.combo{max-width:440px}.iph{max-width:190px}}@media(max-width:560px){.trust{gap:6px 0}.home .hp .ctas .btn,.home .hpt .ctas .btn{flex:1 1 100%}.home .ctas{width:100%}.hh{padding-top:16px}}.mock{background:var(--desk-3);border:1px solid var(--edge);border-radius:18px;padding:18px;box-shadow:var(--sh1);max-width:520px;width:100%}.mk-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.mk-top b{font:700 16px var(--head);margin-right:auto}.mock .chip{margin:0;font-size:11.5px;padding:2px 9px}.mock .chip.free{color:var(--ok-t);border-color:var(--ok-b)}.mk-lv{list-style:none;margin:0;padding:0;display:grid;gap:6px}.mk-lv li{display:grid;grid-template-columns:1fr 70px 70px;gap:8px;align-items:center;font-size:14px}.mk-lv li b{font:600 14px var(--head)}.mk-lv li span{background:var(--gold-t);color:var(--lamp);border-radius:8px;text-align:center;padding:6px 0;font:500 12px var(--mono)}.mk-lv li.hd span{background:none;color:var(--dim);padding:0}.mk-lv li.hd b{font:500 11.5px var(--mono);color:var(--dim);text-transform:uppercase}.mk-foot{margin-top:12px;color:var(--dim);font-size:13px}.mock svg{width:100%;height:auto;display:block}/* e-books page */.bgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr))}.book-card.bbuy{transform:none}.book-card.bbuy:hover{transform:translateY(-4px)}.bbuy .shelf{gap:0}.bbuy .shelf img{width:38%;max-width:130px}.bbuy .shelf.two img{width:34%}.bbuy .shelf.two img+img{margin-left:-6%}.bbuy .buys{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;position:relative;z-index:2}.bbuy .buys .btn{flex:1 1 auto;padding:10px 14px;font-size:14.5px}.bbuy .more{position:relative;z-index:2;font-size:14px;font-weight:700}.soonbar{max-width:720px}.lapp .card h3{margin-top:0}.lapp2{align-items:center;gap:32px}@media(max-width:700px){.mk-lv li{grid-template-columns:1fr 54px 54px}.hhero{padding-block:30px 18px}}@media(min-width:1221px) and (max-width:1500px){nav.main>ul>li>a{padding:8px 8px;font-size:14px}.hsrch span,.hsrch kbd,header.site .signin small{display:none}header.site .wrap{gap:8px}}/* Navy bands on the home page keep light text in light mode too (the .home h2 rule above made it navy on navy). */.home .ob h2,.home .hcb h2{color:var(--on-navy)}.home .ob .eyebrow,.home .ob .obt b{color:var(--gold)}/* Home H1: catchy line + a smaller keyword line inside the same H1 (SEO, owner 2026-10-21). */.home h1 .h1s{display:block;font:600 clamp(16px,1.9vw,21px)/1.35 var(--body);letter-spacing:0;color:var(--ink-2);margin-top:14px}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.quick{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.quick .q{display:grid;gap:4px;align-content:start;background:var(--desk-3);border:1px solid var(--edge);border-radius:16px;padding:16px;text-decoration:none;color:var(--text);transition:border-color .2s,transform .2s}.quick .q:hover{border-color:var(--lamp);transform:translateY(-2px)}.quick .q .eyebrow{margin:0}.quick .q b{font:700 17px var(--head);letter-spacing:-.02em}.quick .q span:last-child{font-size:14px;color:var(--dim)}.theme{margin:26px 0}.theme h3{font-size:clamp(19px,2vw,23px);margin:0 0 4px}.tintro{color:var(--dim);max-width:72ch;margin:0 0 12px}.topics{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.topic{display:grid;gap:4px;background:var(--paper);color:var(--ink);border-radius:12px;padding:14px 16px;text-decoration:none;box-shadow:var(--sh1);transition:transform .2s}.topic:hover{transform:translateY(-3px)}.topic .tnum{font:500 11.5px var(--mono);color:var(--coral-ink);text-transform:uppercase}.topic b{font:700 16.5px var(--head);letter-spacing:-.02em}.topic .tdesc{font-size:14px;color:var(--ink-2);line-height:1.45}.imports .card{min-width:0}.imports .card h3{font-size:18px;margin-top:0}.imports .card table{width:100%;border-collapse:collapse;font-size:14px;display:block;overflow-x:auto}.imports .card th,.imports .card td{border-bottom:1px solid var(--line);padding:8px;text-align:left;vertical-align:top}.imports .card li{margin-bottom:8px}.faqwrap h2{margin-bottom:14px}.theme h2{font-size:clamp(22px,2.6vw,28px);margin:0 0 6px}.theme h2 small{font:500 12px var(--mono);color:var(--lamp);margin-left:8px;letter-spacing:0;vertical-align:middle}.slnote{margin:0 0 16px}.slnote h2{font-size:20px;margin:0 0 6px}/* predicted papers */.pp-status{border:1px solid var(--edge);border-left:4px solid var(--lamp);background:var(--desk-2);border-radius:12px;padding:14px 18px;margin:0 0 26px}.pp-status p{margin:0;color:var(--text)}.pp-status .eyebrow{color:var(--lamp);margin-bottom:4px}.pp-bars{list-style:none;margin:14px 0 10px;padding:0;display:grid;gap:8px}.pp-bars li{display:grid;grid-template-columns:minmax(0,1fr) 48px;grid-template-rows:auto 8px;gap:3px 10px;align-items:center}.pp-bars span{font-size:14px;color:var(--ink)}.pp-bars b{grid-row:1/3;grid-column:2;font:500 13px var(--mono);color:var(--ink);text-align:right}.pp-bars i{grid-column:1;height:8px;border-radius:4px;background:var(--coral)}@media(min-width:900px){.quick.pp-courses{grid-template-columns:repeat(3,minmax(0,1fr))}}.pp-how .card h3{font-size:clamp(19px,2vw,22px);margin:2px 0 8px}/* worksheet studio */.st-feat .card h3{margin:2px 0 6px}.st-shots{align-items:start}.st-shots figure,.st-wide{margin:0}.st-shots img,.st-wide img{width:100%;height:auto;border-radius:14px;border:1px solid var(--edge);box-shadow:var(--sh1);background:var(--card);display:block}.st-shots figure:last-child img{max-width:420px;margin:0 auto}.st-shots figcaption{font-size:13.5px;color:var(--dim);margin-top:10px;text-align:center}.st-wide{margin-bottom:18px}.st-tiers .ptable td:first-child{font-weight:600;white-space:nowrap}.st-legal{padding-block:0 30px}.schools-band{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:32px;align-items:center;background:var(--desk-2);border:1px solid var(--edge);border-radius:24px;padding:clamp(22px,4vw,40px);overflow:hidden}.schools-band h2{margin:4px 0 10px}.schools-band p{color:var(--dim)}.schools-band .eyebrow{color:var(--lamp)}.schools-band img{width:100%;height:auto;border-radius:8px;transform:rotate(3deg);box-shadow:var(--sh1)}@media(max-width:700px){.schools-band{grid-template-columns:minmax(0,1fr)}.schools-band img{max-width:180px;justify-self:center}}/* home: look inside */.tour-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.tour-card{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--text);min-width:0}.tour-img{display:block;aspect-ratio:16/10;border-radius:12px;overflow:hidden;border:1px solid var(--edge);background:var(--desk-2);margin-bottom:8px;box-shadow:var(--sh1);transition:transform .25s,border-color .25s}.tour-img img{width:100%;height:100%;object-fit:cover;object-position:top left;display:block}.tour-card:hover .tour-img{transform:translateY(-3px);border-color:var(--lamp)}.tour-card .eyebrow{color:var(--lamp)}.tour-card b{font:600 15.5px/1.35 var(--head);color:var(--text)}@media(prefers-reduced-motion:reduce){.tour-img{transition:none}}@media(max-width:1000px){.tour-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.tour-grid{gap:12px}.tour-card b{font-size:14px}}/* cheatsheets hub, lean: course tabs, compact topic lists, no cards */.cs-tabs{display:flex;gap:6px;padding:5px;background:var(--band);border:1px solid var(--band-line);border-radius:14px;width:max-content;max-width:100%;overflow-x:auto;margin:0 0 18px}.cs-tabs[hidden]{display:none}.cs-tabs button{font:700 14.5px var(--body);color:var(--ink-2);background:none;border:0;border-radius:10px;padding:10px 16px;min-height:42px;cursor:pointer;white-space:nowrap}.cs-tabs button[aria-selected=true]{background:var(--frame);color:var(--frame-ink);box-shadow:var(--sh1)}.cs-panel{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--frame);border-radius:var(--rl);padding:22px clamp(16px,3vw,28px) 10px;margin:0 0 20px}.cs-panel[hidden]{display:none}.cs-panel h2{font-size:clamp(22px,2.6vw,28px);margin:0 0 6px}.cs-panel h2 small{font:500 12px var(--mono);color:var(--lamp);margin-left:8px;letter-spacing:0;vertical-align:middle}.cs-cols{columns:3 250px;column-gap:28px;margin-top:8px}.cs-th{break-inside:avoid;margin:0 0 18px}.cs-th h3{font:700 12.5px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--coral-ink);margin:0 0 6px;padding-bottom:5px;border-bottom:2px solid var(--frame)}.cs-th ul{list-style:none;margin:0;padding:0}.cs-th li{margin:0}.cs-th a{display:flex;gap:8px;align-items:baseline;justify-content:space-between;padding:7px 2px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);font:600 15px var(--head)}.cs-th a:after{content:"\2192";color:var(--coral-ink)}.cs-th a:hover{color:var(--coral-ink)}.cs-th .tnum{font:500 11px var(--mono);color:var(--mute);margin-right:6px;min-width:3ch}.cs-th a{justify-content:flex-start}.cs-th a:after{margin-left:auto}.cs-sl{color:var(--dim);margin:0}.cs-tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.cs-tiles a{display:grid;gap:4px;align-content:start;text-decoration:none;color:var(--ink);padding:16px;border-radius:var(--rl);border:1px solid var(--line);border-left:4px solid var(--frame);background:var(--card);height:100%}.cs-tiles span[aria-hidden]{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--frame);color:var(--frame-ink);font:700 18px var(--head)}.cs-tiles h3{margin:6px 0 0;font-size:18px}.cs-tiles p{margin:0;font-size:14px;color:var(--dim)}@media(max-width:760px){.cs-tiles{grid-template-columns:1fr}.cs-cols{columns:1}}/* /ib-ia-and-ee-guide/ (tools/pages_ia_hub.py): quiet rows in one framed panel per section; navy top rule, pale blue bands. */.iah{max-width:920px;padding-bottom:70px}.iah-hero{padding:26px 0 8px}.iah-hero h1{font-size:clamp(34px,4.6vw,54px);margin:6px 0 14px;letter-spacing:-.03em;line-height:1.06}.iah-hero .lede{max-width:46em;color:var(--ink-2)}.iah-jump{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.iah-jump a{font:600 14px var(--body);text-decoration:none;color:var(--frame);border:1px solid var(--band-line);background:var(--band);border-radius:999px;padding:10px 16px;min-height:44px;display:inline-flex;align-items:center;box-sizing:border-box}:root[data-theme="dark"] .iah-jump a{color:var(--frame-ink)}.iah-jump a:hover{border-color:var(--gold)}.iah-sec{margin-top:46px;scroll-margin-top:84px}.iah-sec>h2{font-size:clamp(24px,2.8vw,32px);margin:0 0 6px;letter-spacing:-.02em}.iah-sub{margin:0 0 16px;color:var(--dim);max-width:44em}.iah-panel{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:12px;box-shadow:0 1px 2px rgba(27,42,74,.05),0 8px 20px rgba(27,42,74,.05)}.iah-row{display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;padding:20px 22px;border-top:1px solid var(--band-line)}.iah-row:first-child{border-top:0}.iah-ic{width:40px;height:40px;border-radius:10px;background:var(--gold-t);color:var(--lamp);display:flex;align-items:center;justify-content:center}.iah-ic svg{width:22px;height:22px}.iah-row h3{margin:0 0 2px;font-size:19px;letter-spacing:-.01em}.iah-row p{margin:0 0 6px;color:var(--dim);font-size:15px}.iah-links{display:flex;flex-wrap:wrap;gap:0 20px}.iah-links a{font:600 14.5px var(--body);color:var(--ink);text-decoration:underline;text-decoration-color:var(--band-line);text-decoration-thickness:2px;text-underline-offset:5px;padding:10px 0;min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center;border-bottom:2px solid transparent}.iah-links a:hover{color:var(--lamp);text-decoration:underline;text-underline-offset:4px}.iah-coach{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:28px;background:var(--band);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:12px;padding:26px 26px}.iah-lead{margin:0 0 12px;font-size:17px;color:var(--ink)}.iah-ticks{list-style:none;margin:0 0 14px;padding:0}.iah-ticks li{position:relative;padding:5px 0 5px 24px;color:var(--ink-2);font-size:15px}.iah-ticks li:before{content:"";position:absolute;left:3px;top:11px;width:10px;height:6px;border:solid var(--ok-t,#2f7d4f);border-width:0 0 2px 2px;transform:rotate(-45deg)}.iah-steps{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0;counter-reset:s}.iah-steps li{counter-increment:s;font:600 12.5px var(--body);color:var(--frame);background:var(--card);border:1px solid var(--band-line);border-radius:999px;padding:4px 10px}:root[data-theme="dark"] .iah-steps li{color:var(--frame-ink)}.iah-steps li:before{content:counter(s);display:inline-grid;place-items:center;width:18px;height:18px;margin-right:6px;border-radius:50%;background:var(--frame);color:var(--frame-ink);font-size:11px}.iah-buy{display:flex;flex-direction:column;gap:10px;align-items:stretch}.iah-buy .btn{justify-content:center}.iah-buyh{margin:0;font:700 14px var(--body);letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}.iah-note{margin:2px 0 0;font-size:13.5px;color:var(--dim)}.iah-member{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--card);border:1px solid var(--band-line);border-left:4px solid var(--gold);border-radius:12px;padding:20px 24px}.iah-member p{margin:0;color:var(--ink-2)}.iah-na{margin-top:46px;font-size:13px;color:var(--dim);border-top:1px solid var(--band-line);padding-top:14px}@media(max-width:760px){.iah-coach{grid-template-columns:1fr;padding:20px 18px}.iah-row{grid-template-columns:36px minmax(0,1fr);gap:12px;padding:16px 14px}.iah-ic{width:36px;height:36px}.iah-member{padding:16px}}.prose .ia-links{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px}.prose .ia-links a{display:inline-block;border:1px solid var(--band-line);background:var(--band);border-radius:999px;padding:10px 16px;text-decoration:none;color:var(--ink);font:600 14px var(--body);min-height:44px;box-sizing:border-box}.prose .ia-links a:hover{border-color:var(--gold)}.iah-row .btn{margin-top:8px}/* subject slider: scroll-snap cards with the home-hero art (tools/pages_ia_hub.py) */.iah-slider{position:relative}.iah-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:6px 4px 16px;margin:0 -4px;scrollbar-width:none}.iah-track::-webkit-scrollbar{display:none}.iah-track:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:12px}.iah-card{--c:var(--lv-c);flex:0 0 300px;scroll-snap-align:start;position:relative;display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--band-line);border-top:4px solid var(--frame);border-radius:14px;box-shadow:0 1px 2px rgba(27,42,74,.05),0 10px 24px rgba(27,42,74,.08);padding:16px 16px 18px;box-sizing:border-box}.iah-card:before{content:"";position:absolute;left:16px;right:16px;top:-4px;height:4px;border-radius:0 0 4px 4px;background:var(--c)}.iah-card .hcart{margin:2px 0 8px}.iah-card h3{margin:0;font-size:20px;letter-spacing:-.01em}.iah-card p{margin:0;color:var(--dim);font-size:14.5px;min-height:3.9em}.iah-chips{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px;padding:0}.iah-chips li{font:600 12px var(--body);border:1px solid var(--band-line);background:var(--band);border-radius:999px;padding:3px 10px;color:var(--frame)}:root[data-theme="dark"] .iah-chips li{color:var(--frame-ink)}.iah-card .btn{justify-content:center;margin-top:auto;text-align:center}.iah-glink{align-self:center;font:600 14px var(--body);color:var(--ink);padding:10px 4px;min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center;text-decoration:underline;text-decoration-color:var(--band-line);text-decoration-thickness:2px;text-underline-offset:5px}.iah-glink:hover{color:var(--lamp)}.iah-nav{position:absolute;top:38%;width:44px;height:44px;border-radius:50%;border:1px solid var(--band-line);background:var(--card);color:var(--frame);font:700 26px/1 var(--body);cursor:pointer;box-shadow:0 4px 12px rgba(27,42,74,.18);display:grid;place-items:center;padding:0 0 3px}:root[data-theme="dark"] .iah-nav{color:var(--frame-ink)}.iah-nav:hover{border-color:var(--gold)}.iah-nav.prev{left:-22px}.iah-nav.next{right:-22px}.iah-dots{display:flex;justify-content:center;gap:2px;margin-top:2px}.iah-dots button{width:28px;height:28px;border:0;background:none;cursor:pointer;padding:0;position:relative}.iah-dots button:after{content:"";position:absolute;left:9px;top:9px;width:10px;height:10px;border-radius:50%;background:var(--band-line);border:1px solid var(--frame)}.iah-dots button[aria-current=true]:after{background:var(--gold);border-color:var(--gold)}@media(max-width:760px){.iah-card{flex-basis:82vw}.iah-nav{display:none}.iah-track{margin:0 -16px;padding:6px 16px 16px;scroll-padding:0 16px}}@media(prefers-reduced-motion:reduce){.iah-track{scroll-behavior:auto}}/* lead fixes 2026-10-22: arrows sit outside the cards; every card art box is the same height */.iah-nav.prev{left:-62px}.iah-nav.next{right:-62px}@media (max-width:1280px){.iah-nav{display:none}}.iah-card .hcart{height:150px;overflow:hidden;display:flex;align-items:center;justify-content:center;border-radius:10px}.iah-card .hcart>svg,.iah-card .hcart>img{max-height:100%;width:auto;max-width:100%}.iah-slider{width:min(1180px,calc(100vw - 48px));left:50%;transform:translateX(-50%)}@media (max-width:760px){.iah-slider{width:auto;left:auto;transform:none}}.iah-buy{justify-content:center}.iah-note a{color:var(--ink-2);font-weight:600}/* Learning Studio sales page (/learning-studio/), option B "Canvas", owner-approved 2026-11-01.Mockup: ~/PhotonResourcesHQ/mockups/learning-studio-landing/. Built by tools/pages_learning.py.All colours are site tokens (light and dark follow :root[data-theme]); only the device bezel and canvas board are local tokens. */.ls{--ls-bezel:#1b2a4a;--ls-board:#eef2f8;--ls-dot:#c9d2e2;padding-bottom:0;overflow-x:clip}:root[data-theme="dark"] .ls{--ls-bezel:#05070c;--ls-board:#0b101b;--ls-dot:#2a3550}.ls section{position:relative;scroll-margin-top:90px}.ls h1,.ls h2,.ls h3{margin:0;text-wrap:balance}.ls h1{font-size:clamp(30px,4.2vw,50px);line-height:1.08;letter-spacing:-.02em}.ls h2{font-size:clamp(25px,3.6vw,36px);line-height:1.15;letter-spacing:-.01em}.ls h3{font-size:20px;line-height:1.25;letter-spacing:-.01em}.ls p{margin:0}.ls .eyebrow{margin:0 0 8px;font:700 14px var(--body);letter-spacing:.07em;color:var(--gold)}.ls .lede{font-size:18px;line-height:1.5;color:var(--dim);max-width:34em}.ls .note{font-size:14px;color:var(--mute);margin-top:12px}.ls-w{max-width:1240px;margin:0 auto;padding-left:clamp(16px,4vw,40px);padding-right:clamp(16px,4vw,40px)}.ls-pad{padding-top:clamp(36px,5vw,64px);padding-bottom:clamp(36px,5vw,64px)}.ls-intro{max-width:44em;margin-bottom:26px}.ls-intro p:not(.eyebrow){color:var(--dim);margin-top:10px;font-size:17px}.ls-band{background:var(--band);border-top:3px solid var(--frame);border-bottom:1px solid var(--band-line)}/* buttons: the site's .btn, taller and wrapping here */.ls .btn{min-height:48px;height:auto;padding:12px 20px;font-size:15.5px;line-height:1.3;white-space:normal;text-align:center}.ls .btn.sm{min-height:44px;padding:10px 14px;font-size:14.5px}.ls .ctas{display:flex;gap:12px;flex-wrap:wrap;margin:22px 0 0}.ls-badge{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;background:var(--navy-2);color:var(--on-navy);font:700 14px var(--body);letter-spacing:0;text-transform:none}.ls-badge.gold{background:var(--gold-t);color:var(--gold);border:1px solid var(--gold)}.ls .eyebrow .ls-badge{margin-left:6px}/* framed block with a navy header strip */.ls-frame{border:1.5px solid var(--frame);border-radius:18px;background:var(--card);overflow:hidden;box-shadow:var(--sh2);min-width:0}.ls-frame>.hd{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--frame);color:var(--frame-ink);font:700 15px var(--body)}.ls-frame>.hd .sp{flex:1}.ls-tile{flex:none;width:48px;height:48px;border-radius:13px;border:1px solid var(--band-line);background:var(--band);display:flex;align-items:center;justify-content:center;color:var(--ink)}.ls-tile svg{width:28px;height:28px}.ticon{display:block;overflow:visible}.ticon *{fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.ticon .k{stroke:var(--ink)}.ticon .m{stroke:var(--mute);stroke-width:.8}.ticon .g{stroke:var(--gold);stroke-width:1.4}.ticon .f{fill:rgba(36,99,166,.12)}.ticon .gf{fill:var(--gold-t)}.ticon .d{fill:var(--ink);stroke:none}.ticon .gd{fill:var(--gold);stroke:none}.ticon .dash{stroke-dasharray:1.6 1.6}.ticon .dotted{stroke-dasharray:.1 2.2;stroke-width:1.7}.ticon .hole{fill:var(--card);stroke:var(--ink);stroke-width:1.1}:root[data-theme="dark"] .ticon .f{fill:rgba(127,176,255,.18)}/* devices: a laptop and a phone; each screenshot comes as a light and a dark file, the theme shows one */.ls-lt,.ls-dk{display:block}.ls-dk{display:none}:root[data-theme="dark"] .ls-lt{display:none}:root[data-theme="dark"] .ls-dk{display:block}.ls-laptop{position:relative;width:100%}.ls-lid{background:var(--ls-bezel);border-radius:14px 14px 3px 3px;padding:2% 2% 2.2%;box-shadow:var(--sh2)}.ls-lid img{width:100%;height:auto;border-radius:3px;background:#fff}.ls-base{height:11px;width:112%;margin-left:-6%;background:var(--ls-bezel);border-radius:0 0 16px 16px;opacity:.9;position:relative}.ls-base::after{content:"";position:absolute;left:50%;top:0;width:16%;height:5px;margin-left:-8%;background:rgba(255,255,255,.18);border-radius:0 0 6px 6px}.ls-phone{position:relative;aspect-ratio:390/844;border:6px solid var(--ls-bezel);border-radius:28px;overflow:hidden;background:#000;box-shadow:var(--sh2)}.ls-phone img{width:100%;height:100%;object-fit:cover;object-position:top}.ls-phone::after{content:"";position:absolute;top:6px;left:50%;width:26%;height:5px;margin-left:-13%;background:rgba(0,0,0,.55);border-radius:4px}.ls-pair{position:relative;padding-bottom:6px}.ls-pair .ls-laptop{width:90%}.ls-pair .ls-phone{position:absolute;right:0;bottom:-6px;width:26%}/* 1. hero: see "Direction A hero" at the end of this file. The fact chips now sit in the subjects intro. */.ls-facts{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none}.ls-facts li{border:1px solid var(--band-line);background:var(--band);border-radius:10px;padding:6px 12px;font-size:14px;color:var(--dim)}.ls-facts b{color:var(--ink);font-family:var(--head)}/* 2. subjects */.ls-subjects{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.ls-subj .bd{padding:16px 18px 18px;display:flex;flex-direction:column;gap:12px}.ls-subj .hd .ls-tile{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);width:34px;height:34px;border-radius:9px;color:#fff}.ls-subj .hd .ls-tile .k,.ls-subj .hd .ls-tile .d{stroke:#fff}.ls-subj .hd .ls-tile .d{fill:#fff}.ls-subj .hd .ls-tile .m{stroke:rgba(255,255,255,.7)}.ls-subj .hd .ls-tile svg{width:22px;height:22px}.ls-subj .hd h3{color:var(--frame-ink);font-size:18px}.ls-cnt{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ls-cnt div{border:1px solid var(--band-line);background:var(--band);border-radius:10px;padding:8px 10px;font-size:14px;color:var(--dim);line-height:1.35}.ls-cnt b{display:block;font:800 18px var(--head);color:var(--ink)}.ls-free{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.ls-free li{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px}.ls-free .ls-tile{width:40px;height:40px;border-radius:11px}.ls-free .ls-tile svg{width:24px;height:24px}.ls-lab{font:700 14px var(--body);letter-spacing:.05em;text-transform:uppercase;color:var(--mute)}.ls-mini{display:flex;gap:6px}.ls-mini .ls-tile{width:36px;height:36px;border-radius:10px}.ls-mini .ls-tile svg{width:22px;height:22px}.ls-two{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto}.ls-recap{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:10px;border:1.5px dashed var(--line2);border-radius:18px;padding:22px;background:var(--card)}.ls-recap p{color:var(--dim)}/* 3. how it works: the canvas board */.ls-board{position:relative;border:1.5px solid var(--frame);border-radius:18px;background-color:var(--ls-board);background-image:radial-gradient(var(--ls-dot) 1.4px,transparent 1.5px);background-size:22px 22px;overflow:hidden;box-shadow:var(--sh2)}.ls-tb{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--frame);color:var(--frame-ink);font:700 15px var(--body)}.ls-tb i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.4);display:inline-block}.ls-tb .sp{flex:1}.ls-tb .path{font-weight:600;opacity:.8}.ls-grid4{display:grid;grid-template-columns:minmax(0,1fr) 84px minmax(0,1fr);grid-template-rows:auto 84px auto;padding:clamp(18px,3vw,40px);gap:0}.ls-cell{position:relative;min-width:0}.ls-c1{grid-area:1/1}.ls-c2{grid-area:1/3}.ls-c3{grid-area:3/3}.ls-c4{grid-area:3/1}.ls-ar1{grid-area:1/2}.ls-ar2{grid-area:2/3}.ls-ar3{grid-area:3/2}.ls-arrow{display:flex;align-items:center;justify-content:center;color:var(--gold)}.ls-arrow svg{width:64px;height:40px;overflow:visible}.ls-ar2 svg{transform:rotate(90deg)}.ls-ar3 svg{transform:rotate(180deg)}.ls-notecard{position:relative;z-index:2;display:flex;gap:12px;align-items:flex-start;border:1.5px solid var(--frame);background:var(--card);border-radius:14px;padding:12px 14px;box-shadow:var(--sh2);margin-bottom:16px}.ls-notecard .n{flex:none;width:34px;height:34px;border-radius:10px;background:var(--navy-2);color:var(--on-navy);display:flex;align-items:center;justify-content:center;font:800 16px var(--head)}.ls-notecard h3{font-size:18px}.ls-notecard p{font-size:15px;color:var(--dim);margin-top:2px;line-height:1.4}.ls-pin{position:absolute;z-index:3;top:-12px;right:12px;border-radius:8px;padding:2px 10px;font:700 14px var(--body);background:var(--gold);color:#fff;transform:rotate(2deg)}:root[data-theme="dark"] .ls-pin{color:#0f1420}.ls-boardfoot{padding:0 clamp(18px,3vw,40px) 22px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;color:var(--dim);font-size:15px}.ls-lv{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--band-line);background:var(--card);border-radius:999px;padding:3px 12px;font-weight:600;font-size:14px}.ls-boardfoot .small{flex-basis:100%;font-size:14px;color:var(--mute)}/* 4. features */.ls-feats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ls-feat{border:1.5px solid var(--band-line);border-radius:16px;background:var(--card);padding:18px;display:flex;flex-direction:column;gap:10px;border-top:3px solid var(--frame);min-width:0}.ls-feat p{color:var(--dim);font-size:15px}.ls-feat .ls-tile svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}/* 5. price */.ls-price{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(20px,4vw,48px);align-items:center}.ls-trial{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.ls-trial p{color:var(--dim);max-width:34em}.ls-trial .note{margin-top:0}.ls-amount{font:800 44px/1.1 var(--head);margin:14px 0 6px!important;color:var(--ink)!important}.ls-amount span{display:block;font:600 15px var(--body);color:var(--mute);margin-top:4px}.ls-price ul{margin:14px 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.ls-price li{display:flex;gap:10px;font-size:15px;margin:0}.ls-price li::before,.ls-feat-list li::before{content:"";flex:none;width:18px;height:18px;margin-top:3px;border-radius:50%;background:var(--lv-f) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E") center/12px no-repeat}.ls-unl{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ls-price .ls-frame .bd{padding:18px 20px 20px}.ls-price .ls-frame .bd .note{color:var(--mute)}/* 6. FAQ: full width, two columns of questions (one on phones) */.ls-faq h2{margin-bottom:6px}.ls-faq-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;align-items:start}.ls-faq details{border:1.5px solid var(--band-line);border-radius:14px;background:var(--card);margin:10px 0 0;padding:0;box-shadow:none;overflow:hidden}.ls-faq summary{padding:14px 18px;font:700 16px var(--body);letter-spacing:0;display:flex;justify-content:space-between;gap:12px;min-height:48px;align-items:center}.ls-faq summary::after{content:"+";font:600 22px var(--body);color:var(--gold)}.ls-faq details[open] summary::after{content:"\2212"}.ls-faq details[open]{border-color:var(--frame)}.ls-faq .faq-answer{padding:0 18px 16px;color:var(--dim);font-size:15.5px}.ls-faq .faq-answer p{margin:0;color:var(--dim)}/* 7. final call to action */.ls-final{background:var(--frame);color:var(--frame-ink);border-top:3px solid var(--gold)}.ls-final .ls-w{padding-top:clamp(36px,5vw,60px);padding-bottom:clamp(36px,5vw,60px);display:flex;gap:28px;align-items:center;justify-content:space-between;flex-wrap:wrap}.ls-final h2{color:var(--frame-ink);max-width:18em}.ls-final p{color:rgba(255,255,255,.85);margin-top:8px}.ls-final .ctas{margin:0}.ls .ls-final .btn{background:#fff;color:#1b2a4a;box-shadow:none}.ls .ls-final .btn.ghost{background:transparent;color:#fff;box-shadow:0 0 0 1.5px rgba(255,255,255,.55)}@media(max-width:860px){.ls-price{grid-template-columns:1fr}.ls-subjects,.ls-feats{grid-template-columns:1fr 1fr}}@media(max-width:760px){.ls-faq-cols{grid-template-columns:1fr;gap:0}}@media(max-width:620px){.ls-subjects,.ls-feats,.ls-unl{grid-template-columns:1fr}.ls-grid4{display:flex;flex-direction:column;align-items:stretch;padding:16px}.ls-arrow{height:64px}.ls-ar2 svg,.ls-ar3 svg,.ls-arrow svg{transform:rotate(90deg)}.ls-arrow svg{width:56px}.ls-pin{right:8px}.ls-tb .path{display:none}.ls-pair .ls-laptop{width:88%}.ls-pair .ls-phone{width:30%}.ls h3{font-size:19px}.ls .lede{font-size:17px}.ls .ctas .btn{flex:1 1 100%}.ls-final .ls-w{flex-direction:column;align-items:flex-start}.ls-final .ctas{width:100%}.ls-amount{font-size:38px}}/* ---- Direction A hero (2026-11-07). Mockup: ~/PhotonResourcesHQ/mockups/app-ux-v3/A/web.html ----"Learn it. Practise it. Test it.", a course picker (subject colour = identity only), a CSS iPad, the three verbs as one line, a trust row.Markup and the picker script: tools/pages_learning.py. The App Store button and QR (.lsh-ios, .lsh-qr) are rendered only when site.json ios_app_url is set. */.ls{--s-aa:#2463a6;--s-ai:#7a52c7;--s-phys:#c26a12;--s-chem:#2f7d4f;--s-bio:#b3261e;--ls-ln:#b9c4da}:root[data-theme="dark"] .ls{--s-aa:#6aa8ff;--s-ai:#b79aff;--s-phys:#f0a04b;--s-chem:#4fbf80;--s-bio:#ff7a6e;--ls-ln:#44516c}.lsh-in{display:grid;grid-template-columns:minmax(0,1fr) clamp(340px,34vw,441px);gap:44px;align-items:stretch}.lsh-l{padding:28px 0 26px;min-width:0}.ls .lsh .eyebrow{margin:0;font:800 12.5px/1.3 var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--lamp)}.ls .lsh h1 .eyebrow{display:block;margin:0 0 14px;line-height:1.5;word-spacing:normal}.ls .lsh h1{margin:0;font:800 52px/1 var(--head);letter-spacing:-.032em;word-spacing:.1em;color:var(--ink);text-wrap:wrap}.ls .lsh-lead{margin-top:16px;max-width:690px;font:400 16.5px/1.55 var(--body);color:var(--dim);text-wrap:pretty}.lsh-pick{--sc:var(--s-bio);margin-top:20px;max-width:660px}.lsh-pick[data-s="math-aa"]{--sc:var(--s-aa)}.lsh-pick[data-s="math-ai"]{--sc:var(--s-ai)}.lsh-pick[data-s="physics"]{--sc:var(--s-phys)}.lsh-pick[data-s="chemistry"]{--sc:var(--s-chem)}.lsh-pkh{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.lsh-pkh span{font:700 13px/1 var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}.lsh-hlsl{display:inline-flex;padding:3px;border-radius:11px;background:var(--band);border:1px solid var(--band-line)}.lsh-hlsl button{min-width:52px;height:38px;border:0;border-radius:8px;background:none;font:800 14px/1 var(--head);color:var(--dim);cursor:pointer}.lsh-hlsl button[aria-pressed="true"]{background:var(--sc);color:#fff}:root[data-theme="dark"] .lsh-hlsl button[aria-pressed="true"]{color:#0f1420}.lsh-chips{display:flex;flex-wrap:wrap;gap:8px}.lsh-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 12px;border-radius:22px;border:1.5px solid var(--line2);background:var(--card);color:var(--ink);font:600 14.5px/1 var(--body);cursor:pointer}.lsh-chip:hover{border-color:var(--line3)}.lsh-chip i{width:10px;height:10px;border-radius:50%;flex:none;background:var(--s-bio)}.lsh-chip[data-s="math-aa"] i{background:var(--s-aa)}.lsh-chip[data-s="math-ai"] i{background:var(--s-ai)}.lsh-chip[data-s="physics"] i{background:var(--s-phys)}.lsh-chip[data-s="chemistry"] i{background:var(--s-chem)}.lsh-chip[aria-pressed="true"]{border-color:var(--sc);background:color-mix(in srgb,var(--sc) 8%,var(--card));font-weight:700}.lsh-cta{margin-top:20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ls .lsh-cta .btn{min-height:52px;padding:0 22px;border-radius:12px;font-size:16px}.lsh-ios{display:inline-flex;align-items:center;justify-content:center;gap:10px}.lsh-qr{display:flex;align-items:center;gap:12px;margin-left:2px;padding-left:16px;border-left:1px solid var(--band-line)}.lsh-qr svg{width:76px;height:76px;padding:5px;border:1px solid var(--band-line);border-radius:8px;background:#fff;flex:none;shape-rendering:crispEdges}.lsh-qr p{font:400 13px/1.35 var(--body);color:var(--dim)}.lsh-qr b{display:block;font-weight:700;color:var(--ink)}.ls .lsh .note{margin-top:12px;font-size:13.5px;line-height:1.4}.ls .lsh .note a{color:inherit;text-decoration:underline;text-decoration-color:var(--line3)}/* the iPad: a real app screenshot, cut off by the band below on wide screens */.lsh-r{position:relative;display:flex;flex-direction:column;align-items:center;margin:0;padding-top:34px;contain:size;clip-path:inset(0 -60px 0 -60px)}.lsh-cap{display:inline-flex;align-items:center;gap:8px;margin:0 0 14px;align-self:flex-start;font:500 13.5px/1.3 var(--body);color:var(--dim)}.lsh-cap svg{flex:none;color:var(--mute)}.lsh-ipad{flex:none;position:relative;width:100%;padding:12px;border-radius:34px;background:#0e1626;box-shadow:inset 0 0 0 1.5px #2b3652,0 24px 50px -22px rgba(27,42,74,.55),0 6px 14px rgba(27,42,74,.14)}.lsh-ipad::before{content:"";position:absolute;top:5px;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:#243049}.lsh-scr{width:100%;aspect-ratio:3/4;border-radius:22px;overflow:hidden;background:#fff}.lsh-scr img{width:100%;height:100%;object-fit:cover;object-position:top}/* the phone in front of the iPad plays the app (a muted loop; script VIDEO_JS in tools/pages_learning.py). On wide screens it sits above the bottom of the hero, where the band cuts the iPad off;under 900px the iPad is whole and the phone overlaps its lower right corner inside .lsh-dev. The poster shows until it plays, and always under reduced motion. */.lsh-dev{width:100%}.lsh-ph{position:absolute;right:-30px;bottom:26px;width:33%;padding:4px;border-radius:26px;background:#0e1626;box-shadow:inset 0 0 0 1.2px #2b3652,0 22px 40px -14px rgba(15,24,45,.55),0 6px 14px rgba(15,24,45,.2)}.lsh-pscr{position:relative;aspect-ratio:390/844;border-radius:22px;overflow:hidden;background:#fff}.lsh-pscr::after{content:"";position:absolute;top:2.6%;left:50%;width:30%;height:3.3%;margin-left:-15%;background:#0a0a0c;border-radius:20px;pointer-events:none}.lsh-vid{display:block;width:100%;height:100%;object-fit:cover;background:#fff}.lsh-vbtn{position:absolute;right:7%;bottom:6.5%;display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:50%;background:rgba(14,22,38,.72);color:#fff;cursor:pointer;opacity:.9}.lsh-vbtn[hidden]{display:none}.lsh-vbtn::before{content:"";position:absolute;inset:-9px}   /* a 44px target around the small round button */.lsh-vbtn:hover{opacity:1;background:rgba(14,22,38,.9)}.lsh-vbtn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.lsh-vbtn[aria-pressed="true"] .i-play,.lsh-vbtn[aria-pressed="false"] .i-pause{display:none}/* learn, practise, test: one connected line with three nodes (not three cards) */.lsh-seq{background:var(--band);border-top:1px solid var(--band-line);border-bottom:1px solid var(--band-line)}.lsh-sq{list-style:none;margin:0;padding:16px 0 18px;display:grid;grid-template-columns:repeat(3,1fr)}.lsh-sq li{display:grid;grid-template-columns:44px auto 1fr;grid-template-areas:"nd v ln" "cap cap cap";align-items:center;column-gap:12px;padding-right:36px;margin:0}.lsh-sq .nd{grid-area:nd;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--frame);color:var(--frame-ink)}.lsh-sq b{grid-area:v;font:800 24px/1 var(--head);letter-spacing:-.025em;color:var(--ink)}.lsh-sq .ln{grid-area:ln;position:relative;height:2px;margin-left:4px;background:var(--ls-ln)}.lsh-sq .ln::after{content:"";position:absolute;right:-1px;top:-4px;width:9px;height:9px;border-top:2px solid var(--ls-ln);border-right:2px solid var(--ls-ln);transform:rotate(45deg)}.lsh-sq li:last-child .ln{display:none}.lsh-sq p{grid-area:cap;margin:10px 0 0;max-width:270px;font:400 15px/1.45 var(--body);color:var(--dim);text-wrap:balance}/* trust row: claims the site already makes (home, About) */.lsh-trust ul{list-style:none;margin:0;padding:12px 0;display:flex;align-items:center;justify-content:space-between;gap:24px}.lsh-trust li{display:flex;align-items:center;gap:8px;margin:0;font:400 14px/1.35 var(--body);color:var(--dim)}.lsh-trust li b{font:800 20px/1 var(--head);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}.lsh-trust .bg{display:inline-flex;align-items:center;gap:6px}.lsh-trust .bg svg{color:var(--gold)}.lsh-trust li.mk svg{flex:none}@media(max-width:900px){.lsh-in{grid-template-columns:minmax(0,1fr);gap:0}.lsh-l{padding:20px 0 8px}.ls .lsh h1{font-size:46px}.ls .lsh-lead{font-size:16px;margin-top:14px}.lsh-pick{margin-top:24px}.lsh-cta{flex-direction:column;align-items:stretch;margin-top:22px}.ls .lsh-cta .btn{width:100%}.lsh-qr{display:none}.lsh-r{padding:26px 0 36px;contain:none;clip-path:none}.lsh-dev{position:relative;max-width:441px}.lsh-ph{right:-3%;bottom:-2%;width:31%;padding:3px;border-radius:22px}.lsh-pscr{border-radius:19px}.lsh-vbtn{width:26px;height:26px}.lsh-ipad{max-width:441px}.lsh-cap{order:2;align-self:center;margin:16px 0 0;text-align:center}.lsh-sq{grid-template-columns:1fr;padding:26px 0 8px}.lsh-sq li{grid-template-columns:44px 1fr;grid-template-areas:"nd v" "nd cap";row-gap:4px;padding:0 0 26px;position:relative;align-items:start}.lsh-sq b{padding-top:10px;font-size:22px}.lsh-sq p{margin:0;max-width:300px}.lsh-sq .ln{display:none}.lsh-sq li:not(:last-child)::before{content:"";position:absolute;left:21px;top:44px;bottom:0;width:2px;background:var(--ls-ln)}.lsh-trust ul{display:grid;grid-template-columns:repeat(3,1fr);gap:0 10px;padding:22px 0 26px}.lsh-trust li{flex-direction:column;align-items:flex-start;gap:4px;font-size:13.5px}.lsh-trust li.mk{grid-column:1/-1;flex-direction:row;align-items:center;gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid var(--line);font-size:14px;text-wrap:balance}}@media(max-width:1180px) and (min-width:901px){.lsh-trust ul{flex-wrap:wrap;gap:10px 28px}.lsh-trust li{white-space:nowrap}.lsh-trust li.mk{white-space:normal}}@media(hover:none) and (pointer:coarse){.lsh-qr{display:none}}   /* the QR is for someone on a computer, scanning with an iPad *//* ---- Welcome-back bar (2026-11-07): shown on / and /learning-studio/ only when this browser has Photon Learning Studio progress.Hidden by default ([hidden]), so nobody else sees it or gets a layout shift. Markup and script: tools/welcome_bar.py ---- */.plsb{background:var(--band);border-bottom:1px solid var(--band-line)}.plsb-in{display:flex;align-items:center;gap:12px;height:44px}.plsb-owl{flex:none}.plsb-t{flex:1;min-width:0;margin:0;font:400 14px/1.3 var(--body);color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plsb-t b{font-weight:700;color:var(--ink);margin-right:2px}.plsb-go{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;font:800 14px/1 var(--head);color:var(--ink);text-decoration:none}.plsb-go:hover{color:var(--lamp)}.plsb-x{flex:none;width:36px;height:36px;margin-right:-8px;border:0;border-radius:8px;background:none;color:var(--mute);display:grid;place-items:center;cursor:pointer}.plsb-x:hover{background:var(--hov);color:var(--ink)}@media(max-width:600px){.plsb-in{height:54px;gap:10px}.plsb-x{width:40px;height:40px}.plsb-t{font-size:13px;line-height:1.25}.plsb-t b{display:block;margin:0;font-size:13.5px}}@media print{.plsb{display:none}}/* Level = a count of small navy bars plus its name, never a colour (owner, 2026-11-07; the same glyph as the Learning Studio app, css/colours.css).1 Foundation, 2 Core, 3 Exam, 4 Challenge, 5 Stretch. Filled bars take the text colour; empty bars the hairline. Markup: <span class="lvbars"><i class="on"></i>...x5</span>(tools/pages_learning.py lv_bars(), static/js/practice.js lvBars()). */.lvbars{display:inline-flex;align-items:flex-end;gap:2px;height:14px;vertical-align:middle;flex:none;color:var(--ink)}.lvbars i{display:block;width:3px;border-radius:1px;background:var(--line3)}.lvbars i:nth-child(1){height:6px}.lvbars i:nth-child(2){height:8px}.lvbars i:nth-child(3){height:10px}.lvbars i:nth-child(4){height:12px}.lvbars i:nth-child(5){height:14px}.lvbars i.on{background:currentColor}/* premium PDF library: sales page + /library/pdfs/ app */.lib-counts{list-style:none;margin:10px 0;padding:0;display:grid;gap:4px}.lib-counts li{color:var(--ink-2);font-size:14.5px}.lib-counts b{color:var(--ink);font:700 16px var(--head);margin-right:4px}.lib-course h3{margin:4px 0 6px}.pl-courses{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.pl-course{border:1px solid var(--edge);background:var(--desk-2);color:var(--text);border-radius:999px;padding:8px 14px;font:500 14px var(--body);cursor:pointer}.pl-course[aria-pressed="true"]{background:var(--navy);color:var(--on-navy);border-color:var(--navy);font-weight:700}.pl-status{background:var(--desk-2);border:1px solid var(--edge);border-left:4px solid var(--lamp);border-radius:12px;padding:12px 16px;color:var(--dim);display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.pl-status b{color:var(--text)}.pl-status .btn{padding:8px 14px;font-size:14px}.pl-tabs{display:flex;gap:4px;border-bottom:1px solid var(--edge);margin:22px 0 18px;overflow-x:auto}.pl-tab{background:none;border:0;border-bottom:3px solid transparent;color:var(--dim);font:600 15px var(--head);padding:10px 14px;cursor:pointer;white-space:nowrap}.pl-tab[aria-selected="true"]{color:var(--lamp);border-bottom-color:var(--lamp)}.pl-intro,.pl-empty{color:var(--dim);margin:0 0 14px}.pl-intro .btn{margin-right:10px}.pl-topics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.pl-topic{background:var(--paper);color:var(--ink);border-radius:14px;padding:14px 16px;min-width:0}.pl-topic h3{font-size:16px;margin:0 0 10px;color:var(--ink)}.pl-acts{display:flex;flex-wrap:wrap;gap:6px}.pl-open,.pl-go,.pl-lock{text-decoration:none;display:inline-block;border-radius:999px;padding:6px 12px;font:500 13px var(--body);border:1px solid var(--line2);background:var(--card);color:var(--ink);cursor:pointer}.pl-open:hover,.pl-go:hover{border-color:var(--coral-ink);color:var(--coral-ink)}.pl-open.free{border-color:var(--mint);color:var(--ok-t)}.pl-lock{cursor:default;color:var(--mute);background:var(--tint);border-style:dashed}.pl-lock:before{content:"🔒 ";font-size:11px}.pl-basics{list-style:none;margin:0;padding:0;display:grid;gap:6px}.pl-basics li{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:14px;color:var(--ink-2)}.pl-basics li span{flex:1 1 100%}.pl-viewer{position:fixed;inset:0;z-index:80;background:rgba(27,42,74,.5);display:grid;place-items:center;padding:max(12px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 12px max(12px,env(safe-area-inset-left,0px))}.pl-viewer[hidden]{display:none}.plv-box{width:min(1100px,100%);height:min(92vh,100%);background:var(--desk-2);border:1px solid var(--edge);border-radius:16px;display:flex;flex-direction:column;overflow:hidden}.plv-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--edge)}.plv-bar b{color:var(--text);font:600 15px var(--head);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plv-bar span{display:flex;gap:8px;flex:none}.plv-bar .btn{padding:7px 12px;font-size:13.5px}#plvFrame{flex:1;border:0;background:#fff;width:100%}.ac-msg.bad{border-color:var(--coral)}@media(max-width:760px){.pl-topics{grid-template-columns:minmax(0,1fr)}}.lib-acts{display:flex;flex-wrap:wrap;gap:8px}.lib-paynote{margin-top:14px}.pl-paynote{flex:1 1 100%;font-size:13.5px;color:var(--dim)}/* signed in: which courses you have */.pl-course.own:after{content:" ✓";color:var(--mint)}.pl-course.locked:after{content:" 🔒";font-size:11px}.pl-course.own[aria-pressed="true"]:after{color:var(--ink)}button.pl-lock{cursor:pointer;font:500 13px var(--body)}button.pl-lock:hover{border-color:var(--coral-ink);color:var(--coral-ink)}.pl-status.pulse{animation:plpulse 1.2s ease-out}@keyframes plpulse{0%{box-shadow:0 0 0 0 var(--gold-b)}100%{box-shadow:0 0 0 14px rgba(169,116,42,0)}}@media (prefers-reduced-motion:reduce){.pl-status.pulse{animation:none}}/* simple list (2026-10-20): one row per topic, fixed columns, one click to open */.pl-tbl{background:var(--card);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1);overflow:hidden}.pl-tr{display:grid;grid-template-columns:minmax(0,2.2fr) repeat(4,minmax(0,1fr));gap:8px 12px;align-items:center;padding:10px 18px;border-top:1px solid var(--line)}.pl-tr:first-child{border-top:0}.pl-th{background:var(--desk-2);font:600 12px var(--body);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);padding-block:12px}.pl-tn{font:700 15.5px var(--head);letter-spacing:-.01em;color:var(--ink)}.pl-tr>span{display:flex;flex-wrap:wrap;gap:6px}.pl-tr .pl-open,.pl-tr .pl-go,.pl-tr .pl-lock{padding:5px 12px;font-size:13.5px}.pl-tr .pl-na{color:var(--mute);padding-left:6px}@media(max-width:760px){.pl-th{display:none}.pl-tr{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px 14px}.pl-tn{grid-column:1/-1}.pl-tr>span:before{content:attr(data-l);display:block;flex:1 1 100%;font:600 11px var(--body);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2)}.pl-tr>span{align-content:start}}.pl-topics{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--rl);box-shadow:var(--sh1);overflow:hidden}.pl-topic{background:none;border-radius:0;padding:12px 18px;border-top:1px solid var(--line)}.pl-topic:first-child{border-top:0}.pl-topic h3{margin:0 0 8px}.pl-tabs{margin-top:14px}/* Premium library (lean sweep): "what every course includes" strip + subject rows with HL | SL cells */.lt-inc{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:0;background:var(--card);border:1px solid var(--line);border-top:4px solid var(--frame);border-radius:var(--rl);box-shadow:var(--sh1)}.lt-inc li{padding:22px 14px;text-align:center;border-left:1px solid var(--line);display:grid;gap:4px;justify-items:center}.lt-inc li:first-child{border:0}.lt-inc b{font:800 16px var(--head);color:var(--ink)}.lt-inc li>span:last-child{font-size:13px;color:var(--dim)}.lt-ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--tint);color:var(--frame);margin-bottom:6px}:root[data-theme=dark] .lt-ic{color:var(--frame-ink,#e8ecf3)}.lt-table{display:grid;gap:12px;max-width:1000px;margin:0 auto}.lt-row{display:grid;grid-template-columns:200px 1fr 1fr;gap:0;align-items:center;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--frame);border-radius:var(--rs);box-shadow:var(--sh1)}.lt-n{font:800 20px var(--head);margin:0;padding:18px 20px;color:var(--ink)}.lt-cell{padding:16px 20px;border-left:1px solid var(--line);display:grid;gap:8px;justify-items:start}.lt-lv{margin:0;font-size:13px;color:var(--dim)}.lt-lv b{font:800 16px var(--head);color:var(--ink);margin-right:6px}.lt-cell .btn{height:42px;padding:0 18px}.lt-in{font-size:13.5px;font-weight:600;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold)}@media(max-width:760px){.lt-inc{grid-template-columns:repeat(2,1fr)}.lt-inc li{border-top:1px solid var(--line);padding:16px 8px}.lt-inc li:nth-child(odd){border-left:0}.lt-inc li:nth-child(-n+2){border-top:0}.lt-inc li:last-child{grid-column:1/-1}.lt-row{grid-template-columns:1fr 1fr}.lt-n{grid-column:1/-1;padding:14px 16px 4px}.lt-cell{border-left:0;padding:8px 16px 16px}.lt-cell+.lt-cell{border-left:1px solid var(--line)}.lt-cell .btn{width:100%;padding:0 8px}}/* course cards: subject art and owned state (2026-10-22) */.lt-row{grid-template-columns:230px 1fr 1fr}.lt-sub{display:grid;gap:6px;padding:14px 16px;align-self:stretch;align-content:center;background:linear-gradient(160deg,color-mix(in srgb,var(--c) 12%,transparent),transparent);border-radius:var(--rs) 0 0 var(--rs)}.lt-sub .hcart{width:100%;max-width:180px;height:auto;aspect-ratio:200/120;color:var(--c);background:var(--card);border-radius:12px;box-shadow:var(--sh1)}.lt-sub .lt-n{padding:2px 0 0}.lt-row{border-left-color:var(--c)}.lt-owned{display:grid;gap:8px;justify-items:start}.lt-owned[hidden]{display:none}.lt-ok{font:700 13px var(--body);color:var(--ok-t);background:var(--ok-bg);border:1px solid var(--ok-b);border-radius:999px;padding:3px 10px}.lt-renew{font-size:13px;color:var(--mute);text-decoration:underline;text-underline-offset:3px}.lt-renew[hidden]{display:none}.lt-cell.is-own{background:color-mix(in srgb,var(--ok-bg) 55%,transparent)}.lt-cell.is-own .lt-in{display:none}@media(max-width:760px){.lt-row{grid-template-columns:1fr 1fr}.lt-sub{grid-column:1/-1;grid-template-columns:110px 1fr;align-items:center;border-radius:var(--rs) var(--rs) 0 0}.lt-sub .hcart{max-width:110px}}/* Optional topic-wise Learning Studio progress on My Library. */.lp-card{border:1px solid var(--band-line);border-top:4px solid var(--frame);border-radius:var(--rl);background:var(--card);box-shadow:var(--sh1);padding:18px 20px;color:var(--ink)}.lp-head{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap}.lp-head h2{font:800 20px var(--head);margin:0}.lp-head a{font-size:12px;white-space:nowrap}.lp-pills{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 4px}.lp-pills button,.lp-toggle{font:600 12px var(--body);cursor:pointer;color:var(--ink);background:var(--band);border:1px solid var(--band-line);border-radius:999px;padding:6px 10px}.lp-pills button[aria-pressed=true]{background:var(--frame);color:var(--frame-ink);border-color:var(--frame)}.lp-topics{list-style:none;margin:0;padding:0}.lp-topics li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--band-line)}.lp-topics li:last-child{border:0}.lp-info{min-width:0;flex:1;display:grid;gap:6px}.lp-info b{font:600 14px var(--body);overflow-wrap:anywhere}.lp-info progress{appearance:none;border:0;border-radius:99px;overflow:hidden;background:var(--band-line);height:4px;width:100%;display:block;color:var(--gold)}.lp-info progress::-webkit-progress-bar{background:var(--band-line)}.lp-info progress::-webkit-progress-value{background:var(--gold)}.lp-info progress::-moz-progress-bar{background:var(--gold)}.lp-meta{font-size:11px;color:var(--dim);display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px}.lp-level{font-size:10px;background:var(--band);padding:1px 6px;border-radius:4px}.lp-continue{font-size:12px;white-space:nowrap}.lp-toggle{margin-top:8px}.lp-empty{font-size:14px;color:var(--dim);margin:12px 0 0}.lp-empty a{white-space:nowrap}.lp-card :is(a,button):focus-visible{outline:2px solid var(--gold);outline-offset:3px}@media(max-width:480px){.lp-card{padding:14px}.lp-head h2{font-size:18px}.lp-topics li{gap:8px}.lp-info b{font-size:13px}}/* ---- Library on phones, Learning Studio links, bundle and creator credit (2026-11-01) ---- */.pl-tnw{display:grid;gap:3px;align-content:center;min-width:0}.pl-ls{font:600 13px/1.35 var(--body);color:var(--coral-ink);text-decoration:none}.pl-ls:hover{text-decoration:underline}.pl-lsc{margin:0 10px 10px 0;height:auto;min-height:44px;white-space:normal;line-height:1.3;padding:10px 16px}.pl-find{margin:0 0 14px;display:grid;gap:6px;max-width:520px}.pl-find[hidden]{display:none}.pl-find label{font:600 14px var(--body);color:var(--ink)}.pl-find input{font:500 16px var(--body);color:var(--ink);background:var(--card);border:1.5px solid var(--line2);border-radius:12px;padding:10px 14px;min-height:48px;width:100%}.pl-find input:focus-visible{outline:2px solid var(--coral);outline-offset:2px;border-color:var(--ink)}.pl-tr[hidden]{display:none!important}.ptable-wide table{min-width:900px}.ptable-wide thead th small{font-size:12.5px}.ptable-wide td:first-child{min-width:190px}.ptable-hint{display:none;margin:8px 4px 0}/* bundle offer */.bn{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:var(--rl);box-shadow:var(--sh1);padding:22px clamp(16px,3vw,28px);margin:22px auto 0;max-width:1000px;color:var(--ink)}.bn h2,.bn h3{font:800 clamp(21px,2.4vw,26px) var(--head);margin:2px 0 8px;color:var(--ink)}.bn-hd p{margin:0;color:var(--dim);max-width:62ch}.bn-hd .eyebrow{margin:0 0 2px}.bn-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-top:16px}.bn-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--desk-2)}.bn-row b{grid-column:1/-1;font:800 15.5px var(--head);color:var(--ink)}.bn-row .btn{height:44px;min-height:44px;padding:0 8px;font-size:14px;width:100%;justify-content:center}.bundle-wrap{padding-top:0}/* creator credit */.cr-block{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--frame);border-radius:var(--rs);padding:16px 20px;max-width:1000px;margin:0 auto;box-shadow:var(--sh1);color:var(--ink)}.cr-block p{margin:0;color:var(--dim);max-width:70ch}.cr-block p b{color:var(--ink)}.cr-block .eyebrow{margin:0 0 4px}.cr-block a{color:var(--coral-ink);font-weight:600}.ls-bundle,.ls-who{background:transparent}.ls-who .ls-pad{padding-top:0}@media(max-width:760px){.ptable-hint{display:block}/* course switcher: one swipeable row of 44px chips */.pl-courses{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scroll-padding-left:16px;margin:0 -16px 12px;padding:2px 16px 8px;scrollbar-width:none}.pl-courses::-webkit-scrollbar{display:none}.pl-course{flex:none;min-height:44px;padding:8px 16px;font-size:15px;scroll-snap-align:start}.pl-status{font-size:15px}.pl-status .btn{min-height:44px;width:100%}.pl-tabs{margin:16px -16px 14px;padding:0 16px;scrollbar-width:none}.pl-tab{min-height:44px;font-size:15px}.pl-intro .btn,.pl-lsc{width:100%;margin:0 0 10px;min-height:44px;justify-content:center;text-align:center}.pl-intro{font-size:15px}/* topic rows become cards: name, Learning Studio link, then full-width 44px open buttons in two columns */.pl-tr{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:14px}.pl-tnw{grid-column:1/-1;gap:2px}.pl-tn{font-size:16.5px}.pl-ls{display:block;padding:11px 0;min-height:44px;font-size:14.5px}.pl-tr>span{display:grid;gap:8px;align-content:start}.pl-tr>span:before{display:none}.pl-tr .pl-open,.pl-tr .pl-go,.pl-tr .pl-lock,.pl-open,.pl-go,.pl-lock{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;padding:8px 10px;font-size:14.5px;border-radius:12px;text-align:center}.pl-tr .pl-na{display:flex;align-items:center;justify-content:center;min-height:44px}.pl-tr>span:has(.pl-na:only-child){display:none}.pl-tnw{display:flex;flex-direction:column}.pl-topic{padding:14px}.pl-topic .pl-acts{display:grid;grid-template-columns:1fr;gap:8px}.pl-basics li{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pl-basics li span{grid-column:1/-1;font-size:15px}.pl-basics li .pl-open:only-of-type{grid-column:1/-1}.plv-bar{flex-wrap:wrap}.plv-bar .btn{min-height:44px;padding:8px 14px;font-size:15px}.pl-viewer{padding:0}.plv-box{height:100%;border-radius:0}.pl-paynote{font-size:14px}.ac-hero .eyebrow,.lib-eb,.bn .eyebrow,.cr-block .eyebrow{font-size:14px}/* sales page */.lt-row{grid-template-columns:1fr}.lt-cell,.lt-cell+.lt-cell{border-left:0;border-top:1px solid var(--line);padding:14px 16px 16px;justify-items:stretch}.lt-cell .btn,.lt-owned .btn{width:100%;min-height:48px;height:48px;justify-content:center}.lt-in,.lt-renew{display:inline-flex;width:fit-content;align-items:center;min-height:44px;font-size:15px}.lt-lv{font-size:14px}.lt-inc li>span:last-child{font-size:14px}.pills li,.pills span{font-size:14px}.lt-sub{grid-column:auto;grid-template-columns:110px 1fr}.bn-rows{grid-template-columns:1fr}.bn-row{grid-template-columns:1fr 1fr}.faqwrap summary,.faq summary{min-height:48px;display:flex;align-items:center}.lt-ok{font-size:14px;padding:6px 12px}}.ac-lsl{margin:0;font-size:13.5px}.ac-lsl a{color:var(--coral-ink);font-weight:600;text-decoration:none}.ac-lsl a:hover{text-decoration:underline}@media(max-width:760px){.ac-jump a,.ac-chips a{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;font-size:15px}.ac-course .btn,.ac-act .btn{min-height:44px;padding:10px 16px;font-size:15px}.ac-subj{grid-template-columns:repeat(2,minmax(0,1fr))}.ac-subj .ac-course{min-width:0}.ac-course .ac-act{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.ac-course .ac-act .btn{width:100%;justify-content:center;padding-inline:8px}.ac-chip{font-size:14px;padding:4px 12px}.ac-cmeta,.ac-cnote,.ac-meta{font-size:14px}.ac-lsl{font-size:14.5px}.ac-lsl a{display:flex;align-items:center;min-height:44px}.ac-subj .ac-course{padding:10px 14px 14px}.ac-link{min-height:44px;display:inline-flex;align-items:center}.ac-sum{font-size:15px}.ws-mob summary{min-height:44px}.cp-lv a{display:inline-flex;align-items:center;min-height:44px}.cp-oth a{display:inline-flex;align-items:center;min-height:44px}.cp-faqw summary,.cp-faqw .faq summary{min-height:48px}}/* main menu: dropdowns on desktop, one panel on phones and portrait tablets */header.site .wrap{position:relative}nav.main>ul{align-items:center}nav.main summary{list-style:none;cursor:pointer;color:var(--dim);font-weight:500;font-size:15px;padding:8px 11px;border-radius:999px;display:flex;align-items:center;gap:6px;user-select:none}nav.main summary::-webkit-details-marker{display:none}nav.main summary:after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.6px 1.6px 0;transform:translateY(-2px) rotate(45deg);transition:transform .2s}nav.main details[open] summary:after{transform:translateY(1px) rotate(-135deg)}nav.main summary:hover,nav.main details[open] summary{color:var(--text);background:var(--hov)}nav.main summary.on{background:var(--gold-t);color:var(--lamp)}nav.main summary:focus-visible{outline:2px solid var(--lamp);outline-offset:2px}nav.main .dd{position:relative}nav.main .ddp{position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);list-style:none;margin:0;padding:8px;width:300px;display:grid;gap:2px;background:var(--desk-2);border:1px solid var(--edge);border-radius:16px;box-shadow:var(--sh1);animation:ddin .18s ease-out}nav.main .ddp.two{width:520px;grid-template-columns:1fr 1fr}nav.main .ddp a{display:block;border-radius:10px;padding:10px 12px;color:var(--text)}nav.main .ddp a b{display:block;font:600 14.5px/1.3 var(--head);letter-spacing:-.01em}nav.main .ddp a span{display:block;font-size:12.5px;line-height:1.4;color:var(--dim);margin-top:3px}nav.main .ddp a:hover{background:var(--gold-t)}nav.main .ddp a:hover b{color:var(--lamp)}@keyframes ddin{from{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%,0)}}@media(prefers-reduced-motion:reduce){nav.main .ddp{animation:none}}.hright{display:flex;align-items:center;gap:10px}.burger{display:none}@media(max-width:1220px){nav.main{display:none}.burger{display:block}.burger summary{list-style:none;cursor:pointer;width:44px;height:44px;border-radius:12px;border:1px solid var(--edge);display:grid;place-content:center;gap:4px}.burger summary::-webkit-details-marker{display:none}.burger summary i{display:block;width:18px;height:2px;border-radius:2px;background:var(--text);transition:transform .2s,opacity .2s}.burger[open] summary i:nth-child(1){transform:translateY(6px) rotate(45deg)}.burger[open] summary i:nth-child(2){opacity:0}.burger[open] summary i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.mpanel{position:absolute;left:0;right:0;top:66px;max-height:calc(100dvh - 66px - env(safe-area-inset-top,0px));overflow-y:auto;background:var(--desk);border-bottom:1px solid var(--edge);padding:8px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px));box-shadow:var(--sh1)}.mpanel>ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 24px}.mpanel ul ul{list-style:none;margin:0 0 10px;padding:0}.mpanel .mh{font:500 11.5px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--lamp);margin:14px 0 4px}.mpanel a{display:block;color:var(--text);text-decoration:none;padding:10px 0;font-size:16px;border-bottom:1px solid var(--edge)}.mpanel a.mtop{font:600 17px var(--head);padding:14px 0}.mpanel .signin.wide{display:block;text-align:center;margin-top:18px;border:0;padding:14px}}@media(max-width:460px){header.site .signin:not(.wide){display:none}}header.site details{background:none;padding:0;margin:0;border-radius:0;color:var(--text);border:0;box-shadow:none}header.site details p{margin:0}header.site details a{color:var(--text);text-decoration:none}header.site nav.main summary{font-family:var(--body);letter-spacing:0;justify-content:flex-start}header.site .burger summary:after{content:none}/* header search (2026-10-19) */.hsrch{display:inline-flex;align-items:center;gap:8px;background:var(--desk-3);border:1px solid var(--edge);border-radius:999px;color:var(--dim);font:500 14px var(--body);padding:8px 12px;cursor:pointer;min-width:170px}.hsrch:hover{color:var(--text);border-color:rgba(27,42,74,.2)}.hsrch kbd{margin-left:auto;font:500 11px var(--mono);border:1px solid var(--edge);border-radius:5px;padding:1px 5px}.signin small{font-weight:500;opacity:.7}@media(max-width:1180px){.hsrch{min-width:0}.hsrch span,.hsrch kbd{display:none}.hsrch{padding:9px;border-radius:50%}}.srch{position:fixed;inset:0;z-index:90;background:rgba(27,42,74,.5);display:grid;align-items:start;justify-items:center;padding:max(70px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 16px max(16px,env(safe-area-inset-left,0px))}.srch[hidden]{display:none}.srch-box{width:min(680px,100%);background:var(--desk-2);border:1px solid var(--edge);border-radius:18px;box-shadow:var(--sh1);overflow:hidden}.srch-in{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--edge);color:var(--dim)}.srch-in input{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--text);font:500 17px var(--body)}.srch-x{background:var(--desk-3);border:1px solid var(--edge);color:var(--dim);border-radius:7px;font:500 12px var(--mono);padding:4px 8px;cursor:pointer}.srch-r{list-style:none;margin:0;padding:6px;max-height:min(60vh,520px);overflow:auto}.srch-r a{display:grid;gap:2px;padding:10px 12px;border-radius:12px;text-decoration:none;color:var(--text)}.srch-r a b{font:600 15px var(--head);letter-spacing:-.01em}.srch-r a span{color:var(--dim);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.srch-r a[aria-selected],.srch-r a:hover{background:var(--gold-t)}.srch-r a[aria-selected] b{color:var(--lamp)}.srch-m{color:var(--dim);padding:14px 12px;font-size:14px}@media(min-width:1001px) and (max-width:1340px){.hsrch span,.hsrch kbd,header.site .signin small{display:none}.hsrch{min-width:0;width:44px;height:44px;justify-content:center;padding:0;border-radius:10px}nav.main>ul>li>a,nav.main summary{padding:8px 9px;font-size:14px}header.site .wrap{gap:10px}}.hsrch{height:44px;border-radius:10px;background:var(--card)}/* Library dropdown: the ten course pages (2026-10-22) */nav.main .ddp.ddc{width:440px;padding:12px;display:block}nav.main .ddh{font:700 11px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--mute);margin:2px 8px 6px}nav.main .ddg{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:2px}nav.main .ddg a{padding:8px 10px}nav.main .ddg a[aria-current] b{color:var(--lamp)}nav.main .ddf{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;padding-top:10px;border-top:1px solid var(--edge)}nav.main .ddf a{background:var(--band,var(--desk-3))}@media(max-width:1220px){.mpanel ul.mcourses{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;margin:0 0 6px}.mpanel ul.mcourses a{font-size:15px;padding:9px 0}}header.site .mpanel a.signin.wide{color:var(--on-navy);border-bottom:0}/* One product name (2026-11-07): the desktop menu says "Photon Learning Studio"; the "Photon" is dropped only in the cramped band (nav shown from 1221px, tightened up to 1340px), where it would push the header out of the window. Phone menu and footer keep the full name. */@media(max-width:1340px),(min-width:1501px) and (max-width:1583px){nav.main .nm-pre{display:none}}   /* the nav grows at 1501px; 1501-1583 is the other band with no room */@media(min-width:1341px){.hsrch{min-width:0}}   /* the search box takes its natural width (about 126px, was 170px): pays for the 46px "Photon " so the header stays inside the window *//* one-page booklets (/print/*) and their download cards */.op-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0 0 22px}.op-card{display:flex;gap:14px;align-items:center;background:var(--desk-2);border:1px solid var(--edge);border-radius:16px;padding:12px;text-decoration:none;color:var(--text);min-width:0}.op-card:hover{border-color:var(--lamp)}.op-card img{width:42%;max-width:180px;height:auto;border-radius:6px;background:var(--card);box-shadow:var(--sh1);flex:none}.op-card span{display:flex;flex-direction:column;gap:4px;min-width:0}.op-card b{font:600 16px var(--head)}.op-card em{font-style:normal;font-size:13.5px;color:var(--dim);line-height:1.45}.op-card i{font-style:normal;color:var(--lamp);font-weight:600;font-size:14px}@media(max-width:700px){.op-cards{grid-template-columns:minmax(0,1fr)}}.op-sheet{background:#fff;color:#16181c;padding:6mm;max-width:210mm;margin:20px auto;font:400 8.6px/1.25 var(--body);color-scheme:light}.op-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;border-bottom:1.5px solid #ff6a45;padding-bottom:3px;margin-bottom:4px}.op-brand{margin:0;font:700 11px var(--head);letter-spacing:-.02em}.op-brand i{font-style:normal;color:#ff6a45}.op-head h1{margin:0;font:700 12px var(--head);letter-spacing:-.02em;color:#16181c}.op-sub{margin:0 0 0 auto;font-size:7.5px;color:var(--ink-2)}.op-cols{column-count:4;column-gap:3.5mm;column-rule:.5px solid #e2dfd6}.op-sheet section{margin:0 0 3px}.op-sheet h2{font:700 8.8px var(--head);background:#16181c;color:#fff;margin:2px 0 1px;padding:1px 4px;border-radius:2px;break-after:avoid}.op-sheet h3{font:700 7.8px var(--head);margin:3px 0 0;color:#16181c;break-after:avoid}.op-sheet .it{break-inside:avoid;padding:1px 0;border-bottom:.5px dotted #e2dfd6}.op-sheet .lb{display:block;font-size:7px;color:var(--ink-2);font-weight:600}.op-sheet .fx .katex{font-size:1.08em}.op-sheet .hl{font-style:normal;font:700 6px var(--mono);background:#16181c;color:#fff;border-radius:2px;padding:0 2px;margin-left:2px;vertical-align:1px}.op-sheet .tip{display:inline-block;margin:1px 0 0;font-size:6.9px;line-height:1.2;color:var(--ok-t);background:#dff2e9;border-radius:2px;padding:0 3px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.op-sheet .op-sub .tip{font-size:7px}.op-sheet .xb{break-inside:avoid;border:1px solid #0f8a66;background:#e9f6f0;border-radius:3px;padding:1px 3px;margin:2px 0;-webkit-print-color-adjust:exact;print-color-adjust:exact}.op-sheet .xb>p{margin:0;font:700 6.2px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:#0f8a66}.op-sheet .xb .it{border-bottom-color:#b9e0cf}.op-sheet .xb .lb{color:var(--ok-t)}.op-t{border-collapse:collapse;width:100%;font-size:7px}.op-t td{padding:0 2px 1px 0;border-bottom:.5px dotted #e2dfd6;vertical-align:top}.op-t td:first-child{color:var(--ink-2)}.op-line{margin:1px 0;font-size:7.2px}.op-sym{display:grid;grid-template-columns:repeat(5,1fr);gap:1px}.op-sym figure{margin:0;text-align:center}.op-sym svg{width:100%;height:auto;fill:none;stroke:#16181c;stroke-width:3;stroke-linecap:round}.op-sym svg text{fill:#16181c;stroke:none;font:600 20px var(--body)}.op-sym figcaption{font-size:5.6px;line-height:1.1;color:var(--ink-2)}.op-foot{margin:4px 0 0;font-size:6.4px;color:var(--ink-2);border-top:.5px solid #e2dfd6;padding-top:2px}@media print{.op-sheet{margin:0;padding:0;max-width:none}.op-sheet h2,.op-sheet .hl{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.op-sheet .f{display:block;overflow:hidden;white-space:nowrap}.op-sheet .f .katex{white-space:nowrap}.op-sheet .f.wrap{white-space:normal;overflow:visible}.op-sheet .f.wrap .katex{white-space:normal}@media print{.op-sheet{page:onesheet}}@page onesheet{size:A4;margin:6mm}.op-h{font-size:20px;margin:6px 0 12px;color:var(--text)}/* booklet hub */.op-sl{font-size:14.5px;color:var(--dim);margin:-8px 0 22px}.op-sl b{color:var(--text)}.op-sl a{color:var(--lamp)}.bk-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px}.bk-guide>div{background:var(--desk-2);border:1px solid var(--edge);border-radius:16px;padding:16px 18px}.bk-guide .n{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--navy);color:var(--on-navy);font:700 13px var(--head);margin-bottom:8px}.bk-guide b{display:block;font:600 16px var(--head);color:var(--text)}.bk-guide p{margin:4px 0 0;font-size:14px;color:var(--dim);line-height:1.5}.bk-subj{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr);gap:28px;align-items:start;background:var(--paper);color:var(--ink);border-radius:22px;padding:clamp(18px,3vw,30px);margin:0 0 18px;scroll-margin-top:90px}.bk-prev img{width:100%;height:auto;border-radius:6px;box-shadow:var(--sh1);border:1px solid var(--line);display:block}.bk-main{min-width:0}.bk-main .eyebrow{color:var(--coral-ink)}.bk-main h2{margin:4px 0 4px;font-size:clamp(23px,2.8vw,30px);color:var(--ink)}.bk-src{margin:0 0 14px;font-size:14px;color:var(--ink-2)}.bk-formats{list-style:none;margin:16px 0 10px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.bk-formats a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 12px;text-decoration:none;color:var(--ink)}.bk-formats a:hover{border-color:var(--coral-ink);background:var(--card)}.bk-formats b{font:600 14.5px var(--head)}.bk-formats span{grid-column:1;font-size:12.5px;color:var(--ink-2)}.bk-formats i{grid-row:1/3;grid-column:2;font:500 11px var(--mono);font-style:normal;color:var(--coral-ink);border:1px solid var(--line);border-radius:6px;padding:3px 6px}.bk-main .note a{color:var(--coral-ink)}@media(max-width:820px){.bk-guide{grid-template-columns:minmax(0,1fr)}.bk-subj{grid-template-columns:minmax(0,1fr)}.bk-prev{max-width:150px}.bk-formats{grid-template-columns:minmax(0,1fr)}}.bk-formats{align-items:start}.bk-formats .grp>p{margin:0 0 6px;font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}.bk-formats .grp ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.op-dt{font-size:6.4px}.op-dt th{text-align:left;font-weight:700;border-bottom:.5px solid #16181c}/* booklets hub, lean: 2x2 cards with one PDF row each */.bk-how{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-wrap:wrap;gap:8px 10px}.bk-how li{border:1px solid var(--edge);border-radius:999px;padding:6px 14px;font-size:14px;color:var(--dim);background:var(--desk-2)}.bk-how b{color:var(--text);margin-right:4px}.bk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.bk-grid .bk-subj{grid-template-columns:minmax(0,110px) minmax(0,1fr);gap:18px;margin:0;border:1px solid var(--line);border-top:3px solid var(--frame)}.bk-lab{margin:14px 0 6px;font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}.bk-chips{display:flex;flex-wrap:wrap;gap:6px}.bk-chip{border:1px solid var(--line);border-radius:999px;padding:6px 12px;font:600 13.5px var(--head);text-decoration:none;color:var(--ink)}.bk-chip:hover{border-color:var(--coral-ink);background:var(--card)}.bk-sl{margin:10px 0 0;padding:0;background:none;border:0;box-shadow:none;border-radius:0}.bk-sl summary{font:600 13.5px var(--head);color:var(--coral-ink);justify-content:flex-start;gap:6px}.bk-sl summary:after{content:"+";font-size:16px}.bk-sl[open] summary:after{content:"\2212"}.bk-sl .bk-chips{margin-top:8px}@media(max-width:900px){.bk-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:480px){.bk-grid .bk-subj{grid-template-columns:minmax(0,72px) minmax(0,1fr);gap:12px}}/* Paper 3 practice viewer (tools/pages_paper3_practice.py, static/js/p3-viewer.js). Reuses the practice "paper view"classes (.pvw .pv-pane .pv-bar .pv-head .pv-body .pv-foot .pvsheet .pvq ...) from practice.css. */.p3v{margin-top:6px}.p3v-ttl{margin:0;font:600 13px var(--head);color:var(--dim)}.p3v-ttl b{color:var(--ink);font-weight:800}.p3v-src,.pvsh-foot a{font:600 12.5px var(--head);color:var(--dim);text-decoration:none;white-space:nowrap}.p3v-src:hover,.pvsh-foot a:hover{color:var(--ink);text-decoration:underline}.pvsh-foot a{color:#47536d}.p3v-chips{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;scrollbar-width:thin;padding-bottom:4px;-webkit-overflow-scrolling:touch}.p3v-chip{flex:none}   /* one scrolling row at every width */.p3v-chip{display:inline-flex;align-items:center;gap:6px;font:700 12.5px var(--head);padding:4px 10px 4px 5px;border-radius:999px;border:2px solid var(--lv);background:var(--card);color:var(--ink);text-decoration:none;white-space:nowrap;min-width:0}.p3v-chip i{font:800 11.5px var(--head);font-style:normal;min-width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:var(--lv);color:#fff}.p3v-chip:hover{background:color-mix(in srgb,var(--lv) 10%,var(--card))}.p3v-chip[aria-pressed=true]{background:var(--lv);color:#fff}.p3v-chip[aria-pressed=true] i{background:#fff;color:var(--lv)}.p3v-chip:focus-visible{outline:3px solid var(--focus);outline-offset:2px}:root[data-theme="dark"] .p3v-chip[aria-pressed=true]{color:#0f1420}:root[data-theme="dark"] .p3v-chip i{color:#0f1420}:root[data-theme="dark"] .p3v-chip[aria-pressed=true] i{background:#0f1420;color:var(--lv)}.p3v-print{display:none}/* question and solution text (the markup comes from the ibtuition.sg chapter page) */.p3v .ln{display:flex;align-items:flex-start;gap:12px;margin:0 0 6px;line-height:1.65}.p3v .lc{flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;padding:1px 0}.p3v .lm{flex:0 0 auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:40%;padding-top:2px}.p3v .pl{font-weight:700;margin-right:2px}.p3v .mt,.p3v .mk{display:inline-block;font:700 12px/1.5 var(--head);border-radius:4px;padding:0 6px;white-space:nowrap;background:#f1f3f7;border:1px solid rgba(27,58,107,.12);color:#5a6a7e}.p3v .md{display:block;max-width:100%;overflow-x:auto;overflow-y:hidden;margin:4px 0;padding:2px 0}.p3v .ln.blk{display:block}.p3v .katex-display{margin:.3em 0;overflow-x:auto;overflow-y:hidden}.p3v .lc .mt,.p3v .lc .mk{margin:0 2px}.p3v img{max-width:100%;height:auto;background:#fff;border-radius:4px}.p3v .p3q .ln{font-size:15px}.p3v .p3sol .ln{font-size:14.5px;color:var(--ink);border:1.5px solid var(--band-line);border-left:5px solid var(--lv);border-radius:10px;background:var(--card);padding:8px 14px;margin:0 0 9px}.p3v .p3sol .mk{background:var(--ok-bg);border-color:var(--ok-b);color:var(--ok-t)}.p3v .p3sol .mt{background:var(--hov);border-color:var(--band-line);color:var(--dim)}.p3v .gs-ans{margin:10px 0 4px;background:var(--ok-bg);border:1px solid var(--ok-b);border-radius:8px;padding:9px 14px;color:var(--ok-t)}.p3v .gs-ans__h{font:800 11px var(--head);letter-spacing:.12em;text-transform:uppercase;margin:0 0 4px}.p3v .gs-ans p{margin:0}.p3v .ans1,.p3v .ansl li{font-weight:600;font-size:14.5px;line-height:1.65;overflow-x:auto;overflow-y:hidden;color:var(--ink)}.p3v .ansl{list-style:none;margin:0;padding:0}.p3v .pv-qprev .p3q .ln{font-size:14.5px}.p3v .pvsheet{--ink:#1b2a4a}.p3v .pvq .pvn{min-width:30px}.p3v .pvq .pvb{overflow-x:hidden}@media(max-width:767px){.p3v-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;padding-bottom:4px;margin:0 -2px;-webkit-overflow-scrolling:touch}.p3v-chip{flex:none}.p3v .ln{gap:8px;font-size:15.5px}.p3v .lm{max-width:46%}.pv-top{flex-wrap:wrap}.pvsh-top,.pvsh-title,.pvsh-meta,.pvsh-hint,.pvsh-foot,.pvgrp{padding-left:14px;padding-right:14px}}@media print{.p3v{display:none!important}.p3v-print{display:block;font:600 14px var(--head)}}.p3v .pvsh-title h2{margin:0;font:800 26px/1.15 var(--head);color:#1b2a4a}@media(max-width:767px){.p3v .pvsh-title h2{font-size:21px}}/* Paper 3 guides (tools/pages_paper3.py): option C, a short course in 4 steps, one open at a time */.p3-wrap{max-width:860px}.p3-hero{padding-bottom:30px}.p3-hero h1{font-size:clamp(32px,4.4vw,50px)}.p3-facts{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 26px;font-size:14px;color:var(--dim)}.p3-facts b{display:block;font:800 22px var(--head);letter-spacing:-.02em;color:var(--ink)}.p3-progress{display:flex;align-items:center;gap:12px;margin:26px 0 12px}.p3-prog{flex:1;height:6px;border-radius:3px;background:var(--tint);overflow:hidden}.p3-prog i{display:block;width:0;height:100%;background:var(--lv-f);transition:width .3s}.p3-count{font:600 13px var(--body);color:var(--mute);white-space:nowrap;font-variant-numeric:tabular-nums}.p3-path{display:grid;gap:10px}details.p3s{border-radius:var(--rl);padding:0;scroll-margin-top:90px}details.p3s>summary{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px 18px;cursor:pointer;list-style:none}details.p3s>summary::-webkit-details-marker{display:none}.p3-n{width:40px;height:40px;border-radius:50%;background:var(--tint);color:var(--dim);font:800 16px/40px var(--head);text-align:center}details.p3s[open] .p3-n{background:linear-gradient(var(--btn1),var(--btn2));color:var(--on-navy)}details.p3s.done .p3-n{background:var(--lv-f);color:#fff;font-size:0}details.p3s.done .p3-n:after{content:"✓";font-size:18px}.p3-st b,.p3-st h2{display:block;margin:0;font:700 17px var(--head);letter-spacing:-.01em;color:var(--ink)}.p3-st small{display:block;font-size:13.5px;color:var(--mute);line-height:1.4}.p3-min{font:600 12.5px var(--body);color:var(--mute);white-space:nowrap}.p3-body{padding:0 18px 20px 72px;font-size:16px}@media(max-width:640px){.p3-body{padding:0 16px 18px}.p3-min{display:none}details.p3s>summary{grid-template-columns:40px minmax(0,1fr)}}.p3-body>p,.p3-body>h3,.p3-body>ol,.p3-body>div{margin:0 0 14px}.p3-body h3{font-size:17px;margin-top:22px}.p3-next{margin:18px 0 0!important}.p3-arc{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 16px}@media(max-width:640px){.p3-arc{grid-template-columns:1fr}}.p3-arc li{border-top:3px solid var(--gold);padding-top:8px;font-size:14px;color:var(--dim)}.p3-arc b{display:block;font:700 15px var(--head);color:var(--ink)}.p3-types{display:grid;gap:6px}.p3-types>details{border-radius:var(--rs);padding:0;box-shadow:none}.p3-types>details>summary{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:12px 14px;cursor:pointer}.p3-types>details>summary b,.p3-types>details>summary h3{margin:0;font:700 15.5px var(--head)}.p3-types>details>summary small{color:var(--mute);font-size:13px;white-space:nowrap}.p3-tb{padding:0 14px 14px;font-size:15px}.p3-tb h4{font:600 12px var(--body);text-transform:uppercase;letter-spacing:.1em;color:var(--mute);margin:14px 0 6px}.p3-tb ul,.p3-tb ol{margin:0;padding-left:20px;display:grid;gap:5px}.p3-bad li::marker{color:var(--lv-x)}.p3-gdc{margin-top:12px;background:var(--tint);border-radius:10px;padding:10px 12px}.p3-more{margin-top:12px;font-weight:600}.p3-wt{font-size:17px}.p3-tip{font-size:14px;color:var(--dim);background:var(--tint);border-radius:10px;padding:10px 12px}.p3-wi{display:grid;gap:10px}.p3-part{border:1px solid var(--line);border-radius:var(--rs);padding:12px 14px;background:var(--card)}.p3-part>p{margin:0 0 6px}.p3-mk{color:var(--mute);font-size:14px;white-space:nowrap}.p3-part details{box-shadow:none;border:0;background:none;padding:0}.p3-part summary{font-weight:600;color:var(--lamp);cursor:pointer;font-size:14.5px}.p3-sol{margin:10px 0 0;padding-left:20px;display:grid;gap:8px}.p3-sol li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.p3-sol .p3-w{min-width:0;max-width:100%;overflow-x:auto}.p3-m{font:700 12px var(--body);font-style:normal;color:var(--lv-c);border:1px solid currentColor;border-radius:5px;padding:1px 6px}.p3-sol small{flex-basis:100%;color:var(--dim);font-size:13.5px}.p3-time{list-style:none;padding:0;display:grid;gap:10px}.p3-time li{display:grid;grid-template-columns:78px minmax(0,1fr);gap:12px;font-size:15px}.p3-time b{font:700 14px var(--body);color:var(--lamp);font-variant-numeric:tabular-nums}.p3-time strong{font-weight:600;color:var(--ink)}.p3-after .faqwrap{margin-bottom:28px}.p3-cta{padding:20px;border-radius:var(--rl);background:var(--tint);display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between}.p3-cta b{font:700 17px var(--head)}.p3-cta p{margin:2px 0 0;font-size:14px;color:var(--dim);max-width:52ch}.p3-links{margin-top:18px;font-size:14px;color:var(--mute)}.katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0}@media(prefers-reduced-motion:reduce){.p3-prog i{transition:none}}details.p3s>summary:after{display:none}.p3-path,.p3-types,.p3-wi{grid-template-columns:minmax(0,1fr)}.p3-path>*,.p3-types>*,.p3-wi>*,.p3-body{min-width:0}.p3-side{display:none}@media(min-width:1180px){.p3-wrap{max-width:1140px}.p3-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:28px;align-items:start}.p3-hero .p3-prog-m{display:none}.p3-hero .p3-lede,.p3-hero .lede,.p3-facts{max-width:760px}.p3-side{display:flex;flex-direction:column;gap:12px;position:sticky;top:96px;padding:18px;border:1px solid var(--line);border-top:3px solid var(--navy,#0b2a5b);border-radius:var(--rl)}.p3-side .p3-progress{margin:0}.p3-sl{font-size:14px;font-weight:600}}/* web practice questions (/library/practice/, static/js/practice.js) */.pq-empty,.pq-note{color:var(--dim)}.pq-back{margin:0 0 12px;font-size:14px}.pq-back a{color:var(--dim);text-decoration:none}.pq-back a:hover{color:var(--text)}.pq-lock{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;align-items:center;background:linear-gradient(160deg,var(--gold-t),var(--gold-t));border:1px solid var(--gold-b);border-radius:16px;padding:14px 16px;margin:0 0 16px}.pq-lock b{display:block;color:var(--text);font:700 15.5px var(--head)}.pq-lock span{color:var(--dim);font-size:14px}.pq-lock small{grid-column:1/-1;color:var(--dim);font-size:12.5px}@media(max-width:640px){.pq-lock{grid-template-columns:minmax(0,1fr)}.pq-lock .btn{justify-self:start}}.pq-topics{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}.pq-topic{background:var(--desk-3);border:1px solid var(--edge);border-radius:16px;padding:14px;min-width:0}.pq-topic h3{font-size:17px;margin:0 0 10px}.pq-lvls{display:grid;gap:8px}.pq-lvl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 10px;align-items:center;background:var(--desk-2);border:1px solid var(--edge);border-radius:12px;padding:10px 12px;text-decoration:none;color:var(--text)}.pq-lvl:hover{border-color:var(--lamp)}.pq-lvl b{font:700 14.5px var(--head)}.pq-lvl span{color:var(--dim);font-size:13px;text-align:right}.pq-lvl small{grid-column:2;text-align:right;color:var(--dim);font-size:12px}.pq-bar{display:block;height:6px;border-radius:99px;background:var(--hov);overflow:hidden;grid-column:1/-1}.pq-bar>i{display:block;height:100%;background:var(--mint)}.pq-levels{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 14px}.pq-lv{display:grid;gap:2px;background:var(--desk-3);border:1px solid var(--edge);border-radius:14px;padding:12px 14px;text-decoration:none;color:var(--text)}.pq-lv small{font:500 11px var(--mono);color:var(--dim)}.pq-lv b{font:700 16px var(--head)}.pq-lv span{color:var(--dim);font-size:13px}.pq-lv[aria-current]{border-color:var(--lamp);background:var(--gold-t)}.pq-lv[aria-current] b{color:var(--lamp)}.pq-lv.off{opacity:.55}.pq-dl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 14px}.pq-dl small{color:var(--dim);font-size:13px}.pq-prog{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;background:var(--desk-2);border:1px solid var(--edge);border-radius:14px;padding:12px 16px;margin:0 0 14px;font-size:14px;color:var(--dim)}.pq-prog b{color:var(--text)}.pq-prog .pq-bar{flex:1 1 160px;min-width:120px;height:8px}.pq-filters{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 16px;align-items:center}.pq-fg{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.pq-fg>span{font:500 11px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}.pq-fb{background:var(--desk-3);border:1px solid var(--edge);border-radius:999px;padding:5px 11px;font:500 13px var(--body);color:var(--dim);cursor:pointer}.pq-fb[aria-pressed="true"]{background:var(--navy);color:var(--on-navy);border-color:var(--navy);font-weight:700}.pq-grp{font-size:19px;margin:24px 0 10px}.pq-grp small{font:500 12px var(--mono);color:var(--dim);letter-spacing:0}.pq-card{background:var(--paper);color:var(--ink);border-radius:18px;margin:0 0 14px;overflow:hidden;border:1px solid transparent;min-width:0}.pq-card.got{border-color:var(--ok-b)}.pq-card.review{border-color:var(--gold-b)}.pq-ch{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:14px 18px 0}.pq-ch h3{font-size:17px;margin:0 8px 0 0;color:var(--ink)}.pq-ch h3 small{font:500 13px var(--body);color:var(--ink-2)}.pq-chip{font:500 12px var(--mono);border-radius:999px;padding:3px 9px;border:1px solid var(--line);color:var(--ink-2);background:var(--card);white-space:nowrap}.pq-chip.Easy{color:var(--ok-t);border-color:var(--ok-b);background:var(--ok-bg)}.pq-chip.Medium{color:var(--warn-t);border-color:var(--warn-b);background:var(--warn-bg)}.pq-chip.Hard{color:var(--bad-t);border-color:var(--bad-b);background:var(--bad-bg)}.pq-chip.free{color:var(--ok-t);border-color:var(--ok-b)}.pq-chip.st{margin-left:auto}.pq-chip.st.got{background:var(--ok-bg);color:var(--ok-t);border-color:var(--ok-b)}.pq-chip.st.review{background:var(--bad-bg);color:var(--bad-t);border-color:var(--bad-b)}.pq-q{padding:6px 18px 4px;font-size:16px;line-height:1.65;overflow-wrap:break-word}.pq-q p,.pq-step p{margin:.45em 0}.pq-parts{list-style:lower-alpha;margin:.4em 0;padding-left:1.7em}.pq-parts li{margin:.35em 0}.pq-parts li.pq-li{list-style:none;margin-left:-1.7em}.pq-li>b:first-child{display:inline-block;min-width:1.7em}.pq-pm{float:right;font:500 13px var(--mono);color:var(--ink-2);margin-left:8px}.pq-fig{display:block;max-width:min(100%,520px);height:auto;margin:10px auto}.pq-t{border-collapse:collapse;margin:8px 0;font-size:15px}.pq-t td{border:1px solid var(--line);padding:4px 10px;text-align:center}.pq-card .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0}.pq-acts{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 16px}.pq-b{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:8px 14px;font:600 14px var(--body);cursor:pointer}.pq-b.pri{background:var(--ink);color:var(--on-navy);border-color:var(--ink)}.pq-b.timer.on{background:var(--bad-bg);border-color:var(--bad-b);color:var(--bad-t)}.pq-b.got{background:var(--ok-bg);border-color:var(--ok-b);color:var(--ok-t)}.pq-b.rev{background:var(--bad-bg);border-color:var(--bad-b);color:var(--bad-t)}.pq-ms{border-top:1px dashed var(--line);background:var(--tint);padding:12px 18px 6px}.pq-ms h4{font:600 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:4px 0 8px;display:flex;justify-content:space-between;gap:10px}.pq-ms h4 em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--coral-ink)}.pq-ms .more{margin:8px 0 4px}.pq-steps{display:grid;gap:2px;grid-template-columns:minmax(0,1fr)}.pq-step{padding:6px 10px;border-left:3px solid var(--line);border-radius:0 8px 8px 0;line-height:1.6;min-width:0;overflow-wrap:break-word}.pq-step[hidden]{display:none}.pq-step.new{animation:pqin .35s ease-out}@keyframes pqin{from{background:var(--hl)}to{background:transparent}}@media (prefers-reduced-motion:reduce){.pq-step.new{animation:none}}.pq-stp{font-weight:700;color:#24406b;margin-right:4px}.pq-mks{display:inline-flex;gap:4px;margin-left:6px;vertical-align:middle;flex-wrap:wrap}.pq-mk{font:600 12px var(--mono);border:1.5px solid var(--line3);background:var(--card);color:var(--ink-2);border-radius:7px;padding:2px 7px;cursor:pointer}.pq-mk.on{background:var(--mint);border-color:var(--mint);color:var(--on-navy)}.pq-mk[data-m="AG"]{cursor:default;border-style:dashed;opacity:.8}.pq-score{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 18px 14px;background:var(--tint);border-top:1px solid var(--line);font-size:14px;color:var(--ink-2)}.pq-score[hidden],.pq-ms[hidden]{display:none}.pq-score .big{font:700 18px var(--head);color:var(--ink)}.pq-score .sp{flex:1}.pq-stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--card)}.pq-stepper button{border:0;background:none;width:34px;height:32px;font-size:18px;cursor:pointer;color:var(--ink)}.pq-stepper .sc{min-width:28px;text-align:center;font:700 15px var(--head);color:var(--ink)}@media(max-width:700px){.pq-levels{grid-template-columns:repeat(2,minmax(0,1fr))}.pq-ch h3{width:100%}.pq-chip.st{margin-left:0}}.pq-q blockquote,.pq-step blockquote{margin:.5em 0;padding:6px 12px;border-left:3px solid var(--line);color:var(--ink-2)}/* one difficulty scale (course page, topic page, switches, question sheet) */.pq-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;justify-content:space-between;background:var(--desk-2);border:1px solid var(--edge);border-radius:14px;padding:10px 16px;margin:0 0 14px;font-size:14.5px;color:var(--dim)}.pq-status b{color:var(--text)}.pq-status.own{justify-content:flex-start;border-color:var(--ok-b)}.pq-status.own b{color:var(--ok-t)}.pq-sum{color:var(--dim);font-size:14px;margin:0 0 10px}.pq-sum b{color:var(--text)}.pq-h2{font-size:20px;margin:24px 0 10px}.pq-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.pq-tw{border:1px solid var(--edge);border-radius:16px;overflow-x:auto;background:var(--desk-3)}.pq-tbl{width:100%;border-collapse:collapse;font-size:14px}.pq-tbl th{text-align:left;font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--dim);padding:10px 12px;background:var(--desk-2);border-bottom:1px solid var(--edge);white-space:nowrap}.pq-tbl th small{display:none}.pq-tbl td{padding:9px 10px;border-bottom:1px solid var(--edge);vertical-align:middle}.pq-tbl tr:last-child td{border-bottom:0}.pq-tbl tbody tr:hover{background:var(--gold-t)}.pq-tn{display:block;font:700 15px var(--head);color:var(--text);text-decoration:none}.pq-tn:hover{color:var(--lamp)}.pq-tbl td>small{display:block;color:var(--dim);font-size:12px}.pq-go{text-align:right;white-space:nowrap}.pq-go .btn{padding:6px 14px;font-size:13.5px}.pq-pdf{border-radius:999px;padding:5px 12px;font:500 13px var(--body);border:1px solid var(--line2);background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap}.pq-pdf:hover{border-color:var(--coral-ink);color:var(--coral-ink)}.pq-pdf.free{border-color:var(--mint);color:var(--ok-t)}.pq-pdf.off{cursor:pointer;color:var(--mute);background:var(--tint);border-style:dashed}.pq-pdf[hidden]{display:none}.pq-fr{display:inline!important;margin-left:6px;color:var(--ok-t)!important;font:500 11px var(--mono)}.pq-none{color:var(--dim)}.pq-segs{display:grid;grid-template-columns:repeat(4,minmax(38px,1fr));gap:4px;min-width:150px}.pq-seg{position:relative;display:grid;justify-items:center;gap:0;background:var(--desk-2);border:1px solid var(--edge);border-radius:8px;padding:3px 2px 6px;overflow:hidden}.pq-seg b{font:700 14px var(--head);color:var(--text)}.pq-seg small{font:500 10px var(--mono);color:var(--dim)}.pq-seg>i{position:absolute;left:0;bottom:0;height:3px;background:var(--mint)}.pq-seg.none{opacity:.45}.pq-dn{display:block;margin-top:4px;color:var(--dim);font-size:12px}.pq-learn{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.pq-lc{display:grid;gap:6px;align-content:start;background:var(--paper);color:var(--ink);border-radius:16px;padding:14px 16px}.pq-lc b{font:700 16px var(--head)}.pq-lc span{color:var(--ink-2);font-size:14px}.pq-lc div{margin-top:4px}.pq-grid{display:grid;grid-template-columns:minmax(190px,1.15fr) repeat(2,minmax(0,1fr));gap:10px}.pq-gh{font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--dim);padding:0 4px}.pq-lh{display:grid;gap:3px;align-content:start;background:var(--desk-3);border:1px solid var(--edge);border-radius:14px;padding:12px 14px}.pq-lh b{font:700 16px var(--head);color:var(--lamp)}.pq-lh b small{font:500 11px var(--mono);color:var(--dim);margin-right:4px}.pq-lh span{color:var(--dim);font-size:13px;line-height:1.45}.pq-cell{display:grid;gap:5px;align-content:start;background:var(--paper);color:var(--ink);border-radius:14px;padding:12px 14px;min-width:0}.pq-cp{display:none;font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2)}.pq-cell b{font:700 15px var(--head)}.pq-cell b small{font:500 12.5px var(--body);color:var(--ink-2)}.pq-cell .pq-bar{background:var(--tint)}.pq-cell .pq-dn{color:var(--ink-2);margin:0}.pq-no{color:var(--mute);font-size:14px}.pq-cell:has(.pq-no){background:var(--desk-2);border:1px dashed var(--edge)}.pq-cell:has(.pq-no) .pq-no{color:var(--dim)}.pq-cb{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:4px}.pq-cell .btn.ghost{color:var(--ink);border-color:var(--line2)}.pq-cell .btn{padding:6px 14px;font-size:13.5px}.pq-sheetl{color:var(--coral-ink);font-size:13.5px;font-weight:600;text-decoration:none}.pq-sheetl:hover{text-decoration:underline}.pq-lk{font-size:13.5px;color:var(--ink-2)}.pq-papers{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.pq-pp{border:1px solid var(--edge);background:var(--desk-3);border-radius:999px;padding:6px 14px;font:500 13.5px var(--body);color:var(--dim);text-decoration:none}.pq-pp small{font:500 11px var(--mono);margin-left:4px}.pq-pp.off{opacity:.55}.pq-pp[aria-current]{background:var(--navy);color:var(--on-navy);border-color:var(--navy);font-weight:700}.pq-lv span{font-size:12.5px}.pq-sbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 14px}.pq-sbar small{color:var(--dim)}.pq-sheet{background:#fff;color:#000;border-radius:14px;padding:26px 30px;margin:0 0 20px}.pq-sheet header{border-bottom:2px solid #000;padding-bottom:8px;margin-bottom:14px}.pq-sl{font:600 14px var(--head);margin:0}.pq-ss{font-size:13px;color:#444;margin:3px 0 0}.pq-sqs{list-style:none;margin:0;padding:0}.pq-sq{display:grid;grid-template-columns:2.2em minmax(0,1fr) auto;gap:0 6px;padding:10px 0;border-bottom:1px solid #ddd;break-inside:avoid;page-break-inside:avoid}.pq-sn{font-weight:700}.pq-sm{font:600 13px var(--mono);white-space:nowrap}.pq-sb{min-width:0;font-size:16px;line-height:1.6;overflow-wrap:break-word}.pq-sb p{margin:.4em 0}.pq-sheet img{max-width:100%;height:auto}.pq-sheet .katex-display{overflow-x:auto;overflow-y:hidden}@media(max-width:900px){.pq-learn{grid-template-columns:minmax(0,1fr)}.pq-grid{grid-template-columns:minmax(0,1fr)}.pq-gh{display:none}.pq-lh{margin-top:8px}.pq-cp{display:block}.pq-tbl,.pq-tbl tbody,.pq-tbl tr,.pq-tbl td{display:block;width:100%}.pq-tbl thead{display:none}.pq-tbl tr{padding:10px 12px;border-bottom:1px solid var(--edge);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 12px}.pq-tbl td{padding:0;border:0}.pq-tbl td:first-child,.pq-tbl td[data-l="Practice"]{grid-column:1/-1}.pq-tbl td[data-l]:not(:first-child)::before{content:attr(data-l);display:block;font:500 10.5px var(--mono);text-transform:uppercase;color:var(--dim);margin-bottom:3px}.pq-go{grid-column:1/-1;text-align:left}.pq-segs{min-width:0}.pq-sheet{padding:16px 14px}}@media print{@page{margin:16mm}html.pq-sheetpage,html.pq-sheetpage body{background:#fff!important;color:#000!important}.pq-noprint,.skip,header.site,footer.site,.crumbs,.ws-side,.ws-tree,.ws-mob,.bk-fab,.bk-panel,.pq-hero,.pq-levels,.pq-papers,.pq-back,.srch,#pqMsg{display:none!important}.ws{display:block!important}.ws-main,.bk-open .ws-main{margin:0!important;max-width:none!important}.ws-main .wrap,.pq .wrap,.section{max-width:none!important;padding:0!important;margin:0!important}.pq-sheet{background:#fff;color:#000;border-radius:0;padding:0;margin:0}.pq-sheet *{color:#000!important}.pq-sq{break-inside:avoid;page-break-inside:avoid}}/* branded question-set PDF button (topic grid + questions view) */.pq-dlb{font-size:13px;padding:5px 12px}.pq-dlb:disabled{opacity:.6;cursor:progress}.pq-dl .pq-dlb{font-size:14px;padding:7px 14px}#pqMsg a{color:inherit;font-weight:600;text-decoration:underline}/* Levels are bars, not colours (owner, 2026-11-07; levelbars.css, markup lvBars() in practice.js): one navy accent for every level, the bars and the name tell them apart. (--navy flips to a light colour in dark mode.) */[data-t]{--lv:var(--navy)}.pq-lh[data-t] b{color:var(--lv)}.pq-lh[data-t]{border-left:4px solid var(--lv)}.pq-lv[data-t] b{color:var(--lv)}.pq-lv[data-t][aria-current]{box-shadow:inset 0 0 0 2px var(--lv)}.pq-seg[data-t]>i{background:var(--lv)}.pq-lv small{display:inline-flex;align-items:center;gap:6px}.pq-seg small{display:inline-flex;align-items:center;gap:3px;min-height:14px}.pq-lvi .lvbars{flex:none}#pqApp{padding-bottom:72px}   /* room for the floating booklet button *//* one-page topic view (2026-10-20): resources row, level list in the sidebar, paper toggle + toolbar, then the questions */.pq-hero.pq-compact{padding-block:18px 0}.pq-hero.pq-compact .ac-hero,.pq-hero.pq-compact{padding-bottom:0}.pq-hero .lede:empty{display:none}.pq-hero.pq-compact h1{font-size:clamp(28px,3.6vw,42px);margin-bottom:.2em}.pq-hero.pq-compact .eyebrow{margin-bottom:8px}.pq-hero.pq-compact+section.section{padding-top:14px}.pq-seglv{list-style:none;margin:0;padding:0}.pq-lvi.off{opacity:.55}.pq-res{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px}.pq-resl{font:600 12px var(--body);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-2);margin-right:4px}.pq-res .pq-pdf{font-size:14px;padding:8px 14px;border-radius:10px}.pq-lvbar{display:none}.pq-tb{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 16px;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:var(--rs);box-shadow:var(--sh1)}.pq-pap{display:flex;padding:3px;background:var(--tint);border-radius:10px;gap:2px}.pq-pb{padding:7px 14px;border-radius:8px;font:600 14px var(--body);color:var(--ink-2);text-decoration:none;white-space:nowrap}.pq-pb[aria-current]{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(27,42,74,.14),0 0 0 1px var(--line)}.pq-pb.off{opacity:.55}.pq-ph{font-size:13px;color:var(--ink-2)}.pq-tb .pq-dlb{font-size:14px;padding:8px 14px}.pq-tsp{flex:1 1 0}.pq-tp{font-size:13.5px;color:var(--ink-2);white-space:nowrap}.pq-tp b{color:var(--ink)}.pq-tb .pq-bar{width:90px;height:6px;flex:none;grid-column:auto}.pq-filt{position:relative;background:none;border:0;box-shadow:none;padding:0;margin:0}.pq-filt summary{display:inline-flex;font:600 13.5px var(--body);letter-spacing:0;padding:7px 12px;border-radius:8px;box-shadow:0 0 0 1px var(--line2);background:var(--card);color:var(--ink)}.pq-filt summary:after{content:"▾";margin-left:6px;color:var(--ink-2);font-size:12px}.pq-filt[open] summary:after{content:"▴"}.pq-filt .pq-filters{position:absolute;right:0;top:calc(100% + 6px);z-index:20;width:min(560px,86vw);margin:0;padding:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--rs);box-shadow:var(--sh2)}.pq-none-here{display:grid;gap:10px;justify-items:start;color:var(--ink-2)}.pq-none-here p{margin:0}@media(max-width:899px){.pq-lvbar{display:block;position:sticky;top:calc(66px + env(safe-area-inset-top,0px) + 54px);z-index:25;margin:0 -16px 12px;padding:8px 16px;background:color-mix(in srgb,var(--bg) 97%,transparent);border-bottom:1px solid var(--line)}.pq-seglv{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:3px;background:var(--tint);border-radius:10px}.pq-seglv .pq-lvi{display:grid;gap:0;justify-items:center;text-align:center;padding:6px 2px;border-radius:8px;text-decoration:none;color:var(--ink-2)}.pq-seglv .pq-lvi b{font:700 12.5px var(--head);color:var(--ink)}.pq-seglv .pq-lvi span{font-size:11px;color:var(--ink-2)}.pq-seglv .pq-lvi[aria-current]{background:var(--card);box-shadow:0 1px 2px rgba(27,42,74,.14),0 0 0 1px var(--line)}.pq-tsp{display:none}.pq-ph{display:none}.pq-tp{flex:1 1 100%}.pq-filt .pq-filters{position:static;width:auto;margin-top:8px}.pq-filt{flex:1 1 100%}}/* CLS fix (lean sweep): reserve the table's height while topics load, so the footer never jumps into view. */.pq-skel{min-height:1500px}.pq-skel i{display:block;height:56px;margin:0 0 10px;border-radius:12px;background:linear-gradient(90deg,var(--desk-2) 25%,var(--tint) 50%,var(--desk-2) 75%);background-size:200% 100%;animation:pqsk 1.4s linear infinite}@keyframes pqsk{to{background-position:-200% 0}}@media(max-width:700px){.pq-skel i{height:150px}.pq-skel i:nth-of-type(n+7){display:none}}@media(prefers-reduced-motion:reduce){.pq-skel i{animation:none}}.pq-freeb{display:inline-block;margin-left:6px;font:700 10.5px var(--body);letter-spacing:.06em;text-transform:uppercase;color:var(--ok-t,#2f7d4f);background:var(--ok-bg,#eaf6ee);border:1px solid var(--ok-b,#bfe0cb);border-radius:999px;padding:1px 8px;vertical-align:middle}@media(min-width:701px){.pq-tbl th small{display:block;text-transform:none;letter-spacing:0;font-size:10px;margin-top:2px}}/* ---- paper view (2026-10-22, owner-approved "Option A"): the set as an A4-style sheet on the left, the selected question'smarkscheme on the right. Panels scroll on their own and fill the viewport under the header; draggable divider; under 768px two tabs. */html.pq-split .pq-hero,html.pq-split .crumbs{display:none}html.pq-split .ws-main .wrap,html.pq-split .pq .wrap{max-width:none;padding:0}html.pq-split section.section.pq{padding:0}html.pq-split #pqApp{padding-bottom:0}html.pq-split #pqMsg{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:80;max-width:min(560px,92vw);margin:0;box-shadow:var(--sh2)}.pvw{--split:55%;--lv:var(--navy);display:grid;grid-template-columns:minmax(0,var(--split)) 12px minmax(0,1fr);padding:10px 12px 12px;box-sizing:border-box;height:calc(100dvh - 70px);min-height:420px}.pv-pane{min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--paper);border:2px solid var(--frame);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgba(27,42,74,.06),0 8px 22px rgba(27,42,74,.08)}.pv-div{cursor:col-resize;position:relative;touch-action:none}.pv-div::after{content:"";position:absolute;left:4px;top:50%;width:4px;height:46px;margin-top:-23px;border-radius:3px;background:var(--line3)}.pv-div:hover::after,.pv-div:focus-visible::after,.pvw.drag .pv-div::after{background:var(--lv)}.pvw.drag{cursor:col-resize;user-select:none}.pv-tabs{display:none}.pv-bar{flex:none;background:var(--band);border-bottom:3px solid var(--frame);padding:10px 12px;display:flex;flex-direction:column;gap:9px;box-shadow:inset 0 4px 0 var(--lv)}.pv-r,.pv-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.pv-top{justify-content:space-between;margin-top:2px}.pv-back{font:600 12.5px var(--head);color:var(--dim);text-decoration:none}.pv-back:hover{color:var(--text)}.pv-bar .pq-res{margin:0;gap:6px}.pv-bar .pq-resl{display:none}.pv-bar .pq-res .pq-pdf{font-size:12.5px;padding:5px 10px;border-radius:9px}.pv-seg{display:inline-flex;border:1.5px solid var(--frame);border-radius:10px;overflow:hidden;background:var(--card)}.pv-seg button{font:700 13px var(--head);padding:7px 13px;border:0;background:transparent;color:var(--ink);cursor:pointer}.pv-seg button+button{border-left:1.5px solid var(--frame)}.pv-seg button[aria-pressed=true]{background:var(--frame);color:var(--frame-ink)}.pv-seg small{font:500 11px var(--head);opacity:.75;margin-left:4px}.pv-chip{display:inline-flex;align-items:center;gap:7px;font:700 13px var(--head);padding:6px 11px 6px 8px;border-radius:999px;border:2px solid var(--lv);background:var(--card);color:var(--ink);cursor:pointer}.pv-chip .lvbars{color:inherit}.pv-chip .lvbars i:not(.on){background:currentColor;opacity:.3}.pv-chip small{font:500 11.5px var(--head);color:var(--dim)}.pv-chip.off{opacity:.55}.pv-chip[aria-pressed=true]{background:var(--lv);color:#fff}.pv-chip[aria-pressed=true] small{color:#fff;opacity:.9}.pv-btn{display:inline-flex;align-items:center;gap:6px;font:700 13px var(--head);padding:7px 12px;border-radius:10px;border:1.5px solid var(--frame);background:var(--card);color:var(--ink);cursor:pointer;text-decoration:none;white-space:nowrap}.pv-btn:hover:not(:disabled){background:var(--frame);color:var(--frame-ink)}.pv-btn svg{width:15px;height:15px}.pv-btn.pri{background:var(--frame);color:var(--frame-ink)}.pv-btn:disabled{opacity:.45;cursor:default}.pv-btn.pq-dlb:disabled{opacity:.6;cursor:progress}.pv-btn[aria-pressed=true]{background:var(--lv);border-color:var(--lv);color:#fff}.pv-btn.ok{background:var(--ok-bg);border-color:var(--ok-b);color:var(--ok-t)}.pv-btn.bad{background:var(--bad-bg);border-color:var(--bad-b);color:var(--bad-t)}.pv-btn.pv-timer.on{background:var(--bad-bg);border-color:var(--bad-b);color:var(--bad-t)}.pv-grow{flex:1}.pv-count{font:600 12.5px var(--head);color:var(--dim)}.pv-count b{color:var(--ink)}.pv-bar .pq-filt{position:relative}.pv-bar .pq-filt .pq-filters{right:auto;left:0}.pv-head{flex:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;background:var(--band);border-bottom:3px solid var(--frame);box-shadow:inset 0 4px 0 var(--lv)}.pv-head h2{margin:0;font:800 15px var(--head);color:var(--ink);flex:1;min-width:120px}.pv-head h2 small{display:block;font:500 12px var(--head);color:var(--dim);margin-top:2px}.pv-body{flex:1;min-height:0;overflow:auto;padding:16px;overscroll-behavior:contain}.pv-foot{flex:none;display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:3px solid var(--frame);background:var(--band)}.pv-mid{flex:1;text-align:center;font:700 12.5px var(--head);color:var(--dim)}.pv-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.pvn{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 6px;border-radius:9px;background:var(--lv);color:#fff;font:800 14px var(--head)}.pvmk{display:inline-block;font:700 12px var(--head);padding:2px 9px;border-radius:999px;background:var(--hov);color:var(--ink);white-space:nowrap}.pvsub{display:inline-block;font:600 11.5px var(--head);padding:2px 9px;border-radius:999px;border:1.5px solid var(--band-line);background:var(--card);color:var(--dim)}.pvsub.st.got{background:var(--ok-bg);border-color:var(--ok-b);color:var(--ok-t)}.pvsub.st.review{background:var(--bad-bg);border-color:var(--bad-b);color:var(--bad-t)}.pvms{margin-top:12px}.pvstep{border:1.5px solid var(--band-line);border-left:5px solid var(--lv);border-radius:10px;background:var(--card);padding:6px 14px;margin:0 0 9px;color:var(--ink);font-size:14.5px;line-height:1.55}.pvstep p{margin:.45em 0}.pvstep .pq-stp{color:var(--ink)}.pvhide{border:2px dashed var(--line3);border-radius:12px;padding:22px 16px;text-align:center;color:var(--dim);font:500 14px var(--head);background:var(--desk-2);margin-top:12px}.pvhide .pv-btn{margin-top:10px}.pvempty{padding:34px 18px;text-align:center;color:var(--dim);font:500 14.5px/1.5 var(--head)}.pvempty svg{width:42px;height:42px;color:var(--lv);margin-bottom:8px}.pvscore{font:700 12.5px var(--head);color:var(--dim);margin:2px 0 8px}.pvscore b{color:var(--lv-f)}.pv-rate{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:4px 0 12px;font-size:14px;color:var(--ink-2)}.pv-rate .pq-stepper{background:var(--card)}.pvw .pq-mk.on{background:var(--lv-f);border-color:var(--lv-f);color:#fff}.pv-allq{display:none}.pv-qprev{display:none;margin:0 0 12px;padding:0;font-size:14.5px;color:var(--ink)}.pv-qprev summary{font:700 13px var(--head);cursor:pointer}.pv-qprev .pq-fig{max-width:100%}/* the paper: always white, even in dark mode */.pvsheetwrap{background:var(--tint);padding:18px 14px 28px}.pvsheet{--lv:#1b2a4a;--ink:#1b2a4a;--text:#1b2a4a;--ink-2:#47536d;--dim:#47536d;--line:#ebebeb;--card:#fff;--tint:#f5f5f5;--paper:#fff;background:#fff;color:#1b2a4a;max-width:780px;margin:0 auto;border:1px solid #c8d0e0;border-radius:3px;box-shadow:0 2px 3px rgba(0,0,0,.12),0 12px 30px rgba(0,0,0,.18);overflow:hidden;font-size:15px;line-height:1.55}.pvsh-top{display:flex;justify-content:space-between;align-items:center;background:#1b2a4a;color:#fff;padding:9px 30px;font:700 12px var(--head);letter-spacing:.06em;text-transform:uppercase}.pvsh-top em{font-style:normal;color:#f1a80d}.pvsh-title{padding:20px 30px 14px;border-bottom:5px solid var(--lv)}.pvsh-title h1{margin:0;font:800 26px/1.15 var(--head);color:#1b2a4a}.pvsh-title p{margin:6px 0 0;font:600 14px var(--head);color:#47536d}.pvsh-title p b{color:var(--lv)}.pvsh-meta{display:flex;gap:16px;flex-wrap:wrap;padding:8px 30px;background:#f2f5fa;border-bottom:1px solid #dfe5ef;font:600 12.5px var(--head);color:#47536d}.pvsh-hint{padding:8px 30px;background:#fff8e8;border-bottom:1px solid #f0d293;color:#8a5a00;font:600 12.5px var(--head);display:flex;gap:8px;align-items:center}.pvsh-hint svg{width:16px;height:16px;flex:none}.pvgrp{margin:0;padding:10px 30px 6px;font:700 12px var(--head);letter-spacing:.06em;text-transform:uppercase;color:#47536d;background:#fafbfd;border-bottom:1px solid #e6eaf2}.pvq{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:4px 12px;padding:14px 30px 14px 26px;border-bottom:1px solid #e6eaf2;border-left:4px solid transparent;cursor:pointer;position:relative}.pvq:hover{background:color-mix(in srgb,var(--lv) 6%,#fff)}.pvq:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}.pvq.sel{background:color-mix(in srgb,var(--lv) 12%,#fff);border-left-color:var(--lv)}.pvq .pvn{align-self:start;margin-top:2px}.pvb{min-width:0;overflow-wrap:anywhere}.pvb p{margin:.2em 0 .5em}.pvb .pvt{font:700 12px var(--head);letter-spacing:.04em;text-transform:uppercase;color:#6b7690;margin:.1em 0 .3em}.pvm{font:700 12.5px var(--head);color:#47536d;white-space:nowrap;padding-top:6px}.pvst{font-style:normal;font-weight:800}.pvst.got{color:#2f7d4f}.pvst.review{color:#b3261e}.pvb .pq-fig{background:#fff}.pvb .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0}.pvsh-foot{padding:12px 30px 12px;font:600 11.5px var(--head);color:#6b7690;display:flex;justify-content:space-between}.pvsheetwrap .pq-lock{max-width:780px;margin:16px auto 0}.pvsheetwrap .pq-none-here{max-width:780px;margin:0 auto}:root[data-theme="dark"] .pv-chip[aria-pressed=true],:root[data-theme="dark"] .pv-btn[aria-pressed=true]{color:#0f1420}:root[data-theme="dark"] .pv-chip[aria-pressed=true] small{color:#0f1420}:root[data-theme="dark"] .pvn{color:#0f1420}:root[data-theme="dark"] .pvsheet .pvn{color:#fff}:root[data-theme="dark"] .pv-bar,:root[data-theme="dark"] .pv-head{box-shadow:inset 0 4px 0 var(--frame)}:root[data-theme="dark"] .pvw .pq-mk.on{color:#0f1420}@media(max-width:767px){.pvw{display:flex;flex-direction:column;padding:8px;gap:8px}.pv-div{display:none}.pv-tabs{display:flex;gap:4px;background:var(--band);border:2px solid var(--frame);border-radius:12px;padding:3px;flex:none}.pv-tabs button{flex:1;font:700 14px var(--head);padding:9px;border:0;border-radius:9px;background:transparent;color:var(--ink);cursor:pointer}.pv-tabs button[aria-pressed=true]{background:var(--frame);color:var(--frame-ink)}.pvw[data-pane="q"] #pvR,.pvw[data-pane="m"] #pvL{display:none}.pv-pane{flex:1}#pvL{overflow:auto;overscroll-behavior:contain}#pvL .pv-bar{flex:none}#pvL .pv-body{flex:none;overflow:visible}   /* phones: the toolbar scrolls away with the paper */.pv-bar{padding:8px 10px;gap:7px}.pv-chip{font-size:11.5px;gap:4px;padding:5px 2px;border-width:1.5px;flex:1 1 0;justify-content:center;min-width:0}.pv-chip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-direction:column;gap:3px}.pv-count{flex:1 0 100%;line-height:1.4}   /* phones: the count gets its own line so the 4 level chips keep their width; the bars sit above the name */.pv-chip small{display:none}.pv-seg button{padding:6px 10px;font-size:12.5px}.pv-seg small{display:none}.pv-btn.pq-dlb span{display:none}.pv-btn.pq-dlb{padding:7px 10px}.pv-qprev{display:block}.pv-tabs{position:sticky;top:var(--pvtop,0);z-index:6;box-shadow:0 4px 10px rgba(27,42,74,.10)}.pv-qprev details{background:var(--band);border:1.5px solid var(--line2);border-radius:10px;padding:10px 12px}.pv-qprev details[open] summary{margin-bottom:6px}.pv-foot #pvPos{display:none}.pv-allq{display:inline-flex;flex:1;justify-content:center}.pvsh-top,.pvsh-title,.pvsh-meta,.pvsh-hint,.pvsh-foot,.pvgrp{padding-left:16px;padding-right:16px}.pvq{grid-template-columns:34px minmax(0,1fr);padding:12px 14px 12px 12px}.pvm{grid-column:2;padding-top:0}.pvsh-title h1{font-size:21px}.pvsheetwrap{padding:10px 6px 20px}.pv-bar .pq-filt .pq-filters{position:static;width:auto;margin-top:8px}.pv-bar .pq-filt{flex:0 0 auto}}@media print{html.pq-split header.site,html.pq-split .pv-bar,html.pq-split .pv-div,html.pq-split .pv-tabs,html.pq-split #pvR{display:none!important}html.pq-split body{background:#fff!important}.pvw{display:block;padding:0;height:auto!important}.pv-pane{border:0;box-shadow:none;display:block;overflow:visible}.pv-body{overflow:visible;padding:0;background:#fff}.pvsheet{box-shadow:none;border:0;max-width:none}.pvq{break-inside:avoid;page-break-inside:avoid}}html.pq-split .bk-fab{display:none}   /* the Data booklet button is in the toolbar of the paper view *//* free-sample cues (2026-10-22): banner at the top of a locked set, lock on level chips, Free/lock in the sidebar */.pv-sample{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 14px;padding:12px 16px;border-radius:12px;background:var(--warn-bg);border:1px solid var(--warn-b);color:var(--ink);font-size:14.5px;line-height:1.45}.pv-sample>svg{color:var(--warn-t);flex:none}.pv-sample>span{flex:1 1 260px;min-width:0;color:var(--ink-2)}.pv-sample b{color:var(--ink)}.pv-sample .btn{flex:none}.pv-smp{color:var(--warn-t)}.pv-chip .pv-lk{margin-left:4px;vertical-align:-1px;opacity:.75}@media(max-width:400px){.pv-chip svg,.pv-chip .pv-lock{display:none}}   /* narrow phones: the Locked line already says it */.bank-note{font-size:12px;color:var(--mute);margin:10px 0}.qr-control{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:5px 0;color:var(--mute);font:inherit;font-size:12px;cursor:pointer}.pvb>.qr-control{display:flex;margin-top:10px}.qr-control:hover{color:var(--ink)}.qr-control:focus-visible{outline:2px solid currentColor;outline-offset:3px}.qr-popover{position:fixed;z-index:1000;width:min(310px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;padding:16px;background:var(--paper,#fff);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px #0003;font-size:13px}.qr-popover[hidden]{display:none}.qr-top{display:flex;justify-content:space-between;align-items:center}.qr-top button{background:none;border:0;color:inherit;font-size:22px;cursor:pointer}.qr-popover label{display:block;margin:10px 0}.qr-popover select,.qr-popover textarea{display:block;width:100%;box-sizing:border-box;margin-top:5px;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--bg,#fff);color:inherit;font:inherit}.qr-popover p{margin:8px 0 0}.qr-note{white-space:pre-wrap;overflow-wrap:anywhere}.qr-actions{display:grid;gap:8px;margin-top:10px}#qrRows td{max-width:420px;overflow-wrap:anywhere}#qrRows pre{max-height:240px;overflow:auto;white-space:pre-wrap}@media print{.qr-popover,.qr-control{display:none!important}}/* Worksheet Studio "three doors" ways-in block (tools/build.py studio_doors()). Static links, light and dark via site tokens. */.wd{--wd-sca:#1f5c46;--wd-scs:rgba(31,92,70,.09);display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:26px 0 0}:root[data-theme="dark"] .wd{--wd-sca:#5fc49b;--wd-scs:rgba(95,196,155,.14)}.wd-door{display:flex;flex-direction:column;gap:14px;padding:26px 24px 22px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--line),var(--sh1);text-align:left;min-width:0}.wd-door:hover{box-shadow:0 0 0 1px var(--line2),var(--sh2)}.wd-door h2{font-size:20px;line-height:1.2;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0}.wd-who{margin:0;color:var(--dim);font-size:15px;line-height:1.5;flex:1}.wd-who b{color:var(--text);font-weight:600}.wd-ico{display:grid;place-items:center;width:48px;height:48px;border-radius:13px;background:var(--gold-t);color:var(--lamp);flex:none}.wd-ico.green{background:var(--wd-scs);color:var(--wd-sca)}.wd-acts{display:flex;flex-direction:column;gap:12px;align-items:stretch}.wd-acts .btn{width:100%;white-space:normal;text-align:center}.wd-link{font:600 13.5px var(--body);color:var(--lamp);text-decoration:none;text-align:center}.wd-link:hover{text-decoration:underline}.wd-fine{font-size:12.5px;color:var(--mute);text-align:center}.wd-g{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#fff}.wd-badge{display:inline-block;font:700 11px var(--body);letter-spacing:.04em;text-transform:uppercase;color:var(--lamp);background:var(--gold-t);border-radius:99px;padding:3px 9px}.wd-extra{font-size:13.5px;color:var(--mute);margin:18px 0 0}.wd-extra a{color:var(--lamp);font-weight:600;text-decoration:none}.wd-extra a:hover{text-decoration:underline}.wd-extra .btn{margin-left:10px}@media(max-width:900px){.wd{grid-template-columns:1fr;gap:14px}.wd-door{padding:22px 20px 20px}}/* Worksheet Studio guided tour (/schools/worksheet-studio/tour/): progress row + alternating step / screenshot rows. */html{scroll-behavior:smooth}.tr-nav{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-block:1px solid var(--line)}.tr-nav ol{list-style:none;margin:0;padding:8px 0;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.tr-nav li{flex:1 0 auto}.tr-nav a{display:flex;align-items:center;justify-content:center;gap:8px;padding:6px 12px;border-radius:99px;text-decoration:none;color:var(--dim);font:600 13.5px var(--body);white-space:nowrap}.tr-nav a b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--gold-t);color:var(--ink);font-size:12px}.tr-nav a:hover,.tr-nav a.on{color:var(--ink);background:var(--hov)}.tr-nav a.on b{background:var(--navy);color:var(--on-navy)}section.tr-step{padding-block:56px;scroll-margin-top:56px}section.tr-step:nth-of-type(even){background:color-mix(in srgb,var(--tint) 60%,transparent)}.tr-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:center}.tr-step:nth-of-type(even) .tr-txt{order:2}.tr-txt h2{margin:0 0 12px}.tr-txt p{color:var(--dim);margin:0 0 14px;max-width:44ch}.tr-txt .eyebrow{margin-bottom:10px}.tr-next{margin-top:18px!important}.tr-fig{display:grid;gap:18px;min-width:0}.tr-frame{border-radius:12px;background:#fff;box-shadow:0 0 0 1px var(--line2),var(--sh2);overflow:hidden;min-width:0}.tr-bar{display:flex;gap:6px;padding:9px 12px;background:#f3f4f7;border-bottom:1px solid #e2e4ea}.tr-bar i{width:9px;height:9px;border-radius:50%;background:#cfd3dc}.tr-frame img{display:block;width:100%;height:auto}:root[data-theme="dark"] .tr-frame{box-shadow:0 0 0 1px var(--line3),var(--sh2)}@media(max-width:900px){.tr-grid{grid-template-columns:1fr;gap:24px}.tr-step:nth-of-type(even) .tr-txt{order:0}section.tr-step{padding-block:40px}}.tr-hero{padding-block:30px 34px}.tr-hero h1{font-size:clamp(32px,4.2vw,46px);max-width:22ch}.tr-txt h2{font-size:clamp(24px,2.6vw,30px)}.tr-nav ol{scroll-snap-type:x proximity}.tr-nav li{scroll-snap-align:center}.sx{position:relative;margin-top:8px}.sx-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:4px 2px 8px}.sx-track::-webkit-scrollbar{display:none}.sx-slide{flex:0 0 100%;scroll-snap-align:start;margin:0;display:grid;gap:18px;align-items:center;border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:14px;background:var(--card);padding:16px;grid-template-columns:1fr}@media(min-width:900px){.sx-slide{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);padding:22px;gap:30px}}.sx-slide img{width:100%;height:auto;border-radius:10px;border:1px solid var(--line2);box-shadow:var(--sh1);display:block}.sx-slide h3{font-size:clamp(20px,2.2vw,26px);margin:0 0 8px}.sx-slide p{color:var(--dim);margin:0 0 10px}.sx-n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--frame);color:var(--frame-ink);font:700 14px var(--body);margin-bottom:10px}.sx-slide .tickrow{grid-template-columns:1fr;gap:6px}.sx-nav{position:absolute;top:42%;z-index:2;width:42px;height:42px;border-radius:50%;border:1px solid var(--line2);background:var(--card);color:var(--ink);font-size:24px;cursor:pointer;box-shadow:var(--sh1);display:none}@media(min-width:900px){.sx-nav{display:block}}.sx-nav.prev{left:-14px}.sx-nav.next{right:-14px}.sx-dots{display:flex;justify-content:center;gap:10px;margin-top:6px}.sx-dots button{width:11px;height:11px;border-radius:50%;border:0;padding:0;background:var(--line3);cursor:pointer}.sx-dots button[aria-current=true]{background:var(--frame);transform:scale(1.2)}.trust3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.trust3 a.tile{text-decoration:none;color:inherit}.trust3 a.tile:hover{background:var(--hov)}/* course workspace: sidebar + (topic tree) + main column (tools/course_nav.py) */.ws{display:grid;grid-template-columns:250px minmax(0,1fr);max-width:1440px;margin:0 auto}.ws.three{grid-template-columns:250px 260px minmax(0,1fr)}.ws-side,.ws-tree{position:sticky;top:calc(66px + env(safe-area-inset-top,0px));align-self:start;max-height:calc(100vh - 66px);overflow:auto;border-right:1px solid var(--edge);padding:18px 12px 28px max(12px,env(safe-area-inset-left,0px));scrollbar-width:thin}.ws-tree{background:color-mix(in srgb,var(--desk-2) 85%,transparent);padding-left:12px}.ws-main{min-width:0}.ws-main>.crumbs,.ws-main .wrap{max-width:1040px}.ws-switch{border:1px solid var(--edge);border-radius:12px;background:var(--desk-3)}.ws-switch summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px}.ws-switch summary::-webkit-details-marker{display:none}.ws-switch summary:after{content:"▾";color:var(--dim)}.ws-switch small{display:block;color:var(--dim);font-size:12px}.ws-switch b{font:700 15px var(--head);letter-spacing:-.02em}.ws-switch ul{list-style:none;margin:0;padding:0 6px 8px}.ws-switch li a{display:block;padding:6px 8px;border-radius:8px;color:var(--text);text-decoration:none;font-size:14px}.ws-switch li a:hover,.ws-switch li a[aria-current]{background:var(--gold-t);color:var(--lamp)}.ws-h{font:500 11.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:18px 8px 6px}.ws-list{list-style:none;margin:0;padding:0}.ws-list a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;color:var(--text);text-decoration:none;font-size:14.5px;line-height:1.3}.ws-list a:hover{background:var(--hov)}.ws-list a[aria-current]{background:var(--gold-t);color:var(--lamp);font-weight:600}.ws-i{width:18px;text-align:center;opacity:.85;flex:none}.ws-r{margin-left:auto;font:500 11px var(--mono);color:var(--bad-t);white-space:nowrap}.ws-r.free{color:var(--ok-t)}.ws-r.own{color:var(--lamp)}.ws-unlock{margin:18px 4px 0;display:grid;gap:6px;background:linear-gradient(160deg,var(--gold-t),var(--gold-t));border:1px solid var(--gold-b);border-radius:14px;padding:12px;font-size:13.5px;color:var(--dim)}.ws-unlock b{color:var(--text);font:700 14.5px var(--head)}.ws-unlock .btn{justify-self:start;padding:7px 13px;font-size:13.5px}.ws-unlock small{font-size:12px}.btn.coral{background:linear-gradient(var(--btn1),var(--btn2));color:var(--on-navy)}.ws-th{font:700 14px var(--head);margin:4px 6px 10px}.ws-tree details{border:1px solid var(--edge);border-radius:12px;margin:0 0 8px;background:var(--desk-2);color:var(--text);padding:0}.ws-tree summary{list-style:none;cursor:pointer;padding:10px 12px;font:600 13.5px var(--head);display:flex;justify-content:space-between;gap:8px;color:var(--text)}.ws-tree summary::-webkit-details-marker{display:none}.ws-tree summary small{font:500 11px var(--mono);color:var(--dim)}.ws-tree ol{list-style:none;margin:0;padding:0 8px 8px}.ws-tree li a{display:flex;gap:8px;align-items:center;padding:6px 8px;border-radius:8px;color:var(--dim);text-decoration:none;font-size:13.5px;line-height:1.3}.ws-tree li a:before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid currentColor;flex:none;opacity:.7}.ws-tree li a:hover{color:var(--text)}.ws-tree li a[aria-current]{background:var(--gold-t);color:var(--lamp);font-weight:600}.ws-tree li a[aria-current]:before{background:var(--navy);border-color:var(--navy);opacity:1}.ws-mob{display:none}@media(max-width:1180px){.ws.three{grid-template-columns:250px minmax(0,1fr)}.ws.three>.ws-tree{display:none}.ws.three .ws-mob{display:flex}.ws.three .ws-mob .ws-drop:first-child{display:none}}@media(max-width:900px){.ws,.ws.three{grid-template-columns:minmax(0,1fr)}.ws-side,.ws.three>.ws-tree{display:none}.ws-mob,.ws.three .ws-mob{display:flex}.ws.three .ws-mob .ws-drop:first-child{display:block}}.ws-mob{gap:8px;flex-wrap:wrap;position:sticky;top:calc(66px + env(safe-area-inset-top,0px));z-index:30;background:color-mix(in srgb,var(--bg) 97%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--edge);padding:8px max(16px,env(safe-area-inset-right,0px)) 8px max(16px,env(safe-area-inset-left,0px))}.ws-drop{background:none;color:var(--text);padding:0;border:0;margin:0}.ws-drop>summary{list-style:none;cursor:pointer;border:1px solid var(--edge);border-radius:999px;padding:7px 13px;font:600 13.5px var(--body);background:var(--desk-3);display:inline-block}.ws-drop>summary::-webkit-details-marker{display:none}.ws-drop[open]>summary{border-color:var(--lamp);color:var(--lamp)}.ws-drop>nav{position:absolute;left:0;right:0;top:100%;max-height:70vh;overflow:auto;background:var(--desk);border-bottom:1px solid var(--edge);padding:12px max(16px,env(safe-area-inset-right,0px)) 16px max(16px,env(safe-area-inset-left,0px));box-shadow:var(--sh1)}/* cheatsheet header and the matching paid notes */.cs-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;color:var(--dim);font-size:14px;margin:4px 0 14px}.cs-meta .av{width:32px;height:32px;border-radius:50%;background:#2b3a55;color:#fff;display:grid;place-items:center;font:700 12.5px var(--head)}.cs-meta b{color:var(--text)}.cs-acts{display:flex;flex-wrap:wrap;gap:8px}.cs-up{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 16px;align-items:center;background:var(--desk-2);border:1px solid var(--gold-b);border-radius:16px;padding:14px 16px;margin:18px 0}.cs-up b{display:block;font:700 16px var(--head);color:var(--text)}.cs-up span{color:var(--dim);font-size:14px}@media(max-width:640px){.cs-up{grid-template-columns:minmax(0,1fr)}.cs-up .btn{justify-self:start}}.cs-dlbar{display:none}@media(max-width:900px){.cs-dlbar{display:flex;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:35;background:color-mix(in srgb,var(--bg) 97%,transparent);border-top:1px solid var(--edge);padding:10px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}.cs-dlbar .btn{flex:1;justify-content:center;padding:10px 12px;font-size:14px}body:has(.cs-dlbar) footer.site{padding-bottom:80px}}/* keep the site's FAQ <details> styling out of the workspace menus */.ws details{background:none;color:var(--text);padding:0;margin:0;border-radius:0;border:0;box-shadow:none}.ws .ws-switch{border-radius:12px;background:var(--card);border:1px solid var(--edge)}.ws .ws-tree details{border-radius:12px;margin:0 0 8px;background:var(--card);border:1px solid var(--edge)}.ws summary{color:var(--text);font-size:inherit;letter-spacing:normal}.ws-switch summary:after{content:"▾";color:var(--dim);font-size:13px}.ws-switch[open] summary:after{content:"▴"}.ws-tree summary:after,.ws-drop>summary:after{content:none}.ws-drop>summary{color:var(--text)}.ws.ws-none{grid-template-columns:minmax(0,1fr)}.ws.ws-none>.ws-side,.ws.ws-none .ws-mob{display:none}.ws details summary:after,.ws details[open] summary:after{content:none}.ws .ws-switch summary:after{content:"▾";color:var(--dim);font-size:13px}.ws .ws-switch[open] summary:after{content:"▴"}.ws .ws-tree details>summary:before{content:"▸";color:var(--dim);margin-right:6px}.ws .ws-tree details[open]>summary:before{content:"▾"}.ws .ws-tree summary{justify-content:flex-start}.ws .ws-tree summary small{margin-left:auto}.ws-unlock[hidden],.cs-up[hidden],[data-unlock][hidden]{display:none}/* floating formula booklet: button, side panel, embedded view (?embed=1) */.bk-fab{position:fixed;right:max(18px,env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:60;display:inline-flex;align-items:center;gap:8px;background:var(--navy);color:var(--on-navy);border:0;border-radius:999px;padding:12px 18px;font:600 14.5px var(--body);box-shadow:var(--sh1);cursor:pointer}.bk-fab span{font:700 18px var(--head);line-height:1}.bk-fab[hidden]{display:none}.bk-open .bk-fab{background:var(--desk-3);color:var(--lamp);border:1px solid var(--lamp)}.bk-panel{position:fixed;top:calc(66px + env(safe-area-inset-top,0px));right:0;bottom:0;z-index:55;width:min(560px,100%);display:flex;flex-direction:column;background:var(--desk);border-left:1px solid var(--edge);box-shadow:var(--sh1);animation:bkin .25s ease-out}.bk-panel[hidden]{display:none}@keyframes bkin{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion:reduce){.bk-panel{animation:none}}.bk-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--edge)}.bk-bar b{font:700 15px var(--head)}.bk-bar span{display:flex;gap:6px}.bk-bar .btn{padding:7px 12px;font-size:13.5px}.bk-panel iframe{flex:1;width:100%;border:0;background:var(--desk)}@media(min-width:1181px){.bk-open .ws-main{margin-right:min(560px,40vw)}}@media(max-width:900px){.bk-panel{width:100%}.bk-fab{bottom:calc(76px + env(safe-area-inset-bottom,0px))}}.embed header.site,.embed footer.site,.embed .crumbs,.embed .skip,.embed .bk-fab,.embed .burger{display:none!important}.embed body{background-image:none}.embed .hero{padding-block:18px 10px}@media(max-width:640px){.bk-fab{padding:0;width:50px;height:50px;justify-content:center}.bk-fab b{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.bk-fab span{font-size:22px}}/* simplified sidebar (2026-10-20): course switcher, Topics (current topic opens its levels), More, small unlock box */.ws-all{margin:0 8px 6px;font-size:13.5px}.ws-all a{color:var(--ink-2);text-decoration:none;font-weight:600}.ws-all a:hover{color:var(--ink);text-decoration:underline}.ws-all a[aria-current]{color:var(--lamp)}.ws-topics{list-style:none;margin:0;padding:0;max-height:min(52vh,460px);overflow:auto;scrollbar-width:thin;border-block:1px solid var(--line)}.ws-topics>li>a{display:block;padding:6px 10px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:14px;line-height:1.3}.ws-topics>li>a:hover{background:var(--hov)}.ws-topics>li>a[aria-current]{background:var(--gold-t);color:var(--lamp);font-weight:700}.ws-topics .pq-sidelv{display:grid;gap:3px;list-style:none;margin:4px 0 8px 10px;padding:0}.ws-topics .pq-sidelv .pq-lvi{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px 6px 10px;border-radius:8px;border-left:4px solid transparent;background:var(--card);box-shadow:0 0 0 1px var(--line);color:var(--ink);text-decoration:none;font-size:13.5px}.ws-topics .pq-sidelv .pq-lvi b{font:700 13.5px var(--head);color:var(--ink);flex:1}.ws-topics .pq-sidelv .pq-lvi span{font-size:12px;color:var(--ink-2);white-space:nowrap}.ws-topics .pq-sidelv .pq-lvi[aria-current]{background:color-mix(in srgb,var(--lv) 12%,var(--card));border-left-color:var(--lv);box-shadow:0 0 0 2px var(--lv)}.ws-topics .pq-sidelv .pq-lvi[aria-current] b{color:var(--lv)}.ws-list a{padding:7px 10px;font-size:14.5px}.ws-unlock{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:10px 12px;font-size:13.5px}.ws-unlock span{font-weight:700;color:var(--ink)}.ws-unlock .btn{height:34px;min-height:34px;padding:0 12px;font-size:13px}.ws-drop .ws-topics{max-height:none;overflow:visible}.trustrow{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 22px;color:var(--dim);font-size:14px}.trustrow li:before{content:"✓ ";color:var(--ok-t)}/* FAQ accordions inside the course workspace (the .ws details reset above flattened them) */.ws .faqwrap details{background:var(--card);border:1px solid var(--edge);border-radius:14px;padding:16px 20px;margin:0 0 10px;box-shadow:var(--sh1)}.ws .faqwrap summary{display:flex;justify-content:space-between;gap:14px;font:600 16.5px var(--head);letter-spacing:-.02em;color:var(--text);list-style:none}.ws .faqwrap summary::-webkit-details-marker{display:none}.ws .faqwrap details summary:after{content:"+";color:var(--coral-ink);font-size:22px;line-height:1}.ws .faqwrap details[open] summary:after{content:"\2212"}.ws .faqwrap details p{margin:10px 0 0;color:var(--dim)}/* Formula booklet button (lean sweep): a slim tab on the right edge on desktop, a 44px icon on phones; never over content */@media(min-width:901px){.bk-fab{right:0;bottom:auto;top:50%;transform:translateY(-50%);border-radius:12px 0 0 12px;padding:14px 9px;writing-mode:vertical-rl;gap:6px;font-size:13.5px;box-shadow:var(--sh1)}.bk-fab span{writing-mode:horizontal-tb}.bk-open .bk-fab{right:min(560px,100%)}.ws-main{padding-right:26px}}@media(max-width:900px){.ws-main{padding-bottom:84px}}@media(max-width:640px){.bk-fab{width:44px;height:44px;right:12px}}/* phones: course menu + Topics on one row (owner 2026-10-22 mobile audit) */@media(max-width:560px){.ws-mob{flex-wrap:nowrap}.ws-mob .ws-drop>summary{white-space:nowrap}.ws-mob-x{display:none}}/* "Get the app": the App Store link and QR of the Photon Learning Studio iPhone and iPad app (owner brief 2026-11-08). Markup: tools/app_badge.py,which renders it only when site.json ios_app_url is set. Navy-frame look (framed blocks with a navy top edge, pale-blue band lines, the gold icon tile),calm: nothing opens by itself and nothing moves the page. Every piece carries .appx: hidden in embeds and in print here, and inside the iOS app(html.in-app) by zzz-in-app.css. Named zz- so it loads after menu.css and home.css, whose header rules it adjusts below. */@media print{.appx{display:none!important}}.embed .appx{display:none!important}/* ---- the badge: the button, and for people at a computer a small QR with its caption ---- */.appget-ic{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--gold-t);color:var(--lamp)}.appget-btn{height:40px;padding:0 16px;font-size:14px;white-space:nowrap;text-align:center}.appget-btn svg{flex:none}.appget-badge{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.appget-badge.has-qr{display:grid;grid-template-columns:max-content max-content;grid-template-areas:"qr cap" "qr btn";justify-content:start;align-items:center;gap:8px 14px}.appget-code{grid-area:qr;flex:none;max-width:none;width:92px;height:92px;padding:5px;background:#fff;border:1px solid var(--band-line);border-radius:10px;shape-rendering:crispEdges}.appget-cap{grid-area:cap;align-self:end;margin:0;font:600 12.5px/1.3 var(--body);color:var(--dim)}.appget-badge .appget-btn{grid-area:btn;align-self:start}@media(hover:none) and (pointer:coarse),(max-width:720px){.appget-code,.appget-cap{display:none}.appget-badge.has-qr{display:flex}}   /* the QR is for someone at a computer, scanning with a phone *//* ---- footer: a compact block in the first column ---- */.appget--foot{display:grid;gap:12px;margin-top:22px;max-width:360px;padding:14px;background:var(--card);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:12px}.appget--foot .appget-hd{display:flex;align-items:center;gap:12px}.appget--foot .appget-hd p{margin:0;font-size:13px;line-height:1.4;color:var(--dim)}.appget--foot .appget-hd b,.appget--foot .appget-hd span{display:block}.appget--foot .appget-hd b{font:700 15px var(--head);letter-spacing:-.01em;color:var(--ink)}.appget--foot .appget-code{width:84px;height:84px}.appget--foot .appget-btn{height:auto;min-height:38px;padding:8px 12px;font-size:13px;white-space:normal;line-height:1.2}footer.site .cols>div:first-child{min-width:0}   /* the card must never widen this column and squeeze the link columns */.appget--foot .appget-badge.has-qr{grid-template-columns:max-content minmax(0,1fr);gap:8px 12px}@media(min-width:800px) and (max-width:1199px){.appget--foot .appget-badge.has-qr{grid-template-areas:"qr cap" "btn btn"}.appget--foot .appget-cap{align-self:center}}   /* narrow column: the button goes under the QR */@media(max-width:720px){.appget--foot{max-width:none}.appget--foot .appget-badge,.appget--foot .appget-btn{width:100%}}/* ---- a framed row (course pages, My library) ---- */.appget--strip{display:flex;align-items:center;gap:16px;margin-top:14px;padding:16px 20px;background:var(--band);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:14px}.appget--strip .appget-tx{flex:1;min-width:0}.appget--strip .appget-ti{margin:0 0 2px;font:700 16px/1.25 var(--head);letter-spacing:-.01em;color:var(--ink)}.appget--strip .appget-tx p:last-child{margin:0;font-size:14px;line-height:1.5;color:var(--dim)}.appget--strip .appget-btn{background:var(--card)}@media(max-width:720px){.appget--strip{flex-wrap:wrap;gap:12px 14px;padding:14px 16px}.appget--strip .appget-tx{flex:1 1 calc(100% - 60px)}.appget--strip .appget-badge,.appget--strip .appget-btn{width:100%}}section.ac-sec.appx{padding-block:0}   /* My library: the section's own padding would double the space between its neighbours' *//* ---- header (desktop): a phone icon like the search and theme buttons, opening a small popover ---- */.appnav{display:none;position:relative}@media(min-width:1001px){.appnav{display:block}}.appnav>summary{list-style:none;cursor:pointer;display:grid;place-items:center;width:44px;height:44px;border-radius:10px;background:var(--card);color:var(--ink);box-shadow:0 0 0 1px var(--line2),0 1px 2px rgba(27,42,74,.06);user-select:none}.appnav>summary::-webkit-details-marker{display:none}.appnav>summary::after,.appnav[open]>summary::after{content:none}   /* the site's global "+" marker for summaries */.appnav>summary:hover,.appnav[open]>summary{box-shadow:0 0 0 1px var(--line3),var(--sh1)}.appnav-p{position:absolute;z-index:60;top:calc(100% + 20px);right:-4px;width:300px;padding:16px;background:var(--card);border:1px solid var(--band-line);border-top:3px solid var(--frame);border-radius:14px;box-shadow:var(--sh2);animation:appin .18s ease-out}@keyframes appin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}header.site .appnav-h{margin:0 0 4px;font:700 11px var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}   /* header.site details p{margin:0} would win without header.site */header.site .appnav-t{margin:0 0 16px;font:700 16px/1.3 var(--head);letter-spacing:-.01em;color:var(--ink)}.appnav-t span{display:block;font:500 14px/1.4 var(--body);letter-spacing:0;color:var(--dim)}.appnav .appget-badge{display:grid;grid-template-columns:1fr;grid-template-areas:"qr" "cap" "btn";justify-items:center;gap:8px}.appnav .appget-badge:not(.has-qr){grid-template-areas:"btn"}.appnav .appget-code{width:116px;height:116px}.appnav .appget-cap{align-self:start;text-align:center}.appnav .appget-btn{width:100%}/* The header has no room to spare between 1501px and 1720px (it already fills the window), so while the app icon is there the search shows as an icon, as itdoes below 1500px: the 82px of its "Search /" label pay for the icon. Everywhere else the icon fits in the space the header already has. */@media(min-width:1501px) and (max-width:1720px){.hright.hasapp .hsrch span,.hright.hasapp .hsrch kbd{display:none}.hright.hasapp .hsrch{min-width:0;width:44px;padding:0;justify-content:center;border-radius:10px}}/* ...and right where the nav first appears (1221-1260px) it has 2px to spare: a pixel less padding on each side of its links keeps a safe margin. */@media(min-width:1221px) and (max-width:1260px){header.site:has(.appnav) nav.main>ul>li>a,header.site:has(.appnav) nav.main summary{padding-inline:8px}}/* ---- phone menu: the last item, straight to the App Store ---- */.mpanel a.appmenu{display:flex;align-items:center;gap:12px}.mpanel a.appmenu svg{flex:none;color:var(--lamp)}.mpanel a.appmenu small{margin-left:auto;font:500 13px var(--body);color:var(--mute)}/* ---- blog posts: one quiet line ---- */.appline{display:flex;align-items:flex-start;gap:10px;margin:18px 0 0;font-size:14px;line-height:1.5}.prose .appline{color:var(--mute)}.appline svg{flex:none;margin-top:2px;color:var(--lamp)}.prose .appline a{color:var(--coral-ink);font-weight:600}/* Navy frame (owner picked option C, 2026-10-21; mockups ~/PhotonResourcesHQ/mockups/tone-options/): a navy lineunder the site header, navy table headers with light zebra rows in the library, pale blue bands for the coursesidebar, alternate sections and the footer. Named zz- so it loads after the other parts and wins. */:root{--frame:#1b2a4a;--frame-ink:#ffffff;--band:#f2f5fa;--band-line:#dfe5ef;--zebra:#f6f8fb}@media screen{:root[data-theme="dark"]{--frame:#2b3a5c;--frame-ink:#e8ecf3;--band:#131a28;--band-line:#263043;--zebra:rgba(255,255,255,.025)}}header.site{border-bottom:3px solid var(--frame)}.ws-side{background:var(--band);border-right:1px solid var(--band-line)}section.alt{background:var(--band);border-block-color:var(--band-line)}footer.site{background:var(--band);border-top:3px solid var(--frame)}.pq-tbl th,.pl-th,.db-tbl th{background:var(--frame);color:var(--frame-ink)}.pq-tbl tbody tr:nth-child(even){background:var(--zebra)}.pq-tbl tbody tr:nth-child(even) td{background:transparent}/* Practice questions (owner, 2026-10-21: "between question 1 and 2 it's just white"): each question is a framed cardwith a pale blue header strip and a navy edge. .pq-card.got keeps its own border colour (higher specificity). */.pq-card{border-color:var(--band-line);box-shadow:0 1px 2px rgba(27,42,74,.05),0 8px 20px rgba(27,42,74,.06);margin-bottom:22px}.pq-ch{background:var(--band);border-bottom:1px solid var(--band-line);box-shadow:inset 4px 0 0 var(--frame);padding-bottom:12px}.pq-q{padding-top:12px}/* Course sidebar, "level dots" (owner picked option 2, 2026-10-21): topic badges + the four level colours,More links with gold icon tiles. Markup: tools/course_nav.py (_topic_inner, _icon). */.ws-topics>li>a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px}.ws-tl{display:flex;align-items:center;gap:10px;min-width:0}.ws-tn{min-width:0}.ws-b{flex:none;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--card);border:1px solid var(--band-line);color:var(--navy-2,#24365e);font:700 11px var(--body);font-variant-numeric:tabular-nums}.ws-b.ws-bw{width:auto;min-width:30px;padding:0 6px;border-radius:12px}.ws-dots{display:flex;align-items:flex-end;gap:2px;height:11px;flex:none}   /* four levels = four small bars, never four colours (owner, 2026-11-07) */.ws-dots i{width:3px;border-radius:1px;background:var(--line3)}.ws-dots i:nth-child(1){height:5px}.ws-dots i:nth-child(2){height:7px}.ws-dots i:nth-child(3){height:9px}.ws-dots i:nth-child(4){height:11px}.ws-topics>li>a[aria-current]{background:var(--card);color:var(--ink);box-shadow:inset 3px 0 0 var(--gold),0 1px 2px rgba(27,42,74,.08)}.ws-topics>li>a[aria-current] .ws-b{background:var(--frame);color:var(--frame-ink);border-color:transparent}.ws-list{display:grid;gap:6px}.ws-list a{background:var(--card);border:1px solid var(--band-line);font-weight:500}.ws-list a:hover{border-color:var(--gold);background:var(--card)}.ws-list a[aria-current]{border-color:var(--gold)}.ws-ic{flex:none;width:28px;height:28px;border-radius:8px;background:var(--gold-t);color:var(--lamp);display:flex;align-items:center;justify-content:center}.ws-ic svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}/* "NEW" badge for the IA & EE Coach menu item: the SOON badge, filled navy with gold text */.soon.new{background:var(--frame);border-color:var(--frame);color:#f2d38b;font-weight:600}/* Course tools above the topics (owner 2026-10-22: "the More section scroll isn't clear"): a compact two-column gridso the links are always in view at the top of the sidebar; the topic list follows. */.ws-tools{grid-template-columns:1fr 1fr;gap:5px}.ws-tools a{padding:6px 7px;gap:7px;font-size:12.5px;line-height:1.2;border-radius:9px;min-height:40px}.ws-tools .ws-ic{width:24px;height:24px;border-radius:7px}.ws-tools .ws-ic svg{width:15px;height:15px}.ws-fr{display:inline-block;vertical-align:1px;white-space:nowrap;font:700 9.5px var(--body);letter-spacing:.06em;text-transform:uppercase;color:var(--ok-t);background:var(--ok-bg);border:1px solid var(--ok-b);border-radius:999px;padding:1px 6px}.ws-lk{flex:none;display:inline-flex;color:var(--mute);opacity:.8}.ws-lk[hidden]{display:none}/* In the iOS app: html.in-app is set by the head script in tools/build.py when the user agent contains "PhotonApp", and thesame script adds viewport-fit=cover to the viewport meta, so env(safe-area-inset-*) is real (it is 0 without it).Pages of this site that open inside the app's web view (sign-in, privacy, terms, support) get a slim bar instead of the site menu,clear the status bar and the Dynamic Island, and nothing on them leads to web prices or purchases (App Store rule 3.1.1).EVERY rule here starts with html.in-app, so every other browser matches none of it (tools/smoke.py checks that).Keep it flat: no @media blocks, so that check stays simple. Named zzz- so it loads after every other part. *//* the header: starts at the very top, its own top padding clears the status bar and the Dynamic Island (the site's sticky top: env(...) would leave a gap).Left and right insets (landscape) are already in .wrap: padding max(16px, env(safe-area-inset-left / right)). Height stays 66px so the sticky bars of the course pages still line up. */html.in-app header.site{top:0;padding-top:env(safe-area-inset-top,0px)}html.in-app header.site .wrap{height:66px}/* no site menu, search, theme switch, sign-in button or burger: the app has its own, and the site menu leads to prices */html.in-app header.site nav.main,html.in-app header.site .hright,html.in-app header.site .logo span,html.in-app #srch,html.in-app .crumbs{display:none!important}/* the App Store button and QR (the /learning-studio/ hero, the home Learning Studio slide): not inside the app itself */html.in-app .lsh-ios,html.in-app .lsh-qr,html.in-app .happ{display:none!important}/* the slim bar: [‹ Back to the app] ... [owl]. The button is added by INAPP_BAR in tools/build.py */html.in-app header.site .appback{flex:none;display:inline-flex;align-items:center;gap:4px;height:44px;padding:0 18px 0 10px;border-radius:12px;background:linear-gradient(var(--btn1),var(--btn2));color:var(--on-navy);font:700 16px/1 var(--body);text-decoration:none;white-space:nowrap;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 1px 2px rgba(27,42,74,.3),0 6px 14px rgba(27,42,74,.16)}html.in-app header.site .appback svg{flex:none}/* the owl on the right is the way back too: a 44pt tap area (the drawing stays 34pt, centred in it) */html.in-app header.site .logo{min-width:44px;min-height:44px;justify-content:center}/* short pages: the footer sits at the bottom of the screen instead of leaving a white band under it */html.in-app:not(.embed) body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}html.in-app:not(.embed) main{flex:1 0 auto}/* the footer: no link columns (they lead to prices); the IB disclaimer stays, clear of the home indicator */html.in-app footer.site{padding-block:26px calc(26px + env(safe-area-inset-bottom,0px))}html.in-app footer.site .cols{display:none}html.in-app footer.site .disclaimer{border-top:0;margin:0;padding:0}/* "Get the app" (App Store link and QR, tools/app_badge.py): the app is already installed, so none of it shows */html.in-app .appx{display:none!important}/* anything that starts a purchase or leads to web prices: never inside the app (these pages are not reached from the app's own screens; this is the safety net) */html.in-app a[data-programme],html.in-app button[data-programme],html.in-app #ebooks,html.in-app #coach,html.in-app .ac-jump a[href="#ebooks"],html.in-app .ac-jump a[href="#coach"],html.in-app a[href*="?buy="],html.in-app a[href*="/upgrade/"],html.in-app a[href*="pay.ibtuition.sg"],html.in-app a[href^="/books/"],html.in-app a[href*="/premium-library"],html.in-app a[href^="/pricing"],html.in-app #courses .head p,html.in-app #courses .note{display:none!important}/* /sign-in/: Google cannot finish inside the app (its page opens in Safari, which cannot see the sign-in key the app's web view saved), so only theemail code is offered here, as the main path. Apple sign-in is the app's own sheet. The in-app wording is hidden in the markup everywhere else. */html.in-app .ac-web,html.in-app #acGoogle,html.in-app .ac-or{display:none!important}html.in-app .ac-app[hidden]{display:block!important}html.in-app #acEmail .btn,html.in-app #acCode .btn.primary{background:linear-gradient(var(--btn1),var(--btn2));color:var(--on-navy);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 1px 2px rgba(27,42,74,.3),0 6px 14px rgba(27,42,74,.16)}html.in-app .ac-hero .ac-app{max-width:34ch}