:root{color-scheme:light;font-family:Avenir Next,Avenir,Segoe UI,sans-serif;color:#19282c;background:#dfe8e9;font-synthesis:none;--ink: #19282c;--muted: #748287;--line: rgba(31, 53, 60, .11);--cyan: #23aeb5;--healthy: #27b48a;--warning: #e7a23a;--critical: #e1665b;--offline: #8b969b}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{background:radial-gradient(circle at 65% 40%,#f9fcfc,#dce7e8 55%,#c6d4d7)}button,input,select,a{font:inherit}button{color:inherit}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;outline:0;cursor:grab;touch-action:none}#scene.is-orbiting{cursor:grabbing}.chrome{position:fixed;z-index:20;left:0;right:0;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.chrome--top{top:0;padding:25px 30px}.chrome--bottom{bottom:0;padding:20px 30px;color:#69797e;font-size:11px}.chrome--bottom p{margin:0}.brand,.scene-switcher,.view-controls{pointer-events:auto}.brand{display:inline-flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:#ffffffc7;box-shadow:0 10px 30px #1e343b14;color:var(--ink);text-decoration:none;font-size:14px;font-weight:600;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand__mark,.loading__mark{display:flex;align-items:flex-end;gap:2px;width:20px;height:18px;transform:skewY(-9deg)}.brand__mark i,.loading__mark i{display:block;width:5px;border-radius:2px;background:#174b55}.brand__mark i:nth-child(1),.loading__mark i:nth-child(1){height:8px}.brand__mark i:nth-child(2),.loading__mark i:nth-child(2){height:13px}.brand__mark i:nth-child(3),.loading__mark i:nth-child(3){height:18px}.scene-switcher{display:flex;gap:2px;padding:4px;border:1px solid var(--line);border-radius:999px;background:#ffffffad;box-shadow:0 10px 32px #1e343b12;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.scene-tab{display:flex;align-items:center;gap:7px;padding:8px 13px;border-radius:999px;color:#6f7e83;text-decoration:none;font-size:11px}.scene-tab span{color:#9ba7aa;font-size:9px}.scene-tab.is-active{background:#173f49;color:#fff;box-shadow:0 5px 15px #12394338}.scene-tab.is-active span{color:#ffffff8c}.modeler-panel{position:fixed;z-index:16;top:88px;left:22px;width:310px;max-height:calc(100vh - 146px);display:flex;flex-direction:column;padding:16px;border:1px solid var(--line);border-radius:18px;background:#f9fcfcd4;box-shadow:0 28px 80px #1c343b24;-webkit-backdrop-filter:blur(24px) saturate(1.2);backdrop-filter:blur(24px) saturate(1.2)}.modeler-panel__header,.asset-drawer__topline,.asset-dialog__heading,.facility-assets__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.modeler-panel__title{min-width:0;flex:1}.eyebrow{display:flex;align-items:center;gap:7px;margin:0 0 7px;color:#46727b;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.eyebrow__pulse{width:6px;height:6px;border-radius:50%;background:var(--healthy);box-shadow:0 0 0 4px #27b48a1c}.modeler-panel h1{margin:0;font-size:20px;font-weight:600;letter-spacing:-.035em}.icon-button{width:31px;height:31px;display:grid;flex:0 0 auto;place-items:center;border:0;border-radius:10px;background:#174b55;color:#fff;font-size:19px;line-height:1;cursor:pointer;box-shadow:0 7px 18px #174b5533}.icon-button:hover{background:#103b44}.icon-button--quiet{background:#edf1f1;color:#64757a;box-shadow:none}.modeler-summary{display:flex;gap:5px;margin:14px 0 13px}.modeler-summary span{padding:5px 7px;border-radius:7px;background:#e6edeed9;color:#66767b;font-size:10px;font-weight:600}.hall-switcher{display:flex;gap:5px;margin:13px 0 0;overflow-x:auto;scrollbar-width:none}.hall-tab{padding:6px 9px;border:1px solid rgba(32,55,62,.1);border-radius:999px;background:#fff;color:#62767c;font-size:10px;cursor:pointer;white-space:nowrap}.hall-tab.is-active{border-color:#1e6875;background:#174b55;color:#fff}.tree-heading{display:flex;justify-content:space-between;align-items:center;padding:0 2px 7px;color:#596b70;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.tree-heading button{padding:5px 8px;border:1px solid rgba(32,55,62,.1);border-radius:7px;background:#fff;color:#557078;font-size:10px;text-transform:none;cursor:pointer}.row-tree{min-height:0;overflow:auto;padding-right:2px;scrollbar-width:thin;scrollbar-color:rgba(43,68,75,.18) transparent}.row-card{margin-bottom:7px;padding:9px;border:1px solid rgba(32,55,62,.08);border-radius:12px;background:#f7fafad1}.row-card__header{display:flex;align-items:center;justify-content:space-between;gap:8px}.row-card__name{display:flex;align-items:center;gap:7px;min-width:0;border:0;padding:0;background:transparent;cursor:pointer}.row-card__name i{width:6px;height:13px;border-radius:2px;background:#5f7d84}.row-card__name strong{color:#31464c;font-size:12px}.row-card__name span{color:#8c9a9e;font-size:10px}.mini-action,.facility-assets__heading button{padding:5px 7px;border:1px solid rgba(32,55,62,.1);border-radius:6px;background:#fff;color:#5f747a;font-size:10px;cursor:pointer}.mini-action:disabled{opacity:.36;cursor:default}.rack-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin-top:8px}.rack-chip{position:relative;min-width:0;padding:6px 2px 6px 8px;border:1px solid rgba(32,55,62,.09);border-radius:6px;background:#fff;color:#52676d;font-size:9px;font-weight:650;cursor:pointer}.rack-chip:before{content:"";position:absolute;left:3px;top:50%;width:3px;height:9px;border-radius:2px;background:var(--rack-status);transform:translateY(-50%)}.rack-chip:hover{border-color:#23869259;color:#17616c}.row-empty{margin:8px 0 0;color:#97a3a6;font-size:10px}.facility-assets{flex:0 0 auto;margin-top:10px;padding-top:10px;border-top:1px solid rgba(32,55,62,.09)}.facility-assets__heading{align-items:center}.facility-assets__heading>span{color:#65777c;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.facility-asset-list{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.facility-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border:1px solid rgba(32,55,62,.09);border-radius:999px;background:#fff;color:#5f7075;font-size:9px;cursor:pointer}.facility-chip i{width:4px;height:4px;border-radius:50%;background:var(--asset-status)}.operations{position:fixed;z-index:12;top:108px;right:28px;width:218px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fafcfcc2;box-shadow:0 24px 70px #1d343b1c;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);opacity:0;transform:translateY(8px)}body.drawer-open .operations{opacity:0!important;transform:translate(12px);pointer-events:none}.operations__heading{display:flex;justify-content:space-between;margin-bottom:12px;color:#364b51;font-size:10px;font-weight:600}.operations__heading strong{display:flex;align-items:center;gap:5px;color:#239578;font-size:8px}.operations__heading strong i{width:5px;height:5px;border-radius:50%;background:var(--healthy);box-shadow:0 0 0 3px #27b48a1f}.operations__stats{display:grid;grid-template-columns:1fr 1fr;gap:7px}.operations__stats div{min-height:54px;padding:9px;border-radius:10px;background:#ebf1f2cc}.operations__stats strong{display:block;margin-bottom:5px;font-size:15px;font-weight:650}.operations__stats span{color:#7e8c90;font-size:8px}.asset-drawer{position:fixed;z-index:25;top:88px;right:22px;width:370px;max-height:calc(100vh - 148px);overflow:auto;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fbfdfdf0;box-shadow:0 30px 90px #172d3433;-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);opacity:0;transform:translate(calc(100% + 40px));transition:opacity .22s ease,transform .32s cubic-bezier(.22,.8,.24,1);pointer-events:none}.asset-drawer.is-open{opacity:1;transform:translate(0);pointer-events:auto}.asset-drawer__topline>span,.asset-dialog__heading span{color:#89979b;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.drawer-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 4px}.drawer-title h2{margin:0;color:#20383e;font-size:24px;font-weight:600;letter-spacing:-.04em}.drawer-subtitle{margin:0 0 18px;color:#7c8a8e;font-size:12px;line-height:1.5}.status-badge{padding:6px 8px;border-radius:999px;background:color-mix(in srgb,var(--status-color) 13%,white);color:var(--status-color);font-size:10px;font-weight:650;white-space:nowrap}.drawer-field{display:block;margin-bottom:15px;color:#65767b;font-size:11px;font-weight:600}.drawer-field select,.drawer-field input,.asset-dialog select,.asset-dialog input,.device-add select{width:100%;margin-top:7px;padding:9px 10px;border:1px solid rgba(32,55,62,.12);border-radius:8px;outline:0;background:#f5f8f8;color:#344a50;font-size:11px}.drawer-field select:focus,.drawer-field input:focus,.asset-dialog select:focus,.asset-dialog input:focus{border-color:#2386926b;box-shadow:0 0 0 3px #23869214}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:0 0 17px}.metric{padding:9px;border-radius:10px;background:#edf3f3}.metric strong{display:block;color:#2f474d;font-size:13px}.metric span{color:#839195;font-size:9px}.capacity-bar{height:5px;margin:7px 0 16px;overflow:hidden;border-radius:999px;background:#e3eaeb}.capacity-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#23aeb5,#287a94)}.drawer-section-title{margin:0 0 8px;color:#7b898d;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.device-list{display:grid;gap:6px}.device-item{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:8px;padding:9px;border:1px solid rgba(32,55,62,.08);border-radius:10px;background:#f5f8f8}.device-actions{display:grid;gap:4px}.device-item>i{width:7px;height:19px;border-radius:2px;background:var(--device-color);box-shadow:inset 0 0 0 1px #ffffff4d}.device-item strong{display:block;color:#344a50;font-size:11px}.device-item small{display:block;margin-top:2px;color:#89969a;font-size:9px}.device-item select{padding:6px;border:1px solid rgba(32,55,62,.1);border-radius:6px;background:#fff;color:#5f7277;font-size:9px}.device-add{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:8px}.device-add select{margin:0}.device-add button{border:0;border-radius:8px;padding:0 11px;background:#174b55;color:#fff;font-size:10px;cursor:pointer}.device-remove{border:0;border-radius:6px;padding:5px 7px;background:#fff;color:#829096;font-size:10px;cursor:pointer}.asset-note{padding:11px;border-radius:10px;background:#edf3f3;color:#6c7d82;font-size:11px;line-height:1.55}.toast{position:fixed;z-index:60;left:50%;bottom:72px;padding:10px 14px;border:1px solid rgba(25,54,62,.15);border-radius:999px;background:#143c45f0;box-shadow:0 14px 40px #142c3238;color:#fff;font-size:11px;opacity:0;transform:translate(-50%,12px);transition:opacity .2s ease,transform .25s ease;pointer-events:none}.toast.is-visible{opacity:1;transform:translate(-50%)}.rack-label{position:fixed;z-index:24;left:0;top:0;display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:999px;background:#fcfefeeb;box-shadow:0 13px 38px #162d3426;color:#263b41;font-size:10px;white-space:nowrap;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);opacity:0;transform:translate3d(-999px,-999px,0) scale(.96);pointer-events:none;transition:opacity .14s ease}.rack-label.is-visible{opacity:1}.rack-label__status{width:6px;height:6px;border-radius:50%;background:var(--label-color);box-shadow:0 0 0 4px color-mix(in srgb,var(--label-color) 17%,transparent)}.camera-hint{position:absolute;left:50%;transform:translate(-50%);color:#77868a}#reset-view{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:#ffffffb3;color:#607277;cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.view-controls{display:flex;align-items:center;gap:5px}.view-preset{padding:8px 10px;border:1px solid var(--line);border-radius:999px;background:#ffffffad;color:#65777c;font-size:10px;cursor:pointer;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.view-preset.is-active{border-color:#174b55;background:#174b55;color:#fff}.asset-dialog{width:min(390px,calc(100vw - 32px));padding:0;border:1px solid var(--line);border-radius:18px;background:#fcfefefa;color:var(--ink);box-shadow:0 35px 100px #142a3140}.asset-dialog::backdrop{background:#172a304d;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.asset-dialog form{padding:20px}.asset-dialog__heading{margin-bottom:18px}.asset-dialog__heading h2{margin:4px 0 0;font-size:19px;letter-spacing:-.03em}.asset-dialog label{display:block;margin-top:12px;color:#65767b;font-size:9px;font-weight:600}.asset-dialog__actions{display:flex;justify-content:flex-end;gap:7px;margin-top:20px}.primary-button,.secondary-button{padding:9px 12px;border-radius:9px;font-size:9px;font-weight:600;cursor:pointer}.primary-button{border:0;background:#174b55;color:#fff}.secondary-button{border:1px solid var(--line);background:#edf2f2;color:#617378}.loading{position:fixed;z-index:40;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;background:#e9f0f1;color:#60757a;font-size:9px;letter-spacing:.1em;text-transform:uppercase;transition:opacity .6s ease,visibility .6s}.loading__mark{width:25px;height:23px;gap:3px;animation:loading-bob 1.1s ease-in-out infinite alternate}.loading__mark i{width:6px;background:#1b6974}.loading__mark i:nth-child(1){height:10px}.loading__mark i:nth-child(2){height:17px}.loading__mark i:nth-child(3){height:23px}.loading.is-hidden{opacity:0;visibility:hidden}@keyframes loading-bob{to{transform:skewY(-9deg) translateY(-5px)}}@media(max-width:900px){.modeler-panel{left:14px;width:280px}.asset-drawer{right:14px;width:330px}.operations{right:18px}}@media(max-width:640px){.chrome--top{padding:18px 14px}.brand>span:last-child{display:none}.modeler-panel{top:75px;left:9px;width:250px;max-height:calc(100vh - 133px)}.asset-drawer{top:auto;right:9px;bottom:57px;width:calc(100vw - 18px);max-height:58vh}.operations{display:none}.chrome--bottom{padding:15px;justify-content:flex-end}.chrome--bottom p{display:none}}@media(prefers-reduced-motion:reduce){.loading__mark{animation:none}}
