:root{color-scheme:light;--bg: #f5f5f7;--panel: #ffffff;--panel-2: #fafafa;--panel-3: #f4f4f5;--border: #e4e4e7;--border-soft: #f4f4f5;--text: #18181b;--text-soft: #3f3f46;--muted: #71717a;--muted-2: #a1a1aa;--accent: #2563eb;--accent-strong: #1d4ed8;--danger: #ef4444;--warn: #d97706;--ok: #059669;--btn-primary-bg: #18181b;--btn-primary-text: #ffffff;--btn-primary-hover: #27272a;--ok-panel-bg: #ecfdf5;--ok-panel-border: #d1fae5;--shadow: 0 1px 2.5px rgba(23, 26, 31, .07), 0 0 2px rgba(23, 26, 31, .08);--shadow-soft: 0 1px 1.25px rgba(23, 26, 31, .07), 0 0 1px rgba(23, 26, 31, .08);--hover-row: rgba(24, 24, 27, .025);--nav-active-bg: transparent;--badge-warn-bg: #fef3c7;--badge-warn-text: #92400e;--badge-danger-bg: #fee2e2;--badge-danger-text: #b91c1c;--badge-info-bg: #dbeafe;--badge-info-text: #1d4ed8;--badge-success-bg: #d1fae5;--badge-success-text: #065f46;--badge-neutral-bg: #f4f4f5;--badge-neutral-text: #3f3f46;--font-ui: "Golos Text", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--radius: 16px;--radius-sm: 12px;--radius-pill: 999px}[data-theme=dark]{color-scheme:dark;--bg: #111113;--panel: #18181b;--panel-2: #202024;--panel-3: #27272a;--border: #333338;--border-soft: #27272a;--text: #f4f4f5;--text-soft: #d4d4d8;--muted: #a1a1aa;--muted-2: #71717a;--accent: #60a5fa;--accent-strong: #93c5fd;--danger: #f87171;--warn: #f59e0b;--ok: #34d399;--btn-primary-bg: #f4f4f5;--btn-primary-text: #18181b;--btn-primary-hover: #ffffff;--ok-panel-bg: rgba(5, 150, 105, .14);--ok-panel-border: rgba(52, 211, 153, .24);--shadow: 0 1px 2px rgba(0, 0, 0, .36), 0 10px 30px -20px rgba(0, 0, 0, .8);--shadow-soft: 0 1px 2px rgba(0, 0, 0, .28);--hover-row: rgba(255, 255, 255, .035);--badge-warn-bg: #4a3512;--badge-warn-text: #fbbf24;--badge-danger-bg: #4a1717;--badge-danger-text: #fca5a5;--badge-info-bg: #172554;--badge-info-text: #bfdbfe;--badge-success-bg: #063d2c;--badge-success-text: #6ee7b7;--badge-neutral-bg: #27272a;--badge-neutral-text: #d4d4d8}*{box-sizing:border-box}body{margin:0;font-family:var(--font-ui);font-size:15px;line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-strong)}h1,h2,h3,h4{font-weight:600;letter-spacing:-.01em}h2{font-size:24px;line-height:1.18;margin:0 0 6px;color:var(--text)}h3,h4{color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.app-shell{min-height:100vh}.topnav{background:color-mix(in srgb,var(--bg) 84%,transparent);border-bottom:1px solid color-mix(in srgb,var(--border) 45%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:sticky;top:0;z-index:30}.topnav-inner{max-width:1440px;margin:0 auto;padding:18px 32px 16px;display:flex;align-items:center;gap:28px}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:18px;letter-spacing:-.025em;white-space:nowrap;color:var(--text)}.topnav-links{display:flex;gap:4px;align-items:center}.topnav-links>a,.nav-more-btn{min-height:36px;display:inline-flex;align-items:center;padding:7px 16px;border-radius:var(--radius-pill);border:1px solid transparent;color:var(--muted);white-space:nowrap;cursor:pointer;font-size:14px;font-weight:500;transition:color .15s,background .15s}.topnav-links>a:hover,.nav-more-btn:hover{color:var(--text)}.topnav-links>a.active{color:var(--text);background:var(--panel);border-color:transparent;font-weight:600;box-shadow:var(--shadow)}.nav-more{position:relative}.nav-more-menu{display:none;position:absolute;left:0;top:100%;margin-top:8px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:6px;min-width:190px;box-shadow:var(--shadow)}.nav-more:hover .nav-more-menu{display:block}.nav-more-menu a{display:block;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text);font-size:14px}.nav-more-menu a:hover{background:var(--hover-row);color:var(--accent)}.nav-more-menu a.active{color:var(--accent)}.topnav-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.app-content{max-width:1440px;margin:0 auto;padding:32px 64px 64px}@media(max-width:760px){.topnav-inner{flex-wrap:wrap;gap:12px;padding:10px 16px}.app-content{padding:16px}}.card{background:var(--panel);border:1px solid color-mix(in srgb,var(--border) 50%,transparent);border-radius:var(--radius);padding:24px;margin-bottom:16px;box-shadow:var(--shadow)}.card-title{margin:0;font-size:15px;line-height:1.35;font-weight:600;color:var(--text);letter-spacing:-.02em}.card-sub{color:var(--muted);font-size:13px;margin:6px 0 16px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--border-soft);vertical-align:middle}th{color:var(--muted-2);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.06em}td{font-variant-numeric:tabular-nums}tbody tr{transition:background .12s}tbody tr:hover{background:var(--hover-row)}td a{color:var(--text);font-weight:600}td a:hover{color:var(--accent)}button{background:var(--btn-primary-bg);color:var(--btn-primary-text);border:none;min-height:40px;padding:9px 18px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;font-family:var(--font-ui);transition:background .15s,border-color .15s,color .15s}button:hover{background:var(--btn-primary-hover)}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{background:var(--panel);border:1px solid var(--border);color:var(--text-soft);font-weight:500}button.secondary:hover{background:var(--panel);border-color:var(--muted-2);color:var(--text)}button.danger{background:var(--danger)}button.danger:hover{background:color-mix(in srgb,var(--danger) 85%,#000)}input,select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;font-family:var(--font-ui);width:100%;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.65}label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin:10px 0 6px}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:160px}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;background:var(--badge-neutral-bg);color:var(--badge-neutral-text)}.badge.almost_empty{background:var(--badge-warn-bg);color:var(--badge-warn-text)}.badge.empty{background:var(--badge-danger-bg);color:var(--badge-danger-text)}.badge.in_use{background:var(--badge-info-bg);color:var(--badge-info-text)}.badge.added{background:var(--badge-success-bg);color:var(--badge-success-text)}.badge.used{background:var(--badge-danger-bg);color:var(--badge-danger-text)}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.login-card{width:min(380px,100%);padding:28px}.login-card h1{font-size:24px;margin:10px 0 14px}.error{color:var(--danger);font-size:13px;margin-top:8px}.muted{color:var(--muted)}.dash-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.dash-kpis .card{padding:14px}.dash-main{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);gap:16px;align-items:start}.dash-charts{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dash-charts .card{padding:16px}.dash-charts .card-sub{margin:4px 0 10px}@media(max-width:1100px){.dash-kpis{grid-template-columns:repeat(2,1fr)}.dash-main,.dash-charts{grid-template-columns:1fr}}.dash-printers{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;margin-bottom:24px}.dash-printers>*{min-width:0}.moonraker-card{display:flex;flex-direction:column;min-height:260px}.kpi{display:flex;flex-direction:column;gap:4px}.kpi-top{display:flex;justify-content:space-between;align-items:flex-start}.kpi-label{color:var(--muted);font-size:13px;font-weight:600}.kpi-value{font-size:26px;font-weight:600;line-height:1.12;letter-spacing:-.025em;font-variant-numeric:tabular-nums}.kpi-icon{display:none}.kpi-sub{font-size:12.5px;color:var(--muted)}.kpi-icon{width:36px;height:36px;border-radius:var(--radius-sm);display:none;align-items:center;justify-content:center;font-size:17px}.act-tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600}.act-tag.used{background:var(--badge-warn-bg);color:var(--badge-warn-text)}.act-tag.added{background:var(--badge-success-bg);color:var(--badge-success-text)}.act-tag.in_use{background:var(--badge-info-bg);color:var(--badge-info-text)}.act-tag.updated,.act-tag.moved{background:var(--badge-neutral-bg);color:var(--badge-neutral-text)}.lowstock-bar{height:6px;border-radius:6px;background:var(--panel-3);overflow:hidden;margin-top:8px}.lowstock-bar>div{height:100%;background:var(--danger);border-radius:5px}.inv-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px;padding:12px;border-radius:var(--radius);background:color-mix(in srgb,var(--panel) 70%,transparent);border:1px solid color-mix(in srgb,var(--border) 55%,transparent);box-shadow:var(--shadow-soft)}.inv-search{flex:1;min-width:200px}.filter-chip{background:var(--panel);border:1px solid var(--border);color:var(--text-soft);border-radius:var(--radius-sm);padding:9px 12px;font-weight:500;width:auto}.filter-chip:hover{background:var(--panel);border-color:var(--muted-2);color:var(--text)}.inv-thumb{width:42px;height:42px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0}.mat-pill{display:inline-flex;align-items:center;padding:3px 10px;border:1px solid var(--border);border-radius:var(--radius-pill);font-size:12px;font-weight:600;color:var(--text-soft);background:var(--panel)}.swatch{width:14px;height:14px;border-radius:50%;border:1px solid var(--border);display:inline-block;vertical-align:middle}.seg{display:inline-flex;gap:3px;padding:4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--border) 35%,transparent);overflow:hidden}.seg button{min-height:30px;background:transparent;border:none;padding:6px 12px;color:var(--muted);border-radius:8px;font-weight:600}.seg button.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow-soft)}.progress{height:7px;border-radius:7px;background:var(--panel-3);overflow:hidden}.progress>div{height:100%;border-radius:7px;transition:width .6s ease}.kebab-wrap{position:relative;display:inline-block}.kebab-menu{position:absolute;right:0;top:100%;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:175px;z-index:10;padding:5px;box-shadow:var(--shadow)}.kebab-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--text);padding:8px 10px;border-radius:var(--radius-sm);font-weight:500}.kebab-menu button:hover{background:var(--hover-row);color:var(--accent)}.inv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.inv-row:hover{background:var(--hover-row)}.icon-btn{min-height:32px;min-width:32px;background:transparent;border:1px solid var(--border);color:var(--text-soft);padding:5px 8px;border-radius:10px}.icon-btn:hover{background:var(--panel);border-color:var(--muted-2);color:var(--text)}.form-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:16px;align-items:start}@media(max-width:1000px){.form-grid{grid-template-columns:1fr}}.photo-drop{width:130px;height:130px;border:1px dashed var(--border);border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;color:var(--muted);background:var(--panel-2);overflow:hidden}.photo-drop img{width:100%;height:100%;object-fit:cover}.field-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.unit-input{display:flex;align-items:center;gap:6px}.unit-input input{flex:1}.unit{color:var(--muted);font-size:13px}.req{color:var(--danger)}.sd-grid{display:grid;grid-template-columns:minmax(0,430px) minmax(0,1fr);gap:16px;align-items:start}@media(max-width:1000px){.sd-grid{grid-template-columns:1fr}}.sd-photo{width:100%;aspect-ratio:1;border-radius:var(--radius);background:var(--panel-2);border:1px solid var(--border);object-fit:cover;display:block}.sd-tags{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.sd-tag{border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500;display:inline-flex;gap:6px;align-items:center}.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px}.spec-label{color:var(--muted);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.spec-value{font-family:var(--font-mono);font-size:21px;font-weight:600;margin-top:2px}.spec-sub{color:var(--muted);font-size:12px}.profile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media(max-width:700px){.profile-grid{grid-template-columns:repeat(2,1fr)}.spec-grid{grid-template-columns:1fr 1fr}}.spec-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 14px}@media(max-width:800px){.spec-form-grid{grid-template-columns:repeat(2,1fr)}}.row-item{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:14px}.row-item .k{color:var(--muted)}.chip-select{display:flex;flex-wrap:wrap;gap:8px}.chip{min-height:32px;background:var(--panel);border:1px solid var(--border);color:var(--text-soft);border-radius:var(--radius-pill);padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer}.chip:hover{background:var(--panel);border-color:var(--muted-2);color:var(--text)}.chip-on{background:color-mix(in srgb,var(--accent) 10%,var(--panel));border-color:var(--accent);color:var(--accent)}.lang-switch{display:inline-flex;gap:3px;padding:4px;border:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:color-mix(in srgb,var(--border) 35%,transparent);border-radius:10px;overflow:hidden}.lang-btn{min-height:24px;background:transparent;border:none;color:var(--muted);padding:2px 8px;font-size:12px;font-weight:600;cursor:pointer;border-radius:6px}.lang-btn.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow-soft)}.lang-btn:not(.active):hover{background:transparent;color:var(--text)}.theme-btn{min-height:32px;padding:4px 9px;font-size:14px;line-height:1.4;border-radius:10px}.hub-gates{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}.gate-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;background:var(--panel);box-shadow:var(--shadow-soft)}.gate-card.gate-warn{border-color:var(--danger)}.gate-verdict{font-weight:700;font-size:13px}.gate-verdict.ok{color:var(--ok)}.gate-verdict.warn{color:var(--danger)}.gate-verdict.hint{color:var(--accent)}.gate-verdict.dim{color:var(--muted)}.gate-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);border-radius:16px;padding:3px 9px;font-size:12px;background:var(--panel-2)}.gate-chip.gate-warn{border-color:var(--danger)}.hub-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}.hub-stats>div{display:flex;flex-direction:column;gap:2px}.hub-stats b{font-family:var(--font-mono);font-size:20px;font-weight:600}.hub-stats .muted{font-size:12px}@media(max-width:640px){.topnav-inner{flex-wrap:wrap;gap:8px;padding:10px 12px}.brand{order:0}.topnav-actions{order:1;margin-left:auto;gap:8px}.topnav-actions .muted{display:none}.topnav-links{order:2;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.topnav-links::-webkit-scrollbar{display:none}.nav-more-btn{display:none}.nav-more-menu{display:flex!important;position:static;margin:0;padding:0;border:none;box-shadow:none;background:transparent;min-width:0}.nav-more-menu a{white-space:nowrap;padding:7px 12px;color:var(--muted)}.nav-more-menu a.active{color:var(--accent);background:var(--nav-active-bg);border-radius:var(--radius-sm)}.app-content{padding:16px 12px 40px}table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}th,td{white-space:nowrap}input,select,textarea{font-size:16px}.dash-kpis{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.kpi-value{font-size:20px}.kpi{gap:3px}.kpi-label{font-size:12.5px}.kpi-sub{font-size:12px}.field-2,.spec-grid{grid-template-columns:1fr}.spec-form-grid,.profile-grid,.hub-gates,.hub-stats{grid-template-columns:1fr 1fr}.card{padding:13px 14px;margin-bottom:10px}h2{font-size:20px;margin-bottom:4px}.dash-printers{gap:14px;margin-bottom:16px}.inv-toolbar{padding:10px;gap:8px;margin-bottom:12px}.card-sub{margin:4px 0 12px}.dash-main>div:first-child{order:2}.dash-main>div:last-child{order:1}.inv-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.inv-grid .card{padding:11px;margin-bottom:0}.inv-search{min-width:100%}.inv-toolbar .filter-chip{flex:1 1 90px;min-width:90px}}@media(max-width:359px){.dash-kpis{grid-template-columns:1fr}}.dash-main>*,.dash-charts>*,.sd-grid>*,.form-grid>*{min-width:0}@media(max-width:1100px){.dash-main,.dash-charts{grid-template-columns:minmax(0,1fr)}}@media(max-width:1000px){.sd-grid,.form-grid{grid-template-columns:minmax(0,1fr)}}.printer-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);gap:24px;align-items:stretch;min-width:0}@media(max-width:900px){.printer-grid{grid-template-columns:1fr}}.printer-zone{display:flex;flex-direction:column;padding:2px 0;min-width:0}.printer-grid>.printer-zone+.printer-zone{border-left:1px solid var(--border-soft);padding-left:24px}@media(max-width:900px){.printer-grid>.printer-zone+.printer-zone{border-left:none;padding-left:0;border-top:1px solid var(--border-soft);padding-top:16px}}.zone-file-box{background:var(--panel-2);border:1px solid color-mix(in srgb,var(--border-soft) 70%,transparent);border-radius:var(--radius);padding:10px 14px;font-weight:500;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dryer-box{border:1px solid var(--border-soft);border-radius:var(--radius);padding:12px 14px;margin-top:12px;background:var(--panel);box-shadow:var(--shadow-soft)}.dryer-control{display:flex;flex-direction:column;gap:12px}.dryer-head{display:flex;align-items:center;justify-content:space-between;gap:14px}.dryer-title{font-weight:700;color:var(--text)}.dryer-state{display:inline-flex;align-items:center;gap:7px;margin-top:5px;color:var(--muted);font-size:12.5px;font-weight:600}.dryer-state>span{width:7px;height:7px;border-radius:50%;background:var(--muted-2);box-shadow:0 0 0 3px color-mix(in srgb,var(--muted-2) 14%,transparent)}.dryer-state.on{color:var(--text-soft)}.dryer-state.on>span{background:#34c759;box-shadow:0 0 0 3px color-mix(in srgb,#34c759 18%,transparent)}.dryer-state.error{color:var(--danger)}.dryer-state.error>span{background:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 16%,transparent)}.dryer-live-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;overflow:hidden;border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--border-soft);box-shadow:inset 0 1px #ffffff59}.dryer-live-metric{min-width:0;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:color-mix(in srgb,var(--panel-2) 88%,var(--panel))}.dryer-live-metric span{color:var(--muted);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.dryer-live-metric b{color:var(--text);font-size:20px;line-height:1.05;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.dryer-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dryer-fields label{margin-top:0}.dryer-presets{margin-top:12px;padding:10px;border-radius:var(--radius);background:color-mix(in srgb,var(--panel-2) 82%,var(--panel));border:1px solid var(--border-soft)}.dryer-presets-label{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin:0 2px 10px}.dryer-presets-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.dryer-preset{min-height:70px;width:100%;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:9px;padding:11px 12px;border-radius:var(--radius-sm);background:var(--panel);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);color:var(--text);box-shadow:var(--shadow-soft);text-align:left}.dryer-preset:hover{background:color-mix(in srgb,var(--panel) 88%,var(--accent));border-color:color-mix(in srgb,var(--accent) 30%,var(--border))}.dryer-preset:disabled{opacity:.55;background:var(--panel);border-color:var(--border-soft)}.dryer-preset-material{font-size:18px;line-height:1;font-weight:800;letter-spacing:0}.dryer-preset-values{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:700}.dryer-preset-values span{display:inline-flex;min-height:24px;align-items:center;padding:3px 8px;border-radius:var(--radius-pill);background:var(--panel-3);color:var(--text-soft)}.apple-switch{width:52px;min-width:52px;height:32px;min-height:32px;padding:2px;border:none;border-radius:var(--radius-pill);background:#d1d5db;display:inline-flex;align-items:center;justify-content:flex-start;box-shadow:inset 0 0 0 1px #0000000a}.apple-switch:hover{background:#cbd5e1}.apple-switch span{display:block;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000002e,0 2px 6px #00000024;transition:transform .18s ease}.apple-switch.on{background:#34c759}.apple-switch.on:hover{background:#2fbd51}.apple-switch.on span{transform:translate(20px)}[data-theme=dark] .apple-switch{background:#3f3f46}[data-theme=dark] .apple-switch:hover{background:#52525b}[data-theme=dark] .apple-switch.on{background:#30d158}[data-theme=dark] .apple-switch.on:hover{background:#34c759}.moonraker-card{position:relative}@media(min-width:641px){.moonraker-card{padding:18px}}.moonraker-card:before{content:"";position:absolute;left:0;top:16px;bottom:16px;width:4px;background:var(--brand, var(--accent));border-radius:0 4px 4px 0;opacity:.85}.printer-head{display:flex;align-items:center;gap:14px;margin-bottom:10px}.printer-head .printer-head-main{flex:1 1 auto;min-width:0}.printer-head-main h3{margin:0;font-size:17px}.printer-head-sub{color:var(--muted);font-size:13px;margin-top:1px}.printer-head-status{display:flex;gap:6px;align-items:center;flex:0 0 auto}.cap-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.cap-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-soft);background:var(--panel-3);border:1px solid var(--border-soft);padding:2px 8px;border-radius:var(--radius-pill)}.preset-preview{display:flex;align-items:center;gap:14px;margin:2px 0 12px;padding:10px 12px;background:var(--panel-2);border:1px solid var(--border-soft);border-left:4px solid var(--brand, var(--accent));border-radius:var(--radius-sm)}.cat-brand{border-bottom:1px solid var(--border-soft)}.cat-brand:last-child{border-bottom:none}.cat-brand-head{display:flex;align-items:center;gap:10px;width:100%;background:transparent;color:var(--text);border:none;padding:12px 16px;font-size:15px;font-weight:600;cursor:pointer;border-radius:0;min-height:0}.cat-brand-head:hover{background:var(--hover-row)}.cat-brand-head .cat-chevron{color:var(--muted-2);width:14px;font-size:12px}.cat-brand-head .muted{margin-left:auto;font-weight:400}.cat-brand table{border-top:1px solid var(--border-soft)}.cat-brand td{border-bottom:1px solid var(--border-soft)}.seg-toggle{display:flex;gap:3px;padding:3px;background:var(--panel-3);border:1px solid var(--border);border-radius:var(--radius-pill);width:100%;max-width:440px}.seg-item{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;font-weight:600;font-size:14px;padding:8px 10px;border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.seg-item:hover:not(.active):not(:disabled){color:var(--text-soft)}.seg-item.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow-soft)}.seg-item:disabled{cursor:not-allowed;opacity:.55}.seg-hint{margin-top:12px;font-size:13px;line-height:1.5;color:var(--muted);min-height:34px}.seg-hint b{color:var(--text-soft);font-weight:600}.zone-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-2);margin-bottom:12px}.zone-file{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zone-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,auto));gap:8px 26px;margin-top:12px;justify-content:start;min-width:0}.zone-metrics>div{display:flex;flex-direction:column;gap:2px}.zone-metrics .muted{font-size:11.5px}.zone-metrics b{font-size:15px;font-weight:600}.zone-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:14px}.printer-lifetime{position:relative;overflow:hidden;margin:0 0 16px;padding:14px;border-radius:var(--radius);background:linear-gradient(135deg,color-mix(in srgb,var(--panel) 96%,var(--accent)) 0%,var(--panel) 52%,var(--panel-2) 100%);border:1px solid color-mix(in srgb,var(--border) 72%,transparent);box-shadow:var(--shadow)}.printer-lifetime:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.36),transparent 42%)}.printer-lifetime-head,.printer-lifetime-body{position:relative;z-index:1}.printer-lifetime-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.printer-lifetime-title{color:var(--text);font-size:16px;line-height:1.2;font-weight:800;letter-spacing:0}.printer-lifetime-subtitle{margin-top:2px;color:var(--muted);font-size:12.5px;font-weight:600}.printer-lifetime-body{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(0,1.4fr);gap:10px}.printer-lifetime-hero,.printer-lifetime-stat{min-width:0;border:1px solid color-mix(in srgb,var(--border-soft) 80%,transparent);background:color-mix(in srgb,var(--panel) 82%,transparent);box-shadow:var(--shadow-soft)}.printer-lifetime-hero{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:92px;padding:13px;border-radius:var(--radius)}.printer-lifetime-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.printer-lifetime-stat{display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:92px;padding:13px;border-radius:var(--radius-sm)}.printer-lifetime-hero span,.printer-lifetime-stat span{color:var(--muted);font-size:12px;line-height:1.25;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.printer-lifetime-hero b,.printer-lifetime-stat b{color:var(--text);line-height:.95;font-weight:850;font-variant-numeric:tabular-nums}.printer-lifetime-hero b{font-size:clamp(30px,5vw,44px);letter-spacing:-.03em}.printer-lifetime-stat b{font-size:26px;letter-spacing:-.02em}.printer-lifetime-hero em,.printer-lifetime-stat em{color:var(--muted);font-size:12.5px;line-height:1.25;font-style:normal;font-weight:600}.printer-actions>button{min-width:0}.mono{font-family:var(--font-mono)}.moonraker-card{min-height:0}.gate-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(68px,1fr));gap:10px;min-width:0}.gate-tile{border:1px solid var(--border-soft);border-radius:var(--radius);padding:9px 6px 7px;text-align:center;position:relative;background:var(--panel-2);min-height:86px}.gate-tile.gate-warn{border-color:var(--danger)}.gate-tile-swatch{width:52px;height:50px;border-radius:10px;margin:0 auto 6px;border:1px solid var(--border)}.gate-tile-cap{font-size:11.5px;font-weight:600;white-space:nowrap}.gate-tile .gate-verdict{position:absolute;top:4px;right:6px;font-size:11px}.ok-panel{background:var(--ok-panel-bg);border:1px solid var(--ok-panel-border);border-radius:var(--radius-sm);padding:16px 18px;margin-top:18px}.ok-panel-title{color:var(--ok);font-weight:600;font-size:14px}.ok-panel .muted{font-size:13px;margin-top:2px}.ok-panel a{text-decoration:underline;font-size:13px}.act-list{margin-top:6px}.act-item{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:9px 0;border-bottom:1px solid var(--border-soft)}.act-item:last-child{border-bottom:none}.act-name{font-weight:600;font-size:14px}.act-sub{color:var(--muted);font-size:12.5px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:520px}.act-right{text-align:right;flex-shrink:0}.act-amount{font-weight:600;font-size:14px;font-variant-numeric:tabular-nums}.act-amount.neg{color:var(--danger)}.act-amount.pos{color:var(--ok)}.act-time{color:var(--muted);font-size:12px;margin-top:1px}@media(max-width:640px){.printer-grid{gap:16px}.printer-head{flex-wrap:wrap}.printer-head .printer-head-main{flex-basis:55%}.printer-head-status{flex-wrap:wrap;justify-content:flex-start}.zone-metrics{grid-template-columns:1fr;gap:6px}.zone-metrics>div{flex-direction:row;justify-content:space-between;align-items:baseline;gap:12px}.zone-file-box{white-space:normal;overflow-wrap:anywhere}.printer-actions{flex-direction:column}.printer-actions>button{width:100%}.gate-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.gate-tile-swatch{width:min(52px,70%)}.dryer-head{align-items:flex-start}.dryer-live-panel,.dryer-fields{grid-template-columns:1fr}.dryer-presets{padding:10px}.dryer-presets-label{margin-bottom:8px}.dryer-presets-list{grid-template-columns:repeat(3,1fr);gap:8px}.dryer-preset{min-height:0;padding:9px 8px;gap:6px}.dryer-preset-material{font-size:15px}.dryer-preset-values{flex-direction:column;align-items:flex-start;gap:4px}.printer-lifetime{padding:12px}.printer-lifetime-head{margin-bottom:8px}.printer-lifetime-body{grid-template-columns:1fr;gap:8px}.printer-lifetime-grid{grid-template-columns:1fr 1fr;gap:8px}.printer-lifetime-hero,.printer-lifetime-stat{min-height:0;padding:11px 12px;gap:4px}.printer-lifetime-hero b{font-size:30px}.printer-lifetime-stat b{font-size:22px}}.mobile-topbar,.bottom-nav{display:none}@media(max-width:760px){.topnav{display:none}.mobile-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 85%,transparent);border-bottom:1px solid color-mix(in srgb,var(--border) 45%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 14px;padding-top:max(8px,env(safe-area-inset-top));padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}.mobile-topbar .brand{font-size:16px}.mobile-topbar-actions{display:flex;align-items:center;gap:8px}.mobile-more-btn{min-height:38px;min-width:42px;font-size:17px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.app-content{overflow-x:clip;padding-top:12px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));padding-bottom:calc(74px + env(safe-area-inset-bottom))}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:color-mix(in srgb,var(--panel) 90%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--border);padding:4px;padding-bottom:calc(4px + env(safe-area-inset-bottom))}.bn-item{flex:1 1 0;min-width:0;min-height:0;background:transparent;border:none;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;border-radius:10px;cursor:pointer;color:var(--muted);font-size:10px;font-weight:600;text-align:center;white-space:nowrap;transition:color .15s}.bn-item:hover{background:transparent}.bn-ico{font-size:18px;line-height:1}.bn-item.active{color:var(--accent)}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0000006b;display:flex;align-items:flex-end;animation:sheet-fade .16s ease}.sheet{width:100%;background:var(--panel);border-radius:22px 22px 0 0;padding:8px 16px;padding-bottom:calc(18px + env(safe-area-inset-bottom));box-shadow:0 -10px 44px #00000047;animation:sheet-up .24s cubic-bezier(.16,1,.3,1)}.sheet-handle{width:40px;height:4px;border-radius:2px;background:var(--border);margin:6px auto 14px}.sheet-links{display:flex;flex-direction:column;gap:2px}.sheet-links a{display:flex;align-items:center;gap:10px;padding:14px 12px;border-radius:12px;color:var(--text);font-size:16px;font-weight:500}.sheet-links a:hover,.sheet-links a.active{background:var(--hover-row);color:var(--accent)}.sheet-footer{margin-top:12px;padding-top:14px;border-top:1px solid var(--border-soft)}.sheet-footer-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.sheet-footer-row button{min-height:38px}.sheet-email{font-size:12px;margin-top:12px;text-align:center}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@media(max-width:640px){table.cards-mobile{display:block}table.cards-mobile thead{display:none}table.cards-mobile tbody{display:block}table.cards-mobile tr{display:block;margin-bottom:8px;padding:2px 4px 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel)}table.cards-mobile tr:hover{background:var(--panel)}table.cards-mobile td{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:7px 10px;border-bottom:1px solid var(--border-soft);white-space:normal;text-align:right}table.cards-mobile td:last-child{border-bottom:none}table.cards-mobile td:before{content:attr(data-label);flex:0 0 auto;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-align:left}table.cards-mobile td[data-label=""]{justify-content:stretch;gap:8px;padding-top:9px}table.cards-mobile td[data-label=""] button,table.cards-mobile td[data-label=""]>div>button{min-height:36px}table.cards-mobile td[data-label=""]:before{display:none}table.cards-mobile td[data-label=""]>button,table.cards-mobile td[data-label=""]>a{width:100%}table.cards-mobile td[data-label=""]{flex-wrap:wrap}table.cards-mobile td[data-label=""]>div{width:100%;flex-wrap:wrap}}.demo-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 16px;font-size:13px;color:#fff;background:linear-gradient(90deg,var(--accent),#7c3aed)}.demo-banner-dot{color:#b9f6ca;font-size:10px;animation:demo-pulse 2s ease-in-out infinite}@keyframes demo-pulse{0%,to{opacity:1}50%{opacity:.35}}.demo-banner-text{flex:1 1 auto;min-width:200px}.demo-banner-text b{font-weight:700}.demo-banner-link{color:#fff;text-decoration:underline;opacity:.9;font-size:12px;white-space:nowrap}.demo-banner-link:hover{opacity:1}.demo-banner-reset{padding:4px 12px;font-size:12px;border-radius:999px;cursor:pointer;color:#fff;background:#ffffff2e;border:1px solid rgba(255,255,255,.4);min-height:0}.demo-banner-reset:hover{background:#ffffff4d}
