:root{
  --bg:#eef2f7; --paper:#fff; --paper2:#f6f8fb; --ink:#16202e; --ink-mid:#4a586a;
  --muted:#8493a6; --line:#d2dae5; --line2:#b7c2d1; --grid:rgba(43,76,126,.055);
  --bp:#2b4c7e; --accent:#e8601f; --accent-soft:#fbe6d8; --accent-ink:#fff;
  --ok:#2b8a63; --warn:#b7860b; --bad:#c23b52;
  --mono:ui-monospace,"Cascadia Code","SF Mono",Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --r:8px;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0d141e; --paper:#151f2c; --paper2:#111a25; --ink:#e6edf6; --ink-mid:#a4b4c7;
  --muted:#6d7e94; --line:#263346; --line2:#33445c; --grid:rgba(120,162,222,.06);
  --bp:#74a2db; --accent:#f2803f; --accent-soft:#3a2216; --accent-ink:#17110c;
  --ok:#43b083; --warn:#d9ab3e; --bad:#e0687e;
}}
*{box-sizing:border-box}
html{position:relative;min-height:100%}
body{
  margin:0; background-color:var(--bg); color:var(--ink); font-family:var(--sans); line-height:1.6;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:26px 26px; -webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none}
.demo-bar{background:var(--bp);color:#fff;font-family:var(--mono);font-size:.72rem;
  text-align:center;padding:5px 10px;letter-spacing:.02em}
.demo-bar b{color:#ffd9c2}
.nav{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px 22px;border-bottom:1px solid var(--line);background:var(--paper)}
.logo{font-family:var(--mono);font-weight:700;border:1.5px solid var(--ink);border-radius:5px;
  padding:3px 8px;color:var(--ink)}
.logo b{color:var(--accent)}
.nav nav{display:flex;gap:16px;font-size:.9rem}
.nav nav a{color:var(--ink-mid)}
.wrap{max-width:760px;margin:0 auto;padding:30px 22px 50px}
.wrap.wide{max-width:1000px}
.foot{max-width:1000px;margin:0 auto;padding:20px 22px 40px;color:var(--muted);font-size:.8rem;font-family:var(--mono)}

h1{font-size:1.6rem;margin:0 0 6px;letter-spacing:-.01em}
h2{font-size:1.15rem;margin:0 0 4px}
.lede{color:var(--ink-mid);margin:0 0 24px}
.eyebrow{font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin-bottom:8px}

.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:16px}
label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-mid);margin:14px 0 5px}
input[type=text],input[type=number],textarea,select{
  width:100%;font:inherit;padding:10px 12px;border:1px solid var(--line2);border-radius:var(--r);
  background:var(--paper2);color:var(--ink)}
textarea{min-height:70px;resize:vertical}
.filedrop{border:1.5px dashed var(--line2);border-radius:var(--r);padding:22px;text-align:center;
  color:var(--muted);background:var(--paper2);cursor:pointer}
.filedrop input{display:none}
.check{display:flex;gap:9px;align-items:flex-start;margin:16px 0 4px;font-size:.88rem;color:var(--ink-mid)}
.check input{margin-top:3px;width:auto}
.hint{font-size:.8rem;color:var(--muted);margin-top:5px}

.btn{display:inline-block;font:inherit;font-weight:650;border:1px solid var(--line2);cursor:pointer;
  background:var(--paper2);color:var(--ink);border-radius:var(--r);padding:11px 18px;text-align:center}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.block{display:block;width:100%}
.btn.ghost{background:transparent}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btnrow{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.btnrow .btn{flex:1;min-width:140px}

.pricebox{font-family:var(--mono);border-top:1px dashed var(--line2);margin-top:14px;padding-top:12px;
  display:flex;flex-direction:column;gap:6px;font-size:.9rem;color:var(--ink-mid)}
.pricebox .row{display:flex;justify-content:space-between}
.pricebox .tot{color:var(--ink);font-weight:700;font-size:1.05rem;border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
.num{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono)}

.pill{font-family:var(--mono);font-size:.7rem;padding:3px 9px;border-radius:100px;border:1px solid;display:inline-block}
.pill.ok{color:var(--ok);border-color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}
.pill.warn{color:var(--warn);border-color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.pill.bad{color:var(--bad);border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent)}
.pill.bp{color:var(--bp);border-color:var(--bp);background:color-mix(in srgb,var(--bp) 10%,transparent)}
.pill.mut{color:var(--muted);border-color:var(--line2)}

.err{background:color-mix(in srgb,var(--bad) 12%,transparent);border:1px solid var(--bad);color:var(--bad);
  border-radius:var(--r);padding:10px 14px;font-size:.88rem;margin-bottom:14px}
.note{background:color-mix(in srgb,var(--bp) 8%,transparent);border-left:3px solid var(--bp);
  padding:10px 14px;border-radius:6px;font-size:.86rem;color:var(--ink-mid);margin:12px 0}

model-viewer{width:100%;height:380px;background:var(--paper2);border:1px solid var(--line);border-radius:var(--r);display:block}

.steps{display:flex;flex-direction:column;gap:12px;margin:18px 0}
.step{display:flex;gap:11px;align-items:center;font-size:.92rem;color:var(--ink-mid)}
.step .dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--line2);flex:none}
.step.on .dot{border-color:var(--accent);border-top-color:transparent;animation:spin 1s linear infinite}
.step.done .dot{background:var(--ok);border-color:var(--ok)}
.step.done{color:var(--ink)}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.step.on .dot{animation:none}}

table{width:100%;border-collapse:collapse;font-size:.88rem}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
th{font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
td.mono{font-family:var(--mono)}
.thumb{width:44px;height:44px;border-radius:6px;object-fit:cover;background:var(--paper2);border:1px solid var(--line)}
.tablewrap{overflow-x:auto;background:var(--paper);border:1px solid var(--line);border-radius:12px}
.timeline{display:flex;flex-direction:column;gap:10px;margin:16px 0}
.tl{display:flex;gap:10px;align-items:center;font-size:.92rem;color:var(--muted)}
.tl.cur{color:var(--ink);font-weight:650}
.tl.past{color:var(--ink-mid)}
.tl .m{font-family:var(--mono)}
