:root{
  --paper:#fbfbf8; --panel:#f2f2ec; --rule:#e0e0d7; --rule-2:#c9c9be;
  --ink:#17181b; --ink-2:#55565c; --faint:#8b8c93;
  --accent:#3a3fb0; --good:#1d6b4a;

  /* inverted band — near-black on a light page */
  --g-alt:#14151b; --p-alt:#1c1e26; --r-alt:#2a2c36; --r2-alt:#3d404d;
  --i-alt:#f0f0ee; --i2-alt:#a9abb5; --f-alt:#7a7c88;
  --a-alt:#8d92ff; --good-alt:#5fbc93;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#101014; --panel:#191920; --rule:#2a2a33; --rule-2:#3b3b47;
    --ink:#e8e8ea; --ink-2:#a6a7ae; --faint:#75767e;
    --accent:#9095ff; --good:#5fbc93;
    /* on a dark page the band lifts instead of flipping to white */
    --g-alt:#191b24; --p-alt:#20232d; --r-alt:#31343f; --r2-alt:#41454f;
    --i-alt:#e8e8ea; --i2-alt:#a6a7ae; --f-alt:#75767e;
    --a-alt:#9095ff; --good-alt:#5fbc93;
  }
}
:root[data-theme="dark"]{
  --paper:#101014; --panel:#191920; --rule:#2a2a33; --rule-2:#3b3b47;
  --ink:#e8e8ea; --ink-2:#a6a7ae; --faint:#75767e;
  --accent:#9095ff; --good:#5fbc93;
  --g-alt:#191b24; --p-alt:#20232d; --r-alt:#31343f; --r2-alt:#41454f;
  --i-alt:#e8e8ea; --i2-alt:#a6a7ae; --f-alt:#75767e;
  --a-alt:#9095ff; --good-alt:#5fbc93;
}

/* An inverted band re-points the same tokens, so every child adapts
   without any component needing to know which ground it sits on. */
.invert{
  background:var(--g-alt);
  --paper:var(--g-alt); --panel:var(--p-alt); --rule:var(--r-alt); --rule-2:var(--r2-alt);
  --ink:var(--i-alt); --ink-2:var(--i2-alt); --faint:var(--f-alt);
  --accent:var(--a-alt); --good:var(--good-alt);
  color:var(--ink); border-top:none;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:16.5px; line-height:1.7; -webkit-font-smoothing:antialiased;
}
a{color:var(--accent); text-decoration:none; border-bottom:1px solid var(--rule-2)}
a:hover{border-bottom-color:var(--accent)}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent); outline-offset:3px}
h1,h2,h3{margin:0; font-weight:400; text-wrap:balance}
p{margin:0}

.col{max-width:760px; margin:0 auto; padding:0 26px}
.prose{max-width:64ch; color:var(--ink-2)}
.prose p + p{margin-top:18px}
.prose strong{color:var(--ink); font-weight:500}

.mono,code,pre,.art,table{font-family:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace}
.label{
  font-family:"IBM Plex Mono",monospace; font-size:11.5px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--faint); margin:0;
}
.label b{color:var(--accent); font-weight:500}

/* ---- banner ---- */
.banner{background:var(--panel); border-bottom:1px solid var(--rule);
  font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--ink-2)}
.banner .col{padding:9px 26px; display:flex; gap:6px 14px; flex-wrap:wrap; align-items:baseline}
.banner b{color:var(--accent); font-weight:500; letter-spacing:.08em;
  text-transform:uppercase; font-size:11.5px}

/* ---- header ---- */
header{position:sticky; top:0; z-index:9; background:var(--paper); border-bottom:1px solid var(--rule)}
.bar{display:flex; align-items:center; gap:20px; max-width:760px; margin:0 auto;
  padding:11px 26px; font-family:"IBM Plex Mono",monospace; font-size:13px}
.bar .nm{font-weight:600; letter-spacing:-.01em; color:var(--ink); white-space:nowrap}
.bar .nm .sm{display:none}
.bar .sp{flex:1; min-width:0}
.bar a{color:var(--ink-2); border:none}
.bar a:hover{color:var(--accent)}
button.t{font:inherit; font-size:12.5px; color:var(--ink-2); background:none;
  border:1px solid var(--rule); border-radius:3px; padding:2px 9px; cursor:pointer}
button.t:hover{border-color:var(--rule-2); color:var(--ink)}
@media (max-width:560px){
  .bar{gap:14px; padding-left:20px; padding-right:20px}
  .bar a[data-opt]{display:none}
  .bar .nm .lg{display:none}
  .bar .nm .sm{display:inline}
}
@media (max-width:440px){
  .bar{gap:11px; padding-left:16px; padding-right:16px; font-size:12px}
  .bar a[href="#measured"]{display:none}
}
@media (max-width:360px){
  .bar a[href="#install"]{display:none}
}

/* ---- hero ---- */
.hero{padding:64px 0 44px}
.hero .art{color:var(--accent); font-size:11.5px; line-height:1.32; margin:0 0 40px}
h1{font-family:Newsreader,Georgia,serif; font-size:clamp(34px,6vw,50px);
  font-weight:300; letter-spacing:-.018em; line-height:1.1; margin-bottom:22px}
h1 em{font-style:normal; color:var(--faint)}
.lede{font-family:Newsreader,Georgia,serif; font-size:20px; line-height:1.6;
  color:var(--ink-2); font-weight:300; max-width:60ch}

/* ---- proof strip ---- */
.proof .col{padding:17px 26px; display:flex; gap:8px 26px; flex-wrap:wrap;
  font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.07em;
  text-transform:uppercase; color:var(--ink-2)}
.proof i{color:var(--good); font-style:normal; margin-right:7px}
.proof b{color:var(--ink); font-weight:500}

/* ---- sections ---- */
section{border-top:1px solid var(--rule); padding:64px 0}
h2{font-family:Newsreader,Georgia,serif; font-size:clamp(25px,4vw,32px);
  font-weight:400; letter-spacing:-.012em; margin:12px 0 20px; line-height:1.2}
h3{font-family:"IBM Plex Mono",monospace; font-size:13.5px; font-weight:600;
  letter-spacing:.01em; margin:36px 0 8px; color:var(--ink)}

.art{margin:34px 0; font-size:12.5px; line-height:1.45; color:var(--ink-2);
  overflow-x:auto; white-space:pre; -webkit-overflow-scrolling:touch}
.art b{color:var(--ink); font-weight:400}
.art i{color:var(--accent); font-style:normal}
.art u{color:var(--faint); text-decoration:none}
.cap{font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--faint); max-width:64ch}

pre.code{background:var(--panel); border:1px solid var(--rule); border-radius:4px;
  padding:16px 18px; margin:22px 0; overflow-x:auto; font-size:13px; line-height:1.7; color:var(--ink)}
pre.code .c{color:var(--faint)}
pre.code .s{color:var(--good)}
pre.code .k{color:var(--accent)}
code{font-size:.9em; background:var(--panel); padding:1px 5px; border-radius:3px}
.soon{font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--ink-2);
  border-left:2px solid var(--accent); padding:2px 0 2px 14px; margin:22px 0; max-width:64ch}

ul.mk{list-style:none; padding:0; margin:22px 0; max-width:64ch}
ul.mk li{padding:6px 0 6px 26px; position:relative; color:var(--ink-2);
  border-bottom:1px solid var(--rule); font-size:15.5px}
ul.mk li:last-child{border-bottom:none}
ul.mk li::before{position:absolute; left:0; top:6px;
  font-family:"IBM Plex Mono",monospace; font-size:13px; color:var(--faint)}
ul.mk.no li::before{content:"--"}
ul.mk.yes li::before{content:"->"; color:var(--good)}

.tw{overflow-x:auto; margin:26px 0}
table{border-collapse:collapse; font-size:13px; width:100%; min-width:520px}
th{text-align:left; font-weight:500; color:var(--faint); padding:0 18px 8px 0;
  border-bottom:1px solid var(--rule-2); font-size:11.5px;
  letter-spacing:.1em; text-transform:uppercase}
td{padding:9px 18px 9px 0; border-bottom:1px solid var(--rule); color:var(--ink-2); vertical-align:top}
td:first-child{color:var(--ink)}
td.n{text-align:right; font-variant-numeric:tabular-nums; padding-right:0; white-space:nowrap}
tr:last-child td{border-bottom:none}
table.cmp{min-width:610px}
table.cmp td:last-child{color:var(--ink)}
table.cmp th:last-child{color:var(--accent)}

.tier{margin:38px 0 0; padding-top:26px; border-top:1px solid var(--rule)}
.tier.first{border-top:none; padding-top:0}
.tier .hd{display:flex; align-items:baseline; gap:14px; flex-wrap:wrap;
  font-family:"IBM Plex Mono",monospace}
.tier .nm{font-size:16px; font-weight:600; color:var(--ink)}
.tier .pr{font-size:16px; color:var(--accent); font-variant-numeric:tabular-nums}
.tier .st{font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint)}
.tier .for{margin-top:6px; color:var(--ink-2); font-size:15.5px}

.faq{margin-top:26px; max-width:64ch}
.faq dt{font-family:"IBM Plex Mono",monospace; font-size:13.5px; font-weight:600;
  color:var(--ink); margin-top:26px}
.faq dd{margin:6px 0 0; color:var(--ink-2)}

footer{border-top:1px solid var(--rule); padding:40px 0 60px}
.fbar{display:flex; gap:8px 24px; flex-wrap:wrap; align-items:baseline;
  font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--faint)}
.fbar .sp{flex:1}
.fbar a{color:var(--ink-2); border:none}
.fbar a:hover{color:var(--accent)}
.corp{
  margin-top:22px; padding-top:18px; border-top:1px solid var(--rule);
  display:flex; gap:6px 22px; flex-wrap:wrap;
  font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--faint);
}
.corp b{color:var(--ink-2); font-weight:500}
.corp .note{width:100%; margin-top:4px}

@media (max-width:640px){
  body{font-size:15.5px}
  .col{padding:0 20px}
  .hero{padding:44px 0 34px}
  section{padding:52px 0}
  .art{font-size:10.5px}
  .hero .art{font-size:10.5px}
  .lede{font-size:18px}
  .proof .col{gap:7px 18px; font-size:11.5px}
  .banner .col{padding-left:20px; padding-right:20px}
  .tier .hd{gap:4px 12px}
  .tier .pr{font-size:15px}
}
@media (max-width:400px){
  .col{padding:0 16px}
  .banner .col{padding-left:16px; padding-right:16px}
  .art{font-size:9.5px}
  .hero .art{font-size:9.5px}
}

/* --- multi-page --- */
.bar a.nm{color:var(--ink); border:none}
.bar a.nm:hover{color:var(--accent)}
.bar a[aria-current="page"]{color:var(--accent)}
.proof a{color:var(--ink-2); border-bottom:1px solid var(--rule-2)}
.proof a:hover{color:var(--accent); border-bottom-color:var(--accent)}
.fbar a:first-child{color:var(--faint)}
.hero .label{margin-bottom:18px}
h1 + .lede{margin-top:0}
