*,:before,:after{box-sizing:border-box}:root{--card-background:#121c208c;--bg:#0b1316;--surface:#121c20;--surface-2:#18242a;--border:#8aaec921;--border-strong:#8aaec942;--text:#e7eef4;--text-dim:#9dacbc;--text-mute:#5f6e7e;--steel:#8aaec9;--amber:#e8913a;--amber-soft:#f4a555;--amber-ink:#1a1206;--hero-slate:#060c15;--hero-azure:#1a7fc2;--hero-steel:#7fa8c9;--hero-prism:#ff5fa2;--hero-rainbow-mask:#010305;--hero-white:#ecf1f5;--error:#c8552e;--success:#8aaec9;--font-display:600 38px/1.1 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-h3:600 17px/1.3 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-stat:700 26px/1.15 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:400 16px/1.55 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body-sm:400 13.5px/1.5 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-eyebrow:700 11.5px/1 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-label:700 11.5px/1 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:500 12px/1 JetBrains Mono, "SFMono-Regular", Consolas, monospace;--sec-pad:54px;--gutter:56px;--gap:14px;--radius:12px;--radius-sm:10px;--max:1120px;--ease-out:cubic-bezier(.22, 1, .36, 1);--speed:.2s}.button{border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:50px;padding:13px 26px;font-family:Inter,-apple-system,sans-serif;font-size:.98rem;font-weight:600;line-height:1;text-decoration:none;transition:transform .18s,background .18s,border-color .18s,opacity .18s;display:inline-flex}.button:active{transform:scale(.98)}.button:disabled{cursor:default;opacity:.45;pointer-events:none}.button-primary{width:100%;color:var(--amber-ink);background:var(--amber);border:1px solid var(--amber)}.button-primary:hover{background:var(--amber-soft);border-color:var(--amber-soft)}.button-ghost{color:var(--text);border:1px solid var(--border-strong);background:0 0}.button-ghost:hover{border-color:var(--amber)}.button-steel{color:var(--hero-slate);background:var(--hero-white);border:1px solid var(--hero-slate);transition:transform .18s}.button-steel:hover{transform:translateY(-2px)}html{background-color:var(--bg)}body,h1,h2,p,button{font:var(--font-body);margin:0}body{background-color:var(--bg);color:var(--text);min-height:100vh}h1{max-width:580px;color:var(--text);letter-spacing:0;text-wrap:balance;margin-top:0;margin-bottom:0;font-weight:500;line-height:1.05}p{color:var(--text-dim);margin-top:0;margin-bottom:0}h1{font-size:38px;font-weight:600;line-height:1.1}.signed-out-page{color:#fff;background-image:url(/assets/hero-base-v4-B3dAja-r.png);background-size:cover;justify-content:center;align-items:center;gap:100px;width:100vw;height:100vh;padding:100px;display:flex}.signed-out-page>*{flex:1}.card{background-color:var(--card-background);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius);padding:var(--sec-pad);border:1px solid var(--border);margin:0 auto}.signed-out-card{flex-direction:column;gap:10px;display:flex}.home-page{background:var(--bg);min-height:100vh;color:var(--text)}.home-main{max-width:var(--max);padding:var(--sec-pad) var(--gutter);margin:0 auto}.home-main:has(.printer-page){padding-top:calc(var(--sec-pad) + 20px)}.app-header{justify-content:space-between;align-items:center;gap:var(--gap);padding:18px var(--gutter);border-bottom:1px solid var(--border);background:var(--surface);display:flex}.app-header-brand{align-items:center;gap:12px;display:flex}.app-header-logo{object-fit:contain;width:36px;height:36px;display:block}.app-header-title{font:var(--font-h3);color:var(--text)}.app-header-user{flex-shrink:0}.app-header-user-pill{border:1px solid var(--border-strong);background:var(--surface-2);min-width:120px;max-width:240px;min-height:38px;color:var(--text-dim);font:var(--font-body-sm);cursor:pointer;transition:border-color var(--speed) var(--ease-out), background var(--speed) var(--ease-out), color var(--speed) var(--ease-out);border-radius:999px;justify-content:center;align-items:center;padding:8px 16px;display:inline-flex;position:relative;overflow:hidden}.app-header-user-pill:hover,.app-header-user-pill:focus-visible{border-color:var(--amber);color:var(--text);background:#e8913a1f;outline:none}.app-header-user-email,.app-header-sign-out{white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--speed) var(--ease-out);overflow:hidden}.app-header-sign-out{opacity:0;color:var(--amber-soft);justify-content:center;align-items:center;font-weight:600;display:flex;position:absolute;inset:0}.app-header-user-pill:hover .app-header-user-email,.app-header-user-pill:focus-visible .app-header-user-email{opacity:0}.app-header-user-pill:hover .app-header-sign-out,.app-header-user-pill:focus-visible .app-header-sign-out{opacity:1}.printer-view{gap:var(--gap);flex-direction:column;display:flex}.printer-view-header{justify-content:space-between;align-items:center;gap:var(--gap);display:flex}.printer-view-heading{font:var(--font-stat);color:var(--text);margin:0}.printer-view-actions{align-items:center;gap:8px;display:flex}.printer-view-count{font:var(--font-body-sm);color:var(--text-mute)}.printer-table-wrap{border:1px solid var(--border);background:var(--surface);overflow-x:auto}.printer-table{border-collapse:collapse;width:100%;font:var(--font-body-sm)}.printer-table th,.printer-table td{text-align:left;border-bottom:1px solid var(--border);padding:14px 16px}.printer-table th{color:var(--text-mute);font:var(--font-label);letter-spacing:.04em;text-transform:uppercase;background:var(--surface-2)}.printer-table tbody tr:last-child td{border-bottom:none}.printer-table td{color:var(--text)}.printer-table-col--job,.printer-table-cell--job{text-overflow:ellipsis;white-space:nowrap;width:12rem;max-width:12rem;overflow:hidden}.printer-table-row--clickable{cursor:pointer;transition:background var(--speed) var(--ease-out)}.printer-table-row--clickable:hover,.printer-table-row--clickable:focus-visible{background:var(--surface-2);outline:none}.printer-table-loading,.printer-table-empty{text-align:center;color:var(--text-mute);font:var(--font-body-sm);padding:32px 16px}.printer-table-loading p,.printer-table-empty{margin:0}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#060c15b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;max-width:420px;padding:28px;box-shadow:0 24px 64px #00000073}.modal-title{font:var(--font-h3);color:var(--text);margin:0}.modal-description{font:var(--font-body-sm);color:var(--text-dim);margin-top:8px}.pair-modal-form{flex-direction:column;gap:14px;margin-top:22px;display:flex}.field-label{font:var(--font-label);letter-spacing:.04em;text-transform:uppercase;color:var(--text-mute)}.field-input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);width:100%;min-height:48px;color:var(--text);font:var(--font-body-sm);transition:border-color var(--speed) var(--ease-out), box-shadow var(--speed) var(--ease-out);padding:12px 14px}.field-input::placeholder{color:var(--text-mute)}.field-input:hover:not(:disabled){border-color:#8aaec966}.field-input:focus{border-color:var(--amber);outline:none;box-shadow:0 0 0 3px #e8913a2e}.field-input:disabled{opacity:.55;cursor:not-allowed}.field-input-mono{font:var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.field-error{border-radius:var(--radius-sm);color:#f4b8a6;font:var(--font-body-sm);background:#c8552e1f;border:1px solid #c8552e59;padding:10px 12px}.modal-actions{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.modal-actions .button{min-height:44px;padding:11px 20px}.modal-actions .button-primary{flex:1;width:auto}.modal-actions .button-ghost{flex:none}.printer-page{flex-direction:column;gap:24px;display:flex}.back-link{color:var(--text-mute);font:var(--font-label);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:color var(--speed) var(--ease-out);background:0 0;border:none;align-self:flex-start;padding:0}.back-link:hover,.back-link:focus-visible{color:var(--amber-soft);outline:none}.printer-page-top{flex-direction:column;gap:12px;display:flex}.printer-page-title-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.printer-page-badges{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.printer-page-title{font:var(--font-stat);color:var(--text);margin:0}.printer-page-title-edit{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.printer-page-title-input{border:none;border-bottom:1px solid var(--border-strong);min-width:0;color:var(--text);font:var(--font-stat);background:0 0;flex:1;padding:0}.printer-page-title-input:focus{border-bottom-color:var(--amber);outline:none}.printer-page-edit-name{padding:4px 10px;font-size:.75rem}.printer-page-id{font:var(--font-mono);color:var(--text-mute);margin-top:6px}.printer-status-line{font:var(--font-body-sm);color:var(--text-dim)}.printer-status-line--warn{color:#f5d0a8}.printer-metrics{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px;margin:24px 0 0;display:grid}.printer-metric{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0;padding:12px 14px}.printer-metric-label{font:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-mute);margin:0}.printer-metric-value{font:var(--font-stat);color:var(--text);margin:8px 0 0;font-size:1.25rem}.printer-metric--wide{grid-column:span 2}.printer-metric--wide .printer-metric-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.printer-page-main{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:24px;min-height:420px;display:grid}.printer-page-main>.printer-camera,.printer-page-main>.printer-page-side{min-width:0;min-height:420px}.printer-page-side{flex-direction:column;gap:24px;min-height:0;display:flex}.printer-page-print-actions{flex-direction:column;gap:10px;display:flex}.printer-panel-title{font:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-mute);margin:0}.gcode-toolbar{flex-direction:row;gap:10px;width:100%;display:flex}.printer-notifications{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow:hidden}.printer-camera{flex-direction:column;gap:10px;min-height:0;display:flex}.printer-camera-title{font:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-mute);margin:0}.printer-camera-frame{flex:1;min-height:280px;overflow:hidden}.printer-camera-frame--demo{position:relative}.printer-camera-frame:has(.printer-camera-loading){justify-content:center;align-items:center;display:flex}.printer-camera-loading{font:var(--font-body-sm);color:var(--text-mute);margin:0}.printer-camera-image{object-fit:cover;width:100%;height:100%;display:block}.printer-camera-image--demo-blur{filter:blur(28px)saturate(.75);transform:scale(1.15)}.printer-camera-demo-overlay{text-align:center;font:var(--font-body-sm);color:var(--text);background:#060c158c;justify-content:center;align-items:center;margin:0;padding:24px;display:flex;position:absolute;inset:0}.printer-notifications-title{font:var(--font-label);letter-spacing:.06em;text-transform:uppercase;color:var(--text-mute);margin:0}.printer-notifications-list{overscroll-behavior:contain;flex-direction:column;flex:1;gap:10px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.printer-notifications-empty{font:var(--font-body-sm);color:var(--text-mute);margin:0}.printer-notification{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.printer-notification-content{min-width:0}.printer-notification-message{font:var(--font-body-sm);color:var(--text);margin:0}.printer-notification-time{font:var(--font-mono);color:var(--text-mute);margin-top:6px;font-size:.75rem;display:block}.printer-notification-dismiss{color:var(--text-mute);font:var(--font-label);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:color var(--speed) var(--ease-out);background:0 0;border:none;flex-shrink:0;padding:0}.printer-notification-dismiss:hover,.printer-notification-dismiss:focus-visible{color:var(--amber-soft);outline:none}@media (width<=900px){.printer-page-main{grid-template-columns:1fr}.printer-page-main>.printer-camera,.printer-page-main>.printer-page-side{min-height:320px}}.printer-page-footer{border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px;padding-top:24px;display:flex}.printer-remove-button{border-radius:var(--radius-sm);color:#c8552e;font:var(--font-label);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:background var(--speed) var(--ease-out), border-color var(--speed) var(--ease-out), color var(--speed) var(--ease-out);background:0 0;border:1px solid #c8552e73;padding:4px 10px;font-size:.6875rem}.printer-remove-button:hover:not(:disabled),.printer-remove-button:focus-visible{color:#f4b8a6;background:#c8552e24;border-color:#c8552ecc;outline:none}.printer-remove-button:disabled{opacity:.55;cursor:not-allowed}.status-badge{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);font:var(--font-label);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border-radius:999px;align-items:center;padding:6px 12px;display:inline-flex}.status-badge--idle{color:var(--steel);background:#8aaec91f;border-color:#8aaec959}.status-badge--downloading{color:#7ec8f0;background:#1a7fc21f;border-color:#1a7fc259}.status-badge--printing{color:var(--amber-soft);background:#e8913a1f;border-color:#e8913a59}.status-badge--error{color:#f4b8a6;background:#c8552e1f;border-color:#c8552e59}.status-badge--offline{color:var(--text-mute);background:#5f6e7e24;border-color:#5f6e7e59}.status-badge--live{color:#8fdfb4;background:#48bb781f;border-color:#48bb7859}.notice{border-radius:var(--radius-sm);font:var(--font-body-sm);padding:12px 14px}.notice-title{color:var(--text);font-weight:600}.notice-text{color:var(--text-dim);margin-top:4px}.notice--warning{color:#f5d0a8;background:#e8913a1a;border:1px solid #e8913a4d}.notice--info{color:var(--steel);background:#8aaec91a;border:1px solid #8aaec94d}.gcode-toolbar .button{flex:1;min-height:36px;padding:7px 16px}.gcode-toolbar .button:disabled{opacity:.45;cursor:not-allowed}.gcode-start-button{width:auto}.button-danger{border-radius:var(--radius-sm);color:#f4b8a6;cursor:pointer;min-height:44px;transition:background var(--speed) var(--ease-out), border-color var(--speed) var(--ease-out);background:#c8552e29;border:1px solid #c8552e73;padding:11px 20px;font-family:Inter,-apple-system,sans-serif;font-size:.98rem;font-weight:600}.button-danger:hover:not(:disabled){background:#c8552e42;border-color:#c8552e99}.button-danger:disabled{opacity:.45;cursor:not-allowed}.gcode-meta{font:var(--font-body-sm);color:var(--text-dim);margin-top:14px}.gcode-meta strong{color:var(--text);font-weight:600}.object-legend{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-wrap:nowrap;gap:8px;margin:14px 0 0;padding:0 0 4px;list-style:none;display:flex;overflow:auto hidden}.object-legend-item{border:1px solid var(--border);background:var(--surface-2);font:var(--font-body-sm);border-radius:999px;flex-shrink:0;align-items:center;gap:8px;padding:6px 12px;display:inline-flex}.object-legend-swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px}.object-legend-name{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;color:var(--text);overflow:hidden}.object-legend-count{color:var(--text-mute);font:var(--font-mono)}.gcode-preview-frame{border:1px solid var(--border);border-radius:var(--radius-sm);background:#060c15cc;height:min(420px,55vh);min-height:320px;margin-top:16px;overflow:hidden}.gcode-viewer{width:100%;height:100%;min-height:320px;position:relative}.gcode-viewer-canvas,.gcode-viewer-webgl{width:100%;height:100%;display:block;position:absolute;inset:0}.gcode-viewer-empty{text-align:center;font:var(--font-body-sm);color:var(--text-mute);pointer-events:none;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.preview-modal{flex-direction:column;gap:14px;width:min(1120px,100vw - 48px);max-width:none;max-height:min(92vh,960px);display:flex;overflow:hidden}.preview-modal .gcode-meta{margin-top:0}.preview-modal .object-legend{margin-top:0;margin-inline:-4px;padding-inline:4px}.preview-modal-frame{flex:1;min-height:min(480px,52vh);margin-top:0}.preview-modal-actions{margin-top:0;padding-top:4px}
