@font-face{font-family:Manrope;src:url("./assets/manrope-latin.woff2") format("woff2");font-weight:200 800;font-display:swap}
:root{color-scheme:light;--ink:#142b43;--muted:#526775;--faint:#526775;--ground:#f4f1e9;--surface:#fff;--raised:#f7f9f8;--navy:#17324d;--line:#ccd7dc;--soft:#e2e8e8;--grid:#d8e2e5;--teal:#2b827a;--teal-soft:#e1f0ec;--amber:#865700;--amber-soft:#fff1cf;--orange:#b94018;--orange-soft:#fff0e8;--danger:#96351f;--focus:#ad3510;--radius:10px;--ease:cubic-bezier(.16,1,.3,1);font-family:Manrope,sans-serif;background:var(--ground);color:var(--ink)}
*{box-sizing:border-box}html{min-width:320px;background:var(--ground);scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--ground)}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:var(--navy);text-underline-offset:3px}::selection{color:#fff;background:var(--orange)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;z-index:100;top:8px;left:8px;padding:10px 14px;color:#fff;background:var(--navy);transform:translateY(-150%)}.skip-link:focus{transform:none}
.app-shell{min-height:100vh}.rail{position:sticky;z-index:30;top:0;height:62px;display:flex;align-items:center;border-bottom:1px solid var(--line);background:var(--surface)}.brand-mark{width:72px;height:61px;display:grid;place-items:center;border-right:1px solid var(--line);color:var(--navy)}.brand-mark svg{width:29px;fill:none;stroke:currentColor;stroke-width:1.5}.rail-nav{height:100%;display:flex;align-items:stretch}.rail-link{min-width:92px;display:flex;align-items:center;justify-content:center;gap:7px;border-right:1px solid var(--soft);color:var(--muted);text-decoration:none}.rail-link b{font:700 9px/1 ui-monospace,monospace;letter-spacing:.08em}.rail-link span{font-size:9px}.rail-link:hover,.rail-link.is-active{color:#fff;background:var(--navy)}
.app-main{min-width:0}.topbar{position:sticky;z-index:25;top:62px;min-height:70px;display:grid;grid-template-columns:minmax(240px,1fr) minmax(170px,220px) 120px 120px auto auto auto;align-items:center;gap:10px;padding:9px 20px;border-bottom:1px solid var(--line);background:#fafaf7}.site-heading{display:flex;align-items:center;gap:10px;min-width:0}.status-beacon{width:9px;height:9px;flex:0 0 auto;border:2px solid var(--teal);border-radius:50%;background:#fff}.site-heading h1,.site-heading p{margin:0}.site-heading h1{font-size:15px;font-weight:650}.site-heading p{margin-top:3px;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-select{display:grid;gap:3px;color:var(--faint);font-size:8px;text-transform:uppercase;letter-spacing:.08em}.compact-select select{height:31px}.clock-block{display:grid;gap:3px;text-align:right}.clock-block span{color:var(--faint);font-size:8px;text-transform:uppercase}.clock-block time{font:650 9px/1 ui-monospace,monospace}
.control-button,.quiet-button,.danger-button,.primary-button,.icon-button,.record-link{min-height:36px;border:1px solid var(--line);border-radius:7px;padding:0 12px;background:var(--surface);color:var(--navy);font-size:9px;font-weight:650;cursor:pointer;text-decoration:none;transition:background .18s var(--ease),border-color .18s var(--ease),transform .18s var(--ease)}.record-link{display:inline-flex;align-items:center}.quiet-button{background:transparent;color:var(--muted)}.primary-button{border-color:var(--orange);background:var(--orange);color:#fff}.danger-button{border-color:#d8a08f;color:var(--danger);background:#fff8f5}.icon-button{display:flex;align-items:center;gap:7px}.icon-button strong{min-width:18px;min-height:18px;display:grid;place-items:center;border-radius:5px;color:#fff;background:var(--orange);font:700 8px/1 ui-monospace,monospace}.control-button:hover,.quiet-button:hover,.record-link:hover,.icon-button:hover{border-color:#8ca2ae;background:#edf3f3}.primary-button:hover{background:#d84d1d}.danger-button:hover{background:var(--orange-soft)}button:active{transform:translateY(1px)}button:disabled{opacity:.42;cursor:not-allowed}
.workspace{min-height:calc(100vh - 132px)}.page-head{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 24px;border-bottom:1px solid var(--line);background:var(--ground)}.page-head h2,.page-head p{margin:0}.page-head h2{font-size:22px;font-weight:650;letter-spacing:-.03em}.page-head p{margin-top:4px;color:var(--muted);font-size:9px}.page-actions,.inline-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.page-error{margin:0;padding:0 24px;background:var(--orange-soft)}.form-error{min-height:0;color:var(--danger);font-size:9px}.form-error:not(:empty){min-height:30px;padding-top:8px;padding-bottom:8px}
.builder-shell{height:calc(100vh - 220px);min-height:610px;display:grid;grid-template-columns:245px minmax(480px,1fr) 305px;border-bottom:1px solid var(--line);background:var(--surface)}.model-library,.object-inspector{min-width:0;padding:18px;background:#fafaf7;overflow:auto}.model-library{border-right:1px solid var(--line)}.object-inspector{border-left:1px solid var(--line)}.builder-section-head{display:flex;align-items:flex-start;margin-bottom:16px}.builder-section-head h2,.builder-section-head p{margin:0}.builder-section-head h2{font-size:13px}.builder-section-head p{margin-top:3px;color:var(--faint);font-size:8px}.search-field,.sort-field{display:grid;gap:5px;margin-bottom:10px;color:var(--faint);font-size:8px;text-transform:uppercase;letter-spacing:.07em}.library-list{border-top:1px solid var(--line)}.library-model{width:100%;min-height:67px;display:grid;grid-template-columns:52px 1fr 18px;align-items:center;gap:9px;border:0;border-bottom:1px solid var(--soft);padding:7px 2px;color:var(--navy);background:transparent;text-align:left;cursor:grab}.library-model:hover{background:#edf3f2}.library-model>span:nth-child(2){min-width:0;display:grid;gap:4px}.library-model strong,.library-model small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-model strong{font-size:9px}.library-model small{color:var(--faint);font-size:7px}.library-model>b{color:var(--orange);font:500 18px/1 ui-monospace,monospace}.model-thumb{height:48px;display:grid;place-items:center;color:var(--navy);background:#edf3f2}.model-thumb svg{width:48px;height:44px;fill:none;stroke:currentColor;stroke-width:1.7;vector-effect:non-scaling-stroke}.model-thumb .model-fill,.object-model .model-fill{fill:#fff}.model-thumb .port,.object-model .port{fill:#fff;stroke:var(--teal);stroke-width:2.5}.model-thumb .signal,.object-model .signal{fill:var(--amber);stroke:none}.model-thumb .pipe,.object-model .pipe{stroke-width:4}
.canvas-panel{min-width:0;display:grid;grid-template-rows:54px minmax(0,1fr);background:var(--surface)}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 15px;border-bottom:1px solid var(--line)}.canvas-toolbar>div:first-child{display:grid;gap:3px}.canvas-toolbar strong{font-size:10px}.canvas-toolbar span{color:var(--faint);font-size:8px}.zoom-group{display:flex;align-items:center;gap:4px}.zoom-group button{min-width:31px;min-height:31px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:9px;cursor:pointer}.zoom-group output{min-width:42px;text-align:center;font:650 8px/1 ui-monospace,monospace}.factory-canvas{position:relative;isolation:isolate;min-height:0;overflow:hidden;background-color:#f8faf8;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M32 0H0V32' fill='none' stroke='%23d8e2e5' stroke-width='1'/%3E%3Ccircle cx='0' cy='0' r='1.3' fill='%23aebfc6'/%3E%3C/svg%3E")}.factory-canvas:before{content:"NORTHLINE / EDITABLE FLOOR";position:absolute;z-index:0;left:16px;top:14px;color:#8fa0a8;font:700 8px/1 ui-monospace,monospace;letter-spacing:.1em}.canvas-world{position:absolute;z-index:1;inset:0;transform:scale(var(--zoom));transform-origin:center;transition:transform .25s var(--ease)}.canvas-note{position:absolute;z-index:3;right:14px;bottom:12px;color:var(--faint);font:650 8px/1 ui-monospace,monospace}.factory-object{position:absolute;left:var(--x);top:var(--y);width:106px;min-height:100px;display:grid;grid-template-rows:70px auto;border:1px solid transparent;border-radius:8px;padding:4px;color:var(--navy);background:rgba(255,255,255,.88);cursor:move;transform:translate(-50%,-50%);touch-action:none}.factory-object:hover,.factory-object.is-selected{z-index:3;border-color:var(--navy);background:#fff}.factory-object.is-selected{box-shadow:0 0 0 3px #c9d9de}.object-model{display:grid;place-items:center;transform:rotate(var(--rotation));transform-origin:center}.object-model svg{width:84px;height:68px;fill:none;stroke:currentColor;stroke-width:1.8}.object-label{display:flex;align-items:center;justify-content:space-between;gap:4px;border-top:1px solid var(--soft);padding:4px 3px 1px}.object-label b{font:700 8px/1 ui-monospace,monospace}.object-label small{color:var(--teal);font-size:7px;text-transform:capitalize}.factory-object.is-warning .object-label small,.factory-object.is-maintenance .object-label small{color:var(--amber)}.factory-object.is-critical{border-color:var(--orange);background:#fff8f4}.factory-object.is-critical .object-label small{color:var(--orange)}
.inspector-title{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:12px;padding-bottom:15px;border-bottom:1px solid var(--line)}.inspector-title .model-thumb{height:60px}.inspector-title p,.inspector-title h2,.inspector-title small{margin:0}.inspector-title p{color:var(--faint);font-size:8px}.inspector-title h2{margin:4px 0 3px;font-size:15px}.inspector-title small{color:var(--muted);font:8px/1 ui-monospace,monospace}.object-inspector>.status-chip{margin-top:14px}.mini-samples{margin-top:16px;border-top:1px solid var(--line)}.mini-samples h3{margin:13px 0 6px;font-size:10px}.mini-samples>div{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--soft);font-size:8px}.mini-samples time{color:var(--faint);font-family:ui-monospace,monospace}.inspector-links,.object-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}.object-actions{padding-top:16px;border-top:1px solid var(--line)}.keyboard-hint{color:var(--faint);font-size:8px;line-height:1.5}
.status-chip,.dispatch-count{display:inline-flex;align-items:center;min-height:23px;border-radius:5px;padding:0 8px;font:700 8px/1 ui-monospace,monospace;text-transform:uppercase}.status-chip.is-critical,.status-chip.is-open,.status-chip.is-in_progress{color:#a33817;background:var(--orange-soft)}.status-chip.is-warning,.status-chip.is-acknowledged,.status-chip.is-assigned,.status-chip.is-maintenance{color:#7f5807;background:var(--amber-soft)}.status-chip.is-planned,.status-chip.is-scheduled,.status-chip.is-approved{color:#365e73;background:#e5f0f4}.status-chip.is-nominal,.status-chip.is-resolved,.status-chip.is-closed,.status-chip.is-completed,.dispatch-count{color:#17645e;background:var(--teal-soft)}
.panel-heading,.incident-topline{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.panel-heading h2,.panel-heading p{margin:0}.panel-heading h2{font-size:14px}.panel-heading p{margin-top:4px;color:var(--faint);font-size:8px}.data-list{margin:14px 0}.data-list div{display:grid;grid-template-columns:1fr auto;gap:10px;padding:8px 0;border-bottom:1px solid var(--soft)}.data-list dt{color:var(--faint);font-size:8px}.data-list dd{margin:0;font:650 8px/1.3 ui-monospace,monospace;text-align:right}.plain-list,.check-list{list-style:none;margin:12px 0;padding:0}.plain-list li{display:grid;gap:2px;padding:7px 0;border-bottom:1px solid var(--soft)}.plain-list strong{font-size:9px}.plain-list span{color:var(--muted);font-size:8px}.chart-wrap svg{display:block;width:100%;height:142px}.chart-grid{fill:none;stroke:var(--soft)}.chart-threshold{fill:none;stroke:var(--amber);stroke-dasharray:5 5}.chart-wrap text{fill:var(--amber);font:8px ui-monospace,monospace}.chart-line{fill:none;stroke:var(--teal);stroke-width:2}.chart-line.is-critical{stroke:var(--orange)}.chart-line.is-warning{stroke:var(--amber)}.chart-point{fill:var(--teal)}.chart-point.is-critical{fill:var(--orange)}
.split-workspace{min-height:calc(100vh - 220px);display:grid;grid-template-columns:300px minmax(0,1fr);background:var(--surface)}.record-list{border-right:1px solid var(--line);background:#fafaf7}.record-list>a{display:grid;gap:5px;padding:16px 20px;border-bottom:1px solid var(--soft);color:var(--muted);text-decoration:none}.record-list>a:hover,.record-list>a.is-selected{color:var(--navy);background:#eaf1f1}.record-list strong{font-size:9px}.record-list span{color:var(--faint);font-size:8px;text-transform:capitalize}.detail-pane{min-width:0;padding:24px}.detail-pane>.panel-heading{padding-bottom:18px;border-bottom:1px solid var(--line)}.detail-pane>.panel-heading h2{font-size:20px}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:20px;border:1px solid var(--line);background:var(--surface)}.detail-grid>article,.detail-grid>form,.detail-grid>div{min-width:0;padding:20px}.detail-grid>*+*{border-left:1px solid var(--line)}.detail-grid h3,.detail-pane h3{margin:0 0 12px;font-size:11px}.lede{max-width:70ch;color:var(--muted);font-size:9px;line-height:1.65}.asset-map{position:relative;height:180px;overflow:hidden;border:1px solid var(--line);background-color:#f8faf8;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Cpath d='M28 0H0V28' fill='none' stroke='%23d8e2e5'/%3E%3C/svg%3E")}.asset-map button{position:absolute;left:var(--x);top:var(--y);border:0;color:var(--orange);background:transparent;font:700 9px ui-monospace,monospace}.asset-map button i{display:inline-block;width:9px;height:9px;margin-right:5px;border:2px solid currentColor;border-radius:50%}.asset-map>span{position:absolute;left:12px;bottom:10px;color:var(--faint);font:650 8px ui-monospace,monospace}
.stack-form{display:grid;gap:12px;margin:18px 0}.stack-form label{display:grid;gap:6px;color:var(--muted);font-size:9px}.stack-form label span{color:var(--faint);font-size:8px}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check-row{display:flex!important;align-items:center;gap:7px!important;color:var(--muted);font-size:9px;text-transform:none}.check-row input,.check-list input{width:16px;height:16px;accent-color:var(--orange)}input,select,textarea{width:100%;min-height:37px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--navy);background:#fff;font-size:9px}textarea{min-height:76px;resize:vertical}.inline-form{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;margin-top:20px}.workflow-strip{display:grid;grid-template-columns:repeat(5,1fr);margin:20px 0;border:1px solid var(--line)}.workflow-strip span{padding:10px 5px;color:var(--faint);font:700 8px/1 ui-monospace,monospace;text-align:center;text-transform:uppercase}.workflow-strip span+span{border-left:1px solid var(--line)}.workflow-strip .is-current{color:#fff;background:var(--navy)}.check-list li{padding:8px 0;border-bottom:1px solid var(--soft)}.check-list label{display:flex;align-items:center;gap:8px;font-size:9px}.record-preview,dialog pre{max-height:340px;margin:18px 0;padding:16px;overflow:auto;border:1px solid var(--line);background:#f7f9f8;color:var(--muted);font:9px/1.6 ui-monospace,monospace;white-space:pre-wrap}.metric-band{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line);background:var(--surface)}.metric-band>div{display:grid;gap:8px;padding:28px 24px}.metric-band>div+div{border-left:1px solid var(--line)}.metric-band strong{font:650 25px/1 ui-monospace,monospace}.metric-band span{color:var(--muted);font-size:9px}.performance-grid{margin:24px}
.schedule-overview{padding:16px 24px 18px;border-bottom:1px solid var(--line);background:#fafaf7;overflow-x:auto}.overview-head,.schedule-row{min-width:650px;display:grid;grid-template-columns:255px minmax(390px,1fr);align-items:end;gap:18px}.overview-head h3,.overview-head p{margin:0}.overview-head h3{font-size:11px}.overview-head p{margin-top:4px;color:var(--faint);font-size:8px}.schedule-axis{display:grid;grid-template-columns:repeat(5,1fr);color:var(--faint);font:8px/1 ui-monospace,monospace}.schedule-axis span{text-align:center}.schedule-axis span:first-child{text-align:left}.schedule-axis span:last-child{text-align:right}.schedule-rows{margin-top:10px;border-top:1px solid var(--soft)}.schedule-row{align-items:center;min-height:42px;border-bottom:1px solid var(--soft);color:var(--muted);text-decoration:none}.schedule-row>span{display:grid;grid-template-columns:78px 1fr;align-items:center;gap:10px}.schedule-row strong{font:700 9px/1 ui-monospace,monospace}.schedule-row small{overflow:hidden;color:var(--faint);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.schedule-track{position:relative;height:9px;border-radius:5px;background:#e6ecec}.schedule-track b{position:absolute;top:0;bottom:0;left:var(--left);width:var(--width);min-width:5px;border-radius:5px;background:#7197a8}.schedule-track b.is-in_progress{background:var(--orange)}.schedule-track b.is-completed,.schedule-track b.is-closed{background:var(--teal)}
.maintenance-overview{padding:16px 24px 20px;border-bottom:1px solid var(--line);background:#fafaf7}.availability-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line)}.availability-strip>div{min-width:0;display:flex;align-items:center;gap:9px;padding:11px 14px}.availability-strip>div+div{border-left:1px solid var(--line)}.availability-strip i{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--teal)}.availability-strip i.is-busy,.availability-strip i.is-deployed{background:var(--amber)}.availability-strip span{min-width:0;display:grid;gap:3px}.availability-strip strong,.availability-strip small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.availability-strip strong{font-size:9px}.availability-strip small{color:var(--faint);font-size:8px}.history-timeline{display:flex;margin-top:18px;padding-top:11px;overflow-x:auto;border-top:1px solid var(--line)}.history-timeline article{position:relative;min-width:225px;display:grid;grid-template-columns:10px 1fr;grid-template-rows:auto auto;column-gap:10px;padding:0 18px 10px 0}.history-timeline article:after{content:"";position:absolute;top:19px;left:4px;right:0;border-top:1px solid var(--line)}.history-timeline time{grid-column:1/-1;margin-bottom:10px;color:var(--faint);font:8px/1 ui-monospace,monospace}.history-timeline article>i{position:relative;z-index:1;width:9px;height:9px;border:2px solid #7197a8;border-radius:50%;background:#fff}.history-timeline article>div{position:relative;z-index:1;display:grid;gap:4px;padding-right:8px;background:#fafaf7}.history-timeline strong{font-size:9px}.history-timeline span{color:var(--faint);font-size:8px}
table{width:100%;border-collapse:collapse;font-size:9px}th,td{padding:9px 8px;border-bottom:1px solid var(--soft);text-align:left}th{color:var(--faint);font-size:8px;text-transform:uppercase;letter-spacing:.07em}.notification-drawer{position:fixed;z-index:50;top:0;right:0;width:min(390px,100vw);height:100vh;padding:20px;border-left:1px solid var(--line);background:#fff;box-shadow:-12px 0 36px rgba(20,43,67,.13);overflow:auto}.notification-drawer[hidden]{display:none}.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.drawer-head h2,.drawer-head p{margin:0}.drawer-head h2{font-size:18px}.drawer-head p{margin-top:4px;color:var(--muted);font-size:9px}.drawer-actions{margin:18px 0}.notification{display:grid;grid-template-columns:1fr auto;gap:8px;padding:14px 0;border-top:1px solid var(--soft)}.notification>a{display:grid;gap:5px;text-decoration:none}.notification span,.notification small{color:var(--muted);font-size:9px}.notification.is-read{opacity:.6}.empty-state{color:var(--muted);font-size:9px}dialog{width:min(620px,calc(100vw - 32px));border:1px solid var(--line);border-radius:var(--radius);padding:0;color:var(--navy);background:#fff;box-shadow:0 18px 56px rgba(20,43,67,.18)}dialog::backdrop{background:rgba(20,43,67,.35)}dialog form{padding:24px}dialog h2{margin:0;font-size:20px}dialog p{color:var(--muted);font-size:10px;line-height:1.55}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}
@media(max-width:1120px){.topbar{grid-template-columns:minmax(190px,1fr) 180px auto auto auto}.compact-select:has(#roleSelect),.clock-block{display:none}.builder-shell{grid-template-columns:210px minmax(430px,1fr) 270px}.rail-link{min-width:78px}.split-workspace{grid-template-columns:250px 1fr}}
@media(max-width:860px){.rail-link{min-width:70px}.rail-link span{display:none}.topbar{grid-template-columns:1fr auto auto auto}.compact-select:has(#siteSelect){display:none}.builder-shell{height:auto;min-height:0;grid-template-columns:220px minmax(0,1fr)}.object-inspector{grid-column:1/-1;border-top:1px solid var(--line);border-left:0}.factory-canvas{height:560px}.split-workspace{grid-template-columns:1fr}.record-list{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}.record-list>a{min-width:210px;border-right:1px solid var(--soft)}.detail-grid{grid-template-columns:1fr}.detail-grid>*+*{border-top:1px solid var(--line);border-left:0}.availability-strip{grid-template-columns:1fr}.availability-strip>div+div{border-top:1px solid var(--line);border-left:0}.metric-band{grid-template-columns:1fr 1fr}.metric-band>div:nth-child(3),.metric-band>div:nth-child(4){border-top:1px solid var(--line)}}
@media(max-width:620px){.rail{position:relative;height:58px}.brand-mark{width:58px;height:57px;flex:0 0 58px}.rail-nav{width:calc(100% - 58px);display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.rail-link{min-width:0;padding:0}.rail-link span{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.topbar{position:relative;top:0;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:218px;padding:10px 12px}.site-heading{grid-column:1/-1}.compact-select:has(#siteSelect),.compact-select:has(#roleSelect){display:grid;min-width:0}.clock-block{display:grid;height:36px;align-content:center;text-align:left}.topbar .control-button,.topbar .icon-button,.topbar>.quiet-button{display:flex;width:100%;align-items:center;justify-content:center}.workspace{min-height:calc(100vh - 276px)}.page-head{align-items:flex-start;flex-direction:column;padding:16px}.page-actions{width:100%}.builder-shell{display:flex;flex-direction:column}.model-library,.object-inspector{padding:16px;border:0}.library-list{display:grid;grid-template-columns:1fr 1fr}.library-model{grid-template-columns:43px 1fr 14px;min-width:0}.model-thumb{height:43px}.model-thumb svg{width:42px;height:40px}.canvas-panel{order:2;grid-template-rows:auto 500px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.model-library{order:1}.object-inspector{order:3}.canvas-toolbar{align-items:flex-start;flex-direction:column;height:auto}.factory-canvas{height:500px}.factory-object{width:94px;min-height:91px;grid-template-rows:62px auto}.object-model svg{width:74px;height:60px}.inspector-links,.object-actions{display:grid;grid-template-columns:1fr 1fr}.split-workspace{min-height:0}.detail-pane{padding:20px 16px}.two-fields,.inline-form{grid-template-columns:1fr}.workflow-strip{overflow-x:auto;grid-template-columns:repeat(5,minmax(95px,1fr))}.schedule-overview,.maintenance-overview{padding-right:16px;padding-left:16px}.overview-head,.schedule-row{grid-template-columns:140px 410px;min-width:568px}.metric-band{grid-template-columns:1fr 1fr}.metric-band>div{padding:20px 16px}.metric-band strong{font-size:19px}.performance-grid{margin:16px}.dialog-actions{flex-direction:column-reverse}.dialog-actions button{width:100%}}
.rail-link b,.rail-link span,.site-heading p,.compact-select,.clock-block span,.clock-block time,.page-head p,.builder-section-head p,.search-field,.sort-field,.library-model strong,.library-model small,.canvas-toolbar span,.object-label b,.object-label small,.inspector-title p,.inspector-title small,.data-list dt,.data-list dd,.mini-samples>div,.keyboard-hint,.status-chip,.dispatch-count,.panel-heading p,.plain-list strong,.plain-list span,.record-list strong,.record-list span,.overview-head p,.schedule-axis,.schedule-row strong,.schedule-row small,.availability-strip strong,.availability-strip small,.history-timeline time,.history-timeline strong,.history-timeline span,th,td,.notification span,.notification small,.empty-state,.lede,.stack-form label,.check-row,.check-list label,.control-button,.quiet-button,.danger-button,.primary-button,.icon-button,.record-link,input,select,textarea{font-size:10px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Quiet, centered factory floor; equipment is locked until Move is chosen. */
.route-control{max-width:1440px;margin:0 auto;padding:0 28px 28px}
.route-control .page-head{background:transparent;padding:24px 0;border:0}
.builder-shell{position:relative;grid-template-columns:minmax(0,1fr) 280px;height:calc(100vh - 250px);min-height:620px;border:1px solid var(--line);border-radius:16px;overflow:visible}
.builder-shell>.model-library{position:absolute;z-index:15;left:0;top:8px;width:340px;max-height:min(740px,80vh);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 35px #17324d1a;padding:22px}
.model-library[hidden]{display:none!important}.close-insert{float:right}.library-list{display:block}.library-model{min-height:72px}.library-model[hidden]{display:none}.library-model{cursor:pointer}
.canvas-panel{border-radius:16px 0 0 16px;overflow:hidden;grid-template-rows:auto minmax(0,1fr)}
.canvas-toolbar{min-height:62px}.factory-canvas{background-color:#f5f7f5;background-image:radial-gradient(#c9d5d0 .8px,transparent .8px);background-size:24px 24px}.factory-canvas:before{display:none}
.object-inspector{border-radius:0 16px 16px 0;background:#fff;padding:24px}
.factory-object{cursor:pointer;background:transparent;border:1px solid transparent;touch-action:auto;min-height:118px;grid-template-rows:88px auto;width:118px}
.factory-object:hover{background:#ffffff80}.factory-object.is-selected{background:#ffffffb3;box-shadow:none;border:1px solid #8baca5;border-style:dashed}
.object-model svg{width:96px;height:86px;stroke:#365763}.object-model .model-fill{fill:var(--equipment-light,#d3e7dc)}
.object-label{border:0;background:#ffffffdd;border-radius:5px;padding:5px;flex-wrap:wrap;justify-content:center;gap:4px 8px}.object-label b{font-size:10px}.object-label small{font-size:10px}
.factory-object.type-storage-tank .object-model svg{height:98px;width:92px}.factory-object.type-storage-tank{grid-template-rows:100px auto}
.drag-handle{position:absolute;z-index:5;left:var(--x);top:var(--y);transform:translate(-50%,76px);border:0;border-radius:20px;padding:9px 15px;background:#173e38;color:white;font:600 11px Manrope,sans-serif;cursor:grab;touch-action:none;white-space:nowrap}.drag-handle:active{cursor:grabbing;transform:translate(-50%,76px)}
@media(max-width:1000px){.builder-shell{grid-template-columns:minmax(0,1fr) 240px}.route-control{padding:0 16px 20px}.object-inspector{grid-column:auto;border-top:0;border-left:1px solid var(--line);padding:16px}.factory-canvas{height:100%}}
@media(max-width:700px){.route-control{padding:0 12px 16px}.builder-shell{display:grid;grid-template-columns:1fr;height:auto;min-height:0}.canvas-panel{order:0;grid-template-rows:auto 540px;border-radius:16px 16px 0 0}.factory-canvas{height:540px}.object-inspector{grid-column:1;order:1;border-left:0;border-top:1px solid var(--line);border-radius:0 0 16px 16px}.builder-shell>.model-library{width:min(340px,100%);top:0;max-height:650px}.factory-object{width:88px;grid-template-rows:72px auto;min-height:96px}.object-model svg{width:72px;height:72px}.factory-object.type-storage-tank{grid-template-rows:86px auto}.factory-object.type-storage-tank .object-model svg{height:86px;width:76px}.canvas-toolbar{flex-wrap:wrap}.drag-handle{transform:translate(-50%,65px)}.drag-handle:active{transform:translate(-50%,65px)}}

/* Detailed equipment world and explicit Builder / My Factory modes. */
.route-control{max-width:1520px;padding:0 32px 32px}
.route-control .page-head{min-height:98px;align-items:flex-end;padding:24px 4px 18px}
.route-control .page-head h2{font-size:28px;letter-spacing:-.045em}
.route-control .page-head p{max-width:680px;font-size:11px;line-height:1.55}
.route-control .page-actions{justify-content:flex-end}
.factory-mode-switch{display:flex;align-items:center;padding:3px;border:1px solid #c7d1d0;border-radius:9px;background:#e8ece9}
.factory-mode-switch button{min-height:32px;border:0;border-radius:6px;padding:0 14px;background:transparent;color:#53666e;font-size:10px;font-weight:700;cursor:pointer}
.factory-mode-switch button.is-active{background:#fff;color:#17324d;box-shadow:0 1px 2px #17324d24}
.with-icon,.drag-handle{display:inline-flex;align-items:center;justify-content:center;gap:7px}.action-icon{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.builder-shell{grid-template-columns:minmax(0,1fr) 300px;height:calc(100vh - 260px);min-height:650px;border:1px solid #bfc9c7;border-radius:18px;background:#fff;box-shadow:0 18px 50px #1b302414}
.builder-shell>.model-library{top:74px;left:16px;width:370px;max-height:min(700px,calc(100vh - 250px));padding:20px;border-color:#b9c5c2;box-shadow:0 22px 58px #10251b2b}
.close-insert{float:none;position:absolute;top:16px;right:16px;min-height:30px}
.builder-section-head{padding-right:62px}
.library-model{grid-template-columns:74px 1fr 22px;min-height:82px;padding:8px 4px;cursor:pointer}
.library-model:hover{background:#eef2ef}
.model-thumb{height:68px;border-radius:7px;background:#eef1ee;overflow:hidden}
.model-visual{display:block;width:100%;height:100%;fill:none;stroke:#17324d;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.model-visual *{vector-effect:non-scaling-stroke}.model-visual .model-fill{fill:var(--equipment-light)}.model-visual .model-solid{fill:var(--equipment-color);stroke:#17324d}.model-visual .model-light{fill:#fff;stroke:#17324d}.model-visual .model-dark{fill:#29404d;stroke:#17324d}.model-visual .model-metal{fill:#aebdc1;stroke:#17324d}.model-visual .model-glass{fill:#c6e7ed;stroke:#17324d}.model-visual .model-detail{fill:none;stroke:#365763;stroke-width:1.25}.model-visual .model-pipe{fill:none;stroke:var(--equipment-color);stroke-width:5}.model-visual .model-highlight{fill:none;stroke:#fff9;stroke-width:1.5}.model-visual .model-shadow{fill:#0e15122e;stroke:none}.model-visual .model-bolt{fill:#17324d;stroke:none}.model-visual .model-plate{fill:#fff;stroke:#17324d}.model-visual .valve{fill:#fff;stroke:var(--equipment-color);stroke-width:3}.model-visual .signal{fill:#e5a82f;stroke:#17324d;stroke-width:1}.model-visual .signal.is-green{fill:#44a28f}.model-visual text{fill:#17324d;stroke:none;font:700 7px/1 ui-monospace,monospace}.model-intake-screen{--equipment-color:#55a99a;--equipment-light:#d7eee8}.model-clarifier{--equipment-color:#4d9fbd;--equipment-light:#d9edf4}.model-centrifugal-pump{--equipment-color:#e5a82f;--equipment-light:#f9e7b8}.model-switchgear{--equipment-color:#6b7f8c;--equipment-light:#e2e8eb}.model-treatment-skid{--equipment-color:#3f9387;--equipment-light:#d6ebe5}.model-generator{--equipment-color:#e66b2e;--equipment-light:#f8d9c8}.model-control-building{--equipment-color:#42749c;--equipment-light:#dce8f1}.model-pipe-run{--equipment-color:#3b8f89;--equipment-light:#d7ece8}.model-storage-tank{--equipment-color:#3469ac;--equipment-light:#dce6f4}.model-thumb .model-visual{width:94%;height:94%}
.canvas-panel{grid-template-rows:66px minmax(0,1fr);border-radius:18px 0 0 18px;background:#f7f8f5}.mode-builder{min-height:760px}.mode-factory{height:auto;min-height:0}.mode-factory .canvas-panel.with-overview,.mode-factory.has-additions .canvas-panel.with-overview{grid-template-rows:66px 700px auto}
.canvas-toolbar{min-height:66px;padding:11px 18px;background:#f9faf7}
.canvas-toolbar strong{font-size:11px}.canvas-toolbar span{font-size:10px}
.factory-canvas{background:#dfe7e2}
.factory-canvas:after{content:"";position:absolute;z-index:0;inset:18px;border:1px solid #9eafa9;border-radius:11px;pointer-events:none}
.canvas-world{inset:22px}
.factory-zones{position:absolute;z-index:0;inset:0;pointer-events:none}.factory-zone{position:absolute;border:1px solid #adbbb6;border-radius:11px;background:#edf3ef}.factory-zone b{position:absolute;top:9px;left:11px;color:#61756e;font:750 8px/1 ui-monospace,monospace;letter-spacing:.09em;text-transform:uppercase}.zone-process{top:2%;left:1%;width:98%;height:35%;background:#eef6f2}.zone-support{top:40%;left:1%;width:70%;height:58%;border-color:#cdbf91;background:#f4f0e4}.zone-storage{top:40%;left:74%;width:25%;height:58%;border-color:#abc0cb;background:#e9f0f4}
.factory-flow{position:absolute;z-index:1;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.factory-flow *{vector-effect:non-scaling-stroke}.flow-underlay{fill:none;stroke:#c5d2cc;stroke-width:8}.flow-process{fill:none;stroke:#277f73;stroke-width:3}.flow-support{fill:none;stroke:#b98318;stroke-width:2;stroke-dasharray:7 6}.flow-arrow{fill:#fff;stroke:#17324d;stroke-width:1}
.canvas-note{right:22px;bottom:18px;padding:7px 10px;border:1px solid #c9d6d1;border-radius:6px;color:#17324d;background:#fff;font-size:9px;letter-spacing:.02em}
.factory-object{z-index:2;width:154px;min-height:142px;grid-template-rows:116px auto;padding:0 5px 5px;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer;touch-action:auto}
.factory-object:hover{z-index:3;border-color:#88a29a;background:#ffffff8c}
.factory-object.is-selected{z-index:4;border:1px dashed #17324d;background:#ffffff9c;box-shadow:0 4px 16px #17324d1f}
.factory-object.is-critical{border-color:#d55428;background:#fff2ebcc}
.object-model{min-width:0;min-height:0;transform:rotate(var(--rotation))}
.object-model .model-visual{width:100%;height:100%;filter:drop-shadow(0 4px 3px #17324d24);pointer-events:none;user-select:none}
.object-label{justify-content:center;gap:7px;width:max-content;max-width:100%;margin:0 auto;padding:6px 9px;border:1px solid #c7d2ce;border-radius:6px;background:#fff;color:#17324d;box-shadow:0 3px 8px #17324d1f;white-space:nowrap}
.object-label b,.object-label small{font-size:10px}.object-label small{font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.factory-object.type-storage-tank{width:138px;min-height:174px;grid-template-rows:148px auto}
.factory-object.type-storage-tank .object-model svg{height:148px}
.factory-object.type-control-building{width:166px}.factory-object.type-pipe-run{width:112px;min-height:96px;grid-template-rows:70px auto}.mode-factory .factory-object.type-storage-tank{width:120px;min-height:142px;grid-template-rows:116px auto}.mode-factory .factory-object.type-storage-tank .object-model svg{height:116px}
.drag-handle{z-index:7;min-height:35px;transform:translate(-50%,88px);border:1px solid #fff6;border-radius:8px;padding:0 13px;background:#112e28;color:#fff;font-size:10px;box-shadow:0 7px 18px #0e151259}
.drag-handle .action-icon{width:16px;height:16px}.drag-handle span{font-size:10px}.drag-handle:active{transform:translate(-50%,88px)}
.factory-object.type-storage-tank+.drag-handle{transform:translate(-50%,104px)}
.object-inspector{border-radius:0 18px 18px 0;padding:24px;background:#fff}
.object-inspector .builder-section-head{padding-right:0}
.inspector-title{grid-template-columns:84px 1fr}
.inspector-title .model-thumb{height:78px;background:#eef1ee}
.inspector-title h2{font-size:18px}.inspector-title p,.inspector-title small{font-size:11px}.object-inspector .data-list dt,.object-inspector .data-list dd,.object-inspector .mini-samples>div,.object-inspector .record-link,.object-inspector .control-button,.object-inspector .danger-button,.object-inspector .keyboard-hint{font-size:11px}.object-inspector .data-list div{padding:10px 0}.object-inspector .mini-samples>div{padding:8px 0}
.factory-locked-note{display:flex;align-items:center;gap:8px;margin:18px 0 0;padding:11px 12px;border:1px solid #b9d8cf;border-radius:7px;color:#17645e;background:#eef7f3;font-size:10px;font-weight:650}
.factory-locked-note span{font-size:8px;color:#2b827a}
.mode-factory .canvas-toolbar{background:#f4f7f3}.mode-factory .factory-object{cursor:pointer}.mode-factory .factory-object:hover{border-color:#88a29a}.mode-factory .canvas-note{display:none}
.factory-object:active{transform:translate(-50%,-50%)}
.factory-operations{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);border-top:1px solid #cbd4d1;background:#fff}.factory-operations>article{min-width:0;padding:20px 22px}.factory-health{grid-column:1/-1;display:grid;grid-template-columns:minmax(190px,.72fr) minmax(330px,1.2fr) minmax(260px,1fr);align-items:center;gap:24px;border-bottom:1px solid var(--line)}.factory-dispatch{border-left:1px solid var(--line)}.factory-operations header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.factory-health header{margin:0}.factory-operations h3,.factory-operations p{margin:0}.factory-operations h3{font-size:14px;letter-spacing:-.01em}.factory-operations header p{margin-top:4px;color:var(--faint);font-size:10px}.factory-operations header>a{flex:0 0 auto;color:#17645e;font-size:10px;font-weight:750;text-decoration:none}.health-readouts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line)}.health-readouts>div{min-width:0;display:grid;gap:4px;padding:11px 12px}.health-readouts>div+div{border-left:1px solid var(--line)}.health-readouts strong{font:750 18px/1 ui-monospace,monospace}.health-readouts span{overflow:hidden;color:var(--faint);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.status-distribution{display:flex;height:7px;overflow:hidden;border-radius:6px;background:#e6ebe8}.status-distribution>i{flex:0 0 var(--share)}.status-distribution .is-nominal,.status-legend .is-nominal i{background:var(--teal)}.status-distribution .is-warning,.status-legend .is-warning i,.status-distribution .is-maintenance,.status-legend .is-maintenance i{background:var(--amber)}.status-distribution .is-critical,.status-legend .is-critical i{background:var(--orange)}.status-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;margin-top:10px}.status-legend span{display:flex;align-items:center;gap:6px;color:var(--faint);font-size:9px;text-transform:capitalize}.status-legend i{width:7px;height:7px;flex:0 0 auto;border-radius:50%}.factory-trend .chart-wrap svg{height:124px}.dispatch-glance{display:grid}.dispatch-row{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-top:1px solid var(--soft);color:inherit;text-decoration:none}.dispatch-row:first-child{border-top:0}.dispatch-row>span:first-child{min-width:0;display:grid;gap:4px}.dispatch-row strong,.dispatch-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dispatch-row strong{font-size:10px}.dispatch-row small{color:var(--faint);font-size:9px}.dispatch-row .status-chip{flex:0 0 auto;min-height:22px;padding:0 7px;font-size:8px}
@media(max-width:1000px){.builder-shell{grid-template-columns:minmax(0,1fr) 260px}.route-control{padding:0 18px 24px}.factory-object{width:132px;grid-template-rows:102px auto;min-height:128px}.factory-object.type-storage-tank{width:120px;grid-template-rows:128px auto;min-height:154px}.factory-object.type-storage-tank .object-model svg{height:128px}.factory-object.type-control-building{width:142px}.factory-object.type-pipe-run{width:112px}.drag-handle{transform:translate(-50%,80px)}.drag-handle:active{transform:translate(-50%,80px)}.factory-object.type-storage-tank+.drag-handle{transform:translate(-50%,94px)}}
@media(max-width:700px){.route-control{padding:0 10px 18px}.route-control .page-head{align-items:flex-start;padding:18px 2px 14px}.route-control .page-head h2{font-size:24px}.route-control .page-actions{justify-content:flex-start}.factory-mode-switch{order:-1}.builder-shell,.mode-builder{height:auto;min-height:0;grid-template-columns:1fr;border-radius:14px}.canvas-panel,.canvas-panel.with-overview,.mode-factory .canvas-panel.with-overview,.mode-factory.has-additions .canvas-panel.with-overview{grid-template-rows:auto 620px auto;border-radius:14px 14px 0 0}.factory-canvas{height:620px;overflow:hidden}.canvas-world{inset:12px;min-width:0;min-height:590px}.zone-storage b{display:none}.factory-operations{grid-template-columns:1fr}.factory-operations>article{padding:20px}.factory-health{grid-column:1;grid-template-columns:1fr;gap:16px}.factory-trend,.factory-dispatch{border-top:1px solid var(--line)}.factory-dispatch{border-left:0}.health-readouts>div{padding:11px 8px}.object-inspector{border-radius:0 0 14px 14px}.builder-shell>.model-library{top:70px;left:0;width:100%;max-height:650px}.factory-object{width:78px;grid-template-rows:62px auto;min-height:98px}.factory-object.type-storage-tank,.mode-factory .factory-object.type-storage-tank{width:72px;grid-template-rows:78px auto;min-height:114px}.factory-object.type-storage-tank .object-model svg,.mode-factory .factory-object.type-storage-tank .object-model svg{height:78px}.factory-object.type-control-building{width:84px}.factory-object.type-pipe-run{width:76px;min-height:88px;grid-template-rows:62px auto}.object-label{flex-direction:column;gap:2px;padding:4px 6px}.object-label b{font-size:10px}.object-label small{display:block;font-size:8px;line-height:1}.drag-handle{transform:translate(-50%,61px)}.drag-handle:active{transform:translate(-50%,61px)}.factory-object.type-storage-tank+.drag-handle{transform:translate(-50%,71px)}.canvas-note{right:12px;bottom:12px}.library-model{grid-template-columns:66px 1fr 18px}.model-thumb{height:60px}}
