:root{--accent: #38bdf8;--bg: #060a13;--panel: #0d1526;--panel-soft: #111c30;--border: #1e293b;--text: #e2e8f0;--muted: #8ea2bd;--danger: #f87171;--radius: 10px;--viewport-height: clamp(400px, 60vh, 760px);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600}button,input,textarea{font:inherit;color:inherit}.app{min-height:100vh;display:flex;flex-direction:column;gap:14px;padding:16px 20px 28px}.app__head{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px}.app__head-brand{min-width:0}.view-tabs{display:flex;align-items:flex-end;justify-content:center;gap:8px;padding-bottom:1px;justify-self:center}.view-tabs__tab{padding:8px 18px;border:none;border-bottom:4px solid transparent;background:none;color:var(--muted);cursor:pointer;font-size:var(--panel-text-size, var(--tab-font-size, 30px));line-height:1.05;font-weight:600}.view-tabs__tab.is-active{color:#fff;border-bottom-color:#38bdf8}.view-tabs__tab:focus-visible{outline:2px solid #38bdf8;outline-offset:2px;border-radius:3px}.app__head h1{font-size:var(--panel-text-size, var(--title-font-size, 35px));letter-spacing:-.01em}.app__head p{margin:2px 0 0;color:var(--muted);font-size:var(--subtitle-font-size, 25px)}.app__head p.app__head-credit{font-size:calc(var(--panel-text-size, 35px) * 13 / 35);letter-spacing:.02em}.status{display:flex;align-items:center;justify-content:flex-end;gap:8px;color:var(--muted);font-size:var(--panel-text-size, 12.5px);justify-self:end}.status__dot{width:8px;height:8px;border-radius:50%;background:#475569}.status__dot--live{background:#4ade80;box-shadow:0 0 0 4px #4ade8026}.status__warn{margin-left:8px;padding:3px 9px;border-radius:999px;background:#f871711f;color:var(--danger);font-weight:600}.app__body{display:flex;flex-direction:column;gap:14px}.app__stage{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px;align-items:start}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.kpi{background:linear-gradient(180deg,var(--panel-soft),var(--panel));border:1px solid var(--border);border-radius:var(--radius);padding:11px 13px;text-align:center}.kpi--warn{border-color:#f8717173}.kpi__label{display:block;color:var(--muted);font-size:calc(var(--panel-text-size, 22px) * .5);text-transform:uppercase;letter-spacing:.06em}.kpi__value{display:block;margin-top:4px;font-size:var(--panel-text-size, 22px);font-weight:600;font-variant-numeric:tabular-nums}.kpi__value em{margin-left:5px;font-size:calc(var(--panel-text-size, 22px) * 12 / 22);font-style:normal;color:var(--muted)}.kpi__meter{display:block;margin-top:8px;height:4px;border-radius:2px;background:var(--border);overflow:hidden}.kpi__meter i{display:block;height:100%;background:var(--accent);transition:width .25s ease}.viewport{position:relative;height:var(--viewport-height, clamp(400px, 60vh, 760px));border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#0b1120}.viewport__hint{position:absolute;left:12px;bottom:10px;padding:4px 10px;border-radius:999px;background:#020617b3;color:var(--muted);font-size:var(--panel-text-size, 11px);pointer-events:none}.camera-debug{position:absolute;top:10px;left:12px;z-index:4;display:flex;align-items:flex-start;gap:8px;padding:8px 8px 8px 10px;border-radius:8px;background:#020617c7;border:1px solid var(--border);pointer-events:auto}.camera-debug pre{margin:0;color:#e2e8f0;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:11px;line-height:1.45;white-space:pre}.sidebar{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}.sidebar--alerts{height:var(--viewport-height);max-height:var(--viewport-height);overflow:hidden}.sidebar--alerts [data-panel=run]{flex:0 0 auto}.sidebar--alerts [data-panel=active-alerts]{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.sidebar--alerts [data-panel=active-alerts] .panel__body{flex:1 1 auto;min-height:0;overflow:hidden}.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}.panel__head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 13px;border-bottom:1px solid var(--border)}.panel__head h2{font-size:var(--panel-text-size, 12px);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}[data-panel=run] .panel__head,[data-panel=active-alerts] .panel__head{justify-content:center}[data-panel=run] .panel__head h2,[data-panel=active-alerts] .panel__head h2{text-align:center;width:100%}.panel__body{padding:12px 13px;display:flex;flex-direction:column;gap:12px}.run-seed{margin:0;color:var(--muted);font-size:calc(var(--panel-text-size, 12px) * 10.5 / 12);font-variant-numeric:tabular-nums}.panel__hint{margin:0;color:var(--muted);font-size:calc(var(--panel-text-size, 12px) * 11.5 / 12);line-height:1.5}.field{display:flex;flex-direction:column;gap:5px}.field__label{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:var(--panel-text-size, 12px)}.field__label em{font-style:normal;font-size:10.5px;color:var(--muted)}.field__row{display:flex;align-items:center;gap:9px}.field__row input[type=range]{flex:1;min-width:0;accent-color:var(--accent)}.field__number{width:66px;padding:5px 7px;border:1px solid var(--border);border-radius:6px;background:var(--bg);font-variant-numeric:tabular-nums}.field__text,.field__select{width:100%;padding:5px 7px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:inherit;font-family:ui-monospace,Cascadia Code,monospace;font-size:11.5px}.field__select{cursor:pointer}.vec3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.vec3__axis{display:flex;align-items:center;gap:4px;padding:0 6px;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.vec3__axis>span{color:var(--muted);font-size:10px;font-weight:600}.vec3__axis input{width:100%;min-width:0;padding:5px 0;border:none;background:none;font-size:11.5px;font-variant-numeric:tabular-nums}.vec3__axis input:focus{outline:none}.measure{display:flex;flex-direction:column;gap:7px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft)}.measure>span{color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em}.measure>code{font-family:ui-monospace,Cascadia Code,monospace;font-size:12px}.panel__hint code{padding:1px 4px;border-radius:4px;background:var(--bg);font-size:10.5px}.toggle{display:flex;align-items:flex-start;gap:9px;font-size:calc(var(--panel-text-size, 12px) * 12.5 / 12);cursor:pointer}.toggle input{margin-top:2px;accent-color:var(--accent)}.toggle em{display:block;font-style:normal;font-size:10.5px;color:var(--muted)}.btn{padding:6px 11px;border:1px solid var(--border);border-radius:7px;background:var(--panel-soft);cursor:pointer;font-size:12.5px;transition:border-color .15s,background .15s}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:#04121f;font-weight:600}.btn--run{background:#22c55e;border-color:#22c55e;color:#052e16;font-weight:600}.btn--run:hover:not(:disabled){border-color:#4ade80;background:#4ade80}.btn--pause{background:#ef4444;border-color:#ef4444;color:#450a0a;font-weight:600}.btn--pause:hover:not(:disabled){border-color:#f87171;background:#f87171}.btn--ghost{background:transparent;color:var(--accent);border-color:transparent}.btn--danger{color:var(--danger)}.btn--icon{padding:3px 8px;line-height:1.3}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.btn-row .btn{flex:1}.run-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.run-buttons .btn{font-size:var(--panel-text-size, 12px)}.alert-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;flex:1 1 auto;min-height:0;overflow-y:auto}.alert-list__item{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid var(--border)}.alert-list__item:first-child{padding-top:0}.alert-list__item:last-child{border-bottom:none;padding-bottom:0}.alert-list__head{display:flex;align-items:center;justify-content:space-between;gap:8px}.alert-list__head strong{font-size:calc(var(--panel-text-size, 12px) * 13 / 12)}.alert-list__loc,.alert-list__value{color:var(--muted);font-size:calc(var(--panel-text-size, 12px) * 11 / 12);line-height:1.35}.alert-list__actions{display:flex;gap:6px;margin-top:6px}.alert-list__actions .btn{flex:1}.alert{margin:0;padding:7px 10px;border-radius:7px;background:#f871711f;color:var(--danger);font-size:11.5px;line-height:1.45}.notice{margin:0;color:#4ade80;font-size:11.5px}.config-input{min-height:84px;padding:8px;border:1px solid var(--border);border-radius:7px;background:var(--bg);font-family:ui-monospace,Cascadia Code,monospace;font-size:11px;resize:vertical}.tool{display:flex;flex-direction:column;gap:9px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--panel-soft)}.tool__head{display:flex;align-items:center;gap:6px}.tool__dot{width:9px;height:9px;border-radius:50%;flex:none}.tool__name{flex:1;min-width:0;padding:4px 6px;border:1px solid transparent;border-radius:6px;background:transparent;font-weight:600;font-size:13px}.tool__name:hover,.tool__name:focus{border-color:var(--border);background:var(--bg);outline:none}.tool__color{width:26px;height:24px;padding:0;border:1px solid var(--border);border-radius:6px;background:none;cursor:pointer;flex:none}.field__color-row{display:flex;align-items:center;gap:10px}.field__color-row code{font-size:11.5px;color:var(--muted)}.tool__stats{display:flex;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.charts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.charts--quality{grid-template-columns:repeat(3,minmax(0,1fr))}.charts--sensors{grid-template-columns:minmax(0,7fr) minmax(240px,3fr);align-items:stretch}.charts--inventory{grid-template-columns:minmax(0,1fr)}.charts-stack{position:relative}.charts-stack__pane.is-inactive{visibility:hidden;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.charts-stack__pane.is-active{position:relative;z-index:1}.admin-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;align-items:start}.panel-finder__group{display:flex;flex-direction:column;gap:8px;padding-top:4px}.panel-finder__group-title{margin:4px 0 0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.panel-finder__item{display:flex;flex-direction:column;gap:4px;padding-bottom:8px;border-bottom:1px solid var(--border)}.panel-finder__item:last-child{padding-bottom:0;border-bottom:none}.panel-finder__size{display:flex;align-items:center;gap:8px;padding-left:26px}.panel-finder__size-label{flex:0 0 auto;color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em}.panel-finder__size input[type=range]{flex:1;min-width:0;accent-color:var(--accent)}.panel-finder__size-num{width:54px;padding:3px 5px;border:1px solid var(--border);border-radius:6px;background:var(--bg);font-variant-numeric:tabular-nums;font-size:11px}.panel-finder__size-unit{color:var(--muted);font-size:10.5px}.is-panel-lit{background:#facc15!important;background-image:none!important;border-color:#ca8a04!important;color:#1c1917!important}.is-panel-lit h1,.is-panel-lit h2,.is-panel-lit h3,.is-panel-lit p,.is-panel-lit .kpi__label,.is-panel-lit .kpi__value,.is-panel-lit .kpi__value em,.is-panel-lit .panel__head h2,.is-panel-lit .panel__hint,.is-panel-lit .chart-card header span,.is-panel-lit .field__label,.is-panel-lit .field__label em,.is-panel-lit .toggle,.is-panel-lit .toggle em,.is-panel-lit .sensors-summary,.is-panel-lit .run-seed,.is-panel-lit .panel-finder__group-title{color:#1c1917!important}.app__head-brand.is-panel-lit,.status.is-panel-lit,.view-tabs.is-panel-lit{border-radius:8px;padding:6px 10px}.viewport.is-panel-lit{background:#0b1120!important;box-shadow:inset 0 0 0 10px #facc15}.chart-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);padding:11px 12px 8px;min-width:0}.chart-card header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.chart-card h3{font-size:var(--panel-text-size, 12.5px)}.chart-card__meta{display:flex;align-items:center;gap:8px}.chart-card header span{color:var(--muted);font-size:calc(var(--panel-text-size, 12.5px) * 10.5 / 12.5)}.seg{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.seg__btn{padding:2px 8px;border:none;background:none;color:var(--muted);cursor:pointer;font-size:10.5px}.seg__btn.is-on{background:#1e293b;color:#e2e8f0}.seg__btn:focus-visible{outline:1px solid #38bdf8;outline-offset:-1px}.heatmap{display:flex;flex-direction:column;height:100%;gap:8px}.heatmap__grid{display:grid;grid-template-columns:22px repeat(7,minmax(0,1fr));grid-template-rows:16px repeat(4,minmax(0,1fr));gap:3px;flex:1;min-height:0}.heatmap__colhead,.heatmap__rowhead,.heatmap__corner{color:var(--muted);font-size:calc(var(--panel-text-size, 12.5px) * 10 / 12.5);display:flex;align-items:center;justify-content:center}.heatmap__rowhead{justify-content:flex-end;padding-right:4px;font-weight:600}.heatmap__cell{display:flex;align-items:center;justify-content:center;width:100%;border:none;border-radius:4px;padding:0;color:#e2e8f0;background:none;cursor:pointer;font:inherit;font-size:11px;font-variant-numeric:tabular-nums}.heatmap__legend{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:10.5px}.heatmap__legend i{display:inline-block;width:9px;height:9px;margin-right:4px;border-radius:2px;vertical-align:-1px}.heatmap__legend em{margin-left:auto;font-style:normal}.sensors-card,.sensor-detail{display:flex;flex-direction:column;min-height:268px;max-height:42vh}.sensors-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px}.sensors-head h3{font-size:var(--panel-text-size, 12.5px)}.sensors-summary{display:block;margin-top:2px;color:var(--muted);font-size:calc(var(--panel-text-size, 12.5px) * 11 / 12.5);font-variant-numeric:tabular-nums}.sensors-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid var(--border);border-radius:6px}.sensors-table{width:100%;border-collapse:collapse;font-size:calc(var(--panel-text-size, 12.5px) * 11 / 12.5);font-variant-numeric:tabular-nums}.sensors-table th,.sensors-table td{padding:5px 8px;text-align:left;white-space:nowrap}.sensors-table thead th{position:sticky;top:0;z-index:1;background:#121a2b;color:var(--muted);font-size:calc(var(--panel-text-size, 12.5px) * 10 / 12.5);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.sensors-group th{position:sticky;top:22px;z-index:1;padding:0;background:#0f1728}.sensors-group button{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;border:none;background:none;color:#e2e8f0;cursor:pointer;font:inherit;font-weight:600}.sensors-group em{margin-left:auto;color:var(--muted);font-style:normal;font-weight:500}.sensors-group__chevron{width:12px;color:var(--muted)}.sensors-row{cursor:pointer;color:#cbd5e1}.sensors-row:hover,.sensors-row.is-hovered{background:#38bdf814}.sensors-row.is-selected{background:#38bdf829}.sensors-row.is-warn{box-shadow:inset 2px 0 #f5a33a}.sensors-row.is-alarm{box-shadow:inset 2px 0 #ef5b3a}.sensors-row__tag{font-weight:600;color:#e2e8f0}.sensors-row em{color:var(--muted);font-style:normal}.sensor-status{display:inline-flex;align-items:center;gap:5px;text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:600}.sensor-status i{width:7px;height:7px;border-radius:50%;background:#4ade80}.sensor-status--ok i{background:#4ade80}.sensor-status--warn{color:#f5a33a}.sensor-status--warn i{background:#f5a33a}.sensor-status--alarm{color:#ef5b3a}.sensor-status--alarm i{background:#ef5b3a}.sensor-status--info{color:#94a3b8}.sensor-status--info i{background:#64748b}.sensor-detail__desc,.sensor-detail__empty,.sensor-detail__caption{margin:0 0 8px;color:var(--muted);font-size:calc(var(--panel-text-size, 12.5px) * 11.5 / 12.5);line-height:1.45}.sensor-detail__caption{margin:8px 0 4px;font-size:calc(var(--panel-text-size, 12.5px) * 10.5 / 12.5);text-transform:uppercase;letter-spacing:.05em}.sensor-detail__meta{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin:0 0 6px}.sensor-detail__meta dt{color:var(--muted);font-size:calc(var(--panel-text-size, 12.5px) * 10 / 12.5);text-transform:uppercase;letter-spacing:.04em}.sensor-detail__meta dd{margin:2px 0 0;font-size:calc(var(--panel-text-size, 12.5px) * 12 / 12.5);font-variant-numeric:tabular-nums}.sensor-spark{width:100%;height:56px}.sensor-scan{flex:1;min-height:90px}.cut-quality{display:grid;grid-template-rows:minmax(64px,.85fr) minmax(72px,1.15fr) minmax(52px,.7fr);height:100%;min-height:0;gap:4px}.cut-quality__bars,.cut-quality__days,.sheet-log{min-height:0}.sheet-log{display:flex;flex-direction:column;min-height:0;border:1px solid var(--border);border-radius:6px;background:var(--panel-soft)}.sheet-log>header{display:flex;align-items:baseline;justify-content:space-between;padding:3px 7px 0;color:var(--muted);font-size:10px}.sheet-log__empty{margin:0;padding:8px 7px;color:var(--muted);font-size:11px}.sheet-log__list{margin:0;padding:2px 0 4px;overflow:auto;list-style:none}.sheet-log__row{display:grid;grid-template-columns:42px minmax(52px,1.2fr) 40px 44px;gap:4px;padding:1px 7px;font-size:10.5px;font-variant-numeric:tabular-nums;color:#cbd5e1}.sheet-log__row b{font-weight:600;color:#e2e8f0}.sheet-log__row code,.sheet-log__row em{font-family:inherit;font-style:normal;text-align:right;color:#94a3b8}.sheet-log__row.is-fail{color:#fdba74;background:#f5a33a14}.sheet-log__row.is-fail span,.sheet-log__row.is-fail code{color:#f5a33a}.cut-quality__days{display:grid;grid-template-rows:auto 1fr}.cut-quality__days header{display:flex;align-items:baseline;justify-content:space-between;margin:0;color:var(--muted);font-size:10.5px}.cut-quality__days header strong{color:#e2e8f0;font-weight:600}.chart-card__body{height:210px}.charts--quality .chart-card__body{height:268px}.charts--sensors .chart-card{height:100%}.inventory-fill-panel{display:flex;flex-direction:column;justify-content:center;gap:14px;height:100%;padding:8px 4px}.inventory-fill{display:flex;align-items:center;gap:16px}.inventory-fill-panel .btn{align-self:flex-start}.inventory-fill__track{flex:1;height:18px;border-radius:999px;background:#1e293b;overflow:hidden}.inventory-fill__bar{height:100%;border-radius:inherit;background:var(--accent, #38bdf8)}.inventory-fill strong{min-width:3.2em;color:#e2e8f0;font-size:calc(var(--panel-text-size, 12.5px) * 22 / 12.5);font-variant-numeric:tabular-nums}.timeline{display:flex;flex-direction:column;gap:5px;height:100%;justify-content:center}.timeline__row{display:flex;align-items:center;gap:8px}.timeline__label{width:78px;flex:none;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline__track{position:relative;flex:1;height:16px;border-radius:4px;background:#0a1122;overflow:hidden}.timeline__track i{position:absolute;top:0;bottom:0}.timeline__legend{display:flex;gap:12px;margin-top:4px;padding-left:86px;font-size:10.5px}.admin-bar{display:flex;align-items:center;justify-content:flex-end;position:relative;padding-top:4px}.admin-pin{position:absolute;right:0;bottom:calc(100% + 8px);width:220px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:0 10px 28px #02061773;z-index:8}.admin-pin p{margin:0 0 8px;color:var(--muted);font-size:12.5px}.admin-pin input{width:100%;margin-bottom:8px;padding:7px 9px;border:1px solid var(--border);border-radius:7px;background:var(--panel-soft);letter-spacing:.35em;text-align:center;font-size:16px}.admin-pin em{display:block;margin:-4px 0 8px;color:var(--danger);font-size:12px;font-style:normal}@media (max-width: 1080px){.app__stage{grid-template-columns:minmax(0,1fr)}.charts{grid-template-columns:repeat(5,minmax(160px,1fr));overflow-x:auto}.charts--quality{grid-template-columns:repeat(3,minmax(220px,1fr))}.charts--sensors{grid-template-columns:minmax(280px,7fr) minmax(220px,3fr)}.sidebar{position:static;max-height:none;overflow:visible}.sidebar--alerts{height:var(--viewport-height);max-height:var(--viewport-height);overflow:hidden}}.tool-overlay-wrap{pointer-events:none!important}.tool-overlay-label{display:flex;flex-direction:column;align-items:center;gap:1px;color:#e2e8f0;font-size:13px;font-weight:600;line-height:1.15;white-space:nowrap;text-shadow:0 1px 3px #0b1120,0 0 8px #0b1120}.viewport .tool-overlay-label{font-size:calc(var(--panel-text-size, 11px) * 13 / 11)}.tool-overlay-label em{font-style:normal;font-weight:500;font-size:11px;color:#94a3b8}.viewport .tool-overlay-label em{font-size:var(--panel-text-size, 11px)}.tool-overlay-stack{display:flex;flex-direction:column;align-items:center;gap:5px}.tool-overlay-bar{width:72px}.tool-overlay-bar-track{height:6px;border-radius:999px;background:#1e293b;box-shadow:0 1px 3px #0b1120,0 0 8px #0b1120;overflow:hidden}.tool-overlay-bar-fill{height:100%;width:0%;border-radius:inherit}
