/* Doxade design system — the look of every document. Lifted from the RadioOS product-brief artifact.
   Vocabulary (see COMPONENTS.md): .hero .sub .item .grid2 .grid3 .stages .stage .chips .chip
   details.mod/.sub/.estep ul.feats .callout .aside .kick table .twrap .gloss .gterm .rf .gr .ev
   + custom elements: <rx-carousel> <rx-tabs> <rx-mermaid> <rx-embed> <rx-linear> */

:root{
  --paper:#FBFAF7; --card:#F2F0E9; --card2:#ECE9E0; --line:#E2DED2;
  --ink:#17130E; --ink2:#6E675B; --ink3:#9B9384;
  --red:#D8422A; --red-soft:#F7E3DD;
  --settled:#2E7D4F; --settled-bg:#E4F0E8;
  --direction:#2F5FA8; --direction-bg:#E3EBF7;
  --concept:#A9770F; --concept-bg:#F6ECD6;
  --open:#B3402E; --open-bg:#F8E4DF;
  --shadow:0 1px 2px rgba(23,19,14,.05),0 8px 28px rgba(23,19,14,.06);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#141210; --card:#1D1A16; --card2:#252119; --line:#2E2A23;
    --ink:#F2EEE6; --ink2:#A89F90; --ink3:#7A7365;
    --red:#F0563A; --red-soft:#3A2018;
    --settled:#5CB884; --settled-bg:#1C2E23;
    --direction:#7FA8E0; --direction-bg:#1B2534;
    --concept:#D9A83C; --concept-bg:#332A16;
    --open:#E4735C; --open-bg:#361D17;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.3);
  }
}
:root[data-theme="dark"]{
  --paper:#141210; --card:#1D1A16; --card2:#252119; --line:#2E2A23;
  --ink:#F2EEE6; --ink2:#A89F90; --ink3:#7A7365;
  --red:#F0563A; --red-soft:#3A2018;
  --settled:#5CB884; --settled-bg:#1C2E23;
  --direction:#7FA8E0; --direction-bg:#1B2534;
  --concept:#D9A83C; --concept-bg:#332A16;
  --open:#E4735C; --open-bg:#361D17;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.3);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:"Instrument Sans",system-ui,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
.mono{font-family:"IBM Plex Mono",monospace}

/* ---- top bar ---- */
header{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar{max-width:1240px;margin:0 auto;padding:0 24px;height:60px;display:flex;align-items:center;gap:16px}
.brand{display:flex;align-items:baseline;gap:9px;white-space:nowrap}
.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--red);align-self:center}
.brand b{font-family:"Archivo",sans-serif;font-weight:700;font-size:17px}
.brand span{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--ink2);letter-spacing:.1em;text-transform:uppercase}
.fbtn{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.04em;border:1.5px solid var(--line);background:transparent;color:var(--ink2);border-radius:999px;padding:5px 12px;cursor:pointer}
.fbtn:hover{border-color:var(--ink3)}
.fbtn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.fbtn .n{opacity:.65}

/* ---- layout ---- */
.shell{max-width:1240px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:210px 1fr;gap:40px}
@media(max-width:900px){.shell{grid-template-columns:1fr}nav.side{display:none}}
nav.side{position:sticky;top:84px;align-self:start;padding:26px 0}
nav.side a{display:block;font-size:13px;color:var(--ink2);text-decoration:none;padding:5px 0}
nav.side a:hover{color:var(--red)}
nav.side .grp{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);margin:16px 0 4px}
main{padding:30px 0 90px;min-width:0}

.hero{padding:26px 0 8px}
h1{font-family:"Archivo Black","Archivo",sans-serif;font-weight:400;font-size:clamp(30px,4.5vw,44px);letter-spacing:-.01em;line-height:1.05;text-wrap:balance}
.hero .v{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink2);margin-top:10px}

section{padding:34px 0 6px;border-top:1px solid var(--line);margin-top:34px}
section:first-of-type{border-top:none;margin-top:0}
h2{font-family:"Archivo",sans-serif;font-weight:700;font-size:24px;letter-spacing:-.01em;margin-bottom:6px}
.sub{color:var(--ink2);font-size:14.5px;max-width:70ch;margin-bottom:20px}
div.sub p{max-width:none;color:inherit;font-size:inherit}
.sub b,.sub strong{color:var(--ink)}
h3{font-family:"Archivo",sans-serif;font-weight:600;font-size:16.5px;margin:22px 0 8px}
p{max-width:74ch}

/* ---- status badges & items ---- */

.item{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin:12px 0}
.item h4{font-family:"Archivo",sans-serif;font-weight:600;font-size:15px;margin-bottom:6px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.item p{font-size:14px;color:var(--ink2)}
.item p b{color:var(--ink);font-weight:600}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:820px){.grid2,.grid3{grid-template-columns:1fr}}
.grid2 .item,.grid3 .item{margin:0}

/* stages timeline */
.stages{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:8px}
@media(max-width:900px){.stages{grid-template-columns:1fr}}
.stage{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 14px}
.stage .k{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;color:var(--red);margin-bottom:6px}
.stage b{font-size:13.5px;display:block;margin-bottom:5px;font-family:"Archivo",sans-serif;font-weight:600}
.stage p{font-size:12px;color:var(--ink2)}
.stage.now{border-color:var(--red);box-shadow:var(--shadow)}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0}
.chip{font-size:12.5px;background:var(--card2);border:1px solid var(--line);border-radius:999px;padding:4px 12px;color:var(--ink)}
.chip.red{background:var(--red-soft);border-color:var(--red);color:var(--red);font-weight:600}

/* modules */
details.mod{background:var(--card);border:1px solid var(--line);border-radius:14px;margin:10px 0;overflow:hidden}
details.mod summary{list-style:none;cursor:pointer;padding:14px 18px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
details.mod summary::-webkit-details-marker{display:none}
details.mod summary:hover{background:var(--card2)}
details.mod .mname{font-family:"Archivo",sans-serif;font-weight:600;font-size:14.5px}
details.mod .msurf{font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--ink3);letter-spacing:.06em;margin-left:auto}
details.mod .mbody{padding:2px 18px 16px;font-size:13.5px;color:var(--ink2);border-top:1px dashed var(--line)}
details.mod .mbody > p{padding-top:10px}
details.sub{margin:10px 0 4px 2px;border-left:2px solid var(--line);padding-left:14px}
details.sub summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;padding:4px 0}
details.sub summary::-webkit-details-marker{display:none}
details.sub .gname{font-family:"Archivo",sans-serif;font-weight:600;font-size:13px;color:var(--ink)}
details.sub .gkey{font-family:"IBM Plex Mono",monospace;font-size:9.5px;color:var(--ink3);letter-spacing:.04em}
ul.feats{list-style:none;margin:6px 0 8px;display:flex;flex-direction:column;gap:6px}
ul.feats li{font-size:12.5px;color:var(--ink2);padding-left:14px;position:relative}
ul.feats li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;background:var(--red);opacity:.55}
ul.feats li b{color:var(--ink);font-weight:600}
.modtools{display:flex;gap:8px;margin:2px 0 12px}
.modtools .fbtn{font-family:"IBM Plex Mono",monospace}
figure.vmfig{background:#FFFFFF;border:1px solid var(--line);border-radius:16px;padding:18px;overflow-x:auto;margin:14px 0}
figure.vmfig img{max-width:100%;height:auto;display:block;margin:0 auto;border:0;border-radius:0}
figure.vmfig p{max-width:none;margin:0}
figure.vmfig figcaption p{display:inline}
.vmpt p{max-width:none;margin:0}
figure.vmfig figcaption{font-size:12.5px;color:var(--ink2);margin-top:10px;font-family:"IBM Plex Mono",monospace}
.vmleg{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;margin:14px 0 6px}
@media(max-width:900px){.vmleg{grid-template-columns:1fr}}
.vmpt{display:flex;gap:10px;font-size:13px;color:var(--ink2)}
.vmpt b{color:var(--ink);font-weight:600}
.vmd{flex:none;width:17px;height:17px;transform:rotate(45deg);margin:4px 3px 0 3px;background:#F6C445;border:1.5px solid #C0392B;display:flex;align-items:center;justify-content:center}
.vmd span{transform:rotate(-45deg);font-family:"IBM Plex Mono",monospace;font-size:9px;font-weight:600;color:#1A1712}
.vmd.g{background:#1F3A2E;border-color:#2E7D4F}
.vmd.g span{color:#fff}
.caret{color:var(--ink3);font-size:11px;transition:transform .15s}
details[open] .caret{transform:rotate(90deg)}

table{border-collapse:collapse;width:100%;font-size:13.5px;margin:10px 0}
.twrap,.tableWrapper{overflow-x:auto}
th,td{border:1px solid var(--line);padding:8px 12px;text-align:left;vertical-align:top}
th{background:var(--card);font-family:"Archivo",sans-serif;font-weight:600;font-size:12.5px}
td{color:var(--ink2)}
td b{color:var(--ink)}

.callout{background:var(--red-soft);border:1px solid var(--red);border-radius:12px;padding:14px 18px;font-size:14px;margin:14px 0;max-width:none}
.callout b{color:var(--red)}
.aside{background:var(--card2);border:1px dashed var(--line);border-radius:12px;padding:14px 18px;margin:12px 0;max-width:74ch}
.aside .kick{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.14em;color:var(--ink3);margin-bottom:5px}
.aside p{font-size:13.5px;color:var(--ink2);font-style:italic}
.aside p b{color:var(--ink);font-style:normal}
.engfig{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 18px 14px;margin:14px 0}
.engfig svg{display:block;margin:0 auto;max-width:820px;width:100%;height:auto;color:var(--ink)}
.engfig figcaption{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink2);margin-top:10px;text-align:center}
/* mechanism chain */
.chain{margin:14px 0}
details.estep{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
details.estep summary{list-style:none;cursor:pointer;display:flex;gap:14px;align-items:center;padding:13px 18px}
details.estep summary::-webkit-details-marker{display:none}
details.estep summary:hover{background:var(--card2)}
details.estep summary .caret{margin-left:auto}
.en{flex:none;width:30px;height:30px;border-radius:50%;background:var(--red);color:#fff;font-family:"Archivo",sans-serif;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center}
details.estep h4{font-family:"Archivo",sans-serif;font-weight:600;font-size:15px;margin:0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
details.estep .ebody{padding:2px 18px 15px 62px;border-top:1px dashed var(--line)}
details.estep .ebody p{font-size:13.5px;color:var(--ink2)}
details.estep .ebody > p{padding-top:10px}
details.estep .ebody p b{color:var(--ink)}
.epow{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--ink3);margin-top:7px;letter-spacing:.03em}
.epow a{color:var(--direction);text-decoration:none}
.epow a:hover{text-decoration:underline}
.earr{padding:3px 0 3px 12px;color:var(--red);font-size:15px;line-height:1}
/* glossary */
.gloss{display:grid;grid-template-columns:1fr 1fr;gap:2px 26px;margin:10px 0 6px}
@media(max-width:820px){.gloss{grid-template-columns:1fr}}
.gterm{font-size:13px;color:var(--ink2);padding:9px 0;border-bottom:1px dashed var(--line)}
.gterm b{color:var(--ink);font-family:"Archivo",sans-serif;font-weight:600}
/* research base */
.gr{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:9.5px;font-weight:600;letter-spacing:.06em;border-radius:5px;padding:2px 7px;vertical-align:1px}
.gr-a{color:var(--settled);background:var(--settled-bg)}
.gr-b{color:var(--direction);background:var(--direction-bg)}
.gr-c{color:var(--concept);background:var(--concept-bg)}
.gr-d{color:var(--open);background:var(--open-bg)}
.rf{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 16px;margin:9px 0;scroll-margin-top:80px}
.rf .rhead{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.rf .rid{font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;color:var(--red)}
.rf h5{font-family:"Archivo",sans-serif;font-weight:600;font-size:13.5px;color:var(--ink)}
.rf p{font-size:12.5px;color:var(--ink2);margin-top:5px;max-width:none}
.rf p b{color:var(--ink)}
.rf .rsrc{font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--ink3);margin-top:5px}
.rf .rsrc a{color:inherit;text-decoration-color:var(--ink3)}
.rf .rsrc a:hover{color:var(--red)}
.rf .rmap{font-size:12.5px;color:var(--ink2);margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);max-width:none}
.rf .rmap b{color:var(--ink)}
.rf .rmap a{color:var(--direction);text-decoration:none}
.rf .rmap a:hover{text-decoration:underline}
.ev{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:9px;letter-spacing:.05em;color:var(--ink3);border:1px solid var(--line);border-radius:4px;padding:1px 6px;text-decoration:none;vertical-align:2px;margin-left:2px}
a.ev:hover{color:var(--red);border-color:var(--red)}
footer{border-top:1px solid var(--line);margin-top:50px;padding:24px 0;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink3)}


/* architecture diagram */
.archfig{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 12px 6px;overflow-x:auto;box-shadow:var(--shadow)}
.archfig svg{display:block;min-width:1000px;max-width:100%;height:auto;font-family:"Instrument Sans",system-ui,sans-serif}
.appcard{cursor:pointer}
.appcard .cardrect{transition:stroke .2s ease}
.appcard.active .cardrect{stroke:var(--red)!important;stroke-width:2.5px}
.appcard:focus{outline:none}
.appcard:focus .cardrect{stroke:var(--red)!important}
.cableset{opacity:0;pointer-events:none;transition:opacity .25s ease}
.cableset.on{opacity:1}

/* calculator */
.calcwrap{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:16px 0}
@media(max-width:920px){.calcwrap{grid-template-columns:1fr}}
.cpanel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 20px}
.cpanel h3{margin-top:0}
.tierrow{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 16px}
.tbtn{font-family:"Archivo",sans-serif;font-weight:600;font-size:13px;border:1.5px solid var(--line);background:transparent;color:var(--ink2);border-radius:10px;padding:8px 16px;cursor:pointer}
.tbtn:hover{border-color:var(--ink3)}
.tbtn.active{background:var(--red);border-color:var(--red);color:#fff}
.presetrow{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.pbtn{font-family:"IBM Plex Mono",monospace;font-size:11px;border:1px dashed var(--line);background:transparent;color:var(--ink2);border-radius:999px;padding:5px 12px;cursor:pointer}
.pbtn:hover{color:var(--red);border-color:var(--red)}
.ctl{margin:14px 0}
.ctl label{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink2);margin-bottom:6px}
.ctl label b{color:var(--ink);font-family:"IBM Plex Mono",monospace;font-size:13.5px;font-variant-numeric:tabular-nums}
.ctl input[type=range]{width:100%;accent-color:var(--red)}
.ctl .hint{font-size:11px;color:var(--ink3);margin-top:2px}
.toggle{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink2);margin-top:14px}
.toggle input{accent-color:var(--red);width:16px;height:16px}
.stat{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13.5px;color:var(--ink2)}
.stat:last-child{border-bottom:none}
.stat .v{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600;font-size:14.5px}
.stat.big{padding:13px 0}
.stat.big .v{font-size:20px;color:var(--red)}
.stat .v.good{color:var(--settled)}
.sgrp{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);margin:16px 0 2px}
.sgrp:first-child{margin-top:0}
.warn{background:var(--open-bg);color:var(--open);border-radius:8px;padding:8px 12px;font-size:12.5px;margin-top:12px;display:none}
.warn.show{display:block}
.note{font-size:11.5px;color:var(--ink3);font-family:"IBM Plex Mono",monospace;margin-top:12px}
.mnum{width:78px;font-family:"IBM Plex Mono",monospace;font-size:12.5px;font-variant-numeric:tabular-nums;background:var(--card2);border:1px solid var(--line);border-radius:6px;padding:4px 7px;color:var(--ink);text-align:right}
.mnum:focus{outline:2px solid var(--red);border-color:var(--red)}
td .unit{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--ink3);margin-left:3px}

/* ---- components runtime (rx-*) ---- */
rx-carousel{display:block;position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 52px 44px;margin:12px 0;overflow:hidden}
rx-carousel > *{display:none}
rx-carousel > .rx-active{display:block}
rx-carousel .rx-dots{position:absolute;left:0;right:0;bottom:12px;display:flex;justify-content:center;gap:7px}
rx-carousel .rx-dots button{width:8px;height:8px;border-radius:50%;border:0;background:var(--line);cursor:pointer;padding:0}
rx-carousel .rx-dots button.on{background:var(--red)}
rx-carousel .rx-arrow{position:absolute;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink2);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center}
rx-carousel .rx-arrow.prev{left:8px}
rx-carousel .rx-arrow.next{right:8px}
rx-carousel .rx-arrow:hover{color:var(--red);border-color:var(--red)}
rx-tabs{display:block;margin:12px 0}
rx-tabs .rx-tablist{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:12px}
rx-tabs .rx-tablist button{font:600 13px "Archivo",sans-serif;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--ink2);padding:8px 12px;cursor:pointer;margin-bottom:-1px}
rx-tabs .rx-tablist button.on{color:var(--ink);border-bottom-color:var(--red)}
rx-tabs > [data-tab]{display:none}
rx-tabs > [data-tab].rx-active{display:block}
rx-mermaid{display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin:12px 0;overflow-x:auto}
rx-mermaid svg{max-width:100%;height:auto;display:block;margin:0 auto}
rx-mermaid pre{font:12px "IBM Plex Mono",monospace;color:var(--ink3);white-space:pre-wrap}
rx-embed{display:block;margin:12px 0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
rx-embed iframe{display:block;width:100%;border:0;min-height:420px}
rx-embed .rx-cap{font:11.5px "IBM Plex Mono",monospace;color:var(--ink2);padding:8px 14px;border-top:1px solid var(--line)}
rx-linear{display:block;margin:10px 0}
.rx-issue{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-decoration:none;color:inherit}
.rx-issue:hover{border-color:var(--ink3)}
.rx-issue .rx-state{flex:none;width:12px;height:12px;border-radius:50%;border:2px solid currentColor;margin-top:5px}
.rx-issue .rx-id{font:600 11px "IBM Plex Mono",monospace;color:var(--ink3);margin-right:8px}
.rx-issue .rx-title{font-weight:600;color:var(--ink);font-size:14px}
.rx-issue .rx-meta{font-size:12px;color:var(--ink2);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap}
.rx-issue.rx-err{color:var(--open);font-size:13px}
.rx-project{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.rx-project .rx-bar{height:6px;border-radius:3px;background:var(--line);margin:8px 0 12px;overflow:hidden}
.rx-project .rx-bar i{display:block;height:100%;background:var(--settled)}
.rx-project ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.rx-project li{font-size:13px;color:var(--ink2);display:flex;gap:8px;align-items:center}
.rx-project li .rx-state{width:9px;height:9px;border-radius:50%;flex:none}
.rx-project li a{color:var(--ink);text-decoration:none}
.rx-project li a:hover{color:var(--red)}
.rx-doc h1,.rx-doc h2,.rx-doc h3,.rx-doc section{scroll-margin-top:80px}
img.rx-figure{max-width:100%;height:auto;border-radius:12px;border:1px solid var(--line)}

/* ---- islands ---- */
rx-island{display:block;position:relative;margin:14px 0}
rx-island iframe{display:block;width:100%;border:0;background:transparent}
rx-island .rx-island-cap{position:absolute;right:8px;top:6px;font:10px "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:2px 9px;cursor:help;opacity:0;transition:opacity .15s}
rx-island:hover .rx-island-cap,rx-island.rx-selected .rx-island-cap{opacity:1}
.rx-island-desc{display:none}
.rx-unknown{border:1px dashed var(--open);color:var(--open);border-radius:10px;padding:10px 14px;margin:10px 0;font-size:13px}
.callout-warning{background:var(--concept-bg);border-color:var(--concept)}
.callout-warning b{color:var(--concept)}
.callout-info{background:var(--direction-bg);border-color:var(--direction)}
.callout-info b{color:var(--direction)}
.callout-tip{background:var(--settled-bg);border-color:var(--settled)}
.callout-tip b{color:var(--settled)}
.callout > p:first-of-type{display:inline}
.callout > b.rx-ctitle,.callout > b:first-child{margin-right:6px}
.callout p{max-width:none}
.aside .kick + p{display:block}
.rx-doc > .hero + section, .rx-doc > section:first-child{border-top:none;margin-top:0}

/* ---- code ---- */
.rx-doc pre{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;font:12.5px/1.5 "IBM Plex Mono",monospace;overflow-x:auto;margin:10px 0;color:var(--ink2)}
.rx-doc pre code{background:none;padding:0;font:inherit;color:inherit}
.rx-doc code{font-family:"IBM Plex Mono",monospace;font-size:.92em;color:inherit}
.rx-doc blockquote{border-left:3px solid var(--red);padding:2px 0 2px 16px;color:var(--ink2);font-style:italic;margin:12px 0}
.rx-doc blockquote p{max-width:70ch}
.rx-doc ul,.rx-doc ol{padding-left:22px;margin:8px 0}
.rx-doc li{margin:4px 0;font-size:14.5px;color:var(--ink2)}
.rx-doc li b,.rx-doc li strong{color:var(--ink);font-weight:600}
.rx-doc li > p{margin:0;padding:0;max-width:none;font-size:inherit;color:inherit}
.rx-doc li > p + p{margin-top:4px}
.rx-doc .mbody ul,.rx-doc .ebody ul,.rx-doc .item ul,.rx-doc .rf ul{list-style:none;padding-left:0;display:flex;flex-direction:column;gap:6px;margin:6px 0 8px}
.rx-doc .mbody li,.rx-doc .ebody li,.rx-doc .item li,.rx-doc .rf li{font-size:12.5px;padding-left:14px;position:relative;margin:0;color:var(--ink2)}
.rx-doc .mbody li::before,.rx-doc .ebody li::before,.rx-doc .item li::before,.rx-doc .rf li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;background:var(--red);opacity:.55}
.rx-doc .ebody p{padding-top:10px}
.rx-doc details.sub > ul{margin-top:6px}
.rx-doc h4{font-family:"Archivo",sans-serif;font-weight:600;font-size:15px;margin:16px 0 6px}
.rx-doc h5{font-family:"Archivo",sans-serif;font-weight:600;font-size:13.5px;margin:12px 0 4px}
.rx-doc img{max-width:100%;height:auto;border-radius:12px;border:1px solid var(--line);display:block;margin:12px auto}
.rx-doc p > em:only-child{color:var(--ink2);font-size:13px}
rx-mermaid svg{min-width:min(100%, 720px)}
.rx-doc a:not(.ev):not(.chip){color:var(--direction);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--direction) 35%,transparent)}
.rx-doc a:not(.ev):not(.chip):hover{border-bottom-color:var(--direction)}
.rx-doc .rmap a,.rx-doc .rsrc a,.rx-doc .epow a{border-bottom:none}
.rx-doc .rsrc a{color:inherit;text-decoration:underline;text-decoration-color:var(--ink3)}
.rx-doc .rsrc a:hover{color:var(--red)}
.sub a b{color:inherit}
.rx-doc :is(div,figure,details,ul,ol,table,rx-island) + .sub{margin-top:14px}
/* a module card nested in a module card reads as a sub-card */
.rx-doc details.mod details.mod{margin:8px 0;border-radius:10px;background:var(--card2)}
.rx-doc details.mod details.mod summary{padding:10px 14px}
.rx-doc details.mod details.mod .mname{font-size:13px}
.rx-doc details.mod details.mod .mbody{padding:2px 14px 12px}
/* part divider: `# Part` in the body; groups the sections that follow in navigation */
.rx-doc h1.part,.rx-editor > h1{font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3);margin:40px 0 -30px;line-height:1.4;position:relative;z-index:1}
.rx-doc h1.part + section,.rx-editor > h1 + h2{margin-top:6px}

/* ---- GFM task lists ---- */
.rx-doc li.task-list-item{list-style:none;margin-left:-1.4em;display:flex;gap:.55em;align-items:flex-start}
.rx-doc li.task-list-item>input[type=checkbox]{margin:.35em 0 0;accent-color:var(--red);flex:none}
.rx-doc li.task-list-item>.task-body{flex:1;min-width:0}
.rx-doc li.task-list-item>.task-body>p{margin:0}
.rx-doc li.task-list-item[data-task=done]>.task-body,.rx-doc li.task-list-item:has(>input:checked){color:var(--ink3)}
