/* ---- fonts: IBM Plex, latin subset, self-hosted (D-Y-12; SIL OFL 1.1, see fonts/OFL.txt) ---- */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans Condensed";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-sans-condensed-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Sans Condensed";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/ibm-plex-sans-condensed-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2")}

/* ---- tokens and base: carried over from the current osiris-ris.com index.html ---- */
:root{
  --ink:#0A0D12;--panel:#10151D;--panel-2:#141B25;--rule:#222B38;--rule-soft:#1A212C;
  --fog:#8794A6;--fog-dim:#5D6979;--bone:#E9EEF4;--amber:#E8A838;--amber-deep:#B47F22;--amber-glow:rgba(232,168,56,.14);
  --display:"IBM Plex Sans Condensed","Helvetica Neue Condensed",Impact,sans-serif;
  --body:"IBM Plex Sans","Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --wrap:1240px;--gut:32px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--bone);font-family:var(--body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(900px 500px at 78% -8%, rgba(232,168,56,.055), transparent 62%),radial-gradient(700px 420px at 4% 12%, rgba(90,130,190,.05), transparent 60%);
  background-attachment:fixed}
a{color:inherit}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
@media(max-width:600px){:root{--gut:16px}}
.eyebrow{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--amber);margin:0}
.eyebrow-mute{color:var(--fog-dim)}
.lede{font-size:clamp(1rem,1.6vw,1.16rem);color:var(--fog);max-width:62ch;margin:0}

.hdr{position:sticky;top:0;z-index:60;background:rgba(10,13,18,.82);backdrop-filter:blur(14px);border-bottom:1px solid var(--rule-soft)}
.hdr-in{display:flex;align-items:center;gap:22px;height:60px}
.mark{display:flex;align-items:center;gap:10px;text-decoration:none;flex:0 0 auto}
.mark-glyph{width:17px;height:17px;flex:0 0 auto;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="3.5 3.3 26.7 26.7"><defs><mask id="m"><rect x="-2" y="-2" width="38" height="38" fill="%23fff"/><circle cx="15.06" cy="14.89" r="12.25" fill="%23000"/></mask></defs><circle cx="17.6" cy="16.6" r="12.4" fill="%23B47F22" mask="url%28%23m%29"/><path fill="%23E8A838" fill-rule="evenodd" d="M3.61 14.89a11.45 11.45 0 1 0 22.9 0a11.45 11.45 0 1 0 -22.9 0ZM8.49 15.66a7.41 7.41 0 1 0 14.82 0a7.41 7.41 0 1 0 -14.82 0Z"/></svg>') center/contain no-repeat}
.mark-word{font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:.16em;text-transform:uppercase}
.mark-sub{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--fog-dim);padding-left:12px;border-left:1px solid var(--rule);margin-left:2px}
.hdr-nav{margin-left:auto;display:flex;gap:26px}
.hdr-nav a{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fog);text-decoration:none;padding:4px 0;border-bottom:1px solid transparent;transition:color .18s,border-color .18s}
.hdr-nav a:hover,.hdr-nav a:focus-visible{color:var(--bone);border-bottom-color:var(--amber)}
.hdr .btn{padding:10px 16px}
.hdr-link{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fog);text-decoration:none;padding:4px 0 4px 22px;border-left:1px solid var(--rule);transition:color .18s}
.hdr-link:hover,.hdr-link:focus-visible{color:var(--bone);text-decoration:underline;text-decoration-color:var(--amber);text-underline-offset:6px}
@media(max-width:860px){.hdr-nav,.mark-sub{display:none}.hdr .btn{margin-left:auto}.hdr-link{margin-left:auto;padding-left:0;border-left:0}.hdr .hdr-link+.btn,.hdr-link+.hdr-link{margin-left:0}}
@media(max-width:429px){.hdr-in{gap:14px}.hdr .btn{white-space:nowrap}}
@media(max-width:389px){.hdr-link+.hdr-link{display:none}}
@media(max-width:379px){.hdr-link{display:none}.hdr .hdr-link+.btn{margin-left:auto}}

.btn{font-family:var(--mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;padding:14px 26px;text-decoration:none;border:1px solid var(--amber);color:var(--ink);background:var(--amber);transition:opacity .18s;display:inline-block}
.btn:hover{opacity:.86}
.btn.ghost{background:transparent;color:var(--bone);border-color:var(--rule)}
.btn.ghost:hover{border-color:var(--fog);opacity:1}

/* ---- hero: copy left, live viewer right (replaces the "platform record" panel) ---- */
.hero{padding:clamp(40px,6vw,88px) 0 0}
.hero-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(32px,4vw,56px);align-items:center}
.hero h1{font-family:var(--display);font-weight:700;font-size:clamp(2.5rem,4.7vw,4.3rem);line-height:.94;letter-spacing:-.015em;text-transform:uppercase;margin:20px 0 22px}
.hero h1 .hl{color:var(--amber)}
.hero-lede{font-size:clamp(1.02rem,1.5vw,1.14rem);color:var(--fog);max-width:52ch;margin:0}
.hero-lede strong{color:var(--bone);font-weight:500}
.cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}
@media(max-width:980px){.hero-grid{grid-template-columns:1fr}}
@media(max-width:600px){.hero-copy{display:contents}.hero-grid{gap:24px}.hero-grid .eyebrow{order:1}.hero h1{order:2;margin:0}.viewer{order:3}.hero-lede{order:4}.cta{order:5;margin-top:0}}

.viewer{border:1px solid var(--rule);background:var(--panel);position:relative}
.vh{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--fog-dim)}
.vh .live{width:7px;height:7px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 0 var(--amber-glow);animation:live 2.4s ease-out infinite}
@keyframes live{0%{box-shadow:0 0 0 0 rgba(232,168,56,.45)}70%{box-shadow:0 0 0 8px rgba(232,168,56,0)}100%{box-shadow:0 0 0 0 rgba(232,168,56,0)}}
.vh .state{margin-left:auto;color:var(--fog)}
.vh .state b{color:var(--amber);font-weight:500}
.vb{display:grid;grid-template-columns:minmax(0,1fr) 64px;background:#000}
.img{position:relative;aspect-ratio:1/1;cursor:none;touch-action:pan-y;user-select:none;-webkit-user-select:none;outline:none}
.img:focus-visible{box-shadow:inset 0 0 0 2px var(--amber)}
.img canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.img .hud{position:absolute;font-family:var(--mono);font-size:11px;line-height:1.55;color:var(--fog);pointer-events:none;letter-spacing:.02em}
.hud b{color:var(--bone);font-weight:500}.hud i{font-style:normal;color:var(--amber)}
.hud.tl{top:10px;left:12px}.hud.tr{top:10px;right:12px;text-align:right}.hud.bl{bottom:10px;left:12px}.hud.br{bottom:10px;right:12px;text-align:right}
.scout{position:relative;border-left:1px solid var(--rule);cursor:ns-resize;touch-action:none}
.scout canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.vt{display:flex;flex-wrap:wrap;align-items:center;gap:8px 8px;padding:10px 12px;border-top:1px solid var(--rule)}
.vt button{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--fog);background:transparent;border:1px solid var(--rule);padding:8px 11px;cursor:pointer}
.vt button:hover{color:var(--bone);border-color:var(--fog-dim)}
.vt button[aria-pressed=true]{color:var(--amber);border-color:var(--amber-deep);background:rgba(232,168,56,.06)}
.vt .sep{width:1px;height:20px;background:var(--rule);margin:0 4px}
.vt .hint{margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--fog-dim)}
@media(max-width:600px){.vb{grid-template-columns:minmax(0,1fr) 40px}.img .hud{font-size:9px}.vt .hint{margin-left:0;width:100%}}

/* ---- the spine (signature, unchanged) ---- */
.spine{margin:clamp(56px,8vw,96px) 0 0;padding-bottom:clamp(48px,7vw,80px)}
.spine-cap{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:22px}
.spine-track{position:relative;height:1px;background:var(--rule);margin:38px 0 0;overflow:hidden}
.spine-pulse{position:absolute;top:-1px;left:0;width:130px;height:3px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--amber),transparent);animation:trace 7s linear infinite}
@keyframes trace{0%{transform:translateX(-140px)}100%{transform:translateX(calc(100vw + 140px))}}
.spine-nodes{display:flex;justify-content:space-between;margin-top:-6px}
.node{display:flex;flex-direction:column;align-items:center;gap:12px;flex:1 1 0;min-width:0}
.node-dot{width:11px;height:11px;border-radius:50%;background:var(--ink);border:1px solid var(--fog-dim)}
.node.key .node-dot{border-color:var(--amber);background:var(--amber);box-shadow:0 0 0 4px var(--amber-glow)}
.node-l{font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--fog-dim);text-align:center;line-height:1.35}
.node.key .node-l{color:var(--bone)}
@media(max-width:760px){.spine-nodes{flex-wrap:wrap;gap:20px 0;justify-content:flex-start}.node{flex:0 0 33.33%}.spine-cap{flex-direction:column;gap:6px}}

.rail{position:fixed;left:20px;top:50%;transform:translateY(-50%);z-index:40;display:none;flex-direction:column;gap:2px}
@media(min-width:1460px){.rail{display:flex}}
.rail-i{display:flex;align-items:center;gap:9px;text-decoration:none;padding:5px 0}
.rail-tick{width:16px;height:1px;background:var(--rule);transition:background .25s,width .25s}
.rail-t{font-family:var(--mono);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--fog-dim);transition:color .25s}
.rail-i.on .rail-tick{background:var(--amber);width:26px}.rail-i.on .rail-t{color:var(--bone)}

.mod{padding:clamp(56px,7vw,92px) 0;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft)}
.mod-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:44px;align-items:start;margin-bottom:40px}
@media(max-width:900px){.mod-head{grid-template-columns:1fr;gap:18px;margin-bottom:32px}}
.mod-stage{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.mod-num{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--amber);border:1px solid var(--amber-deep);padding:2px 7px}
.mod-stage-l{font-family:var(--mono);font-size:10px;letter-spacing:.19em;text-transform:uppercase;color:var(--fog-dim)}
.mod h2{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(1.7rem,3.6vw,2.7rem);line-height:1.02;letter-spacing:-.01em;margin:0}
.feats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule-soft);border:1px solid var(--rule-soft)}
@media(max-width:940px){.feats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.feats{grid-template-columns:1fr}}
.feat{background:var(--panel);padding:24px 22px 26px;transition:background .2s}
.feat:hover{background:var(--panel-2)}
.feat-t{font-family:var(--body);font-weight:600;font-size:14.5px;margin:0 0 8px;display:flex;align-items:baseline;gap:9px}
.feat-t::before{content:"";width:5px;height:5px;background:var(--amber);flex:0 0 auto;transform:translateY(-3px)}
.feat-d{margin:0;font-size:13.6px;line-height:1.62;color:var(--fog)}

.ftr{padding:36px 0 56px}
.ftr-in{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;align-items:center}
.ftr-t{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fog-dim)}
.ftr-legal{display:flex;flex-wrap:wrap;gap:8px 18px;justify-content:space-between;margin-top:18px;padding-top:16px;border-top:1px solid var(--rule-soft)}
.rv{opacity:0;transform:translateY(14px);transition:opacity .7s cubic-bezier(.2,.7,.3,1),transform .7s cubic-bezier(.2,.7,.3,1)}
.rv.in{opacity:1;transform:none}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
/* ---- workflows: every path a study can take, as a transit map across the roles that hold it ---- */
.wf{padding:clamp(56px,7vw,92px) 0;border-top:1px solid var(--rule-soft)}
.wf-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:44px;align-items:start;margin-bottom:28px}
@media(max-width:900px){.wf-head{grid-template-columns:1fr;gap:18px}}
.wf h2{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(1.7rem,3.6vw,2.7rem);line-height:1.02;letter-spacing:-.01em;margin:0}
.wf-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.wf-tabs button{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fog);background:transparent;border:1px solid var(--rule);padding:8px 11px;cursor:pointer;position:relative;overflow:hidden}
.wf-tabs button:hover{color:var(--bone);border-color:var(--fog-dim)}
.wf-tabs button[aria-selected=true]{color:var(--amber);border-color:var(--amber-deep);background:rgba(232,168,56,.06)}
.wf-tabs button .prog{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--amber)}
.wf-console{border:1px solid var(--rule);background:linear-gradient(180deg,#10151d,#0c1118)}
.wf-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--fog-dim)}
.wf-bar .live{width:7px;height:7px;border-radius:50%;background:var(--amber);animation:live 2.4s ease-out infinite}
.wf-bar .clock{margin-left:auto;color:var(--amber);font-variant-numeric:tabular-nums}
.wf-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px}
@media(max-width:1020px){.wf-grid{grid-template-columns:1fr}}
.wf-map{position:relative;padding:18px 18px 12px;border-right:1px solid var(--rule);min-width:0}
@media(max-width:1020px){.wf-map{border-right:0;border-bottom:1px solid var(--rule)}}
.wf-desc{font-size:14px;color:var(--fog);margin:0 0 10px;max-width:70ch;min-height:2.6em}
.wf-desc b{color:var(--bone);font-weight:500}
.wf-stage{position:relative}
.wf-stage svg{display:block;width:100%;overflow:visible}
.wf-stage svg text{paint-order:stroke;stroke:#0E141B;stroke-width:3px;stroke-linejoin:round}
.wf-lanes{position:absolute;left:0;top:0;width:150px}
.wf-lane{position:absolute;left:0;display:flex;align-items:center;gap:9px;transform:translateY(-50%)}
.wf-lane .tick{width:16px;height:1px;background:var(--rule);transition:background .25s,width .25s}
.wf-lane .who{font-size:12.5px;color:var(--fog);line-height:1.15;transition:color .25s}
.wf-lane .what{display:block;font-family:var(--mono);font-size:8.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--fog-dim)}
.wf-lane.on .tick{background:var(--amber);width:26px}.wf-lane.on .who{color:var(--bone)}
.wf-lane.used .who{color:var(--fog)}
.wf-ctl{display:flex;flex-wrap:wrap;gap:8px;padding-top:8px}
.wf-ctl button{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--rule);background:#121923;color:var(--fog);padding:8px 10px;cursor:pointer}
.wf-ctl button:hover{border-color:var(--fog-dim);color:var(--bone)}
.wf-ctl button[aria-pressed=true]{border-color:var(--amber-deep);color:var(--amber)}
.wf-side{padding:16px 18px;background:rgba(20,27,37,.55);min-width:0}
.case{border:1px solid var(--rule);background:#0d131b}
.case-top{display:flex;align-items:flex-start;gap:12px;padding:13px 14px;border-bottom:1px solid var(--rule-soft)}
.case-id{font-family:var(--display);font-weight:700;font-size:20px;line-height:1;letter-spacing:.02em}
.case-meta{font-family:var(--mono);font-size:9px;letter-spacing:.09em;color:var(--fog-dim);text-transform:uppercase;margin-top:6px}
.case-state{margin-left:auto;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--amber);border:1px solid var(--amber-deep);padding:4px 7px;white-space:nowrap}
.case-body{display:grid;grid-template-columns:1fr 1fr}
.case-cell{padding:10px 14px;border-right:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft);min-width:0}
.case-cell:nth-child(2n){border-right:0}
.case-k{font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--fog-dim)}
.case-v{font-size:12px;color:var(--bone);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.case-imgs{display:grid;grid-template-columns:repeat(8,1fr);gap:3px;padding:10px 14px 12px;min-height:46px}
.case-imgs canvas{width:100%;aspect-ratio:1/1;background:#000;display:block;opacity:0;transition:opacity .25s}
.case-imgs canvas.in{opacity:1}
.case-imgs a{grid-column:1/-1;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber);text-decoration:none;margin-top:6px}
.feed-h{margin:16px 0 4px}
.feed{height:236px;overflow:hidden;position:relative}
.feed::after{content:"";position:absolute;left:0;right:0;bottom:0;height:40px;background:linear-gradient(transparent,#121923)}
.feed-row{display:grid;grid-template-columns:44px 1fr;gap:10px;padding:8px 0;border-bottom:1px dashed var(--rule-soft);animation:feedIn .4s ease both}
.feed-time{font-family:var(--mono);font-size:9.5px;color:var(--fog-dim);font-variant-numeric:tabular-nums;padding-top:1px}
.feed-msg{font-size:11.5px;color:var(--fog);line-height:1.45}
.feed-msg b{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--amber);font-weight:500;margin-right:6px}
.feed-msg i{font-style:normal;color:var(--bone)}
.feed-proto,.feed-dev,.feed-planned{display:inline-block;margin-left:6px;font-family:var(--mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;padding:1px 5px;border:1px solid var(--rule);color:var(--fog);vertical-align:1px}
.feed-dev{border-color:var(--amber-deep);color:var(--amber)}
@keyframes feedIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.wf-bar .live{animation:none}.feed-row{animation:none}}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .spine-pulse{animation:none;opacity:.5;left:0;width:100%;background:linear-gradient(90deg,var(--amber-deep),transparent)}
  .rv{opacity:1;transform:none;transition:none}
  .vh .live{animation:none}
}

/* ---- sections 01–12: carried from the old index.html stylesheet (a671a25) ---- */
.feat-d code{font-family:var(--mono);font-size:12px;color:var(--bone);background:rgba(255,255,255,.045);padding:1px 4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.matrix-scroll{overflow-x:auto;border:1px solid var(--rule);background:var(--panel)}
table.matrix{width:100%;border-collapse:collapse;min-width:760px}
table.matrix th,table.matrix td{padding:12px 10px;border-bottom:1px solid var(--rule-soft);text-align:center}
table.matrix th:first-child,table.matrix td:first-child{text-align:left;padding-left:20px;min-width:210px}
table.matrix thead th{font-family:var(--mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--fog-dim);font-weight:500;border-bottom:1px solid var(--rule)}
table.matrix tbody td:first-child{font-size:13.5px;color:var(--bone)}
table.matrix tbody tr:last-child td{border-bottom:0}
table.matrix th:first-child,table.matrix td:first-child{position:sticky;left:0;z-index:1;background:var(--panel);box-shadow:1px 0 0 var(--rule)}
@media(max-width:620px){table.matrix th:first-child,table.matrix td:first-child{min-width:140px;padding-left:14px}table.matrix tbody td:first-child{font-size:12.5px}}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle}
.dot.full{background:var(--amber)}
.dot.part{background:linear-gradient(90deg,var(--amber) 50%,transparent 50%);border:1px solid var(--amber)}
.dot.read{background:transparent;border:1px solid var(--amber-deep)}
.dot.none{background:var(--rule)}
.legend{display:flex;flex-wrap:wrap;gap:22px;margin-top:16px}
.legend span{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--fog-dim)}
.integr{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--rule-soft);border:1px solid var(--rule-soft)}
@media(max-width:900px){.integr{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.integr{grid-template-columns:1fr}}
.int{background:var(--panel);padding:22px 20px 24px}
.int-s{font-family:var(--mono);font-size:9px;letter-spacing:.15em;text-transform:uppercase;margin-bottom:12px;color:var(--fog-dim)}
.int-s.on{color:var(--amber)}
.hub-go{margin:14px 0 0;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase}
.hub-go a{color:var(--amber);text-decoration:none;border-bottom:1px solid var(--amber-deep);padding-bottom:2px}
.hub-go a:hover{color:var(--bone);border-color:var(--bone)}
.int-n{font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:.03em;text-transform:uppercase;margin:0 0 7px}
.int-d{margin:0;font-size:13px;line-height:1.58;color:var(--fog)}
/* ---- 12: connection diagram (Y-P2a fix) ---- */
.hub{margin:0 0 28px;padding:18px 20px;border:1px solid var(--rule-soft);background:linear-gradient(180deg,var(--panel),var(--ink))}
.hub svg{display:block;width:100%;height:auto}
.hub .hn rect{fill:var(--panel-2);stroke:var(--rule);stroke-width:1}
.hub .hn.core rect{fill:var(--panel);stroke:var(--amber);stroke-width:1.5}
.hub .hn.cfg rect{stroke-dasharray:4 4}
.hub .n{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:.05em;text-transform:uppercase;fill:var(--bone)}
.hub .hn.core .n{font-size:24px;letter-spacing:.16em;fill:var(--amber)}
.hub .s{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;fill:var(--fog-dim)}
.hub .l{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;fill:var(--fog);paint-order:stroke;stroke:var(--panel);stroke-width:5px}
.hub .base{fill:none;stroke:var(--rule);stroke-width:1.5}
.hub .flow{fill:none;stroke:var(--amber);stroke-width:1.5;stroke-dasharray:3 9;animation:hubflow 1.2s linear infinite}
.hub .flow.cfg{stroke:var(--fog-dim)}
@keyframes hubflow{to{stroke-dashoffset:-12}}
@media(max-width:900px){.hub{display:none}}
@media(prefers-reduced-motion:reduce){.hub .flow{animation:none}}

/* ---------- Y-P2b: counts band (G-10) ---------- */
.band{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--panel)}
.band-in{display:grid;grid-template-columns:repeat(6,1fr)}
.band-cell{padding:26px 22px;border-right:1px solid var(--rule-soft)}
.band-cell:last-child{border-right:0}
.band-n{font-family:var(--display);font-weight:700;font-size:clamp(1.5rem,2.8vw,2.2rem);line-height:1;letter-spacing:-.01em}
.band-l{font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--fog-dim);margin-top:9px}
@media(max-width:1000px){.band-in{grid-template-columns:repeat(3,1fr)}.band-cell{border-bottom:1px solid var(--rule-soft)}.band-cell:nth-child(3n){border-right:0}}
/* ---------- Y-MPI: "nothing extra to buy" strip in Patient matching ---------- */
.mpi-zero{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--rule);background:var(--panel);margin:0 0 36px}
.mpi-zero .band-cell{border-bottom:0}.mpi-zero .band-cell:nth-child(3n){border-right:0}.mpi-zero .band-n{color:var(--amber)}
@media(max-width:600px){.mpi-zero{grid-template-columns:1fr}.mpi-zero .band-cell{border-right:0;border-bottom:1px solid var(--rule-soft);padding:18px 18px}.mpi-zero .band-cell:last-child{border-bottom:0}}
@media(max-width:560px){.band-in{grid-template-columns:repeat(2,1fr)}.band-cell{padding:20px 16px}.band-cell:nth-child(3n){border-right:1px solid var(--rule-soft)}.band-cell:nth-child(2n){border-right:0}}

/* ---------- Y-P2b: security & architecture (G-12) ---------- */
.stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:44px}
@media(max-width:1100px){.stack{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.stack{grid-template-columns:1fr;gap:32px}}
.stack-h{font-family:var(--mono);font-size:10px;letter-spacing:.19em;text-transform:uppercase;color:var(--amber);padding-bottom:12px;border-bottom:1px solid var(--rule);margin-bottom:4px}
.stack-row{display:flex;justify-content:space-between;gap:20px;padding:11px 0;border-bottom:1px dashed var(--rule-soft)}
.stack-k{font-size:13.5px;color:var(--fog);flex:0 0 auto}
.stack-v{font-family:var(--mono);font-size:12.5px;color:var(--bone);text-align:right;min-width:0}
@media(max-width:520px){.stack-row{flex-direction:column;gap:4px}.stack-v{text-align:left}}

/* ---------- Y-P2b: in development (R-6, G-11) — dashed, so it never reads as shipped ---------- */
.fgs{display:grid;gap:36px}
.fg-h{margin:0 0 14px}
.road{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule-soft);border:1px solid var(--rule-soft)}
@media(max-width:940px){.road{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.road{grid-template-columns:1fr}}
.road-i{background:var(--panel);padding:22px 20px 24px}
.road-t{font-family:var(--body);font-weight:600;font-size:14px;margin:0 0 7px}
.road-d{margin:0;font-size:13px;line-height:1.58;color:var(--fog)}
.fg-next .road{background:transparent;border:0;gap:12px}
.fg-next .road-i{background:transparent;border:1px dashed var(--rule)}
.fg-next .fg-h{color:var(--fog-dim)}

/* ---------- Y-P2b: pricing (D-Y-8) ---------- */
.feats.price{grid-template-columns:repeat(3,1fr)}
@media(max-width:760px){.feats.price{grid-template-columns:1fr}}

/* ---------- Y-P2b: footer link, privacy page ---------- */
.ftr-a{text-decoration:none}
.ftr-a:hover{color:var(--bone)}
.doc{padding:clamp(48px,7vw,88px) 0}
.doc h1{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(1.8rem,4vw,2.8rem);line-height:1.02;margin:14px 0 10px}
.doc h2{font-family:var(--body);font-weight:600;font-size:1.05rem;margin:40px 0 10px;color:var(--bone)}
.doc p,.doc li{color:var(--fog);font-size:15px;line-height:1.7;max-width:70ch}
.doc ul{padding-left:20px;margin:8px 0}
.doc a{color:var(--amber)}
.doc .meta{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fog-dim)}

/* ---------- Y-P3: Book a Demo form (R-3, D-Y-7) ---------- */
.demo .mod-head h2 .hl{color:var(--amber)}
.df{border:1px solid var(--rule);background:var(--panel);padding:clamp(20px,3vw,36px)}
.df-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 40px}
.df-wide{grid-column:1/-1}
@media(max-width:760px){.df-grid{grid-template-columns:1fr}}
.df-set{border:0;margin:0;padding:0;min-width:0;display:grid;gap:16px;align-content:start}
.df-lg{font-family:var(--mono);font-size:10px;letter-spacing:.19em;text-transform:uppercase;color:var(--amber);padding:0 0 10px;border-bottom:1px solid var(--rule);width:100%;margin-bottom:2px}
.df-f{display:grid;gap:6px;min-width:0}
.df-l{font-size:13px;color:var(--fog)}
.df-l i,.df-consent i{font-style:normal;color:var(--amber)}
.df input:not([type=checkbox]),.df select,.df textarea{font:inherit;font-size:14.5px;color:var(--bone);background:var(--ink);border:1px solid var(--rule);
  border-radius:0;padding:11px 12px;width:100%;min-width:0;outline:none;transition:border-color .15s}
.df select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--fog) 50%),linear-gradient(135deg,var(--fog) 50%,transparent 50%);
  background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}
.df textarea{resize:vertical;min-height:110px}
.df input:focus,.df select:focus,.df textarea:focus{border-color:var(--amber)}
.df [aria-invalid]{border-color:#e0695a}
.df ::placeholder{color:var(--fog-dim)}
.chks{display:flex;flex-wrap:wrap;gap:10px 22px}
.chk{display:flex;gap:9px;align-items:flex-start;font-size:13.5px;color:var(--fog);cursor:pointer}
.chk input{accent-color:var(--amber);width:16px;height:16px;margin:2px 0 0;flex:0 0 auto}
.df-consent{margin-top:28px;line-height:1.55}
.df-consent a{color:var(--amber)}
.df-e{font-family:var(--mono);font-size:11px;color:#e0695a;min-height:0}
.df-e:empty{display:none}
.df-foot{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:24px}
.df button[disabled]{opacity:.55;cursor:progress}
.df-msg{margin:0;font-size:14px;color:var(--fog);outline:none}
.df-msg[data-kind=ok]{color:var(--bone)}
.df-msg[data-kind=err]{color:#e0695a}
.df.sent .df-grid,.df.sent .df-consent,.df.sent .df-foot button,.df.sent > .df-e{display:none}
.df.sent .df-foot{margin-top:0}
.df-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}

/* Y-P3: anchor jumps land below the sticky header (every section) */
section[id]{scroll-margin-top:72px}
