@charset "UTF-8";@font-face{font-family:NanumSquareAc;font-weight:300;src:url(../assets/font/NanumSquare/NanumSquareAcL.eot);src:local(""),url(../assets/font/NanumSquare/NanumSquareAcL.eot?#iefix) format("embedded-opentype"),url(../assets/font/NanumSquare/NanumSquareAcL.woff2) format("woff2"),url(../assets/font/NanumSquare/NanumSquareAcL.woff) format("woff"),url(../assets/font/NanumSquare/NanumSquareAcL.ttf) format("truetype")}@font-face{font-family:NanumSquareAc;font-weight:400;src:url(../assets/font/NanumSquare/NanumSquareAcR.eot);src:local(""),url(../assets/font/NanumSquare/NanumSquareAcR.eot?#iefix) format("embedded-opentype"),url(../assets/font/NanumSquare/NanumSquareAcR.woff2) format("woff2"),url(../assets/font/NanumSquare/NanumSquareAcR.woff) format("woff"),url(../assets/font/NanumSquare/NanumSquareAcR.ttf) format("truetype")}@font-face{font-family:NanumSquareAc;font-weight:700;src:url(../assets/font/NanumSquare/NanumSquareAcB.eot);src:local(""),url(../assets/font/NanumSquare/NanumSquareAcB.eot?#iefix) format("embedded-opentype"),url(../assets/font/NanumSquare/NanumSquareAcB.woff2) format("woff2"),url(../assets/font/NanumSquare/NanumSquareAcB.woff) format("woff"),url(../assets/font/NanumSquare/NanumSquareAcB.ttf) format("truetype")}@font-face{font-family:NanumSquareAc;font-weight:800;src:url(../assets/font/NanumSquare/NanumSquareAcEB.eot);src:local(""),url(../assets/font/NanumSquare/NanumSquareAcEB.eot?#iefix) format("embedded-opentype"),url(../assets/font/NanumSquare/NanumSquareAcEB.woff2) format("woff2"),url(../assets/font/NanumSquare/NanumSquareAcEB.woff) format("woff"),url(../assets/font/NanumSquare/NanumSquareAcEB.ttf) format("truetype")}@font-face{font-family:NotoSansKR;font-weight:100;src:url(../assets/font/NotoSansKR/NotoSansKR-Thin.otf);src:local(""),url(../assets/font/NotoSansKR/NotoSansKR-Thin.otf?#iefix) format("embedded-opentype"),url(../assets/font/NotoSansKR/NotoSansKR-Thin.woff2) format("woff2"),url(../assets/font/NotoSansKR/NotoSansKR-Thin.woff) format("woff")}@font-face{font-family:NotoSansKR;font-weight:300;src:url(../assets/font/NotoSansKR/NotoSansKR-Light.otf);src:local(""),url(../assets/font/NotoSansKR/NotoSansKR-Light.otf?#iefix) format("embedded-opentype"),url(../assets/font/NotoSansKR/NotoSansKR-Light.woff2) format("woff2"),url(../assets/font/NotoSansKR/NotoSansKR-Light.woff) format("woff")}@font-face{font-family:NotoSansKR;font-weight:400;src:url(../assets/font/NotoSansKR/NotoSansKR-Regular.otf);src:local(""),url(../assets/font/NotoSansKR/NotoSansKR-Regular.otf?#iefix) format("embedded-opentype"),url(../assets/font/NotoSansKR/NotoSansKR-Regular.woff2) format("woff2"),url(../assets/font/NotoSansKR/NotoSansKR-Regular.woff) format("woff")}@font-face{font-family:NotoSansKR;font-weight:500;src:url(../assets/font/NotoSansKR/NotoSansKR-Medium.otf);src:local(""),url(../assets/font/NotoSansKR/NotoSansKR-Medium.otf?#iefix) format("embedded-opentype"),url(../assets/font/NotoSansKR/NotoSansKR-Medium.woff2) format("woff2"),url(../assets/font/NotoSansKR/NotoSansKR-Medium.woff) format("woff")}@font-face{font-family:NotoSansKR;font-weight:700;src:url(../assets/font/NotoSansKR/NotoSansKR-Bold.otf);src:local(""),url(../assets/font/NotoSansKR/NotoSansKR-Bold.otf?#iefix) format("embedded-opentype"),url(../assets/font/NotoSansKR/NotoSansKR-Bold.woff2) format("woff2"),url(../assets/font/NotoSansKR/NotoSansKR-Bold.woff) format("woff")}@font-face{font-family:NotoSansKR;font-weight:900;src:url(../assets/font/NotoSansKR/NotoSansKR-Black.otf);src:local(""),url(../assets/font/NotoSansKR/NotoSansKR-Black.otf?#iefix) format("embedded-opentype"),url(../assets/font/NotoSansKR/NotoSansKR-Black.woff2) format("woff2"),url(../assets/font/NotoSansKR/NotoSansKR-Black.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:100;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoT.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoT.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoT.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoT.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:200;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoUL.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoUL.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoUL.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoUL.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:300;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoL.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoL.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoL.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoL.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:400;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoR.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoR.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoR.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoR.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:500;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoM.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoM.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoM.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoM.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:600;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoSB.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoSB.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoSB.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoSB.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:700;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoB.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoB.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoB.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoB.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:800;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoEB.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoEB.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoEB.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoEB.woff) format("woff")}@font-face{font-family:AppleSDGothicNeo;font-weight:900;src:url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoH.eot);src:local(""),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoH.eot?#iefix) format("embedded-opentype"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoH.woff2) format("woff2"),url(../assets/font/AppleSDGothicNeo/AppleSDGothicNeoH.woff) format("woff")}@font-face{font-family:Pretendard;font-weight:45 920;font-style:normal;font-display:swap;src:url(../assets/font/Pretendard/PretendardVariable.woff2) format("woff2-variations")}:root{--theme-color-bg-main: #191b23;--theme-color-bg-01: #252528;--theme-color-bg-02: #2c2c30;--theme-color-bg-03: #2e2e3260;--theme-color-bg-04: #ffffff;--theme-color-bg-05: #252528a0;--purple-light: #8d7eb0;--purple-mid: #9b6ea4;--purple-dark: #7e5e92;--purple-deep: #645075;--ecopro-cyan: var(--purple-mid);--ecopro-cyan-light: var(--purple-light);--ecopro-cyan-dark: var(--purple-dark);--ecopro-blue-dark: var(--purple-deep);--ecopro-orange: #ff9800;--theme-color-bar-01: var(--purple-dark);--theme-color-bar-02: var(--purple-mid);--theme-color-box-01: var(--purple-dark);--theme-color-box-02: #636365;--theme-color-box1: var(--purple-deep);--theme-color-box2: #4a4a4f;--theme-color-box3: #636363;--theme-color-box-widget: #333333af;--theme-color-point: var(--purple-mid);--theme-color-bg: #4c337c;--theme-color-bg-icon: rgba(76, 51, 124, .5);--theme-color-bg-icon-wrapper: rgba(58, 19, 75, .4);--theme-color-info: #42719b;--theme-color-alert: #e5a328;--theme-color-warn: #ce3636;--theme-color-caution: #ffffff;--theme-color-call: #5cb945b4;--theme-color-icon-enable: #eeeeee;--theme-color-icon-disable: #545454;--theme-color-font-wt: #eaeaea;--theme-color-font-default: var(--theme-color-bg-04);--water-light-sky: #8d7eb0;--water-mid-blue: #9b6ea4;--water-dark-blue: #7e5e92;--water-deep-blue: #645075;--gradient-water-header: linear-gradient( -80deg, var(--purple-deep) 0%, var(--purple-dark) 30%, var(--purple-mid) 70%, var(--purple-light) 100% );--gradient-water-header-vertical: linear-gradient( to top, var(--purple-deep) 0%, var(--purple-dark) 50%, var(--purple-light) 100% );--theme-color-filter-normal: brightness(0) saturate(100%) invert(96%) sepia(1%) saturate(807%) hue-rotate(70deg) brightness(115%) contrast(87%);--theme-color-filter-warn: brightness(0) saturate(100%) invert(59%) sepia(59%) saturate(633%) hue-rotate(358deg) brightness(107%) contrast(80%);--theme-color-filter-danger: brightness(0) saturate(100%) invert(24%) sepia(87%) saturate(1598%) hue-rotate(336deg) brightness(99%) contrast(96%);--theme-color-filter-disable: brightness(0) saturate(100%) invert(32%) sepia(9%) saturate(0%) hue-rotate(221deg) brightness(106%) contrast(88%);--theme-color-filter-disable2: brightness(0) saturate(100%) invert(69%) sepia(12%) saturate(0%) hue-rotate(38deg) brightness(90%) contrast(98%);--theme-shadow-notify: inset .7vmin 0 0 0 #131313;--theme-size-header-h: 6vmin;--theme-size-default-margin: 1.5vmin;--theme-size-narrow-margin: 1vmin;--theme-size-indicator-margin: 3vmin;--theme-size-box-border-radius: .8vmin;--theme-size-notification-box-w: 22svw;--theme-size-notification-box-h: 6.5vmin;--theme-size-side-bar-w: 5.5vmin;--theme-size-margin-default: 1vmin;--theme-size-margin-box-inner: 1.45vmin;--theme-size-margin-box-safety: 1.2vmin;--theme-size-border-radius-default: .8vmin;--theme-size-border-radius-title-box: .5vmin;--space-2xs: .2vmin;--space-xs: .4vmin;--space-sm: .6vmin;--space-md: 1vmin;--space-lg: 1.5vmin;--space-xl: 2vmin;--space-2xl: 3vmin;--space-3xl: 4vmin;--font-2xs: .9vmin;--font-xs: 1vmin;--font-sm: 1.1vmin;--font-md: 1.2vmin;--font-lg: 1.35vmin;--font-xl: 1.6vmin;--font-2xl: 2vmin;--font-3xl: 2.5vmin;--radius-xs: .3vmin;--radius-sm: .5vmin;--radius-md: .8vmin;--radius-lg: 1vmin;--radius-xl: 1.4vmin;--radius-pill: 999px;--color-success: rgba(72, 210, 120, .9);--color-success-dim: rgba(72, 210, 120, .12);--color-success-border: rgba(72, 210, 120, .2);--color-success-soft: rgba(72, 210, 120, .25);--color-warning: rgba(250, 204, 21, .9);--color-warning-dim: rgba(250, 204, 21, .1);--color-warning-border: rgba(250, 204, 21, .2);--color-danger: rgba(248, 113, 113, .9);--color-danger-dim: rgba(248, 113, 113, .12);--color-danger-border: rgba(248, 113, 113, .2);--color-danger-soft: rgba(248, 113, 113, .25);--surface-base: rgba(133, 120, 160, .05);--surface-raised: rgba(133, 120, 160, .08);--surface-inset: rgba(10, 10, 20, .4);--surface-elevated: rgba(255, 255, 255, .04);--surface-hover: rgba(255, 255, 255, .08);--surface-active: rgba(255, 255, 255, .12);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);--shadow-md: 0 2px 8px rgba(0, 0, 0, .5);--zone-mixing: rgba(80, 210, 210, .95);--zone-mixing-dim: rgba(80, 210, 210, .08);--zone-mixing-border: rgba(80, 210, 210, .35);--zone-forming: rgba(192, 132, 252, .95);--zone-forming-dim: rgba(192, 132, 252, .08);--zone-forming-border: rgba(192, 132, 252, .35);--accent-dim: rgba(104, 34, 115, .15);--border-subtle: rgba(133, 120, 160, .12);--border-default: rgba(133, 120, 160, .22);--border-strong: rgba(133, 120, 160, .38);--border-accent: rgba(104, 34, 115, .5);--theme-color-border-default: rgba(133, 120, 160, .22);--text-primary: rgba(235, 235, 245, .95);--text-secondary: rgba(210, 210, 225, .82);--text-tertiary: rgba(180, 180, 200, .72);--text-disabled: rgba(180, 180, 200, .35);--default-transition: all 1.1s cubic-bezier(.25, .8, .25, 1)}html,body{margin:0 auto;width:100%;height:100%;overflow:hidden;-webkit-touch-callout:none;-webkit-user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-moz-text-size-adjust:none;-o-text-size-adjust:none;user-select:none;touch-action:pan-y;font-family:Pretendard,AppleSDGothicNeo;color:var(--theme-color-font-wt);background-color:var(--theme-color-bg-main)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--theme-color-bg-main);border-radius:5px}::-webkit-scrollbar-thumb{background-color:var(--water-dark-blue);border-radius:5px;border:2px solid var(--theme-color-bg-main)}::-webkit-scrollbar-thumb:hover{background-color:var(--water-mid-blue)}.header-wrapper{position:absolute;background:var(--gradient-water-header);background-blend-mode:multiply;width:calc(100% - var(--theme-size-margin-default) * 3 - var(--theme-size-side-bar-w));height:var(--theme-size-header-h);top:var(--theme-size-margin-default);right:var(--theme-size-margin-default);border-radius:var(--radius-md);display:flex;flex-direction:row;justify-content:space-between;align-items:center;z-index:5;overflow:hidden}.side-bar-wrapper[status=open]{position:absolute;background:var(--gradient-water-header-vertical);background-blend-mode:multiply;width:var(--theme-size-side-bar-w);height:calc(100% - var(--theme-size-margin-default) * 2);left:var(--theme-size-margin-default);top:var(--theme-size-margin-default);border-radius:var(--radius-md);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;z-index:13;transition:height .5s ease-out}.side-bar-wrapper[status=close]{position:absolute;background-color:#4db8e8;width:var(--theme-size-side-bar-w);height:var(--theme-size-header-h);overflow:hidden;left:var(--theme-size-margin-default);top:var(--theme-size-margin-default);border-radius:var(--radius-md);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;z-index:5;transition:height .25s ease-out}.page-wrapper.open{position:absolute;width:calc(100% - var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 3);height:calc(100% - var(--theme-size-header-h) - var(--theme-size-margin-default) * 3);bottom:var(--theme-size-margin-default);right:var(--theme-size-margin-default);border-radius:var(--radius-md);display:flex;justify-content:center;align-items:center;transition:width .2s ease-out;z-index:6}.page-wrapper.open.no-header{height:calc(100% - var(--theme-size-margin-default) * 2);top:var(--theme-size-margin-default)}.page-wrapper.closed{position:absolute;width:calc(100% - var(--theme-size-margin-default) * 2);height:calc(100% - var(--theme-size-header-h) - var(--theme-size-margin-default) * 3);bottom:var(--theme-size-margin-default);right:var(--theme-size-margin-default);display:flex;justify-content:center;align-items:center;transition:.3s ease-in;z-index:6}.page-wrapper.closed.no-header{height:calc(100% - var(--theme-size-margin-default) * 2);top:var(--theme-size-margin-default)}.control-mode-overlay{position:absolute;inset:0;background:#00000026;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9998;pointer-events:auto;cursor:not-allowed;animation:overlay-fade-in .3s ease}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.control-mode-overlay-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.75rem 2.5rem;background:#191b23e0;border:1px solid rgba(255,255,255,.1);border-radius:1rem;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 16px 48px #0006,0 0 0 1px #68227340,inset 0 1px #ffffff0d;animation:overlay-card-enter .35s cubic-bezier(.16,1,.3,1);pointer-events:none}@keyframes overlay-card-enter{0%{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.control-mode-overlay-icon{display:block;width:2.5rem;height:2.5rem;background-color:var(--theme-color-point);-webkit-mask-image:url(../assets/img/icon/lock-on-svgrepo-com.svg);mask-image:url(../assets/img/icon/lock-on-svgrepo-com.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;mask-repeat:no-repeat;mask-position:center;mask-size:contain;filter:drop-shadow(0 0 8px rgba(104,34,115,.45))}.control-mode-overlay-title{font-size:1.1rem;font-weight:600;color:#eaeaea;font-family:Pretendard,AppleSDGothicNeo,sans-serif}.control-mode-overlay-desc{font-size:.8rem;color:#ffffff73;font-family:Pretendard,AppleSDGothicNeo,sans-serif}.page-wrapper.control-mode-active>:not(.control-mode-overlay){filter:blur(2px);transition:filter .2s ease}.error-boundary{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:200px;background-color:#0000000d;border-radius:8px;padding:20px}.error-boundary__content{text-align:center;max-width:500px;background:#fff;padding:2rem;border-radius:12px;box-shadow:0 4px 6px #0000001a}.error-boundary__icon{font-size:3rem;margin-bottom:1rem}.error-boundary__title{font-size:1.5rem;font-weight:600;color:#333;margin-bottom:.5rem}.error-boundary__message{font-size:1rem;color:#666;margin-bottom:1.5rem;line-height:1.5}.error-boundary__details{text-align:left;margin:1rem 0;padding:1rem;background-color:#f5f5f5;border-radius:4px;border:1px solid #ddd}.error-boundary__details summary{cursor:pointer;font-weight:600;color:#666;margin-bottom:.5rem;-webkit-user-select:none;user-select:none}.error-boundary__details summary:hover{color:#333}.error-boundary__stack{font-family:Monaco,Courier New,monospace;font-size:.85rem;color:#d32f2f;background-color:#fff;padding:1rem;border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word;margin-top:.5rem;border:1px solid #ffcdd2}.error-boundary__button{padding:.75rem 1.5rem;font-size:1rem;font-weight:600;color:#fff;background-color:#682273;border:none;border-radius:6px;cursor:pointer;transition:background-color .2s}.error-boundary__button:hover{background-color:#4b1a59}.error-boundary__button:active{transform:translateY(1px)}@media(prefers-color-scheme:dark){.error-boundary{background-color:#ffffff0d}.error-boundary__content{background:#2d2d2d;color:#e0e0e0}.error-boundary__title{color:#fff}.error-boundary__message{color:#bbb}.error-boundary__details{background-color:#1a1a1a;border-color:#444}.error-boundary__details summary{color:#bbb}.error-boundary__details summary:hover{color:#fff}.error-boundary__stack{background-color:#1a1a1a;color:#ff6b6b;border-color:#5c1f1f}}.draggable-widget{position:absolute;background-color:#121c2c70;border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:0 .28vmin .95vmin #00000047;backdrop-filter:blur(5px) saturate(1.08);-webkit-backdrop-filter:blur(5px) saturate(1.08);display:flex;flex-direction:column;overflow:hidden;z-index:10;padding:var(--space-sm);gap:var(--space-sm)}.draggable-widget .widget-header-row{display:flex;align-items:center;gap:var(--space-sm)}.draggable-widget .header-right-slot{display:flex;align-items:center;flex-shrink:0}.draggable-widget .subtitle{cursor:move}.draggable-widget .common-subtitle{background-color:var(--surface-inset);background-image:none;border:1px solid var(--border-default);box-shadow:0 0 var(--space-xs) #0000004d;border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-md);border-top-color:var(--border-default)}.draggable-widget .common-subtitle .subtitle-text{color:var(--text-primary);font-size:var(--font-sm);font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.4)}.draggable-widget.minimized{position:relative;width:fit-content;height:auto;aspect-ratio:auto}.draggable-widget.minimized .item-content{display:none}.draggable-widget .item-content{flex-grow:1;overflow:auto;height:100%;padding:0;margin:0}.widget-floor-controls,.widget-sensor-controls{width:fit-content;height:auto;padding:var(--space-sm)}.widget-sensor-data,.widget-sensor-data-by-metric{width:42vmin;height:fit-content;max-height:65vh;padding:var(--space-sm)}.widget-sensor-data .item-content,.widget-sensor-data-by-metric .item-content{overflow:hidden}.widget-sensor-data .tab-content,.widget-sensor-data-by-metric .tab-content{gap:.5vmin}.widget-vision-sensor{width:48vmin;aspect-ratio:16/9;padding:var(--space-sm);overflow:hidden}.widget-vision-sensor .item-content{display:flex;min-height:0;overflow:hidden;border-radius:var(--radius-sm)}.widget-vision-sensor .item-content>*{flex:1 1 auto;min-height:0}.widget-weather-simulation{width:fit-content;height:fit-content;padding:var(--space-sm)}.widget-weather-simulation .item-content{overflow:hidden;height:auto}.widget-facility-process{width:fit-content;height:28vmin;padding:var(--space-sm)}.widget-facility-process .facility-process-container .facility-tag{position:absolute;border-radius:var(--radius-md);color:#fff;padding:var(--space-2xs) var(--space-sm);font-size:var(--font-md);font-weight:700;white-space:nowrap;cursor:pointer;border:1px solid rgba(255,255,255,.5);transition:background-color .2s ease-in-out,border-color .3s ease,box-shadow .3s ease;z-index:1}.widget-facility-process .facility-process-container .facility-tag.selected-edc{border:2px solid var(--color-success)}.widget-facility-process .facility-process-container .facility-tag.warning{border:1px solid var(--color-danger)!important;animation:pulse-border-3d 1.5s infinite}.widget-facility-process .item-content{overflow:hidden;height:24vmin}.widget-facility-process .item-content img{width:100%;height:100%}.widget-bev-map{width:46vmin;height:28vmin;padding:var(--space-sm)}.widget-bev-map .item-content{overflow:hidden;height:100%}.widget-2d-edc-simulation{width:fit-content;height:28vmin;padding:var(--space-sm)}.widget-2d-edc-simulation .item-content{overflow:hidden;height:24vmin}.widget-2d-edc-simulation .item-content img{width:100%;height:100%}.widget-change-detector{width:76vmin;height:42vmin;padding:var(--space-sm)}.widget-image-comparison-slider{width:76vmin;aspect-ratio:16/9;padding:var(--space-sm)}.common-subtitle{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-md);margin:0;width:fit-content;background:linear-gradient(180deg,#78a0f012,#5078c808);border:1px solid rgba(140,180,240,.2);border-top-color:#a0c8ff38;border-radius:var(--radius-md);box-shadow:var(--shadow-sm),inset 0 1px #a0c8ff0f;padding:var(--space-sm) var(--space-2xl);font-size:var(--font-md);font-weight:700;color:var(--text-primary);letter-spacing:.01em;box-sizing:border-box;-webkit-user-select:none;user-select:none;cursor:default}.common-subtitle.no-circle{padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-xs);border:none;box-shadow:none;background:var(--theme-color-bg-01)}.common-subtitle .subtitle-circle{width:var(--space-md);height:var(--space-md);border-radius:50%;box-shadow:0 0 var(--space-sm) #0009 inset;background-color:var(--text-disabled)}.common-subtitle .subtitle-circle:hover{background-color:var(--text-tertiary)}.common-subtitle .subtitle-text{color:var(--text-primary);font-weight:700;font-size:var(--font-sm);text-shadow:0 1px 3px rgba(0,0,0,.4)}.widget-3d-model-controls{width:28vmin;height:64vmin;padding:.5rem;overflow:hidden;background-color:var(--theme-color-bg-01)}.waves{position:absolute;bottom:-10%;left:0;width:100%;height:105%;fill:#b1b2b3;opacity:.7;z-index:1}.parallax>use{animation:move-forever infinite}.parallax>use:nth-child(1){animation-delay:-6s;animation-duration:12s;animation-timing-function:cubic-bezier(.42,0,.58,1)}.parallax>use:nth-child(2){animation-delay:-18s;animation-duration:18s;animation-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.parallax>use:nth-child(3){animation-delay:-30s;animation-duration:21s;animation-timing-function:cubic-bezier(.42,0,.58,1)}.parallax>use:nth-child(4){animation-delay:-40s;animation-duration:30s;animation-timing-function:cubic-bezier(.68,-.55,.265,1.55)}@keyframes move-forever{0%{transform:translate3d(-90px,0,0)}to{transform:translate3d(85px,0,0)}}.header-wrapper .left-area{height:100%;margin-left:calc(var(--theme-size-margin-default) * 2.1);display:flex;flex-direction:row;justify-content:start;align-items:center;z-index:10}.header-wrapper .left-area .title-wrapper{height:100%;display:flex;flex-direction:row;justify-content:start;align-items:center}.header-wrapper .left-area .title-wrapper .logo{background:url(../assets/img/common/INOVA_LOGO.svg);background-size:contain;background-repeat:no-repeat;background-position:center;height:80%;aspect-ratio:4 / 1}.header-wrapper .left-area .title-wrapper .titles{display:flex;flex-direction:row;align-items:baseline;gap:1vmin;margin-left:3vmin}.header-wrapper .left-area .title-wrapper .title{font-weight:600;font-size:2.1vmin;white-space:nowrap}.header-wrapper .left-area .title-wrapper .subtitle{font-weight:600;font-size:1.3vmin;white-space:nowrap;color:var(--text-tertiary)}.header-wrapper .left-area .company-name{font-weight:300;font-size:1.2vmin;margin-left:.3vmin;color:var(--text-primary)}.header-wrapper .right-area{height:100%;margin-right:calc(var(--theme-size-margin-default) * 2);display:flex;justify-content:center;align-items:center;z-index:10}.header-wrapper .right-area .clock{height:100%;display:flex;text-align:right;justify-content:center;align-items:center;right:0;font-size:1.8vmin;font-weight:500}.clock .ampm{font-size:.85vmin;vertical-align:top;margin-top:-.3vmin;margin-left:.3vmin}.clock .colon{width:.4vmin;text-align:center;display:inline-block;animation:blink 1s step-end infinite}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.header-wrapper .right-area .header-icon{height:100%;margin-right:.5vmin;display:flex;justify-content:center;align-items:center}.header-wrapper .right-area .header-icon .icon-wrapper{position:relative;background-color:var(--theme-color-bg-icon-wrapper);margin:0 .5vmin;display:flex;justify-content:center;align-items:center;border-radius:3vmin;cursor:pointer}.header-wrapper .right-area .header-icon .icon-wrapper .icon-button{position:relative;flex-shrink:none;background-color:var(--water-light-sky);width:3.2vmin;height:3.2vmin;border-radius:50%;overflow:hidden}.header-notify .new-badge{display:none}.header-wrapper .right-area .header-icon .icon-wrapper .icon-button .icon{width:100%;height:100%;filter:var(--theme-color-filter-normal)}.header-wrapper .right-area .header-icon .icon-wrapper .text{font-size:1.4vmin;margin:0 1.2vmin}.header-wrapper .right-area .header-icon .header-language .text{margin:0}.header-wrapper .right-area .header-icon .header-language{position:relative;align-items:center;transform-origin:center;transition:transform .16s ease}.header-wrapper .right-area .header-icon .header-language:hover{transform:scale(1.03)}.header-wrapper .right-area .header-icon .header-language:active{transform:scale(.99)}.header-wrapper .right-area .header-icon .language-current{min-width:4.8vmin;text-align:center;font-weight:600}.language-menu-popup{min-width:9rem;width:fit-content}.language-menu-popup .language-option{width:100%;text-align:left;justify-content:flex-start;gap:0}.language-menu-popup .language-option:hover{background:linear-gradient(135deg,#68227373,#4c337c61)}.language-menu-popup .language-option.is-active{background:linear-gradient(135deg,#682273b3,#4c337c99);color:#fff;font-weight:700}.header-wrapper .right-area .header-icon #notify-icon{background-image:url(../assets/img/icon/notify.png);background-position:center;background-repeat:no-repeat;background-size:43%}.header-notify.severity-info #notify-icon{filter:var(--theme-color-filter-normal)}.header-notify.severity-caution #notify-icon{filter:brightness(0) saturate(100%) invert(71%) sepia(68%) saturate(466%) hue-rotate(1deg) brightness(104%) contrast(103%)}.header-notify.severity-alert #notify-icon{filter:brightness(0) saturate(100%) invert(47%) sepia(79%) saturate(2086%) hue-rotate(346deg) brightness(99%) contrast(105%)}.header-notify.severity-error #notify-icon{filter:brightness(0) saturate(100%) invert(20%) sepia(94%) saturate(6500%) hue-rotate(356deg) brightness(98%) contrast(118%)}#notify-icon.shake{animation:shake .5s ease-in-out infinite;transform-origin:top center}.header-wrapper .right-area .header-icon #notify-icon:hover{animation:shake .5s ease-in-out infinite;cursor:pointer}@keyframes shake{0%{transform:rotate(0)}25%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}75%{transform:rotate(-5deg)}to{transform:rotate(0)}}.header-wrapper .right-area .header-icon .check-icon{display:none;position:absolute;top:.1vmin;right:.1vmin;z-index:3;pointer-events:none;background-color:#fff;min-width:.1vmin;height:1vmin;padding:0 .3vmin;border-radius:999px;border:.12vmin solid rgba(0,0,0,.25);box-shadow:0 1px 4px #00000059;align-items:center;justify-content:center}.header-wrapper .right-area .header-icon .check-icon[data-status=true]{display:flex;transform-origin:top center}.header-wrapper .right-area .header-icon .check-icon .check-number{font-size:.85vmin;font-weight:900;line-height:1;color:#0a0a0af2;transform:translateY(-.02vmin)}.header-wrapper .right-area .header-icon .check-icon .check-pulse{position:absolute;top:50%;left:50%;width:100%;height:100%;border-radius:50%;animation:notifyPulse 1.5s ease-out infinite;opacity:.35;z-index:-1;transform:translate(-50%,-50%)}@keyframes notifyPulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.6}to{transform:translate(-50%,-50%) scale(2.5);opacity:0}}.header-wrapper .right-area .header-icon #info-icon{background-image:url(../assets/img/icon/info.png);background-position:center;background-repeat:no-repeat;background-size:52%}.header-wrapper .right-area .header-icon #setting-icon{background-image:url(../assets/img/icon/setting.svg);background-position:center;background-repeat:no-repeat;background-size:52%}.header-wrapper .right-area .header-icon #language-icon{background-image:url(../assets/img/icon/language.png);background-position:center;background-repeat:no-repeat;background-size:52%}.header-wrapper .right-area .header-icon #user-icon{background-image:url(../assets/img/icon/people.svg);background-position:center;background-repeat:no-repeat;background-size:80%;filter:none}.notify-container{position:absolute;top:8vmin;right:1vmin;width:42vmin;max-height:0;padding:0;display:flex;flex-direction:column;overflow:hidden;z-index:10000;opacity:0;pointer-events:none;transform:translateY(-10px) scale(.95);transform-origin:top right;transition:all .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(145deg,#232332f7,#191928fa);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-default);border-radius:1.2vmin;box-shadow:0 10px 40px #00000080,0 0 0 1px #8578a00d inset}.notify-container.visible{max-height:55vmin;padding:0;opacity:1;transform:translateY(0) scale(1);overflow-y:auto;pointer-events:auto}.notify-container::-webkit-scrollbar{width:.4vmin}.notify-container::-webkit-scrollbar-track{background:transparent}.notify-container::-webkit-scrollbar-thumb{background:#8578a033;border-radius:1vmin}.notify-container::-webkit-scrollbar-thumb:hover{background:#8578a059}.notify-header{display:flex;justify-content:start;gap:1vmin;padding:0 2vmin}.clear-all-btn,.check-all-btn{background-color:var(--theme-color-bg);text-align:center;border-radius:var(--radius-md);padding:.5vmin 1.2vmin;width:9vmin;font-size:1.3vmin;box-shadow:0 0 3px #0a0a0ae6;cursor:pointer;margin:.05vmin auto;display:block;transition:background-color .2s ease}.notify-empty{overflow:hidden;text-align:center;padding:2.5vmin;font-size:1.5vmin;background-color:#1e1e1ee6;box-shadow:0 0 3px #0a0a0ae6;border-radius:10px;display:block}.clear-all-btn:hover{background-color:var(--theme-color-warn)}.check-all-btn:hover{background-color:var(--theme-color-bar-01)}.notify-list-wrapper{display:flex;flex-direction:column;flex-grow:1;overflow-y:auto;padding:.5vmin .5vmin .5vmin 1vmin;gap:1.5vmin}.notify-list-wrapper::-webkit-scrollbar{width:.5vmin}.notify-list-wrapper::-webkit-scrollbar-thumb{background-color:var(--theme-color-bar-01);border-radius:3px}.toast-container-in-list{display:flex;align-items:flex-start;gap:2vmin;padding:1.5vmin;color:var(--theme-color-font-wt);transition:background-color .3s;position:relative;background-color:var(--theme-color-bg-01);min-height:9vmin;border:1px solid var(--theme-color-box-02);box-sizing:border-box;border-radius:.5vmin}.toast-container-in-list:hover{background-color:#ffffff0d}.toast-container-in-list.info{border-left:5px solid var(--theme-color-info)}.toast-container-in-list.alert{border-left:5px solid var(--theme-color-alert)}.toast-container-in-list.caution{border-left:5px solid var(--theme-color-caution)}.toast-container-in-list.error{border-left:5px solid var(--theme-color-warn)}.toast-container-in-list .toast-icon{width:2.5vmin;height:2.5vmin;flex-shrink:0}.toast-container-in-list .toast-content{flex-grow:1;display:flex;flex-direction:column;gap:.5vmin;min-width:0}.toast-container-in-list .toast-header{display:flex;justify-content:flex-start;align-items:center;gap:.8vmin;margin-bottom:.7vmin}.toast-container-in-list .toast-title{font-size:1.9vmin;font-weight:700;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toast-container-in-list .toast-message{font-size:1.3vmin;margin:0;color:var(--text-secondary);line-height:1.4;white-space:normal;word-break:break-word}.toast-container-in-list .toast-close-btn{background:none;border:none;color:var(--theme-color-icon-disable);font-size:2vmin;cursor:pointer;align-self:flex-start;transition:color .2s;padding:0;line-height:1}.toast-container-in-list .toast-close-btn:hover{color:var(--theme-color-font-wt)}.toast-icon-wrapper-in-list{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:.8vmin;flex-shrink:0}.toast-count-badge-in-list{background-color:var(--color-danger);color:#fff;border-radius:999px;min-width:2vmin;height:2vmin;display:flex;align-items:center;justify-content:center;font-size:1.2vmin;font-weight:700;padding:0 .5vmin;box-shadow:0 1px 3px #0000004d;border:1px solid white}@keyframes fadeInUp{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.fade-out{animation:fadeOutDown .3s ease forwards}@keyframes fadeOutDown{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(20px)}}.waves .wave-1{fill:#603ba380}.waves .wave-2{fill:#4b1a5999}.waves .wave-3{fill:#682273b3}.waves .wave-4{fill:#603ba333}.notify-bell{display:inline-flex;align-items:center;line-height:0}.notify-bell-base{width:2.2vmin;height:2.2vmin;display:block}.notify-bell-blinkbox{position:relative;width:2.2vmin;height:2.2vmin;display:block}.notify-bell-bg,.notify-bell-step{position:absolute;inset:0;width:2.2vmin;height:2.2vmin;display:block}.notify-bell-bg{opacity:.18}.notify-bell-step{opacity:0;pointer-events:none;will-change:opacity;animation-iteration-count:infinite;animation-timing-function:ease-in-out;animation-fill-mode:both}.notify-bell.is-info .notify-bell-step{animation-duration:3s}.notify-bell.is-alert .notify-bell-step{animation-duration:2s}.notify-bell.is-error .notify-bell-step{animation-duration:1s}.notify-bell-step.step1{animation-name:bellStep1Soft}.notify-bell-step.step2{animation-name:bellStep2Soft}.notify-bell-step.step3{animation-name:bellStep3Soft}.notify-bell-step.step1{transform:scale(1);transform-origin:50% 50%}.notify-bell-step.step2{transform:scale(1.05);transform-origin:50% 50%}.notify-bell-step.step3{transform:scale(1.1);transform-origin:50% 50%}@keyframes bellStep1Soft{0%{opacity:0}6%{opacity:1}28%{opacity:1}40%{opacity:.18}50%{opacity:0}to{opacity:0}}@keyframes bellStep2Soft{0%{opacity:0}26%{opacity:0}34%{opacity:1}58%{opacity:1}70%{opacity:.18}80%{opacity:0}to{opacity:0}}@keyframes bellStep3Soft{0%{opacity:0}56%{opacity:0}64%{opacity:1}84%{opacity:1}92%{opacity:.28}to{opacity:0}}.alarm-icons-container{display:flex;align-items:center;gap:1vmin;margin-right:1.5vmin}.alarm-icon-wrapper{position:relative;cursor:pointer;transition:transform .2s ease}.alarm-icon-wrapper:hover{transform:scale(1.1)}.alarm-icon-wrapper.active{transform:scale(1.15)}.alarm-icon-button{position:relative;width:4.5vmin;height:4.5vmin;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0006;animation:alarmBgBlink 2s ease-in-out infinite}.alarm-icon-img{position:absolute;width:70%;height:70%;object-fit:contain;transition:opacity .5s ease}.alarm-icon-img.alarm-icon-red{filter:brightness(0) saturate(100%) invert(20%) sepia(94%) saturate(6500%) hue-rotate(356deg) brightness(98%) contrast(118%);opacity:1;animation:iconRedFade 2s ease-in-out infinite}.alarm-icon-img.alarm-icon-white{filter:brightness(0) invert(1);opacity:0;animation:iconWhiteFade 2s ease-in-out infinite}@keyframes alarmBgBlink{0%,to{background-color:#fffffff2;box-shadow:0 2px 8px #0000004d}50%{background-color:#dc3232;box-shadow:0 2px 15px #ff3232cc}}@keyframes iconRedFade{0%,to{opacity:1}45%,55%{opacity:0}}@keyframes iconWhiteFade{0%,to{opacity:0}45%,55%{opacity:1}}.alarm-badge{position:absolute;top:-.6vmin;right:-.8vmin;min-width:2vmin;height:2vmin;padding:0 .4vmin;background-color:var(--color-danger);border-radius:1vmin;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5));animation:badgePulse 1s ease-in-out infinite}.alarm-badge-count{font-size:1vmin;font-weight:800;color:#fff;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.3);white-space:nowrap}@keyframes alarmIconBlink{0%,to{background-color:#ffffffe6;box-shadow:0 2px 8px #0006}50%{background-color:#ff5050f2;box-shadow:0 2px 12px #ff4444b3}}@keyframes badgePulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.95}}.notify-dropdown-content{padding:0}.notify-dropdown-header{display:flex;align-items:center;gap:.8vmin;padding:.8vmin 1.2vmin;background:linear-gradient(90deg,#dc323226,#dc32320d);border-bottom:1px solid rgba(255,80,80,.2);position:relative}.notify-dropdown-header:before{content:"";position:absolute;left:0;top:0;bottom:0;width:.3vmin;background:linear-gradient(180deg,#f55,#c33);border-radius:0 .15vmin .15vmin 0}.notify-dropdown-icon{width:2.2vmin;height:2.2vmin;object-fit:contain;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.notify-dropdown-title{font-size:1.6vmin;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3);letter-spacing:.03em}.notify-dropdown-body{padding:1.2vmin;max-height:42vmin;overflow-y:auto}.notify-empty-message{text-align:center;font-size:1.2vmin;color:#ffffff80;padding:2vmin 1.5vmin;font-style:italic}.camera-badge-list{display:grid;grid-template-columns:repeat(4,1fr);gap:.7vmin;width:100%}.camera-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2vmin;padding:.5vmin .6vmin;background:#37374bb3;border:1px solid rgba(255,255,255,.1);border-radius:.6vmin;cursor:pointer;transition:all .2s ease;min-height:3.5vmin;position:relative;overflow:hidden}.camera-badge:hover{background:#50506ed9;border-color:#ff646480;transform:translateY(-1px);box-shadow:0 3px 10px #0000004d}.camera-badge:active{transform:translateY(0);background:#5a5a78e6}.badge-name{font-size:1.15vmin;font-weight:600;color:#fff;text-align:center;white-space:nowrap}.badge-detail{font-size:.9vmin;color:#ffffff8c;text-align:center;word-break:keep-all;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.header-call{position:relative;transition:all .2s ease}.header-call:hover{transform:scale(1.05)}.header-call .call-icon{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.header-call .call-icon svg{width:55%;height:55%;transition:all .2s ease}.header-call.connected-state{background:linear-gradient(135deg,#2ebf7440,#1fa46340)!important;border:1px solid rgba(46,191,116,.4)}.header-call .call-icon.connected svg{color:#fff}.header-call .call-icon.disconnected svg{color:#ffffff80}.header-call.in-call{background:linear-gradient(135deg,#2ebf7480,#1fa46380)!important;border:1px solid rgba(46,191,116,.7);animation:callPulse 2s ease-in-out infinite}.header-call.in-call .call-icon svg{color:#fff}.header-call.ringing{background:linear-gradient(135deg,#2ebf7480,#1fa46380)!important;border:1px solid rgba(46,191,116,.8);animation:ringingPulse .5s ease-in-out infinite}.header-call.ringing .call-icon svg{color:#fff;animation:phoneShake .5s ease-in-out infinite}.header-call .call-status-dot{position:absolute;top:.2vmin;right:.2vmin;width:.8vmin;height:.8vmin;background:#2ebf74;border-radius:50%;border:1px solid #fff;animation:statusBlink 1.5s ease-in-out infinite}.header-call .call-badge{position:absolute;top:-.3vmin;right:-.3vmin;width:1.5vmin;height:1.5vmin;background:linear-gradient(135deg,#2ebf74,#1fa463);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1vmin;font-weight:900;color:#fff;border:1px solid #fff;box-shadow:0 2px 6px #2ebf7480}.header-call .call-badge.pulse{animation:badgePulseGreen .5s ease-in-out infinite}@keyframes callPulse{0%,to{box-shadow:0 0 #2ebf7466}50%{box-shadow:0 0 0 6px #2ebf7400}}@keyframes ringingPulse{0%,to{transform:scale(1);box-shadow:0 0 #2ebf74b3}50%{transform:scale(1.05);box-shadow:0 0 0 8px #2ebf7400}}@keyframes phoneShake{0%,to{transform:rotate(0)}20%{transform:rotate(-12deg)}40%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}80%{transform:rotate(8deg)}}@keyframes statusBlink{0%,to{opacity:1}50%{opacity:.4}}@keyframes badgePulseGreen{0%,to{transform:scale(1);box-shadow:0 2px 6px #2ebf7480}50%{transform:scale(1.2);box-shadow:0 2px 10px #2ebf74cc}}.info-popup{min-width:42vmin;background:linear-gradient(165deg,#28283cfa,#191928fc);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.08);border-radius:1.2vmin;box-shadow:0 12px 40px #0000008c,0 0 0 1px #ffffff08 inset,0 1px #ffffff0d inset;z-index:10001;animation:infoPopupFadeIn .25s ease-out;overflow:hidden}@keyframes infoPopupFadeIn{0%{opacity:0;transform:translateY(-8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.info-popup-close{position:absolute;top:.8vmin;right:.8vmin;width:2.2vmin;height:2.2vmin;background:#ffffff14;border:none;border-radius:50%;color:#ffffff80;font-size:1.4vmin;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;line-height:1}.info-popup-close:hover{background:#ff50504d;color:#fff;transform:scale(1.1)}.info-popup-header{display:flex;align-items:center;gap:1vmin;padding:1.5vmin 1.5vmin 1.2vmin;background:linear-gradient(135deg,#643cb433,#3c287826);border-bottom:1px solid rgba(255,255,255,.06)}.info-popup-logo{width:3.5vmin;height:3.5vmin;background:linear-gradient(135deg,#7c4dff,#536dfe);border-radius:.8vmin;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px #7c4dff59}.info-popup-logo svg{width:2vmin;height:2vmin;color:#fff}.info-popup-header-text{display:flex;flex-direction:column;gap:.15vmin}.info-popup-title{font-size:1.4vmin;font-weight:700;color:#fff;letter-spacing:.02em}.info-popup-subtitle{font-size:1vmin;color:#ffffff80;font-weight:500}.info-popup-versions{display:flex;align-items:center;justify-content:center;gap:1.2vmin;padding:1.2vmin 1.5vmin;background:#00000026}.info-popup-version-item{display:flex;flex-direction:column;align-items:center;gap:.25vmin}.version-label{font-size:.9vmin;color:#ffffff73;font-weight:500;text-transform:uppercase;letter-spacing:.05em}.version-value{font-size:1.2vmin;color:#7c4dff;font-weight:700}.info-popup-version-divider{width:1px;height:2.5vmin;background:#ffffff1f}.info-popup-contact{display:flex;align-items:center;gap:1vmin;padding:1.2vmin 1.5vmin;border-top:1px solid rgba(255,255,255,.04)}.info-popup-contact .contact-icon{width:2vmin;height:2vmin;color:#fff6;flex-shrink:0}.contact-info{display:flex;flex-direction:column;gap:.15vmin}.contact-label{font-size:.85vmin;color:#fff6}.contact-value{font-size:1.1vmin;color:#ffffffd9;font-weight:500}.info-popup-section{padding:1vmin 1.5vmin 1.2vmin;border-top:1px solid rgba(255,255,255,.04)}.info-section-header{display:flex;align-items:center;gap:.5vmin;margin-bottom:.8vmin}.info-section-icon{width:1.5vmin;height:1.5vmin;color:#ffffff80;flex-shrink:0}.info-section-title{font-size:1.05vmin;font-weight:700;color:#ffffffd9;text-transform:uppercase;letter-spacing:.04em}.info-section-version{font-size:.9vmin;font-weight:700;color:#7c4dff;margin-left:auto;background:#7c4dff1f;padding:.15vmin .6vmin;border-radius:.4vmin}.info-page-table{width:100%;border-collapse:collapse;font-size:.85vmin}.info-page-table thead tr{border-bottom:1px solid rgba(255,255,255,.08)}.info-page-table th{padding:.4vmin .5vmin;text-align:left;font-size:.75vmin;font-weight:600;color:#ffffff59;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.info-page-table tbody tr{border-bottom:1px solid rgba(255,255,255,.03);transition:background .15s ease}.info-page-table tbody tr:hover{background:#7c4dff0f}.info-page-table tbody tr:last-child{border-bottom:none}.info-page-table td{padding:.45vmin .5vmin;color:#ffffffa6}.info-page-table .page-name{font-weight:600;color:#ffffffe6;white-space:nowrap}.info-page-table .page-version{color:#7c4dff;font-weight:600;font-family:monospace;white-space:nowrap}.info-page-table .page-date{color:#fff6;font-family:monospace;white-space:nowrap}.info-page-table .page-desc{color:#ffffff80;font-size:.8vmin;line-height:1.3}.info-ai-modules{display:flex;flex-direction:column;gap:.35vmin}.info-ai-module-row{display:flex;align-items:center;gap:.8vmin;padding:.4vmin .6vmin;border-radius:.4vmin;transition:background .15s ease}.info-ai-module-row:hover{background:#7c4dff0f}.ai-module-name{font-size:.85vmin;font-weight:600;color:#ffffffd9;min-width:10vmin}.ai-module-model{font-size:.8vmin;font-family:monospace;color:#fff6;flex:1}.ai-module-version{font-size:.85vmin;font-weight:700;color:#7c4dff;font-family:monospace;background:#7c4dff1a;padding:.1vmin .5vmin;border-radius:.3vmin}.info-popup-footer{display:flex;justify-content:space-between;align-items:center;padding:.8vmin 1.5vmin;background:#0003;font-size:.85vmin;color:#ffffff59}.logout-panel{position:fixed;width:fit-content;z-index:99999;padding:.35rem;border-radius:.75rem;background:#191b23eb;border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 8px 32px #00000073,0 0 0 1px #36a7d62e,inset 0 1px #ffffff0d;animation:logout-panel-enter .2s cubic-bezier(.16,1,.3,1);transform-origin:top right}@keyframes logout-panel-enter{0%{opacity:0;transform:scale(.92) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}.logout-btn{border:none;border-radius:.5rem;padding:.5rem .75rem;background:transparent;color:#fffc;font-size:.85rem;font-family:Pretendard,AppleSDGothicNeo,sans-serif;white-space:nowrap;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.4rem}.logout-btn:hover{background:linear-gradient(135deg,#68227373,#4c337c61);color:#fff}.logout-btn:active{background:linear-gradient(135deg,#682273b3,#4c337c99);transform:scale(.97)}.logout-btn svg{flex-shrink:0}.header-user{align-items:center;transform-origin:center;transition:transform .16s ease}.header-user:hover{transform:scale(1.03)}.header-user:active{transform:scale(.99)}.header-user .user-meta{display:flex;flex-direction:row;align-items:center;gap:1vmin;margin:0 1vmin 0 .6vmin;white-space:nowrap}.header-user .user-name{margin:0;font-size:1.25vmin;font-weight:600;white-space:nowrap}.header-wrapper .right-area .header-icon #calendar-noti-icon{background-image:url(../assets/img/icon/calendar.svg);background-position:center;background-repeat:no-repeat;background-size:52%}.header-wrapper .right-area .header-icon .icon-wrapper.active #calendar-noti-icon{filter:var(--theme-color-filter-active, var(--theme-color-filter-normal))}.alarm-badge.calendar-noti-badge{top:-.4vmin;right:-.4vmin;min-width:1.6vmin;height:1.6vmin;padding:0 .35vmin;border-radius:.8vmin}.alarm-badge.calendar-noti-badge .alarm-badge-count{font-size:.9vmin}.calendar-noti-panel{width:32vmin;max-height:48vmin;z-index:10001;display:flex;flex-direction:column;background:linear-gradient(145deg,#232332f7,#191928fa);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-default, rgba(255, 255, 255, .08));border-radius:1.2vmin;box-shadow:0 10px 40px #00000080,0 0 0 1px #8578a00d inset;animation:calendarNotiFadeIn .22s ease-out;overflow:hidden}@keyframes calendarNotiFadeIn{0%{opacity:0;transform:translateY(-8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.calendar-noti-header{display:flex;align-items:center;justify-content:space-between;gap:1vmin;padding:1vmin 1.4vmin;background:linear-gradient(90deg,#7878c826,#7878c80d);border-bottom:1px solid rgba(255,255,255,.06)}.calendar-noti-title{font-size:1.4vmin;font-weight:700;color:#fff;letter-spacing:.02em}.calendar-noti-mark-all{background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:.6vmin;padding:.3vmin .8vmin;color:#ffffffbf;font-size:1.05vmin;cursor:pointer;transition:all .18s ease}.calendar-noti-mark-all:hover{background:#ffffff14;color:#fff}.calendar-noti-body{flex:1;overflow-y:auto;padding:.6vmin;max-height:40vmin}.calendar-noti-body::-webkit-scrollbar{width:.4vmin}.calendar-noti-body::-webkit-scrollbar-thumb{background:#8578a033;border-radius:1vmin}.calendar-noti-empty{text-align:center;font-size:1.2vmin;color:#ffffff73;padding:2.5vmin 1.5vmin;font-style:italic}.calendar-noti-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5vmin}.calendar-noti-item{padding:.9vmin 1.1vmin;background:#37374b8c;border:1px solid rgba(255,255,255,.06);border-left:3px solid transparent;border-radius:.6vmin;cursor:pointer;transition:all .18s ease}.calendar-noti-item:hover{background:#50506ebf;transform:translateY(-1px)}.calendar-noti-item.is-unread{border-left-color:var(--theme-color-point, #682273);background:#6822731f}.calendar-noti-item.is-read{opacity:.7}.calendar-noti-item-title{font-size:1.25vmin;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:.3vmin}.calendar-noti-item-line{font-size:1.05vmin;color:#ffffffb3;line-height:1.3}.calendar-noti-item-line strong{color:#fff;font-weight:700}.calendar-noti-item-time{margin-top:.4vmin;font-size:.9vmin;color:#fff6;font-family:monospace}.calendar-noti-item-actions{display:flex;gap:.6vmin;margin-top:.8vmin}.calendar-noti-respond-btn{flex:1;padding:.6vmin 1vmin;border-radius:.4vmin;font-size:1vmin;cursor:pointer;transition:background .15s ease,border-color .15s ease}.calendar-noti-respond-btn.is-accept{background:#68227338;border:1px solid rgba(104,34,115,.5);color:#682273}.calendar-noti-respond-btn.is-accept:hover{background:#68227352}.calendar-noti-respond-btn.is-decline{background:transparent;border:1px solid rgba(255,255,255,.18);color:#ffffffb3}.calendar-noti-respond-btn.is-decline:hover{background:#ffffff14;color:#ffffffe6}.toast-container{height:calc(var(--theme-size-header-h) - .5vmin);min-width:40vmin;box-sizing:border-box;max-width:46vmin;display:flex;justify-content:center;align-items:center;gap:1.5vmin;padding:1vmin 1.5vmin;border-radius:var(--radius-md);color:var(--theme-color-font-wt);z-index:2000;box-shadow:0 .5vmin 2vmin #00000080;background-color:var(--theme-color-bg-02);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-default);position:relative;animation:slideInFromTop .4s cubic-bezier(.25,.8,.25,1),pulse-once .4s ease-in-out;transition:all .3s ease-in-out}.toast-container.clickable:hover{background-color:var(--theme-color-bg-01);cursor:pointer}.toast-container{max-height:15vmin;overflow:hidden}.toast-container.fade-out{max-height:0;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;opacity:0;border-width:0 1px;border-color:transparent}.toast-container.info{border-left:5px solid var(--theme-color-info)}.toast-container.alert{border-left:5px solid var(--theme-color-alert)}.toast-container.caution{border-left:5px solid var(--theme-color-caution)}.toast-container.error{border-left:5px solid var(--theme-color-warn)}.toast-container.stacked-2:before,.toast-container.stacked-3:before,.toast-container.stacked-3:after{content:"";position:absolute;left:0;right:0;height:100%;background-color:var(--theme-color-bg-02);border:1px solid var(--border-default);border-radius:var(--radius-md);z-index:-1;box-shadow:0 .5vmin 2vmin #00000080}.toast-container.stacked-2:before{top:5px;transform:scale(.95)}.toast-container.stacked-3:before{top:6px;transform:scale(.95)}.toast-container.stacked-3:after{top:12px;transform:scale(.9)}.toast-icon{width:2.5vmin;height:2.5vmin;flex-shrink:0}.toast-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center;gap:.1vmin;min-width:0}.toast-header{display:flex;justify-content:first baseline;align-items:center}.toast-title{font-size:1.3vmin;font-weight:700;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toast-time{font-size:1vmin;color:var(--text-tertiary);flex-shrink:0;padding-left:1vmin}.toast-message{font-size:1.2vmin;margin:0;color:var(--text-secondary);line-height:1.4;white-space:normal;word-break:break-word}.toast-close-btn{background:none;border:none;color:var(--text-tertiary);font-size:2vmin;cursor:pointer;transition:color .2s}.toast-close-btn:hover{color:var(--theme-color-font-wt)}@keyframes slideInFromTop{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideOutToTop{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@keyframes pulse-once{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}.header-validity{display:flex;align-items:center;gap:.6vmin;margin-right:.6vmin}.header-validity .session-validity{display:flex;align-items:center;gap:.45vmin;padding:.15vmin .85vmin .15vmin .15vmin;border-radius:3vmin;background:var(--theme-color-bg-icon-wrapper);border:1px solid rgba(255,255,255,.08);transform-origin:center;transition:transform .2s ease}.header-validity .session-validity.is-hovered{transform:scale(1.04)}.header-validity .session-extend-btn{width:3.2vmin;height:3.2vmin;border:none;border-radius:50%;background:var(--water-light-sky);color:#e0f6fff2;display:grid;place-items:center;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.header-validity .session-extend-btn:hover{transform:translateY(-1px);box-shadow:0 0 1vmin #6822738c}.header-validity .session-extend-btn.is-near-expiry{background:#ff5f5f38;color:#ff8f8f}.header-validity .session-refresh-icon{width:82%;height:82%;display:block}.header-validity .session-refresh-icon svg{width:100%;height:100%;display:block}.header-validity .session-refresh-icon img{width:100%;height:100%;display:block;object-fit:contain;filter:brightness(0) saturate(100%) invert(100%)}.header-validity .session-extend-btn.is-near-expiry .session-refresh-icon img{filter:brightness(0) saturate(100%) invert(72%) sepia(38%) saturate(2110%) hue-rotate(314deg) brightness(105%) contrast(101%)}.header-validity .user-session{min-width:8.4ch;font-size:1.25vmin;opacity:.9;color:#d8eef9;font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:.02em;white-space:nowrap;transition:color .3s ease,opacity .3s ease}.header-validity .user-session.is-near-expiry{color:#ff8f8f;opacity:1;animation:session-pulse-text 1.5s ease-in-out infinite}@keyframes session-pulse-text{0%,to{opacity:1}50%{opacity:.55}}.header-validity .control-mode-toggle{position:relative;width:5.2vmin;height:2.2vmin;border-radius:999px;border:1px solid rgba(255,255,255,.15);background:#ffffff14;cursor:pointer;padding:0;transition:background .3s ease,border-color .3s ease,box-shadow .3s ease}.header-validity .control-mode-toggle .control-lock-wrap{position:absolute;top:50%;left:calc(100% - 2.15vmin);width:1.9vmin;height:1.9vmin;transform:translateY(-50%);color:#ffffff8c;transition:left .3s cubic-bezier(.16,1,.3,1),color .3s ease}.header-validity .control-mode-toggle .control-lock-icon{display:block;width:100%;height:100%;background-color:currentColor;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;mask-repeat:no-repeat;mask-position:center;mask-size:contain}.header-validity .control-mode-toggle .control-lock-icon.is-off{-webkit-mask-image:url(../assets/img/icon/lock-off-svgrepo-com.svg);mask-image:url(../assets/img/icon/lock-off-svgrepo-com.svg)}.header-validity .control-mode-toggle .control-lock-icon.is-on{-webkit-mask-image:url(../assets/img/icon/lock-on-svgrepo-com.svg);mask-image:url(../assets/img/icon/lock-on-svgrepo-com.svg)}.header-validity .control-mode-toggle .control-toggle-knob{position:absolute;top:50%;left:.25vmin;width:1.7vmin;height:1.7vmin;transform:translateY(-50%);border-radius:50%;background:#ffffffb8;box-shadow:0 1px 4px #0000004d;transition:left .3s cubic-bezier(.16,1,.3,1)}.header-validity .control-mode-toggle.is-on{background:linear-gradient(135deg,#682273,#4b1a59);border-color:#68227399;box-shadow:0 0 12px #68227373,inset 0 1px #ffffff1f}.header-validity .control-mode-toggle.is-on .control-lock-wrap{left:.25vmin;color:#fff}.header-validity .control-mode-toggle.is-on .control-toggle-knob{left:calc(100% - 1.95vmin);background:#fff}.header-modal-overlay{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:99999;animation:modal-overlay-in .2s ease}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}.header-modal{min-width:320px;max-width:90vw;padding:1.75rem 2rem;background:#191b23f2;border:1px solid rgba(255,255,255,.1);border-radius:1rem;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 16px 48px #00000080,inset 0 1px #ffffff0d;animation:modal-enter .25s cubic-bezier(.16,1,.3,1);font-family:Pretendard,AppleSDGothicNeo,sans-serif}@keyframes modal-enter{0%{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.header-modal-title{margin:0 0 .5rem;font-size:1.1rem;font-weight:600;color:#eaeaea}.header-modal-desc{margin:0 0 1.25rem;font-size:.85rem;color:#ffffff80}.header-modal-error{margin:-.5rem 0 1rem;padding:.5rem .75rem;background:#ff50501f;border:1px solid rgba(255,80,80,.3);border-radius:.5rem;color:#ff6b6b;font-size:.8rem}.header-modal-input{width:100%;padding:.65rem .85rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:.5rem;color:#eaeaea;font-size:.9rem;font-family:inherit;outline:none;box-sizing:border-box;margin-bottom:1.25rem;transition:all .2s ease}.header-modal-input::placeholder{color:#ffffff4d}.header-modal-input:focus{border-color:#682273b8;background:#ffffff14;box-shadow:0 0 0 3px #68227333}.header-modal-actions{display:flex;gap:.5rem;justify-content:flex-end}.header-modal-btn-cancel{padding:.5rem 1rem;border:1px solid rgba(255,255,255,.15);border-radius:.5rem;background:transparent;color:#fff9;font-size:.85rem;font-family:inherit;cursor:pointer;transition:all .2s ease}.header-modal-btn-cancel:hover{border-color:#ffffff4d;color:#ffffffd9;background:#ffffff0d}.header-modal-btn-confirm{padding:.5rem 1.25rem;border:none;border-radius:.5rem;background:linear-gradient(135deg,#682273,#4b1a59);color:#fff;font-size:.85rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #68227361}.header-modal-btn-confirm:hover{background:linear-gradient(135deg,#7a2a87,#5a3d8e);box-shadow:0 4px 12px #68227385;transform:translateY(-1px)}.header-modal-btn-confirm:active{transform:translateY(0)}.side-bar-wrapper[status=close] .side-bar-button-wrapper{opacity:0;pointer-events:none;height:0;overflow:hidden}.side-bar-wrapper[status=open] .side-bar-button-wrapper{opacity:1;z-index:13}.side-bar-wrapper[status=close] .menu-button{background-image:url(../assets/img/icon/menu_close.svg);background-position:center;background-repeat:no-repeat;background-size:60%;width:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);height:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1.6);margin:var(--theme-size-margin-default) 0;opacity:.8;cursor:pointer;flex-shrink:0}.side-bar-wrapper[status=open] .menu-button{background-image:url(../assets/img/icon/menu_open.svg);background-position:center;background-repeat:no-repeat;background-size:60%;width:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);height:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1.6);margin:var(--theme-size-margin-default) 0;cursor:pointer;flex-shrink:0;transition:transform .1s ease}.menu-button:active{transform:scale(.8)}.menu-button:hover{content:"";background-color:#0000004d;border-radius:var(--radius-md)}.side-bar-wrapper .side-bar-button-wrapper{width:100%;margin-top:var(--theme-size-margin-default);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:calc(var(--theme-size-margin-default) * 1.5)}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button{width:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);height:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);opacity:.3;transition:all .3s ease-out;cursor:pointer}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button.selected{opacity:1}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#home{background-image:url(../assets/img/icon/home.svg);background-position:center;background-repeat:no-repeat;background-size:60%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#cctv{background-image:url(../assets/img/icon/shipping.svg);background-position:center;background-repeat:no-repeat;background-size:65%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#vr{background-image:url(../assets/img/icon/vr_360.png);background-position:center;background-repeat:no-repeat;background-size:65%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#uwb{background-image:url(../assets/img/icon/vital.png);background-position:center;background-repeat:no-repeat;background-size:70%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#aeye360{background-image:url(../assets/img/icon/aeye360.svg);background-position:center;background-repeat:no-repeat;background-size:90%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#live{background-image:url(../assets/img/icon/live.svg);background-position:center;background-repeat:no-repeat;background-size:75%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#draw{background-image:url(../assets/img/icon/draw.png);background-position:center;background-repeat:no-repeat;background-size:75%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#recon{background-image:url(../assets/img/icon/live.svg);background-position:center;background-repeat:no-repeat;background-size:75%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#env{background-image:url(../assets/img/icon/env.png);background-position:center;background-repeat:no-repeat;background-size:70%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#setting{background-image:url(../assets/img/icon/setting.svg);background-position:center;background-repeat:no-repeat;background-size:75%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#checklist{background-image:url(../assets/img/icon/checklist_side.svg);background-position:center;background-repeat:no-repeat;background-size:70%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#safety{background-image:url(../assets/img/icon/safety.svg);background-position:center;background-repeat:no-repeat;background-size:65%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#admin{background-image:url(../assets/img/icon/setting.svg);background-position:center;background-repeat:no-repeat;background-size:70%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#usage{background-image:url(../assets/img/icon/usage-chart.svg);background-position:center;background-repeat:no-repeat;background-size:62%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#plan-billing{background-image:url(../assets/img/icon/plan.svg);background-position:center;background-repeat:no-repeat;background-size:62%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#self-service{background-image:url(../assets/img/icon/self-service.svg);background-position:center;background-repeat:no-repeat;background-size:62%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#xr_memo{background-image:url(../assets/img/icon/xrmemo.svg);background-position:center;background-repeat:no-repeat;background-size:70%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#calendar{background-image:url(../assets/img/icon/calendar.svg);background-position:center;background-repeat:no-repeat;background-size:65%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#monitoring{background-image:url(../assets/img/icon/monitoring.svg);background-position:center;background-repeat:no-repeat;background-size:85%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button#fork_lift{background-image:url(../assets/img/icon/fork_lift.svg);background-position:center;background-repeat:no-repeat;background-size:85%;transition:transform .1s ease}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button.disabled{opacity:.15;cursor:not-allowed;pointer-events:none}.side-bar-wrapper .side-bar-edit-wrapper .edit-line{width:80%;height:2px;background-color:var(--theme-color-font-wt);opacity:.7;border-radius:1px}.side-bar-wrapper .side-bar-edit-wrapper{width:100%;height:100%;margin-top:var(--theme-size-margin-default);flex-direction:column;justify-content:flex-start;align-items:center;gap:calc(var(--theme-size-margin-default) * 1.5);opacity:0;transition:all .3s ease-out}.side-bar-wrapper .side-bar-edit-wrapper.active{opacity:1;transition:all .3s ease-out}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-button{width:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);height:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);opacity:.3;transition:all .3s ease-out;cursor:pointer}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit{width:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);height:calc(var(--theme-size-side-bar-w) - var(--theme-size-margin-default) * 1);opacity:1;transition:all .3s ease-out;cursor:pointer}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit:disable{opacity:.3;cursor:not-allowed}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit#delete{background-image:url(../assets/img/edit/delete.png);background-position:center;background-repeat:no-repeat;background-size:55%;transition:transform .1s ease}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit#undo{background-image:url(../assets/img/edit/undo.png);background-position:center;background-repeat:no-repeat;background-size:55%;transition:transform .1s ease}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit#redo{background-image:url(../assets/img/edit/redo.png);background-position:center;background-repeat:no-repeat;background-size:55%;transition:transform .1s ease}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit#move{background-image:url(../assets/img/edit/move.png);background-position:center;background-repeat:no-repeat;background-size:55%;transition:transform .1s ease}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit#scale{background-image:url(../assets/img/edit/scale.png);background-position:center;background-repeat:no-repeat;background-size:55%;transition:transform .1s ease}.side-bar-wrapper .side-bar-edit-wrapper .side-bar-edit#rotate{background-image:url(../assets/img/edit/rotate.png);background-position:center;background-repeat:no-repeat;background-size:55%;transition:transform .1s ease}.side-bar-button:active{transform:scale(.8)}.side-bar-wrapper .side-bar-button-wrapper .side-bar-button:hover{background-color:#0000004d;opacity:.8;border-radius:var(--radius-md)}.video-call-overlay{position:fixed;right:20px;bottom:100px;z-index:9999;background:linear-gradient(165deg,#19202df7,#0f141efa,#0a0f19fc);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border:1px solid rgba(255,255,255,.08);border-radius:20px;overflow:hidden;box-shadow:0 25px 80px #0000008c,0 10px 40px #0000004d,0 0 1px #ffffff1a,inset 0 1px #ffffff0a;cursor:grab;-webkit-user-select:none;user-select:none;will-change:transform;touch-action:none;animation:overlay-appear .35s cubic-bezier(.34,1.56,.64,1)}.video-call-overlay:before{content:"";position:absolute;top:0;left:20px;right:20px;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(0,185,237,.5) 30%,rgba(0,185,237,.8) 50%,rgba(0,185,237,.5) 70%,transparent 100%);opacity:.6}.video-call-overlay.dragging{cursor:grabbing;opacity:.97;box-shadow:0 35px 100px #0009,0 15px 50px #0006,0 0 60px #00b9ed14}.video-call-overlay.minimized{width:auto;border-radius:50px;background:linear-gradient(165deg,#1e2837f7,#141c28fa)}.video-call-overlay.minimized:before{display:none}.video-call-overlay .expanded-view.hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);visibility:hidden}.video-call-overlay.incoming{animation:incoming-glow 2s ease-in-out infinite;border-color:#2ebf744d}.video-call-overlay.incoming:before{background:linear-gradient(90deg,transparent 0%,rgba(46,191,116,.5) 30%,rgba(46,191,116,.8) 50%,rgba(46,191,116,.5) 70%,transparent 100%)}@keyframes overlay-appear{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes incoming-glow{0%,to{box-shadow:0 25px 80px #0000008c,0 0 40px #2ebf741a}50%{box-shadow:0 25px 80px #0000008c,0 0 60px #2ebf7440}}.minimized-view{display:flex;align-items:center;gap:14px;padding:14px 22px;cursor:pointer;transition:background .2s ease}.minimized-view:hover{background:#ffffff0a}.minimized-view:active{background:#ffffff0f}.minimized-view .minimized-icon{width:40px;height:40px;background:linear-gradient(135deg,#00c6ff,#0072ff);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 15px #0072ff66,inset 0 1px #fff3;animation:minimized-pulse 3s ease-in-out infinite}.minimized-view .minimized-icon svg{width:20px;height:20px;color:#fff}.minimized-view .minimized-status{font-size:15px;font-weight:600;color:#fff;white-space:nowrap;letter-spacing:.02em}.minimized-view .status-dot{width:10px;height:10px;background:#2ebf74;border-radius:50%;box-shadow:0 0 10px #2ebf7499;animation:status-glow 2s ease-in-out infinite}@keyframes minimized-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}@keyframes status-glow{0%,to{opacity:1;box-shadow:0 0 10px #2ebf7499}50%{opacity:.7;box-shadow:0 0 15px #2ebf74cc}}.incoming-call-view{display:flex;flex-direction:column;align-items:center;padding:36px 44px;gap:20px;min-width:240px}.incoming-call-view .incoming-icon{width:88px;height:88px;background:linear-gradient(135deg,#2ebf74,#1a9f5c);border-radius:50%;display:flex;align-items:center;justify-content:center;animation:phone-ring .6s ease-in-out infinite;box-shadow:0 10px 40px #2ebf7466,0 4px 15px #2ebf744d,inset 0 2px #ffffff26;position:relative}.incoming-call-view .incoming-icon:before,.incoming-call-view .incoming-icon:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:2px solid rgba(46,191,116,.4);animation:ring-pulse 2s ease-out infinite}.incoming-call-view .incoming-icon:before{width:110px;height:110px}.incoming-call-view .incoming-icon:after{width:130px;height:130px;animation-delay:.5s}.incoming-call-view .incoming-icon svg{width:38px;height:38px;color:#fff;position:relative;z-index:1}.incoming-call-view .incoming-info{display:flex;flex-direction:column;align-items:center;gap:6px}.incoming-call-view .incoming-info .incoming-title{font-size:20px;font-weight:700;color:#fff;letter-spacing:.02em}.incoming-call-view .incoming-info .incoming-subtitle{font-size:14px;color:#ffffff8c;font-weight:500}.incoming-call-view .call-actions{display:flex;gap:24px;margin-top:12px}@keyframes phone-ring{0%,to{transform:rotate(0)}10%{transform:rotate(-12deg)}30%{transform:rotate(12deg)}50%{transform:rotate(-8deg)}70%{transform:rotate(8deg)}90%{transform:rotate(-4deg)}}@keyframes ring-pulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.6}to{transform:translate(-50%,-50%) scale(1.5);opacity:0}}.call-btn{width:60px;height:60px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.34,1.56,.64,1);position:relative}.call-btn svg{width:26px;height:26px;position:relative;z-index:1}.call-btn.accept{background:linear-gradient(135deg,#2ebf74,#1a9f5c);color:#fff;box-shadow:0 6px 25px #2ebf7473,inset 0 1px #ffffff26}.call-btn.accept:hover{transform:scale(1.12);box-shadow:0 10px 35px #2ebf7480,inset 0 1px #ffffff26}.call-btn.accept:active{transform:scale(.95)}.call-btn.decline{background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;box-shadow:0 6px 25px #e74c3c73,inset 0 1px #ffffff26}.call-btn.decline svg{transform:rotate(135deg)}.call-btn.decline:hover{transform:scale(1.12);box-shadow:0 10px 35px #e74c3c80,inset 0 1px #ffffff26}.call-btn.decline:active{transform:scale(.95)}.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:linear-gradient(180deg,#ffffff0a,#ffffff03);border-bottom:1px solid rgba(255,255,255,.05);cursor:grab;position:relative}.overlay-header:after{content:"";position:absolute;top:6px;left:50%;transform:translate(-50%);width:36px;height:4px;background:#ffffff26;border-radius:2px}.overlay-header .overlay-title{font-size:14px;font-weight:600;color:#ffffffe6;letter-spacing:.03em}.overlay-header .overlay-status{display:flex;align-items:center;gap:7px;font-size:12px;color:#2ebf74;font-weight:600;letter-spacing:.02em}.overlay-header .overlay-status .status-dot{width:8px;height:8px;background:#2ebf74;border-radius:50%;box-shadow:0 0 8px #2ebf7499}.overlay-header .overlay-status .status-dot.live{animation:status-glow 2s ease-in-out infinite}.video-container{background:linear-gradient(180deg,#0a0a0a,#000);display:flex;align-items:center;justify-content:center;min-width:220px;max-width:420px;max-height:70vh;position:relative;margin:0 2px}.video-container:before{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.03);pointer-events:none;z-index:1}.video-container:after{content:"";position:absolute;top:0;left:0;right:0;height:40px;background:linear-gradient(180deg,rgba(0,0,0,.3) 0%,transparent 100%);pointer-events:none;z-index:1}.video-container .remote-video{display:block;width:auto;height:auto;max-width:100%;max-height:70vh;min-width:220px;min-height:165px;object-fit:contain;background:#000}.overlay-controls{display:flex;justify-content:center;align-items:center;gap:16px;padding:16px;background:linear-gradient(180deg,#0003,#0006);border-top:1px solid rgba(255,255,255,.04)}.overlay-controls .control-btn{width:48px;height:48px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.34,1.56,.64,1);position:relative}.overlay-controls .control-btn svg{width:20px;height:20px}.overlay-controls .control-btn.minimize{background:#ffffff0f;color:#ffffffd9;border:1px solid rgba(255,255,255,.08);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.overlay-controls .control-btn.minimize:hover{background:#ffffff1f;transform:scale(1.08);border-color:#ffffff26}.overlay-controls .control-btn.minimize:active{transform:scale(.95)}.overlay-controls .control-btn.end-call{background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;box-shadow:0 4px 20px #e74c3c66,inset 0 1px #ffffff26}.overlay-controls .control-btn.end-call svg{transform:rotate(135deg)}.overlay-controls .control-btn.end-call:hover{transform:scale(1.08);box-shadow:0 6px 25px #e74c3c80,inset 0 1px #ffffff26}.overlay-controls .control-btn.end-call:active{transform:scale(.95)}.app-toast{position:fixed;bottom:5rem;left:50%;width:max-content;max-width:min(90vw,32rem);transform:translate(-50%) translateY(1rem);display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem;background:#000a14f2;-webkit-backdrop-filter:blur(.75rem);backdrop-filter:blur(.75rem);border-radius:2rem;opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:9999;pointer-events:none}.app-toast.is-visible{opacity:1;transform:translate(-50%) translateY(0)}.app-toast.is-leaving{opacity:0;transform:translate(-50%) translateY(-.5rem)}.app-toast .app-toast-icon{width:1.25rem;height:1.25rem;flex-shrink:0}.app-toast .app-toast-icon svg{width:100%;height:100%}.app-toast .app-toast-message{font-size:.875rem;font-weight:500;white-space:nowrap}.app-toast.app-toast--success{border:.0625rem solid rgba(46,191,116,.5);box-shadow:0 .25rem 1.5rem #0006,0 0 1rem #2ebf7433}.app-toast.app-toast--success .app-toast-icon,.app-toast.app-toast--success .app-toast-message{color:#2ebf74}.app-toast.app-toast--error{border:.0625rem solid rgba(231,76,60,.5);box-shadow:0 .25rem 1.5rem #0006,0 0 1rem #e74c3c33}.app-toast.app-toast--error .app-toast-icon,.app-toast.app-toast--error .app-toast-message{color:#e74c3c}.app-toast.app-toast--warning{border:.0625rem solid rgba(245,166,35,.5);box-shadow:0 .25rem 1.5rem #0006,0 0 1rem #f5a62333}.app-toast.app-toast--warning .app-toast-icon,.app-toast.app-toast--warning .app-toast-message{color:#f5a623}.app-toast.app-toast--info{border:.0625rem solid rgba(0,185,237,.5);box-shadow:0 .25rem 1.5rem #0006,0 0 1rem #00b9ed33}.app-toast.app-toast--info .app-toast-icon,.app-toast.app-toast--info .app-toast-message{color:#00b9ed}.app-toast.app-toast--offline{border:.0625rem solid rgba(245,166,35,.5);box-shadow:0 .25rem 1.5rem #0006,0 0 1rem #f5a62333}.app-toast.app-toast--offline .app-toast-icon{color:#f5a623}.app-toast.app-toast--offline .app-toast-message{color:#fff}.login-page-wrapper{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--theme-color-bg-main, #191b23);padding:2rem;font-family:Pretendard,AppleSDGothicNeo,sans-serif;position:relative;overflow:hidden}.login-page-wrapper:before,.login-page-wrapper:after{content:"";position:absolute;border-radius:50%;filter:blur(100px);opacity:.35;pointer-events:none}.login-page-wrapper:before{width:520px;height:520px;background:radial-gradient(circle,rgba(104,34,115,.55) 0%,transparent 70%);top:-12%;right:-7%;animation:float-orb-1 12s ease-in-out infinite alternate}.login-page-wrapper:after{width:420px;height:420px;background:radial-gradient(circle,rgba(75,26,89,.6) 0%,transparent 70%);bottom:-12%;left:-7%;animation:float-orb-2 10s ease-in-out infinite alternate}@keyframes float-orb-1{0%{transform:translate(0) scale(1)}to{transform:translate(-40px,30px) scale(1.1)}}@keyframes float-orb-2{0%{transform:translate(0) scale(1)}to{transform:translate(30px,-40px) scale(1.15)}}.login-card{position:relative;z-index:1;display:flex;flex-direction:column;gap:1rem;width:min(100%,26rem);max-width:26rem;padding:2.5rem 2.5rem 3rem;background:#252528ad;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:1.25rem;box-shadow:0 8px 32px #0006,inset 0 1px #ffffff0d}.login-language-toggle{position:absolute;top:.95rem;right:.95rem;display:inline-flex;align-items:center;gap:.35rem;z-index:2}.login-language-btn{min-width:2.8rem;height:1.8rem;border:1px solid rgba(255,255,255,.16);border-radius:.45rem;background:#ffffff0d;color:#ffffffbd;font-size:.72rem;font-weight:700;line-height:1;letter-spacing:.02em;cursor:pointer;transition:all .2s ease}.login-language-btn:hover{border-color:#68227380;color:#fffffff2;background:#6822731f}.login-language-btn.is-active{border-color:#682273b8;color:#fff;background:linear-gradient(135deg,#4b1a59e6,#682273e6)}.login-logo{display:flex;justify-content:center;margin-bottom:.5rem}.login-logo img{height:2rem;opacity:.95}.login-heading{text-align:center;color:#eaeaea;font-size:1.5rem;font-weight:600;margin:0;letter-spacing:-.02em}.login-subtext{text-align:center;color:#ffffff80;font-size:.85rem;margin:-.25rem 0 .5rem}.login-field{display:flex;flex-direction:column;gap:.35rem}.login-label{font-size:.8rem;color:#ffffff8c;padding-left:.25rem;font-weight:500}.login-input{width:100%;min-height:2.9rem;padding:.75rem 1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:.625rem;color:#eaeaea;font-size:.95rem;font-family:inherit;outline:none;transition:all .25s ease;box-sizing:border-box}.login-input::placeholder{color:#ffffff52}.login-input:focus{border-color:#682273b3;background:#ffffff12;box-shadow:0 0 0 3px #6822732e}.login-select-wrapper{position:relative}.login-select-wrapper:after{content:"";position:absolute;top:50%;right:.95rem;width:.5rem;height:.5rem;border-right:2px solid rgba(255,255,255,.55);border-bottom:2px solid rgba(255,255,255,.55);transform:translateY(-70%) rotate(45deg);pointer-events:none}.login-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:2.5rem;cursor:pointer}.login-select option{color:#111;background:#fff}.password-input-wrapper .login-input{padding-right:2.75rem}.login-error{margin:-.25rem 0 0 .25rem;color:#ff6b6b;font-size:.8rem}.login-error-banner{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;background:#ff50501f;border:1px solid rgba(255,80,80,.3);border-radius:.625rem;color:#ff6b6b;font-size:.85rem;line-height:1.4;animation:error-shake .4s ease}.login-error-banner svg{flex-shrink:0;opacity:.9}@keyframes error-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.login-actions{display:flex;flex-direction:column;gap:.625rem;margin-top:.75rem}.login-btn-primary{width:100%;min-height:2.9rem;padding:.8rem;border:none;border-radius:.625rem;background:linear-gradient(135deg,#4b1a59,#682273);color:#fff;font-size:.95rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #68227359}.login-btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #68227380;filter:brightness(1.1)}.login-btn-primary:active{transform:translateY(0);box-shadow:0 2px 10px #6822734d}.login-btn-secondary{width:100%;min-height:2.7rem;padding:.7rem;border:1px solid rgba(255,255,255,.12);border-radius:.625rem;background:transparent;color:#ffffffad;font-size:.85rem;font-family:inherit;cursor:pointer;transition:all .25s ease}.login-btn-secondary:hover{border-color:#68227373;color:#ffffffeb;background:#6822731f}.login-divider{display:flex;align-items:center;gap:.75rem;margin:.25rem 0}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:#ffffff14}.login-divider span{font-size:.75rem;color:#ffffff59;white-space:nowrap}@media(max-width:768px){.login-page-wrapper{align-items:flex-start;justify-content:center;overflow-y:auto;padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(1rem + env(safe-area-inset-bottom))}.login-card{width:min(100%,24.5rem);max-width:24.5rem;margin:auto;padding:2rem 1.25rem 2.25rem;gap:.875rem}.login-heading{font-size:1.3rem}.login-language-toggle{top:.75rem;right:.75rem}.login-language-btn{min-width:2.5rem;height:1.7rem;font-size:.68rem}.login-input{font-size:.9rem;min-height:2.85rem;padding:.72rem .9rem}.login-btn-primary,.login-btn-secondary{min-height:2.85rem;font-size:.9rem}.password-input-wrapper .login-input{padding-right:3rem}}@media(max-width:480px){.login-page-wrapper{padding:calc(.75rem + env(safe-area-inset-top)) .75rem calc(.9rem + env(safe-area-inset-bottom))}.login-card{max-width:100%;padding:1.4rem 1rem 1.6rem;border-radius:.9rem}.login-language-toggle{top:.6rem;right:.6rem;gap:.3rem}.login-language-btn{min-width:2.3rem;height:1.6rem;font-size:.65rem}.login-heading{font-size:1.15rem}.login-logo img{height:1.4rem}}.signup-page-wrapper{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--theme-color-bg-main, #191b23);padding:2rem;font-family:Pretendard,AppleSDGothicNeo,sans-serif;position:relative;overflow:hidden}.signup-page-wrapper:before,.signup-page-wrapper:after{content:"";position:absolute;border-radius:50%;filter:blur(100px);opacity:.35;pointer-events:none}.signup-page-wrapper:before{width:520px;height:520px;background:radial-gradient(circle,rgba(104,34,115,.55) 0%,transparent 70%);top:-12%;right:-7%;animation:float-orb-signup-1 12s ease-in-out infinite alternate}.signup-page-wrapper:after{width:420px;height:420px;background:radial-gradient(circle,rgba(75,26,89,.6) 0%,transparent 70%);bottom:-12%;left:-7%;animation:float-orb-signup-2 10s ease-in-out infinite alternate}@keyframes float-orb-signup-1{0%{transform:translate(0) scale(1)}to{transform:translate(-40px,30px) scale(1.1)}}@keyframes float-orb-signup-2{0%{transform:translate(0) scale(1)}to{transform:translate(30px,-40px) scale(1.15)}}.signup-card{position:relative;z-index:1;display:flex;flex-direction:column;gap:1rem;width:min(100%,26rem);max-width:26rem;padding:2.5rem 2.5rem 3rem;background:#252528ad;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08);border-radius:1.25rem;box-shadow:0 8px 32px #0006,inset 0 1px #ffffff0d}.signup-logo{display:flex;justify-content:center;margin-bottom:.5rem}.signup-logo img{height:2rem;opacity:.95}.signup-heading{text-align:center;color:#eaeaea;font-size:1.5rem;font-weight:600;margin:0;letter-spacing:-.02em}.signup-subtext{text-align:center;color:#ffffff80;font-size:.85rem;margin:-.25rem 0 .5rem}.signup-field{display:flex;flex-direction:column;gap:.35rem}.signup-label{font-size:.8rem;color:#ffffff8c;padding-left:.25rem;font-weight:500}.signup-input{width:100%;min-height:2.9rem;padding:.75rem 1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:.625rem;color:#eaeaea;font-size:.95rem;font-family:inherit;outline:none;transition:all .25s ease;box-sizing:border-box}.signup-input::placeholder{color:#ffffff52}.signup-input:focus{border-color:#682273b3;background:#ffffff12;box-shadow:0 0 0 3px #6822732e}.signup-select-wrapper{position:relative}.signup-select-wrapper:after{content:"";position:absolute;top:50%;right:.95rem;width:.5rem;height:.5rem;border-right:2px solid rgba(255,255,255,.55);border-bottom:2px solid rgba(255,255,255,.55);transform:translateY(-70%) rotate(45deg);pointer-events:none}.signup-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:2.5rem;cursor:pointer}.signup-select option{color:#111;background:#fff}.password-input-wrapper{position:relative}.password-input-wrapper .signup-input{padding-right:2.75rem}.password-toggle-btn{position:absolute;top:50%;right:.65rem;transform:translateY(-50%);width:2rem;height:2rem;border:0;border-radius:.45rem;background:transparent;color:#ffffff8c;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.password-toggle-btn:hover{color:#ffffffeb;background:#68227324}.signup-error{margin:-.25rem 0 0 .25rem;color:#ff6b6b;font-size:.8rem}.signup-error-banner,.signup-success-banner{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;border-radius:.625rem;font-size:.85rem;line-height:1.4}.signup-error-banner svg,.signup-success-banner svg{flex-shrink:0;opacity:.9}.signup-error-banner{background:#ff50501f;border:1px solid rgba(255,80,80,.3);color:#ff6b6b}.signup-success-banner{background:#25b67624;border:1px solid rgba(37,182,118,.32);color:#5bd599}.signup-actions{display:flex;flex-direction:column;gap:.625rem;margin-top:.75rem}.signup-btn-primary{width:100%;min-height:2.9rem;padding:.8rem;border:none;border-radius:.625rem;background:linear-gradient(135deg,#4b1a59,#682273);color:#fff;font-size:.95rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #68227359}.signup-btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #68227380;filter:brightness(1.1)}.signup-btn-primary:active{transform:translateY(0);box-shadow:0 2px 10px #6822734d}.signup-btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.signup-btn-secondary{width:100%;min-height:2.7rem;padding:.7rem;border:1px solid rgba(255,255,255,.12);border-radius:.625rem;background:transparent;color:#ffffffad;font-size:.85rem;font-family:inherit;cursor:pointer;transition:all .25s ease}.signup-btn-secondary:hover{border-color:#68227373;color:#ffffffeb;background:#6822731f}.signup-btn-secondary:disabled{opacity:.6;cursor:not-allowed}.signup-divider{display:flex;align-items:center;gap:.75rem;margin:.25rem 0}.signup-divider:before,.signup-divider:after{content:"";flex:1;height:1px;background:#ffffff14}.signup-divider span{font-size:.75rem;color:#ffffff59;white-space:nowrap}.signup-reveal-fields{display:flex;flex-direction:column;gap:1rem;animation:signup-reveal-fields .28s ease-out}@keyframes signup-reveal-fields{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.signup-page-wrapper{align-items:flex-start;justify-content:center;overflow-y:auto;padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(1rem + env(safe-area-inset-bottom))}.signup-card{width:min(100%,24.5rem);max-width:24.5rem;margin:auto;padding:2rem 1.25rem 2.25rem;gap:.875rem}.signup-heading{font-size:1.3rem}.signup-input{font-size:.9rem;min-height:2.85rem;padding:.72rem .9rem}.signup-btn-primary,.signup-btn-secondary{min-height:2.85rem;font-size:.9rem}.password-input-wrapper .signup-input{padding-right:3rem}}@media(max-width:480px){.signup-page-wrapper{padding:calc(.75rem + env(safe-area-inset-top)) .75rem calc(.9rem + env(safe-area-inset-bottom))}.signup-card{max-width:100%;padding:1.4rem 1rem 1.6rem;border-radius:.9rem}.signup-heading{font-size:1.15rem}.signup-logo img{height:1.4rem}}.live-drawing-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:20}.live-drawing-overlay.is-dragging,.live-drawing-overlay.is-dragging *{cursor:grabbing!important}.live-drawing-toolbar{position:absolute;top:var(--space-sm);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-sm);z-index:21;padding:var(--space-xs) var(--space-lg);background:var(--surface-inset);border:1px solid var(--border-default);border-radius:var(--radius-sm)}.cctv-grid-wrapper.is-expanded .live-drawing-toolbar{position:static;transform:none;border-radius:0;border-top:none;border-left:none;border-right:none;flex-shrink:0}.mode-badge{font-size:var(--font-2xs);font-weight:700;padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-xs);text-transform:uppercase;letter-spacing:.06em}.mode-badge.drawing{background:#48d2781f;color:#48d278e6;border:1px solid rgba(72,210,120,.25);animation:sb-live-blink 1.5s ease-in-out infinite}.mode-badge.editing{background:#facc151f;color:#facc15e6;border:1px solid rgba(250,204,21,.25)}.mode-badge.idle{background:#8cb4f014;color:var(--text-tertiary);border:1px solid rgba(140,180,240,.1)}.live-drawing-toolbar button{font-size:var(--font-2xs);font-weight:600;padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-xs);border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all .15s ease;display:flex;align-items:center;gap:var(--space-xs)}.live-drawing-toolbar button:hover:not(:disabled){background:var(--surface-raised);border-color:var(--border-strong);color:var(--text-primary)}.live-drawing-toolbar button:disabled{opacity:.35;cursor:not-allowed}.live-drawing-toolbar button.active{background:#48d2781f;border-color:#48d2784d;color:#48d278e6}.live-drawing-toolbar button.primary{background:#6ea2f81a;border-color:#6ea2f840;color:#6ea2f8}.live-drawing-toolbar button.primary:hover:not(:disabled){background:#6ea2f82e;border-color:#6ea2f866}.live-drawing-toolbar button.danger:not(:disabled){color:#f87171cc;border-color:#f8717126}.live-drawing-toolbar button.danger:not(:disabled):hover{background:#f871711a;border-color:#f871714d;color:#f87171}.live-drawing-toolbar button.secondary{background:var(--surface-base);color:var(--text-secondary)}.live-drawing-toolbar button.secondary:hover:not(:disabled){background:var(--surface-raised);color:var(--text-primary)}.toolbar-separator{width:1px;height:1.6vmin;background:var(--border-default);flex-shrink:0}.hint-text{font-size:var(--font-2xs);color:var(--text-tertiary);margin-left:auto;font-variant-numeric:tabular-nums;white-space:nowrap}.live-drawing-toast{position:fixed;top:100px;left:50%;transform:translate(-50%) translateY(0);z-index:9999;pointer-events:none;display:flex;align-items:center;gap:10px;padding:12px 20px;background:#000a14f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:50px;font-size:14px;font-weight:500;white-space:nowrap;animation:live-toast-in .3s cubic-bezier(.4,0,.2,1) forwards,live-toast-out .3s cubic-bezier(.4,0,.2,1) 1.5s forwards}.live-drawing-toast:before{content:"";display:block;width:18px;height:18px;flex-shrink:0;background-size:contain;background-repeat:no-repeat;background-position:center}.live-drawing-toast.success{border:1px solid rgba(46,191,116,.5);box-shadow:0 4px 24px #0006,0 0 16px #2ebf7440;color:#2ebf74}.live-drawing-toast.success:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232ebf74' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E")}.live-drawing-toast.warn{border:1px solid rgba(231,76,60,.5);box-shadow:0 4px 24px #0006,0 0 16px #e74c3c40;color:#e74c3c}.live-drawing-toast.warn:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e74c3c' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2m3 0v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6h14z'/%3E%3C/svg%3E")}.live-drawing-toast.info{border:1px solid rgba(0,185,237,.5);box-shadow:0 4px 24px #0006,0 0 16px #00b9ed40;color:#00b9ed}.live-drawing-toast.info:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2300b9ed' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z'/%3E%3Cpath d='M17 21v-8H7v8M7 3v5h8'/%3E%3C/svg%3E")}@keyframes live-toast-in{0%{opacity:0;transform:translate(-50%) translateY(-16px) scale(.95)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@keyframes live-toast-out{0%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-12px) scale(.95)}}.draw-area{overflow:hidden}.draw-area.is-drawing{cursor:crosshair;box-shadow:inset 0 0 0 2px #48d27833}.draw-area.is-editing{cursor:default}.draw-svg{position:absolute;inset:0;width:100%;height:100%;z-index:10;pointer-events:none;overflow:hidden}.is-drawing .draw-svg,.is-editing .draw-svg{pointer-events:auto}.draw-polygon{fill:#6ea2f81f;stroke:#6ea2f899;stroke-width:2px;pointer-events:auto;cursor:pointer;transition:fill .15s ease}.draw-polygon:hover{fill:#6ea2f838;stroke:#6ea2f8e6}.draw-polygon.is-selected{fill:#facc1526;stroke:#facc15d9;stroke-width:3px;cursor:move}.draw-polyline{fill:none;stroke:#48d278bf;stroke-width:2px;stroke-dasharray:6 4;pointer-events:none}.draw-vertex-dot{position:absolute;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:11;background:#48d278e6;border:1.5px solid rgba(255,255,255,.7)}.draw-vertex-dot.is-first{width:14px;height:14px;background:#ffc83ce6;border:2px solid rgba(255,255,255,.9);box-shadow:0 0 6px #ffc83c80}.draw-vertex-dot.is-saved{width:8px;height:8px;background:#6ea2f880;border:1px solid rgba(255,255,255,.3);cursor:grab;pointer-events:auto}.draw-vertex-dot.is-saved.is-selected{background:#facc15cc;border-color:#fff9;width:10px;height:10px}.draw-vertex-dot.is-saved.is-active{background:#ffdc3c;border-color:#fff;width:12px;height:12px;box-shadow:0 0 6px #ffdc3c99;cursor:grabbing}.cctv-video-wrapper{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center}.cctv-media-stack{position:relative;width:100%;height:100%}.cctv-video,.cctv-video-stream,.cctv-overlay-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.cctv-video,.cctv-video-stream{display:block}.cctv-overlay-canvas{pointer-events:none;z-index:2}.cctv-player-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;pointer-events:none;z-index:3}.cctv-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-xs, .375rem);font-size:var(--font-xs, .75rem);color:var(--text-tertiary, rgba(255, 255, 255, .75));background:#00000080;z-index:2}.cctv-overlay--connecting{color:#facc15e6;background:#00000052}.cctv-overlay--disabled{background:#0a101ed9;opacity:.5}.cctv-overlay-skeleton{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs, .375rem)}.cctv-overlay-skeleton .skeleton-bar{height:.4vmin;min-height:2px;border-radius:2px;background:#facc1526}.cctv-overlay-skeleton .skeleton-bar:nth-child(1){width:6vmin;min-width:42px}.cctv-overlay-skeleton .skeleton-bar:nth-child(2){width:4vmin;min-width:30px}.cctv-overlay-skeleton .skeleton-bar:nth-child(3){width:5vmin;min-width:36px}.cctv-overlay-meta{font-size:var(--font-2xs, .6875rem);color:#ffffff9e;font-variant-numeric:tabular-nums;margin-top:var(--space-2xs, .25rem)}.cctv-info-bar{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs, .375rem);padding:var(--space-xs, .375rem) var(--space-sm, .5rem);background:linear-gradient(180deg,rgba(0,0,0,.4),transparent);color:#ffffffd9;font-size:var(--font-2xs, .6875rem);font-weight:600;box-sizing:border-box}.cctv-info-title{padding:.15vmin .4vmin;border-radius:.25vmin;background:#00000059;font-size:calc(var(--font-2xs, .6875rem) * 1.05);font-weight:900;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.5)}.cctv-info-stats{display:flex;align-items:center;gap:var(--space-xs, .375rem)}.status-dot{display:inline-block;width:.6vmin;height:.6vmin;min-width:6px;min-height:6px;max-width:6px;max-height:6px;aspect-ratio:1/1;border-radius:50%;flex-shrink:0;flex-grow:0;align-self:center}.status-dot--disabled{background:var(--text-disabled, rgba(160, 167, 182, .7))}.alert-detail-banner{position:absolute;top:.4vmin;left:50%;transform:translate(-50%);z-index:5;display:flex;align-items:center;gap:.6vmin;padding:.4vmin .8vmin;border-radius:.4vmin;font-size:.85vmin;color:#fff;background:#1e1e28eb;border:1px solid rgba(255,255,255,.25);box-shadow:0 2px 8px #0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:alertBannerSlideIn .25s ease-out;max-width:90%;pointer-events:auto}.alert-detail-banner.toast-ppe{border-color:#dc2626b3;background:linear-gradient(135deg,#dc2626d9,#1e1e28eb)}.alert-detail-banner.toast-zone{border-color:#ea8a10b3;background:linear-gradient(135deg,#ea8a10d9,#1e1e28eb)}.alert-detail-banner.toast-vital{border-color:#a832c3b3;background:linear-gradient(135deg,#a832c3d9,#1e1e28eb)}.alert-detail-banner.toast-fire{border-color:#dc2626e6;background:linear-gradient(135deg,#dc2626e6,#1e1e28eb)}.alert-detail-content{display:flex;align-items:center;gap:.6vmin;flex-wrap:wrap}.alert-detail-title{font-weight:700;white-space:nowrap}.alert-detail-items{display:flex;flex-wrap:wrap;gap:.3vmin;opacity:.95}.alert-detail-item{white-space:nowrap}.alert-detail-close{background:transparent;border:none;color:#ffffffb3;font-size:1.2vmin;cursor:pointer;padding:0 .3vmin;line-height:1;transition:color .15s}.alert-detail-close:hover{color:#fff}@keyframes alertBannerSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-.5vmin)}to{opacity:1;transform:translate(-50%) translateY(0)}}.cell-toasts{position:absolute;top:.4vmin;right:.4vmin;z-index:4;display:flex;flex-direction:column;gap:.25vmin;pointer-events:none;width:8vmin}.toast{width:100%;box-sizing:border-box;padding:.3vmin .5vmin;border-radius:.35vmin;font-size:.8vmin;font-weight:700;font-family:Segoe UI,Roboto,sans-serif;letter-spacing:.02em;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:space-between;gap:.3vmin;animation:toastFadeIn .35s ease-out;transition:opacity .25s ease,box-shadow .2s ease,border-color .2s ease;white-space:nowrap}.toast--clickable{pointer-events:auto;cursor:pointer}.toast--clickable:hover{opacity:.88}.toast--clickable:active{opacity:.7}.toast--active{border-color:#ffffffb3;filter:brightness(1.3);transform:scale(1.05)}.toast-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.1vmin;height:1.1vmin;padding:0 .25vmin;border-radius:999px;background:#ffffff40;font-size:.7vmin;font-weight:700;line-height:1;flex-shrink:0}.toast-ppe{background:#dc2626d1;color:#fff}.toast-zone{background:#ea8a10d1;color:#fff}.toast-fire{background:#dc2626eb;color:#fff;animation:toastFadeIn .35s ease-out,toastFireGlow 1.2s ease-in-out infinite}.toast-vital{background:#a832c3d1;color:#fff}@keyframes toastFadeIn{0%{opacity:0}to{opacity:1}}@keyframes toastFireGlow{0%,to{box-shadow:0 0 .6vmin #f306}50%{box-shadow:0 0 1.2vmin #f30c}}.drawing-toolbar .icon{width:1.6vmin;height:1.6vmin;background-size:contain;background-repeat:no-repeat;background-position:center}.draw-icon{background-image:url(../assets/img/icon/draw.png)}.erase-icon{background-image:url(../assets/img/edit/delete.png)}.clear-icon{background-image:url(../assets/img/icon/clear.png)}.undo-icon{background-image:url(../assets/img/edit/undo.png)}.redo-icon{background-image:url(../assets/img/edit/redo.png)}.save-icon{background-image:url(../assets/img/icon/capture.png)}.drawing-modal-overlay{position:fixed;inset:0;z-index:1100;background:#00040fbf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:drawing-fade-in .15s ease;--video-aspect-ratio: 16 / 9}@keyframes drawing-fade-in{0%{opacity:0}to{opacity:1}}@keyframes drawing-scale-in{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.drawing-modal-content{display:flex;width:85vw;aspect-ratio:var(--video-aspect-ratio);max-height:85vh;max-width:calc(85vh * var(--video-aspect-ratio));background:var(--theme-color-bg-01);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:0 8px 40px #000a1e80;overflow:hidden;animation:drawing-scale-in .2s ease}.drawing-area{height:100%;aspect-ratio:var(--video-aspect-ratio);position:relative;overflow:hidden;background:linear-gradient(180deg,#0a1224a6,#0c142a59 40%,#0a12248c)}.drawing-tooltip{position:absolute;top:var(--space-md);left:var(--space-md);background:#00000080;color:#ffffffd9;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:var(--font-xs);z-index:10;pointer-events:none;border:1px solid rgba(140,180,240,.1)}.drawing-tooltip p{margin:var(--space-2xs) 0}.settings-modal-overlay{position:fixed;inset:0;z-index:1200;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:settings-fade-in .2s ease}@keyframes settings-fade-in{0%{opacity:0}to{opacity:1}}@keyframes settings-scale-in{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.settings-modal-content{width:36vmin;background:var(--surface-base);border:1px solid var(--border-default);border-radius:var(--radius-md);overflow:hidden;animation:settings-scale-in .2s ease;color:var(--text-primary)}.settings-modal-content h2{margin:0;padding:var(--space-md) var(--space-lg);display:flex;align-items:center;justify-content:space-between;background:var(--surface-inset);border-bottom:1px solid var(--border-default);font-size:var(--font-lg);font-weight:600;color:#fff;border-radius:var(--radius-md) var(--radius-md) 0 0}.settings-body{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.settings-form{width:100%;display:flex;flex-direction:column;gap:var(--space-md)}.form-group{display:flex;flex-direction:column;gap:var(--space-2xs)}.form-group label{font-size:var(--font-xs);font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.form-group input{padding:var(--space-sm) var(--space-md);background:var(--surface-inset);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-md);outline:none;transition:border-color .2s}.form-group input:focus{border-color:var(--theme-color-point);box-shadow:0 0 0 2px #6ea2f826}.form-group input[readonly]{opacity:.7}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-default)}.modal-actions button{padding:var(--space-sm) var(--space-xl);border:1px solid var(--border-default);border-radius:var(--radius-sm);font-size:var(--font-sm);font-weight:600;cursor:pointer;transition:all .15s}.modal-actions button:hover{transform:none}.modal-actions button:first-of-type{background:#ffffff0a;color:var(--text-secondary);border-color:var(--border-default)}.modal-actions button:first-of-type:hover{background:#ffffff14;color:var(--text-primary)}.modal-actions .save-btn{background:linear-gradient(135deg,#6ea2f84d,#6ea2f826);border-color:#6ea2f866;color:#fff}.modal-actions .save-btn:hover{background:linear-gradient(135deg,#6ea2f866,#6ea2f833)}.info-sidebar{width:30vmin;flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-md);background:var(--surface-base);border:1px solid var(--border-default);border-radius:var(--cctv-panel-radius, var(--radius-sm));color:var(--text-primary);z-index:100}.sidebar-content{position:relative;padding:var(--space-md);height:100%;display:flex;flex-direction:column;min-height:0}.detected-people-section{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:var(--space-sm)}.sidebar-section{gap:var(--space-md)}.sidebar-title{font-size:var(--font-xs);font-weight:700;margin-bottom:var(--space-sm);padding-bottom:var(--space-xs);border-bottom:1px solid var(--border-default);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.summary-grid{display:grid;padding-top:var(--space-sm);grid-template-columns:1fr 1fr;gap:var(--space-sm)}.summary-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--surface-inset);border:1px solid var(--border-default);border-radius:var(--radius-xs);min-height:5.2vmin;transition:border-color .18s ease,background .18s ease}.summary-item:hover{border-color:var(--border-strong);background:var(--surface-raised)}.detected-icon{width:2.6vmin;height:2.6vmin;background-image:url(../assets/img/icon/people.svg);background-repeat:no-repeat;background-size:contain;background-position:center;flex-shrink:0}.intruding-icon{width:2.6vmin;height:2.6vmin;background-color:var(--color-danger);-webkit-mask-image:url(../assets/img/icon/intruding.svg);mask-image:url(../assets/img/icon/intruding.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;flex-shrink:0}.summary-text p{margin:0;font-size:var(--font-2xs);font-weight:600;color:var(--text-tertiary);margin-bottom:var(--space-2xs)}.summary-text .value{display:flex;font-size:var(--font-lg);font-weight:700;color:var(--text-primary);text-align:left;font-variant-numeric:tabular-nums;line-height:1.1}.person-list{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;gap:var(--space-xs);border-radius:var(--radius-sm);overflow-y:auto;margin-right:-.5vmin;padding-right:.5vmin}.person-list::-webkit-scrollbar{width:4px}.person-list::-webkit-scrollbar-track{background-color:transparent}.person-list::-webkit-scrollbar-thumb{background-color:#8cb4f026;border-radius:2px}.person-list::-webkit-scrollbar-thumb:hover{background-color:#8cb4f04d}.summary-info-section{margin-top:auto;padding-top:var(--space-sm);border-top:1px solid var(--border-default);width:100%;flex-shrink:0}.no-detection{color:var(--text-tertiary);text-align:center;margin-top:var(--space-md);font-size:var(--font-xs)}.person-card{position:relative;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--surface-inset);border:1px solid transparent;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .14s ease}.person-card:hover{background:var(--surface-raised);border-color:#8cb4f029}.person-card.selected{background:#6ea2f814;border-color:#6ea2f8c7;box-shadow:inset 0 0 0 1px #6ea2f833}.person-card.intruding{background:#f8717114;border-color:#f8717180}.person-card.intruding.selected{border-color:#f87171d1;box-shadow:inset 0 0 0 1px #f8717138}.face-image-container{width:4.2vmin;height:4.2vmin;min-width:4.2vmin;border-radius:50%;overflow:hidden;display:flex;justify-content:center;align-items:center;background:#ffffff0f;border:1px solid rgba(140,180,240,.12)}.face-image{width:100%;height:100%;object-fit:cover}.face-image-placeholder{font-size:var(--font-2xs);color:var(--text-tertiary)}.person-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-2xs)}.person-id-row{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.person-id{text-align:left;font-weight:700;font-size:var(--font-xs);color:var(--text-primary);font-variant-numeric:tabular-nums}.person-location{display:flex;align-items:center;gap:var(--space-xs);margin-left:auto;min-width:0}.person-zone{font-size:.7vmin;font-weight:700;padding:.1vmin .45vmin;border-radius:.25vmin;white-space:nowrap}.person-zone.mixing{background:#50d2d233;color:#50d2d2f2}.person-zone.forming{background:#c084fc33;color:#c084fcf2}.person-zone.outdoor{background:#50d2d233;color:#50d2d2f2}.person-zone.indoor{background:#c084fc33;color:#c084fcf2}.person-camera{font-size:var(--font-2xs);color:var(--text-tertiary);font-weight:600;white-space:nowrap}.vital-signs{display:flex;align-items:center;gap:var(--space-md)}.vital-item{display:flex;align-items:center;gap:.28vmin;font-size:var(--font-2xs);font-variant-numeric:tabular-nums}.vital-item img{width:1.1vmin;height:1.1vmin}.vital-item img.vital-icon--stress{width:.9vmin;height:.9vmin;object-fit:contain}.vital-value{display:inline-block;min-width:2.4vmin;text-align:left;color:var(--text-secondary);font-weight:600}.vital-spinner-container{display:flex;align-items:center;justify-content:flex-start;min-width:2.4vmin;height:1.2vmin}.vital-spinner{border:2px solid rgba(255,255,255,.26);border-top:2px solid rgba(110,162,248,.95);border-radius:50%;width:.85vmin;height:.85vmin;animation:spin .9s linear infinite}.intrusion-alert{position:absolute;top:var(--space-xs);right:var(--space-xs);display:flex;align-items:center;gap:.2vmin;background:#f87171e6;color:#fff;padding:.16vmin .42vmin;border-radius:.22vmin;font-size:.7vmin;font-weight:700;line-height:1}.intrusion-alert img{width:.82vmin;height:.82vmin;filter:invert(1)}@keyframes pulse-border-3d{0%{box-shadow:0 0 4px #f87171b3}50%{box-shadow:0 0 10px #f87171e6,0 0 12px #dc3545cc}to{box-shadow:0 0 4px #f87171b3}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.cctv-page-container{width:100%;height:100%;position:relative;box-sizing:border-box;background-color:var(--theme-color-bg-02);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:var(--space-md);overflow:hidden;--cctv-cell-radius: var(--radius-md)}.cctv-page-header{display:flex;justify-content:space-between;align-items:center;margin:var(--space-md) var(--space-md) 0}.zone-tabs{display:flex;gap:var(--space-xs)}.zone-tab-btn{padding:var(--space-xs) var(--space-xl);font-size:var(--font-sm);font-weight:600;border-radius:var(--radius-sm);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;background:var(--surface-inset);border:1px solid var(--border-default);color:var(--text-tertiary)}.zone-tab-btn:after{content:"";position:absolute;bottom:-1px;left:20%;right:20%;height:2px;border-radius:1px;background:transparent;transition:background .2s ease,left .2s ease,right .2s ease}.zone-tab-btn:hover:not(.active){background:var(--surface-raised);border-color:var(--border-strong);color:var(--text-secondary)}.zone-tab-btn:active{transform:scale(.95)}.zone-tab-btn.mixing.active{background:#50d2d20f;border-color:#50d2d240;color:#50d2d2f2;box-shadow:inset 0 0 8px #50d2d20f}.zone-tab-btn.mixing.active:after{background:#50d2d2b3;left:10%;right:10%}.zone-tab-btn.mixing:hover:not(.active){border-color:#50d2d24d;color:#50d2d2bf}.zone-tab-btn.forming.active{background:#c084fc0f;border-color:#c084fc40;color:#c084fcf2;box-shadow:inset 0 0 8px #c084fc0f}.zone-tab-btn.forming.active:after{background:#c084fcb3;left:10%;right:10%}.zone-tab-btn.forming:hover:not(.active){border-color:#c084fc4d;color:#c084fcbf}.zone-tab-btn.outdoor.active{background:#50d2d20f;border-color:#50d2d240;color:#50d2d2f2;box-shadow:inset 0 0 8px #50d2d20f}.zone-tab-btn.outdoor.active:after{background:#50d2d2b3;left:10%;right:10%}.zone-tab-btn.outdoor:hover:not(.active){border-color:#50d2d24d;color:#50d2d2bf}.zone-tab-btn.indoor.active{background:#c084fc0f;border-color:#c084fc40;color:#c084fcf2;box-shadow:inset 0 0 8px #c084fc0f}.zone-tab-btn.indoor.active:after{background:#c084fcb3;left:10%;right:10%}.zone-tab-btn.indoor:hover:not(.active){border-color:#c084fc4d;color:#c084fcbf}.page-title{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-md);margin:0;width:fit-content;background:linear-gradient(180deg,#78a0f012,#5078c808);border:1px solid rgba(140,180,240,.2);border-top-color:#a0c8ff38;border-radius:var(--radius-md);box-shadow:var(--shadow-sm),inset 0 1px #a0c8ff0f;text-shadow:0 1px 3px rgba(0,0,0,.4);padding:var(--space-sm) var(--space-2xl);font-size:var(--font-xl);font-weight:700;color:var(--text-primary);letter-spacing:.01em;box-sizing:border-box;-webkit-user-select:none;user-select:none;cursor:default}.cctv-main-content{--cctv-panel-radius: var(--radius-sm);flex:1;display:flex;gap:var(--space-md);min-height:0;position:relative;overflow:hidden;margin:0 var(--space-md) var(--space-md)}.cctv-grid-wrapper{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;box-sizing:border-box;background:var(--surface-inset);border:1px solid var(--border-default);border-radius:var(--cctv-panel-radius);padding:var(--space-sm);overflow:hidden}.draggable-cctv-player{position:relative;width:100%;height:100%;min-width:0;min-height:0;box-sizing:border-box;border-radius:var(--cctv-cell-radius);border:1px solid var(--border-default);overflow:hidden;display:flex;justify-content:center;align-items:center;transition:border-color .2s ease,box-shadow .2s ease;background:linear-gradient(180deg,#0a1224b3,#0f193266 40%,#0a122480)}.draggable-cctv-player:not(.is-dragging):hover{border-color:var(--border-strong);z-index:10}.cctv-grid-container{width:100%;max-width:100%;flex:1;min-width:0;min-height:0;box-sizing:border-box;display:grid;gap:var(--space-sm);grid-auto-rows:minmax(0,1fr);grid-auto-columns:minmax(0,1fr)}.cctv-video-wrapper{position:relative;box-sizing:border-box;border:1px solid var(--border-default);overflow:hidden;width:100%;height:100%;cursor:pointer;transition:border-color .24s ease,box-shadow .28s ease;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#0a1224b3,#0f193266 40%,#0a122480)}.cctv-video-wrapper:before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 2px,rgba(0,0,0,.03) 4px)}.cctv-video-wrapper:after{content:"";position:absolute;inset:2px;z-index:2;pointer-events:none;border:2px solid rgba(110,162,248,.75);border-radius:calc(var(--cctv-cell-radius) - 3px);opacity:0;transition:opacity .24s ease}.cctv-video-wrapper.disabled{opacity:.5;pointer-events:none}.cctv-video-wrapper.selected{border-color:#6ea2f8;box-shadow:0 0 .7vmin #6ea2f847;z-index:10}.cctv-video-wrapper.selected:after{opacity:1;border-width:1px;border-style:solid;border-color:#6ea2f861;box-shadow:none}.cctv-video-wrapper.widget-selected{border:none!important}.cctv-video-wrapper.alert .cctv-player-overlay{animation:alert-pulse 1.5s infinite alternate}.cctv-video-wrapper.focus-pulse{animation:cctv-focus-pulse .9s ease-out}.cctv-video-wrapper.focus-pulse .cctv-player-overlay:after{content:"";position:absolute;inset:2px;pointer-events:none;border-radius:calc(var(--cctv-cell-radius) - 3px);border:2px solid rgba(110,162,248,.9);animation:cctv-focus-ring .9s ease-out}@keyframes cctv-focus-pulse{0%{transform:scale(1);box-shadow:0 0 #6ea2f873}35%{transform:scale(1.015);box-shadow:0 0 1.1vmin #6ea2f88c}to{transform:scale(1);box-shadow:0 0 0 1.4vmin #6ea2f800}}@keyframes cctv-focus-ring{0%{opacity:.95;transform:scale(.985)}to{opacity:0;transform:scale(1.04)}}.cctv-aspect-frame{position:relative;width:100%;aspect-ratio:var(--cctv-feed-aspect, 16/9);max-height:100%;overflow:hidden}.cctv-aspect-frame.is-connecting{width:100%!important;height:100%!important;aspect-ratio:auto;max-height:none}.cctv-media-stack{display:block;width:100%;height:100%;position:relative;z-index:2}.cctv-video{display:block;width:100%;height:100%}.cctv-video-stream{width:100%;height:100%;object-fit:contain}.cctv-overlay-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5;opacity:1;transition:opacity .3s ease-in-out}.cctv-overlay-canvas.no-detections{opacity:0}.cctv-drawing-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:6}.polygon-overlay-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.cctv-player-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10}.cctv-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-xs);font-size:var(--font-xs);color:var(--text-tertiary);background:#00000080;z-index:2}.cctv-overlay--connecting{color:#facc15cc;background:#0000004d}.cctv-overlay--connecting:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(250,204,21,.04) 40%,rgba(250,204,21,.08) 50%,rgba(250,204,21,.04) 60%,transparent 100%);animation:cctv-skeleton-shimmer 2s ease-in-out infinite}.cctv-overlay--disabled{background:#0a101ed9;opacity:.5;cursor:not-allowed}.cctv-overlay--disabled span{color:var(--text-tertiary);font-style:italic}.cctv-overlay svg{width:4vmin;height:4vmin;margin-bottom:1vmin;opacity:.7;transition:opacity .2s ease}.cctv-overlay span{font-size:1.3vmin;font-weight:500}.cctv-overlay-meta{font-size:var(--font-2xs);color:#fff9;font-variant-numeric:tabular-nums;margin-top:var(--space-2xs)}.cctv-info-bar{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:linear-gradient(180deg,rgba(0,0,0,.4),transparent);color:#ffffffd9;font-size:var(--font-2xs);font-weight:600;box-sizing:border-box}.cctv-info-stats{display:flex;align-items:center;gap:var(--space-xs)}.cctv-info-stats span{font-size:.8vmin}.status-dot{display:inline-block;width:.6vmin;height:.6vmin;border-radius:50%;flex-shrink:0}.status-dot--connected{background:#48d278e6;box-shadow:0 0 3px #48d27880}.status-dot--disconnected{background:#f87171e6}.status-dot--connecting{background:#facc15e6;animation:sb-live-blink 1s ease-in-out infinite}.status-dot--disabled{background:var(--text-disabled)}.loading-spinner{width:4vmin;height:4vmin;border:.5vmin solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.cctv-overlay-skeleton{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.cctv-overlay-skeleton .skeleton-bar{height:.4vmin;border-radius:2px;background:#facc1526}.cctv-overlay-skeleton .skeleton-bar:nth-child(1){width:6vmin}.cctv-overlay-skeleton .skeleton-bar:nth-child(2){width:4vmin}.cctv-overlay-skeleton .skeleton-bar:nth-child(3){width:5vmin}@keyframes cctv-skeleton-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes sb-live-blink{0%,to{opacity:1}50%{opacity:.4}}.cctv-expanded-overlay{position:fixed;inset:0;z-index:45;background:#00040fbf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:cctv-fade-in .15s ease}@keyframes cctv-fade-in{0%{opacity:0}to{opacity:1}}.cctv-grid-wrapper.is-expanded{position:fixed;z-index:50;top:50%;left:50%;transform:translate(-50%,-50%);width:85vw;height:88vh;background:var(--theme-color-bg-01);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:0 8px 40px #000a1e80;animation:cctv-fade-in .15s ease;padding:0;overflow:hidden;transition:none}.cctv-grid-wrapper.is-expanded .cctv-info-bar{display:none}.cctv-grid-wrapper.is-expanded .cctv-grid-container{flex:1;width:100%;max-width:100%;min-width:0;min-height:0;height:auto;box-sizing:border-box;padding:var(--space-sm)}.cctv-grid-wrapper.is-expanded .cctv-aspect-frame{width:100%;height:auto;max-height:100%}.cctv-expanded-header{display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-sm) var(--space-lg);background:var(--surface-raised);border-bottom:1px solid var(--border-default);flex-shrink:0}.cctv-expanded-title{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-lg);font-weight:700;color:var(--text-primary)}.cctv-expanded-meta{display:flex;gap:var(--space-md);margin-left:auto}.cctv-expanded-meta span{font-size:var(--font-sm);color:var(--text-tertiary);font-weight:600;font-variant-numeric:tabular-nums;padding:var(--space-2xs) var(--space-sm);background:var(--surface-inset);border-radius:var(--radius-xs);border:1px solid var(--border-default)}.cctv-expanded-meta .cctv-expanded-status.connected{color:#48d278f2;border-color:#48d27859;background:#48d27814}.cctv-expanded-meta .cctv-expanded-status.connecting{color:#facc15f2;border-color:#facc1559;background:#facc1514}.cctv-expanded-meta .cctv-expanded-status.disconnected{color:#f87171f2;border-color:#f8717159;background:#f8717114}.cctv-expanded-close{width:2.8vmin;height:2.8vmin;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-tertiary);font-size:var(--font-md);cursor:pointer;transition:all .12s ease}.cctv-expanded-close:hover{background:var(--surface-raised);border-color:var(--border-strong);color:var(--text-primary)}.info-panel{width:22vmin;flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-md);background:var(--surface-base);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:var(--space-md);box-sizing:border-box;color:var(--text-primary)}.total-bandwidth-section,.camera-list-section{display:flex;flex-direction:column}.total-bandwidth-section p{margin:var(--space-md) 0 0 0;font-size:var(--font-3xl);font-weight:700;color:var(--theme-color-point);text-align:center;font-variant-numeric:tabular-nums}.total-bandwidth-section p span{font-size:var(--font-sm);color:var(--text-tertiary);margin-left:var(--space-xs)}.camera-list-section{flex:1;min-height:0}.camera-list-section ul{list-style:none;padding:0;margin:0;overflow-y:auto}.camera-list-section ul::-webkit-scrollbar{width:8px}.camera-list-section ul::-webkit-scrollbar-track{background:var(--theme-color-bg-02);border-radius:4px}.camera-list-section ul::-webkit-scrollbar-thumb{background:#8cb4f033;border-radius:4px}.camera-list-section ul::-webkit-scrollbar-thumb:hover{background:#fff6}.camera-list-section li{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-2xs);font-size:var(--font-2xs);border-bottom:1px solid rgba(140,180,240,.05);cursor:pointer;transition:background .1s ease}.camera-list-section li:hover{background:var(--surface-raised)}.cam-id{font-weight:600}.cam-status{font-weight:600;text-align:center}.cam-status.connected{color:var(--color-success)}.cam-status.disconnected{color:var(--color-danger)}.cam-status.connecting{color:var(--theme-color-alert)}.cam-bw,.cam-fps{text-align:right;color:var(--text-tertiary);width:50%}.cam-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cam-metrics{display:flex;justify-content:space-between}.subtitle-box{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--surface-inset);border:1px solid var(--border-default);border-radius:var(--radius-sm);font-size:var(--font-sm);font-weight:600;color:var(--text-secondary);width:fit-content;-webkit-user-select:none;user-select:none;margin-bottom:var(--space-md)}.subtitle-box .subtitle-circle{width:var(--space-sm);height:var(--space-sm);border-radius:50%;box-shadow:inset 0 0 var(--space-xs) #0006;background-color:var(--text-disabled)}.subtitle-box .subtitle-text{font-weight:600}.context-menu{position:absolute;background:var(--surface-base);border:1px solid var(--border-default);border-radius:var(--radius-sm);box-shadow:0 .5vmin 1.5vmin #000a1e66;padding:var(--space-xs) 0;z-index:1000;width:15vmin}.context-menu li{padding:var(--space-sm) var(--space-lg);font-size:var(--font-sm);cursor:pointer;color:var(--text-secondary);transition:all .15s ease}.context-menu li:hover{background:var(--surface-raised);color:var(--text-primary)}.drawing-toolbar{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-lg);background:var(--surface-inset);border-bottom:1px solid var(--border-default);flex-shrink:0}.drawing-toolbar button{font-size:var(--font-2xs);font-weight:600;padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-xs);border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all .15s ease;display:flex;align-items:center;gap:var(--space-sm)}.drawing-toolbar button:hover:not(:disabled){background:var(--surface-raised);border-color:var(--border-strong);color:var(--text-primary)}.drawing-toolbar button:disabled{opacity:.35;cursor:not-allowed}.drawing-toolbar button.active{background:#48d2781f;border-color:#48d2784d;color:#48d278e6}.drawing-toolbar .separator{width:1px;height:1.6vmin;background:var(--border-default);flex-shrink:0}.drawing-toolbar .save-btn{margin-left:auto;background:#6ea2f81a;border-color:#6ea2f840;color:#6ea2f8}.drawing-toolbar .save-btn:hover:not(:disabled){background:#6ea2f82e;border-color:#6ea2f866}.drawing-toolbar .icon{width:2vmin;height:2vmin;background-size:contain;background-repeat:no-repeat;background-position:center}.draw-icon,.erase-icon,.clear-icon,.undo-icon,.redo-icon,.save-icon{background-color:#fff}.cctv-feed-hud{position:absolute;z-index:8;display:flex;align-items:center;gap:var(--space-xs);font-family:Monaco,Menlo,Consolas,monospace;font-size:.75vmin;font-variant-numeric:tabular-nums;color:#ffffff8c;pointer-events:none;-webkit-user-select:none;user-select:none;padding:.2vmin .5vmin;border-radius:2px;background:#00000059}.cctv-feed-hud--tl{top:var(--space-md);left:var(--space-md);color:#ff5050e6;font-weight:700;background:#ff28281a;border:1px solid rgba(255,80,80,.2)}.cctv-feed-hud--tr{top:var(--space-md);right:var(--space-md);color:#48d278b3;gap:var(--space-md)}.cctv-feed-hud--bl{bottom:var(--space-md);left:var(--space-md);color:#ffffffb3;font-weight:600;gap:var(--space-md)}.cctv-feed-hud--br{bottom:var(--space-md);right:var(--space-md);color:#ffffff73}.cctv-feed-hud-dot{display:inline-block;width:.5vmin;height:.5vmin;border-radius:50%;background:#ff3c3cf2;box-shadow:0 0 4px #ff3c3c99;animation:sb-live-blink 1s ease-in-out infinite}.common-title{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-md);margin:0;width:fit-content;background:linear-gradient(180deg,#78a0f012,#5078c808);border:1px solid rgba(140,180,240,.2);border-top-color:#a0c8ff38;border-radius:var(--radius-md);box-shadow:var(--shadow-sm),inset 0 1px #a0c8ff0f;text-shadow:0 1px 3px rgba(0,0,0,.4);padding:var(--space-sm) var(--space-2xl);font-size:var(--font-xl);font-weight:700;color:var(--text-primary);letter-spacing:.01em;box-sizing:border-box;-webkit-user-select:none;user-select:none;cursor:default}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-wrapper{display:flex;justify-content:center;align-items:center}.loading{--loading-size: 3vmin;--loading-color: var(--theme-color-point);width:var(--loading-size);height:var(--loading-size);border:.3vmin solid var(--theme-color-bg-02);border-top:.3vmin solid var(--loading-color);border-radius:50%;animation:spin .8s linear infinite}.self-service-page .page-title{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-md);margin:0;width:fit-content;background:linear-gradient(180deg,#78a0f012,#5078c808);border:1px solid rgba(140,180,240,.2);border-top-color:#a0c8ff38;border-radius:var(--radius-md);box-shadow:var(--shadow-sm),inset 0 1px #a0c8ff0f;text-shadow:0 1px 3px rgba(0,0,0,.4);padding:var(--space-sm) var(--space-2xl);font-size:var(--font-xl);font-weight:700;color:var(--text-primary);letter-spacing:.01em;box-sizing:border-box;-webkit-user-select:none;user-select:none;cursor:default}.self-service-page .option-row--locked{opacity:.55;background:#ffffff08;border-style:dashed;border-color:#ffffff1a}.self-service-page .option-row--locked:hover{border-color:#ffffff1f;background:#ffffff08;box-shadow:none}.self-service-page .lock-icon{font-size:.9vmin;margin-right:.4vmin;vertical-align:middle;filter:grayscale(100%)}.self-service-page .coming-soon-badge{display:inline-block;margin-left:.6vmin;padding:.15vmin .5vmin;font-size:.75vmin;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#c8c8cf;background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:.3vmin;vertical-align:middle}.contents-container{box-sizing:border-box;position:relative;width:100%;height:100%;background-color:transparent;overflow:hidden;padding:var(--theme-size-narrow-margin)}.contents-container canvas{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;z-index:1}.contents-container .title{position:absolute;z-index:2}.jcrt-home-page .floor-controls-ui{display:flex;flex-direction:column;gap:12px;margin-top:12px;width:6rem;position:absolute;z-index:2;top:2.5rem;left:0}[class*=leva-c-][class*=hideTitleBar-false]{top:calc(var(--theme-size-header-h) + var(--theme-size-margin-default) * 6);left:calc(var(--theme-size-margin-default) + var(--theme-size-side-bar-w))}[class*=leva-c-]{font-family:Pretendard,AppleSDGothicNeo,sans-serif!important;font-size:1rem!important}:root{--leva-panel-width: 420px}[class*=leva-c-][class*=fill-false]{width:var(--leva-panel-width)}.widgets-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.widgets-container>*{pointer-events:auto}.shell-mode-button{position:absolute;top:6vmin;z-index:10}.shell-mode-button .icon-toggle{cursor:pointer;width:100%;height:100%}.equipment-tooltip{position:fixed;background:#14141ef2;color:#fff;padding:10px 14px;border-radius:6px;border:1px solid rgba(255,255,255,.2);pointer-events:none;z-index:99999;font-size:.85rem;box-shadow:0 4px 12px #00000080;white-space:pre-line}.equipment-tooltip .tooltip-title{color:#40c0a0;font-weight:700;margin-bottom:4px}.equipment-tooltip .tooltip-desc{color:#ddd}.tabs-container{width:100%;height:fit-content;display:flex;flex-direction:column}.tab-list{display:flex;background-color:var(--theme-color-bg-02);border-radius:var(--radius-md) var(--radius-md) 0 0;padding:.5vmin .5vmin 0}.tab-item{flex:1;text-align:center;padding:.5vmin;font-size:1.5vmin;font-weight:600;background:transparent;border:none;color:var(--theme-color-icon-disable);cursor:pointer;transition:all .3s ease;border-radius:.6vmin .6vmin 0 0;border-bottom:3px solid transparent}.tab-item:hover{background-color:var(--theme-color-bg);color:var(--theme-color-font-wt)}.tab-item.active{color:var(--theme-color-font-wt);background-color:var(--theme-color-bg-03);border-bottom:3px solid var(--theme-color-bg)}.tab-content{padding:.5vmin;background-color:var(--theme-color-bg-03);border-radius:0 0 var(--radius-md) var(--radius-md);color:var(--theme-color-font-default);flex-grow:1;overflow:auto;display:flex;justify-content:center;flex-wrap:wrap;gap:.2rem}.polygon-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.polygon-overlay polygon{fill:#ff06;stroke:#ff0;stroke-width:2;vector-effect:non-scaling-stroke}.polygon-overlay polygon.intruded{fill:#ff323280;stroke:#ff3232}.live-drawing-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:20;background-color:#00000026}.live-drawing-overlay.mode-drawing{cursor:crosshair}.live-drawing-overlay.mode-editing,.live-drawing-overlay.mode-idle{cursor:default}.live-drawing-toolbar{position:absolute;top:1vmin;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.6vmin;z-index:21;background:var(--theme-color-bg-02, rgba(30, 30, 32, .95));padding:.8vmin 1.2vmin;border-radius:.6vmin;box-shadow:0 .4vmin 1.2vmin #00000080;border:.1vmin solid rgba(120,120,120,.3)}.mode-badge{display:flex;align-items:center;gap:.5vmin;padding:.5vmin 1vmin;border-radius:.4vmin;font-size:1.1vmin;font-weight:600;margin-right:.8vmin;min-width:7vmin;justify-content:center}.mode-badge.drawing{background:#facc1540;border:.1vmin solid #facc15;color:#facc15;box-shadow:0 0 .8vmin #facc154d}.mode-badge.editing{background:#6ea2f840;border:.1vmin solid #6ea2f8;color:#6ea2f8;box-shadow:0 0 .8vmin #6ea2f84d}.mode-badge.idle{background:#6464644d;border:.1vmin solid rgba(150,150,150,.5);color:#888}.live-drawing-toolbar button{padding:.6vmin 1.2vmin;border-radius:.4vmin;font-size:1.1vmin;font-weight:500;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1);border:.1vmin solid transparent;display:flex;align-items:center;gap:.4vmin;background:#ffffff0a;color:#ffffff80;border-color:#ffffff1a}.live-drawing-toolbar button:hover:not(:disabled){background:#ffffff1a;color:#fffc;border-color:#fff3}.live-drawing-toolbar button:active:not(:disabled){transform:scale(.95)}.live-drawing-toolbar button:disabled{cursor:not-allowed;opacity:.4}.live-drawing-toolbar button.active{background:var(--theme-color-bg, rgba(96, 10, 255, .3));color:#fff;border-color:var(--theme-color-point, #600aff);box-shadow:0 0 1vmin #4c337cb3;font-weight:600}.live-drawing-toolbar button.primary{background:#40c0a033;color:#40c0a0;border-color:#40c0a066}.live-drawing-toolbar button.primary:hover:not(:disabled){background:#40c0a059;border-color:#40c0a0;box-shadow:0 0 .8vmin #40c0a066}.live-drawing-toolbar button.danger:not(:disabled){background:#dc354526;color:#dc3545cc;border-color:#dc35454d}.live-drawing-toolbar button.danger:not(:disabled):hover{background:#dc35454d;color:#dc3545;border-color:#dc354580}.live-drawing-toolbar button.secondary{background:#ffffff0a;color:#ffffff80}.live-drawing-toolbar button.secondary:hover:not(:disabled){background:#ffffff1a;color:#fffc}.toolbar-separator{width:.1vmin;height:2.2vmin;background:linear-gradient(to bottom,transparent,rgba(255,255,255,.2),transparent);margin:0 .6vmin}.hint-text{font-size:1vmin;color:#ffffff59;margin-left:.8vmin;padding-left:.8vmin;border-left:.1vmin solid rgba(255,255,255,.1);white-space:nowrap}.context-menu{position:absolute;background-color:#3e3e42;border:1px solid #555;border-radius:8px;box-shadow:0 5px 15px #00000080;padding:8px 0;z-index:1000;width:180px;color:#f1f1f1}.context-menu ul{list-style:none;padding:0;margin:0}.context-menu li{padding:10px 20px;font-size:14px;cursor:pointer;transition:background-color .2s}.context-menu li:hover{background-color:#555}.drawing-toolbar{width:5vmin;background-color:#2a2a2e;padding:var(--theme-size-margin-default);display:flex;flex-direction:column;gap:var(--theme-size-narrow-margin);border-right:1px solid #444}.drawing-toolbar button{background:#3e3e42;color:#f1f1f1;border:1px solid #555;border-radius:var(--theme-size-border-radius-default);padding:12px;text-align:left;display:flex;align-items:center;gap:12px;cursor:pointer;transition:background-color .2s;font-size:14px}.drawing-toolbar button:hover{background-color:#555}.drawing-toolbar button.active{background-color:var(--water-dark-blue, #4B1A59);border-color:var(--water-light-sky, #4c337c);color:#fff}.drawing-toolbar .separator{height:1px;background-color:#444;margin:10px 0}.drawing-toolbar .save-btn{margin-top:auto;background-color:var(--purple-dark)}.drawing-toolbar .save-btn:hover{background-color:var(--purple-light)}.drawing-toolbar .icon{width:20px;height:20px;background-size:contain;background-repeat:no-repeat;background-position:center}.draw-icon{background-image:url(./draw-D3as9ont.png)}.erase-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABuCAYAAADRebYyAAAACXBIWXMAAG66AABuugHW3rEXAAAEy0lEQVR4nO2d7XHbMAyGX/f6P94g2qDeoN6gzgRxN8gI6QbJBHUnqDNB5Q3sDZgNnAnYH7RyjiyKoEiBcITnznfRRwBar0CQIinPrLUQSAXgCcCPkey/AngAsB3J/mBmAgVZAKgB3DD4+gXgkcEPGWmCzAEY8IjRcAdBkfKldAFarMErBiAsQqQJsizg8xtcZIpAmiClLsyikN8LpAkyeb62tucoe7dMMUL2AI7NRtPKWsG1+28LFWrqvPeLZtbaFYC/hQukOO5m1loDjQwpHGZWWM9w6mgrSxgqiDBUEGGoIMJQQYShgghDBRGGCiIMFUQYKogwvgDYlS6E8s5uZq2dww2dihk1mygGwEbarJPJozlEGCqIMFQQYaggwlBBhKGCCEMFEYYKIoz2zMVz5nCz0VdwvfhmVvoBZzPtlCgM3EzF7envC3w99QWADdzMcGUcnuFmK37AJ8geKgYHFyu4ugRZA/jNU57J84bWBPOupK5Pffm4Qet6qyDlCUaItqAK0iXInr0UyjvaMSyPOd/oEqRmKYbSYM43NELK8tbe0SWIGb8cyomLfK2CCMNXZV2EkjIKdXuHTxBt+hZCk3pZSDmk80RlFC6eivgE0ccnPJj2Dt+I4cWJGXjBx8hbI/2FBW9wA2kG7iFdBeA+0WbDDi7pmpPdJYDvmWw3mIs91tquz9Lm42itXXj8bBLs7q218w6bi5PPFNYddnHan4tjlw8OQXxfrvmYATaPtluMHBduEyhvyk10Tt1l35dD6oxhuQkcfxpgc4v+PLfB8L7UJvF4EhKavUNadGYku0D4Zgwdp9JZvj5BXjM5/mzkeslaZ4T3CWIyOQ5xbX2eXEPc0YJw9UWm2ueJrrKu7c7NwaF0ATiSuph34hLgjNa6aydHhFDq3GtqQCzHNC4hhwDTGxTz9pGkCCIFrrzp9aNJ/SPFb0JN6vHk6IcMihAgTzOQ8gXqDH64yHGDeSMxJEjxEGbGMPlRQYgYJj+Dq6wpJvYQ1ZjGOZI6JYeYsQuRkRzvyS8aIZQkaDL4yYFh8qM5hIhh8NE7kqmCxJGjydtb63BUWRXhHJPBDwejr7/kSOqUJGjGLgQBrgnmSRECCBi0YYKrid+bBiiCaB7Ji+k7yCXIZ1n7vsxgw/QdpAjC1ReZCslVFhel37BdM/lJTur6PIsRTepxpObCYIuVIohJLAQw8hNSRlJzYfDmliRI6Ug0EnxISuqlc5WR4IMqSGoLqEr8fylUYzvgipCKyc/YpA5O1aETqIKYpGLkF4SSXGN9hmzG2hsElyC3CH+hdYS9Nfov4BLxd/OK4DOVYJ7kTOpb+C/iA+Iu4A38axPnPcf6uIdflAU63rE7gHBLMrDiNPeq3L11K2Sr02d1Wo2aw97i9PeQVb3nbKz7vs0S60ebvszaWs8y6PaH+htUSwD/Eu+OqbMD4WkxVw5RiKggfJA6vpJ66p8d0qOhGEFKj1dcO9kFUdLIXmWZYeVQYlBB+DCUk2IEKT1ece0YykkxgpQer5gEmtR5IM/+1AjhgVzdaw7hYRRBgOt6J4kkauqJsYKQDSsf2FJPjBXkEfqi/lieEdGHixXEwD3TV1FovKD1w5EhhjR793Dj43+gwvg4APgJNyQc1Rj6D4q9K5OJ38DdAAAAAElFTkSuQmCC)}.clear-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABuCAYAAADRebYyAAAACXBIWXMAAG66AABuugHW3rEXAAAEy0lEQVR4nO2d7XHbMAyGX/f6P94g2qDeoN6gzgRxN8gI6QbJBHUnqDNB5Q3sDZgNnAnYH7RyjiyKoEiBcITnznfRRwBar0CQIinPrLUQSAXgCcCPkey/AngAsB3J/mBmAgVZAKgB3DD4+gXgkcEPGWmCzAEY8IjRcAdBkfKldAFarMErBiAsQqQJsizg8xtcZIpAmiClLsyikN8LpAkyeb62tucoe7dMMUL2AI7NRtPKWsG1+28LFWrqvPeLZtbaFYC/hQukOO5m1loDjQwpHGZWWM9w6mgrSxgqiDBUEGGoIMJQQYShgghDBRGGCiIMFUQYKogwvgDYlS6E8s5uZq2dww2dihk1mygGwEbarJPJozlEGCqIMFQQYaggwlBBhKGCCEMFEYYKIoz2zMVz5nCz0VdwvfhmVvoBZzPtlCgM3EzF7envC3w99QWADdzMcGUcnuFmK37AJ8geKgYHFyu4ugRZA/jNU57J84bWBPOupK5Pffm4Qet6qyDlCUaItqAK0iXInr0UyjvaMSyPOd/oEqRmKYbSYM43NELK8tbe0SWIGb8cyomLfK2CCMNXZV2EkjIKdXuHTxBt+hZCk3pZSDmk80RlFC6eivgE0ccnPJj2Dt+I4cWJGXjBx8hbI/2FBW9wA2kG7iFdBeA+0WbDDi7pmpPdJYDvmWw3mIs91tquz9Lm42itXXj8bBLs7q218w6bi5PPFNYddnHan4tjlw8OQXxfrvmYATaPtluMHBduEyhvyk10Tt1l35dD6oxhuQkcfxpgc4v+PLfB8L7UJvF4EhKavUNadGYku0D4Zgwdp9JZvj5BXjM5/mzkeslaZ4T3CWIyOQ5xbX2eXEPc0YJw9UWm2ueJrrKu7c7NwaF0ATiSuph34hLgjNa6aydHhFDq3GtqQCzHNC4hhwDTGxTz9pGkCCIFrrzp9aNJ/SPFb0JN6vHk6IcMihAgTzOQ8gXqDH64yHGDeSMxJEjxEGbGMPlRQYgYJj+Dq6wpJvYQ1ZjGOZI6JYeYsQuRkRzvyS8aIZQkaDL4yYFh8qM5hIhh8NE7kqmCxJGjydtb63BUWRXhHJPBDwejr7/kSOqUJGjGLgQBrgnmSRECCBi0YYKrid+bBiiCaB7Ji+k7yCXIZ1n7vsxgw/QdpAjC1ReZCslVFhel37BdM/lJTur6PIsRTepxpObCYIuVIohJLAQw8hNSRlJzYfDmliRI6Ug0EnxISuqlc5WR4IMqSGoLqEr8fylUYzvgipCKyc/YpA5O1aETqIKYpGLkF4SSXGN9hmzG2hsElyC3CH+hdYS9Nfov4BLxd/OK4DOVYJ7kTOpb+C/iA+Iu4A38axPnPcf6uIdflAU63rE7gHBLMrDiNPeq3L11K2Sr02d1Wo2aw97i9PeQVb3nbKz7vs0S60ebvszaWs8y6PaH+htUSwD/Eu+OqbMD4WkxVw5RiKggfJA6vpJ66p8d0qOhGEFKj1dcO9kFUdLIXmWZYeVQYlBB+DCUk2IEKT1ece0YykkxgpQer5gEmtR5IM/+1AjhgVzdaw7hYRRBgOt6J4kkauqJsYKQDSsf2FJPjBXkEfqi/lieEdGHixXEwD3TV1FovKD1w5EhhjR793Dj43+gwvg4APgJNyQc1Rj6D4q9K5OJ38DdAAAAAElFTkSuQmCC)}.undo-icon{background-image:url(./undo-C-96pq2t.png)}.redo-icon{background-image:url(./redo-BF_pHWxw.png)}.save-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAGSpAABkqQGblFooAAAFyElEQVR4nO2d0XHjNhCGP2vybqUCswMrFYhXwTkVSNeBU0F0FcQdmK4gugpCVRCpgpMriFQB8rDkyWPLEZfiAusI3wzHYw3IXfEnAGKxgK5CCLxgDtwDt8TnGSiBbWS7BVADN5HtAmyAB6BqPxg1f8fAEngkjRggN+Q+gd170ogBcq8fkQdiDAdBlsDnND4lZ5zaAWCKaMAIaaamKb15wS6BzW0Cm8eYAvMRaZqJzHHuR6TrMzJvuR2dLpOJSRbEGVkQZ3gTZJLagdR4E6ROYDPFq/a7/KQs/4zNe/u6OSqDa5/iofk7QcIoQ1OgiARchVfBrBN8BRZKhy6dBfB718LemqyLJwvijCyIM7IgzsiCOCML4owsiDOyIM7QjtQ9MEZG1RPen37dISP/LX5mBDvxEQQZA3dIRkqJPiHhGYmR1ci8tavY1Ws8N1klcgP/QTIzZvTLDrlpzn1srlU113aJR0HukGbmL2wyYWbNtWscCuNJkAlyk/4kTp7UlIMwRQR7nfAiyAL4mzTpSFPgO06yb1ILMkae0M7haUP+4EUGYSpSCtI2UV6S9EB8qUk4lZxKkFYMjzlhtyQUJYUgrRjXCWx35ZpEosQWZIyMAzyL0XKN+Bq1T4k9Ul8yXDO1QcYr61eft8kKQ9i5RXwuB7hWJ2IKsuD8DnyFPLVdQiBtyGV+pt0p4vvijGt0J4SwC92ZhxDocUwUNo6xDCEUPW3TnLs804e+9schhHVHG7urEMIEeZJOsaV/3lRNv6d0j/hW97T7mhKpXX36sBX9m64x3Qaey6ugSsvqRYmEKLRsmnOHjs62g9E+fcwnjLMrY7xlPZwu8oYnpHO2CJXvmms/9Th3Mawrb7GuISX62rEh3vv/Gn1NMa0l1jVEG7Brl0bHomxsapgP78YByxoyRiaENJi30Uco0dfinzGaebSsIV3e3F7yRJrlCDX6/kT73TpjKUipLL8w8MHKdmngA+BHkG+kzQ7ZNj50pbRxw06QAt00bGXjhopKUfYGo6CjpSAaagMftNTK8iav5laCaJxd4SNXaof40pXCwgkrQTTV+XX4PCVbRdnCwoHUSQ7go3a0bFM74EGQzAuyIM7IgjjDgyAednRrKVI7YCWIpqP2tL9JoSj7oYKLmldZb5mLXTF5XbcSZKssbxY9VaD1YWvhhKUgmokfD4LMFWWtNuEx7dRrRdkZaTvUAt3ioNrGDT+CwMeaD6kNfADyFC5c0BTuDt2kD8RPbm6TvzU8YRh/sx4YanOybog7WVWhX89YDe/GAWtBavRpNp+JI0qFfpXviv9B5mKfxZQzJAfXovlqfwli1uPcxbCuvOUqhFAgN23C8a0o2pTOmvjJ1htkfDDUqHiCfIc+eb3nJFvPkbHWfz1gsgloCGGrSMlPtRyhCucvR6jO9KGv/bnCxm6ErlMrej4ha2RH077MkLXkFbpR/V1zznf6NVEtv9F/ZF4oyl7HXkFVcl4wccbhxq443sQWzTFU0HJFvwz+XsReY3iH1JYhts6YYh8p3hA5zhZ7gmqHfMF9ZLt92COdcdQkjBQzhmuk6fIsyh7xMXqKUqop3FYU7aAxBu1SuiT5Yinn1NfIuECTLWhNO9ZIlryXOslhh9yAc16Jh+IrNotMVaQWpGUB/EKa2rJqbC8S2H6DF0Hg0K/8Spy+5bmxVeIov9iTIC1LZGD3Cf18She+NdcuGluu8LxNbM1hh7c7DlvFandh2HPYItb9NrGeBWnZIfGoqvm/aI7yxDl5I+VIbJujTuqFER77kIsmC+KMLIgzsiDOyII4IwvijCyIM7IgztAODEvsoqJb0u15MsduOUSpKaz9cWJrvhBflDny6zsu8NZkFRdi8128CXLxZEGckQVxRhbEGSMkDynjg82IiInEmZNUI+S9/5JriZfNbzbAQ9uHlPjKIIyJB0Ha9NUfnXqbQfiFdLVlT5q0nAXpcow3yD3/8UsQ/wLdvds3afMFfAAAAABJRU5ErkJggg==)}.drawing-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1100;--video-aspect-ratio: 16 / 9}.drawing-modal-content{display:flex;width:85vw;aspect-ratio:var(--video-aspect-ratio);max-height:85vh;max-width:calc(85vh * var(--video-aspect-ratio));background-color:#2c2c30;box-shadow:0 10px 40px #0009;border-radius:var(--theme-size-border-radius-default, .8vmin);overflow:hidden}.drawing-area{height:100%;aspect-ratio:var(--video-aspect-ratio);position:relative;overflow:hidden;background-color:#000}.drawing-area video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:fill}.drawing-area canvas{position:absolute;top:0;left:0;width:100%;height:100%}.drawing-area canvas.drawing{cursor:crosshair}.drawing-tooltip{position:absolute;top:15px;left:15px;background-color:#000000b3;color:#fff;padding:10px 15px;border-radius:8px;font-size:13px;z-index:10;pointer-events:none}.drawing-tooltip p{margin:4px 0}.settings-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000bf;display:flex;justify-content:center;align-items:center;z-index:1200;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.settings-modal-content{background-color:#2c2c30;border-radius:12px;box-shadow:0 10px 40px #0009;border:1px solid #4a4a4e;color:#f1f1f1;width:90vw;max-width:550px;display:flex;flex-direction:column;animation:modal-fade-in .3s ease-out}@keyframes modal-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.settings-modal-content h2{margin:0;padding:20px 25px;background-color:#3a3a3e;border-bottom:1px solid #4a4a4e;font-size:1.1rem;font-weight:600;color:#fff;border-radius:12px 12px 0 0}.settings-body{padding:30px 25px}.settings-form{width:100%;display:flex;flex-direction:column;gap:22px}.form-group{display:flex;flex-direction:column}.form-group label{margin-bottom:10px;font-size:.9rem;font-weight:500;color:#c5c5c5}.form-group input{background-color:#252528;border:1px solid #555;border-radius:6px;color:#f1f1f1;padding:12px 15px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus{outline:none;border-color:#0096ff;box-shadow:0 0 0 3px #0096ff33}.modal-actions{display:flex;justify-content:flex-end;gap:1.2vmin;padding:1vmin 2vmin;background-color:#3a3a3e;border-top:1px solid #4a4a4e;border-radius:0 0 var(--theme-size-border-radius-default) var(--theme-size-border-radius-default)}.modal-actions button{border:none;border-radius:var(--theme-size-border-radius-default);padding:.8vmin 1.8vmin;font-size:.95vmin;font-weight:600;cursor:pointer;transition:all .2s ease}.modal-actions button:hover{transform:translateY(-2px);box-shadow:0 4px 15px #0003}.modal-actions .save-btn{background:linear-gradient(to right,var(--purple-dark),var(--purple-mid));color:#fff}.modal-actions .save-btn:hover{background:linear-gradient(to right,var(--purple-mid),var(--purple-light))}.modal-actions button:first-of-type{background-color:#5a5a5e;color:#f1f1f1}.modal-actions button:first-of-type:hover{background-color:#6a6a6e}@property --angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.jcrt-cctv-page .cctv-page-container{position:relative;display:flex;flex-direction:column;width:100%;height:100%;padding:var(--theme-size-narrow-margin);box-sizing:border-box;gap:var(--theme-size-narrow-margin)}.jcrt-cctv-page .cctv-page-header{display:flex;justify-content:space-between;align-items:center}.jcrt-cctv-page .page-title{width:fit-content;background-color:var(--theme-color-bg-02);border-radius:.8vmin;border:.1vmin solid var(--theme-color-box2-alpha);padding:.8vmin 3vmin;font-size:1.6vmin;font-weight:700;box-shadow:0 0 1vmin #000;text-shadow:0px 3px 3px rgba(0,0,0,.5);box-sizing:border-box}.jcrt-cctv-page .cctv-main-content{flex:1;display:flex;gap:var(--theme-size-narrow-margin);min-height:0;position:relative;overflow:hidden}.jcrt-cctv-page .cctv-grid-wrapper{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;transition:width .35s cubic-bezier(.4,0,.2,1)}.jcrt-cctv-page .draggable-cctv-player{position:relative;width:100%;height:100%;background-color:var(--theme-color-bg-dk);border-radius:var(--theme-size-box-border-radius);border:.1vmin solid var(--theme-color-box-02);overflow:hidden;display:flex;justify-content:center;align-items:center}.jcrt-cctv-page .cctv-grid-container{width:100%;height:100%;display:grid;gap:var(--theme-size-narrow-margin);grid-auto-rows:1fr;grid-auto-columns:1fr}.jcrt-cctv-page .cctv-video-wrapper{position:relative;background-color:var(--theme-color-bg-dk);border-radius:var(--theme-size-box-border-radius);overflow:hidden;width:100%;height:100%;transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out}.jcrt-cctv-page .cctv-video-wrapper.disabled{background-color:var(--theme-color-bg-dk-disabled);opacity:.7;pointer-events:none}.jcrt-cctv-page .cctv-media-stack{display:block;width:100%;height:100%;position:relative;z-index:2}.jcrt-cctv-page .cctv-video{display:block;width:100%;height:100%;object-fit:contain}.jcrt-cctv-page .cctv-video-stream{width:100%;height:100%;object-fit:contain}.jcrt-cctv-page .cctv-overlay-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5}.jcrt-cctv-page .polygon-overlay-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.jcrt-cctv-page .draggable-cctv-player:not(.is-dragging):hover{box-shadow:0 0 1.5vmin var(--theme-color-point);z-index:10;border:2px solid var(--theme-color-point)}.jcrt-cctv-page .cctv-video-wrapper.selected .cctv-player-overlay,.jcrt-cctv-page .cctv-video-wrapper.selected{box-shadow:0 0 0 2px var(--theme-color-point) inset;z-index:10}.jcrt-cctv-page .cctv-video-wrapper.widget-selected{border:none!important}.jcrt-cctv-page .cctv-video-wrapper.alert .cctv-player-overlay{animation:alert-pulse 1.5s infinite alternate}@keyframes alert-pulse{0%{box-shadow:inset 0 0 #ce363600}to{box-shadow:inset 0 0 2vmin .5vmin #ce3636b3}}.jcrt-cctv-page .cctv-player-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10}.jcrt-cctv-page .disconnected-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#000000b3;color:var(--theme-color-font-wt);opacity:.8}.jcrt-cctv-page .disconnected-overlay.disabled{background:var(--theme-color-bg-dk-disabled-alpha);opacity:.6;cursor:not-allowed}.jcrt-cctv-page .disconnected-overlay.disabled span{color:var(--theme-color-font-dk);font-style:italic}.jcrt-cctv-page .disconnected-overlay svg{width:4vmin;height:4vmin;margin-bottom:1vmin;opacity:.7;transition:opacity .2s ease}.jcrt-cctv-page .play-icon-placeholder{width:4vmin;height:4vmin;background-image:url(/assets/icons/play_icon.png);background-size:contain;background-repeat:no-repeat;background-position:center;margin-bottom:1vmin;opacity:.7;transition:opacity .2s}.jcrt-cctv-page .cctv-video-wrapper:hover .play-icon-placeholder{opacity:1}.jcrt-cctv-page .disconnected-overlay span{font-size:1.3vmin;font-weight:500}.jcrt-cctv-page .cctv-info-bar{position:absolute;top:0;left:0;width:100%;background:linear-gradient(to bottom,rgba(0,0,0,.3),transparent);color:var(--theme-color-font-wt);padding:.8vmin 1.2vmin;box-sizing:border-box;font-size:1.2vmin;font-weight:500;display:flex;justify-content:space-between;align-items:center}.jcrt-cctv-page .cctv-info-stats{display:flex;align-items:center}.jcrt-cctv-page .cctv-info-stats span{font-size:.8vmin;width:5.5vmin}.jcrt-cctv-page .cctv-info-stats .status-indicator{font-size:1.2vmin;width:auto}.jcrt-cctv-page .status-indicator.connected{color:var(--theme-color-call)}.jcrt-cctv-page .status-indicator.disconnected{color:var(--theme-color-warn)}.jcrt-cctv-page .status-indicator.connecting{color:var(--theme-color-caution)}.jcrt-cctv-page .status-indicator.disabled{color:var(--theme-color-font-dk)}.jcrt-cctv-page .loading-spinner{width:4vmin;height:4vmin;border:.5vmin solid rgba(255,255,255,.3);border-top-color:var(--theme-color-font-wt);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.jcrt-cctv-page .info-panel{width:24vmin;flex-shrink:0;height:100%;background-color:var(--theme-color-bg-02);border-radius:var(--theme-size-border-radius-default);padding:var(--theme-size-default-margin);box-sizing:border-box;display:flex;flex-direction:column;gap:2vmin;color:var(--theme-color-font-wt, #eaeaea)}.jcrt-cctv-page .total-bandwidth-section,.jcrt-cctv-page .camera-list-section{display:flex;flex-direction:column}.jcrt-cctv-page .total-bandwidth-section p{margin:1.5vmin 0 0;font-size:2.5vmin;font-weight:700;color:var(--purple-mid);text-align:center}.jcrt-cctv-page .total-bandwidth-section p span{margin-right:.5vmin}.jcrt-cctv-page .camera-list-section{flex:1;min-height:0;display:flex;flex-direction:column}.jcrt-cctv-page .camera-list-section ul{list-style:none;padding:0;margin:0;overflow-y:auto}.jcrt-cctv-page .camera-list-section li{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:.6vmin .3vmin;font-size:1vmin;border-bottom:1px solid var(--theme-color-box2)}.jcrt-cctv-page .camera-list-section li:hover{background-color:var(--theme-color-box2)}.jcrt-cctv-page .cam-id{font-weight:600}.jcrt-cctv-page .cam-status{font-weight:600;text-align:center}.jcrt-cctv-page .cam-status.connected{color:var(--theme-color-success)}.jcrt-cctv-page .cam-status.disconnected{color:var(--theme-color-warn)}.jcrt-cctv-page .cam-status.connecting{color:var(--theme-color-caution)}.jcrt-cctv-page .cam-bw,.jcrt-cctv-page .cam-fps{text-align:right;color:var(--theme-color-font-lt);width:50%}.jcrt-cctv-page .cam-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jcrt-cctv-page .cam-metrics{display:flex;justify-content:space-between}.jcrt-cctv-page .camera-list-section::-webkit-scrollbar{width:1vmin}.jcrt-cctv-page .camera-list-section::-webkit-scrollbar-track{background:var(--theme-color-bg-02);border-radius:4px}.jcrt-cctv-page .camera-list-section::-webkit-scrollbar-thumb{background-color:var(--theme-color-box3);border-radius:4px}.jcrt-cctv-page .camera-list-section::-webkit-scrollbar-thumb:hover{background-color:var(--theme-color-box3-hover)}.jcrt-cctv-page .subtitle-box{display:flex;align-items:center;background-color:var(--theme-color-bg-02);box-shadow:0 0 .6vmin #111;border-radius:.5vmin;border:.1vmin solid var(--theme-color-box2-alpha);box-sizing:border-box;padding:.6vmin 1.3vmin .6vmin .8vmin;gap:1vmin;font-size:1.2vmin;width:fit-content;-webkit-user-select:none;user-select:none;margin-bottom:1.2vmin}.jcrt-cctv-page .subtitle-box .subtitle-circle{width:1vmin;height:1vmin;border-radius:50%;box-shadow:0 0 .5vmin #0009 inset;background-color:var(--theme-color-box3)}.jcrt-cctv-page .subtitle-box .subtitle-text{font-weight:500;text-shadow:0 .5vmin .5vmin rgba(0,0,0,.5)}.jcrt-cctv-page .camera-list-section ul::-webkit-scrollbar{width:8px}.jcrt-cctv-page .camera-list-section ul::-webkit-scrollbar-track{background:var(--theme-color-bg-02);border-radius:4px}.jcrt-cctv-page .camera-list-section ul::-webkit-scrollbar-thumb{background-color:var(--theme-color-box3);border-radius:4px}.jcrt-cctv-page .camera-list-section ul::-webkit-scrollbar-thumb:hover{background-color:var(--theme-color-box3-hover)}.jcrt-cctv-page .context-menu{position:absolute;background-color:var(--theme-color-bg-01);border:.1vmin solid var(--theme-color-box-02);border-radius:var(--theme-size-border-radius-default);box-shadow:0 .5vmin 1.5vmin #00000080;padding:.8vmin 0;z-index:1000;width:15vmin}.jcrt-cctv-page .context-menu ul{list-style:none;padding:0;margin:0}.jcrt-cctv-page .context-menu li{padding:1.2vmin 2vmin;font-size:1.4vmin;cursor:pointer;color:var(--theme-color-font-wt);transition:background-color .2s ease}.jcrt-cctv-page .context-menu li:hover{background-color:var(--theme-color-point)}.jcrt-cctv-page .drawing-toolbar{width:180px;background-color:var(--theme-color-bg-02);padding:20px 10px;display:flex;flex-direction:column;gap:10px}.jcrt-cctv-page .drawing-toolbar button{background:var(--theme-color-bg-01);color:var(--theme-color-font-wt);border:1px solid var(--theme-color-box3);border-radius:5px;padding:10px;text-align:left;display:flex;align-items:center;gap:10px;cursor:pointer;transition:background-color .2s}.jcrt-cctv-page .drawing-toolbar button:hover{background-color:var(--theme-color-box3)}.jcrt-cctv-page .drawing-toolbar button.active{background-color:var(--water-dark-blue);border-color:var(--water-light-sky)}.jcrt-cctv-page .drawing-toolbar .separator{height:1px;background-color:var(--theme-color-box2);margin:10px 0}.jcrt-cctv-page .drawing-toolbar .save-btn{margin-top:auto;background-color:var(--purple-dark)}.jcrt-cctv-page .drawing-toolbar .icon{width:20px;height:20px;background-size:contain;background-repeat:no-repeat;background-position:center}.jcrt-cctv-page .draw-icon,.jcrt-cctv-page .erase-icon,.jcrt-cctv-page .clear-icon,.jcrt-cctv-page .undo-icon,.jcrt-cctv-page .redo-icon,.jcrt-cctv-page .save-icon{background-color:var(--theme-color-font-wt)}.jcrt-cctv-page .draw-region-button{margin-right:12px;padding:8px 16px;font-size:.875rem;font-weight:500;color:#ffffff80;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:5px;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1)}.jcrt-cctv-page .draw-region-button:hover{background:#ffffff1a;color:#fffc;border-color:#fff3}.jcrt-cctv-page .draw-region-button:active{transform:scale(.95)}.jcrt-cctv-page .draw-region-button.active{background:var(--theme-color-bg, rgba(96, 10, 255, .3));color:#fff;border-color:var(--theme-color-point, #600aff);box-shadow:0 0 8px #4c337cb3;font-weight:600}.jcrt-cctv-page .cctv-aspect-frame{position:relative;width:100%;aspect-ratio:var(--cctv-feed-aspect, 16/9);max-height:100%;overflow:hidden}.jcrt-cctv-page .cctv-aspect-frame.is-connecting{width:100%!important;height:100%!important;aspect-ratio:auto;max-height:none}.jcrt-cctv-page .cctv-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5vmin;font-size:1.2vmin;color:#dcdcdcbf;background:#00000080;z-index:2}.jcrt-cctv-page .cctv-overlay--connecting{color:#facc15e6;background:#00000052}.jcrt-cctv-page .cctv-overlay--connecting:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(250,204,21,.04) 40%,rgba(250,204,21,.08) 50%,rgba(250,204,21,.04) 60%,transparent 100%);animation:jcrt-cctv-shimmer 2s ease-in-out infinite}.jcrt-cctv-page .cctv-overlay--disabled{background:#0a101ed9;opacity:.55;cursor:not-allowed}.jcrt-cctv-page .cctv-overlay-skeleton{display:flex;flex-direction:column;align-items:center;gap:.5vmin}.jcrt-cctv-page .cctv-overlay-skeleton .skeleton-bar{height:.4vmin;min-height:2px;border-radius:2px;background:#facc152e}.jcrt-cctv-page .cctv-overlay-skeleton .skeleton-bar:nth-child(1){width:6vmin;min-width:42px}.jcrt-cctv-page .cctv-overlay-skeleton .skeleton-bar:nth-child(2){width:4vmin;min-width:30px}.jcrt-cctv-page .cctv-overlay-skeleton .skeleton-bar:nth-child(3){width:5vmin;min-width:36px}.jcrt-cctv-page .cctv-overlay-meta{font-size:1vmin;color:#fff9;font-variant-numeric:tabular-nums;margin-top:.3vmin}.jcrt-cctv-page .cctv-info-title{padding:.15vmin .5vmin;border-radius:.25vmin;background:#00000059;font-size:1.15vmin;font-weight:800;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.5);max-width:75%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jcrt-cctv-page .status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;aspect-ratio:1/1;line-height:0;font-size:0;padding:0;box-sizing:border-box}.jcrt-cctv-page .status-dot--connected{background:#48d278eb;box-shadow:0 0 3px #48d2788c}.jcrt-cctv-page .status-dot--disconnected{background:#f87171eb}.jcrt-cctv-page .status-dot--connecting{background:#facc15eb;animation:jcrt-cctv-blink 1s ease-in-out infinite}.jcrt-cctv-page .status-dot--disabled{background:#666}@keyframes jcrt-cctv-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes jcrt-cctv-blink{0%,to{opacity:1}50%{opacity:.4}}.recon-page{width:100%;height:100%;display:flex;flex-direction:column;background:var(--background-color);overflow:hidden}.recon-page .layout-container{flex:1}.recon-page .recon-viewer-wrapper{display:flex;flex-direction:column;height:100%}.recon-page .recon-viewer-wrapper .recon-viewer{flex:1;background:#1a1a1a;border-radius:4px;overflow:hidden;position:relative;min-height:0}.recon-page .recon-viewer-wrapper .recon-viewer canvas{width:100%;height:100%}.recon-page .recon-viewer-wrapper .recon-viewer .no-data{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:1.1rem}.recon-page .recon-viewer-wrapper .recon-info{margin-top:1rem;display:flex;gap:1.5rem;flex-wrap:wrap}.recon-page .recon-viewer-wrapper .recon-info .info-row{display:flex;gap:.5rem;font-size:.9rem}.recon-page .recon-viewer-wrapper .recon-info .info-row .label{font-weight:600;color:var(--text-secondary)}.recon-page .recon-viewer-wrapper .recon-info .info-row .value{color:var(--text-primary)}.recon-page .history-table-container{height:100%;display:flex;flex-direction:column;overflow:hidden}.recon-page .history-table-container .loading,.recon-page .history-table-container .no-data{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-secondary);font-size:1.1rem}.recon-page .history-table-container .history-table{width:100%;height:100%;font-size:.9rem;display:flex;flex-direction:column}.recon-page .history-table-container .history-table thead{flex:0 0 auto;display:table;width:100%;table-layout:fixed;background:var(--theme-color-bg-02);z-index:1;border-bottom:2px solid var(--border-color)}.recon-page .history-table-container .history-table thead tr{display:table-row}.recon-page .history-table-container .history-table thead tr th:first-child{width:80px}.recon-page .history-table-container .history-table thead th{padding:.75rem .5rem;text-align:left;font-weight:600;color:var(--text-secondary);white-space:nowrap}.recon-page .history-table-container .history-table tbody{flex:1 1 auto;display:flex;flex-direction:column;width:100%;min-height:0}.recon-page .history-table-container .history-table tbody tr{flex:1;display:table;width:100%;table-layout:fixed;cursor:pointer;transition:background-color .2s;border-bottom:1px solid var(--border-color)}.recon-page .history-table-container .history-table tbody tr:last-child{border-bottom:none}.recon-page .history-table-container .history-table tbody tr:hover{background-color:#ffffff0d}.recon-page .history-table-container .history-table tbody tr.selected{background-color:#4c337c;color:#fff}.recon-page .history-table-container .history-table tbody tr.selected .event-badge{background-color:#fff;color:#4c337c}.recon-page .history-table-container .history-table tbody tr td{padding:.75rem .5rem;color:var(--text-primary)}.recon-page .history-table-container .history-table tbody tr td.thumbnail-cell{width:80px}.recon-page .history-table-container .history-table tbody tr td.thumbnail-cell .thumbnail-placeholder{width:70px;background:#2a2a2a;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:1.2rem}.recon-page .history-table-container .history-table tbody tr td.thumbnail-cell .thumbnail-image{width:70px;object-fit:cover;border-radius:4px;background:#000}.recon-page .history-table-container .history-table tbody tr td.event-cell .event-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:500;background:var(--theme-color-opacity);color:var(--theme-color);white-space:nowrap}.recon-page .model-viewer{height:100%;background:#1a1a1a;border-radius:4px;overflow:hidden;position:relative}.recon-page .model-viewer canvas{width:100%;height:100%}.recon-page .comparison-container{height:100%;position:relative}.recon-page .comparison-container .no-data{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:1.1rem;background:#1a1a1a;border-radius:4px}.layout-container{width:100%;height:100%;display:grid;gap:var(--space-md)}.layout-container .layout-panel{background-color:var(--theme-color-bg-02);border-radius:var(--radius-md);padding:var(--space-md);display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0}.layout-container .layout-panel .panel-title{margin-bottom:var(--space-md);font-size:var(--font-xl);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layout-container .layout-panel .panel-content{flex-grow:1;overflow:auto}.layout-container>.layout-panel:nth-child(1){grid-area:a}.layout-container>.layout-panel:nth-child(2){grid-area:b}.layout-container>.layout-panel:nth-child(3){grid-area:c}.layout-container>.layout-panel:nth-child(4){grid-area:d}.layout-container>.layout-panel:nth-child(5){grid-area:e}.layout-container>.layout-panel:nth-child(6){grid-area:f}.layout-container.layout-1{grid-template-areas:"a"}.layout-container.layout-2-v{grid-template-areas:"a b"}.layout-container.layout-2-h{grid-template-areas:"a" "b"}.layout-container.layout-3-v{grid-template-areas:"a b c"}.layout-container.layout-3-h{grid-template-areas:"a" "b" "c"}.layout-container.layout-3-l1-r2{grid-template-areas:"a b" "a c"}.layout-container.layout-3-l2-r1{grid-template-areas:"a c" "b c"}.layout-container.layout-3-t1-b2{grid-template-areas:"a a" "b c"}.layout-container.layout-3-t2-b1{grid-template-areas:"a b" "c c"}.layout-container.layout-4-v{grid-template-areas:"a b c d";grid-template-columns:repeat(4,1fr)}.layout-container.layout-4-h{grid-template-areas:"a" "b" "c" "d";grid-template-rows:repeat(4,1fr)}.layout-container.layout-4-grid{grid-template-areas:"a b" "c d";grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.layout-container.layout-4-l1-r3{grid-template-areas:"a b" "a c" "a d";grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr)}.layout-container.layout-4-r1-l3{grid-template-areas:"b a" "c a" "d a";grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr)}.layout-container.layout-4-t1-b3{grid-template-areas:"a a a" "b c d";grid-template-columns:repeat(3,1fr);grid-template-rows:1fr 1fr}.layout-container.layout-4-b1-t3{grid-template-areas:"b c d" "a a a";grid-template-columns:repeat(3,1fr);grid-template-rows:1fr 1fr}.layout-container.layout-4-l2-r2-v{grid-template-areas:"a c" "b d";grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.layout-container.layout-4-t2-b2-h{grid-template-areas:"a b" "c d";grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.layout-container.layout-4-center-h{grid-template-areas:"a b c" "a d c";grid-template-columns:1fr 2fr 1fr;grid-template-rows:1fr 1fr}.layout-container.layout-5-l1-r4{grid-template-areas:"a b" "a c" "a d" "a e"}.layout-container.layout-5-r1-l4{grid-template-areas:"a e" "b e" "c e" "d e"}.layout-container.layout-5-t1-b4{grid-template-areas:"a a a a" "b c d e"}.layout-container.layout-5-b1-t4{grid-template-areas:"b c d e" "a a a a"}.layout-container.layout-5-l1-m2-r2{grid-template-areas:"a b c" "a d e"}.layout-container.layout-5-r1-m2-l2{grid-template-areas:"b c a" "d e a"}.layout-container.layout-5-l2-r3{grid-template-areas:"a c d" "b e e"}.layout-container.layout-5-r2-l3{grid-template-areas:"c d a" "e e b"}.layout-container.layout-5-t2-b3{grid-template-areas:"a a b" "c d e"}.layout-container.layout-5-b2-t3{grid-template-areas:"c d e" "a a b"}.layout-container.layout-5-center-r{grid-template-areas:"a d" "a d" "b d" "b e" "c e" "c e"}.layout-container.layout-5-center-l{grid-template-areas:"a c" "a c" "a d" "b d" "b e" "b e"}.layout-container.layout-5-center-t{grid-template-areas:"a a a b b b" "c c d d e e"}.layout-container.layout-5-center-b{grid-template-areas:"a a b b c c" "d d d e e e"}.layout-container.layout-5-center-v{grid-template-areas:"a b c" "d b e"}.layout-container.layout-5-complex{grid-template-areas:"a a b" "c d b" "c e e"}.layout-container.layout-6-v{grid-template-areas:"a b c d e f"}.layout-container.layout-6-h{grid-template-areas:"a" "b" "c" "d" "e" "f"}.layout-container.layout-6-grid-3x2{grid-template-areas:"a b c" "d e f"}.layout-container.layout-6-grid-2x3{grid-template-areas:"a b" "c d" "e f"}.layout-container.layout-6-l1-r5{grid-template-areas:"a b" "a c" "a d" "a e" "a f"}.layout-container.layout-6-r1-l5{grid-template-areas:"b a" "c a" "d a" "e a" "f a"}.layout-container.layout-6-t1-b5{grid-template-areas:"a a a a a" "b c d e f"}.layout-container.layout-6-b1-t5{grid-template-areas:"b c d e f" "a a a a a"}.layout-container.layout-6-l2-r4{grid-template-areas:"a c" "a d" "b e" "b f"}.layout-container.layout-6-r2-l4{grid-template-areas:"a e" "b e" "c f" "d f"}.layout-container.layout-6-t2-b4{grid-template-areas:"a a b b" "c d e f"}.layout-container.layout-6-b2-t4{grid-template-areas:"a b c d" "e e f f"}.layout-container.layout-6-complex{grid-template-areas:"a a b" "c d b" "e f f"}.metric-grid{display:flex;flex-direction:column;gap:.6vmin;width:100%;max-height:65vh;overflow-y:auto;overflow-x:hidden;padding-right:.3rem;box-sizing:border-box}.metric-grid::-webkit-scrollbar{width:4px}.metric-grid::-webkit-scrollbar-track{background:#0000001a;border-radius:2px}.metric-grid::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.metric-grid::-webkit-scrollbar-thumb:hover{background:#fff6}.metric-wrapper{width:100%;border:1px solid rgba(255,255,255,.1);padding:.4rem .6rem;border-radius:6px;cursor:pointer;background:#0003;transition:all .2s cubic-bezier(.4,0,.2,1);box-sizing:border-box}.metric-wrapper:hover{background:#ffffff0d;border-color:#fff3;transform:translateY(-1px);box-shadow:0 2px 8px #0003}.metric-wrapper.selected{background:#40c0a026;border-color:#40c0a099;box-shadow:0 0 12px #40c0a04d}.metric-wrapper.warning{background:#9b59b626;border-color:#9b59b699;animation:pulse-warning 2s ease-in-out infinite}.metric-wrapper.selected.warning{background:#9b59b640;border-color:#9b59b6cc}@keyframes pulse-warning{0%,to{box-shadow:0 0 8px #9b59b666}50%{box-shadow:0 0 16px #9b59b699}}.metric-sensor-label{font-weight:600;margin-bottom:.5rem;font-size:1.3vmin;color:#ffffffe6;letter-spacing:.3px}.floor-plan-container{position:relative;overflow:hidden}.floor-plan-container .sensor-tag{border-radius:.8vmin;border:1px solid rgba(255,255,255,.5);color:#fff;padding:.5vmin;font-size:1rem;font-weight:700;white-space:nowrap;cursor:pointer;transition:background-color .2s ease-in-out,border-color .3s ease,box-shadow .3s ease}.floor-plan-container .sensor-tag.selected{border:2px solid #40c0a0}.floor-plan-container .sensor-tag.warning{border:1px solid #dc3545!important;animation:pulse-border-3d 1.5s infinite}.contents-container{position:relative}.contents-container .sensor-label{transition:border-color .3s ease,box-shadow .3s ease}.contents-container .sensor-label.warning{border:1px solid #dc3545!important;animation:pulse-border-3d 1.5s infinite}@keyframes pulse-border-3d{0%{box-shadow:0 0 4px #dc3545b3}50%{box-shadow:0 0 10px #dc3545,0 0 12px #dc3545cc}to{box-shadow:0 0 4px #dc3545b3}}.minimized-widgets-container{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:100%;display:flex;justify-content:center;align-items:flex-end;padding:20px;pointer-events:none;z-index:1000;gap:10px}.minimized-widgets-container>*{pointer-events:auto}.volume-page{width:100%;height:100%;display:flex;flex-direction:column;background:var(--background-color);overflow:hidden}.volume-page .layout-container{flex:1}.volume-page .volume-viewer-wrapper{display:flex;flex-direction:column;height:100%}.volume-page .volume-viewer-wrapper .volume-viewer{flex:1;background:#1a1a1a;border-radius:4px;overflow:hidden;position:relative;min-height:0}.volume-page .volume-viewer-wrapper .volume-viewer canvas{width:100%;height:100%}.volume-page .volume-viewer-wrapper .volume-viewer .no-data{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:1.1rem}.volume-page .volume-viewer-wrapper .volume-info{margin-top:1rem;display:flex;gap:1.5rem;flex-wrap:wrap}.volume-page .volume-viewer-wrapper .volume-info .info-row{display:flex;gap:.5rem;font-size:.9rem}.volume-page .volume-viewer-wrapper .volume-info .info-row .label{font-weight:600;color:var(--text-secondary)}.volume-page .volume-viewer-wrapper .volume-info .info-row .value{color:var(--text-primary)}.volume-page .history-table-container{height:100%;display:flex;flex-direction:column;overflow:hidden}.volume-page .history-table-container .loading,.volume-page .history-table-container .no-data{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-secondary);font-size:1.1rem}.volume-page .history-table-container .history-table{width:100%;height:100%;font-size:.9rem;display:flex;flex-direction:column}.volume-page .history-table-container .history-table thead{flex:0 0 auto;display:table;width:100%;table-layout:fixed;background:var(--theme-color-bg-02);z-index:1;border-bottom:2px solid var(--border-color)}.volume-page .history-table-container .history-table thead tr{display:table-row}.volume-page .history-table-container .history-table thead tr th:first-child{width:80px}.volume-page .history-table-container .history-table thead th{padding:.75rem .5rem;text-align:left;font-weight:600;color:var(--text-secondary);white-space:nowrap}.volume-page .history-table-container .history-table tbody{flex:1 1 auto;display:flex;flex-direction:column;width:100%;min-height:0}.volume-page .history-table-container .history-table tbody tr{flex:1;display:table;width:100%;table-layout:fixed;cursor:pointer;transition:background-color .2s;border-bottom:1px solid var(--border-color)}.volume-page .history-table-container .history-table tbody tr:last-child{border-bottom:none}.volume-page .history-table-container .history-table tbody tr:hover{background-color:#ffffff0d}.volume-page .history-table-container .history-table tbody tr.selected{background-color:#4c337c;color:#fff}.volume-page .history-table-container .history-table tbody tr.selected .event-badge{background-color:#fff;color:#4c337c}.volume-page .history-table-container .history-table tbody tr td{padding:.75rem .5rem;color:var(--text-primary)}.volume-page .history-table-container .history-table tbody tr td.thumbnail-cell{width:80px}.volume-page .history-table-container .history-table tbody tr td.thumbnail-cell .thumbnail-placeholder{width:70px;height:50px;background:#2a2a2a;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:1.2rem}.volume-page .history-table-container .history-table tbody tr td.thumbnail-cell .thumbnail-image{height:42px;width:auto;max-width:70px;object-fit:contain;border-radius:4px;background:#000}.volume-page .history-table-container .history-table tbody tr td.event-cell .event-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:500;background:var(--theme-color-opacity);color:var(--theme-color);white-space:nowrap}.volume-page .live-camera-viewer{height:100%;background:#1a1a1a;border-radius:4px;overflow:hidden;position:relative}.volume-page .live-camera-viewer .no-data{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:1.1rem}.volume-page .live-camera-viewer .volume-measurement-overlay{position:absolute;bottom:1rem;right:1rem;z-index:10}.volume-page .live-camera-viewer .volume-measurement-overlay .measurement-badge{display:flex;flex-direction:column;gap:.25rem;background:#000c;padding:.75rem 1rem;border-radius:8px;border:2px solid var(--theme-color);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.volume-page .live-camera-viewer .volume-measurement-overlay .measurement-badge .measurement-label{font-size:.8rem;color:var(--text-secondary);font-weight:500}.volume-page .live-camera-viewer .volume-measurement-overlay .measurement-badge .measurement-value{font-size:1.5rem;font-weight:700;color:var(--theme-color);text-align:center}.volume-page .comparison-container{height:100%;position:relative}.volume-page .comparison-container .no-data{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:1.1rem;background:#1a1a1a;border-radius:4px}.admin-page{width:100%;height:100%;display:flex;flex-direction:column;gap:1vmin;overflow:hidden}.admin-page .admin-page-header{display:flex;flex-direction:column;gap:.35vmin;padding:.2vmin .2vmin .6vmin}.admin-page .admin-page-title{font-size:2.05vmin;font-weight:700;color:var(--text-primary, #fff)}.admin-page .admin-page-subtitle{font-size:1.25vmin;opacity:.75;color:var(--text-secondary, #bcbcc4)}.admin-page .layout-container{flex:1;min-height:0}.admin-page .admin-user-section,.admin-page .admin-create-section{height:100%;display:flex;flex-direction:column;min-height:0}.admin-page.serdic-admin-page .layout-container.layout-2-v{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr)}.admin-page .admin-section-toolbar{display:flex;align-items:center;gap:.8vmin;margin-bottom:1vmin}.admin-page .admin-empty-row{text-align:center;color:var(--text-secondary, #bcbcc4);padding:1.6vmin .8vmin}.admin-page .admin-search-input,.admin-page .admin-create-table input,.admin-page .admin-create-table select{width:95%;border:1px solid rgba(255,255,255,.12);border-radius:.6vmin;background:#0003;color:var(--text-primary, #fff);padding:.58vmin .85vmin;font-size:1.15vmin;outline:none}.admin-page .admin-search-input:focus,.admin-page .admin-create-table input:focus,.admin-page .admin-create-table select:focus{border-color:#ffffff52}.admin-page .admin-table-wrapper{flex:1;min-height:0;overflow:auto;border-radius:.8vmin;border:1px solid rgba(255,255,255,.08)}.admin-page .admin-user-table{width:100%;border-collapse:collapse}.admin-page .admin-user-table.fixed-layout{table-layout:fixed}.admin-page .admin-user-table thead th{position:sticky;top:0;z-index:1;background:var(--theme-color-bg-02);color:var(--text-secondary, #c5c5cd);font-size:1.2vmin;font-weight:600;text-align:left;white-space:nowrap;padding:1vmin .8vmin;border-bottom:1px solid rgba(255,255,255,.12)}.admin-page .admin-user-table tbody td{padding:1vmin .8vmin;font-size:1.2vmin;color:var(--text-primary, #fff);border-bottom:1px solid rgba(255,255,255,.06);white-space:nowrap}.admin-page .admin-user-table.fixed-layout th,.admin-page .admin-user-table.fixed-layout td{overflow:hidden;text-overflow:ellipsis}.admin-page .admin-user-table:not(.fixed-layout) th:not(.action-column),.admin-page .admin-user-table:not(.fixed-layout) td:not(.action-column){overflow:hidden;text-overflow:ellipsis}.admin-page .admin-user-table.fixed-layout th.action-column,.admin-page .admin-user-table.fixed-layout td.action-column{overflow:visible;text-overflow:clip}.admin-page .admin-user-table tbody tr:hover{background:#ffffff0a}.admin-page .action-cell{display:inline-flex;align-items:center;gap:.4vmin}.admin-page .role-chip,.admin-page .status-chip{display:inline-flex;align-items:center;justify-content:center;min-width:10ch;border-radius:999px;padding:.22vmin .85vmin;font-size:1.08vmin;font-weight:600;text-transform:uppercase}.admin-page .role-chip.user{background:#5a8cff33;color:#9ec0ff}.admin-page .role-chip.admin{background:#b578ff33;color:#d5a9ff}.admin-page .role-chip.superuser{background:#ffc25c33;color:#ffd27e}.admin-page .status-chip.active{background:#46c97e2e;color:#86e3a9}.admin-page .status-chip.pending{background:#ffb94f2e;color:#ffd08f}.admin-page .status-chip.deleted{background:#ff585833;color:#ff9a9a}.admin-page .status-chip.unknown{background:#939cab33;color:#c7cfdb}.admin-page .admin-create-form{flex:1;display:flex;flex-direction:column;min-height:0;gap:.75vmin}.admin-page .admin-create-scroll{flex:1;min-height:0;overflow:auto;padding-right:.25vmin}.admin-page .admin-create-user-block{border:1px solid rgba(255,255,255,.08);border-radius:.75vmin;overflow:hidden;margin-bottom:.8vmin}.admin-page .admin-create-user-head{display:flex;align-items:center;justify-content:space-between;padding:.45vmin .7vmin;background:#ffffff0d;color:var(--text-secondary, #c8c8cf);font-size:1.08vmin;font-weight:600}.admin-page .admin-create-table{width:100%;border-collapse:collapse}.admin-page .admin-create-table th,.admin-page .admin-create-table td{border-bottom:1px solid rgba(255,255,255,.08);padding:.54vmin .7vmin;vertical-align:middle}.admin-page .admin-create-table th{width:28%;color:var(--text-secondary, #c8c8cf);font-size:1.12vmin;text-align:left;font-weight:600}.admin-page .admin-create-actions{margin-top:0;display:flex;justify-content:flex-end;gap:.7vmin;border-top:1px solid rgba(255,255,255,.08);padding-top:.8vmin}.admin-page .layout-container>.layout-panel:nth-child(2) .panel-content,.admin-page .admin-create-section,.admin-page .admin-create-form{overflow:hidden}.admin-page .admin-create-table td{padding-bottom:.45vmin}.admin-page .admin-error-text{margin-top:.3vmin;color:#ff6b6b;font-size:1.01vmin;line-height:1.15}.admin-page .admin-create-actions .admin-btn:first-child{margin-right:auto;min-width:3.2vmin;padding-inline:0}.admin-page .admin-btn{border:1px solid transparent;border-radius:.6vmin;padding:.6vmin 1.2vmin;font-size:1.16vmin;font-weight:600;cursor:pointer;color:#fff;background:#ffffff1a}.admin-page .admin-btn:hover{opacity:.88}.admin-page .admin-btn:disabled{opacity:.45;cursor:not-allowed}.admin-page .admin-btn.primary{background:var(--theme-color-bar-02)}.admin-page .admin-btn.secondary{border-color:#ffffff2e;background:#0003}.admin-page .admin-btn.tiny{font-size:1.02vmin;padding:.28vmin .75vmin}.admin-page .admin-remove-btn{min-width:2.6vmin;height:2.6vmin;display:inline-flex;align-items:center;justify-content:center;font-size:2vmin;font-weight:700;line-height:1;padding:0}.admin-page .admin-btn.danger{background:#ff585838;border-color:#ff696947}.admin-page .admin-edit-modal-backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1200}.admin-page .admin-edit-modal{width:min(44vmin,92vw);max-width:92vw;background:var(--theme-color-bg-02, #2c2c30);border:1px solid rgba(255,255,255,.12);border-radius:1vmin;padding:1.2vmin;display:flex;flex-direction:column;gap:.8vmin;box-sizing:border-box}.admin-page .admin-edit-modal-title{font-size:1.4vmin;font-weight:700;color:var(--text-primary, #fff)}.admin-page .admin-edit-role-note{font-size:1.05vmin;color:var(--text-secondary, #c8c8cf)}.admin-page .admin-edit-form{display:flex;flex-direction:column;gap:.65vmin}.admin-page .admin-edit-field{display:flex;flex-direction:column;gap:.35vmin}.admin-page .admin-edit-field>span{font-size:1.02vmin;color:var(--text-secondary, #c8c8cf)}.admin-page .admin-edit-field>input,.admin-page .admin-edit-field>select{width:100%;border:1px solid rgba(255,255,255,.12);border-radius:.6vmin;background:#0003;color:var(--text-primary, #fff);padding:.58vmin .85vmin;font-size:1.12vmin;outline:none;box-sizing:border-box;min-width:0}.admin-page .admin-edit-field>input:focus,.admin-page .admin-edit-field>select:focus{border-color:#ffffff52}.admin-page .admin-edit-actions{display:flex;justify-content:flex-end;gap:.6vmin;margin-top:.4vmin}.usage-billing-layout-container{width:100%;height:100%;display:grid;gap:calc(var(--theme-size-default-margin, 1.2vmin) / 2)}.usage-billing-layout-container>.usage-billing-layout-panel:nth-child(1){grid-area:a}.usage-billing-layout-container>.usage-billing-layout-panel:nth-child(2){grid-area:b}.usage-billing-layout-container>.usage-billing-layout-panel:nth-child(3){grid-area:c}.usage-billing-layout-container>.usage-billing-layout-panel:nth-child(4){grid-area:d}.usage-billing-layout-container>.usage-billing-layout-panel:nth-child(5){grid-area:e}.usage-billing-layout-container>.usage-billing-layout-panel:nth-child(6){grid-area:f}.usage-billing-layout-container.layout-1{grid-template-areas:"a"}.usage-billing-layout-container.layout-2-v{grid-template-areas:"a b";grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.usage-billing-layout-container.layout-2-h{grid-template-areas:"a" "b";grid-template-rows:minmax(0,2.2fr) minmax(0,1fr)}.usage-billing-layout-panel{background-color:var(--theme-color-bg-02, #2c2c30);border-radius:var(--theme-size-box-border-radius, .8vmin);padding:.75vmin;display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0}.usage-billing-layout-panel .panel-title{margin-bottom:.6vmin;font-size:1.5vmin;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.usage-billing-layout-panel .panel-content{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.usage-billing-page{width:100%;height:100%;display:flex;flex-direction:column;gap:.8vmin;overflow:hidden}.usage-billing-page .usage-billing-layout-container{flex:1;min-height:0}.usage-billing-page .usage-dashboard-section,.usage-billing-page .usage-billing-section{flex:1;min-height:0;display:flex;flex-direction:column;gap:.4vmin}.usage-billing-page .usage-filter-row,.usage-billing-page .usage-kpi-grid{flex-shrink:0}.usage-billing-page .usage-filter-row{display:flex;align-items:center;gap:.45vmin}.usage-billing-page .usage-period-controls{display:inline-flex;align-items:flex-end;gap:.7vmin;border:1px solid rgba(255,255,255,.08);background:#0003;border-radius:.7vmin;padding:.35vmin .5vmin}.usage-billing-page .usage-refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:2.8vmin;height:2.8vmin;border:1px solid rgba(255,255,255,.08);background:#0003;border-radius:.55vmin;color:#c8c8cf;cursor:pointer;transition:all .2s;margin-left:.3vmin}.usage-billing-page .usage-refresh-btn svg{width:1.3vmin;height:1.3vmin}.usage-billing-page .usage-refresh-btn:hover:not(:disabled){background:#ffffff14;color:#fff}.usage-billing-page .usage-refresh-btn:active:not(:disabled){transform:scale(.92)}.usage-billing-page .usage-refresh-btn:disabled{opacity:.35;cursor:not-allowed}.usage-billing-page .usage-period-field{display:inline-flex;align-items:center;gap:.45vmin;color:var(--text-secondary, #c8c8cf);font-size:.95vmin;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:.55vmin;padding:.25vmin .55vmin}.usage-billing-page .usage-period-field span{font-size:.82vmin;letter-spacing:.03em;opacity:.9}.usage-billing-page .usage-period-field select{border:none;outline:none;background:transparent;color:var(--text-primary, #fff);font-size:1vmin;padding:0;min-width:4.5vmin;cursor:pointer}.usage-billing-page .usage-period-field select:disabled{opacity:.55;cursor:not-allowed}.usage-billing-page .usage-period-field select option{color:#111;background:#fff}.usage-billing-page .usage-filter-row input{border:1px solid rgba(255,255,255,.12);border-radius:.6vmin;background:#0003;color:var(--text-primary, #fff);height:2.8vmin;padding:0 .8vmin;font-size:1vmin;outline:none;min-width:12.5vmin}.usage-billing-page .usage-action-btn{border:1px solid rgba(255,255,255,.18);border-radius:.6vmin;height:2.8vmin;padding:0 1.2vmin;font-size:1vmin;color:#fff;background:var(--theme-color-bar-02);cursor:pointer}.usage-billing-page .usage-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5vmin}.usage-billing-page .usage-kpi-card{border:1px solid rgba(255,255,255,.1);border-radius:.7vmin;padding:.65vmin .8vmin;background:#00000038}.usage-billing-page .kpi-label{font-size:.9vmin;color:var(--text-secondary, #bcbcc4);margin-bottom:.2vmin}.usage-billing-page .kpi-value{font-size:1.3vmin;font-weight:700;color:var(--text-primary, #fff)}.usage-billing-page .usage-chart-grid{flex:1;min-height:0;display:flex;flex-direction:column;gap:.5vmin}.usage-billing-page .usage-chart-row{display:flex;gap:.5vmin;flex:1;min-height:0}.usage-billing-page .usage-chart-api,.usage-billing-page .usage-chart-redis{flex:1;min-width:0}.usage-billing-page .usage-chart-storage{flex-shrink:0}.usage-billing-page .usage-chart-card{border:1px solid rgba(255,255,255,.1);border-radius:.7vmin;padding:.6vmin;background:#0003;display:flex;flex-direction:column;min-height:0;overflow:hidden}.usage-billing-page .chart-title{font-size:.95vmin;color:var(--text-secondary, #c7c7cf);margin-bottom:.4vmin}.usage-billing-page .plot-chart-svg{width:100%;flex:1 1 auto;min-height:0;aspect-ratio:100/65;max-height:100%}.usage-billing-page .plot-grid-line{stroke:#ffffff1f;stroke-width:.3}.usage-billing-page .plot-axis-line{stroke:#ffffff59;stroke-width:.4}.usage-billing-page .plot-axis-label{fill:#e4e4ebf2}.usage-billing-page .plot-axis-label.y{font-size:1.95px}.usage-billing-page .plot-axis-label.x{font-size:1.32px}.usage-billing-page .plot-area{opacity:1}.usage-billing-page .plot-line{filter:drop-shadow(0 0 .9px rgba(255,255,255,.22));transition:stroke-dashoffset .9s ease}.usage-billing-page .plot-line.is-ready{transition:stroke-dashoffset .9s ease}.usage-billing-page .plot-point-dot{transition:transform .17s ease,filter .17s ease;transform-box:fill-box;transform-origin:center}.usage-billing-page .plot-point-value{opacity:0;transition:opacity .15s ease;fill:#fffffff2;font-size:1.75px;paint-order:stroke;stroke:#0000008c;stroke-width:.28px}.usage-billing-page .plot-point-group.is-hover .plot-point-dot{transform:scale(1.55);filter:drop-shadow(0 0 1.2px rgba(255,255,255,.55))}.usage-billing-page .plot-point-group.is-hover .plot-point-value{opacity:1}.usage-billing-page .plot-bar{opacity:.78;transition:opacity .15s ease,filter .15s ease;transform-origin:50% 100%;transform-box:fill-box}.usage-billing-page .plot-bar.is-ready{animation:usage-bar-rise .56s cubic-bezier(.2,.7,.22,1) both}.usage-billing-page .plot-bar.is-hover{opacity:1;filter:drop-shadow(0 0 1.1px rgba(255,255,255,.4))}.usage-billing-page .plot-bar-value{opacity:0;transition:opacity .15s ease;fill:#fffffff2;font-size:1.75px;paint-order:stroke;stroke:#0000008c;stroke-width:.28px}.usage-billing-page .plot-bar-value.is-hover{opacity:1}.usage-billing-page .plot-avg-line{stroke:#ffffffb8;stroke-width:.44;stroke-dasharray:1.25 1}.usage-billing-page .plot-avg-label{fill:#ecf0f8f0;font-size:1.78px;paint-order:stroke;stroke:#0000008c;stroke-width:.27px}.usage-billing-page .plot-hit{fill:transparent;pointer-events:all;cursor:pointer}.usage-billing-page .plot-hover-line{stroke:#ffffff2e;stroke-width:.35;stroke-dasharray:1.2 1.2}.usage-billing-page .storage-inline-card{justify-content:center}.usage-billing-page .storage-inline-track{width:100%;height:3vmin;border-radius:.55vmin;border:1px solid rgba(255,255,255,.12);background:#ffffff14;overflow:hidden}.usage-billing-page .storage-inline-fill{height:100%;transition:width .78s cubic-bezier(.2,.72,.24,1);will-change:width}.usage-billing-page .storage-inline-fill.is-safe{background:linear-gradient(to right,#80cb52,#6fb945)}.usage-billing-page .storage-inline-fill.is-warning{background:linear-gradient(to right,#f1b54f,#df8f34)}.usage-billing-page .storage-inline-fill.is-danger{background:linear-gradient(to right,#f06c64,#d9433a)}.usage-billing-page .storage-inline-meta{margin-top:.4vmin;display:flex;justify-content:space-between;align-items:center;font-size:1.15vmin;color:var(--text-secondary, #d1d1d8)}.usage-billing-page .storage-inline-meta strong{color:#fff;font-size:1.3vmin}.usage-billing-page .billing-table-wrapper{flex:1;min-height:0;border-radius:.75vmin;border:1px solid rgba(255,255,255,.1);overflow:auto}.usage-billing-page .billing-table{width:100%;border-collapse:collapse}.usage-billing-page .billing-table th,.usage-billing-page .billing-table td{border-bottom:1px solid rgba(255,255,255,.08);padding:1.15vmin 1vmin;font-size:1.34vmin;color:var(--text-primary, #fff);text-align:left}.usage-billing-page .billing-table th{position:sticky;top:0;z-index:1;background:var(--theme-color-bg-02, #2c2c30);color:var(--text-secondary, #bcbcc4)}.usage-billing-page .metering-item{display:inline-flex;align-items:center;gap:.55vmin}.usage-billing-page .metering-info-icon{width:1.65vmin;height:1.65vmin;min-width:16px;min-height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:#3c508c59;color:#dce7ff;font-size:1.05vmin;font-weight:700;cursor:help;line-height:1}.metering-info-floating{position:fixed;z-index:100000;min-width:22vmin;max-width:min(34vmin,100vw - 2.4rem);padding:.72vmin .9vmin;border-radius:.6vmin;border:1px solid rgba(144,197,255,.45);background:#0c1422f7;box-shadow:0 .75vmin 1.6vmin #0408109e;transform:translate(-50%);pointer-events:none}.metering-info-floating ul{margin:0;padding-left:1.25vmin}.metering-info-floating li{margin:.18vmin 0;color:#d7e8ff;font-size:1.03vmin;line-height:1.45}@keyframes usage-bar-rise{0%{transform:scaleY(.04);opacity:.42}to{transform:scaleY(1);opacity:.78}}.usage-billing-page .billing-summary{border:1px solid rgba(255,255,255,.1);border-radius:.7vmin;padding:1.2vmin;background:#0000003d}.usage-billing-page .summary-line{display:flex;align-items:center;justify-content:space-between;color:var(--text-secondary, #c6c6ce)}.usage-billing-page .summary-line.total-only{font-size:1.55vmin}.usage-billing-page .summary-line.total-only strong{font-size:2.25vmin;color:#fff}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(.5vmin)}to{opacity:1;transform:translateY(0)}}.self-service-page{width:100%;height:100%;display:flex;flex-direction:column;gap:.8vmin;overflow:hidden}.self-service-page .page-header{display:flex;align-items:center;justify-content:space-between;padding:.8vmin 1.2vmin;background:var(--theme-color-bg-02, #2c2c30);border-radius:var(--theme-size-box-border-radius, .8vmin);border:1px solid rgba(255,255,255,.12);animation:fadeSlideUp .3s cubic-bezier(.4,0,.2,1) both}.self-service-page .page-title{font-size:1.6vmin;font-weight:700;color:var(--text-primary, #fff);letter-spacing:.02em}.self-service-page .page-subtitle{font-size:1vmin;color:var(--text-secondary, #bcbcc4);opacity:.75;margin-top:.2vmin}.self-service-page .plan-badge{display:flex;align-items:center;gap:.6vmin;padding:.5vmin 1vmin;border-radius:.5vmin;background:#3fca841a;border:1px solid rgba(63,202,132,.3)}.self-service-page .badge-count{font-size:1.6vmin;font-weight:800;color:#3fca84;line-height:1}.self-service-page .badge-label{font-size:.9vmin;color:#8de7b6;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.self-service-page .self-service-body{flex:1;min-height:0;display:grid;grid-template-columns:1.22fr .78fr;gap:.8vmin}.self-service-page .pricing-summary-card,.self-service-page .option-group-card{background:var(--theme-color-bg-02, #2c2c30);border-radius:var(--theme-size-box-border-radius, .8vmin);border:1px solid rgba(255,255,255,.12);padding:1.2vmin;transition:border-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1)}.self-service-page .pricing-summary-card:hover,.self-service-page .option-group-card:hover{border-color:#ffffff2e;box-shadow:0 .2vmin 1vmin #0000004d}.self-service-page .billing-title{margin-top:.6vmin}.self-service-page .pricing-summary-card{display:flex;flex-direction:column;min-height:0;gap:.9vmin;animation:fadeSlideUp .4s cubic-bezier(.4,0,.2,1) both}.self-service-page .selected-services-list{display:flex;flex-direction:column;gap:.45vmin;margin-bottom:.6vmin;max-height:30vh;overflow-y:auto;padding-right:.2vmin}.self-service-page .selected-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.7vmin;border:1px solid rgba(63,202,132,.3);border-left:2px solid rgba(63,202,132,.6);border-radius:.55vmin;background:#3fca8414;padding:.7vmin .9vmin;animation:fadeSlideUp .2s cubic-bezier(.4,0,.2,1) both}.self-service-page .selected-item .item-name{color:#fff;font-size:1.08vmin;font-weight:600;display:flex;align-items:center;gap:.4vmin}.self-service-page .check-indicator{color:#3fca84;font-size:1vmin;font-weight:700;flex-shrink:0}.self-service-page .selected-item .item-price{color:#8de7b6;font-size:1.1vmin;font-weight:700;font-variant-numeric:tabular-nums}.self-service-page .empty-message{text-align:center;color:var(--text-secondary, #bcbcc4);font-size:1.05vmin;padding:1.5vmin;opacity:.7}.self-service-page .summary-lines{display:flex;flex-direction:column;gap:.6vmin;margin-top:.5vmin}.self-service-page .summary-lines>div{display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(255,255,255,.08);border-radius:.55vmin;background:#0003;padding:.8vmin;font-size:1.1vmin;color:var(--text-secondary, #c8c8cf)}.self-service-page .summary-lines>div strong{color:#fff;font-size:1.3vmin;font-variant-numeric:tabular-nums}.self-service-page .summary-lines .total-line{border-color:#50afff80;background:#50afff26;padding:.9vmin;margin-top:.3vmin;position:relative}.self-service-page .summary-lines .total-line:before{content:"";position:absolute;top:-.5vmin;left:10%;width:80%;height:1px;background:linear-gradient(90deg,transparent,rgba(80,175,255,.3),transparent)}.self-service-page .summary-lines .total-line span{font-weight:600;color:#50afffe6}.self-service-page .summary-lines .total-line strong{font-size:1.5vmin;color:#fff;text-shadow:0 0 .3vmin rgba(80,175,255,.4)}.self-service-page .pay-btn{margin-top:auto;height:3.5vmin;border-radius:.65vmin;border:1px solid rgba(255,255,255,.2);background:var(--theme-color-bar-02);color:#fff;font-size:1.12vmin;font-weight:700;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.self-service-page .pay-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 .3vmin 1vmin #4c337c80;border-color:#ffffff4d}.self-service-page .pay-btn:active:not(:disabled){transform:translateY(0);box-shadow:0 .1vmin .3vmin #4c337c4d}.self-service-page .pay-btn:disabled{cursor:not-allowed;opacity:.5}.self-service-page .option-group-grid{height:100%;min-height:0;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:.7vmin}.self-service-page .option-group-card{display:flex;flex-direction:column;min-height:0;gap:.5vmin;animation:fadeSlideUp .4s cubic-bezier(.4,0,.2,1) both}.self-service-page .option-group-card:nth-child(1){animation-delay:.05s}.self-service-page .option-group-card:nth-child(2){animation-delay:.1s}.self-service-page .option-group-card:nth-child(3){animation-delay:.15s}.self-service-page .group-note{margin-top:.2vmin;margin-bottom:.5vmin;color:var(--text-secondary, #bcbcc4);font-size:1vmin;font-style:italic;opacity:.7}.self-service-page .option-list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:.5vmin;padding-right:.2vmin}.self-service-page .option-row{display:grid;grid-template-columns:1fr .43fr .3fr;align-items:center;gap:.5vmin;border:1px solid rgba(255,255,255,.08);border-left:2px solid transparent;border-radius:.55vmin;background:#0000002e;padding:.6vmin .8vmin;transition:border-color .15s cubic-bezier(.4,0,.2,1),border-left-color .15s cubic-bezier(.4,0,.2,1),background .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}.self-service-page .option-row:hover{border-color:#ffffff2e;background:#ffffff0d;box-shadow:0 0 .5vmin #4c337c26}.self-service-page .option-row--active{border-left-color:#3fca8499;background:#3fca840a}.self-service-page .option-name{color:#fff;font-size:1.1vmin;font-weight:500;letter-spacing:.02em;display:flex;flex-direction:column;gap:.15vmin}.self-service-page .option-desc{font-size:.85vmin;color:var(--text-secondary, #bcbcc4);opacity:.6;font-weight:400;font-style:italic}.self-service-page .option-price{color:#c8c8cf;font-size:1.05vmin;font-weight:500;text-align:right;font-variant-numeric:tabular-nums;transition:color .15s cubic-bezier(.4,0,.2,1)}.self-service-page .option-price--active{color:#8de7b6;font-weight:600}.self-service-page .card-header-row{display:flex;align-items:center;gap:.6vmin}.self-service-page .active-count-badge{font-size:.85vmin;font-weight:700;color:#8de7b6;background:#3fca841f;border:1px solid rgba(63,202,132,.25);border-radius:.4vmin;padding:.2vmin .5vmin;letter-spacing:.03em}.self-service-page .plan-info-section{display:flex;align-items:center;justify-content:space-between;padding:.5vmin .7vmin;border-radius:.45vmin;background:#4c337c1f;border:1px solid rgba(76,51,124,.25)}.self-service-page .plan-tier{font-size:.95vmin;font-weight:700;color:#c4a8f0;letter-spacing:.03em}.self-service-page .plan-cycle{font-size:.82vmin;color:var(--text-secondary, #bcbcc4);opacity:.7;font-style:italic}.self-service-page .card-info-box{padding:.7vmin .9vmin;border-radius:.5vmin;background:#50afff0f;border:1px solid rgba(80,175,255,.15);font-size:.9vmin;color:var(--text-secondary, #bcbcc4);line-height:1.5;opacity:.8}.self-service-page .toggle-switch-track{position:relative;width:3.6vmin;height:1.8vmin;background:#ffffff1a;border-radius:1vmin;border:1px solid rgba(255,255,255,.15);cursor:pointer;justify-self:end;transition:background .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1)}.self-service-page .toggle-switch-track:before{content:"";position:absolute;width:1.3vmin;height:1.3vmin;border-radius:50%;background:#888;top:50%;left:.25vmin;transform:translateY(-50%);transition:transform .2s cubic-bezier(.4,0,.2,1),background .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1)}.self-service-page .toggle-switch-track.on{background:#3fca8440;border-color:#3fca8480}.self-service-page .toggle-switch-track.on:before{transform:translateY(-50%) translate(1.8vmin);background:#3fca84;box-shadow:0 0 .4vmin #3fca8480}.self-service-page .toggle-switch-track.disabled-track{opacity:.4;cursor:not-allowed}.self-service-page .loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5vmin;height:100%;width:100%}.self-service-page .loading-text{font-size:1.2vmin;color:var(--text-secondary, #bcbcc4);opacity:.7;letter-spacing:.05em}@keyframes planFadeIn{0%{opacity:0;transform:translateY(.6vmin)}to{opacity:1;transform:translateY(0)}}.plan-billing-page{width:100%;height:100%;display:flex;flex-direction:column;gap:.8vmin;overflow:hidden}.plan-billing-page .page-header{display:flex;align-items:center;justify-content:space-between;padding:.8vmin 1.2vmin;background:var(--theme-color-bg-02, #2c2c30);border-radius:var(--theme-size-box-border-radius, .8vmin);border:1px solid rgba(255,255,255,.12);animation:planFadeIn .3s cubic-bezier(.4,0,.2,1) both}.plan-billing-page .page-subtitle{margin-top:.5vmin;font-size:1.2vmin;color:var(--text-secondary, #bcbcc4);opacity:.8}.plan-billing-page .page-header-meta{font-size:.95vmin;color:var(--text-secondary, #bcbcc4);padding:.5vmin .9vmin;border-radius:.6vmin;border:1px solid rgba(255,255,255,.1);background:#0003}.plan-billing-page .plan-card-grid{flex:0 0 auto;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,34vmin));gap:3.2vmin;justify-content:center;align-content:start;width:100%;max-width:114vmin}.plan-billing-page .plan-card-section{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:0vmin 3.2vmin;gap:3.6vmin;background:var(--theme-color-bg-02, #2c2c30);border-radius:var(--theme-size-box-border-radius, .8vmin);border:1px solid rgba(255,255,255,.12);min-height:82vmin}.plan-billing-page .plan-steps{display:flex;align-items:center;gap:.5vmin;margin-top:2.8vmin}.plan-billing-page .plan-step{width:2.2vmin;height:2.2vmin;border-radius:999px;border:1px solid rgba(255,255,255,.25);color:var(--text-secondary, #bcbcc4);display:inline-flex;align-items:center;justify-content:center;font-size:1vmin;font-weight:700;background:#00000040}.plan-billing-page .plan-step.is-active{color:#fff;border-color:#7371ffcc;background:#7371ff59;box-shadow:0 0 .6vmin #7371ff73}.plan-billing-page .plan-step-line{width:2.2vmin;height:.2vmin;border-radius:999px;background:#ffffff26}.plan-billing-page .plan-card{position:relative;display:flex;flex-direction:column;gap:.7vmin;padding:1.1vmin;min-height:58vmin;width:100%;background:var(--theme-color-bg-02, #2c2c30);border-radius:1vmin;border:1px solid rgba(255,255,255,.12);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;animation:planFadeIn .35s cubic-bezier(.4,0,.2,1) both}.plan-billing-page .plan-card:hover{border-color:#fff3;box-shadow:0 .25vmin 1vmin #00000059;transform:translateY(-.2vmin)}.plan-billing-page .plan-card.is-featured{background:linear-gradient(160deg,#5e5dff59,#23232ae6);border-color:#7371ff99;box-shadow:0 .6vmin 2vmin #5756ff40}.plan-billing-page .plan-card-header{display:flex;align-items:center;justify-content:space-between}.plan-billing-page .plan-page-title.common-title{font-size:1.5vmin;padding:.6vmin 2.4vmin;border-color:#ffffff2e;background-color:#2c2c30}.plan-billing-page .plan-card-title.common-title{font-size:1.45vmin;padding:.6vmin 1.4vmin;border-color:#ffffff2e;background-color:#00000040;box-shadow:0 0 .6vmin #00000073}.plan-billing-page .plan-badge{font-size:.95vmin;font-weight:700;color:#e6e7ff;padding:.4vmin .85vmin;border-radius:1vmin;background:#7371ff59;border:1px solid rgba(115,113,255,.7)}.plan-billing-page .plan-price{display:flex;align-items:baseline;gap:.4vmin}.plan-billing-page .price-currency{font-size:1.05vmin;color:var(--text-secondary, #bcbcc4);text-transform:uppercase;letter-spacing:.08em}.plan-billing-page .price-value{font-size:2.8vmin;font-weight:800;color:#fff;line-height:1.1}.plan-billing-page .price-suffix{font-size:1.1vmin;color:var(--text-secondary, #bcbcc4)}.plan-billing-page .plan-desc{font-size:1.35vmin;color:var(--text-secondary, #c8c8cf);min-height:2.4vmin;line-height:1.3}.plan-billing-page .plan-cta{margin-top:.4vmin;height:3.4vmin;border-radius:2vmin;border:1px solid rgba(255,255,255,.2);background:#00000040;color:#fff;font-size:1.25vmin;font-weight:600;cursor:pointer;transition:background .2s ease,border-color .2s ease}.plan-billing-page .plan-cta.is-primary{background:var(--theme-color-bar-02, #5a5ef0);border-color:#5a5ef0b3}.plan-billing-page .plan-cta:hover{border-color:#ffffff59}.plan-billing-page .plan-divider{height:1px;background:#ffffff1a;margin:.4vmin 0 .2vmin}.plan-billing-page .plan-feature-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5vmin;color:#d7d7df;font-size:1.5vmin}.plan-billing-page .plan-feature-list li{display:flex;align-items:center;gap:.8vmin}.plan-billing-page .plan-feature-list li:before{content:"-";color:#7bcfffcc;font-weight:700}.plan-billing-page .plan-footer{text-align:center;display:flex;flex-direction:column;gap:.45vmin;font-size:.95vmin;color:var(--text-secondary, #bcbcc4);opacity:.8;width:100%;max-width:100vmin;padding-top:.6vmin;border-top:none}.plan-billing-page .plan-footer-cta{display:flex;flex-direction:column;gap:.25vmin;align-items:center;color:#e8e8ef;font-weight:600}.plan-billing-page .footer-cta-title{font-size:1.05vmin}.plan-billing-page .footer-cta-link{font-size:1.1vmin;color:#8fb6ff}.plan-billing-page .plan-footer-meta{display:flex;flex-direction:column;gap:.2vmin;font-size:.9vmin;color:var(--text-secondary, #bcbcc4)}@media(max-width:1200px){.plan-billing-page .plan-card-grid{grid-template-columns:repeat(2,minmax(0,32vmin))}}@media(max-width:900px){.plan-billing-page .plan-card-grid{grid-template-columns:minmax(0,36vmin)}.plan-billing-page .page-header{flex-direction:column;align-items:flex-start;gap:.6vmin}}.serdic-usage-billing-page .usage-billing-layout-panel{padding:var(--theme-size-narrow-margin, 1vmin)}.serdic-usage-billing-page .usage-billing-layout-panel .panel-title{font-size:1.8vmin;margin-bottom:var(--theme-size-narrow-margin, 1vmin)}.serdic-usage-billing-page .usage-billing-layout-panel .panel-title.common-title{min-height:3.4vmin;display:inline-flex;align-items:center}.serdic-usage-billing-page .usage-billing-layout-container.layout-2-h{grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.serdic-usage-billing-page .usage-billing-layout-container.layout-2-h>.usage-billing-layout-panel:nth-child(1){grid-area:b}.serdic-usage-billing-page .usage-billing-layout-container.layout-2-h>.usage-billing-layout-panel:nth-child(2){grid-area:a}.serdic-usage-billing-page .usage-chart-grid{flex:1;min-height:0}.serdic-usage-billing-page .usage-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.serdic-usage-billing-page .usage-filter-row{display:flex;align-items:center}.serdic-usage-billing-page .usage-period-controls{display:inline-flex;align-items:flex-end;gap:.7vmin;border:1px solid rgba(255,255,255,.08);background:#0003;border-radius:.7vmin;padding:.35vmin .5vmin}.serdic-usage-billing-page .usage-refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:2.8vmin;height:2.8vmin;border:1px solid rgba(255,255,255,.08);background:#0003;border-radius:.55vmin;color:#c8c8cf;cursor:pointer;transition:all .2s;margin-left:.3vmin}.serdic-usage-billing-page .usage-refresh-btn svg{width:1.3vmin;height:1.3vmin}.serdic-usage-billing-page .usage-refresh-btn:hover:not(:disabled){background:#ffffff14;color:#fff}.serdic-usage-billing-page .usage-refresh-btn:active:not(:disabled){transform:scale(.92)}.serdic-usage-billing-page .usage-refresh-btn:disabled{opacity:.35;cursor:not-allowed}.serdic-usage-billing-page .usage-period-field{display:inline-flex;align-items:center;gap:.45vmin;color:var(--text-secondary, #c8c8cf);font-size:.95vmin;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:.55vmin;padding:.25vmin .55vmin}.serdic-usage-billing-page .usage-period-field span{font-size:.82vmin;letter-spacing:.03em;opacity:.9}.serdic-usage-billing-page .usage-period-field select{border:none;outline:none;background:transparent;color:var(--text-primary, #fff);font-size:1vmin;padding:0;min-width:4.5vmin;cursor:pointer}.serdic-usage-billing-page .tenant-line-chart-card{height:100%;min-height:0;display:flex;flex-direction:column;gap:.55vmin;overflow:visible;position:relative;z-index:1}.serdic-usage-billing-page .tenant-line-chart-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.8vmin}.serdic-usage-billing-page .tenant-line-chart-tabs{display:flex;gap:.45vmin;flex-wrap:wrap;justify-content:flex-end}.serdic-usage-billing-page .tenant-line-chart-toolbar-right{display:flex;flex-direction:column;align-items:flex-end;gap:.22vmin}.serdic-usage-billing-page .tenant-line-chart-switch-row{display:flex;align-items:center;gap:.45vmin;flex-wrap:wrap;justify-content:flex-end}.serdic-usage-billing-page .tenant-line-unit-inline{font-size:.95vmin;color:#c8c8d0f2;line-height:1}.serdic-usage-billing-page .tenant-line-mode-toggle{border:1px solid rgba(255,255,255,.18);background:#0003;color:var(--text-secondary, #c7c7cf);font-size:.85vmin;border-radius:.45vmin;padding:.24vmin .78vmin;cursor:pointer;min-width:5.8vmin}.serdic-usage-billing-page .tenant-line-mode-toggle.daily,.serdic-usage-billing-page .tenant-line-mode-toggle.cumulative{color:#fff;border-color:#73a8ffa6;background:#73a8ff2e}.serdic-usage-billing-page .tenant-line-tab{border:1px solid rgba(255,255,255,.2);background:#00000038;color:var(--text-secondary, #c8c8cf);font-size:.95vmin;border-radius:.5vmin;padding:.28vmin .75vmin;cursor:pointer}.serdic-usage-billing-page .tenant-line-tab.active{color:#fff;background:#47dfa72e;border-color:#47dfa78c}.serdic-usage-billing-page .tenant-line-chart-legend{display:flex;align-items:center;flex-wrap:wrap;gap:.6vmin 1vmin}.serdic-usage-billing-page .tenant-line-legend-item{display:inline-flex;align-items:center;gap:.45vmin;font-size:.95vmin;color:var(--text-secondary, #d2d2d8);-webkit-user-select:none;user-select:none}.serdic-usage-billing-page .tenant-line-legend-item input{width:1.15vmin;height:1.15vmin;accent-color:#47dfa7}.serdic-usage-billing-page .tenant-line-swatch{width:1.4vmin;height:.4vmin;border-radius:999px;display:inline-block}.serdic-usage-billing-page .tenant-line-chart-canvas{width:100%;height:100%;min-height:24vmin;flex:1 1 auto;position:relative;overflow:visible}.serdic-usage-billing-page .tenant-line-chart-svg{width:100%;height:100%;display:block}.serdic-usage-billing-page .tenant-line-plot-bg{rx:.4vmin}.serdic-usage-billing-page .tenant-line-point{transition:r .14s ease,stroke-width .14s ease,filter .14s ease;cursor:pointer}.serdic-usage-billing-page .tenant-line-path{stroke-opacity:.96}.serdic-usage-billing-page .tenant-line-path-animated{stroke-dasharray:1;stroke-dashoffset:1;animation:tenant-line-draw .82s ease forwards}.serdic-usage-billing-page .tenant-line-path-backdrop{stroke-opacity:.28}.serdic-usage-billing-page .tenant-line-point-tooltip{position:absolute;border:1px solid rgba(255,255,255,.3);background:#0c0e18f2;box-shadow:0 .4vmin 1.1vmin #00000073;border-radius:.55vmin;padding:.5vmin .7vmin;pointer-events:none;z-index:999;min-width:7.4vmin;-webkit-backdrop-filter:blur(.3vmin);backdrop-filter:blur(.3vmin)}.serdic-usage-billing-page .tenant-line-point-tooltip .tooltip-day{color:#c6c9d6e6;font-size:.82vmin}.serdic-usage-billing-page .tenant-line-point-tooltip .tooltip-tenant{font-size:.86vmin;font-weight:700;margin-top:.1vmin}.serdic-usage-billing-page .tenant-line-point-tooltip .tooltip-value{color:#fff;font-size:1.02vmin;font-weight:700;margin-top:.1vmin;white-space:nowrap}.serdic-usage-billing-page .tenant-line-point-tooltip .tooltip-value.cumulative{color:#dce2fff5;font-size:.9vmin;font-weight:600}.serdic-usage-billing-page .tenant-line-grid-line{stroke:#ffffff1c;stroke-width:.3}.serdic-usage-billing-page .tenant-line-point-ring{transition:r .14s ease}.serdic-usage-billing-page .tenant-line-bar{transition:opacity .14s ease,transform .14s ease,stroke-width .14s ease;transform-origin:center bottom;transform-box:fill-box;animation:tenant-bar-rise .52s ease both}.serdic-usage-billing-page .tenant-line-bar.is-hover{opacity:1}.serdic-usage-billing-page .tenant-line-bar.is-zero{opacity:.78}@keyframes tenant-line-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes tenant-bar-rise{0%{transform:scaleY(.08);opacity:.25}to{transform:scaleY(1);opacity:1}}.serdic-usage-billing-page .tenant-line-grid-vertical{stroke:#ffffff0b;stroke-width:.28}.serdic-usage-billing-page .tenant-line-grid-vertical.major{stroke:#ffffff1a}.serdic-usage-billing-page .tenant-line-axis-line{stroke:#ffffff5c;stroke-width:.4}.serdic-usage-billing-page .tenant-line-axis-label{fill:#e4e4ebf2}.serdic-usage-billing-page .tenant-line-axis-label.y{font-size:1.7px}.serdic-usage-billing-page .tenant-line-axis-label.x{font-size:1.25px;text-anchor:middle}.serdic-usage-billing-page .tenant-line-unit-label{fill:#c8c8d0e6;font-size:1.6px}.serdic-usage-billing-page .tenant-line-chart-empty{flex:1;min-height:24vmin;display:flex;align-items:center;justify-content:center;color:var(--text-secondary, #c4c4ce);font-size:1.05vmin;border:1px dashed rgba(255,255,255,.14);border-radius:.7vmin;background:#0000002e}.serdic-usage-billing-page .usage-billing-section{min-height:0;overflow:hidden}.serdic-usage-billing-page .billing-table-wrapper{flex:1 1 auto;min-height:16vmin;overflow:auto}.serdic-usage-billing-page .billing-summary{flex:0 0 auto;max-height:11vmin;overflow:auto}.serdic-usage-billing-page .bottom-tab-row{display:flex;gap:.4vmin;flex-shrink:0;margin-right:1vmin}.serdic-usage-billing-page .bottom-tab-btn{border:1px solid rgba(255,255,255,.15);background:#00000038;color:var(--text-secondary, #c8c8cf);font-size:1vmin;border-radius:.5vmin;padding:.35vmin 1vmin;cursor:pointer;transition:all .18s}.serdic-usage-billing-page .bottom-tab-btn.active{color:#fff;background:#47dfa72e;border-color:#47dfa78c}.serdic-usage-billing-page .bottom-tab-btn:hover:not(.active){background:#ffffff0f}.serdic-usage-billing-page .monthly-comparison-panel{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:0;padding:1vmin 1.2vmin}.serdic-usage-billing-page .monthly-metric-block{display:flex;flex-direction:column;gap:.7vmin;padding:1.4vmin 0;border-bottom:1px solid rgba(255,255,255,.07)}.serdic-usage-billing-page .monthly-metric-block:last-child{border-bottom:none}.serdic-usage-billing-page .monthly-metric-title{font-size:1.15vmin;font-weight:700;color:var(--text-primary, #fff);margin-bottom:.3vmin}.serdic-usage-billing-page .monthly-metric-unit{font-weight:400;color:var(--text-secondary, #b0b0b8);font-size:.95vmin;margin-left:.4vmin}.serdic-usage-billing-page .monthly-bar-list{display:flex;flex-direction:column;gap:.6vmin}.serdic-usage-billing-page .monthly-bar-row{display:flex;align-items:center;gap:.8vmin}.serdic-usage-billing-page .monthly-bar-label{flex:0 0 6vmin;font-size:.95vmin;color:var(--text-secondary, #d0d0d8);text-align:right;font-weight:600}.serdic-usage-billing-page .monthly-bar-track{flex:1;height:1.8vmin;background:#ffffff0f;border-radius:.4vmin;overflow:hidden}.serdic-usage-billing-page .monthly-bar-fill{height:100%;border-radius:.4vmin;transition:width .5s ease;min-width:.3vmin}.serdic-usage-billing-page .monthly-bar-value{flex:0 0 8vmin;font-size:.95vmin;color:var(--text-primary, #fff);font-weight:600;text-align:center;font-variant-numeric:tabular-nums}
