/* Purpose: Scoped, responsive process lab. NOT for: global theme overrides. */
.proof-lab{--lab-accent:#70c9d2;--lab-muted:#b5c2cc;background:#14202b;color:#f4f7f8;padding:64px 32px;scroll-margin-top:24px;border-block:1px solid #29333a}
.proof-lab *{box-sizing:border-box}
.lab-inner{max-width:1160px;margin:auto}
.lab-eyebrow{color:var(--lab-accent);font:600 12px/1.5 ui-monospace,monospace;letter-spacing:.16em;text-transform:uppercase;margin:0 0 18px}
.lab-heading{display:grid;grid-template-columns:1.3fr 1fr;gap:40px;align-items:end;margin-bottom:32px}
.proof-lab h2{font-size:clamp(28px,3vw,38px);line-height:1.15;letter-spacing:-.035em;font-weight:500;margin:0}
.proof-lab h2 span{color:var(--lab-accent)}
.lab-intro{color:var(--lab-muted);font-size:16px;line-height:1.7;margin:0}
.lab-disclosure{color:var(--lab-muted);font-size:12px;line-height:1.6;margin:16px 0 24px;max-width:850px}
.lab-scenarios{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0 26px}
.lab-scenario{border:1px solid #38444e;background:#131b22;color:#dce3e9;border-radius:12px;text-align:left;padding:18px;cursor:pointer;font-size:15px;line-height:1.4;transition:border-color .2s,background .2s}
.lab-scenario small{display:block;color:var(--lab-muted);font:11px/1.4 ui-monospace,monospace;letter-spacing:.07em;margin-bottom:8px}
.lab-scenario[aria-pressed=true]{border-color:var(--lab-accent);background:#142a26;color:#fff}
.lab-scenario[aria-pressed=true] small{color:var(--lab-accent)}
.lab-workbench{display:grid;grid-template-columns:1fr 1.12fr;border:1px solid #38444e;border-radius:18px;overflow:hidden;background:#10171d}
.lab-controls,.lab-result{padding:28px;min-width:0}
.lab-controls{border-right:1px solid #38444e}
.proof-lab label,.lab-label{display:block;color:var(--lab-muted);font:12px/1.5 ui-monospace,monospace;letter-spacing:.04em;margin-bottom:10px}
.proof-lab select{width:100%;border:1px solid #4b5965;border-radius:8px;padding:12px;background:#18232c;color:#fff;font:inherit;min-height:48px;margin-bottom:22px}
.lab-source{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--lab-accent);margin-bottom:12px}
.lab-source:before{content:'';width:7px;height:7px;border-radius:50%;background:var(--lab-accent)}
.lab-input{font-size:15px;line-height:1.8;color:#e1e7eb;min-height:145px;border-left:2px solid #465962;padding-left:18px;white-space:pre-wrap;margin:0 0 22px}
.lab-run,.lab-cta{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--lab-accent);color:#09251b;border:1px solid transparent;border-radius:9px;padding:13px 20px;font-size:14px;font-weight:750;min-height:48px;text-decoration:none;cursor:pointer}
.lab-run{width:100%}.lab-run:hover,.lab-cta:hover{background:#a3f7dd}
.lab-run:disabled{opacity:.65;cursor:wait}
.lab-trace{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:0;margin:24px 0 0}
.lab-trace li{border-top:2px solid #4d5a65;padding-top:9px;font-size:11px;color:var(--lab-muted)}
.lab-trace li[data-state=done]{border-color:var(--lab-accent);color:var(--lab-accent)}
.lab-trace li[data-state=held]{border-color:#ffcc83;color:#ffcc83}
.lab-result{background:#0c1318;display:flex;flex-direction:column}
.lab-status{font-size:14px;font-weight:650;color:var(--lab-accent);min-height:24px;margin:0 0 18px}
.lab-status[data-held=true]{color:#ffcc83}
.lab-output{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.75 ui-monospace,monospace;color:#e0e8ee;flex:1;margin:0 0 20px;min-height:240px}
.lab-boundary{padding:15px;border:1px solid #3a4c53;border-radius:8px;font-size:13px;line-height:1.6;color:var(--lab-muted)}
.lab-boundary strong{display:block;color:#fff;margin-bottom:5px}
.lab-log{padding-left:19px;color:var(--lab-muted);font-size:13px;line-height:1.6}
.lab-log li{margin-bottom:7px}
.proof-lab details{margin-top:22px;color:var(--lab-muted);font-size:13px}
.proof-lab summary{cursor:pointer;padding:8px 0;color:#dce3e9}
.lab-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:22px}
.lab-download{color:#e1e7eb;background:transparent;border:1px solid #4b5965;border-radius:9px;padding:12px 17px;font-size:14px;cursor:pointer;min-height:48px}
.lab-footnote{font-size:12px;color:var(--lab-muted);margin-top:14px;line-height:1.6}
.proof-lab button:focus-visible,.proof-lab a:focus-visible,.proof-lab select:focus-visible,.proof-lab summary:focus-visible{outline:3px solid #fff;outline-offset:4px}
.proof-lab [hidden]{display:none!important}
.lab-noscript{color:#dce3e9;padding:20px;border:1px solid #38444e;border-radius:10px}
@media(max-width:760px){.proof-lab{padding:58px 18px}.lab-heading{grid-template-columns:1fr;gap:20px}.lab-scenarios{grid-template-columns:1fr;gap:8px}.lab-scenario{padding:13px 16px}.lab-scenario small{margin-bottom:4px}.lab-workbench{grid-template-columns:1fr}.lab-controls{border-right:0;border-bottom:1px solid #38444e}.lab-controls,.lab-result{padding:22px}.lab-input{min-height:0}.lab-output{min-height:210px}.lab-actions{align-items:stretch;flex-direction:column}.lab-cta,.lab-download{text-align:center;width:100%}.lab-trace{gap:8px}.lab-trace li{font-size:10px}}
@media(prefers-reduced-motion:reduce){.proof-lab *{transition:none!important;scroll-behavior:auto!important}}
/* The visible diagram reflects the simulator's actual steps, never live integrations. */
.lab-pipeline{counter-reset:stage;gap:24px;margin:30px 0 24px;position:relative}
.lab-pipeline li{counter-increment:stage;position:relative;min-width:0;min-height:140px;padding:22px;border:1px solid #405563;border-radius:3px;background:linear-gradient(145deg,#1a2b37,#101a22);box-shadow:0 10px 24px #0002;font-size:16px;font-weight:500;line-height:1.4;color:#e0e8ec;transition:background .25s,border-color .25s,box-shadow .25s}
.lab-pipeline li::before{content:'0' counter(stage);display:block;width:38px;height:38px;margin-bottom:18px;border:1px solid #536c79;border-radius:50%;font:12px/36px ui-monospace,monospace;text-align:center;color:#b4c7d1;background:#101a22}
.lab-pipeline li:not(:last-child)::after{content:'→';position:absolute;left:100%;top:47%;width:24px;text-align:center;color:#8099a6;font:20px/1 ui-monospace,monospace}
.lab-pipeline li[data-state=active]{border-color:#9beaf2;box-shadow:0 0 0 1px #9beaf22b,0 14px 28px #0003;background:linear-gradient(145deg,#254250,#13242d)}
.lab-pipeline li[data-state=active]::before{border-color:#9beaf2;color:#fff;animation:lab-step-pulse .7s ease-in-out infinite alternate}
.lab-pipeline li[data-state=done]{background:linear-gradient(145deg,#183b40,#102229);border-color:#70c9d2;color:#c7f8fb}
.lab-pipeline li[data-state=done]::before{content:'✓';border-color:#70c9d2;color:#b6f5eb;font-size:18px}
.lab-pipeline li[data-state=held]{background:linear-gradient(145deg,#392d22,#211c17);border-color:#ffcc83;color:#ffdbab}
.lab-pipeline li[data-state=held]::before{content:'!';border-color:#ffcc83;color:#ffcc83;font-size:20px}
.proof-lab details.lab-expand>summary{display:flex;width:100%;align-items:center;justify-content:space-between;gap:24px;padding:20px 4px;border:0;border-block:1px solid #405563;border-radius:0;font-size:16px;list-style:none;background:transparent}
.proof-lab .lab-expand>summary::-webkit-details-marker{display:none}
.proof-lab .lab-expand>summary::after{content:'+';font:26px/1 ui-monospace,monospace;color:var(--lab-accent)}
.proof-lab .lab-expand[open]>summary::after{content:'−'}
.lab-expand[open]>summary{margin-bottom:26px}
.lab-pipeline li:last-child:not([data-state]){border-color:#709a9f}
.lab-pipeline li[data-state=active]:not(:last-child)::after{color:#b6f5eb;animation:lab-route-pulse .35s ease-out infinite alternate}
@keyframes lab-step-pulse{to{box-shadow:0 0 0 7px #70c9d219}}
@keyframes lab-route-pulse{to{transform:translateX(3px)}}
@media(max-width:640px){.lab-pipeline{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.lab-pipeline li{min-height:125px;padding:16px;font-size:14px}.lab-pipeline li::before{margin-bottom:14px}.lab-pipeline li:not(:last-child)::after{display:none}.proof-lab .lab-expand>summary{font-size:14px}}
@media(prefers-reduced-motion:reduce){.lab-pipeline li[data-state=active]::before,.lab-pipeline li[data-state=active]::after{animation:none}}
