:root{--pine:#1e4238;--pine-ink:#122a23;--sage:#2e5d4f;--sage-mist:#e7f0ec;--saffron:#c47b2a;--saffron-deep:#8a5417;--saffron-mist:#f6e7d0;
--p1:#4f8a7d;--p2:#3f6f7d;--p3:#7d9a4f;--p4:#7d5f4f;--p5:#6b4f7d;--paper:#f7f6f1;--card:#fff;--line:#d5e2dc;--ink:#1c2b27;--soft:#5c6f68;--bad:#a2452c}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:16.5px;line-height:1.65;font-optical-sizing:auto;text-rendering:optimizeLegibility}
.disp,h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:600;letter-spacing:-.015em;text-wrap:balance}
h4,nav,.chip,th,label,button,.fine{font-family:Inter,system-ui,sans-serif}
p,li{text-wrap:pretty}
a{color:var(--sage)}a:hover{color:var(--saffron-deep)}
#site-header{background:var(--pine);color:#f2efe6;padding:16px 26px 0}
.wordmark{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.wordmark a.brand{font-size:26px;letter-spacing:.04em;color:#f7f3e8;text-decoration:none;font-weight:600}
.wordmark .tag{font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:#d9c69a}
#site-nav{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
#site-nav a{font-size:15px;color:#e8e2d2;text-decoration:none;border:1px solid #3d6357;border-bottom:none;border-radius:10px 10px 0 0;padding:10px 18px 12px}
#site-nav a[aria-current="page"]{background:var(--paper);color:var(--pine-ink);font-weight:600}
#site-nav a:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e5b96f;outline-offset:2px}
main{max-width:1060px;margin:0 auto;padding:28px 22px 70px}
h1{color:var(--pine);font-size:34px;line-height:1.2;margin:.2em 0 .3em}
h2{color:var(--pine);font-size:25px;margin:2em 0 .4em;border-bottom:2px solid var(--saffron-mist);padding-bottom:.2em}
h3{color:var(--pine);font-size:19px;margin:1.5em 0 .3em}
h4{color:var(--saffron-deep);font-size:15px;letter-spacing:.06em;text-transform:uppercase;margin:1.2em 0 .2em}
.lede{font-size:19px;color:#31453f}
.kicker{font-family:Inter,system-ui,sans-serif;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--saffron-deep)}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 22px;margin:0 0 16px}
.card.tint{background:var(--sage-mist);border-color:var(--sage)}
.card.warn{background:var(--saffron-mist);border-color:var(--saffron)}
.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}.g5{grid-template-columns:repeat(auto-fit,minmax(min(185px,100%),1fr))}
.dom{border-top:6px solid var(--c);background:#fff;border-radius:12px;border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 16px}
.dom h3{margin:0 0 2px;color:var(--c)}.dom .role{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--soft)}
.dom ul{padding-left:18px;margin:.4em 0;font-size:14.5px}
table{border-collapse:collapse;width:100%;font-size:15px;margin:10px 0 18px;background:#fff}
th,td{text-align:left;padding:8px 11px;border-bottom:1px solid var(--line);vertical-align:top}
th{background:var(--sage-mist);color:var(--pine-ink);font-size:13.5px;letter-spacing:.03em}
.tablewrap{overflow-x:auto}
.eq{background:#fff;border:1px solid var(--line);border-left:5px solid var(--saffron);border-radius:0 12px 12px 0;padding:10px 18px;margin:14px 0;overflow-x:auto}
.chip{display:inline-block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:2px 11px;border:1px solid var(--sage);color:var(--sage);background:var(--sage-mist)}
.chip.s{border-color:var(--saffron);color:var(--saffron-deep);background:var(--saffron-mist)}
.btn{display:inline-block;font-size:15.5px;background:var(--pine);color:#fff;border:none;border-radius:999px;padding:11px 24px;cursor:pointer;text-decoration:none;min-height:46px}
.btn:hover{background:var(--sage);color:#fff}.btn.alt{background:#fff;color:var(--pine);border:1.6px solid var(--sage)}
.btn-row{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.fine{font-size:13px;color:var(--soft)}
.banner{background:var(--sage-mist);border:1px solid var(--sage);border-radius:12px;padding:11px 16px;font-size:14.5px;margin:0 0 20px}
.timeline{list-style:none;padding:0;margin:10px 0;border-left:3px solid var(--saffron)}
.timeline li{padding:2px 0 16px 20px;position:relative}.timeline li:before{content:"";position:absolute;left:-9px;top:6px;width:15px;height:15px;border-radius:50%;background:var(--saffron);border:3px solid var(--paper)}
.timeline b{font-family:Inter,system-ui,sans-serif;color:var(--pine)}
.layer{border-radius:14px;padding:16px 20px;margin:0 0 10px;color:#fff}
.l1{background:var(--p5)}.l2{background:var(--p2)}.l3{background:var(--p3)}.layer h3{color:#fff;margin:0}.layer p{margin:.2em 0 0;opacity:.95}
.arch{display:flex;flex-direction:column;gap:10px;align-items:stretch}
.arch .cns{background:var(--pine);color:#fff;border-radius:12px;padding:12px 18px;text-align:center}
.arch .outc{background:var(--saffron-mist);border:1px solid var(--saffron);border-radius:12px;padding:12px 18px;text-align:center}
.arrow{text-align:center;color:var(--soft);font-size:13px}
details{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 16px;margin:10px 0}summary{cursor:pointer;font-family:Inter,system-ui,sans-serif;color:var(--pine);font-weight:600}
code,pre{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13.5px}pre{background:#122a23;color:#e7f0ec;padding:14px 16px;border-radius:12px;overflow-x:auto}
.refs li{margin:.35em 0;font-size:15px}
.num,td,th{font-variant-numeric:tabular-nums lining-nums}
footer{max-width:1060px;margin:0 auto;padding:0 22px 46px;font-size:13px;color:var(--soft);font-family:Inter,system-ui,sans-serif}
.paper{max-width:780px;margin:0 auto;background:#fff;border:1px solid var(--line);padding:42px 54px;border-radius:6px}
.paper h1{font-size:28px;text-align:center}.paper .authors{text-align:center;color:var(--soft)}
.paper h2{font-size:21px}.paper p{text-align:justify}
@media print{#site-header,footer,.noprint{display:none}body{background:#fff}.paper{border:none;padding:0}}
@media(max-width:640px){.paper{padding:22px 18px}h1{font-size:27px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* platform demo */
.dm-row{display:grid;grid-template-columns:90px 1fr 190px;gap:4px 14px;align-items:center;margin:10px 0}
.dm-name{font-weight:600}.dm-track{position:relative;height:16px;background:#e8efe9;border-radius:8px}
.dm-ci{position:absolute;top:5px;height:6px;background:#9bb8ac;border-radius:3px}
.dm-dot{position:absolute;top:-2px;width:20px;height:20px;border-radius:50%;margin-left:-10px;border:2px solid #fff;box-shadow:0 0 0 1px #1e4238}
.dm-val{font-variant-numeric:tabular-nums;font-size:14.5px}.dm-meta{grid-column:2 / 4;font-size:12.5px;color:#5b6b63;margin-top:-4px}
#dm-chartbox{position:relative;height:340px}
.dm-flag{background:#fbefd9;border-radius:6px;padding:2px 6px}
#dm-alerts li,#dm-disc li{margin:6px 0;list-style:none}#dm-alerts,#dm-disc{padding-left:0}.dm-ack{opacity:.65}
.dm-controls{display:flex;gap:14px;flex-wrap:wrap;align-items:end;margin-bottom:12px}
.dm-controls select{font-size:15px;padding:9px 12px;min-height:44px;border:1.5px solid #9bb8ac;border-radius:10px;background:#fff}
pre.diagram{overflow-x:auto;font-size:12.5px;line-height:1.35}
@media(max-width:640px){.dm-row{grid-template-columns:1fr}.dm-meta{grid-column:1}}

select,input,textarea{max-width:100%}
mjx-container[display="true"]{overflow-x:auto;overflow-y:hidden;max-width:100%}
.paper{overflow-wrap:anywhere}
.dm-controls label{min-width:0;max-width:100%;flex:1 1 220px}
.dm-controls select{width:100%;min-width:0;max-width:100%;text-overflow:ellipsis}
p mjx-container:not([display]){display:inline-block;max-width:100%;overflow-x:auto;overflow-y:hidden;vertical-align:middle}
