:root{color:#f5f7f4;font-synthesis:none;letter-spacing:0;background:#111311;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box;letter-spacing:0}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button,input{font:inherit}[hidden]{display:none!important}button{color:inherit}#twin-canvas{outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.topbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;background:#111311eb;border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;gap:20px;min-height:68px;padding:10px 16px;display:flex;position:absolute;inset:0 332px auto 0}.brand-block{align-items:center;gap:10px;min-width:178px;display:flex}.brand-mark{color:#f2c94c;border:1px solid #f2c94c;place-items:center;width:42px;height:42px;font-size:13px;font-weight:800;display:grid}.brand-block h1,.brand-block p{margin:0}.brand-block h1{font-size:15px;font-weight:720;line-height:1.2}.brand-block p{color:#aeb5ad;align-items:center;gap:6px;margin-top:4px;font-size:11px;display:flex}.status-dot{background:#55c878;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #55c8781f}.toolbar,.camera-controls,.segmented,.switch-control{align-items:center;display:flex}.toolbar{justify-content:flex-end;gap:8px;min-width:0}.icon-button,.camera-controls button,.segmented button{cursor:pointer;background:#ffffff0f;border:1px solid #ffffff24;transition:background .14s,border-color .14s,color .14s}.icon-button:hover,.camera-controls button:hover,.segmented button:hover{background:#ffffff1f;border-color:#ffffff47}.icon-button{border-radius:4px;place-items:center;width:38px;height:38px;padding:0;display:grid}.icon-button svg,.camera-controls svg{stroke-width:1.8px;width:17px;height:17px}.segmented{border:1px solid #ffffff24;border-radius:4px;flex:none;overflow:hidden}.segmented button{color:#aeb5ad;border:0;border-right:1px solid #ffffff1a;border-radius:0;min-width:38px;height:36px;padding:0 8px;font-size:11px}.segmented button:last-child{border-right:0}.segmented button.selected,.camera-controls button.selected{color:#171815;background:#f2c94c;border-color:#f2c94c}.camera-controls{gap:4px;position:relative}.camera-controls button{color:#d4d9d2;border-radius:4px;align-items:center;gap:6px;height:38px;padding:0 10px;font-size:11px;display:flex}.camera-trigger{justify-content:flex-start;min-width:144px}.camera-trigger #camera-view-label{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.camera-trigger .camera-chevron{width:14px;height:14px;transition:transform .18s}.camera-controls.open .camera-chevron{transform:rotate(180deg)}.camera-menu{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:40;background:#121615f7;border:1px solid #ffffff2e;border-radius:5px;width:min(468px,100vw - 32px);max-height:min(72vh,640px);padding:10px;position:absolute;top:calc(100% + 9px);right:0;overflow:auto;box-shadow:0 18px 46px #0000006b,0 2px 10px #00000047}.camera-menu-heading{color:#8f9995;justify-content:space-between;margin:4px 2px 7px;font-size:10px;font-weight:700;display:flex}.camera-menu-heading:not(:first-child){border-top:1px solid #ffffff1a;margin-top:14px;padding-top:11px}.camera-view-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.camera-menu .camera-view-grid button{color:#d6ddd8;justify-content:flex-start;width:100%;min-width:0;height:44px;padding:0 9px;font-size:11px}.camera-menu .camera-view-grid button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.camera-menu .camera-view-grid button.selected{color:#ffe27b;background:#f2c94c29;border-color:#f2c94cc7}button:focus-visible,.switch-control input:focus-visible+.switch-track,.sap-drop-zone:focus-visible{outline-offset:2px;outline:2px solid #f2c94c}.switch-control{color:#c8cdc6;cursor:pointer;gap:7px;padding:0 4px;font-size:11px}.switch-control input{opacity:0;pointer-events:none;position:absolute}.switch-track{background:#4f554f;border-radius:9px;width:30px;height:17px;transition:background .14s;position:relative}.switch-track:after{content:"";background:#f5f7f4;border-radius:50%;width:11px;height:11px;transition:transform .14s;position:absolute;top:3px;left:3px}.switch-control input:checked+.switch-track{background:#2f9d62}.switch-control input:checked+.switch-track:after{transform:translate(13px)}.operations-panel{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:12;scrollbar-color:#525852 transparent;scrollbar-width:thin;background:#141614f5;border-left:1px solid #ffffff1f;flex-direction:column;width:332px;display:flex;position:absolute;inset:0 0 0 auto;overflow-y:auto}.operations-panel section{border-bottom:1px solid #ffffff1a;padding:16px 18px}.section-heading{color:#8f978e;justify-content:space-between;align-items:center;gap:12px;font-size:10px;font-weight:700;display:flex}.section-heading strong{color:#55c878;font-size:10px}.clock{font-variant-numeric:tabular-nums;margin-top:10px;font-size:30px;font-weight:650;line-height:1}.timeline{background:#3a3e39;height:4px;margin-top:14px;overflow:hidden}.timeline span{background:#f2c94c;width:0;height:100%;display:block}.time-meta{color:#767d75;justify-content:space-between;margin-top:5px;font-size:9px;display:flex}.kpi-grid{border-top:1px solid #ffffff1a;border-left:1px solid #ffffff1a;grid-template-columns:1fr 1fr;gap:0;margin-top:12px;display:grid}.kpi-grid>div{border-bottom:1px solid #ffffff1a;border-right:1px solid #ffffff1a;min-height:78px;padding:10px}.kpi-grid span,.kpi-grid small{color:#899087;font-size:9px;display:block}.kpi-grid strong{color:#f7f8f5;font-variant-numeric:tabular-nums;margin:5px 0 3px;font-size:18px;display:block}.station-list,.storage-list{margin-top:8px}.station-row,.storage-row{border-bottom:1px solid #ffffff12;align-items:center;min-height:28px;font-size:10px;display:grid}.station-row{grid-template-columns:1fr auto auto;gap:9px}.station-row strong{text-align:right;color:#d7dcd5;font-variant-numeric:tabular-nums;min-width:22px}.state-pill{text-align:center;color:#aeb5ad;border:1px solid #4e544e;border-radius:3px;min-width:52px;padding:3px 5px;font-size:8px}.state-pill.active{color:#f2c94c;border-color:#f2c94c}.storage-row{grid-template-columns:minmax(82px,1fr) 58px 104px;gap:8px}.storage-row>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.storage-bar{background:#3b403b;height:5px}.storage-bar span{background:#55c878;height:100%;display:block}.storage-row.alert .storage-bar span{background:#d65a4a}.storage-row strong{text-align:right;color:#bbc1b9;font-variant-numeric:tabular-nums;font-size:8px}.scene-legend{color:#b8beb6;z-index:8;background:#111311db;border:1px solid #ffffff1f;align-items:center;gap:14px;padding:8px 10px;font-size:9px;display:flex;position:absolute;bottom:16px;left:16px}.legend-dot{border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}.legend-dot.available{background:#55c878}.legend-dot.occupied{background:#d65a4a}.legend-dot.active{background:#f2c94c}.loading-screen{z-index:30;background:#171917;flex-direction:column;justify-content:center;align-items:center;gap:8px;transition:opacity .26s,visibility .26s;display:flex;position:absolute;inset:0}.loading-screen.hidden{opacity:0;visibility:hidden}.loading-screen strong{margin-top:10px;font-size:13px}.loading-screen span{color:#8f978e;font-size:10px}.sap-import-dialog{color:#edf1eb;background:#181b18;border:1px solid #4a504a;border-radius:6px;width:min(680px,100vw - 32px);max-height:min(760px,100vh - 32px);padding:0;overflow:hidden;box-shadow:0 24px 80px #0000008c}.sap-import-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#090b09b8}.sap-dialog-shell{max-height:inherit;flex-direction:column;display:flex;overflow:hidden}.sap-dialog-shell>header,.sap-dialog-shell>footer{justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.sap-dialog-shell>header{border-bottom:1px solid #ffffff1a}.sap-dialog-shell>footer{border-top:1px solid #ffffff1a;justify-content:flex-end}.dialog-kicker,.sap-file-meta span,.sap-warning-heading span{color:#929a91;font-size:9px;font-weight:750}.sap-dialog-shell h2{margin:3px 0 0;font-size:17px;line-height:1.2}.sap-source-section,.sap-preview{padding:16px;overflow-y:auto}.sap-preview{padding-top:0}.sap-source-actions{flex-wrap:wrap;gap:8px;display:flex}.command-button{cursor:pointer;border-radius:4px;justify-content:center;align-items:center;gap:7px;min-height:38px;padding:0 13px;font-size:11px;font-weight:680;text-decoration:none;display:inline-flex}.command-button svg{width:16px;height:16px}.command-button.primary{color:#171815;background:#f2c94c;border:1px solid #f2c94c}.command-button.secondary{color:#d8ddd6;background:#292d29;border:1px solid #4a504a}.command-button:disabled{color:#737a73;cursor:not-allowed;background:#292d29;border-color:#393e39}.sap-drop-zone{cursor:pointer;background:#202420;border:1px dashed #646c64;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:132px;margin-top:12px;transition:border-color .14s,background .14s;display:flex}.sap-drop-zone:hover,.sap-drop-zone.dragging{background:#272a22;border-color:#f2c94c}.sap-drop-zone svg{color:#f2c94c;width:24px;height:24px}.sap-drop-zone strong{font-size:12px}.sap-drop-zone span{color:#929a91;font-size:10px}.sap-file-meta{border-top:1px solid #ffffff1a;border-left:1px solid #ffffff1a;grid-template-columns:minmax(0,1fr) 140px;margin-top:12px;display:grid}.sap-file-meta>div{border-bottom:1px solid #ffffff1a;border-right:1px solid #ffffff1a;min-width:0;padding:9px 10px}.sap-file-meta strong{color:#e8ece6;text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:10px;display:block;overflow:hidden}.sap-summary-grid{border-top:1px solid #ffffff1a;border-left:1px solid #ffffff1a;grid-template-columns:repeat(4,1fr);display:grid}.sap-summary-grid>div{border-bottom:1px solid #ffffff1a;border-right:1px solid #ffffff1a;padding:10px}.sap-summary-grid span{color:#929a91;font-size:9px;display:block}.sap-summary-grid strong{font-variant-numeric:tabular-nums;margin-top:4px;font-size:18px;display:block}.sap-warning-heading{justify-content:space-between;align-items:center;margin-top:16px;display:flex}.sap-warning-heading strong{color:#55c878;font-size:9px}.sap-warning-list{border-top:1px solid #ffffff1a;margin-top:7px}.sap-warning-list>div{color:#b8beb6;border-bottom:1px solid #ffffff14;grid-template-columns:8px 1fr;gap:8px;padding:9px 2px;font-size:10px;line-height:1.4;display:grid}.sap-warning-list i{background:#f2c94c;border-radius:50%;width:7px;height:7px;margin-top:3px}.sap-warning-list .success i{background:#55c878}.loader-ring{border:3px solid #363a36;border-top-color:#f2c94c;border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1080px){.topbar{right:300px}.operations-panel{width:300px}.camera-trigger #camera-view-label,.switch-control>span:last-child{display:none}.camera-trigger{justify-content:center;width:38px;min-width:38px;padding:0}.camera-trigger .camera-chevron{display:none}}@media (width<=760px){.topbar{flex-direction:column;align-items:flex-start;gap:8px;min-height:116px;padding:9px 10px;right:0}.brand-block{min-width:0}.brand-mark{width:34px;height:34px}.toolbar{justify-content:flex-start;gap:4px;width:100%;padding-bottom:2px;overflow-x:auto}.icon-button,.camera-controls button{flex:none}.camera-menu{width:auto;max-height:calc(65vh - 126px);position:fixed;top:112px;left:8px;right:8px}.camera-view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.camera-menu .camera-view-grid button{min-height:46px}.operations-panel{border-top:1px solid #ffffff24;border-left:0;width:100%;height:35vh;inset:auto 0 0}.operations-panel section{padding:12px 14px}.time-section,.kpi-section{display:none}.scene-legend{gap:8px;bottom:calc(35vh + 8px);left:8px}.sap-import-dialog{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.sap-source-actions,.sap-dialog-shell>footer{flex-direction:column;align-items:stretch}.sap-summary-grid{grid-template-columns:1fr 1fr}.sap-file-meta{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
