@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a6fd7fbe-module__V9XBlW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a6fd7fbe-module__V9XBlW__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0r6juujl39pe6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_30718973-module__C72cgW__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_30718973-module__C72cgW__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
*{box-sizing:border-box}html,body{min-height:100%;font-family:var(--font-geist-sans),"Pretendard",Arial,sans-serif;margin:0}button,input,select{font:inherit}button{cursor:pointer}
.app,.dialog-layer{--bg:#080b12;--surface:#0d121c;--surface2:#111827;--line:#ffffff17;--text:#f2f6fb;--muted:#8090a6;--accent:#66f5c2;--accent2:#5b7cff;--purple:#a576ff;--danger:#ff5b67;--warning:#ffb84d;--cyan:#38c9ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app{background:var(--bg);color:var(--text);grid-template-columns:212px minmax(0,1fr);min-height:100vh;transition:all .25s;display:grid}.theme-light{--bg:#f3f6f8;--surface:#fff;--surface2:#f7f9fb;--line:#1623331c;--text:#14202f;--muted:#6d7b8b;--accent:#08a977;--accent2:#3c63eb;--purple:#8057e8;--danger:#e44451;--warning:#d98300;--cyan:#0989ba;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.concept-grid{--accent:#4b6fff;--accent2:#06a6b8;--bg:#edf1f5}.theme-dark.concept-grid{--bg:#11151a;--surface:#181d23;--surface2:#20262d;--line:#ffffff1a;--text:#f4f6f8;--muted:#9099a3;--accent:#7d9cff;--accent2:#44c3cb}.concept-twin{--accent:#ffcc67;--accent2:#ff795f;--purple:#e96fc6;--bg:#100f13}.theme-light.concept-twin{--bg:#f7f3ee;--surface:#fffcf7;--surface2:#f1ebe4;--text:#231f22;--muted:#7d716e;--line:#30231e1f;--accent:#d68022;--accent2:#e15e49}.app,.dialog-layer{--ui-scale:1.25}@media (max-width:1100px){.app,.dialog-layer{--ui-scale:1.15}}@media (max-width:760px){.app,.dialog-layer{--ui-scale:1.08}}
.sidebar{background:color-mix(in srgb,var(--surface) 92%,transparent);border-right:1px solid var(--line);z-index:50;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);flex-direction:column;width:212px;padding:22px 16px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden}.brand,.portfolio-switch,.side-status,.side-foot{flex:none}.brand{align-items:center;gap:11px;padding:0 7px 22px;display:flex}.brand-mark{border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);border-radius:6px;width:30px;height:30px;position:relative;transform:rotate(45deg)}.brand-mark span,.brand-mark i{background:var(--accent);border-radius:9px;position:absolute}.brand-mark span{width:15px;height:4px;top:7px;left:7px}.brand-mark i{width:4px;height:15px;top:7px;left:7px}.brand strong{letter-spacing:2.5px;font-size:14px;display:block}.brand small{letter-spacing:3.1px;color:var(--accent);font-size:8px}.close-menu{color:var(--text);background:0 0;border:0;margin-left:auto;font-size:24px;display:none}.portfolio-switch{background:var(--surface2);border:1px solid var(--line);border-radius:9px;justify-content:space-between;align-items:center;margin-bottom:22px;padding:12px;display:flex}.portfolio-switch small{letter-spacing:1.5px;color:var(--muted);margin-bottom:4px;font-size:8px;display:block}.portfolio-switch strong{font-size:12px}.portfolio-switch>span{color:var(--muted)}nav{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex-direction:column;flex:auto;gap:3px;min-height:0;margin-left:-16px;padding-left:16px;padding-right:4px;display:flex;overflow-y:auto}nav::-webkit-scrollbar{width:6px}nav::-webkit-scrollbar-track{background:0 0}nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}nav::-webkit-scrollbar-thumb:hover{background:var(--muted)}nav button{height:42px;color:var(--muted);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;padding:0 11px;font-size:12px;font-weight:650;display:flex;position:relative}nav button>span{text-align:center;width:20px;font-size:18px}nav button b{background:var(--danger);color:#fff;border-radius:10px;margin-left:auto;padding:1px 6px;font-size:9px}nav button.active{color:var(--text);background:color-mix(in srgb,var(--accent) 11%,transparent)}nav button.active:before{content:"";background:var(--accent);width:3px;height:24px;box-shadow:0 0 12px var(--accent);border-radius:0 3px 3px 0;position:absolute;left:-16px}nav button.active>span{color:var(--accent)}.side-status{background:var(--surface2);border:1px solid var(--line);border-radius:8px;margin-top:12px;padding:12px}.status-title{letter-spacing:1px;justify-content:space-between;font-size:8px;display:flex}.status-title b{color:var(--accent);font-size:9px}.status-line{background:var(--line);height:3px;margin:10px 0 7px}.status-line i{background:var(--accent);height:100%;box-shadow:0 0 8px var(--accent);display:block}.side-status small{color:var(--muted);font-size:9px}.side-foot{align-items:center;gap:9px;padding:16px 4px 0;display:flex}.side-foot>span{border:1px solid var(--line);border-radius:50%;place-items:center;width:27px;height:27px;font-size:12px;display:grid}.side-foot strong,.side-foot small{font-size:10px;display:block}.side-foot small{color:var(--muted);margin-top:2px;font-size:8px}.side-foot>i{color:var(--muted);margin-left:auto}main{grid-column:2;min-width:0;padding-bottom:86px}.topbar{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:30;justify-content:space-between;align-items:center;height:78px;padding:0 30px;display:flex;position:sticky;top:0}.eyebrow,.section-kicker{color:var(--muted);letter-spacing:1.8px;font-size:8px;font-weight:750}.page-heading h1{letter-spacing:-.4px;margin:5px 0 0;font-size:17px}.header-actions{align-items:center;gap:10px;display:flex}.live-pill{border:1px solid var(--line);height:32px;color:var(--accent);letter-spacing:.5px;border-radius:17px;align-items:center;gap:7px;padding:0 10px;font-size:9px;font-weight:800;display:flex}.live-pill i,.online-dot{background:var(--accent);width:6px;height:6px;box-shadow:0 0 7px var(--accent);border-radius:50%}.live-pill span{color:var(--muted);font-family:var(--font-geist-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}.live-pill .live-time{color:var(--text);min-width:8ch}.live-pill small{color:var(--muted);letter-spacing:.3px;font-size:8px;font-weight:600}.icon-btn,.notification{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--text);border-radius:50%;font-size:18px}.notification{position:relative}.notification b{background:var(--danger);color:#fff;border-radius:50%;place-items:center;width:15px;height:15px;font-size:8px;display:grid;position:absolute;top:-4px;right:-2px}.theme-toggle{border:1px solid var(--line);background:var(--surface);border-radius:18px;gap:1px;height:31px;padding:3px;display:flex}.theme-toggle span{width:23px;height:23px;color:var(--muted);border-radius:50%;place-items:center;font-size:12px;display:grid}.theme-toggle span.active{background:var(--text);color:var(--bg)}.profile{border-left:1px solid var(--line);align-items:center;gap:8px;padding-left:13px;display:flex}.profile>span{background:linear-gradient(135deg,var(--accent2),var(--accent));color:#071117;border-radius:50%;place-items:center;width:31px;height:31px;font-size:9px;font-weight:900;display:grid}.profile strong,.profile small{font-size:10px;display:block}.profile small{color:var(--muted);margin-top:2px;font-size:8px}.mobile-menu{display:none}.concept-bar{z-index:60;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid var(--line);align-items:center;gap:18px;height:66px;padding:7px 24px;display:flex;position:fixed;bottom:0;left:212px;right:0}.concept-label{letter-spacing:1.5px;color:var(--muted);font-size:7px}.concept-options{gap:5px;height:51px;display:flex}.concept-options button{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:5px 12px;display:flex}.concept-options button>span{font-family:var(--font-geist-mono);border:1px solid var(--line);border-radius:50%;place-items:center;width:24px;height:24px;font-size:8px;display:grid}.concept-options strong,.concept-options small{text-align:left;letter-spacing:.5px;font-size:9px;display:block}.concept-options small{margin-top:3px;font-size:7px;font-weight:400}.concept-options button.active{background:color-mix(in srgb,var(--accent) 8%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--text)}.concept-options button.active>span{color:var(--accent);border-color:var(--accent)}.hint{color:var(--muted);margin-left:auto;font-size:8px}.nav-group{flex-direction:column;gap:3px;display:flex}nav button.parent .chevron{color:var(--muted);margin-left:auto;font-size:11px;font-style:normal}nav button.parent.active:before{display:none}nav .sub{border-left:1px solid var(--line);flex-direction:column;gap:2px;margin:0 0 4px 22px;padding-left:10px;display:flex}nav .sub button{gap:8px;height:34px;padding:0 10px;font-size:11px;font-weight:600}nav .sub button.active:before{height:18px;left:-11px}.app{zoom:var(--ui-scale)}.sidebar-toggle{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--muted);border-radius:8px;justify-content:center;align-items:center;margin-right:12px;font-size:14px;display:inline-flex}.sidebar-toggle:hover{color:var(--text)}.page-heading{margin-right:auto}.app.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}.app.sidebar-collapsed .sidebar{transition:transform .2s;transform:translate(-105%)}.app.sidebar-collapsed .concept-bar{left:0}.app.fullscreen{display:block}.app.fullscreen main{min-height:100vh;padding-bottom:0}.app.fullscreen .sidebar{transition:transform .22s;transform:translate(-105%);box-shadow:20px 0 50px #00000059}.app.fullscreen .sidebar.open{transform:translate(0)}.app.fullscreen .close-menu{display:block}.app.fullscreen .mobile-menu{display:none}.sidebar-backdrop{z-index:45;background:#00000059;position:fixed;inset:0}.fullscreen-menu{z-index:44;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);height:32px;color:var(--muted);letter-spacing:.5px;border-radius:8px;align-items:center;gap:7px;padding:0 12px 0 10px;font-size:10px;font-weight:700;display:inline-flex;position:fixed;top:12px;left:14px}.fullscreen-menu:hover,.fullscreen-menu[aria-expanded=true]{color:var(--text);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}.fullscreen-menu span{font-size:14px}
.page-content{max-width:1500px;margin:auto;padding:30px}.page-intro{justify-content:space-between;align-items:flex-end;margin-bottom:24px;display:flex}.page-intro h2{letter-spacing:-1.1px;margin:6px 0;font-size:27px}.page-intro p{color:var(--muted);margin:0;font-size:11px}.page-intro.compact{align-items:center}.page-intro.compact p{align-items:center;gap:7px;display:flex}.primary-btn,.outline-btn,.intro-actions button{background:var(--accent);color:#08110f;height:36px;box-shadow:0 5px 20px color-mix(in srgb,var(--accent) 22%,transparent);border:0;border-radius:6px;padding:0 16px;font-size:10px;font-weight:850}.outline-btn,.intro-actions button{border:1px solid var(--line);color:var(--text);box-shadow:none;background:0 0}.intro-actions{gap:8px;display:flex}.intro-actions .primary-btn{background:var(--accent);color:#08110f;border-color:#0000}.primary-btn:disabled,.outline-btn:disabled,.intro-actions button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:19px;position:relative;overflow:hidden}.panel-head{justify-content:space-between;align-items:flex-start;display:flex}.panel-head h3,.settings-form h3{letter-spacing:-.3px;margin:5px 0 0;font-size:14px}.panel-head button,.table-tools button,.settings-nav button{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:5px;padding:7px 10px;font-size:9px}.section-kicker{display:block}.section-kicker i{background:var(--accent);width:5px;height:5px;box-shadow:0 0 7px var(--accent);border-radius:50%;margin-right:6px;display:inline-block}.section-kicker.ai{color:var(--purple)}.spark{color:var(--purple);text-shadow:0 0 14px var(--purple);font-size:20px}.data-notice{text-align:right;color:var(--muted);text-align:right;margin:0;padding:0 30px 26px;font-size:9px}.pending-panel{max-width:640px}.pending-badge{border:1px solid var(--warning);color:var(--warning);letter-spacing:1px;border-radius:4px;padding:4px 9px;font-size:8px;font-weight:800;display:inline-block}.pending-panel p{color:var(--muted);margin:14px 0 0;font-size:11px;line-height:1.7}.pending-panel h4{margin:20px 0 8px;font-size:11px}.pending-panel ul{color:var(--muted);margin:0;padding-left:18px;font-size:10px;line-height:1.9}
.filter-bar{border:1px solid var(--line);background:var(--surface);border-radius:10px;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px;padding:14px 16px;display:flex}.filter-field{flex:140px;gap:4px;min-width:140px;display:grid}.filter-field>span{color:var(--muted);font-size:9px;font-weight:650}.filter-field input,.filter-field select{border:1px solid var(--line);background:var(--surface2);height:34px;color:var(--text);border-radius:6px;padding:0 10px;font-size:11px}.filter-reset{border:1px solid var(--line);height:34px;color:var(--muted);background:0 0;border-radius:6px;padding:0 12px;font-size:10px}.filter-actions{gap:8px;margin-left:auto;display:flex}.kpi-row{grid-template-columns:repeat(var(--kpi-count,6),minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.kpi-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;min-width:0;padding:14px 16px}.kpi-label{color:var(--muted);font-size:9px;font-weight:650;display:block}.kpi-card strong{font-family:var(--font-geist-mono),monospace;letter-spacing:-.3px;margin:8px 0 4px;font-size:20px;display:block}.kpi-card strong small{color:var(--muted);margin-left:4px;font-size:9px}.kpi-note{color:var(--muted);font-size:9px;display:block}.kpi-card .tone-ok{color:var(--accent)}.kpi-card .tone-warn{color:var(--warning)}.kpi-card .tone-danger{color:var(--danger)}.kpi-card .tone-info{color:var(--accent2)}.status-badge{border:1px solid var(--line);white-space:nowrap;border-radius:10px;padding:2px 8px;font-size:9px;font-style:normal;font-weight:800;display:inline-block}.status-badge.ok{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.status-badge.warn{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 40%,transparent)}.status-badge.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.status-badge.info{color:var(--accent2);border-color:color-mix(in srgb,var(--accent2) 40%,transparent)}.status-badge.muted{color:var(--muted)}.data-table{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:auto hidden}.data-table table{border-collapse:collapse;width:100%;font-size:11px}.data-table th{text-align:left;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--line);background:var(--surface2);white-space:nowrap;padding:10px 12px;font-size:9px}.data-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:11px 12px}.data-table tr:last-child td{border-bottom:0}.data-table tr.clickable{cursor:pointer}.data-table tr.clickable:hover td{background:color-mix(in srgb,var(--accent) 5%,transparent)}.data-table tr.active td{background:color-mix(in srgb,var(--accent) 10%,transparent)}.data-table .col-check{width:34px}.data-table .col-no{width:48px;color:var(--muted)}.data-table .col-actions{white-space:nowrap;width:1%}.data-table td.empty{text-align:center;color:var(--muted);padding:28px}.data-table td small{color:var(--muted);margin-top:2px;font-size:9px;display:block}.table-footer{color:var(--muted);border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 12px;font-size:10px;display:flex}.pager{align-items:center;gap:8px;display:flex}.pager button{border:1px solid var(--line);width:26px;height:26px;color:var(--text);background:0 0;border-radius:5px}.pager button:disabled{opacity:.4}.pager select{border:1px solid var(--line);background:var(--surface2);height:26px;color:var(--text);border-radius:5px;font-size:10px}.row-actions{gap:5px;display:flex}.row-actions button{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:5px;padding:4px 8px;font-size:9px}.row-actions button.danger{border-color:var(--danger);color:var(--danger)}.master-detail{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.master-detail.with-detail{grid-template-columns:minmax(0,1.6fr) minmax(300px,.9fr)}.master-detail .detail{align-self:start;position:sticky;top:92px}.detail-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.detail-head h3{margin:0;font-size:13px}.detail-head button{color:var(--muted);background:0 0;border:0;font-size:16px}.detail-grid{grid-template-columns:110px 1fr;gap:8px 12px;font-size:11px;display:grid}.detail-grid dt{color:var(--muted);font-size:10px}.detail-grid dd{margin:0}.quick-actions{margin-top:14px}.quick-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:8px;display:grid}.quick-grid button{text-align:left;background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:11px 12px}.quick-grid button:disabled{opacity:.45}.quick-grid strong{font-size:11px;display:block}.quick-grid small{color:var(--muted);margin-top:3px;font-size:9px;display:block}.workflow-stepper{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.workflow-stepper li{color:var(--muted);border:1px solid var(--line);border-radius:14px;align-items:center;gap:6px;padding:6px 10px;font-size:10px;display:flex}.workflow-stepper .step-index{background:var(--surface2);border-radius:50%;place-items:center;width:18px;height:18px;font-size:9px;display:grid}.workflow-stepper li.done{color:var(--accent)}.workflow-stepper li.done .step-index{background:var(--accent);color:#08110f}.workflow-stepper li.current{color:var(--text);border-color:var(--accent)}.workflow-stepper li.failed{color:var(--danger);border-color:var(--danger)}.donut{align-items:center;gap:14px;display:flex}.donut-center{fill:var(--text);font-size:14px;font-weight:800;font-family:var(--font-geist-mono),monospace}.donut-legend{gap:5px;margin:0;padding:0;font-size:10px;list-style:none;display:grid}.donut-legend li{align-items:center;gap:6px;display:flex}.donut-legend i{border-radius:2px;width:8px;height:8px}.donut-legend b{font-family:var(--font-geist-mono),monospace;margin-left:auto;padding-left:10px}.trend .axis-text{fill:var(--muted);font-size:9px}.trend .legend{color:var(--muted);gap:12px;margin-top:4px;font-size:9px;display:flex}.trend .legend i{vertical-align:middle;width:10px;height:3px;margin-right:5px;display:inline-block}.bar-rank{gap:8px;margin:0;padding:0;list-style:none;display:grid}.bar-rank li{grid-template-columns:20px 1.2fr 2fr auto;align-items:center;gap:10px;font-size:10px;display:grid}.bar-rank .rank{color:var(--muted);font-family:var(--font-geist-mono),monospace}.bar-rank .rank-label small{color:var(--muted);font-size:8px;display:block}.bar-rank .rank-bar{background:var(--line);border-radius:3px;height:6px;overflow:hidden}.bar-rank .rank-bar i{background:var(--accent);height:100%;display:block}.bar-rank b{font-family:var(--font-geist-mono),monospace}.bar-rank b small{color:var(--muted);margin-left:3px}@media (max-width:1100px){.kpi-row{grid-template-columns:repeat(3,minmax(0,1fr))}.master-detail.with-detail{grid-template-columns:1fr}.master-detail .detail{position:static}}@media (max-width:760px){.kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-actions{width:100%;margin-left:0}.data-table{overflow-x:auto}}.row-actions button:disabled{opacity:.45;cursor:not-allowed}
.login-screen{background:var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;gap:12px;width:min(440px,100%);padding:36px 34px;display:grid}.login-card .logo{align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.login-card .logo strong{letter-spacing:.08em;font-size:20px}.login-card .logo span{color:var(--muted);letter-spacing:.14em;font-size:11px}.login-card h1{margin:0;font-size:22px}.login-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.login-card .primary-btn{background:var(--accent);color:#08110f;border:0;border-radius:6px;height:42px;margin-top:6px;font-size:13px;font-weight:700}.login-card .primary-btn:disabled{opacity:.6}.login-card small{color:var(--muted);font-size:11px}.login-error{color:var(--danger);font-size:12px}.access-form{gap:12px;display:grid}.access-form h4{margin:6px 0 2px;font-size:14px}.access-grid{grid-template-columns:1fr 1fr;gap:12px 20px;display:grid}.access-grid label,.access-grid .field{gap:5px;margin:0;display:grid}.access-grid .wide{grid-column:1/-1}.access-grid label>span,.access-grid .field>span{font-size:11px;font-weight:650}.access-grid input,.access-grid select,.access-grid textarea{background:var(--surface2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:5px;padding:9px 11px;font-family:inherit;font-size:12px}.access-grid textarea{resize:vertical;min-height:64px}.check-list{flex-wrap:wrap;gap:6px 14px;padding:6px 0;display:flex}.check-list label{align-items:center;gap:6px;font-size:12px;display:inline-flex}.access-error{color:var(--danger);margin:4px 0;font-size:12px}.access-ok{color:var(--ok);margin:4px 0;font-size:12px}.secret-box{background:var(--surface2);border:1px dashed var(--line);border-radius:6px;padding:12px 14px;font-size:12px}.secret-box code{letter-spacing:.04em;-webkit-user-select:all;user-select:all;font-size:14px}.detail-list{grid-template-columns:auto 1fr;gap:8px 16px;margin:0;padding:0;font-size:12px;display:grid}.detail-list dt{color:var(--muted);font-weight:600}.detail-list dd{margin:0}.detail-actions{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.detail-actions button,.row-actions button{border:1px solid var(--line);height:30px;color:var(--text);background:0 0;border-radius:5px;padding:0 12px;font-size:11px}.detail-actions button.danger,.row-actions button.danger{color:var(--danger);border-color:var(--danger)}.detail-actions .primary-btn{background:var(--accent);color:#08110f;border-color:#0000}.perm-matrix{border:1px solid var(--line);border-radius:8px;overflow:auto}.perm-matrix table{border-collapse:collapse;width:100%;min-width:640px;font-size:12px}.perm-matrix th,.perm-matrix td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:7px 10px}.perm-matrix thead th{background:var(--surface2);z-index:1;position:sticky;top:0}.perm-matrix td.group{background:var(--surface2);font-weight:650}.perm-matrix td.item{padding-left:26px}.perm-matrix .cell{border:1px solid var(--line);border-radius:5px;display:inline-flex;overflow:hidden}.perm-matrix .cell button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:3px 7px;font-size:10px}.perm-matrix .cell button.on-ALLOW{background:var(--ok);color:#08110f}.perm-matrix .cell button.on-DENY{background:var(--danger);color:#fff}.perm-matrix .cell button.on-HIDE{background:var(--muted);color:#08110f}.perm-matrix .cell button:disabled{cursor:default;opacity:.55}.perm-legend{color:var(--muted);gap:14px;margin:8px 0;font-size:11px;display:flex}.perm-legend i{vertical-align:middle;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.perm-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;display:flex}.perm-toolbar select{background:var(--surface2);border:1px solid var(--line);color:var(--text);border-radius:5px;padding:6px 10px;font-size:12px}.perm-toolbar .spacer{flex:1}.step-list{gap:8px;margin:8px 0;display:grid}.step-row{grid-template-columns:auto 1fr 1fr 1fr auto;align-items:center;gap:8px;display:grid}.step-row .no{width:24px;font-size:12px;font-weight:700}.step-row select,.step-row input{background:var(--surface2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:5px;padding:7px 9px;font-size:12px}.audit-detail{font-family:var(--font-geist-mono,monospace);white-space:pre-wrap;background:var(--surface2);border-radius:6px;max-height:240px;padding:10px;font-size:11px;overflow:auto}.chips{flex-wrap:wrap;gap:6px;display:flex}.chips span{border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:11px}.tenant-picker{align-items:center;gap:8px;font-size:12px;display:flex}.tenant-picker select{background:var(--surface2);border:1px solid var(--line);color:var(--text);border-radius:5px;padding:6px 10px;font-size:12px}@media (max-width:760px){.access-grid{grid-template-columns:1fr}.step-row{grid-template-columns:auto 1fr}}.profile .logout-btn{border:1px solid var(--line);width:26px;height:26px;color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;margin-left:8px;font-size:12px}.profile .logout-btn:hover{color:var(--text)}
.dialog-layer{z-index:1000;font-family:inherit;position:fixed;inset:0}.dialog-backdrop{background:#02050a9e;place-items:center;padding:16px;animation:.12s ease-out dialog-fade;display:grid;position:fixed;inset:0}.dialog-layer.theme-light .dialog-backdrop{background:#14202f61}.dialog-panel{zoom:var(--ui-scale);width:420px;max-width:calc((100vw - 32px) / var(--ui-scale));max-height:calc((100vh - 32px) / var(--ui-scale));background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:18px 18px 14px;animation:.12s ease-out dialog-in;overflow:auto;box-shadow:0 18px 60px #00000073}.dialog-layer.theme-light .dialog-panel{box-shadow:0 18px 50px #14202f2e}.dialog-panel[role=dialog]{width:480px}.dialog-head{flex-direction:column;gap:4px;display:flex}.dialog-kicker{letter-spacing:.04em;color:var(--muted);font-size:10px;font-weight:700}.dialog-panel.is-danger .dialog-kicker{color:var(--danger)}.dialog-head h2{text-wrap:balance;margin:0;font-size:14px;font-weight:800;line-height:1.35}.dialog-body{color:var(--text);opacity:.86;white-space:pre-line;word-break:keep-all;margin-top:8px;font-size:12px;line-height:1.65}.dialog-field{color:var(--muted);flex-direction:column;gap:5px;margin-top:12px;font-size:11px;display:flex}.dialog-field input{background:var(--surface2);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:9px 10px;font-family:inherit;font-size:12px}.dialog-field input:focus{border-color:var(--accent2);outline:none}.dialog-field input[aria-invalid=true]{border-color:var(--danger)}.dialog-field small{color:var(--danger);font-size:11px}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-top:16px;display:flex}.dialog-actions button{border:1px solid var(--line);min-width:64px;height:32px;color:var(--text);cursor:pointer;background:0 0;border-radius:6px;padding:0 14px;font-family:inherit;font-size:11.5px;font-weight:700}.dialog-actions button:hover{background:var(--surface2)}.dialog-actions .dialog-primary{background:var(--accent);color:#08110f;border-color:#0000}.dialog-actions .dialog-primary:hover{background:var(--accent);filter:brightness(1.06)}.dialog-panel.is-danger .dialog-primary{background:var(--danger);color:#fff}.dialog-actions button:focus-visible,.dialog-field input:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}.dialog-layer.concept-grid .dialog-panel{border-radius:3px}.dialog-layer.concept-grid .dialog-actions button{border-radius:2px}.dialog-layer.concept-twin .dialog-panel,.dialog-layer.concept-twin .dialog-actions button{border-radius:18px}@keyframes dialog-fade{0%{opacity:0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.dialog-backdrop,.dialog-panel{animation:none}}
.hero-grid{border-bottom:1px solid var(--line);grid-template-columns:45% 55%;min-height:322px;display:grid;position:relative;overflow:hidden}.hero-grid:before{content:"";background:radial-gradient(circle at 78% 50%,color-mix(in srgb,var(--accent2) 16%,transparent),transparent 34%),linear-gradient(90deg,transparent 49%,var(--line) 50%,transparent 50.2%);pointer-events:none;position:absolute;inset:0}.hero-copy{z-index:2;padding:48px 36px 25px 6vw;position:relative}.hero-copy h2{letter-spacing:-2.3px;margin:14px 0 10px;font-size:41px;line-height:1.04}.hero-copy h2 em{color:var(--accent);font-style:normal}.hero-copy>p{color:var(--muted);font-size:11px}.hero-metrics{gap:42px;margin-top:31px;display:flex}.hero-metrics>div{position:relative}.hero-metrics>div+div:before{content:"";border-left:1px solid var(--line);height:46px;position:absolute;left:-21px}.hero-metrics small,.hero-metrics span{color:var(--muted);margin-bottom:5px;font-size:8px;display:block}.hero-metrics strong{font-size:23px;font-family:var(--font-geist-mono)}.hero-metrics strong em{color:var(--muted);font-size:9px;font-style:normal}.hero-metrics span{margin:5px 0 0}.up,.ok{color:var(--accent)!important}.danger{color:var(--danger)!important}.watch{color:var(--warning)!important}.twin-stage{min-height:320px;position:relative}.scan-ring{border:1px solid color-mix(in srgb,var(--accent2) 22%,transparent);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.r1{width:130px;height:130px}.r2{border-style:dashed;width:218px;height:218px;animation:30s linear infinite spin}.r3{opacity:.35;width:310px;height:310px}.core{background:radial-gradient(circle,color-mix(in srgb,var(--accent2) 25%,var(--surface)),var(--surface));border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);text-align:center;width:106px;height:106px;box-shadow:0 0 40px color-mix(in srgb,var(--accent2) 16%,transparent);border-radius:50%;place-content:center;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.core:before{content:"";border:1px dashed color-mix(in srgb,var(--accent) 35%,transparent);border-radius:50%;animation:15s linear infinite reverse spin;position:absolute;inset:8px}.core span{font-size:23px;font-family:var(--font-geist-mono);font-weight:700}.core small{color:var(--accent);letter-spacing:1.2px;font-size:7px}.energy-node{background:color-mix(in srgb,var(--surface) 86%,transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:7px;min-width:104px;padding:9px;position:absolute;box-shadow:0 8px 25px #0000001f}.energy-node b{float:left;border:1px solid var(--line);width:26px;height:26px;color:var(--accent);border-radius:5px;place-items:center;margin-right:8px;display:grid}.energy-node span,.energy-node strong{font-size:8px;display:block}.energy-node strong{margin-top:3px;font-size:10px}.energy-node.solar{top:20%;left:12%}.energy-node.wind{top:26%;right:9%}.energy-node.orc{bottom:15%;right:17%}.flow-line{background:linear-gradient(90deg,transparent,var(--accent),transparent);transform-origin:0;height:1px;position:absolute}.f1{width:155px;top:30%;left:26%;transform:rotate(22deg)}.f2{width:150px;top:45%;left:58%;transform:rotate(-12deg)}.f3{width:125px;top:61%;left:57%;transform:rotate(24deg)}@keyframes spin{to{transform:translate(-50%,-50%)rotate(360deg)}}.kpi-strip{border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}.kpi{border-right:1px solid var(--line);height:112px;padding:18px 20px;position:relative;overflow:hidden}.kpi:last-child{border-right:0}.kpi-top{color:var(--muted);justify-content:space-between;font-size:8px;display:flex}.kpi-top b{color:var(--accent);font-size:8px}.kpi>strong{font-size:21px;font-family:var(--font-geist-mono);margin-top:12px;display:block}.kpi>strong small{color:var(--muted);font-size:8px}.mini-chart{align-items:end;gap:3px;height:48px;display:flex;position:absolute;bottom:0;left:50%;right:10px}.mini-chart i{border-top:1px solid var(--accent);background:linear-gradient(var(--accent),transparent);flex:1;display:block;transform:skewY(-8deg)}.mini-chart i.green{border-color:var(--accent);background:linear-gradient(var(--accent),transparent)}.mini-chart i.purple{border-color:var(--purple);background:linear-gradient(var(--purple),transparent)}.mini-chart i.cyan{border-color:var(--cyan);background:linear-gradient(var(--cyan),transparent)}.mini-chart.bars i{background:var(--purple);border:0;border-radius:2px 2px 0 0;transform:none}.dashboard-grid{grid-template-columns:1.45fr 1fr;gap:14px;padding:22px 30px 30px;display:grid}.fleet-map,.ai-panel{min-height:340px}.generation-chart{min-height:265px}.map-area{background:radial-gradient(ellipse at center,color-mix(in srgb,var(--accent2) 11%,transparent),transparent 60%);border:1px solid var(--line);height:230px;margin-top:17px;position:relative;overflow:hidden}.map-area:before{content:"";border:1px solid color-mix(in srgb,var(--accent2) 35%,transparent);background:color-mix(in srgb,var(--accent2) 5%,transparent);clip-path:polygon(46% 0,68% 8%,78% 27%,70% 42%,86% 60%,67% 68%,58% 100%,34% 87%,25% 67%,9% 53%,25% 34%,20% 18%);width:170px;height:205px;position:absolute;top:10px;left:47%;transform:translate(-50%)rotate(-4deg)}.map-grid{background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);opacity:.3;background-size:36px 36px;position:absolute;inset:0}.map-label{letter-spacing:1px;color:var(--muted);font-size:7px;position:absolute}.map-label.seoul{top:26%;left:44%}.map-label.jeju{bottom:8%;left:38%}.map-label.ulsan{top:61%;right:29%}.site-dot{position:absolute}.site-dot i{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 13%,transparent),0 0 15px var(--accent);border-radius:50%;display:block}.site-dot.warning i{background:var(--warning);box-shadow:0 0 0 5px color-mix(in srgb,var(--warning) 15%,transparent),0 0 15px var(--warning)}.site-dot b,.site-dot small{white-space:nowrap;font-size:8px;position:absolute;top:-4px;left:14px}.site-dot small{color:var(--muted);font-family:var(--font-geist-mono);top:8px}.d1{bottom:26%;left:42%}.d2{bottom:10%;left:36%}.d3{bottom:31%;right:29%}.d4{top:22%;right:37%}.map-legend{height:35px;color:var(--muted);align-items:end;gap:15px;font-size:8px;display:flex}.map-legend span{align-items:center;gap:5px;display:flex}.map-legend i{background:var(--accent);border-radius:50%;width:5px;height:5px}.map-legend i.warning{background:var(--warning)}.map-legend i.danger{background:var(--danger)}.map-legend b{color:var(--text);margin-left:auto}.ai-panel:before{content:"";background:radial-gradient(circle,color-mix(in srgb,var(--purple) 16%,transparent),transparent 68%);width:200px;height:200px;position:absolute;top:-80px;right:-80px}.ai-score{border-bottom:1px solid var(--line);align-items:center;gap:18px;padding:17px 0;display:flex}.ring-wrap{text-align:center}.ring{--value:300deg;background:conic-gradient(var(--accent) var(--value),var(--line) 0);border-radius:50%;place-items:center;width:75px;height:75px;display:grid;position:relative}.ring:before{content:"";background:var(--surface);border-radius:50%;position:absolute;inset:6px}.ring span{font-size:17px;font-weight:800;position:relative}.ring span small{font-size:8px}.ring-wrap p{display:none}.ai-score>div:last-child strong{font-size:13px}.ai-score>div:last-child p{color:var(--muted);margin:5px 0 8px;font-size:9px}.ai-score>div:last-child span{color:var(--muted);font-size:8px}.risk-item{grid-template-columns:27px 1fr auto;align-items:start;gap:9px;padding:14px 0;display:grid}.risk-icon{border:1px solid color-mix(in srgb,var(--danger) 45%,transparent);width:25px;height:25px;color:var(--danger);background:color-mix(in srgb,var(--danger) 9%,transparent);border-radius:5px;place-items:center;font-weight:900;display:grid}.risk-item small{color:var(--danger);letter-spacing:.8px;font-size:7px;display:block}.risk-item strong{font-size:10px}.risk-item p{color:var(--muted);margin:3px 0;font-size:8px}.risk-item button{color:var(--accent);background:0 0;border:0;align-self:center;font-size:8px}.recommend{background:color-mix(in srgb,var(--purple) 8%,transparent);border:1px solid color-mix(in srgb,var(--purple) 18%,transparent);border-radius:6px;padding:10px}.recommend span{color:var(--purple);font-size:8px;font-weight:800}.recommend p{color:var(--muted);margin:4px 0 0;font-size:8px;line-height:1.55}.recommend b{color:var(--text)}.legend{color:var(--muted);gap:12px;font-size:8px;display:flex}.legend span{align-items:center;gap:5px;display:flex}.legend i{background:var(--accent);width:12px;height:2px}.legend .forecast{background:var(--purple)}.big-chart{border-left:1px solid var(--line);border-bottom:1px solid var(--line);background:repeating-linear-gradient(0deg,transparent,transparent 44px,var(--line) 45px);height:190px;margin:20px 8px 0 35px;position:relative}.y-labels{color:var(--muted);flex-direction:column;justify-content:space-between;font-size:7px;display:flex;position:absolute;top:-4px;bottom:0;left:-35px}.chart-lines{align-items:end;gap:3px;height:100%;padding:0 5px;display:flex;position:relative}.chart-lines i{background:linear-gradient(var(--accent),color-mix(in srgb,var(--accent) 7%,transparent));border-radius:2px 2px 0 0;flex:1;min-width:2px;position:relative}.chart-lines i b{background:var(--purple);border-radius:2px;height:2px;position:absolute;left:0;right:0}.x-labels{color:var(--muted);justify-content:space-between;font-size:7px;display:flex;position:absolute;bottom:-16px;left:0;right:0}.alerts-panel .alert-row{border-bottom:1px solid var(--line);grid-template-columns:5px 34px 1fr 10px;align-items:center;gap:8px;padding:13px 0;display:grid}.alerts-panel .alert-row:last-child{border:0}.alert-row>i{background:var(--cyan);width:5px;height:5px;box-shadow:0 0 7px var(--cyan);border-radius:50%}.alert-row>i.critical{background:var(--danger);box-shadow:0 0 7px var(--danger)}.alert-row>i.warning{background:var(--warning);box-shadow:0 0 7px var(--warning)}.alert-row time{color:var(--muted);font-size:8px;font-family:var(--font-geist-mono)}.alert-row strong,.alert-row span{font-size:9px;display:block}.alert-row span{color:var(--muted);margin-top:3px;font-size:7px}.alert-row>b{color:var(--muted)}.text-btn{color:var(--accent)!important;border:0!important}.measurements-panel{grid-column:1/-1}.dashboard-grid .panel.alarms-panel{min-height:auto}.live-badge{color:var(--accent);border:1px solid var(--line);white-space:nowrap;border-radius:12px;padding:5px 9px;font-size:8px}.measurements-empty{color:var(--muted);margin:18px 0 4px;font-size:10px;line-height:1.7}.measurements-table{margin-top:10px}.measurements-row{border-top:1px solid var(--line);grid-template-columns:1.1fr 1.6fr 1fr 1fr .6fr;align-items:center;gap:10px;padding:10px 0;font-size:10px;display:grid}.measurements-row.head{color:var(--muted);letter-spacing:.6px;border-top:0;font-size:8px}.measurements-row time{font-family:var(--font-geist-mono),monospace;color:var(--muted)}.measurements-row b{font-size:10px;display:block}.measurements-row small{color:var(--muted);margin-top:2px;font-size:8px;display:block}.measurements-row .value{font-family:var(--font-geist-mono),monospace;font-size:12px}.measurements-row .value small{color:var(--muted);margin:0;font-size:8px;display:inline}.measurements-row em{font-size:8px;font-style:normal;font-weight:800}.measurements-row em.good{color:var(--accent)}.measurements-row em.uncertain{color:var(--warning)}.measurements-row em.bad{color:var(--danger)}.kpi .real-tag{color:var(--accent);border:1px solid var(--accent);vertical-align:middle;border-radius:3px;margin-left:6px;padding:1px 4px;font-size:7px}
.summary-cards{grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:14px;display:grid}.summary-cards>div{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px}.summary-cards span,.summary-cards small{color:var(--muted);font-size:9px;display:block}.summary-cards strong{font-size:24px;font-family:var(--font-geist-mono);margin:10px 0 6px;display:block}.summary-cards em{font-size:9px;font-style:normal}.asset-table-panel{padding:0}.table-tools{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:13px 16px;display:flex}.tabs{gap:5px;display:flex}.tabs button{border:0}.tabs button.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.table-tools>div:last-child{gap:6px;display:flex}.asset-table{overflow-x:auto}.table-row{border:0;border-bottom:1px solid var(--line);width:100%;min-width:850px;color:var(--text);text-align:left;background:0 0;grid-template-columns:2fr repeat(5,1fr) 20px;align-items:center;gap:12px;padding:12px 17px;font-size:10px;display:grid}.table-row:not(.table-head):hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}.table-head{color:var(--muted);padding-top:9px;padding-bottom:9px;font-size:8px}.asset-name{align-items:center;gap:10px;display:flex}.asset-name>i{background:var(--surface2);border:1px solid var(--line);width:34px;height:34px;color:var(--accent);border-radius:7px;place-items:center;font-size:16px;display:grid}.asset-name b,.asset-name small{display:block}.asset-name small{color:var(--muted);margin-top:3px;font-size:8px}.health-cell{align-items:center;gap:7px;display:flex!important}.health-cell>i{background:var(--line);width:45px;height:3px}.health-cell>i b{background:var(--accent);height:100%;display:block}.table-row em,.status-badge{background:var(--surface2);border-radius:9px;padding:4px 7px;font-size:8px;font-style:normal}.table-row em.ok{background:color-mix(in srgb,var(--accent) 10%,transparent)}.table-row em.watch,.status-badge.watch{background:color-mix(in srgb,var(--warning) 12%,transparent)}.table-row em.danger{background:color-mix(in srgb,var(--danger) 12%,transparent)}
.monitor-layout{grid-template-columns:1.5fr .8fr;gap:14px;display:grid}.turbine-twin{min-height:490px}.turbine-scene{background:radial-gradient(circle at 50% 62%,color-mix(in srgb,var(--accent2) 13%,transparent),transparent 44%),linear-gradient(var(--surface2),var(--surface));border:1px solid var(--line);height:383px;margin-top:15px;position:relative;overflow:hidden}.turbine-scene:after{content:"";border-top:1px solid color-mix(in srgb,var(--accent) 20%,transparent);box-shadow:0 20px 45px color-mix(in srgb,var(--accent2) 16%,transparent);position:absolute;bottom:18%;left:0;right:0}.wind-lines i{background:linear-gradient(90deg,transparent,var(--cyan),transparent);opacity:.5;width:26%;height:1px;position:absolute;left:9%}.wind-lines i:first-child{top:22%}.wind-lines i:nth-child(2){width:34%;top:34%;left:4%}.wind-lines i:nth-child(3){width:21%;top:47%;left:11%}.turbine{z-index:2;background:linear-gradient(90deg,#586777,#d8e0e7,#657383);width:10px;height:210px;position:absolute;bottom:17%;left:50%;transform:perspective(300px)rotateX(-4deg)}.turbine>b{background:#b9c7d2;border-radius:13px 6px 6px 13px;width:36px;height:27px;position:absolute;top:-13px;left:-13px}.turbine>i{background:var(--accent2);z-index:3;width:23px;height:23px;box-shadow:0 0 15px var(--accent2);border:5px solid #c7d1da;border-radius:50%;position:absolute;top:-10px;left:-7px}.blade{transform-origin:2px 2px;z-index:2;background:linear-gradient(#d9e3e8,#7e8e98);border-radius:100% 20% 20% 100%;width:5px;height:105px;position:absolute;top:-1px;left:3px}.blade.b1{transform:rotate(15deg)}.blade.b2{transform:rotate(135deg)}.blade.b3{transform:rotate(255deg)}.sensor-tag{border-left:2px solid var(--accent);background:color-mix(in srgb,var(--surface) 88%,transparent);z-index:4;min-width:95px;padding:7px 9px;position:absolute}.sensor-tag span,.sensor-tag b,.sensor-tag small{font-size:7px;display:block}.sensor-tag span{color:var(--accent);letter-spacing:1px}.sensor-tag b{margin:3px 0;font-size:12px}.sensor-tag small{color:var(--muted)}.tag1{top:22%;right:14%}.tag2{border-color:var(--warning);top:50%;right:8%}.tag2 span{color:var(--warning)}.tag3{top:31%;left:12%}.twin-controls{justify-content:center;gap:4px;margin-top:10px;display:flex}.twin-controls button{border:1px solid var(--line);background:var(--surface2);color:var(--muted);border-radius:4px;padding:6px 9px;font-size:8px}.monitor-side{flex-direction:column;gap:14px;display:flex}.health-large{justify-content:center;align-items:center;gap:24px;margin-top:18px;display:flex}.health-large .ring{width:90px;height:90px}.health-large>div:last-child span,.health-large>div:last-child p{color:var(--muted);font-size:8px}.health-large>div:last-child strong{font-size:23px;font-family:var(--font-geist-mono);margin:7px 0;display:block}.health-large>div:last-child strong small{font-size:8px}.sensor-list{flex:1}.sensor-list .panel-head{align-items:center;margin-bottom:8px}.sensor-list .panel-head button{color:var(--accent);border:0}.sensor-list>div:not(.panel-head){border-top:1px solid var(--line);grid-template-columns:1fr auto 25px;align-items:center;padding:13px 0;display:grid}.sensor-list span{color:var(--muted);font-size:8px}.sensor-list strong{font-size:11px;font-family:var(--font-geist-mono)}.sensor-list strong small{color:var(--muted);font-size:7px}.sensor-list i{color:var(--accent);text-align:right}.sensor-list i.up{color:var(--warning)}.sensor-trend{grid-column:1/-1}.big-chart.detailed{height:190px}.threshold{border-top:1px dashed var(--danger);color:var(--danger);z-index:3;padding-top:3px;font-size:7px;position:absolute;top:28%;left:0;right:0}
.prediction-grid{grid-template-columns:1.5fr .75fr;gap:14px;display:grid}.forecast-main{min-height:390px}.confidence{text-align:right}.confidence small,.confidence strong{color:var(--muted);font-size:8px;display:block}.confidence strong{color:var(--accent);font-size:14px}.forecast-number{margin-top:28px}.forecast-number strong,.forecast-number span{display:block}.forecast-number strong{font-size:28px;font-family:var(--font-geist-mono)}.forecast-number strong small{color:var(--muted);font-size:10px}.forecast-number span{color:var(--muted);margin-top:4px;font-size:8px}.forecast-bars{border-bottom:1px solid var(--line);background:repeating-linear-gradient(0deg,transparent,transparent 46px,var(--line) 47px);align-items:end;gap:5px;height:190px;margin-top:17px;display:flex}.forecast-bars i{background:color-mix(in srgb,var(--accent2) 45%,transparent);border-radius:2px 2px 0 0;flex:1}.forecast-bars i.highlight{background:linear-gradient(var(--accent),color-mix(in srgb,var(--accent) 25%,transparent));box-shadow:0 0 9px color-mix(in srgb,var(--accent) 25%,transparent)}.weather-row{text-align:center;color:var(--muted);grid-template-columns:repeat(3,1fr);margin-top:10px;font-size:8px;display:grid}.weather-row b{color:var(--text)}.model-card h3{margin:5px 0 17px;font-size:14px}.model-score{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding-bottom:14px;display:flex}.model-score>strong{color:var(--accent);font-size:34px;font-family:var(--font-geist-mono)}.model-score>strong small{font-size:13px}.model-score span{color:var(--muted);font-size:8px}.model-score span b{color:var(--accent)}.metric-lines{margin:14px 0}.metric-lines>div{grid-template-columns:1fr auto;gap:5px;margin:11px 0;font-size:8px;display:grid}.metric-lines i{background:var(--line);grid-column:1/-1;height:3px}.metric-lines em{background:var(--accent);height:100%;display:block}.model-card>small{color:var(--muted);font-size:7px}.scenario-card p{color:var(--muted);margin:25px 0 15px;font-size:9px}.scenario-flow{justify-content:space-between;align-items:center;display:flex}.scenario-flow>div{background:var(--surface2);border:1px solid var(--line);flex:1;padding:12px}.scenario-flow span,.scenario-flow strong{font-size:8px;display:block}.scenario-flow strong{margin-top:5px;font-size:13px}.scenario-flow>i{color:var(--accent);padding:8px}.impact{justify-content:space-between;padding:12px 0;font-size:9px;display:flex}.impact span{color:var(--muted)}.impact b,.impact strong{color:var(--danger)}.scenario-card .outline-btn{width:100%}.anomaly-card{grid-column:1/-1}.anomaly-row{border-top:1px solid var(--line);grid-template-columns:30px 1.1fr 1.7fr 60px;align-items:center;gap:12px;padding:13px 0;display:grid}.anomaly-row>span{background:var(--surface2);width:28px;height:28px;color:var(--accent);border-radius:5px;place-items:center;display:grid}.anomaly-row strong,.anomaly-row small{font-size:9px;display:block}.anomaly-row small{color:var(--muted);margin-top:3px;font-size:7px}.anomaly-dots{gap:4px;display:flex}.anomaly-dots i{background:color-mix(in srgb,var(--accent) 16%,transparent);border-bottom:2px solid var(--accent);flex:1;height:18px}.anomaly-dots i.hot{background:color-mix(in srgb,var(--danger) 30%,transparent);border-color:var(--danger)}.anomaly-row>b{text-align:right;font-size:8px}
.maintenance-top{grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:14px;display:grid}.maintenance-top .panel span,.maintenance-top .panel small{color:var(--muted);font-size:8px;display:block}.maintenance-top .panel strong{margin:9px 0 5px;font-size:25px;display:block}.maintenance-top .panel em{font-size:10px;font-style:normal}.maintenance-grid{grid-template-columns:1.35fr .75fr;gap:14px;display:grid}.risk-row{border-top:1px solid var(--line);grid-template-columns:32px 1fr 70px 60px 45px;align-items:center;gap:11px;padding:15px 0;display:grid}.risk-row>span{border-radius:50%;place-items:center;width:28px;height:28px;font-size:8px;font-weight:850;display:grid}.risk-row .p1{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.risk-row .p2{background:color-mix(in srgb,var(--warning) 15%,transparent);color:var(--warning)}.risk-row strong,.risk-row small,.risk-row b{font-size:9px;display:block}.risk-row small{color:var(--muted);margin-top:3px;font-size:7px}.risk-row button{color:var(--accent);background:0 0;border:0;font-size:8px}.calendar-head{justify-content:space-between;align-items:center;margin:17px 0 12px;display:flex}.calendar-head button{color:var(--muted);background:0 0;border:0}.calendar-head strong{font-size:10px}.calendar-week,.calendar-days{text-align:center;grid-template-columns:repeat(7,1fr);display:grid}.calendar-week{color:var(--muted);margin-bottom:7px;font-size:7px}.calendar-days span{place-items:center;height:34px;font-size:8px;display:grid;position:relative}.calendar-days .today{border:1px solid var(--accent);color:var(--accent);border-radius:50%}.calendar-days .recommended{background:color-mix(in srgb,var(--purple) 15%,transparent);color:var(--purple);border-radius:50%}.calendar-days .planned:after{content:"";background:var(--accent);border-radius:50%;width:4px;height:4px;position:absolute;bottom:3px}.calendar-days span i{background:var(--purple);color:#fff;border-radius:5px;padding:1px 2px;font-size:5px;position:absolute;top:0;right:0}.schedule-note{background:color-mix(in srgb,var(--purple) 8%,transparent);border:1px solid color-mix(in srgb,var(--purple) 20%,transparent);border-radius:5px;gap:9px;margin-top:13px;padding:10px;display:flex}.schedule-note>span{color:var(--purple)}.schedule-note strong,.schedule-note p{margin:0;font-size:8px;display:block}.schedule-note p{color:var(--muted);margin-top:3px;font-size:7px}.workorders{grid-column:1/-1}.work-row{border-top:1px solid var(--line);grid-template-columns:105px 1fr 70px 60px 55px 20px;align-items:center;gap:10px;padding:12px 0;font-size:9px;display:grid}.work-row>b{font-family:var(--font-geist-mono);color:var(--muted);font-size:8px}.work-row span,.work-row time{font-size:8px}.work-row span.progress,.work-row span.watch,.work-row span.neutral{background:color-mix(in srgb,var(--accent) 10%,transparent);width:max-content;color:var(--accent);border-radius:8px;padding:4px 7px}.work-row span.watch{background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--warning)}.work-row span.neutral{color:var(--muted);background:var(--surface2)}.work-row button{color:var(--muted);background:0 0;border:0}
.event-summary{grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px;display:grid}.event-summary button{background:var(--surface);border:1px solid var(--line);color:var(--text);text-align:left;border-radius:7px;padding:13px}.event-summary button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.event-summary span,.event-summary strong{color:var(--muted);font-size:8px;display:block}.event-summary strong{color:var(--text);margin-top:6px;font-size:20px}.event-list{padding:0 16px}.event-list .table-tools{margin:0 -16px}.event-row{border-bottom:1px solid var(--line);grid-template-columns:45px 44px 1fr 60px 52px;align-items:center;gap:13px;padding:14px 0;display:grid}.event-level{text-align:center;background:var(--surface2);border-radius:9px;padding:5px 7px;font-size:8px}.event-level.critical{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.event-level.warning{color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,transparent)}.event-level.info{color:var(--cyan);background:color-mix(in srgb,var(--cyan) 12%,transparent)}.event-row time{color:var(--muted);font-size:7px}.event-row time b{color:var(--text)}.event-main strong,.event-main span,.event-main p{font-size:9px;display:block}.event-main span{color:var(--muted);margin-top:3px;font-size:8px}.event-main p{color:var(--muted);margin:3px 0 0;font-size:7px}.event-row>span.unread,.event-row>span.assigned{color:var(--danger);font-size:8px}.event-row>span.assigned{color:var(--muted)}.event-row .outline-btn{height:28px;padding:0}
.settings-layout{grid-template-columns:205px minmax(0,760px);gap:16px;display:grid}.settings-nav{flex-direction:column;gap:3px;display:flex}.settings-nav button{text-align:left;border:0;height:40px}.settings-nav button.active{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)}.settings-form{padding:26px}.settings-form>p{color:var(--muted);font-size:11px}.settings-form hr{border:0;border-top:1px solid var(--line);margin:22px 0}.settings-form label,.settings-form .field{grid-template-columns:1fr 1.4fr;align-items:center;gap:25px;margin:17px 0;display:grid}.settings-form label>span,.settings-form .field>span{font-size:12px;font-weight:650}.settings-form label small,.settings-form .field small{color:var(--muted);margin-top:5px;font-size:10px;font-weight:400;display:block}.settings-form input,.settings-form select{border:1px solid var(--line);background:var(--surface2);width:100%;height:36px;color:var(--text);border-radius:5px;padding:0 12px;font-size:12px}.settings-form h4{font-size:14px}.segmented{border:1px solid var(--line);border-radius:5px;padding:3px;display:flex}.segmented button{color:var(--muted);background:0 0;border:0;border-radius:3px;flex:1;height:30px;font-size:11px}.segmented button.active{background:var(--text);color:var(--bg)}.toggle-row{justify-content:space-between;align-items:center;font-size:11px;display:flex}.switch{background:var(--muted);border:0;border-radius:10px;width:35px;height:20px;padding:2px}.switch i{background:#fff;border-radius:50%;width:16px;height:16px;transition:all .2s;display:block}.switch.on{background:var(--accent)}.switch.on i{margin-left:15px}.form-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:7px;margin:24px -26px -26px;padding:16px 26px;display:flex}.form-actions>button{border:1px solid var(--line);height:34px;color:var(--text);background:0 0;border-radius:5px;padding:0 16px;font-size:11px}.form-actions .primary-btn{background:var(--accent);color:#08110f}.device-empty{color:var(--muted);margin:14px 0 0;font-size:11px;line-height:1.7}.device-error{border:1px solid var(--danger);color:var(--danger);border-radius:6px;margin:12px 0 0;padding:9px 12px;font-size:11px}.device-notice{border:1px solid var(--accent);color:var(--text);border-radius:6px;margin:12px 0 0;padding:9px 12px;font-size:11px}.device-table{margin-top:12px}.device-row{border-top:1px solid var(--line);grid-template-columns:1.6fr 1fr 1fr .5fr .5fr 1.5fr;align-items:center;gap:10px;padding:11px 0;font-size:11px;display:grid}.device-row.head{color:var(--muted);letter-spacing:.6px;border-top:0;font-size:9px}.device-row.inactive{opacity:.6}.device-row b{font-size:12px;display:block}.device-row small{color:var(--muted);word-break:break-all;margin-top:2px;font-size:10px;display:block}.device-row em{font-size:10px;font-style:normal;font-weight:800}.device-row em.ok{color:var(--accent)}.device-row em.off{color:var(--muted)}.device-actions{flex-wrap:wrap;gap:5px;display:flex}.device-actions button.danger{border-color:var(--danger);color:var(--danger)}.device-actions button{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:5px;padding:6px 9px;font-size:10px}.device-form h4{margin:16px 0 6px;font-size:14px}.device-form-grid{grid-template-columns:1fr 1fr;gap:12px 20px;margin:12px 0;display:grid}.device-form-grid label{gap:5px;margin:0;display:grid}.device-form-grid label.wide{grid-column:1/-1}.device-form-grid label>span{font-size:11px;font-weight:650}.device-form-grid input,.device-form-grid select{background:var(--surface2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:5px;padding:9px 11px;font-size:12px}.issued-key{border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-radius:8px;margin:14px 0;padding:14px}.issued-key strong{margin-bottom:8px;font-size:12px;display:block}.issued-key code{font-family:var(--font-geist-mono),monospace;word-break:break-all;background:var(--surface2);-webkit-user-select:all;user-select:all;border-radius:5px;padding:9px 11px;font-size:12px;display:block}.issued-key p{color:var(--muted);margin:9px 0;font-size:11px;line-height:1.7}.settings-single{width:100%}.device-status{border-bottom:1px solid var(--line);background:var(--surface2);padding:8px 12px 14px}.device-status .detail-list{margin:0}.issued-key.enrollment .enroll-code{font-family:var(--font-geist-mono),monospace;letter-spacing:6px;-webkit-user-select:all;user-select:all;margin:4px 0 2px;font-size:30px;font-weight:700}.issued-key.enrollment .enroll-meta{color:var(--muted);margin:0 0 10px;font-size:11px}.issued-key.enrollment .enroll-warn{color:var(--warning);font-size:11px}.issued-key.enrollment .enroll-hint{color:var(--muted);font-size:11px}
.ctl-dialog-backdrop{z-index:50;background:#0000008c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.ctl-dialog{background:var(--surface);border:1px solid var(--line);border-radius:10px;gap:12px;width:min(520px,100%);padding:24px;display:grid}.ctl-dialog h3{margin:0;font-size:16px}.ctl-dialog p{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.ctl-dialog label{gap:5px;font-size:11px;font-weight:650;display:grid}.ctl-dialog input,.ctl-dialog select,.ctl-dialog textarea{background:var(--surface2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:5px;padding:9px 11px;font-family:inherit;font-size:12px}.ctl-dialog textarea{resize:vertical;min-height:70px}.ctl-dialog small{color:var(--muted);font-size:11px}.ctl-buttons{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin:8px 0;display:grid}.ctl-btn{border:1px solid var(--line);background:var(--surface2);color:var(--text);text-align:left;cursor:pointer;border-radius:8px;gap:4px;padding:12px 10px;display:grid}.ctl-btn:hover:not(:disabled){border-color:var(--accent)}.ctl-btn:disabled{opacity:.45;cursor:not-allowed}.ctl-btn strong{font-size:13px}.ctl-btn small{color:var(--muted);font-size:10px}.ctl-btn.cmd-RUN{border-left:3px solid var(--ok)}.ctl-btn.cmd-STOP{border-left:3px solid var(--danger)}.ctl-btn.cmd-PAUSE{border-left:3px solid var(--warning)}.ctl-btn.cmd-RESET,.ctl-btn.cmd-SET_MODE,.ctl-btn.cmd-SET_VALUE,.ctl-btn.cmd-CONFIG{border-left:3px solid var(--accent2)}.ctl-btn em{font-style:normal;font-weight:650}.ctl-btn em.risk-HIGH{color:var(--danger)}.ctl-btn em.risk-MEDIUM{color:var(--warning)}.ctl-btn em.risk-LOW{color:var(--ok)}.step-row.seq{grid-template-columns:auto 1.2fr 1.4fr .8fr auto .6fr .6fr auto}.perm-matrix tr.active td{background:var(--surface2)}@media (max-width:760px){.step-row.seq{grid-template-columns:auto 1fr}}.flow-diagram{align-items:stretch;gap:6px;padding:6px 0;display:flex;overflow-x:auto}.flow-node{background:var(--surface2);border:1px solid var(--line);border-radius:8px;flex:150px;align-content:start;gap:5px;min-width:150px;padding:14px 12px;display:grid}.flow-node>span{color:var(--muted);font-size:11px;font-weight:650}.flow-node>strong{font-size:19px}.flow-node>strong em{color:var(--muted);margin-left:2px;font-size:11px;font-style:normal}.flow-node>small{color:var(--muted);font-size:10px}.flow-arrow{color:var(--accent);flex:0 0 92px;align-content:center;justify-items:center;gap:2px;display:grid}.flow-arrow small{color:var(--muted);font-size:10px}.flow-arrow span{font-size:20px;line-height:1}.flow-arrow b{font-size:11px}.flow-arrow.out{color:var(--warning)}.flow-arrow.idle{color:var(--muted);opacity:.5}.ring-row{flex-wrap:wrap;gap:18px;display:flex}@media (max-width:1100px){.flow-diagram{flex-wrap:wrap}.flow-arrow{flex-basis:60px}}
.wiring-tabs{border-bottom:1px solid var(--line);gap:2px;display:flex;overflow-x:auto}.wiring-tabs button{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;align-items:center;gap:8px;padding:8px 14px 9px;display:flex}.wiring-tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent2);font-weight:600}.wiring-tabs .count{font-family:var(--font-geist-mono),monospace;color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent);border-radius:4px;padding:0 5px;font-size:11px}.wiring-work{grid-template-columns:minmax(0,1fr) 330px;align-items:start;gap:14px;display:grid}.wiring-empty{color:var(--muted);margin:8px 0;font-size:12px}.wiring-board{border:1px solid var(--line);background-color:var(--surface2);background-image:radial-gradient(color-mix(in srgb,var(--text) 7%,transparent) 1px,transparent 1.2px);background-size:16px 16px;border-radius:10px;min-width:0;padding:16px 16px 6px;overflow-x:auto}.wiring-cloud{border:1px solid color-mix(in srgb,var(--text) 26%,transparent);background:var(--surface);border-radius:999px;align-items:center;gap:10px;padding:4px 14px 4px 5px;font-size:13px;display:inline-flex}.wiring-cloud .tag{color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:11px}.wiring-trunk{--trunk:color-mix(in srgb,var(--text) 26%,transparent);flex-direction:column;gap:20px;margin-left:28px;padding:14px 0 0 24px;display:flex;position:relative}.wiring-trunk:before{content:"";background:var(--trunk);width:2px;position:absolute;top:0;bottom:36px;left:0}.wiring-gw{width:max-content;min-width:100%;position:relative}.wiring-gw:before{content:"";background:var(--trunk);width:24px;height:2px;position:absolute;top:24px;left:-24px}.wiring-gw-box{border:1.5px solid var(--trunk);background:var(--surface);border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px 18px;padding:9px 14px;display:flex}.wiring-gw-id{flex-direction:column;line-height:1.25;display:flex}.wiring-gw-id .kind{color:var(--muted);font-size:11px}.wiring-gw-id .code{font-size:14px;font-weight:600}.wiring-gw-name{font-size:13px}.wiring-gw-meta{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:12px;display:flex}.wiring-dot{background:color-mix(in srgb,var(--muted) 60%,transparent);border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.wiring-dot.ok{background:var(--accent)}.wiring-dot.warn{background:var(--warning)}.wiring-dot.danger{background:var(--danger)}.wiring-ports{grid-auto-columns:minmax(250px,280px);grid-auto-flow:column;gap:14px;padding-left:14px;display:grid}.wiring-port{--bus:var(--accent);flex-direction:column;min-width:0;display:flex}.wiring-port.bus-warn{--bus:var(--warning)}.wiring-port.bus-down{--bus:var(--danger)}.wiring-port.bus-idle,.wiring-port.bus-off{--bus:color-mix(in srgb,var(--muted) 55%,transparent)}.wiring-socket{border:1.5px solid var(--trunk);background:var(--surface);text-align:center;text-overflow:ellipsis;white-space:nowrap;border-top:0;border-radius:0 0 5px 5px;align-self:flex-start;width:64px;height:20px;margin:-1.5px 0 0 14px;padding:0 3px;font-size:10px;font-weight:600;line-height:18px;overflow:hidden}.wiring-port-head{border:1px solid var(--line);background:var(--surface);border-radius:8px;margin-top:14px;padding:8px 11px;position:relative}.wiring-port-head:before{content:"";background:var(--bus);width:2px;height:14px;position:absolute;top:-15px;left:31px}.wiring-port.bus-down .wiring-port-head{border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.wiring-port-title{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.wiring-port-title b{font-size:13px;font-weight:600}.wiring-port-title span{color:var(--muted);white-space:nowrap;font-size:11.5px}.wiring-port-state{color:var(--muted);flex-wrap:wrap;gap:3px 10px;margin-top:4px;font-size:11px;display:flex}.wiring-port-state .lab{color:var(--bus);font-weight:600}.wiring-port.bus-idle .wiring-port-state .lab,.wiring-port.bus-off .wiring-port-state .lab{color:var(--muted)}.wiring-port-error{color:var(--danger);margin-top:3px;font-size:11px}.wiring-bus{border-radius:8px;flex:1;margin:0;padding:14px 0 4px;list-style:none;transition:background .15s;position:relative}.wiring-bus:before{content:"";background:var(--bus);width:2px;position:absolute;top:0;bottom:22px;left:31px}.bus-down .wiring-bus:before{background:repeating-linear-gradient(to bottom,var(--bus) 0 6px,transparent 6px 11px)}.bus-idle .wiring-bus:before,.bus-off .wiring-bus:before{background:repeating-linear-gradient(to bottom,var(--bus) 0 3px,transparent 3px 7px)}.wiring-bus.drop{background:color-mix(in srgb,var(--accent2) 12%,transparent)}.wiring-tap{margin-bottom:8px;padding-left:58px;position:relative}.wiring-tap:before{content:"";background:var(--bus);width:26px;height:2px;position:absolute;top:50%;left:32px}.wiring-addr{z-index:1;border:1.5px solid var(--bus);background:var(--surface);text-align:center;border-radius:4px;min-width:30px;height:20px;padding:0 4px;font-size:11px;font-weight:600;line-height:17px;position:absolute;top:50%;left:17px;transform:translateY(-50%)}.wiring-tap.sel .wiring-addr{background:var(--accent2);border-color:var(--accent2);color:#fff}.wiring-tap.slot:before{background:repeating-linear-gradient(to right,var(--bus) 0 4px,transparent 4px 7px)}.wiring-tap.slot .wiring-addr{color:var(--muted);border-style:dashed}.wiring-slot{border:1px dashed color-mix(in srgb,var(--text) 26%,transparent);width:100%;color:var(--muted);text-align:left;background:0 0;border-radius:8px;padding:8px 10px;font-size:12px}.wiring-slot:hover{color:var(--text);border-color:var(--accent2)}.wiring-bus.drop .wiring-slot{border-style:solid;border-color:var(--accent2);color:var(--accent2)}.wiring-bus .wiring-empty{padding-left:58px}.wiring-add-port{border:1px dashed color-mix(in srgb,var(--text) 26%,transparent);color:var(--muted);text-align:left;background:0 0;border-radius:8px;flex-direction:column;align-self:start;gap:2px;margin-top:34px;padding:10px 12px;font-size:12px;display:flex}.wiring-add-port span{opacity:.8;font-size:11px}.wiring-card{text-align:left;border:1px solid var(--line);background:var(--surface);width:100%;color:var(--text);border-radius:8px;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:9px;padding:6px 10px 6px 7px;display:grid}.wiring-card:hover{border-color:color-mix(in srgb,var(--text) 28%,transparent)}.wiring-card[aria-pressed=true]{border-color:var(--accent2);box-shadow:0 0 0 1px var(--accent2)}.wiring-card[draggable=true]{cursor:grab}.wiring-card-body{flex-direction:column;min-width:0;display:flex}.wiring-card-name{align-items:center;gap:6px;font-size:13px;font-weight:600;line-height:1.3;display:flex}.wiring-card-name .wiring-dot{margin-left:auto}.wiring-grip{font-family:var(--font-geist-mono),monospace;color:var(--muted);letter-spacing:-1px;font-size:11px}.wiring-card-sub{color:var(--muted);flex-wrap:wrap;gap:1px 8px;font-size:11px;display:flex}.wiring-card .mono,.wiring-rail .mono,.wiring-board .mono{font-family:var(--font-geist-mono),monospace;font-variant-numeric:tabular-nums}.wiring-chip{border:1px solid var(--line);white-space:nowrap;color:var(--muted);border-radius:4px;padding:0 5px;font-size:10.5px}.wiring-chip.warn{color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent);border-color:#0000}.wiring-glyph{width:46px;height:30px;display:block}.wiring-glyph.large{width:64px;height:42px}.wiring-glyph .soc{display:none}.wiring-rail{border:1px solid var(--line);background:var(--surface);border-radius:10px;flex-direction:column;min-width:0;display:flex;position:sticky;top:12px}.wiring-rail section{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding:13px 15px;display:flex}.wiring-rail section:first-child{border-top:0}.wiring-rail h2{margin:0;font-size:14px;font-weight:600}.wiring-rail h3{letter-spacing:.06em;color:var(--muted);margin:0;font-size:11px;font-weight:600}.wiring-rail p{color:var(--muted);margin:0;font-size:12px}.wiring-rail .text-btn{align-self:flex-start}.wiring-issues,.wiring-tray{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wiring-issues button{text-align:left;width:100%;color:var(--text);background:0 0;border:0;grid-template-columns:auto 1fr;align-items:start;gap:8px;padding:3px 0;font-size:12px;display:grid}.wiring-issues .wiring-dot{margin-top:6px}.wiring-issues small{color:var(--muted);font-size:11px;display:block}.wiring-insp-head{grid-template-columns:64px 1fr auto;align-items:center;gap:12px;display:grid}.wiring-insp-head .sub{color:var(--muted);font-size:11.5px}.wiring-close{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:6px;padding:3px 9px;font-size:12px}.wiring-facts{grid-template-columns:auto 1fr;gap:5px 14px;margin:0;font-size:12px;display:grid}.wiring-facts dt{color:var(--muted)}.wiring-facts dd{margin:0}.wiring-form{flex-direction:column;gap:10px;display:flex}.wiring-form .field{flex-direction:column;gap:4px;display:flex}.wiring-form .field>span{font-size:12px;font-weight:500}.wiring-form .field small{color:var(--muted);font-size:11px;font-weight:400}.wiring-form select,.wiring-form input{background:var(--surface2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:6px;padding:8px 10px;font-family:inherit;font-size:12.5px}.wiring-form input.mono{font-family:var(--font-geist-mono),monospace}.wiring-form .field.invalid input{border-color:var(--danger)}.wiring-form .field .err{color:var(--danger)}.wiring-used{flex-wrap:wrap;gap:4px;display:flex}.wiring-used i{font-style:normal;font-family:var(--font-geist-mono),monospace;border:1px solid var(--line);color:var(--muted);border-radius:3px;padding:0 4px;font-size:10.5px}.wiring-used i.hit{border-color:var(--danger);color:var(--danger)}.wiring-note{color:var(--muted);background:var(--surface2);border-radius:6px;padding:7px 10px;font-size:11.5px}.wiring-rail p.wiring-note.warn{color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,transparent)}.wiring-actions{align-items:center;gap:8px;display:flex}.wiring-actions .primary-btn{margin-left:auto}.wiring-unassign{color:var(--danger);background:0 0;border:0;padding:6px 0;font-size:12.5px}@media (max-width:1100px){.wiring-work{grid-template-columns:1fr}.wiring-rail{position:static}}@media (max-width:640px){.wiring-trunk{margin-left:12px;padding-left:14px}.wiring-gw:before{width:14px;left:-14px}.wiring-gw{width:auto}.wiring-ports{grid-template-columns:minmax(0,1fr);grid-auto-columns:auto;grid-auto-flow:row;padding-left:0}}@media (prefers-reduced-motion:reduce){.wiring-bus{transition:none}}
.install-items{flex-direction:column;gap:6px;display:flex}.install-item{grid-template-columns:120px minmax(0,1.4fr) 150px minmax(0,1fr) 56px;align-items:center;gap:8px;display:grid}.install-item.head{color:var(--muted);font-size:11px}.install-item select,.install-item input{background:var(--surface2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:5px;padding:8px 10px;font-family:inherit;font-size:12px}.install-item input:disabled{opacity:.5}.install-item input[aria-invalid=true],.install-form select[aria-invalid=true]{border-color:var(--danger)}.install-items>.text-btn{align-self:flex-start}.install-detail{flex-direction:column;gap:10px;display:flex}.install-detail h4{margin:8px 0 0;font-size:13px}.code-cells{align-items:center;gap:4px;display:flex}.code-cells span{aspect-ratio:5/6.6;border:1.5px solid var(--accent2);background:var(--surface2);width:30px;font:700 22px/1 var(--font-geist-mono),ui-monospace,monospace;color:var(--text);border-radius:5px;place-items:center;display:grid}.code-cells .sep{color:var(--muted);padding:0 2px;font-style:normal;font-weight:700}.code-input{align-self:center;position:relative}.code-input input{opacity:0;cursor:text;border:0;width:100%;height:100%;font-size:16px;position:absolute;inset:0}.code-input:focus-within .code-cells span.cur{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 35%,transparent)}.work-order{border:1px solid var(--accent2);background:color-mix(in srgb,var(--accent2) 8%,transparent);border-radius:8px;grid-template-columns:minmax(0,1fr) 132px;align-items:center;gap:12px 16px;padding:14px;display:grid}.wo-main{flex-direction:column;gap:8px;min-width:0;display:flex}.wo-label{color:var(--muted);font-size:11px}.wo-main small{color:var(--muted);font-size:11.5px;line-height:1.5}.qr-code{background:#fff;border-radius:6px;line-height:0}.qr-code svg{width:100%;height:auto;display:block}.wo-qr{aspect-ratio:1;width:132px}.wo-addr,.wo-actions{grid-column:1/-1}.wo-addr{color:var(--muted);font-size:11.5px}.wo-addr code{font-family:var(--font-geist-mono),monospace;color:var(--text);margin:0 4px}.wo-addr form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.wo-addr input{background:var(--surface2);border:1px solid var(--line);color:var(--text);font-size:12px;font-family:var(--font-geist-mono),monospace;border-radius:5px;min-width:180px;padding:6px 8px}.wo-addr input[aria-invalid=true]{border-color:var(--danger)}.wo-addr form button{border:1px solid var(--line);height:28px;color:var(--text);background:0 0;border-radius:5px;padding:0 10px;font-size:11px}.wo-actions{gap:6px;display:flex}@media (max-width:520px){.work-order{grid-template-columns:1fr}.wo-qr{justify-self:center;width:160px}.code-cells span{width:26px;font-size:19px}}.print-sheet{display:none}@media print{body>:not(.print-sheet){display:none!important}.print-sheet{color:#000;background:#fff;font-family:Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,sans-serif;display:block}.print-sheet .code-cells span{color:#000;background:#fff;border:.4mm solid #000;border-radius:.8mm}.print-sheet .code-cells .sep{color:#000}.print-order{flex-direction:column;gap:3mm;width:105mm;height:148mm;padding:7mm;font-size:3mm;display:flex}.print-order header,.print-label header{border-bottom:.6mm solid #000;justify-content:space-between;align-items:baseline;padding-bottom:1.5mm;display:flex}.print-order header b{font-size:4.6mm}.print-order p{margin:0}.po-code{grid-template-columns:1fr 44mm;align-items:end;gap:3mm;display:grid}.po-code small{font-size:2.7mm;font-weight:700;display:block}.po-code>div:first-child{grid-column:1/-1}.po-code .code-cells{gap:1mm;margin:1.5mm 0}.po-code .code-cells span{border-width:.5mm;width:9mm;font-size:6.6mm}.po-qr{grid-area:2/2}.po-qr svg,.pl-qr svg{width:100%;height:auto;display:block}.print-order table{border-collapse:collapse;width:100%;font-size:2.8mm}.print-order th,.print-order td{text-align:left;border-top:.25mm solid #000;padding:1mm .5mm}.print-order ol{margin:0;padding-left:4.5mm;font-size:2.8mm;line-height:1.55}.po-note{font-size:2.8mm}.print-label{flex-direction:column;align-items:stretch;gap:2mm;width:62mm;height:90mm;padding:4mm;display:flex}.print-label header b{letter-spacing:.3mm;font-size:3mm}.print-label header span{font:700 3.2mm var(--font-geist-mono),monospace}.print-label p{margin:0}.pl-site{font-size:2.8mm}.pl-qr{align-self:center;width:38mm}.pl-cap{text-align:center;font-size:3mm}.pl-cap span{font:500 2.6mm var(--font-geist-mono),monospace;display:block}.pl-foot{text-align:center;border-top:.25mm solid #000;padding-top:1mm;font-size:2.3mm;margin-top:auto!important}}.install-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.install-list li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.install-list li:first-child{border-top:0}.install-list li span{flex-direction:column;min-width:0;display:flex}.install-list small{color:var(--muted);font-size:11.5px}@media (max-width:760px){.install-item{grid-template-columns:1fr 1fr}.install-item.head{display:none}}.install-approve{background:var(--bg);max-width:440px;min-height:100vh;color:var(--text);flex-direction:column;gap:14px;margin:0 auto;padding:32px 20px;display:flex}.install-approve form{flex-direction:column;gap:14px;display:flex}.install-approve .kicker{color:var(--accent2);margin:0;font-size:13px;font-weight:700}.install-approve h1{margin:0;font-size:24px;line-height:1.3}.install-approve p{color:var(--muted);margin:0}.install-approve .code-cells{gap:6px}.install-approve .code-cells span{border-width:2px;border-color:var(--accent);background:var(--surface);border-radius:10px;width:clamp(40px,12vw,52px);font-size:clamp(28px,8.5vw,36px)}.install-approve .approve-filled{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:999px;align-self:flex-start;padding:4px 12px;font-size:13.5px;font-weight:700}.install-approve .approve-check{align-items:center;gap:8px;font-size:15px;display:flex}.install-approve .primary-btn,.install-approve button{border-radius:12px;min-height:52px;font-size:16px;font-weight:700}.install-approve .hint{font-size:13px}
.integrated-dashboard .inline-select{color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.integrated-dashboard .inline-select select{min-width:160px}.dashboard-3col{grid-template-columns:1.1fr 1.3fr 1fr;gap:14px;margin-bottom:14px;display:grid}.dashboard-3col>.panel,.dashboard-3col .stack{min-width:0}.dashboard-3col .stack{flex-direction:column;gap:14px;display:flex}.site-counts{grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0 12px;display:grid}.site-counts>div{border:1px solid var(--line);text-align:center;border-radius:8px;padding:8px 10px}.site-counts span{color:var(--muted);font-size:9px;display:block}.site-counts strong{font-family:var(--font-geist-mono);font-size:18px}.site-counts .ok strong{color:var(--accent)}.site-counts .warn strong{color:var(--warning)}.site-counts .danger strong{color:var(--danger)}.source-cards{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:6px 0 12px;display:grid}.source-card{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:8px 10px}.source-card.kind-wind{border-left-color:var(--cyan)}.source-card.kind-orc{border-left-color:var(--warning)}.source-card.kind-generic{border-left-color:var(--muted)}.source-card span{color:var(--muted);font-size:9px;display:block}.source-card strong{font-family:var(--font-geist-mono);margin:4px 0 2px;font-size:16px;display:block}.source-card strong em{color:var(--muted);font-size:9px;font-style:normal}.source-card small{color:var(--muted);font-size:8px}.flow-tiles{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;display:grid}.flow-tiles>div{background:var(--surface2);border-radius:8px;padding:8px 10px}.flow-tiles span{color:var(--muted);font-size:9px;display:block}.flow-tiles strong{font-family:var(--font-geist-mono);margin-top:3px;font-size:13px;display:block}.flow-tiles small{color:var(--muted);font-size:8px}.alarm-counts{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px;display:grid}.alarm-counts>div{border:1px solid var(--line);text-align:center;border-radius:8px;padding:8px}.alarm-counts span{color:var(--muted);font-size:9px;display:block}.alarm-counts strong{font-family:var(--font-geist-mono);font-size:16px}.alarm-counts .danger strong{color:var(--danger)}.alarm-counts .warn strong{color:var(--warning)}.alarms-24h .panel{box-shadow:none;background:0 0;border:0;padding:0}.ess-body{grid-template-columns:auto 1fr;align-items:center;gap:16px;display:grid}.ess-body dl{grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:11px;display:grid}.ess-body dt{color:var(--muted)}.ess-body dd{font-family:var(--font-geist-mono);margin:0}.quality-list{gap:10px;margin-top:6px;display:grid}.quality-list>div{grid-template-columns:1fr auto;align-items:center;gap:2px 8px;font-size:11px;display:grid}.quality-list span{color:var(--muted)}.quality-list span small{margin-left:4px;font-size:8px}.quality-list strong{font-family:var(--font-geist-mono);text-align:right}.quality-list i{background:var(--accent);border-radius:2px;grid-column:1/-1;height:4px;transition:width .4s;display:block}.quality-list>div.over i{background:var(--danger)}.quality-list>div>small{color:var(--muted);grid-column:1/-1;font-size:8px}.quality-verdict{background:var(--surface2);border-radius:8px;margin:10px 0 0;padding:8px 10px;font-size:10px}.quality-verdict.ok{color:var(--accent)}.quality-verdict.danger{color:var(--danger)}.integrated-dashboard{container-type:inline-size}@container (max-width:1240px){.dashboard-3col{grid-template-columns:1fr 1fr}.dashboard-3col>.panel:first-child{grid-column:1/-1}}@media (max-width:760px){.dashboard-3col{grid-template-columns:1fr}.dashboard-3col>.panel:first-child{grid-column:auto}.site-counts,.flow-tiles,.alarm-counts{grid-template-columns:repeat(2,1fr)}}.site-status .col-no{display:none}.site-status .data-table table{table-layout:fixed}.site-status .data-table th:nth-child(2){width:62px}.site-status .data-table th:nth-child(4){width:64px}.site-status .data-table th:nth-child(5){width:78px}.site-status .data-table td,.site-status .data-table th{padding:9px 8px}.site-status .site-name{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.site-status .site-name small{text-overflow:ellipsis;margin-top:2px;display:block;overflow:hidden}.source-flow{container-type:inline-size}@container (max-width:720px){.source-flow .flow-diagram{flex-flow:column;gap:0;padding:2px 0;overflow:visible}.source-flow .flow-node{flex:none;grid-template-columns:1fr auto;align-items:baseline;gap:2px 10px;min-width:0;padding:8px 12px}.source-flow .flow-node>strong{text-align:right;font-size:15px}.source-flow .flow-node>small{grid-column:1/-1}.source-flow .flow-arrow{flex:none;justify-content:center;align-items:center;gap:8px;padding:3px 0;display:flex}.source-flow .flow-arrow span{font-size:14px;transform:rotate(90deg)}}.integrated-dashboard .data-table,.integrated-dashboard .flow-diagram{scrollbar-width:none}.integrated-dashboard .data-table::-webkit-scrollbar{display:none}.integrated-dashboard .flow-diagram::-webkit-scrollbar{display:none}
.twin-toolbar{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.twin-toolbar label,.asset-picker{color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.twin-toolbar select,.asset-picker select{min-width:180px}.twin-toolbar .tabs{border:1px solid var(--line);border-radius:8px;display:flex;overflow:hidden}.twin-toolbar .tabs button{background:var(--surface);color:var(--muted);border:0;padding:7px 12px;font-size:11px}.twin-toolbar .tabs button.active{background:var(--text);color:var(--bg)}.twin-layout{grid-template-columns:1.6fr .8fr;gap:14px;margin-bottom:14px;display:grid}.twin-side{flex-direction:column;gap:14px;min-width:0;display:flex}.twin-main .panel-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.twin-main .panel-head small{color:var(--muted);font-size:9px}.twin-meta{color:var(--muted);align-items:center;gap:6px;margin:6px 0 0;font-size:10px;display:flex}.twin-scene{border:1px solid var(--line);background:radial-gradient(circle at 50% 62%,color-mix(in srgb,var(--accent2) 12%,transparent),transparent 45%),linear-gradient(var(--surface2),var(--surface));border-radius:12px;margin-top:12px;position:relative;overflow:hidden}.twin-scene svg{width:100%;height:auto;display:block}.twin-scene .ground{stroke:color-mix(in srgb,var(--accent) 25%,transparent);stroke-width:1px}.twin-scene .scene-label,.twin-scene .box-title,.twin-scene .box-value,.twin-scene .node-title,.twin-scene .node-sub,.twin-scene .node-value,.twin-scene .bus-label,.twin-scene .soc-text{fill:var(--text);font-size:11px}.twin-scene .box-title,.twin-scene .node-sub,.twin-scene .bus-label{fill:var(--muted);font-size:10px}.twin-scene .box-value,.twin-scene .node-value{font-family:var(--font-geist-mono),monospace;font-weight:600}.twin-scene .box-value.big{font-size:14px}.twin-scene .soc-text{font-size:9px;font-family:var(--font-geist-mono),monospace}.twin-scene .box,.twin-scene .node-box,.twin-scene .bank-frame{fill:var(--surface);stroke:var(--line);stroke-width:1.2px}.twin-scene .node-box{fill:color-mix(in srgb,var(--surface) 92%,transparent)}.twin-scene .gen-node,.twin-scene .store-node{cursor:pointer}.twin-scene .gen-node:hover .node-box,.twin-scene .store-node:hover .node-box{stroke:var(--accent)}.twin-scene .gen-node.warn .node-box{stroke:var(--warning)}.twin-scene .gen-node.danger .node-box{stroke:var(--danger)}.twin-scene .bus{stroke:var(--text);stroke-width:4px;stroke-linecap:round;opacity:.7}.twin-scene .flow-line{fill:none;stroke:var(--accent);stroke-width:2.2px;stroke-dasharray:6 6;animation:1.2s linear infinite flow-dash}.twin-scene .flow-line.dc{stroke:var(--cyan)}.twin-scene .flow-line.grid{stroke:var(--purple)}.twin-scene .flow-line.hot{stroke:var(--warning)}.twin-scene .flow-line.cold{stroke:var(--cyan)}.twin-scene .flow-line.idle{stroke:var(--line);animation-play-state:paused}.twin-scene .flow-line.reverse{animation-direction:reverse}@keyframes flow-dash{to{stroke-dashoffset:-24px}}.twin-scene .wind-lines line{stroke:var(--cyan);stroke-width:1.2px;stroke-dasharray:18 14;opacity:.55}.twin-scene .wind-lines{animation:1.5s linear infinite wind-dash}@keyframes wind-dash{to{transform:translate(-32px)}}.twin-scene .nacelle{fill:#b9c7d2;stroke:#8fa1af}.twin-scene .hub{fill:var(--accent2);stroke:#c7d1da;stroke-width:3px}.twin-scene .rotor{animation:6s linear infinite spin}.twin-scene .rotor-disc{animation:2s linear infinite spin}.twin-scene .rotor-disc line{stroke:var(--accent);stroke-width:2px}.twin-scene .rotor-disc circle{fill:var(--accent2)}@keyframes spin{to{transform:rotate(360deg)}}.twin-scene .pv-array rect{fill:#2f6fd1;stroke:#9fbdf0;stroke-width:.6px}.twin-scene .inverter{fill:var(--surface);stroke:var(--accent)}.twin-scene .heat{stroke:var(--warning)}.twin-scene .cool{stroke:var(--cyan)}.twin-scene .pump{fill:var(--surface);stroke:var(--muted);stroke-width:1.5px}.twin-scene .grid-symbol polygon{fill:none;stroke:var(--purple);stroke-width:2px}.twin-scene .grid-symbol line{stroke:var(--purple);stroke-width:1.5px}.twin-scene .generator{fill:var(--surface);stroke:var(--accent);stroke-width:2px}.twin-scene .cell{fill:var(--surface2);stroke:var(--line)}.twin-scene .cell-fill{fill:var(--accent);opacity:.85}.twin-scene .soc-frame{fill:var(--surface2);stroke:var(--line)}.twin-scene .soc-fill{fill:var(--accent)}.sensor-tag{border-left:2px solid var(--accent);background:color-mix(in srgb,var(--surface) 90%,transparent);border-radius:0 6px 6px 0;min-width:92px;padding:6px 8px;position:absolute;box-shadow:0 4px 14px #00000014}.sensor-tag span,.sensor-tag b,.sensor-tag small{display:block}.sensor-tag span{color:var(--accent);letter-spacing:1px;font-size:7px}.sensor-tag b{font-size:12px;font-family:var(--font-geist-mono),monospace;margin:2px 0}.sensor-tag b small{color:var(--muted);font-size:8px;display:inline}.sensor-tag>small{color:var(--muted);font-size:7px}.sensor-tag.warn{border-color:var(--warning)}.sensor-tag.warn span{color:var(--warning)}.sensor-tag.danger{border-color:var(--danger)}.sensor-tag.danger span{color:var(--danger)}.sensor-tag.none{opacity:.55}.sensor-tag.stale b{color:var(--muted)}.twin-controls{justify-content:center;gap:6px;margin-top:10px;display:flex}.twin-controls button{border:1px solid var(--line);background:var(--surface2);color:var(--muted);border-radius:6px;padding:6px 10px;font-size:9px}.kind-list{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.kind-list li{border-top:1px solid var(--line);grid-template-columns:1fr auto auto;gap:10px;padding:8px 0;font-size:11px;display:grid}.kind-list span{color:var(--muted)}.kind-list em{font-style:normal;font-family:var(--font-geist-mono),monospace}.sensor-list>div:not(.panel-head){border-top:1px solid var(--line);grid-template-columns:1fr auto 16px;align-items:center;padding:9px 0;font-size:11px;display:grid}.sensor-list span{color:var(--muted)}.sensor-list span small{margin-left:4px;font-size:8px}.sensor-list strong{font-family:var(--font-geist-mono),monospace}.sensor-list strong small{color:var(--muted);font-size:8px}.sensor-list i{color:var(--accent);text-align:right;font-size:9px;font-style:normal}.sensor-list>div.stale i{color:var(--warning)}@media (prefers-reduced-motion:reduce){.twin-scene .flow-line,.twin-scene .rotor,.twin-scene .rotor-disc,.twin-scene .wind-lines{animation:none!important}}@media (max-width:1100px){.twin-layout{grid-template-columns:1fr}}
.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;top:0;left:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0;width:1600px;height:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{width:auto;padding:0;max-width:none!important;max-height:none!important}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:#33b5e566}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{box-sizing:border-box;z-index:800;width:0;height:0}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{z-index:800;pointer-events:visiblePainted;pointer-events:auto;position:relative}.leaflet-top,.leaflet-bottom{z-index:1000;pointer-events:none;position:absolute}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline-offset:1px;background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{text-align:center;color:#000;background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-decoration:none;display:block}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.leaflet-bar a.leaflet-disabled{cursor:default;color:#bbb;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{text-indent:1px;font:700 18px Lucida Console,Monaco,monospace}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.leaflet-control-layers-toggle{background-image:url(../media/layers.3muxcl8sz6330.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(../media/layers-2x.23wrxu3xxu9-i.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333;background:#fff;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{padding-right:5px;overflow:hidden scroll}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{font-size:1.08333em;display:block}.leaflet-control-layers-separator{border-top:1px solid #ddd;height:0;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(../media/marker-icon.1le94j_pe_ih1.png)}.leaflet-container .leaflet-control-attribution{background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333;padding:0 5px;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{width:1em;height:.6669em;vertical-align:baseline!important;display:inline!important}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{white-space:nowrap;box-sizing:border-box;text-shadow:1px 1px #fff;background:#fffc;border:2px solid #777;border-top:none;padding:2px 5px 1px;line-height:1.1}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{text-align:center;margin-bottom:20px;position:absolute}.leaflet-popup-content-wrapper{text-align:left;border-radius:12px;padding:1px}.leaflet-popup-content{min-height:1px;margin:13px 24px 13px 20px;font-size:1.08333em;line-height:1.3}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-top:-1px;margin-left:-20px;position:absolute;left:50%;overflow:hidden}.leaflet-popup-tip{pointer-events:auto;width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{text-align:center;color:#757575;background:0 0;border:none;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;text-decoration:none;position:absolute;top:0;right:0}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";width:24px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.707107, M12=.707107, M21=-.707107, M22=.707107);margin:0 auto}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;border:1px solid #fff;border-radius:3px;padding:6px;position:absolute;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{pointer-events:none;content:"";background:0 0;border:6px solid #0000;position:absolute}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{margin-left:-6px;left:50%}.leaflet-tooltip-top:before{border-top-color:#fff;margin-bottom:-12px;bottom:0}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-top:-12px;margin-left:-6px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;margin-left:-12px;left:0}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
