:root{
  --bg:#faf9f5;--card:#ffffff;--text:#1f1e1d;--muted:#5f5e5a;--border:#d3d1c7;
  --hl-bg:#faeeda;--hl-text:#633806;
  --teal-f:#e1f5ee;--teal-s:#0f6e56;--teal-t:#085041;
  --coral-f:#faece7;--coral-s:#993c1d;--coral-t:#712b13;
  --purple-f:#eeedfe;--purple-s:#534ab7;--purple-t:#3c3489;
  --amber-f:#faeeda;--amber-s:#854f0b;--amber-t:#633806;
  --blue-f:#e6f1fb;--blue-s:#185fa5;--blue-t:#0c447c;
  --pink-f:#fbeaf0;--pink-s:#993556;--pink-t:#72243e;
  --gray-f:#f1efe8;--gray-s:#888780;--gray-t:#444441;
  --esp:#d85a30;--ebp:#534ab7;--link:#534ab7;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#1f1e1d;--card:#2c2c2a;--text:#f1efe8;--muted:#b4b2a9;--border:#444441;
  --hl-bg:#633806;--hl-text:#fac775;
  --teal-f:#085041;--teal-s:#5dcaa5;--teal-t:#e1f5ee;
  --coral-f:#712b13;--coral-s:#f0997b;--coral-t:#faece7;
  --purple-f:#3c3489;--purple-s:#afa9ec;--purple-t:#eeedfe;
  --amber-f:#633806;--amber-s:#ef9f27;--amber-t:#faeeda;
  --blue-f:#0c447c;--blue-s:#85b7eb;--blue-t:#e6f1fb;
  --pink-f:#72243e;--pink-s:#ed93b1;--pink-t:#fbeaf0;
  --gray-f:#444441;--gray-s:#888780;--gray-t:#d3d1c7;
  --esp:#f0997b;--ebp:#afa9ec;--link:#afa9ec;
}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 var(--sans)}
main{max-width:780px;margin:0 auto;padding:1.5rem 1rem 3rem}
h1{font-size:24px;font-weight:500;margin:0 0 .25rem;line-height:1.3}
h2{font-size:18px;font-weight:500;margin:2rem 0 .5rem}
h3{font-size:16px;font-weight:500;margin:0 0 .25rem}
p{margin:0 0 1rem}
a{color:var(--link)}
code{font-family:var(--mono);font-size:.9em;background:var(--gray-f);padding:1px 5px;border-radius:4px}
pre{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem;font-family:var(--mono);font-size:13px;overflow-x:auto;line-height:1.5}
pre code{background:none;padding:0}
.sub{color:var(--muted);margin:0 0 1.5rem;font-size:15px}
.crumbs{font-size:13px;color:var(--muted);margin-bottom:1rem}
.crumbs a{text-decoration:none}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem;margin:1rem 0}
.note{border-left:3px solid var(--amber-s);background:var(--amber-f);color:var(--amber-t);padding:.6rem .9rem;font-size:14px;margin:1rem 0;border-radius:0}
.note code{background:transparent;padding:0}
svg{display:block;width:100%;height:auto}
svg text{font-family:var(--sans);fill:var(--text)}
svg .t{font-size:14px}svg .ts{font-size:12px;fill:var(--muted)}svg .th{font-size:14px;font-weight:500}
svg .mono{font-family:var(--mono)}
.mv{transition:transform .45s ease,opacity .3s ease}
.fade{transition:opacity .3s ease,fill .3s ease,stroke .3s ease}
@media (prefers-reduced-motion:reduce){.mv,.fade{transition:none}}
.expl{font-size:15px;min-height:76px;margin:.75rem 0 1rem}
.ctrl{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
button{font:inherit;font-size:14px;color:var(--text);background:transparent;border:1px solid var(--border);border-radius:8px;padding:6px 12px;cursor:pointer}
button:hover{background:var(--gray-f)}
button.on{border-color:var(--purple-s);background:var(--purple-f);color:var(--purple-t)}
.cnt{margin-left:auto;font-size:13px;color:var(--muted)}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-top:1rem}
.legend span::before{content:"";display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px;border:1px solid}
.l-teal::before{background:var(--teal-f);border-color:var(--teal-s)!important}
.l-coral::before{background:var(--coral-f);border-color:var(--coral-s)!important}
.l-purple::before{background:var(--purple-f);border-color:var(--purple-s)!important}
.l-amber::before{background:var(--amber-f);border-color:var(--amber-s)!important}
.l-blue::before{background:var(--blue-f);border-color:var(--blue-s)!important}
.l-gray::before{background:var(--gray-f);border-color:var(--gray-s)!important;border-style:dashed!important}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:1rem 0}
.tile{display:block;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem;text-decoration:none;color:var(--text)}
.tile:hover{border-color:var(--purple-s)}
.tile .num{font-size:12px;color:var(--muted)}
.tile p{font-size:14px;color:var(--muted);margin:.25rem 0 0}
ul.keys{padding-left:1.2rem;margin:.25rem 0 0}
ul.keys li{margin:.2rem 0;font-size:15px}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);vertical-align:top}
th{font-weight:500;color:var(--muted)}
.chapnav{display:flex;justify-content:space-between;gap:12px;margin-top:2rem;font-size:14px}
.chapnav a{text-decoration:none}
footer{margin-top:2rem;font-size:13px;color:var(--muted)}
