:root{
  --teal:#0d7a6f; --teal-2:#0a5f56; --amber:#e8a13c; --amber-2:#b4780f;
  --ok:#2f9e64; --warn:#d98324; --info:#2a8c9e; --red:#c0504d;
  --bg:#f6f9f8; --bg-2:#eef3f1; --card:#ffffff; --line:#dce6e3;
  --ink:#0f1a18; --ink-2:#3f5551; --ink-3:#6b807b;
  --radius:14px; --mx:min(1120px,92vw);
  --sans:-apple-system,"Segoe UI",Roboto,system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root{--bg:#0b1412;--bg-2:#0f1c19;--card:#12211d;--line:#1f332e;
  --ink:#e9f1ef;--ink-2:#a7bab5;--ink-3:#77908a;--teal:#3cbfae;--teal-2:#7ad8c9;--amber:#f0b45c;--amber-2:#f0b45c;}}
:root[data-theme="dark"]{--bg:#0b1412;--bg-2:#0f1c19;--card:#12211d;--line:#1f332e;
  --ink:#e9f1ef;--ink-2:#a7bab5;--ink-3:#77908a;--teal:#3cbfae;--teal-2:#7ad8c9;--amber:#f0b45c;--amber-2:#f0b45c;}
:root[data-theme="light"]{--bg:#f6f9f8;--bg-2:#eef3f1;--card:#ffffff;--line:#dce6e3;
  --ink:#0f1a18;--ink-2:#3f5551;--ink-3:#6b807b;--teal:#0d7a6f;--teal-2:#0a5f56;--amber:#e8a13c;--amber-2:#b4780f;}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.6;
  -webkit-font-smoothing:antialiased;font-size:16px}
a{color:var(--teal-2);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3,h4{text-wrap:balance;letter-spacing:-.02em;margin:0;line-height:1.15}
code,.mono{font-family:var(--mono);font-size:.86em}
.wrap{width:var(--mx);margin-inline:auto}
.ey{font:600 .72rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--teal-2)}
.muted{color:var(--ink-2)}
img.logo,svg.logo{width:34px;height:34px}

/* nav */
header.nav{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;gap:22px;height:62px}
.brand{display:flex;align-items:center;gap:10px;font:800 1.12rem/1 var(--sans);letter-spacing:-.02em;color:var(--ink)}
nav.links{display:flex;gap:20px;margin-left:auto;flex-wrap:wrap}
nav.links a{color:var(--ink-2);font-weight:600;font-size:.92rem}
nav.links a:hover,nav.links a.active{color:var(--teal-2);text-decoration:none}
.tbtn{border:1px solid var(--line);background:var(--card);color:var(--ink-2);border-radius:9px;
  width:34px;height:34px;cursor:pointer;font-size:1rem}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:11px;font-weight:700;
  font-size:.94rem;border:1px solid transparent;cursor:pointer}
.btn.p{background:var(--teal);color:#fff}.btn.p:hover{background:var(--teal-2);text-decoration:none}
.btn.s{background:var(--card);border-color:var(--line);color:var(--ink)}.btn.s:hover{border-color:var(--teal);text-decoration:none}

/* hero */
.hero{padding:70px 0 34px;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:-30% -10% auto auto;width:56vw;height:56vw;
  background:radial-gradient(circle,color-mix(in srgb,var(--teal) 20%,transparent),transparent 62%);z-index:0}
.hero .wrap{position:relative;z-index:1;max-width:840px}
.hero h1{font:800 clamp(2.2rem,5.6vw,3.7rem)/1.03 var(--sans);letter-spacing:-.035em;margin:.5rem 0 .2rem}
.hero h1 .hl{color:var(--teal-2)}
.lede{font-size:clamp(1.02rem,2.1vw,1.24rem);color:var(--ink-2);max-width:62ch;margin:.7rem 0 1.3rem}
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.chip{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:7px 14px;
  font-size:.82rem;color:var(--ink-2);font-weight:600;display:flex;gap:7px;align-items:center}
.chip b{color:var(--ink);font-weight:800}
.dot{width:7px;height:7px;border-radius:50%;background:var(--ok)}

/* sections */
section.band{padding:52px 0;border-top:1px solid var(--line)}
.band h2{font-size:clamp(1.5rem,3.4vw,2.05rem);letter-spacing:-.03em;margin:.35rem 0 .3rem}
.band .sub{color:var(--ink-2);max-width:66ch;margin-bottom:28px}
.grid{display:grid;gap:14px}
.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.card h3{font-size:1.02rem;margin:.4rem 0 .3rem}
.card p{margin:0;font-size:.9rem;color:var(--ink-2)}
.ic{font-size:1.5rem}

/* download buttons */
.dl{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.store{display:flex;align-items:center;gap:11px;padding:11px 17px;border-radius:12px;border:1px solid var(--line);
  background:var(--card);color:var(--ink);font-weight:600;min-width:180px}
.store:hover{text-decoration:none;border-color:var(--teal)}
.store.on{border-color:var(--teal);box-shadow:0 1px 0 color-mix(in srgb,var(--teal) 40%,transparent)}
.store.soon{opacity:.62;cursor:not-allowed}
.store .si{font-size:1.5rem;line-height:1}
.store .st{display:flex;flex-direction:column;line-height:1.15}
.store .st small{font-size:.68rem;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.store .st b{font-size:.96rem}
.pill{font:700 .6rem/1 var(--sans);letter-spacing:.05em;text-transform:uppercase;padding:3px 7px;border-radius:999px;
  background:var(--bg-2);color:var(--ink-3);margin-left:auto}
.pill.live{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok)}

/* tags */
.tag{font:700 .66rem/1 var(--sans);letter-spacing:.04em;text-transform:uppercase;padding:4px 8px;border-radius:6px}
.tag.must{background:color-mix(in srgb,var(--teal) 16%,transparent);color:var(--teal-2)}
.tag.should{background:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber-2)}
.tag.could{background:var(--bg-2);color:var(--ink-3)}
.tag.v,.tag.crit,.tag.med{background:var(--bg-2);color:var(--ink-2)}
.tag.crit{background:color-mix(in srgb,var(--red) 15%,transparent);color:var(--red)}

/* API endpoints */
.apicard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;overflow:hidden}
.apicard h3{font-size:1.04rem;display:flex;align-items:center;gap:9px;margin-bottom:2px}
.apicard .file{font-family:var(--mono);font-size:.72rem;color:var(--ink-3)}
.apicard .cnt{margin-left:auto;font:700 .72rem/1 var(--sans);color:var(--teal-2);background:var(--bg-2);padding:4px 9px;border-radius:999px}
.apicard p{font-size:.86rem;color:var(--ink-2);margin:.5rem 0 .6rem}
.ep{display:flex;gap:8px;align-items:center;padding:5px 0;border-top:1px dashed var(--line);font-size:.8rem}
.m{font:800 .62rem/1 var(--mono);padding:3px 6px;border-radius:5px;min-width:44px;text-align:center;color:#fff}
.m.get{background:var(--info)}.m.post{background:var(--ok)}.m.put{background:var(--amber-2)}.m.del{background:var(--red)}
.ep .path{font-family:var(--mono);color:var(--ink);overflow-x:auto;white-space:nowrap}

/* datatables */
.dttable{width:100%;border-collapse:collapse;font-size:.85rem}
.dttable th,.dttable td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.dttable th{font:700 .7rem/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.dttable td code{color:var(--teal-2)}
.dtscroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
.att{font:700 .64rem/1 var(--mono);padding:3px 7px;border-radius:5px;background:var(--bg-2);color:var(--ink-2)}
.cnt{display:inline-block;font:700 .68rem/1 var(--sans);color:var(--teal-2);background:var(--bg-2);padding:3px 8px;border-radius:999px}
.cbadge{display:inline-block;font:800 .58rem/1.35em var(--mono);width:1.35em;height:1.35em;text-align:center;border-radius:50%;background:var(--info);color:#fff;vertical-align:middle}

/* journeys */
.jrow{display:grid;grid-template-columns:1.4fr 1fr auto;gap:14px;align-items:center;padding:15px 18px;
  background:var(--card);border:1px solid var(--line);border-radius:12px}
@media(max-width:640px){.jrow{grid-template-columns:1fr}}
.jrow .jn{font-weight:700;font-size:.98rem}
.jrow .jd{font-size:.84rem;color:var(--ink-2)}
.jrow .jp{font-size:.82rem;color:var(--ink-2)}
.jflow{font-family:var(--mono);font-size:.76rem;color:var(--ink-3);margin-top:3px}

/* doc prose */
.prose{max-width:74ch}
.prose p{color:var(--ink-2)}
.prose h3{margin:1.6rem 0 .5rem;font-size:1.15rem}
.prose ul{color:var(--ink-2);padding-left:20px}
.prose li{margin:.3rem 0}
.callout{border-left:3px solid var(--amber);background:var(--bg-2);border-radius:0 8px 8px 0;padding:12px 15px;
  font-size:.88rem;color:var(--ink-2);margin:14px 0}

/* demo creds */
.cred{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-top:16px;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px}
.cred .k{font:600 .72rem/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}
.cred .v{font-family:var(--mono);font-size:.92rem;color:var(--ink);font-weight:600;user-select:all}

footer{border-top:1px solid var(--line);padding:32px 0;color:var(--ink-2);font-size:.86rem}
footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center}
footer nav{display:flex;gap:16px;flex-wrap:wrap}
.badge{display:inline-flex;gap:7px;align-items:center;background:var(--bg-2);border:1px solid var(--line);
  border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:600;color:var(--ink-2)}
