/* VaporBuild product page. The look follows the app's own web view: a
   factory floor of steel panels, rivets, stencilled plates and hazard paint. */
:root{
  --hazard:#f5c518;--hazard-ink:#17191c;
  --bg:#17191c;--bg-deep:#0f1012;--surface:#22252a;--raised:#2c3036;--line:#454a52;
  --ink:#ebe6d8;--muted:#b3ae9f;--link:#8cbcff;--ok:#6fd08c;--warn:#ffa24c;--danger:#ff7a6e;
  --bevel-hi:#ffffff14;--bevel-lo:#00000073;--rivet:#5a6069;--rivet-hi:#8a909a;
  --mono:ui-monospace,"JetBrains Mono","DejaVu Sans Mono",monospace;
  --sans:"Noto Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--sans);
  background-image:linear-gradient(var(--bg-deep) 1px,transparent 1px),linear-gradient(90deg,var(--bg-deep) 1px,transparent 1px);background-size:48px 48px}
a{color:var(--link)}
a:focus-visible,button:focus-visible{outline:2px solid var(--hazard);outline-offset:2px}
.wrap{width:min(1160px,100% - 32px);margin-inline:auto}
.skip{position:absolute;left:-999px;top:8px;background:var(--hazard);color:var(--hazard-ink);padding:8px 12px;z-index:20}
.skip:focus{left:8px}
h1,h2,h3{line-height:1.15;margin:0 0 .5em}
h2{font-size:clamp(1.7rem,3.6vw,2.4rem);letter-spacing:-.01em}
h3{font-size:1.08rem}
.label,.eyebrow{font:700 .74rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.eyebrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.plate{display:inline-block;padding:3px 8px;border-radius:2px;background:var(--hazard);color:var(--hazard-ink);font:700 .72rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}
.sec-lede{max-width:66ch;color:var(--muted);margin:0 0 28px}
.sec-lede strong{color:var(--ink)}
section{padding:72px 0 0}

/* Header: a steel bar with a hazard stripe under it. */
.site-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:10px max(16px,calc((100% - 1160px)/2));
  background:linear-gradient(var(--raised),var(--surface));border-bottom:6px solid transparent;border-image:repeating-linear-gradient(-45deg,var(--hazard) 0 10px,var(--hazard-ink) 10px 20px) 6}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}
.wordmark{font:800 1.05rem/1 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.brand .tag{font:600 .7rem/1 var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);border-left:1px solid var(--line);padding-left:10px}
.site-header nav{display:flex;gap:4px;flex-wrap:wrap}
.site-header nav a{color:var(--ink);text-decoration:none;font:600 .85rem/1 var(--sans);padding:10px 10px;border-radius:3px;min-height:36px;display:inline-flex;align-items:center}
.site-header nav a:hover{background:var(--raised)}
.site-header .nav-home{border:1px solid var(--line)}
@media (max-width:720px){.site-header{position:static}.brand .tag{display:none}.site-header nav a{padding:8px 7px;font-size:.8rem}}

/* Panels carry rivets in the corners and a bevel. */
.panel,.gauge-card,.stations article,.limit,.demo-guide,.demo-console,.flow li{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:4px;
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 2px 0 var(--bevel-lo);
  background-image:radial-gradient(circle at 9px 9px,var(--rivet-hi) 0 1px,var(--rivet) 1.5px 3px,transparent 3.5px),radial-gradient(circle at calc(100% - 9px) 9px,var(--rivet-hi) 0 1px,var(--rivet) 1.5px 3px,transparent 3.5px),radial-gradient(circle at 9px calc(100% - 9px),var(--rivet-hi) 0 1px,var(--rivet) 1.5px 3px,transparent 3.5px),radial-gradient(circle at calc(100% - 9px) calc(100% - 9px),var(--rivet-hi) 0 1px,var(--rivet) 1.5px 3px,transparent 3.5px)}

.button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:3px;font:700 .85rem/1 var(--sans);text-transform:uppercase;letter-spacing:.06em;text-decoration:none;cursor:pointer;
  color:var(--ink);border:1px solid var(--line);background:linear-gradient(var(--raised),var(--surface));box-shadow:inset 0 1px 0 var(--bevel-hi),0 1px 0 var(--bevel-lo)}
.button.primary{background:var(--hazard);color:var(--hazard-ink);border-color:var(--hazard-ink);box-shadow:inset 0 -3px 0 var(--bevel-lo),inset 0 1px 0 #ffffff59}
.button:active{transform:translateY(1px)}
.button[disabled]{opacity:.5;cursor:not-allowed}

/* Hero */
.hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:48px;align-items:center;padding-top:72px}
.hero h1{font-size:clamp(2.2rem,4.6vw,3.4rem);letter-spacing:-.025em;margin-bottom:.4em}
.hero h1 em{font-style:normal;color:var(--hazard)}
.lede{font-size:1.1rem;color:var(--ink);max-width:60ch;opacity:.92}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}
.hero-meta{font:500 .8rem/1.6 var(--mono);color:var(--muted)}
.gauge-card{padding:22px}
.gc-top{display:flex;justify-content:space-between;gap:8px;font:700 .7rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 6px 14px}
.sample-tag{border:1px solid var(--line);padding:1px 6px;border-radius:2px}
.gc-big{display:flex;align-items:baseline;gap:12px;background:var(--bg-deep);border:1px solid var(--line);padding:10px 16px;border-radius:2px;box-shadow:inset 0 2px 3px var(--bevel-lo)}
.gc-big strong{font:800 3.2rem/1 var(--mono);color:var(--hazard)}
.gc-big span{font:700 .78rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.gc-limits{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:10px}
.gc-limits li{display:grid;grid-template-columns:70px 1fr auto;gap:10px;align-items:center;font:600 .8rem/1.3 var(--mono)}
.meter{display:block;height:10px;border-radius:2px;background-color:var(--bg-deep);background-image:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),var(--line) calc(10% - 1px) 10%);box-shadow:inset 0 1px 2px var(--bevel-lo);overflow:hidden}
.meter i{display:block;height:100%;background:var(--hazard)}
.meter.low i{background:var(--danger)}
.gc-foot{font-size:.85rem;color:var(--muted);margin:14px 2px 0}
@media (max-width:900px){.hero{grid-template-columns:1fr;gap:32px}}

/* The stack strip in this page's paint. */
.stack-wrap{padding-top:56px}
.stack-strip{--stk-bg:var(--surface);--stk-card:var(--bg-deep);--stk-line:var(--line);--stk-ink:var(--ink);--stk-muted:var(--muted);--stk-acc:var(--hazard);--stk-radius:4px;--stk-max:none}

/* Demo */
.demo-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:20px;align-items:start}
.demo-guide{padding:20px}
.guide-heading{display:flex;justify-content:space-between;align-items:center;margin:0 4px 12px}
.guide-heading button{background:none;border:1px solid var(--line);color:var(--ink);border-radius:3px;padding:6px 10px;min-height:36px;cursor:pointer;font:600 .8rem/1 var(--sans)}
.guide-buttons{display:grid;gap:6px}
.guide-buttons button{display:flex;gap:10px;align-items:center;text-align:left;width:100%;min-height:44px;padding:10px 12px;border-radius:3px;cursor:pointer;
  border:1px solid var(--line);background:var(--bg-deep);color:var(--ink);font:600 .92rem/1.3 var(--sans)}
.guide-buttons button span{font:700 .72rem/1 var(--mono);color:var(--muted)}
.guide-buttons button[aria-pressed="true"]{border-color:var(--hazard);box-shadow:inset 4px 0 0 var(--hazard);background:var(--raised)}
.guide-buttons button[aria-pressed="true"] span{color:var(--hazard)}
.guide-note{margin:16px 0 0;padding:12px 14px;border-left:4px solid var(--hazard);background:var(--bg-deep);border-radius:2px}
.guide-note p{margin:6px 0 0;font-size:.93rem}
.demo-disclosure{font-size:.8rem;color:var(--muted);margin:12px 2px 0}
.demo-console{padding:22px 24px;min-height:520px}
.console-head{display:flex;align-items:center;gap:12px}
.console-head h3{margin:0;font-size:1.3rem}
.console-lede{color:var(--muted);margin:8px 0 18px;max-width:70ch}
.vb-status{font:600 .82rem/1.5 var(--mono);color:var(--muted);margin:16px 0 0;min-height:1.5em}
.vb-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 16px}
.vb-row .button{min-width:0}
.ctl{display:grid;gap:4px;font:700 .72rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.ctl output{color:var(--ink);font-size:.9rem}
.ctl input[type=range]{width:100%;accent-color:var(--hazard);min-height:28px}
.ctls{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px 20px;padding:14px 16px;margin:0 0 16px;background:var(--bg-deep);border:1px solid var(--line);border-radius:2px}
.toggle{display:flex;gap:8px;align-items:center;font:600 .88rem/1.3 var(--sans);text-transform:none;letter-spacing:0;color:var(--ink);min-height:28px;cursor:pointer}
.toggle input{width:18px;height:18px;accent-color:var(--hazard)}
select.vb-select{background:var(--bg-deep);color:var(--ink);border:1px solid var(--line);border-radius:2px;padding:8px 10px;min-height:44px;font:600 .9rem/1 var(--mono)}
.limits-grid{display:grid;gap:10px}
.limit-row{display:grid;grid-template-columns:90px minmax(0,1fr) 120px;gap:12px;align-items:center;padding:10px 12px;background:var(--bg-deep);border:1px solid var(--line);border-radius:2px}
.limit-row .name{font:700 .78rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.limit-row .val{font:700 .9rem/1.2 var(--mono);text-align:right}
.limit-row small{grid-column:1/-1;color:var(--muted);font-size:.84rem}
.limit-row.min{border-color:var(--hazard)}
.limit-row.min .val{color:var(--hazard)}
.verdict{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:16px 0 0;padding:14px 16px;border-radius:2px;background:var(--bg-deep);border:1px solid var(--line);border-left:6px solid var(--hazard)}
.verdict strong{font:800 2rem/1 var(--mono);color:var(--hazard)}
.verdict.no{border-left-color:var(--danger)}
.verdict.no strong{color:var(--danger)}
.verdict.ok{border-left-color:var(--ok)}
.verdict.ok strong{color:var(--ok)}
.verdict p{margin:0;flex:1 1 260px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:3px;background:var(--bg-deep);border:1px solid var(--line);font:700 .72rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.chip::before{content:"";width:7px;height:7px;border-radius:50%;background:#3a3e45}
.chip.ok::before{background:var(--ok);box-shadow:0 0 6px var(--ok)}
.chip.warn::before{background:var(--warn);box-shadow:0 0 6px var(--warn)}
.chip.bad::before{background:var(--danger);box-shadow:0 0 6px var(--danger)}
.chip.run::before{background:var(--hazard);box-shadow:0 0 6px var(--hazard)}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.steps li{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 12px;background:var(--bg-deep);border:1px solid var(--line);border-radius:2px}
.steps li .n{font:700 .8rem/1.6 var(--mono);color:var(--muted)}
.steps li b{display:block;font-size:.95rem}
.steps li small{display:block;color:var(--muted);font-size:.84rem;line-height:1.45}
.steps li code,.log code,.diff{font-family:var(--mono)}
.steps li.is-done{border-left:4px solid var(--ok)}
.steps li.is-active{border-left:4px solid var(--hazard)}
.steps li.is-failed{border-left:4px solid var(--danger)}
.log{margin:14px 0 0;padding:12px 14px;max-height:220px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:500 .8rem/1.5 var(--mono);background:var(--bg-deep);border:1px solid var(--line);border-left:4px solid var(--hazard);border-radius:2px;color:var(--ink)}
.cases{width:100%;border-collapse:collapse;font-size:.88rem;margin:4px 0 0}
.cases th,.cases td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.cases th{font:700 .7rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--bg-deep)}
.cases td code{font:500 .82rem/1.4 var(--mono);overflow-wrap:anywhere}
.diff{display:block;margin:6px 0 0;padding:8px 10px;background:var(--bg-deep);border:1px solid var(--line);border-radius:2px;font-size:.8rem;white-space:pre-wrap;overflow-wrap:anywhere}
.diff .del{color:var(--danger)}.diff .add{color:var(--ok)}
.finding{padding:12px 14px;margin:10px 0 0;background:var(--bg-deep);border:1px solid var(--line);border-radius:2px}
.finding-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.finding .reason{margin:8px 0 0;font-size:.88rem;color:var(--muted)}
.finding .button{min-height:40px;padding:8px 12px;font-size:.75rem}
.dep-form{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 16px}
.dep-form input{flex:1 1 200px;min-height:44px;background:var(--bg-deep);color:var(--ink);border:1px solid var(--line);border-radius:2px;padding:8px 12px;font:600 .95rem/1 var(--mono)}
.dep-hints{display:flex;gap:8px;flex-wrap:wrap;margin:-6px 0 14px}
.dep-hints button{background:var(--bg-deep);border:1px solid var(--line);color:var(--ink);border-radius:3px;padding:6px 10px;min-height:36px;font:600 .8rem/1 var(--mono);cursor:pointer}
@media (max-width:900px){.demo-layout{grid-template-columns:1fr}.demo-console{min-height:0}}
@media (max-width:520px){.demo-console{padding:18px 14px}.limit-row{grid-template-columns:1fr auto}.limit-row .meter{grid-column:1/-1;grid-row:2}.cases th:nth-child(3),.cases td:nth-child(3){display:none}}

/* Stations */
.stations{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.stations article{padding:22px 22px 20px}
.stations .plate{margin-bottom:12px}
.stations p{margin:0;color:var(--muted);font-size:.95rem}
@media (max-width:900px){.stations{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.stations{grid-template-columns:1fr}}

/* Flow between the stack's tools */
.flow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.flow li{padding:18px 20px}
.flow li>span{font:700 .8rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.05em}
.flow-from,.flow-to{display:inline-block;padding:3px 8px;border:1px solid var(--line);border-radius:2px;background:var(--bg-deep)}
.flow-to{border-color:var(--hazard);color:var(--hazard)}
.flow-arrow{margin:0 6px;color:var(--muted)}
.flow p{margin:10px 0 0;color:var(--muted);font-size:.95rem}
@media (max-width:760px){.flow{grid-template-columns:1fr}}

.split{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:32px;align-items:start}
.split p{color:var(--muted);margin:0 0 1em}
.panel{padding:22px}
.rowlist{list-style:none;margin:0;padding:0}
.rowlist li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:.92rem}
.rowlist li:last-child{border-bottom:0}
.rowlist span{color:var(--muted)}
.rowlist b{text-align:right}
@media (max-width:820px){.split{grid-template-columns:1fr}}

.limits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.limit{padding:20px 22px;border-left:6px solid var(--hazard)}
.limit p{margin:0;color:var(--muted)}
.after-note{color:var(--muted);font-size:.92rem;margin:20px 0 0}
@media (max-width:700px){.limits{grid-template-columns:1fr}}

.page-foot{margin-top:80px;padding:24px 0;border-top:6px solid transparent;border-image:repeating-linear-gradient(-45deg,var(--hazard) 0 10px,var(--hazard-ink) 10px 20px) 6;background:var(--surface)}
.page-foot .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.9rem;color:var(--muted)}
