/* iso.css — the course's isometric "anatomy" figures (iso-kit.js). Light paper theme, --lk-* palette. */
.iso{
  --iso-paper:#FAF7EF; --iso-top:#F7F3EA; --iso-s0:#D8D1C1; --iso-s1:#E1DBCD; --iso-s2:#E9E4D7; --iso-s3:#F0ECE2;
  --iso-hi:#171813; --iso-mid:#4A4B44; --iso-lo:#7C7D74; --iso-faint:#BDB7A9; --iso-bevel:#FFFFFF;
  --iso-lit-top:#6D8DDA; --iso-lit-s0:#10368E; --iso-lit-s1:#1546B8; --iso-lit-s2:#2552C0; --iso-lit-s3:#3A64C8; --iso-lit-line:#0B2A70;
  --iso-void:#CDC6B5; --iso-halo:#4A4433;
  /* materials: the site palette as solids. Pale for large bodies, saturated (x) for small parts. */
  --m-mem-top:#F7E7E1; --m-mem-s0:#DDB2A6; --m-mem-s1:#E6C3B9; --m-mem-s2:#EED3CB; --m-mem-s3:#F3DFD8; --m-mem-line:#8A3226;
  --m-memx-top:#E3978A; --m-memx-s0:#8E2E21; --m-memx-s1:#B83D2D; --m-memx-s2:#C55141; --m-memx-s3:#D06656; --m-memx-line:#6A2118;
  --m-work-top:#E6EFE9; --m-work-s0:#A8C3B6; --m-work-s1:#BAD0C4; --m-work-s2:#CBDCD2; --m-work-s3:#D9E6DE; --m-work-line:#1F5A49;
  --m-workx-top:#78AE9B; --m-workx-s0:#143F33; --m-workx-s1:#1F5A49; --m-workx-s2:#2A6B58; --m-workx-s3:#3B7D69; --m-workx-line:#0E3128;
  --m-steel-top:#F0F2F5; --m-steel-s0:#C2C8D3; --m-steel-s1:#CED4DE; --m-steel-s2:#DADFE7; --m-steel-s3:#E5E8EE; --m-steel-line:#3F4656;
  margin:1.8rem 0;
}
.iso-card{position:relative;border:1px solid var(--lk-rule);border-radius:4px;background:var(--iso-paper);padding:2.1rem .4rem 2.3rem;overflow:hidden}
.iso-fig,.iso-title,.iso-hint,.iso-readout{position:absolute;font-family:var(--lk-utility);font-size:.72rem;letter-spacing:.04em;color:var(--lk-ink-soft);line-height:1.3}
.iso-fig{top:.7rem;left:.9rem;font-weight:700;color:var(--iso-hi)}
.iso-title{top:.7rem;right:.9rem;text-align:right;font-weight:600}
.iso-hint{bottom:.7rem;left:.9rem;font-style:italic;max-width:48%}
.iso-readout{bottom:.7rem;right:.9rem;text-align:right;font-family:var(--lk-mono);font-size:.74rem;font-weight:600;color:var(--lk-cobalt-dark);font-variant-numeric:tabular-nums;max-width:60%}
.iso-stage{outline:none;touch-action:pan-y}
.iso-stage:focus-visible{outline:1px solid var(--iso-lo);outline-offset:6px}
.iso-svg{display:block;width:100%;height:auto;overflow:visible}
.iso-svg .f{stroke-width:.35;stroke-linejoin:round}
.iso-svg .f.tp{fill:var(--iso-top);stroke:var(--iso-top)}
.iso-svg .f.s0{fill:var(--iso-s0);stroke:var(--iso-s0)}
.iso-svg .f.s1{fill:var(--iso-s1);stroke:var(--iso-s1)}
.iso-svg .f.s2{fill:var(--iso-s2);stroke:var(--iso-s2)}
.iso-svg .f.s3{fill:var(--iso-s3);stroke:var(--iso-s3)}
.iso-svg .lit .f.tp{fill:var(--iso-lit-top);stroke:var(--iso-lit-top)}
.iso-svg .lit .f.s0{fill:var(--iso-lit-s0);stroke:var(--iso-lit-s0)}
.iso-svg .lit .f.s1{fill:var(--iso-lit-s1);stroke:var(--iso-lit-s1)}
.iso-svg .lit .f.s2{fill:var(--iso-lit-s2);stroke:var(--iso-lit-s2)}
.iso-svg .lit .f.s3{fill:var(--iso-lit-s3);stroke:var(--iso-lit-s3)}
.iso-svg .m-mem .f.tp{fill:var(--m-mem-top);stroke:var(--m-mem-top)}
.iso-svg .m-mem .f.s0{fill:var(--m-mem-s0);stroke:var(--m-mem-s0)}
.iso-svg .m-mem .f.s1{fill:var(--m-mem-s1);stroke:var(--m-mem-s1)}
.iso-svg .m-mem .f.s2{fill:var(--m-mem-s2);stroke:var(--m-mem-s2)}
.iso-svg .m-mem .f.s3{fill:var(--m-mem-s3);stroke:var(--m-mem-s3)}
.iso-svg .m-mem .ol,.iso-svg .m-mem .cr{stroke:var(--m-mem-line)}
.iso-svg .m-memx .f.tp{fill:var(--m-memx-top);stroke:var(--m-memx-top)}
.iso-svg .m-memx .f.s0{fill:var(--m-memx-s0);stroke:var(--m-memx-s0)}
.iso-svg .m-memx .f.s1{fill:var(--m-memx-s1);stroke:var(--m-memx-s1)}
.iso-svg .m-memx .f.s2{fill:var(--m-memx-s2);stroke:var(--m-memx-s2)}
.iso-svg .m-memx .f.s3{fill:var(--m-memx-s3);stroke:var(--m-memx-s3)}
.iso-svg .m-memx .ol,.iso-svg .m-memx .cr{stroke:var(--m-memx-line)}
.iso-svg .m-work .f.tp{fill:var(--m-work-top);stroke:var(--m-work-top)}
.iso-svg .m-work .f.s0{fill:var(--m-work-s0);stroke:var(--m-work-s0)}
.iso-svg .m-work .f.s1{fill:var(--m-work-s1);stroke:var(--m-work-s1)}
.iso-svg .m-work .f.s2{fill:var(--m-work-s2);stroke:var(--m-work-s2)}
.iso-svg .m-work .f.s3{fill:var(--m-work-s3);stroke:var(--m-work-s3)}
.iso-svg .m-work .ol,.iso-svg .m-work .cr{stroke:var(--m-work-line)}
.iso-svg .m-workx .f.tp{fill:var(--m-workx-top);stroke:var(--m-workx-top)}
.iso-svg .m-workx .f.s0{fill:var(--m-workx-s0);stroke:var(--m-workx-s0)}
.iso-svg .m-workx .f.s1{fill:var(--m-workx-s1);stroke:var(--m-workx-s1)}
.iso-svg .m-workx .f.s2{fill:var(--m-workx-s2);stroke:var(--m-workx-s2)}
.iso-svg .m-workx .f.s3{fill:var(--m-workx-s3);stroke:var(--m-workx-s3)}
.iso-svg .m-workx .ol,.iso-svg .m-workx .cr{stroke:var(--m-workx-line)}
.iso-svg .m-steel .f.tp{fill:var(--m-steel-top);stroke:var(--m-steel-top)}
.iso-svg .m-steel .f.s0{fill:var(--m-steel-s0);stroke:var(--m-steel-s0)}
.iso-svg .m-steel .f.s1{fill:var(--m-steel-s1);stroke:var(--m-steel-s1)}
.iso-svg .m-steel .f.s2{fill:var(--m-steel-s2);stroke:var(--m-steel-s2)}
.iso-svg .m-steel .f.s3{fill:var(--m-steel-s3);stroke:var(--m-steel-s3)}
.iso-svg .m-steel .ol,.iso-svg .m-steel .cr{stroke:var(--m-steel-line)}
.iso-svg .ln.meml{stroke:var(--lk-vermilion);stroke-width:1.1} .iso-svg .ln.workl{stroke:var(--lk-forest);stroke-width:1.1}
.iso-svg .ln.mem{stroke:var(--m-mem-line)} .iso-svg .ln.work{stroke:var(--m-work-line)}
.iso-svg .dt.mem{fill:var(--lk-vermilion)} .iso-svg .dt.work{fill:var(--lk-forest)}
.iso-keys i.k-mem{background:var(--m-memx-s1);border-color:var(--m-memx-line)}
.iso-keys i.k-mempale{background:var(--m-mem-s2);border-color:var(--m-mem-line)}
.iso-keys i.k-work{background:var(--m-workx-s1);border-color:var(--m-workx-line)}
.iso-keys i.k-workpale{background:var(--m-work-s2);border-color:var(--m-work-line)}
.iso-keys i.k-steel{background:var(--m-steel-s1);border-color:var(--m-steel-line)}
.iso-svg .ol,.iso-svg .cr,.iso-svg .ln{fill:none;stroke-linejoin:round;stroke-linecap:round}
.iso-svg .ol{stroke-width:.7}
.iso-svg .cr{stroke-width:.45}
.iso-svg .ln{stroke-width:.5}
.iso-svg .hi{stroke:var(--iso-hi)} .iso-svg .mid{stroke:var(--iso-mid)} .iso-svg .lo{stroke:var(--iso-lo)} .iso-svg .faint{stroke:var(--iso-faint)}
.iso-svg .bevel{stroke:var(--iso-bevel)}
.iso-svg .lit .ol,.iso-svg .lit .cr{stroke:var(--iso-lit-line)}
.iso-svg .ln.litl{stroke:var(--lk-cobalt);stroke-width:1.1}
.iso-svg .dt{stroke:none} .iso-svg .dt.mid{fill:var(--iso-mid)} .iso-svg .dt.lo{fill:var(--iso-lo)} .iso-svg .dt.hi{fill:var(--iso-hi)} .iso-svg .dt.lit{fill:var(--lk-cobalt)}
.iso-svg .void{fill:var(--iso-void);stroke:var(--iso-lo);stroke-width:.4}
.iso-svg .iso-halo{fill:var(--iso-halo);opacity:.16;filter:url(#iso-blur)}
.iso-svg [data-hot]{cursor:pointer}
.iso-keys{display:flex;flex-wrap:wrap;gap:.3rem 1.1rem;margin:.55rem .2rem 0;font-family:var(--lk-utility);font-size:.75rem;color:var(--lk-ink-soft)}
.iso-keys i{display:inline-block;width:.75rem;height:.75rem;margin-right:.35rem;vertical-align:-1px;border:1px solid var(--iso-mid);border-radius:2px;background:var(--iso-s2)}
.iso-keys i.k-lit{background:var(--iso-lit-s1);border-color:var(--iso-lit-line)}
.iso-keys i.k-void{background:var(--iso-void)}
.iso-keys i.k-raised{background:var(--iso-top)}
.iso-ctl{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin:.7rem .2rem 0;font-family:var(--lk-utility);font-size:.8rem;font-weight:600;color:var(--lk-ink-soft);align-items:center}
.iso-ctl .grp{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}
.iso-ctl button{font:inherit;font-size:.78rem;cursor:pointer;padding:.28rem .6rem;border-radius:3px;border:1px solid var(--lk-cobalt);background:var(--lk-paper-light);color:var(--lk-cobalt)}
.iso-ctl button[aria-pressed="true"]{background:var(--lk-cobalt);color:var(--lk-paper-light)}
.iso-ctl button:focus-visible{outline:2px solid var(--lk-cobalt);outline-offset:2px}
.iso-cap{margin:.6rem .2rem 0;font-size:.92rem;color:var(--lk-ink-soft)}
.iso-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(max-width:560px){
  .iso-card{padding:2.4rem 0 3.2rem}
  .iso-stage{margin:0 -6%}
  .iso-hint{max-width:44%}
}
@media(max-width:560px){
  .iso-card{padding:2.3rem 0 .6rem}
  .iso-stage{margin:0}
  .iso-hint,.iso-readout{position:static;display:block;max-width:none;margin:.3rem .7rem 0;text-align:left}
}
/* colour pass: figures */
/* stacked thin parts (blanks, sheets, counters) keep their material but with lighter edges */
.iso-svg .soft .ol,.iso-svg .soft .cr{stroke-opacity:.5}
