:root{
  --ground:#f6f8fa;
  --paper:#ffffff;
  --ink:#22262c;
  --ink-soft:#4a515b;
  --rule:#d5dbe2;
  --faint:#e8edf2;
  --accent:#2343c7;
  --accent-deep:#18308f;
  --measure:43rem;
  --sans:"Helvetica Neue",Helvetica,Arial,"Segoe UI",Roboto,system-ui,sans-serif;
  --serif:Charter,"Bitstream Charter","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  margin:0;
  background-color:var(--ground);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='97' viewBox='0 0 56 97'%3E%3Cpath d='M28 0v16M0 32l28-16 28 16v33L28 81 0 65z M28 81v16' fill='none' stroke='%23dfe5ec' stroke-width='.8'/%3E%3C/svg%3E");
  background-attachment:fixed;
  color:var(--ink);
  font-family:var(--serif);
  font-size:1.0625rem;
  line-height:1.68;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--accent-deep);text-decoration-thickness:2px}
a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{width:100%;max-width:74rem;margin:0 auto;padding:0 16px}
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:16px;top:8px;background:var(--paper);padding:.4rem .7rem;z-index:10}

.site-head{background:var(--paper);border-bottom:1px solid var(--rule)}
.brand{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .7rem;padding:1.1rem 0 .8rem;color:var(--ink);text-decoration:none}
.brand:hover{color:var(--ink)}
.mark{width:30px;height:34px;color:var(--accent);flex:0 0 auto}
.brandname{font-family:var(--sans);font-weight:700;font-size:1.45rem;letter-spacing:.01em}
.tagline{font-family:var(--sans);font-variant:small-caps;letter-spacing:.06em;color:var(--ink-soft);font-size:.98rem;min-width:0}
.contents{border-top:1px solid var(--faint);padding:.3rem 0 .9rem}
.contents>summary{font-family:var(--sans);font-variant:small-caps;letter-spacing:.08em;font-size:.95rem;cursor:pointer;color:var(--ink-soft);padding:.35rem 0;list-style:none}
.contents>summary::-webkit-details-marker{display:none}
.contents>summary::before{content:"";display:inline-block;width:.55em;height:.55em;margin-right:.5em;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s}
.contents[open]>summary::before{transform:rotate(45deg)}
.navgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:.4rem 1.6rem}
.navlabel{font-family:var(--sans);font-variant:small-caps;letter-spacing:.09em;font-size:.86rem;color:var(--accent);margin:.35rem 0 .15rem;font-weight:600}
.navgroup ul,.footindex ul{list-style:none;margin:0;padding:0}
.navgroup li{font-family:var(--sans);font-size:.9rem;line-height:1.5}
.navgroup a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent}
.navgroup a:hover{border-bottom-color:var(--accent);color:var(--accent-deep)}
.navgroup a[aria-current="page"]{color:var(--accent);border-bottom-color:var(--accent)}

main{padding:2.2rem 16px 3rem}
article{background:var(--paper);border:1px solid var(--rule);max-width:50rem;margin:0 auto;padding:2rem clamp(1rem,4vw,3.2rem) 2.6rem}
article>*{max-width:var(--measure)}
.kicker{font-family:var(--sans);font-variant:small-caps;letter-spacing:.1em;color:var(--accent);font-size:.95rem;margin:0 0 .3rem;font-weight:600}
h1,h2,h3{font-family:var(--sans);line-height:1.22;color:var(--ink);letter-spacing:-.005em}
h1{font-size:clamp(1.65rem,4.2vw,2.3rem);margin:0 0 1.1rem;font-weight:700}
h2{font-size:1.32rem;margin:2.3rem 0 .6rem;font-weight:650}
h2::before{content:"";display:block;width:90px;height:8px;margin-bottom:.9rem;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='8' viewBox='0 0 18 8'%3E%3Cpath d='M1 4l3-3h5l3 3-3 3H4z M12 4h6' fill='none' stroke='%232343c7' stroke-width='1'/%3E%3C/svg%3E") 0 0/18px 8px repeat-x}
.toc h2::before,.toc h3::before{display:none}
h3{font-size:1.08rem;margin:1.6rem 0 .4rem;font-weight:650}
p{margin:0 0 1.05rem}
.lede{font-size:1.14rem;line-height:1.6;color:var(--ink-soft)}
em{font-style:italic}
.fig{margin:1.6rem 0 1.8rem;max-width:none}
.fig img{width:100%;border:1px solid var(--rule)}
.diagram{margin:1.4rem 0 1.8rem;padding:1rem;border:1px solid var(--faint);background:#fbfcfd;max-width:none}
.diagram svg{width:100%;height:auto;display:block;color:var(--ink)}
.aside{border-left:3px solid var(--accent);padding:.2rem 0 .2rem 1rem;color:var(--ink-soft);font-size:.98rem}
.note{font-family:var(--sans);font-size:.93rem;color:var(--ink-soft);background:var(--ground);border:1px solid var(--faint);padding:.8rem 1rem}
ul.plain,ol.plain{padding-left:1.2rem;margin:0 0 1.1rem}
ul.plain li,ol.plain li{margin:.25rem 0}

.toc{max-width:none;display:grid;grid-template-columns:1fr;gap:0 2.4rem;margin:1rem 0 1.6rem}
.toc section{min-width:0}
.toc h2{margin-top:1.6rem}
.toc ol{list-style:none;margin:0;padding:0}
.toc li{display:flex;align-items:baseline;gap:.4rem;padding:.35rem 0;border-bottom:1px dotted var(--faint);min-width:0}
.toc .gloss{flex:1 1 auto;min-width:0;font-size:.95rem;color:var(--ink-soft)}
.toc .gloss strong{display:block;font-family:var(--sans);font-weight:600;color:var(--ink);font-size:1rem}
.toc .leader{flex:0 1 3rem;border-bottom:1px dotted var(--ink-soft);transform:translateY(-.3em);min-width:.8rem}
.toc a{font-family:var(--sans);font-size:.86rem;font-variant:small-caps;letter-spacing:.06em;white-space:nowrap}

dl.glossary{max-width:var(--measure);margin:1rem 0}
dl.glossary dt{font-family:var(--sans);font-weight:650;margin-top:1.1rem}
dl.glossary dd{margin:.2rem 0 0 0;padding-left:1rem;border-left:2px solid var(--faint)}
.letters{font-family:var(--sans);font-variant:small-caps;letter-spacing:.08em;color:var(--ink-soft)}

.site-foot{background:var(--paper);border-top:1px solid var(--rule);padding:0 0 2rem;font-family:var(--sans)}
.hexrule{height:10px;margin:0 0 1.4rem;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='10' viewBox='0 0 20 10'%3E%3Cpath d='M0 5h2l3-4h6l3 4h6M5 9h6' fill='none' stroke='%23b8c3d0' stroke-width='1'/%3E%3C/svg%3E") repeat-x}
.footindex{display:grid;grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr));gap:.6rem 1.4rem;font-size:.86rem}
.footindex li{line-height:1.55}
.footindex a{color:var(--ink-soft);text-decoration:none}
.footindex a:hover{color:var(--accent);text-decoration:underline}
.notice{margin:1.6rem 0 0;padding-top:1rem;border-top:1px solid var(--faint);font-size:.86rem;color:var(--ink-soft);max-width:48rem;line-height:1.55}

@media (min-width:760px){
  .toc{grid-template-columns:1fr 1fr}
  body{font-size:1.09rem}
}
@media (max-width:420px){
  article{padding:1.4rem 14px 2rem;border-left:0;border-right:0}
  main{padding:1.2rem 0 2rem}
  .toc a{white-space:normal}
}
@media print{
  body{background:none}
  .contents,.site-foot .footindex{display:none}
  article{border:0}
}
