:root{
  --bg:#0e1013;
  --card:#161a1f;
  --card2:#1c2128;
  --line:#2a313a;
  --txt:#e7ecf2;
  --dim:#9aa6b4;
  --accent:#d81e2b;
  --accent2:#ff4b57;
  --ok:#2fbf71;
  --warn:#e8b93b;
  --bad:#ef4d4d;
  --radius:10px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--txt);
  font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  padding-bottom:3rem;
}
h1,h2,h3,h4{margin:0 0 .4rem;line-height:1.2}
h1{font-size:1.25rem;letter-spacing:.2px}
h2{font-size:1.05rem}
h3{font-size:.95rem;margin-top:1rem}
h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}

/* ---------- layout ---------- */
main{max-width:1100px;margin:0 auto;padding:0 .8rem}
.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;gap:.8rem;
  padding:.7rem .9rem;margin-bottom:.9rem;
  background:linear-gradient(180deg,#12151a,#12151ae6);
  border-bottom:1px solid var(--line);
  backdrop-filter:blur(6px);
}
.brand{display:flex;flex-direction:column}
.brand .sub{font-size:.75rem;color:var(--dim)}
.storage{font-size:.72rem;color:var(--dim);text-align:right;max-width:16rem}
.storage.bad{color:var(--warn)}

.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:.85rem .9rem;margin:0 0 .9rem;
}
details.card>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem;align-items:baseline}
details.card>summary::-webkit-details-marker{display:none}
details.card>summary::before{content:"\25B8";color:var(--dim);margin-right:.45rem;display:inline-block;transition:transform .15s}
details.card[open]>summary::before{transform:rotate(90deg)}
details.card>summary .sumTitle{font-weight:600}
details.card>summary .sumHint{color:var(--dim);font-size:.78rem;text-align:right;flex:1}
details.card[open]>summary{margin-bottom:.7rem;padding-bottom:.5rem;border-bottom:1px solid var(--line)}

.row{display:flex;align-items:flex-end}
.row.wrap{flex-wrap:wrap}
.gap{gap:.5rem}
.grow{flex:1;min-width:12rem}
.tightTop{margin-top:.7rem}
.grid2,.grid3{display:grid;gap:.6rem}
.grid2{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}
.grid3{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}

/* ---------- fields ---------- */
.fld{display:flex;flex-direction:column;gap:.25rem;font-size:.78rem;color:var(--dim)}
.fld>span{letter-spacing:.02em}
input[type=text],input[type=date],select,textarea{
  background:var(--card2);color:var(--txt);
  border:1px solid var(--line);border-radius:8px;
  padding:.5rem .55rem;font:inherit;font-size:.92rem;width:100%;
}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}
input.mini{width:4.6rem;padding:.35rem .4rem;text-align:center;font-variant-numeric:tabular-nums}
.chk{display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--txt);margin:.8rem 0 .2rem;cursor:pointer}
.chk input{width:auto;accent-color:var(--accent)}

.shimCfg{display:flex;align-items:center;gap:.35rem;margin-top:.2rem}
.shimCfg .lbl{font-size:.7rem;color:var(--dim);width:2.6rem}
.shimCfg .dash{color:var(--dim)}

.btn{
  background:var(--card2);color:var(--txt);border:1px solid var(--line);
  border-radius:8px;padding:.5rem .75rem;font:inherit;font-size:.85rem;cursor:pointer;
}
.btn:hover{border-color:#3d4753;background:#222831}
.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.accent:hover{background:var(--accent2);border-color:var(--accent2)}
.btn.danger{color:var(--bad)}
.btn.ghost{background:transparent}
.btn.sm{padding:.3rem .5rem;font-size:.75rem}
.fileBtn{display:inline-flex;align-items:center}
.quick{display:flex;gap:.4rem;flex-wrap:wrap}

.engineNote{margin:.55rem 0 0;font-size:.78rem;color:var(--dim)}
.warn{margin:.55rem 0 0;font-size:.78rem;color:var(--warn);background:#e8b93b14;border:1px solid #e8b93b40;border-radius:8px;padding:.45rem .6rem}

/* ---------- spec editors ---------- */
.specEditors{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));margin-top:.7rem}
.spec-group{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:.6rem .65rem}
.spec-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(5.2rem,1fr));gap:.4rem}
.spec-fields label{display:flex;flex-direction:column;gap:.2rem;font-size:.68rem;color:var(--dim);text-align:center}
.spec-fields input{padding:.35rem .3rem;text-align:center;font-variant-numeric:tabular-nums}

/* ---------- cylinders ---------- */
.cyl{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 .9rem;overflow:hidden}
.cylHead{display:flex;align-items:center;gap:.5rem;padding:.55rem .7rem;background:#12161b;border-bottom:1px solid var(--line)}
.cylHead input{font-weight:700;font-size:.95rem;border-color:transparent;background:transparent;padding:.25rem .35rem}
.cylHead input:hover{border-color:var(--line)}

.valve{border-top:1px solid var(--line)}
.valve:first-child{border-top:none}
.valveName{padding:.5rem .7rem .1rem;font-weight:600;font-size:.9rem;color:#cfd8e3}
.valveName .grp{font-weight:400;font-size:.72rem;color:var(--dim);margin-left:.4rem}

.line{
  display:grid;
  grid-template-columns:5.4rem 6.2rem 6.2rem 1.4rem 6.2rem 1fr;
  align-items:center;gap:.45rem;
  padding:.35rem .7rem;
}
.line:last-child{padding-bottom:.6rem}
.line .kind{font-size:.78rem;color:var(--dim);text-transform:uppercase;letter-spacing:.05em}
.line .kind.open{color:#7fb2ff}
.line .kind.close{color:#f0a85f}
.line input{text-align:center;font-variant-numeric:tabular-nums;padding:.45rem .3rem}
.line .arrow{text-align:center;color:var(--dim)}
.line .out{
  background:#0f1317;border:1px dashed var(--line);border-radius:8px;
  padding:.45rem .3rem;text-align:center;font-weight:700;font-variant-numeric:tabular-nums;font-size:.95rem;
}
.line .out.keep{color:var(--ok);border-style:solid;border-color:#2fbf7155;background:#2fbf7112}
.line .out.chg{color:#fff;border-style:solid;border-color:#3d4753;background:#232a33}
.line .out.err{color:var(--bad);border-color:#ef4d4d55;font-size:.72rem;font-weight:600}
.line .info{font-size:.75rem;color:var(--dim);display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}

.badge{font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:.12rem .4rem;border-radius:999px;border:1px solid}
.b-ok{color:var(--ok);border-color:#2fbf7155;background:#2fbf7112}
.b-tight{color:#7fb2ff;border-color:#7fb2ff55;background:#7fb2ff12}
.b-loose{color:var(--warn);border-color:#e8b93b55;background:#e8b93b12}
.b-fail{color:var(--bad);border-color:#ef4d4d66;background:#ef4d4d14}
.b-none{color:var(--dim);border-color:var(--line)}

.hdr{display:grid;grid-template-columns:5.4rem 6.2rem 6.2rem 1.4rem 6.2rem 1fr;gap:.45rem;padding:.3rem .7rem 0;font-size:.66rem;color:var(--dim);text-transform:uppercase;letter-spacing:.06em}
.hdr span{text-align:center}
.hdr span:first-child,.hdr span:last-child{text-align:left}

/* ---------- summary ---------- */
.tallies{display:flex;flex-wrap:wrap;gap:.5rem;margin:.3rem 0 .2rem}
.tally{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:.4rem .6rem;font-size:.8rem}
.tally b{font-size:1.05rem;display:block}
.shopping{display:flex;flex-wrap:wrap;gap:.4rem;font-size:.85rem;color:var(--dim)}
.chip{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:.35rem .55rem;font-variant-numeric:tabular-nums;color:var(--txt)}
.chip .q{color:var(--dim);font-size:.78rem}
.chip.open{border-color:#7fb2ff44}
.chip.close{border-color:#f0a85f44}

.report{
  background:#0b0e11;border:1px solid var(--line);border-radius:8px;padding:.7rem;
  font:12px/1.45 ui-monospace,Consolas,monospace;white-space:pre-wrap;color:#cfd8e3;max-height:22rem;overflow:auto;
}
.mini-details{margin-top:.8rem}
.mini-details>summary{cursor:pointer;font-size:.82rem;color:var(--dim)}
.prose{font-size:.85rem;color:#c6d0db}
.prose p{margin:.5rem 0}
.mono{font-family:ui-monospace,Consolas,monospace;background:var(--card2);border:1px solid var(--line);border-radius:6px;padding:.4rem .5rem;display:inline-block}
footer{color:var(--dim);font-size:.75rem;text-align:center;padding:1.2rem 0}

.toast{
  position:fixed;left:50%;bottom:1.2rem;transform:translateX(-50%);
  background:#222831;border:1px solid var(--line);border-radius:999px;
  padding:.5rem .9rem;font-size:.82rem;z-index:50;box-shadow:0 6px 24px #0008;
}

@media (max-width:720px){
  .line,.hdr{grid-template-columns:4.4rem 1fr 1fr 1rem 1fr;}
  .line .info{grid-column:1 / -1;padding-left:4.8rem}
  .hdr span:last-child{display:none}
}

@media print{
  body{background:#fff;color:#000}
  .topbar,.btn,.quick,footer,#setupCard,#addCyl,.mini-details,.storage{display:none!important}
  .card,.cyl{border-color:#bbb;background:#fff}
  .cylHead{background:#eee}
  .line .out{border-color:#999}
}
