*{box-sizing:border-box}:root{--hx-fail: #E5484D;--hx-ok: #3DD68C;--accent-solid: #FB923C}html,body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font);font-weight:300;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .2s ease,color .2s ease}body{display:flex;flex-direction:column;min-height:100vh}body.gated header,body.gated footer{display:none}a{color:inherit;text-decoration:none}code,.mono{font-family:var(--mono);font-size:.85em}small{font-weight:300}strong,b{font-weight:400;color:var(--color-text-primary)}.hidden{display:none!important}main.screen{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:8px 24px 40px}header{min-height:60px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;padding:8px 24px;border-bottom:1px solid var(--color-border-subtle)}.brand{display:flex;align-items:baseline;white-space:nowrap}.brand h1{margin:0;font-size:13px;font-weight:300;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-primary)}.brand .subtitle{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-faint);margin-left:12px}.unit-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--color-border-subtle);color:var(--color-text-muted);white-space:nowrap}.fake-badge{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-solid);border:1px solid var(--accent-solid);padding:4px 8px;white-space:nowrap}.link-status,.pump-status{display:inline-flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);padding:6px 12px;border:1px solid var(--color-border-subtle);white-space:nowrap}.link-status{margin-left:auto;min-width:0}.link-status .link-status-text{overflow:hidden;text-overflow:ellipsis}.link-status .dot,.pump-status .dot{width:7px;height:7px;border-radius:50%;background:var(--color-text-faint)}.link-status.on .dot,.pump-status.on .dot{background:var(--hx-ok);animation:pulse 1.6s infinite}.link-status.off .dot,.pump-status.off .dot,.link-status.warn .dot,.pump-status.warn .dot{background:var(--hx-fail)}.link-status.none .dot,.pump-status.none .dot{background:var(--color-text-faint)}.link-status.warn,.pump-status.warn{color:var(--accent-solid)}.link-status.none,.pump-status.none{color:var(--color-text-faint)}.link-status .choose-port{padding:4px 8px;font-size:11px}@keyframes pulse{50%{opacity:.35}}.unsent-badge{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-solid);border:1px solid var(--accent-solid);padding:5px 10px;white-space:nowrap;cursor:pointer}.unsent-badge.bad{color:var(--hx-fail);border-color:var(--hx-fail)}.version-banner{border-bottom:1px solid var(--color-border);padding:8px 24px;font-size:13px;color:var(--color-text-secondary)}.version-banner a{border-bottom:1px solid var(--color-border-strong)}.card{padding:28px 0;border-bottom:1px solid var(--color-border-subtle)}.card:last-child{border-bottom:0}.card h2{margin:0 0 6px;font-size:22px;font-weight:300;letter-spacing:-.01em;color:var(--color-text-primary)}.card h3{margin:0 0 6px;font-size:16px;font-weight:300;color:var(--color-text-primary)}.hint{color:var(--color-text-muted);font-size:13px;margin:4px 0 12px}.hint.warn{color:var(--accent-solid)}.hint.err{color:var(--hx-fail)}.controls{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0;align-items:center}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.view-label,.k{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-faint)}.view-label{display:block;margin:14px 0 6px}.view-label:first-child,h2+.view-label{margin-top:0}.view-label,.sub-form{margin-top:12px}button{font-family:var(--font);font-weight:300;font-size:14px;line-height:1.3;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:0;padding:9px 16px;cursor:pointer;transition:background .2s ease,border-color .2s ease,color .2s ease;display:inline-flex;align-items:center;gap:8px}button:hover:not(:disabled){background:var(--color-hover-surface);border-color:var(--color-border-strong)}button:focus-visible{outline:1px solid var(--color-border-strong);outline-offset:2px}button:disabled{color:var(--color-text-faint);border-color:var(--color-border-subtle);cursor:not-allowed}button small{color:var(--color-text-faint);font-size:12px}button.primary{color:var(--color-text-primary);border-color:var(--color-border-strong)}button.primary.big{font-size:16px;padding:14px 24px}button.ghost{color:var(--color-text-secondary)}button.danger{color:var(--hx-fail);border-color:var(--hx-fail)}button.danger:hover:not(:disabled){background:var(--color-hover-surface);border-color:var(--hx-fail)}.option-grid{display:flex;flex-wrap:wrap;gap:0;border-left:1px solid var(--color-border-subtle)}.option-grid button{border:1px solid var(--color-border-subtle);border-left:0;padding:14px 18px;font-size:15px}.option-grid button.selected{color:var(--color-text-primary);position:relative}.option-grid button.selected:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent-gradient)}.option-grid .num{font-family:var(--mono);font-size:11px;color:var(--color-text-faint);min-width:1.4em}.menu-grid button{flex:1 1 220px;flex-wrap:wrap;align-items:baseline;padding:22px 20px}.menu-grid button small{flex-basis:100%;margin-top:4px;text-align:left}.check-row{display:inline-flex;align-items:center;gap:10px;font-size:14px;cursor:pointer;margin:6px 0}.check-row input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:14px;height:14px;margin:0;padding:0;border:1px solid var(--color-border);border-radius:0;background:var(--color-bg);position:relative;cursor:pointer;flex:0 0 auto}.check-row input[type=checkbox]:checked{background:var(--color-foreground);border-color:var(--color-foreground)}.check-row input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid var(--color-bg);border-width:0 1px 1px 0;transform:rotate(45deg)}.check-row input[type=checkbox]:focus-visible{outline:1px solid var(--color-border-strong);outline-offset:2px}.check-row input[type=checkbox]:disabled{border-color:var(--color-border-subtle);cursor:not-allowed}input[type=text],input[type=number],input[type=password],input[type=search],input:not([type]),textarea,select{font-family:var(--font);font-weight:300;font-size:14px;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:0;padding:8px 10px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-text-secondary)}input::placeholder,textarea::placeholder{color:var(--color-text-faint)}textarea{width:100%;min-height:84px;resize:vertical;line-height:1.5}input.num,.num input{width:6.2rem;padding:5px 8px;font-family:var(--mono);font-size:13px;text-align:right;border:0;border-bottom:1px solid var(--color-border)}input.num:focus,.num input:focus{border-bottom-color:var(--color-text-secondary)}input.num.edited,.num input.edited{border-bottom:2px solid var(--accent-solid);color:var(--color-text-primary)}input.num::-webkit-outer-spin-button,input.num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.label-input{width:100%;max-width:420px;font-size:16px}.numinput{display:inline-flex;align-items:baseline;gap:6px}.numinput .suffix{font-size:12px;color:var(--color-text-faint)}.tube-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 16px}.tube-grid .numinput{display:flex;align-items:baseline;white-space:nowrap}.tube-grid .numinput .k{flex:none}.tube-grid input.num{width:4.6rem}.calcard{border:1px solid var(--color-border-subtle);padding:14px 16px;margin:10px 0}.calcard h4{margin:0 0 8px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;font-weight:300;color:var(--color-text-muted)}.calcard .send{margin-left:auto}.guide{position:relative;border:1px solid var(--color-border);padding:12px 16px 12px 20px;margin:10px 0;font-size:16px;color:var(--color-text-primary)}.guide:before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:2px;background:var(--accent-gradient)}.guide.warn{color:var(--accent-solid)}.guide.warn:before{background:var(--accent-solid)}.guide.sticky{position:sticky;top:0;background:var(--color-bg);z-index:40}.guide .controls{margin:8px 0 0}.preflight{list-style:none;padding:0;margin:10px 0}.pf-item{display:grid;grid-template-columns:160px 1fr;gap:6px 16px;padding:10px 0;border-bottom:1px solid var(--color-border-subtle)}.pf-item:last-child{border-bottom:0}.pf-name{color:var(--color-text-primary);display:inline-flex;align-items:center;gap:10px}.pf-name:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--color-text-faint);flex:0 0 auto}.pf-item.ok .pf-name:before{background:var(--hx-ok)}.pf-item.warn .pf-name:before{background:var(--accent-solid)}.pf-item.fail .pf-name:before{background:var(--hx-fail)}.pf-item.unknown .pf-name:before{background:var(--color-text-faint)}.pf-item.checking .pf-name:before{background:var(--color-text-faint);animation:pulse 1.6s infinite}.pf-detail{font-family:var(--mono);font-size:13px;color:var(--color-text-secondary);position:relative}.pf-hint{grid-column:2;font-size:13px;color:var(--color-text-muted)}.pf-item.fail .pf-hint{color:var(--hx-fail)}.pf-item.warn .pf-hint{color:var(--accent-solid)}.pf-item.checking .pf-detail{color:var(--color-text-faint);display:inline-block}.pf-item.checking .pf-detail:after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:100%;background:var(--accent-gradient);transform-origin:left;animation:rp-sweep 1.2s ease-in-out infinite}@keyframes rp-sweep{0%{transform:scaleX(.2);opacity:.5}50%{transform:scaleX(1);opacity:1}to{transform:scaleX(.2);opacity:.5}}.folder-card{border:1px solid var(--color-border-subtle);padding:16px 18px;margin:10px 0}.folder-name{font-family:var(--mono);font-size:18px;color:var(--color-text-primary);overflow-wrap:anywhere}.folder-meta{font-size:13px;color:var(--color-text-muted);margin:4px 0 0}.status-strip{display:flex;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--color-text-secondary);padding:10px 0;border-top:1px solid var(--color-border-subtle);border-bottom:1px solid var(--color-border-subtle)}.status-strip .right{margin-left:auto}.dash-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 24px;flex-wrap:wrap;padding:12px 0}.timer{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.timer-value{font-family:var(--mono);font-size:64px;font-weight:300;letter-spacing:.04em;line-height:1;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.phase-tag{position:relative;font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--color-border-subtle);color:var(--color-text-primary);white-space:nowrap}.phase-tag.exp:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent-gradient)}.phase-tag.pre{color:var(--color-text-muted)}.phase-tag.idle{color:var(--color-text-faint)}.label-tag{font-family:var(--mono);font-size:13px;color:var(--color-text-secondary)}.dash-head .controls .danger{margin-left:auto}.dash-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.charts{min-width:0}.rail{border-left:1px solid var(--color-border-subtle);padding-left:24px;position:sticky;top:12px}.chart{padding:12px 0;border-bottom:1px solid var(--color-border-subtle)}.chart:last-child{border-bottom:0}.chart-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.chart-head .view-label{margin-top:0}.chart-value{font-family:var(--mono);font-size:15px;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.stat-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:10px 0}.tile .k{display:block}.tile .v{font-family:var(--mono);font-size:18px;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.tube-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--color-border-subtle);font-size:13px}.tube-row:last-child{border-bottom:0}.tube-row.done{color:var(--color-text-primary)}.tube-row .numinput{margin-left:auto}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--color-text-faint);flex:0 0 auto}.dot.exp,.tube-row.done .dot{background:var(--hx-ok)}.dot.pre{background:var(--accent-solid);animation:pulse 1.6s infinite}.terminal{background:var(--color-hover-surface);color:var(--color-text-secondary);border:1px solid var(--color-border-subtle);font-family:var(--mono);font-size:12px;white-space:pre;overflow:auto;height:160px;padding:10px 12px;margin:8px 0}.terminal.tall{height:200px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--color-bg) 60%,transparent);display:flex;align-items:center;justify-content:center;z-index:50}.modal-box{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:24px 28px;max-width:560px;width:92%;max-height:92vh;overflow:auto}.modal-box h3{margin:0 0 10px;font-size:20px;font-weight:300;color:var(--color-text-primary)}.modal-box .controls{justify-content:flex-end;margin-top:18px}.modal-box.wide{max-width:760px}.toast{position:fixed;right:24px;bottom:24px;border:1px solid var(--color-border);background:var(--color-bg);padding:10px 14px;font-size:13px;z-index:60;max-width:min(420px,calc(100vw - 48px))}.toast.warn{color:var(--accent-solid)}.toast.error{color:var(--hx-fail)}.run-row{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;align-items:center;padding:10px 0;border-bottom:1px solid var(--color-border-subtle)}.run-row:last-child{border-bottom:0}.run-row>p{grid-column:1;margin:2px 0}.run-row>.controls{grid-column:2;grid-row:1 / span 3;margin:0;justify-content:flex-end}.run-row.held{color:var(--color-text-faint)}.preview{font-family:var(--mono);font-size:13px;color:var(--color-text-secondary);border-left:1px solid var(--color-border);padding:4px 0 4px 12px;margin:10px 0;white-space:pre-wrap;overflow-wrap:anywhere}.log-list{list-style:none;padding:0;margin:4px 0}.log-list li{padding:3px 0;font-size:13px;border-bottom:1px solid var(--color-border-subtle)}.log-list li:last-child{border-bottom:0}.checklist{list-style:none;padding:0;margin:8px 0}.checklist li{padding:6px 0 6px 18px;position:relative;font-size:14px}.checklist li:before{content:"–";position:absolute;left:0;color:var(--color-text-faint)}.live-cell{display:inline-block;min-width:120px;margin:6px 24px 6px 0;vertical-align:top}.live-cell .k{display:block}.live-cell .v{font-family:var(--mono);font-size:20px;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.readings{font-family:var(--mono);font-size:12px;color:var(--color-text-secondary);border:1px solid var(--color-border-subtle);padding:8px 10px;margin:8px 0 14px}.badge{display:inline-block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--color-border-subtle);padding:2px 8px;color:var(--color-text-faint);white-space:nowrap}.badge.stable{color:var(--color-text-muted)}.badge.drifting{color:var(--accent-solid)}@media (max-width: 960px){.dash-body{grid-template-columns:1fr}.rail{border-left:0;padding-left:0;position:static}}@media (max-width: 720px){header{padding:8px 16px;gap:10px 12px}.brand .subtitle,.unit-label{display:none}main.screen{padding:4px 16px 32px}.card h2{font-size:19px}.timer-value{font-size:44px}.status-strip .right{margin-left:0}}
