/* School Launch · course pages (shared) */
:root{
  --ground:#F5F0E6; --paper:#FFFDF8; --linen:#EDE4D3; --ink:#1F1B16; --muted:#5A5247; --line:#D9CFBC;
  --forge:#8C3A1F; --forge-ink:#FFFFFF; --brass:#B08A3E; --brass-soft:#E7C98A; --slab:#1F1B16; --slab-ink:#F5F0E6;
  --focus:#1F4E5A;
  --display:'Cinzel', 'Trajan Pro', Georgia, serif;
  --serif:'Source Serif 4', Georgia, 'Times New Roman', serif;
  --sans:'Source Sans 3', 'Segoe UI', system-ui, -apple-system, sans-serif;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --ground:#17130F; --paper:#211C17; --linen:#2B241D; --ink:#EFE7D8; --muted:#B8AC98; --line:#3E352B;
    --forge:#E08A5F; --forge-ink:#17130F; --brass:#C9A55E; --brass-soft:#C9A55E; --slab:#2B241D; --slab-ink:#EFE7D8;
    --focus:#8FC3CF;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --ground:#17130F; --paper:#211C17; --linen:#2B241D; --ink:#EFE7D8; --muted:#B8AC98; --line:#3E352B;
  --forge:#E08A5F; --forge-ink:#17130F; --brass:#C9A55E; --brass-soft:#C9A55E; --slab:#2B241D; --slab-ink:#EFE7D8;
  --focus:#8FC3CF;
}
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.55}
a{color:var(--forge)}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:3px}
h1,h2,h3{text-wrap:balance;margin:0}
p{margin:0;text-wrap:pretty}
.wrap{max-width:1120px;margin:0 auto;padding-inline:20px}
.eyebrow{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.display{font-family:var(--display);font-weight:700;letter-spacing:.02em}
.lead{font-family:var(--serif);font-size:20px;line-height:1.5;max-width:62ch}
.muted{color:var(--muted)}

/* header */
.site-head{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:var(--ground);border-bottom:1px solid var(--line)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:12px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.brand span{font-family:var(--display);font-weight:700;font-size:22px;color:var(--forge);letter-spacing:.03em}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav a{text-decoration:none;color:var(--ink);font-weight:600;font-size:15px;padding:8px 12px;border-radius:6px}
.nav a:hover{background:var(--linen)}

main{padding-block:32px 64px;display:flex;flex-direction:column;gap:28px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:20px;display:flex;flex-direction:column;gap:8px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:6px;font-weight:700;font-size:16px;text-decoration:none;border:2px solid var(--forge);cursor:pointer;font-family:var(--sans)}
.btn.primary{background:var(--forge);color:var(--forge-ink)}
.btn.ghost{background:transparent;color:var(--forge)}
.btn-row{display:flex;gap:12px;flex-wrap:wrap}
.tags{display:flex;gap:6px;flex-wrap:wrap}
.tag{font-size:12.5px;font-weight:700;letter-spacing:.04em;padding:3px 8px;border-radius:4px;background:var(--linen);color:var(--muted)}
.tag.house{background:var(--forge);color:var(--forge-ink)}
.cnote{padding:10px 14px;border-left:3px solid var(--brass);background:var(--linen);border-radius:4px;font-size:15px;max-width:62ch}

/* footer */
.site-foot{border-top:1px solid var(--line);padding-block:28px}
.site-foot .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:baseline}
.site-foot .foot-base{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.motto{font-family:var(--serif);font-style:italic}
.network{display:flex;flex-direction:column;gap:12px;width:100%}
.network h2{margin:0}
.network-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:700px){.network-list{grid-template-columns:minmax(0,1fr);gap:12px}}
.network-list li{display:flex;flex-direction:column;gap:2px;font-size:15px}
.network-list a{font-family:var(--serif);font-weight:600;font-size:18px}
.network-list span{color:var(--muted)}
@media (prefers-reduced-motion:no-preference){.card,.btn{transition:border-color .15s,background-color .15s}}

/* course header band */
.course-hero{display:flex;flex-direction:column;gap:12px}
.course-hero h1{font-family:var(--display);font-weight:700;font-size:clamp(36px,6vw,56px);line-height:1.05;color:var(--forge)}
.hero-row{display:flex;justify-content:space-between;align-items:center;gap:12px 20px;flex-wrap:wrap}
.stats{display:flex;gap:8px;flex-wrap:wrap}
.course-hero.compact{gap:8px}
.course-hero.compact h1{font-size:clamp(28px,4vw,38px)}
.course-hero.compact .hero-pdf{min-height:38px;padding:6px 14px;font-size:15px}

/* two-column layout */
.course-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:28px;align-items:start}
.outline-toggle{position:sticky;top:calc(env(safe-area-inset-top,0px) + 80px);max-height:calc(100vh - 100px);overflow:auto;padding-right:4px}
.outline-toggle > summary{display:none}
.outline{display:flex;flex-direction:column;gap:8px}
.outline-label{margin:0}
.og{display:block;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px 14px;text-decoration:none;color:var(--ink);font-family:var(--serif);font-weight:600;font-size:16px}
.og:hover{border-color:var(--forge)}
.og[aria-current="page"]{background:var(--forge);border-color:var(--forge);color:var(--forge-ink)}
.unit{background:var(--paper);border:1px solid var(--line);border-radius:8px}
.unit summary{cursor:pointer;padding:12px 14px;list-style:none;display:flex;gap:10px;align-items:baseline}
.unit summary::-webkit-details-marker{display:none}
.unit summary::before{content:"\25B8";color:var(--brass);font-size:14px}
@media (prefers-reduced-motion:no-preference){.unit summary::before{transition:transform .15s}}
.unit[open] summary::before{transform:rotate(90deg)}
.unit summary .un{font-family:var(--display);font-weight:700;color:var(--forge);font-size:15px;white-space:nowrap}
.unit summary .ut{font-family:var(--serif);font-weight:600;font-size:16px;line-height:1.3;flex:1;min-width:0}
.unit summary .uc{font-size:13px;color:var(--muted);white-space:nowrap}
.lessons{list-style:none;margin:0;padding:0 8px 10px;display:flex;flex-direction:column;gap:2px}
.lessons a{display:grid;grid-template-columns:36px minmax(0,1fr);gap:6px;padding:7px 8px;border-radius:6px;text-decoration:none;color:var(--ink);font-size:15px;line-height:1.35}
.lessons a .n{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}
.lessons a.sub{font-weight:600;color:var(--forge)}
.lessons a:hover{background:var(--linen)}
.lessons a[aria-current="page"]{background:var(--forge);color:var(--forge-ink)}
.lessons a[aria-current="page"] .n{color:var(--forge-ink)}

@media (max-width:860px){
  .course-layout{grid-template-columns:minmax(0,1fr);gap:16px}
  .outline-toggle{position:static;max-height:none;overflow:visible;padding-right:0;background:var(--paper);border:1px solid var(--line);border-radius:8px}
  .outline-toggle > summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;padding:12px 16px;min-height:48px;font-weight:700;color:var(--forge)}
  .outline-toggle > summary::-webkit-details-marker{display:none}
  .outline-toggle > summary::before{content:"\25B8";color:var(--brass);font-size:14px}
  .outline-toggle[open] > summary::before{transform:rotate(90deg)}
  .outline-toggle > summary span{color:var(--ink);font-weight:600}
  .outline-toggle .outline{padding:0 10px 12px}
  .outline-label{display:none}
}

/* content card */
.content{padding:28px;gap:18px;min-width:0;overflow-wrap:break-word}
.content a{overflow-wrap:anywhere}
.content .eyebrow{margin:0}
.content h2{font-family:var(--display);font-size:clamp(24px,3.4vw,32px);color:var(--forge);line-height:1.15}
.content h2:focus{outline:none}
.content h2:focus-visible{outline:3px solid var(--focus)}
@media (max-width:560px){.content{padding:18px 16px}}
.loading{color:var(--muted);font-weight:600}
.notice{padding:14px 16px;border-radius:6px;background:var(--linen);border-left:4px solid var(--forge);display:flex;flex-direction:column;gap:8px}
.sh{font-family:var(--sans);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:0 0 8px}
.lsec{font-family:var(--serif);font-size:17px;line-height:1.55}
.lsec p{margin:0 0 .7em}
.lsec p:last-child{margin-bottom:0}
.lsec ul,.lsec ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:4px}
.objs{margin:0;padding-left:20px;font-family:var(--serif);font-size:17px;line-height:1.5}
.sh-row{display:flex;justify-content:space-between;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:8px}
.sh-row .sh{margin:0}
.btn.small{min-height:36px;padding:5px 12px;font-size:14px}

/* watch card */
.vids{background:var(--linen);border:1px solid var(--line);border-radius:10px;padding:16px 18px;display:flex;flex-direction:column;gap:14px}
.vids .sh{margin:0}
.pick{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:700px){.pick{grid-template-columns:minmax(0,1fr)}}
.thumb{position:relative;display:block;border-radius:8px;overflow:hidden;border:1px solid var(--line);aspect-ratio:16/9;background:var(--linen)}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .play{position:absolute;inset:0;margin:auto;width:68px;height:48px;border-radius:12px;background:rgba(31,27,22,.82);display:flex;align-items:center;justify-content:center}
.thumb .play::after{content:"";border-left:20px solid #fff;border-top:12px solid transparent;border-bottom:12px solid transparent;margin-left:5px}
.thumb:hover .play{background:var(--forge)}
.thumb .len{position:absolute;right:8px;bottom:8px;background:rgba(31,27,22,.85);color:#fff;font-size:13px;font-weight:700;padding:2px 6px;border-radius:4px;font-variant-numeric:tabular-nums}
.vmeta{display:flex;flex-direction:column;gap:8px;min-width:0}
.vmeta h4{margin:0;font-family:var(--serif);font-size:20px;font-weight:600;line-height:1.3}
.vmeta .ch{font-size:15px;color:var(--muted)}
.vmeta .ch a{color:inherit}
.when{font-family:var(--serif);font-size:16px;line-height:1.45;padding:8px 12px;background:var(--paper);border-left:3px solid var(--forge);border-radius:4px}
.when b{font-family:var(--sans);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--forge);display:block}
.vnote{font-size:14.5px;color:var(--ink);background:var(--paper);border-radius:4px;padding:8px 12px;margin:0}
.bk{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;align-items:start;border-top:1px dashed var(--line);padding-top:12px}
.bk .thumb .play{width:40px;height:28px;border-radius:8px}
.bk .thumb .play::after{border-left-width:12px;border-top-width:7px;border-bottom-width:7px;margin-left:3px}
.bk p{margin:0 0 4px;font-size:15px}
.bk .bt{font-family:var(--serif);font-weight:600;font-size:16px;line-height:1.3}
.bk .muted a{color:inherit}
@media (max-width:420px){.bk{grid-template-columns:110px minmax(0,1fr);gap:10px}}
.vurl{display:none}

/* lesson parts */
.terms{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px}
.terms > div{background:var(--linen);border-radius:6px;padding:10px 14px}
.terms dt{font-weight:700;font-family:var(--sans);font-size:16px}
.terms dd{margin:2px 0 0;font-family:var(--serif);font-size:16px;line-height:1.5}
@media (max-width:700px){.terms{grid-template-columns:minmax(0,1fr)}}
.formulas{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px 16px}
.formulas .f{overflow-x:auto;overflow-y:hidden}
.sidenote{font-family:var(--serif);font-size:16px;line-height:1.5;padding:10px 14px;border-left:3px solid var(--brass);background:var(--linen);border-radius:4px}
.sidenote b{font-family:var(--sans)}
.example{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin:10px 0}
.example > p{margin:0 0 6px}
.example details summary,.plist details summary{cursor:pointer;font-family:var(--sans);font-size:14px;font-weight:700;color:var(--forge);padding:4px 0}
.wsteps{margin:8px 0;padding-left:22px;display:flex;flex-direction:column;gap:4px}
.example .ans{margin:0;padding-top:6px;border-top:1px dashed var(--line)}
.plist{margin:0;padding-left:28px;display:flex;flex-direction:column;gap:12px}
.plist > li{padding-left:4px}
.plist .pp{margin:2px 0}
.plist details > div{padding:6px 12px;background:var(--linen);border-radius:4px}
.lvl{display:inline-block;margin-right:6px;vertical-align:1px}
.lvl-hard{background:transparent;border:1px solid var(--brass);color:var(--ink)}
.lvl-challenge{background:var(--forge);color:var(--forge-ink)}
.katex{font-size:1.05em}
.katex-display{margin:.5em 0;overflow-x:auto;overflow-y:hidden;padding-block:2px}
.m.mscroll{display:inline-block;max-width:100%;overflow-x:auto;overflow-y:hidden;vertical-align:middle;padding-block:2px}
.unit-done{font-weight:600;padding:10px 14px;background:var(--linen);border-radius:6px}
.lnav{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:16px}
.lnav .btn{flex:1 1 220px;flex-direction:column;align-items:flex-start;gap:0;text-align:left}
.lnav .btn small{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;opacity:.85}
.lnav .btn.next{align-items:flex-end;text-align:right}
.lnav .btn[aria-disabled="true"]{opacity:.4;pointer-events:none}

/* unit page */
.boxes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:700px){.boxes{grid-template-columns:minmax(0,1fr)}}
.box{background:var(--linen);border-radius:8px;padding:14px 16px;font-family:var(--serif);font-size:16px;line-height:1.5}
.box ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.box ul.checklist{list-style:none;padding-left:0}
.checklist li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:6px}
.checklist li::before{content:"\2610";color:var(--forge);font-family:var(--sans);font-size:18px;line-height:1.3}
.ulessons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.ulessons li{display:flex;justify-content:space-between;gap:4px 12px;flex-wrap:wrap;align-items:baseline;padding:8px 10px;border-bottom:1px solid var(--line)}
.ulessons a{font-family:var(--serif);font-weight:600;font-size:17px;text-decoration:none}
.ulessons a:hover{text-decoration:underline}
.ulessons .n{display:inline-block;min-width:36px;color:var(--muted);font-family:var(--sans);font-variant-numeric:tabular-nums}
.ulessons .t{font-size:14px;color:var(--muted);white-space:nowrap}
.test{border-top:2px solid var(--brass);padding-top:20px;display:flex;flex-direction:column;gap:14px}
.test h3,.exam-h{font-family:var(--display);font-size:24px;color:var(--forge)}
.instr{font-family:var(--serif);font-size:16px;line-height:1.5;padding:10px 14px;background:var(--linen);border-radius:4px}
.tprobs{margin:0;padding-left:30px;display:flex;flex-direction:column;gap:14px;font-family:var(--serif);font-size:17px;line-height:1.55}
.tprobs > li{padding-left:4px}
.tp-top{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:2px;font-family:var(--sans)}
.pts{font-size:12.5px;font-weight:700;letter-spacing:.04em;padding:2px 8px;border-radius:999px;border:1px solid var(--brass);color:var(--ink);white-space:nowrap}
a.tag{text-decoration:none;color:var(--forge)}
a.tag:hover{text-decoration:underline}
.akey{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px 16px}
.akey ol{margin:0;padding-left:30px;display:flex;flex-direction:column;gap:6px;font-family:var(--serif);font-size:16px;line-height:1.5}
.reveal{align-self:flex-start}

/* course guide */
.guide-sec{display:flex;flex-direction:column;gap:10px}
.guide-sec > h3{font-family:var(--display);font-size:22px;color:var(--forge)}
.ucards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:700px){.ucards{grid-template-columns:minmax(0,1fr)}}
.ucard{background:var(--linen);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ucard h4{margin:0;font-family:var(--serif);font-size:18px;font-weight:600;line-height:1.3}
.ucard p{font-size:15px}
.ucard ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:15px}
.ucard ol a{text-decoration:none}
.ucard ol a:hover{text-decoration:underline}
.ucard ol .n{display:inline-block;min-width:32px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.tablewrap table{border-collapse:collapse;width:100%;font-size:15px}
.tablewrap th,.tablewrap td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.tablewrap tbody tr:last-child > *{border-bottom:0}
.tablewrap thead th{font-family:var(--sans);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.tablewrap tbody th{font-family:var(--display);color:var(--forge);white-space:nowrap}
.tablewrap td ul{margin:0;padding-left:18px}
.tablewrap .wnote{margin-top:6px;font-size:14px;color:var(--muted);font-style:italic}
.ptable table{min-width:420px}
.wtable{max-width:420px}
.wtable td.pc{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.materials{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.materials b{display:block;font-family:var(--sans)}

/* print */
@media print{
  :root,:root:not([data-theme="light"]),:root[data-theme="dark"]{
    color-scheme:light;--ground:#fff;--paper:#fff;--linen:#fff;--ink:#000;--muted:#333;--line:#999;--forge:#000;--forge-ink:#fff;--brass:#666;
  }
  body{background:#fff;color:#000;font-size:12pt}
  .site-head,.site-foot,.outline-toggle,.hero-pdf,.lnav,.unit-done,.reveal,[data-act],.thumb{display:none!important}
  main{padding:0;gap:12px}
  .course-layout{display:block}
  .content{border:0;padding:0}
  .course-hero .lead{display:none}
  .vids{border:1px solid #999;background:#fff}
  .pick,.bk{display:block}
  .vurl{display:block;font-size:10pt;overflow-wrap:anywhere}
  a{color:#000}
  .example,.box,.formulas,.vids,.ucard,.sidenote,.tprobs > li,.plist > li,.terms > div,.akey{break-inside:avoid}
  .tablewrap{overflow:visible;border-color:#999}
  .katex-display,.formulas .f{overflow:visible}
  h2,h3,h4,.sh,.sh-row{break-after:avoid}
}
.nw{white-space:nowrap}

/* ---------- geometry: figures and proofs (used only when the data has them) ---------- */
/* The inlined SVG carries its own class="gfig", so figure rules always say figure.gfig.
   Rules that style <p> inside .lsec are written two classes deep so they beat .lsec p. */
figure.gfig{margin:12px auto;text-align:center;max-width:100%}
figure.gfig.pfig{margin:8px 0 6px;text-align:left}
.gsvg svg{display:inline-block;max-width:100%;height:auto;color:var(--ink);overflow:visible}
.gsvg .galt{font-family:var(--sans);font-size:14px;color:var(--muted);font-style:italic;margin:6px 0}
figure.gfig figcaption{font-family:var(--sans);font-size:14px;color:var(--muted);margin-top:4px;line-height:1.4}
.figrow{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:center;align-items:flex-start;margin:6px 0 12px}
.figrow figure.gfig{margin:6px 0;flex:0 1 auto;min-width:0}
.theorem,.construction{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--forge);border-radius:8px;padding:10px 16px 12px;margin:12px 0}
.construction{border-left-color:var(--brass)}
.tgrid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 22px;align-items:start}
.tgrid.nofig{grid-template-columns:minmax(0,1fr)}
.tgrid figure.gfig{margin:6px 0;max-width:340px}
@media (max-width:700px){.tgrid{grid-template-columns:minmax(0,1fr)} .tgrid figure.gfig{max-width:100%;margin:6px auto}}
.theorem .tst,.construction .tst{margin:2px 0 4px}
.theorem .stmt{margin:0 0 6px;font-style:italic}
.tk{font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:1px 7px;border-radius:4px;background:var(--forge);color:var(--forge-ink);vertical-align:1px}
.tk-postulate,.tk-construction{background:var(--brass-soft);color:var(--slab)}
.tk-corollary{background:var(--linen);color:var(--ink);border:1px solid var(--line)}
.eu{font-family:var(--sans);font-size:13px;color:var(--muted);margin-left:6px;white-space:nowrap}
.theorem .tnote{font-size:15px;color:var(--muted);font-style:italic;margin:4px 0 0}
.proof{margin:10px 0 8px;font-size:16px}
.proof .ptitle{font-family:var(--sans);font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--muted);margin:0 0 4px}
.proof .gp{margin:2px 0}
.proof .tablewrap{margin:6px 0 2px}
table.twocol td,table.twocol th{padding:5px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.twocol th{font-family:var(--sans);font-size:13px}
table.twocol td.rn{width:1.6em;color:var(--muted);font-family:var(--sans);font-size:13px;text-align:right}
table.twocol td:nth-child(3){width:40%}
.proof ol.flow{list-style:none;padding:0;margin:6px 0;display:flex;flex-direction:column;gap:4px;counter-reset:fl}
.proof ol.flow li{border:1px solid var(--line);border-radius:6px;padding:5px 10px;background:var(--linen);counter-increment:fl}
.proof ol.flow li::before{content:"(" counter(fl) ") ";font-family:var(--sans);font-size:12.5px;color:var(--muted)}
.flow .fr{display:block;font-size:14px;color:var(--muted);font-family:var(--sans)}
.flow .ff{display:block;font-size:12.5px;color:var(--muted);font-family:var(--sans);font-style:italic}
.proof .qed{text-align:right;margin:0;color:var(--muted)}
ol.csteps{margin:4px 0 6px}
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- art: picture study, studio project, sketchbook, Scripture (used only when the data has them) ---------- */
.lsec .sub-h{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--forge);margin:12px 0 4px}
.study,.project{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:14px 18px}
.study .sh,.project .sh{margin-bottom:10px}
figure.artfig{margin:0 0 12px;text-align:center}
figure.artfig a{display:inline-block;max-width:100%}
figure.artfig img{display:block;max-width:100%;max-height:520px;width:auto;height:auto;margin:0 auto;border-radius:4px;border:1px solid var(--line);background:var(--linen)}
figure.artfig figcaption{font-family:var(--sans);font-size:14.5px;color:var(--muted);margin-top:6px;line-height:1.4}
figure.artfig .credit{display:block;font-size:12.5px;margin-top:2px}
figure.artfig .credit a{color:inherit}
.lsec h4.pj-title{margin:0 0 8px;font-family:var(--serif);font-size:20px;font-weight:600;line-height:1.3;color:var(--ink)}
.pj-mat{background:var(--linen);border-radius:6px;padding:4px 14px 10px;margin:8px 0}
.lsec .csteps{gap:6px}
.lsec ul.checklist{list-style:none;padding-left:0}
.sketch{gap:6px}
.scripture .ref{font-family:var(--sans);font-size:14px;color:var(--muted);white-space:nowrap}
.scripture p + p{margin-top:6px}
.portfolio{background:var(--linen);border-radius:8px;padding:14px 16px;font-family:var(--serif);font-size:16px;line-height:1.5}
.portfolio p{margin:0 0 .6em}
.rubric{width:100%;border-collapse:collapse}
.rubric th,.rubric td{padding:8px 12px;border-top:1px solid var(--line);text-align:left;vertical-align:top}
.rubric tbody th{font-family:var(--sans)!important;font-size:15px;color:var(--ink)!important;white-space:normal!important}
@media print{.study,.project,.portfolio,figure.artfig{break-inside:avoid}figure.artfig img{max-height:300px}}
/* art hub */
.hub{display:flex;flex-direction:column;gap:14px}
.grade-cards{list-style:none;margin:0;padding:0}
.grade-card h3{margin:0;font-family:var(--serif);font-size:20px;font-weight:600;line-height:1.3}
.grade-card .gc-go{margin-top:auto;font-family:var(--sans);font-weight:700;font-size:15px}
.hub .lsec ul{margin:.4em 0 .8em}
@media (min-width:900px){.grade-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
.grade-card .gc-go{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.grade-card .gc-pdf{font-weight:600;font-size:14px;color:var(--muted)}
.sidenote.safety{border-left-color:var(--forge)}
.sidenote.game{border-left-color:var(--focus)}
.sidenote.game b{color:var(--focus)}
.box.kits{margin-top:16px}.box.kits .cnote{margin:10px 0 0;padding:0;border:0;background:none;font-family:var(--sans);font-size:13px;color:var(--muted)}

/* Cooking: recipe card inside the kitchen project */
.recipe{border:1px solid var(--line);border-left:4px solid var(--brass);border-radius:6px;padding:8px 16px 12px;margin:12px 0;background:var(--paper)}
.recipe-name{font-family:var(--display,inherit);font-weight:700;font-size:1.1em;margin:4px 0 0}
.recipe-meta{font-family:var(--sans);font-size:13px;color:var(--muted);margin:2px 0 6px}
ul.ingredients{columns:2;column-gap:28px;margin:4px 0 8px}
ul.ingredients li{break-inside:avoid}
@media (max-width:600px){ul.ingredients{columns:1}}
.recipe-allergens{font-family:var(--sans);font-size:13px;margin:8px 0 0}

/* Language courses: weekly vocabulary. Hidden everywhere the data has no vocabulary list. */
.vocab-note{font-family:var(--sans);font-size:14.5px;line-height:1.45;color:var(--muted);margin:0 0 8px}
.vcards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.vcard{background:var(--linen);border:1px solid var(--line);border-radius:8px;padding:10px 12px 12px;min-width:0}
.vcard .vw{font-family:var(--serif);font-weight:600;font-size:20px;line-height:1.25;margin:0;color:var(--ink)}
.vcard .vtr{display:block;font-family:var(--sans);font-weight:600;font-size:13px;letter-spacing:.01em;color:var(--muted);margin-top:1px}
.vcard .vpr{font-family:var(--sans);font-weight:700;font-size:15px;letter-spacing:.03em;color:var(--forge);margin:3px 0 0}
.vcard .vf{font-family:var(--sans);font-size:13.5px;line-height:1.35;color:var(--muted);margin:4px 0 0}
.vcard .vd{font-family:var(--serif);font-size:16.5px;line-height:1.35;margin:2px 0 0}
.vcard .vy{font-family:var(--sans);font-size:13.5px;color:var(--muted);margin:6px 0 0}
.vcard .vy span{font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:11px;margin-right:4px}
@media (max-width:700px){.vcards{grid-template-columns:minmax(0,1fr)}}
@media print{
  .vcards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .vcard{break-inside:avoid;background:#fff;border:1px solid #999}
  .vcard .vpr{color:#000}
}

/* Optional outline groups (course.groups, e.g. Level 1/2/3) and day labels inside numbered lists (item.group) */
.ogroup{margin:10px 0 0;padding:0 2px;display:flex;flex-direction:column;gap:1px;border-top:2px solid var(--brass);padding-top:8px}
.ogroup:first-of-type{margin-top:4px}
.ogroup .ogt{font-family:var(--display);font-weight:700;color:var(--forge);font-size:16px;letter-spacing:.04em}
.ogroup .ogs{font-family:var(--sans);font-size:13px;color:var(--muted)}
.plist > li.pgroup,.tprobs > li.pgroup{list-style:none;margin:6px 0 -4px -28px;padding:0}
.pgroup span{font-family:var(--sans);font-size:12.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--forge);border-bottom:1px solid var(--line);display:block;padding-bottom:2px}

/* Vocabulary games. The row is empty, and these rules unused, on courses with no word list. */
.play-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}
.play-kicker{font-family:var(--sans);font-weight:700;color:var(--forge);letter-spacing:.02em}
.play-row .btn{min-height:44px}
.play-intro{margin:0}
.games-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
.week-label{font-weight:700;display:flex;align-items:center;gap:8px;min-width:0}
.week-pick{font:inherit;font-weight:700;color:var(--ink);background:var(--paper);border:2px solid var(--line);border-radius:6px;min-height:44px;max-width:100%;padding:6px 10px}
.game-tabs{display:flex;flex-wrap:wrap;gap:8px}
.game-tabs a{display:inline-flex;align-items:center;min-height:44px;padding:6px 12px;border:2px solid var(--forge);border-radius:6px;text-decoration:none;font-weight:700;color:var(--forge)}
.game-tabs a[aria-current="page"]{background:var(--forge);color:var(--forge-ink)}
.seg{display:flex;flex-wrap:wrap;width:fit-content;max-width:100%;border:2px solid var(--forge);border-radius:8px;overflow:hidden}
.seg button{appearance:none;border:0;background:transparent;color:var(--forge);font-family:var(--sans);font-weight:700;font-size:15px;min-height:44px;padding:8px 12px;cursor:pointer}
.seg button + button{border-left:2px solid var(--forge)}
.seg button[aria-pressed="true"]{background:var(--forge);color:var(--forge-ink)}
.game-choices{display:flex;flex-wrap:wrap;gap:10px}
.back-lesson{margin:0}
.week-picks{list-style:none;margin:0;padding:0}
.week-picks li{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line)}
.wk-n{font-variant-numeric:tabular-nums;font-weight:700;color:var(--muted);min-width:2.2em}
.wk-t{font-family:var(--serif);font-weight:600;flex:1 1 12em}
.wk-links{font-weight:700}
.left-out{padding:10px 12px;background:var(--linen);border-radius:6px;font-family:var(--serif)}
.xw-scroll,.wf-scroll{max-width:100%;overflow-x:auto}
.xw-grid{border-collapse:collapse;touch-action:manipulation}
.xw-grid td{padding:0;width:40px;height:42px}
.xw-block{background:var(--ink)}
.xw-cell{appearance:none;display:flex;align-items:flex-end;justify-content:center;width:40px;height:42px;padding:0 0 5px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);font-family:var(--serif);font-weight:600;font-size:18px;line-height:1.15;position:relative;cursor:pointer;overflow:visible}
.xw-cell sup{position:absolute;top:1px;left:2px;font-family:var(--sans);font-size:9px;font-weight:700;line-height:1}
.xw-cell.in{background:var(--linen)}
.xw-cell.cur{outline:3px solid var(--forge);outline-offset:-3px;z-index:1}
.xw-cell.done{font-weight:700}
.clue-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px}
.clue-play,.clue-print{margin:0;padding-left:1.6em}
.clue-play li,.clue-print li{margin:0 0 4px}
.clue-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:transparent;border:0;border-radius:6px;padding:8px;color:var(--ink);font-family:var(--serif);font-size:16.5px;line-height:1.35;cursor:pointer}
.clue-btn.on{background:var(--linen)}
.clue-btn b{font-family:var(--serif);color:var(--forge)}
.clue-btn i,.wf-bank i,.hm-pr{font-style:normal;font-family:var(--sans);font-weight:700;color:var(--forge);font-size:15px}
.wf-grid{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));width:min(100%,calc(var(--n) * 42px));touch-action:none;user-select:none;-webkit-user-select:none}
.wf-cell{appearance:none;aspect-ratio:1;border:1px solid var(--ink);background:var(--paper);color:var(--ink);font-family:var(--serif);font-weight:700;font-size:clamp(13px,2.4vw,20px);line-height:1.15;padding:0;cursor:pointer;overflow:visible}
.wf-cell.sel{background:var(--linen);outline:3px solid var(--forge);outline-offset:-3px;z-index:1}
.wf-cell.found{background:var(--linen);box-shadow:inset 0 0 0 2px var(--brass)}
.wf-bank{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.wf-bank li{background:var(--linen);border:1px solid var(--line);border-radius:8px;padding:6px 10px;display:flex;flex-direction:column;gap:1px;font-family:var(--serif);font-weight:600}
.wf-bank li.found > span{text-decoration:line-through;color:var(--muted)}
.wf-bank small{font-family:var(--sans);font-weight:600;color:var(--muted);font-size:13px}
.wf-status{color:var(--muted);font-weight:700}
.games-actions{display:flex;flex-wrap:wrap;gap:8px}
.hm-layout{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:16px;align-items:center}
.hm-svg{width:100%;height:auto;color:var(--ink)}
.hm-hint{font-family:var(--serif);font-size:18px}
.hm-blanks{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0;font-family:var(--serif);font-size:28px}
.hm-blanks span{min-width:.9em;min-height:1.15em;border-bottom:2px solid var(--ink);text-align:center;line-height:1.1}
.hm-keys{display:flex;flex-wrap:wrap;gap:6px}
.hm-key{appearance:none;min-width:42px;min-height:44px;padding:4px 8px;border:2px solid var(--line);border-radius:6px;background:var(--paper);color:var(--ink);font-family:var(--serif);font-weight:700;font-size:18px;cursor:pointer}
.hm-key.good{border-color:var(--forge);color:var(--forge)}
.hm-key.bad{opacity:.35}
.hm-key:disabled{cursor:default}
.hm-reveal{background:var(--linen);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.hm-proper{font-family:var(--serif);font-size:28px;font-weight:600;margin:0}
.hm-count{font-weight:700;color:var(--muted)}
.hm-end{font-family:var(--serif);font-size:18px}
.screen-key{margin-top:4px}
.screen-key summary{cursor:pointer;font-weight:700;color:var(--forge);min-height:44px;display:flex;align-items:center}
.screen-key .akey,.screen-key .bank-print{margin-top:8px}
.game-sheet{display:none}
@media (max-width:700px){
  .clue-cols{grid-template-columns:minmax(0,1fr)}
  .hm-layout{grid-template-columns:minmax(0,1fr)}
  .xw-grid td,.xw-cell,.xw-block{width:34px;height:36px}
  .xw-cell{font-size:16px;padding-bottom:3px}
}
@media print{
  .play-row,.play-intro,.screen-key{display:none!important}
  body:has(.game-sheet) .course-hero,
  body:has(.game-sheet) .outline-toggle,
  body:has(.game-sheet) .game-live,
  body:has(.game-sheet) .games-tools,
  body:has(.game-sheet) .seg,
  body:has(.game-sheet) .back-lesson,
  body:has(.game-sheet) .content > .eyebrow,
  body:has(.game-sheet) .content > h2,
  body:has(.game-sheet) .content > .vocab-note{display:none!important}
  body:has(.game-sheet) .game-sheet{display:block!important;color:#000;background:#fff}
  .game-sheet{color:#000;background:#fff}
  .sheet-head h3{font-family:Georgia,'Times New Roman',serif;font-size:18pt;margin:0 0 4pt}
  .sheet-course{font-size:11pt;margin:0 0 2pt}
  .sheet-lines{margin:6pt 0 10pt}
  .name-line{display:inline-block;min-width:2.1in;border-bottom:1px solid #000;margin:0 18px 0 6px}
  .print-key{break-before:page}
  .psq{border-collapse:collapse;margin:6pt 0 10pt}
  .psq td{width:28px;height:30px;border:1px solid #000;text-align:center;vertical-align:bottom;padding:0 0 2px;font-family:Georgia,'Times New Roman',serif;font-size:13pt;font-weight:700;line-height:1.05;color:#000;background:#fff;position:relative}
  .psq td.block{background:#000;border-color:#000;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .psq td sup{position:absolute;top:0;left:1px;font-size:7pt;font-weight:700;line-height:1}
  .wf-print td.off{color:#777;font-weight:400}
  .wf-print td.on{color:#000;font-weight:700}
  .bank-print{columns:2;list-style:none;margin:0;padding:0;font-family:Georgia,'Times New Roman',serif}
  .bank-print li{break-inside:avoid;margin:0 0 3pt}
  .clue-print{font-family:Georgia,'Times New Roman',serif;font-size:12pt}
  .game-sheet .sub-h{font-family:Georgia,'Times New Roman',serif;font-weight:700;margin:8pt 0 2pt}
}
