
:root{
  --paper:#fff; --ink:#111a28; --ink-2:#48576b; --ink-3:#7a8798;
  --rule:#d5dbe3; --rule-2:#eef1f4;
  --accent:#2b4fce; --accent-soft:#f4f6fe;
  --community:#186b4e; --community-soft:#f1f7f4;
  --warn-bg:#fbf0dc; --warn-ink:#7c5210;
  --measure:720px; --rail:288px;
  --font-body:"IBM Plex Sans",system-ui,-apple-system,sans-serif;
  --font-display:"IBM Plex Sans Condensed","IBM Plex Sans",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,monospace;
  --font-member:"IBM Plex Serif",Georgia,serif;
}
*,:before,:after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}
a{color:var(--accent);text-underline-offset:2px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.skip{background:var(--ink);color:#fff;z-index:100;padding:10px 16px;position:absolute;top:0;left:-9999px}
.skip:focus{top:8px;left:8px}
@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}

/* shell */
.shell{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);min-height:100vh}
main{min-width:0}
.doc{max-width:var(--measure);margin:0 auto;padding:40px 32px 96px}
.wide{max-width:960px}

/* rail */
.rail{background:var(--ink);color:#fff;display:flex;flex-direction:column;height:100vh;position:sticky;top:0}
.rail-head{border-bottom:1px solid #ffffff1f;padding:18px 20px 16px}
.brand{color:#fff;display:flex;align-items:baseline;gap:9px;text-decoration:none}
.brand b{font-family:var(--font-display);letter-spacing:-.01em;font-size:19px;font-weight:700}
.brand span{letter-spacing:.18em;text-transform:uppercase;color:#ffffff80;font-size:10px}
.railcta{color:#fff;border:1px solid #fff3;border-radius:3px;margin-top:16px;padding:10px 12px;
  font-size:13px;font-weight:500;text-decoration:none;display:block}
.railcta:hover{border-color:var(--accent);background:#2b4fce38}
.railcta em{font-style:normal;font-family:var(--font-mono);color:#ffffff80;margin-top:3px;font-size:10.5px;display:block}
.rail-scroll{flex:1;padding:6px 0 48px;overflow-y:auto}
.vol{border-bottom:1px solid #ffffff12;padding:12px 20px 14px}
.vol h2{font-family:var(--font-body);color:#ffffffeb;display:grid;grid-template-columns:24px 1fr;
  gap:6px;margin:0 0 7px;font-size:12.5px;font-weight:500;line-height:1.35}
.vn{color:#ffffff61;font-size:11px}
.vol ul{margin:0;padding:0 0 0 30px;list-style:none}
.vol li{margin:0 0 2px}
.vol a{color:#ffffffa8;border-radius:2px;margin-left:-8px;padding:4px 8px;font-size:12.5px;
  line-height:1.4;text-decoration:none;display:block}
.vol a:hover{color:#fff;background:#ffffff12}
.vol a[aria-current=page]{color:#fff;background:var(--accent)}
@media (width<=900px){
  .shell{grid-template-columns:1fr}
  .rail{height:auto;position:static}
  .rail-scroll{max-height:none;padding-bottom:20px}
  .doc{padding:28px 20px 72px}
}

/* article furniture */
.crumb{color:var(--ink-3);display:flex;flex-wrap:wrap;gap:8px;font-size:11.5px}
.crumb a{color:var(--ink-2);text-decoration:none}
.crumb a:hover{color:var(--accent);text-decoration:underline}
h1{font-family:var(--font-display);letter-spacing:-.02em;margin:16px 0 14px;
  font-size:clamp(28px,5vw,40px);font-weight:700;line-height:1.1}
.trust{color:var(--ink-3);letter-spacing:.02em;display:flex;flex-wrap:wrap;gap:10px;font-size:11.5px;margin-bottom:22px}
hr.hard{border:0;border-top:1px solid var(--rule);margin:26px 0 34px}

.s-{font-family:var(--font-display);font-size:19px;color:var(--ink-2);margin:0 0 18px;font-weight:600}
.oneline{border-left:3px solid var(--accent);background:var(--accent-soft);padding:14px 18px;margin:0 0 16px;border-radius:0 3px 3px 0}
.whofor{color:var(--ink-2);font-size:14.5px;border-left:3px solid var(--rule);padding-left:16px;margin:0 0 26px}
.rule{background:var(--community-soft);border-left:3px solid var(--community);padding:12px 16px;border-radius:0 3px 3px 0}

details{border-top:1px solid var(--rule);margin:0}
details>summary{font-family:var(--font-display);font-size:18px;font-weight:600;padding:14px 0;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}
details>summary::-webkit-details-marker{display:none}
details>summary:before{content:"▸";color:var(--ink-3);font-size:13px;transition:transform .12s}
details[open]>summary:before{transform:rotate(90deg)}
.dbody{padding:0 0 18px}
.dbody>:first-child{margin-top:0}
p{margin:0 0 16px}
ul,ol{margin:0 0 18px;padding-left:22px}
li{margin-bottom:7px}
strong{font-weight:600}
em{font-style:italic}
blockquote{border-left:3px solid var(--rule);color:var(--ink-2);margin:0 0 20px;padding:2px 0 2px 18px}
.tw,.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 22px}
table{border-collapse:collapse;border:1px solid var(--rule);width:100%;min-width:460px;font-size:14px}
th{text-align:left;font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-3);
  border-bottom:1px solid var(--rule);background:#f7f9fb;padding:10px 12px;font-size:10.5px;font-weight:500}
td{vertical-align:top;border-bottom:1px solid var(--rule-2);padding:9px 12px}
tr:last-child td{border-bottom:0}
code{font-family:var(--font-mono);background:#f2f5f8;border-radius:2px;padding:1px 5px;font-size:.88em}
.key{border-left:3px solid var(--accent);background:var(--accent-soft);padding:14px 18px;margin:0 0 20px;border-radius:0 3px 3px 0}
.watch{border-left:3px solid #9a6510;background:var(--warn-bg);padding:14px 18px;margin:0 0 20px;border-radius:0 3px 3px 0}
.key p:last-child,.watch p:last-child{margin-bottom:0}

.xdead{color:var(--ink-3);border-bottom:1px dashed var(--ink-3);cursor:help}
.xdash{color:var(--ink-3)}
.rellist{list-style:none;padding:0}
.rellist li{margin-bottom:8px;font-size:14.5px}

.disclaim{font-size:13.5px;color:var(--ink-2);border:1px solid var(--rule);
  border-left:3px solid var(--warn-ink);background:var(--warn-bg);padding:12px 16px;
  border-radius:0 3px 3px 0;margin:26px 0 0}
.disclaim-rate{border-left-color:var(--community);background:var(--community-soft)}

/* community */
.community{border-top:3px solid var(--ink);margin-top:64px;padding-top:26px}
.community h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:22px}
.community .sub{font-family:var(--font-mono);color:var(--ink-3);margin:0 0 20px;font-size:11.5px}
.state{font-family:var(--font-member);border:1px solid var(--rule);border-left:3px solid var(--community);
  background:var(--community-soft);border-radius:0 3px 3px 0;padding:20px 22px}
.state p{margin:0 0 10px;font-size:15.5px}
.state p:last-of-type{margin-bottom:0}
.thin{color:var(--ink-2);font-size:14.5px}
.cta{font-family:var(--font-body);color:var(--community);border:1px solid var(--community);
  border-radius:3px;margin-top:14px;padding:9px 14px;font-size:13.5px;font-weight:500;
  text-decoration:none;display:inline-block}
.cta:hover{background:var(--community);color:#fff}

/* sources + pager */
.sources{border-top:1px solid var(--rule);margin-top:52px;padding-top:22px}
.sources h2{font-family:var(--font-display);margin:0 0 4px;font-size:20px}
.sources .note{color:var(--ink-3);margin:0 0 14px;font-size:13.5px}
.pager{border-top:1px solid var(--rule);display:flex;gap:14px;margin-top:52px;padding-top:22px}
.pg{border:1px solid var(--rule);max-width:48%;color:var(--ink);border-radius:3px;flex:1;
  padding:14px 16px;text-decoration:none}
.pg:hover{border-color:var(--accent)}
.pg small{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;font-size:10px;display:block}
.pg span{font-size:14px;font-weight:500;line-height:1.4;display:block}
.pg.nx{text-align:right;margin-left:auto}
@media (width<=900px){.pager{flex-direction:column}.pg,.pg.nx{text-align:left;max-width:none}}

/* home + hub */
.hero{border-bottom:1px solid var(--rule);padding-bottom:34px;margin-bottom:34px}
.hero h1{margin-top:0;font-size:clamp(32px,6vw,52px)}
.lede{font-size:clamp(18px,2.4vw,22px);line-height:1.5;color:var(--ink);border-left:3px solid var(--accent);padding-left:18px;margin:0 0 22px}
.btnrow{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.btn{display:inline-block;background:var(--accent);color:#fff;border:1px solid var(--accent);
  border-radius:3px;padding:11px 18px;font-size:14.5px;font-weight:500;text-decoration:none}
.btn:hover{background:#2140ab;border-color:#2140ab}
.btn.ghost{background:transparent;color:var(--accent)}
.btn.ghost:hover{background:var(--accent-soft)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (width<=760px){.grid2{grid-template-columns:1fr}}
.panel{border:1px solid var(--rule);border-radius:3px;padding:20px 22px}
.panel h3{font-family:var(--font-display);margin:0 0 8px;font-size:19px}
.panel p{font-size:14.5px;color:var(--ink-2);margin-bottom:10px}
.soon{border-left:3px solid var(--warn-ink);background:var(--warn-bg)}
.vollist{border-top:1px solid var(--rule);padding-top:18px;margin-top:30px}
.vollist h2{font-family:var(--font-display);font-size:21px;margin:0 0 4px}
.vollist .cnt{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px;margin:0 0 12px}
.vollist ul{columns:2;column-gap:28px;list-style:none;padding:0}
@media (width<=760px){.vollist ul{columns:1}}
.vollist li{margin-bottom:6px;font-size:14.5px;break-inside:avoid}

/* email form */
.emailbox{border:1px solid var(--rule);border-left:3px solid var(--accent);background:var(--accent-soft);
  border-radius:0 3px 3px 0;padding:20px 22px;margin:34px 0}
.emailbox h3{font-family:var(--font-display);margin:0 0 6px;font-size:19px}
.emailbox p{font-size:14.5px;color:var(--ink-2);margin-bottom:14px}
.ef{display:flex;gap:8px;flex-wrap:wrap}
.ef input[type=email]{flex:1;min-width:220px;border:1px solid var(--rule);border-radius:3px;
  padding:10px 12px;font-family:inherit;font-size:14.5px;background:#fff;color:var(--ink)}
.ef button{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:3px;
  padding:10px 18px;font-family:inherit;font-size:14.5px;font-weight:500;cursor:pointer}
.ef button:hover{background:#2140ab}
.efmsg{font-size:13.5px;margin-top:10px;min-height:1.2em}
.efmsg.err{color:#b3311f}
.efmsg.ok{color:var(--community)}
.founding{border:1px solid var(--community);border-radius:3px;padding:18px 20px;margin:28px 0;background:var(--community-soft)}
.founding h3{font-family:var(--font-display);margin:0 0 8px;font-size:18px;color:var(--community)}
.founding ul{margin:0;padding-left:20px;font-size:14.5px;color:var(--ink-2)}

footer.site{border-top:1px solid var(--rule);margin-top:64px;padding:24px 0 0;font-size:13px;color:var(--ink-3)}
footer.site a{color:var(--ink-2)}
footer.site .fl{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:10px}

/* search */
.railsearch{position:relative;margin-top:10px}
.railsearch input{width:100%;background:#ffffff14;border:1px solid #ffffff33;color:#fff;
  border-radius:3px;padding:9px 11px;font:inherit;font-size:13px}
.railsearch input::placeholder{color:#ffffff6b}
.railsearch input:focus{background:#ffffff21;border-color:var(--accent);outline:none}
.qres{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 4px);background:#fff;
  border:1px solid var(--rule);border-radius:3px;list-style:none;margin:0;padding:4px;
  max-height:340px;overflow-y:auto;box-shadow:0 8px 24px #0000002e}
.qres li{margin:0}
.qres a{display:block;padding:7px 9px;font-size:13px;color:var(--ink);text-decoration:none;border-radius:2px}
.qres a:hover,.qres a.on{background:var(--accent-soft);color:var(--accent)}
.qres .qsec{font-family:var(--font-mono);font-size:10px;color:var(--ink-3);display:block}
.qres .none{padding:9px;font-size:13px;color:var(--ink-3)}

/* mobile nav toggle */
.navtoggle{display:none;width:100%;margin-top:10px;background:transparent;color:#fff;
  border:1px solid #ffffff33;border-radius:3px;padding:9px 12px;font:inherit;font-size:13px;cursor:pointer}
.navtoggle:hover{border-color:var(--accent)}
.navtoggle[aria-expanded=true]:after{content:" ▴"}
.navtoggle[aria-expanded=false]:after{content:" ▾"}
@media (width<=900px){
  .navtoggle{display:block}
  .rail-scroll{display:none}
  .rail-scroll.open{display:block}
}

/* expand / collapse bar */
.secbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 4px;
  padding:8px 0;border-top:1px solid var(--rule)}
.sb{background:transparent;border:1px solid var(--rule);border-radius:3px;color:var(--ink-2);
  padding:5px 11px;font:inherit;font-size:12.5px;cursor:pointer}
.sb:hover{border-color:var(--accent);color:var(--accent)}
.sbc{color:var(--ink-3);font-size:11px}
.sbk{margin-left:auto;color:var(--ink-3);font-size:10.5px;border:1px solid var(--rule-2);
  border-radius:2px;padding:2px 6px}
@media (width<=560px){.sbk{display:none}}

/* contribution form */
.contribform{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin-bottom:8px}
.ff{display:flex;flex-direction:column;gap:5px;min-width:0}
.ff.full{grid-column:1/-1}
.ff label{font-size:13px;font-weight:500;color:var(--ink-2)}
.ff .opt{font-weight:400;color:var(--ink-3)}
.ff input,.ff select,.ff textarea{border:1px solid var(--rule);border-radius:3px;
  padding:9px 11px;font:inherit;font-size:14.5px;background:#fff;color:var(--ink);width:100%}
.ff textarea{resize:vertical;min-height:90px}
.ff input:focus,.ff select:focus,.ff textarea:focus{border-color:var(--accent);outline:none;
  box-shadow:0 0 0 3px #2b4fce1f}
.ff .hint{font-size:12.5px;color:var(--ink-3);margin:0}
.warranty{border:1px solid var(--rule);border-left:3px solid var(--community);
  background:var(--community-soft);border-radius:0 3px 3px 0;padding:14px 16px}
.chk{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:14px;line-height:1.5}
.chk input{width:auto;margin-top:3px;flex:0 0 auto}
.contribform button{background:var(--accent);border:1px solid var(--accent);color:#fff;
  border-radius:3px;padding:11px 22px;font:inherit;font-size:15px;font-weight:500;cursor:pointer;
  justify-self:start}
.contribform button:hover{background:#2140ab}
@media (width<=620px){.contribform{grid-template-columns:1fr}}

@media print{.rail,.pager,.emailbox,.community,.secbar{display:none}.shell{display:block}details{border:0}details>summary:before{display:none}}
