@import"https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&display=swap";/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}html,body{width:100%;height:100%}input::-ms-clear{display:none}input::-ms-reveal{display:none}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:#0000;font-family:sans-serif;line-height:1.15}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1em}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{text-align:left;caption-side:bottom;padding-top:.75em;padding-bottom:.3em}input,button,select,optgroup,textarea{color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical;overflow:auto}fieldset{border:0;min-width:0;margin:0;padding:0}legend{width:100%;max-width:100%;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal;margin-bottom:.5em;padding:0;display:block}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{background-color:#feffe6;padding:.2em}.mvd{flex-direction:column;gap:2px;min-width:0;display:flex}.mvd--inline{flex-direction:row;align-items:center;gap:8px}.mvd--clickable{cursor:pointer}.mvd__label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:4px;font-size:11px;font-weight:600;line-height:1.3;display:flex;overflow:hidden}.mvd--inline .mvd__label{flex-shrink:0;min-width:80px}.mvd__icon{color:#94a3b8;flex-shrink:0;align-items:center;display:flex}.mvd__label-text{text-overflow:ellipsis;overflow:hidden}.mvd__body{flex-wrap:nowrap;align-items:baseline;gap:4px;min-width:0;display:flex}.mvd__value{font-variant-numeric:tabular-nums;color:#1e293b;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:700;line-height:1.15;overflow:hidden}.mvd__value--na{color:#94a3b8;font-weight:500}.mvd--lg .mvd__value{font-size:28px}.mvd--md .mvd__value{font-size:20px}.mvd--sm .mvd__value{font-size:15px}.mvd--xs .mvd__value,.mvd--lg .mvd__unit{font-size:13px}.mvd--md .mvd__unit{font-size:11px}.mvd--sm .mvd__unit{font-size:10px}.mvd--xs .mvd__unit{font-size:9px}.mvd__unit{color:#94a3b8;white-space:nowrap;flex-shrink:0;font-weight:500}.mvd__delta{white-space:nowrap;border-radius:4px;flex-shrink:0;align-items:center;gap:2px;padding:1px 5px;font-size:10px;font-weight:600;line-height:1.4;display:inline-flex}.mvd__delta--good{color:#166534;background:#f0fdf4}.mvd__delta--bad{color:#b91c1c;background:#fef2f2}.mvd__delta--flat{color:#64748b;background:#f1f5f9}.mvd__delta-num{font-variant-numeric:tabular-nums}.mvd__hint{color:#94a3b8;font-size:10px;line-height:1.3}.mvd--success .mvd__value{color:#166534}.mvd--warning .mvd__value{color:#b45309}.mvd--danger .mvd__value{color:#b91c1c}.mvd--muted .mvd__value{color:#94a3b8}.metric-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;transition:border-color .15s,box-shadow .15s}.metric-card--clickable{cursor:pointer}.metric-card--clickable:hover{border-color:#93c5fd;box-shadow:0 4px 12px #3b82f614}.metric-card--teal{background:linear-gradient(135deg,#f0fdfa,#ccfbf1);border-color:#99f6e4}.metric-card--blue{background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#93c5fd}.metric-card--amber{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#fde68a}.metric-card--slate{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-color:#cbd5e1}.metric-card--green{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#bbf7d0}.metric-card--red{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#fecaca}.metric-card--indigo{background:linear-gradient(135deg,#eef2ff,#e0e7ff);border-color:#a5b4fc}.metric-row{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.status-badge{white-space:nowrap;border-radius:6px;align-items:center;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.status-badge--green{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.status-badge--blue{color:#1e40af;background:#eff6ff;border:1px solid #93c5fd}.status-badge--orange{color:#b45309;background:#fffbeb;border:1px solid #fde68a}.status-badge--red{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.status-badge--gray{color:#64748b;background:#f8fafc;border:1px solid #e2e8f0}.status-badge--good{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.status-badge--fair{color:#b45309;background:#fffbeb;border:1px solid #fde68a}.status-badge--poor{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.metric-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width:1100px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){.metric-grid,.metric-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-grid--2{grid-template-columns:repeat(1,minmax(0,1fr))}}@media (max-width:480px){.metric-grid,.metric-grid--3,.metric-grid--2{grid-template-columns:1fr}}.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols,3),minmax(0,1fr));gap:6px;margin-top:8px;display:grid}@media (max-width:1100px){.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols-md,3),minmax(0,1fr))}}@media (max-width:768px){.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols-sm,2),minmax(0,1fr))}}@media (max-width:480px){.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols-xs,1),minmax(0,1fr))}}.sensor-mini-cell{background:#ffffffb3;border:1px solid #e2e8f0;border-radius:8px;flex-direction:column;gap:2px;min-height:48px;padding:6px 8px;display:flex}.sensor-mini-cell--online{background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border-color:#bbf7d0}.sensor-mini-cell__label{color:#64748b;text-transform:uppercase;letter-spacing:.03em;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600;line-height:1.3;overflow:hidden}.sensor-mini-cell__body{align-items:baseline;gap:3px;min-width:0;display:flex}.sensor-mini-cell__value{color:#1e293b;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:15px;font-weight:700;line-height:1.2;overflow:hidden}.sensor-mini-cell__unit{color:#94a3b8;white-space:nowrap;flex-shrink:0;font-size:10px;font-weight:500}.sensor-mini-cell__na{color:#cbd5e1;font-size:13px;font-style:italic}.data-quality-banner{border-radius:10px;align-items:center;gap:10px;margin-bottom:12px;padding:10px 16px;font-size:13px;font-weight:600;display:flex}.data-quality-banner--good{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.data-quality-banner--warn{color:#b45309;background:#fffbeb;border:1px solid #fde68a}.data-quality-banner--bad{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.gw-card-metrics{border-top:1px solid #f1f5f9;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;padding-top:10px;display:grid}.gw-card-metric{flex-direction:column;gap:1px;display:flex}.gw-card-metric__label{color:#94a3b8;font-size:10px;font-weight:500}.gw-card-metric__value{color:#1e293b;font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;font-size:14px;font-weight:700;display:flex}.gw-card-metric__unit{color:#94a3b8;font-size:10px;font-weight:500}.area-card-metrics{border-top:1px solid #f1f5f9;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;padding-top:10px;display:grid}.area-card-metric{background:#f8fafc;border-radius:8px;flex-direction:column;gap:1px;padding:6px 8px;display:flex}.area-card-metric__label{color:#94a3b8;text-transform:uppercase;letter-spacing:.03em;font-size:10px;font-weight:500}.area-card-metric__value{color:#1e293b;font-variant-numeric:tabular-nums;align-items:baseline;gap:3px;font-size:15px;font-weight:700;display:flex}.area-card-metric__unit{color:#94a3b8;font-size:10px;font-weight:500}@media (max-width:1100px){.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-md,2),minmax(0,1fr))}}@media (max-width:768px){.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-sm,2),minmax(0,1fr))}}@media (max-width:480px){.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-xs,1),minmax(0,1fr))}}.sensor-card{border:1px solid #e2e8f0;border-radius:14px;transition:border-color .15s,box-shadow .15s;overflow:hidden}.sensor-card:hover{border-color:#93c5fd;box-shadow:0 8px 24px #3b82f614}.sensor-card__head{justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;display:flex}.sensor-card__icon{color:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;display:flex}.sensor-card__name.ant-typography{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;line-height:1.3;overflow:hidden}.sensor-card__meta{flex-shrink:0}.sensor-card__status{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:4px 8px;font-size:11px;font-weight:600;display:inline-flex}.sensor-card__status--online{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.sensor-card__status--offline{color:#475569;background:#f8fafc;border:1px solid #e2e8f0}.sensor-card__body{padding:10px 14px 14px}.sensor-card__description.ant-typography{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:8px;font-size:12px;display:-webkit-box;overflow:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.min-h-screen{min-height:100vh}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.items-center{align-items:center}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.border{border-style:var(--tw-border-style);border-width:1px}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}:root{--ui-bg:#eef3f8;--ui-surface:#ffffffe6;--ui-surface-strong:#fff;--ui-border:#dbe4ee;--ui-border-strong:#c7d4e1;--ui-text:#0f172a;--ui-text-muted:#5f6f82;--ui-primary:#0f766e;--ui-primary-strong:#115e59;--ui-primary-soft:#0f766e1f;--ui-accent:#2563eb;--ui-success:#16a34a;--ui-warning:#d97706;--ui-danger:#dc2626;--ui-radius-sm:12px;--ui-radius-md:18px;--ui-radius-lg:24px;--ui-shadow-sm:0 8px 18px #0f172a0f;--ui-shadow-md:0 14px 30px #0f172a17;--card-radius:14px;--hero-radius:18px;--card-shadow:0 4px 16px #0f172a0f;--state-online-bg:#f0fdf4;--state-online-border:#bbf7d0;--state-online-text:#166534;--state-offline-bg:#f8fafc;--state-offline-border:#e2e8f0;--state-offline-text:#64748b;--state-warning-bg:#fffbeb;--state-warning-border:#fde68a;--state-warning-text:#b45309;--state-nodata-bg:#f8fafc;--state-nodata-border:#e2e8f0;--state-nodata-text:#64748b}html{font-size:15px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--ui-text);background:radial-gradient(circle at top left,#2563eb14,transparent 28%),radial-gradient(circle at top right,#0f766e1a,transparent 26%),linear-gradient(180deg,#f7fafc 0%,var(--ui-bg)100%);margin:0;padding:0;font-family:Be Vietnam Pro,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1 padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#94a3b8 padding-box padding-box}.ant-input,.ant-input-affix-wrapper,.ant-input-password,.ant-select-selector,.ant-picker,.ant-input-number,.ant-btn,.ant-tag,.ant-badge-count,.ant-alert,.ant-tabs-tab-btn,.ant-segmented,.ant-modal-content,.ant-dropdown .ant-dropdown-menu,.ant-notification-notice,.ant-table-wrapper,.ant-card{transition:background-color .2s,border-color .2s,box-shadow .2s,color .2s,transform .2s,opacity .2s!important}.ant-input:focus,.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper-focused,.ant-input-password:focus,.ant-select-focused .ant-select-selector,.ant-picker-focused,.ant-input-number-focused{border-color:var(--ui-primary)!important;box-shadow:0 0 0 4px var(--ui-primary-soft)!important}.ant-input:hover,.ant-input-affix-wrapper:hover,.ant-input-password:hover,.ant-select:hover .ant-select-selector,.ant-picker:hover,.ant-input-number:hover{border-color:var(--ui-border-strong)!important}.ant-input-affix-wrapper .ant-input,.ant-input-password .ant-input,.ant-input-affix-wrapper input.ant-input,.ant-input-password input.ant-input{box-shadow:none!important;background:0 0!important;border:none!important}.ant-input-affix-wrapper .ant-input:hover,.ant-input-affix-wrapper .ant-input:focus,.ant-input-affix-wrapper .ant-input:active,.ant-input-password .ant-input:hover,.ant-input-password .ant-input:focus,.ant-input-password .ant-input:active,.ant-input-affix-wrapper input.ant-input:hover,.ant-input-affix-wrapper input.ant-input:focus,.ant-input-affix-wrapper input.ant-input:active,.ant-input-password input.ant-input:hover,.ant-input-password input.ant-input:focus,.ant-input-password input.ant-input:active{box-shadow:none!important;border:none!important;outline:none!important}.ant-layout{background:0 0!important}.ant-card,.ant-modal-content,.ant-dropdown .ant-dropdown-menu,.ant-drawer-content,.ant-table-wrapper,.ant-alert,.ant-notification-notice{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--ui-shadow-sm)!important;border:1px solid #dbe4eeeb!important}#root{min-height:100vh}.ant-btn{font-weight:600!important}.ant-btn-default{border-color:var(--ui-border)!important;color:var(--ui-text)!important;background:#ffffffdb!important}.ant-btn-default:hover,.ant-btn-default:focus{border-color:var(--ui-primary)!important;color:var(--ui-primary)!important;background:#fff!important}.ant-btn-primary{background:linear-gradient(135deg,var(--ui-primary)0%,var(--ui-accent)100%)!important;border:none!important;box-shadow:0 10px 18px #0f766e2e!important}.ant-btn-primary:hover,.ant-btn-primary:focus{filter:saturate(1.05)brightness(1.02);transform:translateY(-1px)}.ant-card{border-radius:var(--ui-radius-md)!important;background:var(--ui-surface)!important}.ant-card .ant-card-body{padding:18px!important}.ant-card .ant-card-head{min-height:56px;padding:0 18px;border-bottom:1px solid #dbe4eedb!important}.ant-tag{border-radius:999px!important;padding-inline:10px!important;font-weight:600!important}.ant-breadcrumb{background:#fffc;border:1px solid #dbe4eee6;border-radius:999px;max-width:100%;padding:10px 14px;display:inline-flex;margin-bottom:18px!important}.ant-breadcrumb a{color:var(--ui-text-muted)!important}.app-breadcrumbs{overflow:hidden}.app-breadcrumbs .ant-breadcrumb-link,.app-breadcrumbs .ant-breadcrumb-separator{white-space:nowrap}@media (max-width:768px){.app-breadcrumbs.ant-breadcrumb{width:100%;padding:8px 12px;overflow:hidden;margin-bottom:14px!important}.ant-breadcrumb{padding:6px 10px;font-size:12px;margin-bottom:12px!important}}.ant-breadcrumb li:last-child,.ant-breadcrumb li:last-child a{font-weight:600;color:var(--ui-text)!important}.ant-tabs .ant-tabs-nav{margin-bottom:18px!important}.ant-tabs .ant-tabs-tab{border-radius:999px!important;padding:8px 14px!important}.ant-tabs .ant-tabs-tab-active{background:#0f766e14}@media (max-width:640px){.ant-tabs .ant-tabs-tab{padding:6px 10px!important;font-size:13px!important}.ant-tabs .ant-tabs-nav{margin-bottom:12px!important}}.ant-alert,.ant-table-container{border-radius:16px!important}.ant-table-thead>tr>th{white-space:nowrap}.ant-modal-header{margin-bottom:18px!important;padding-bottom:14px!important}.ant-modal-footer{padding-top:14px!important}.auth-shell{width:100%;max-width:1280px;display:flex}.auth-brand-panel{color:#fff;flex-direction:column;flex:1;justify-content:space-between;padding:46px 46px 40px;display:flex;position:relative}.auth-form-panel{background:#fff;flex-direction:column;flex:1;padding:50px clamp(38px,4vw,62px) 46px;display:flex}.app-page{flex-direction:column;gap:18px;min-height:calc(100vh - 136px);display:flex}.page-hero{border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-md);background:linear-gradient(160deg,#fffffff5,#f8fafceb),linear-gradient(120deg,#0f766e14,#2563eb14);border:1px solid #dbe4eef2;flex-direction:column;gap:16px;padding:22px;display:flex}.page-hero__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.page-hero__content{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.page-hero__title{align-items:center;gap:12px;min-width:0;display:flex}.page-hero__title--sensor{flex-wrap:nowrap}.page-hero__title-block{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.page-hero__subtitle{align-items:center;gap:6px;min-width:0;max-width:100%;font-size:14px;display:inline-flex}.page-hero__subtitle--device{color:#64748b}.page-hero__subtitle--time{font-size:12px}.page-hero__back{background:#ffffffd6;border:1px solid #94a3b838;border-radius:12px;flex-shrink:0;width:44px;height:44px;box-shadow:0 8px 20px #0f172a0f}.page-hero__badge{color:#fff;border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;font-size:22px;display:inline-flex}.page-hero__badge--online{background:linear-gradient(135deg,#16a34a,#22c55e);box-shadow:0 12px 28px #22c55e2e}.page-hero__badge--offline{background:linear-gradient(135deg,#64748b,#94a3b8);box-shadow:0 12px 28px #64748b2e}.page-hero__title-text.ant-typography{color:#0f172a;overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%;margin:0;font-size:clamp(1.35rem,2vw,1.85rem);font-weight:800;line-height:1.1}.page-hero__title-label,.page-hero__subtitle-text{overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.page-hero__subtitle-text{flex:1}.page-hero__meta,.section-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.page-hero__meta--sensor{padding-left:42px}.page-hero__status-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:2px;display:flex}.page-hero__status{border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.page-hero__status-icon{justify-content:center;align-items:center;display:inline-flex}.page-hero__status--online{color:#166534;background:linear-gradient(135deg,#ecfdf5,#dcfce7);border-color:#86efac;box-shadow:0 8px 20px #22c55e24}.page-hero__status--offline{color:#475569;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-color:#cbd5e1;box-shadow:0 10px 24px #64748b29}.page-hero__type-tag{font-size:11px;font-weight:600}.page-hero__badge--lg{border-radius:18px;width:64px;height:64px;font-size:28px}.page-hero__name-row{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.page-hero__sensor-name{color:#0f172a;font-size:16px;font-weight:800;line-height:1.2}.page-hero__gw-name{color:#64748b;align-items:center;gap:4px;font-size:12px;font-weight:500;display:inline-flex}.page-hero__more-btn{color:#64748b;border:1px solid #e2e8f0;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.page-hero__more-btn:hover{color:#334155;background:#f1f5f9}.page-hero__actions{align-items:center;gap:10px;margin-left:auto;display:flex}.page-hero__action-btn{border-radius:12px;min-width:92px;height:40px}.page-hero__tags,.toolbar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.metric-grid{grid-template-columns:repeat(var(--metric-grid-cols,4),minmax(0,1fr));gap:14px;display:grid}.metric-grid--3{--metric-grid-cols:3}.metric-card{flex-direction:column;justify-content:center;gap:6px;min-height:104px;display:flex}.metric-card__label{color:var(--ui-text-muted);font-size:.82rem;font-weight:600}.metric-card__value{color:var(--ui-text);font-size:1.55rem;font-weight:800;line-height:1.1}.stats-shell{flex-direction:column;gap:12px;display:flex}.stats-shell .ant-card .ant-card-body{padding:14px!important}.stats-shell .ant-card .ant-card-head{min-height:48px;padding:0 14px}.stats-hero-card{overflow:hidden}.stats-hero{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.stats-hero__eyebrow{color:#1d4ed8;letter-spacing:.04em;text-transform:uppercase;background:#2563eb1a;border-radius:999px;align-items:center;margin-bottom:8px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.stats-chip-list{flex-wrap:wrap;gap:8px;display:flex}.stats-chip{color:#0f172a;background:linear-gradient(135deg,#0f766e1a,#2563eb1f);border:1px solid #94a3b82e;border-radius:999px;justify-content:center;align-items:center;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.stats-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.stats-summary-grid--compact{gap:12px}.stats-summary-tile{box-shadow:var(--ui-shadow-sm);background:linear-gradient(160deg,#fffffff5,#f8fafceb);border:1px solid #dbe4eeeb;border-radius:16px;align-items:center;gap:10px;padding:11px 12px;display:flex;position:relative}.stats-summary-tile__icon{color:#0f172a;border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;font-size:15px;display:inline-flex}.stats-summary-tile__label{color:var(--ui-text-muted);margin-bottom:4px;font-size:11px;font-weight:700}.stats-summary-tile__value{color:var(--ui-text);font-size:1rem;font-weight:800;line-height:1.15}.stats-summary-tile--teal .stats-summary-tile__icon{color:#0f766e;background:#0f766e1f}.stats-summary-tile--blue .stats-summary-tile__icon{color:#2563eb;background:#2563eb1f}.stats-summary-tile--amber .stats-summary-tile__icon{color:#d97706;background:#d9770624}.stats-summary-tile--slate .stats-summary-tile__icon{color:#334155;background:#3341551f}.stats-doc-grid,.stats-comparison-grid{gap:10px;display:grid}.stats-field-grid,.stats-comparison-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.stats-doc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-field-card,.stats-comparison-card{background:linear-gradient(#fffffffa,#f7fafceb);border:1px solid #dbe4eeeb;border-radius:16px;padding:11px}.stats-field-card__header,.stats-comparison-card__head,.stats-metric-tile__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.stats-field-card__title,.stats-comparison-card__title{color:#0f172a;font-size:13px;font-weight:800}.stats-field-card__quote{justify-content:space-between;align-items:flex-end;gap:10px;margin-top:8px;display:flex}.stats-field-card__main{color:#0f766e;margin-top:0;font-size:1.08rem;font-weight:800}.stats-field-card__sub,.stats-metric-tile__hint{color:#64748b;margin-top:4px;font-size:11px;line-height:1.4}.stats-field-card__range,.stats-comparison-card__metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.stats-field-card__range--market{grid-template-columns:repeat(3,minmax(0,1fr))}.stats-field-card__range span,.stats-comparison-card__metrics span{color:var(--ui-text-muted);margin-bottom:3px;font-size:11px;display:block}.stats-field-card__range strong,.stats-comparison-card__metrics strong{color:#0f172a;font-size:12px;font-weight:700;display:block}.stats-comparison-card__head{align-items:center}.stats-market-chip{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:5px 8px;font-size:11px;font-weight:800;display:inline-flex}.stats-market-chip--up{color:#16a34a;background:#22c55e1f}.stats-market-chip--down{color:#dc2626;background:#ef44441a}.stats-market-chip--flat{color:#64748b;background:#94a3b824}.stats-market-bar{background:#e2e8f0d9;border-radius:999px;height:5px;margin-top:10px;position:relative;overflow:hidden}.stats-market-bar__fill{border-radius:inherit;height:100%;display:block}.stats-market-bar__fill--up{background:linear-gradient(90deg,#86eface6,#16a34a)}.stats-market-bar__fill--down{background:linear-gradient(90deg,#fca5a5f2,#dc2626)}.stats-market-bar__fill--flat{background:linear-gradient(90deg,#bfdbfecc,#94a3b8)}.stats-comparison-card__metrics--market{grid-template-columns:repeat(3,minmax(0,1fr))}.stats-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.stats-metric-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-metric-tile{background:#f8fafcd9;border:1px solid #e2e8f0f2;border-radius:16px;min-height:88px;padding:11px}.stats-metric-tile--compact{min-height:82px}.stats-metric-tile__label{color:var(--ui-text-muted);font-size:11px;font-weight:700}.stats-metric-tile__value{color:#0f172a;margin-top:8px;font-size:.98rem;font-weight:800;line-height:1.15}.stats-alert-stack{flex-direction:column;gap:12px;display:flex}.stats-loading{justify-content:center;padding:20px 0;display:flex}.stats-table-card .ant-table-thead>tr>th,.stats-table-card .ant-table-tbody>tr>td{padding:10px!important}.evaluation-shell{gap:14px}.evaluation-doc-grid{align-items:start}.evaluation-score-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px;display:grid}.evaluation-recommendation-item{padding-inline:0!important}.evaluation-recommendation{align-items:flex-start;gap:12px;width:100%;display:flex}.evaluation-recommendation__icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;display:inline-flex}.evaluation-recommendation__icon--error{color:#dc2626;background:#ef44441f}.evaluation-recommendation__icon--warning{color:#d97706;background:#f59e0b24}.evaluation-recommendation__icon--success{color:#16a34a;background:#22c55e1f}.evaluation-recommendation__icon--info{color:#2563eb;background:#2563eb1f}.evaluation-recommendation__text{color:#0f172a;margin-top:6px}.compact-panel-card{overflow:hidden}.compact-toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.compact-toolbar--between{justify-content:space-between}.compact-select{width:220px}.compact-card-title{justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.compact-chart-list{flex-direction:column;gap:10px;display:flex}.compact-chart-card .ant-card-body{padding-top:10px!important}.compact-empty-card .ant-empty{margin-block:18px}.compact-meta-row{color:var(--ui-text-muted);flex-wrap:wrap;align-items:center;gap:12px;margin-top:6px;font-size:12px;display:flex}.compact-meta-row span{align-items:center;gap:6px;display:inline-flex}.history-tab-shell .ant-table-pagination{margin-bottom:0!important}.history-tab__field-select{min-width:min(320px,100%)}@media (max-width:1100px){.stats-summary-grid,.stats-field-grid,.stats-comparison-grid,.stats-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){.stats-summary-grid,.stats-field-grid,.stats-doc-grid,.stats-comparison-grid,.stats-metric-grid,.stats-metric-grid--two,.evaluation-score-grid,.stats-field-card__range,.stats-comparison-card__metrics{grid-template-columns:minmax(0,1fr)}.stats-summary-tile,.stats-field-card,.stats-comparison-card,.stats-metric-tile{padding:14px}.compact-select{width:100%}.compact-card-title{flex-direction:column;align-items:flex-start}}.rfg{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:10px}.rfg__grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.fc{border-radius:10px;flex-direction:column;min-height:80px;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}.fc--online{background:#f0fdf4;border:1.5px solid #86efac;box-shadow:0 1px 4px #22c55e14}.fc--online:hover{background:#ecfdf5;border-color:#6ee7b7;box-shadow:0 2px 8px #22c55e1f}.fc--offline{background:#f1f5f9;border:1.5px solid #cbd5e1}.fc--no-data:not(.fc--offline){background:#f1f5f9;border-color:#cbd5e1}.fc--error{background:#fef2f2;border:1.5px solid #fca5a5}.fc--error:hover{background:#fee2e2;border-color:#f87171}.fc--error .fc__label{color:#991b1b}.fc--error .fc__settings-btn{color:#ef4444}.fc--error .fc__dot{background:#ef4444;box-shadow:0 0 4px #ef444480}.fc--warning{background:#fffbeb;border:1.5px solid #fcd34d}.fc--warning:hover{background:#fef3c7;border-color:#fbbf24}.fc--warning .fc__label{color:#92400e}.fc--warning .fc__settings-btn{color:#f59e0b}.fc--warning .fc__dot{background:#f59e0b;box-shadow:0 0 4px #f59e0b80}.fc__header{background:#00000005;border-bottom:1px solid #0000000a;align-items:center;gap:3px;padding:3px 6px;display:flex}.fc--offline .fc__header{background:#f1f5f9;border-bottom-color:#e2e8f0}.fc__settings-btn{all:unset;color:#22c55e;cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;transition:background .15s;display:flex}.fc__settings-btn:hover{background:#22c55e1f}.fc--offline .fc__settings-btn{color:#94a3b8}.fc--offline .fc__settings-btn:hover{background:#94a3b81f}.fc__label{color:#0f766e;text-align:center;-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;flex:1;min-height:2.6em;font-size:10px;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.fc--offline .fc__label{color:#64748b}.fc__dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.fc__dot--on{background:#22c55e;animation:2s infinite fc-pulse;box-shadow:0 0 4px #22c55e80}.fc__dot--off{background:#94a3b8}@keyframes fc-pulse{0%,to{opacity:1}50%{opacity:.5}}.fc__body{flex:1;justify-content:center;align-items:center;gap:4px;padding:6px 8px;display:flex}.fc__stack{flex-direction:column;align-items:center;gap:0;width:100%;display:flex}.fc__num{color:#0f172a;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:clamp(15px,3.5vw,18px);font-weight:800;line-height:1.2;overflow:hidden}.fc__val--up .fc__num{color:#16a34a}.fc__val--down .fc__num{color:#dc2626}.fc__unit{color:#64748b;white-space:nowrap;font-size:10px;font-weight:500;line-height:1}.fc__na{color:#cbd5e1;letter-spacing:.05em;font-size:14px;font-weight:700}.fc__trend-row{white-space:nowrap;border-top:1px solid #0000000a;justify-content:center;align-items:center;gap:3px;padding:2px 6px;font-size:10px;font-weight:700;display:flex}.fc__trend-row--up{color:#16a34a;background:#22c55e0f}.fc__trend-row--down{color:#dc2626;background:#ef44440f}@media (max-width:1100px){.rfg__grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.rfg__grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.rfg__grid{grid-template-columns:1fr;gap:6px}.fc__num{font-size:14px}}.realtime-field-grid__container,.realtime-data-container,.fields-data-container{grid-template-columns:repeat(var(--grid-cols,1),minmax(0,1fr));grid-auto-flow:dense;align-items:stretch;display:grid}.section-shell{border-radius:var(--ui-radius-md);box-shadow:var(--ui-shadow-sm);background:#ffffffeb;border:1px solid #dbe4eeeb;flex-direction:column;gap:16px;padding:18px;display:flex}.section-title{color:var(--ui-text)!important;margin:0!important;font-size:1.06rem!important;font-weight:700!important}.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols,3),minmax(0,1fr));gap:16px;display:grid}.ui-card-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.sl-loading,.sl-empty-wrap{padding:24px}.sl-loading{text-align:center}.sl-page-title.ant-typography{align-items:center;gap:8px;display:inline-flex;margin:0!important}.sl-page-title__icon{flex-shrink:0}.sl-page-hero__meta{margin-top:10px;margin-left:40px}.sl-sensor-search{width:min(280px,100%);max-width:100%}.sd-tabs-shell,.sd-tabs-content{margin-top:16px}.stats-field-select{width:min(280px,100%)}.sensor-card{background:#ffffffeb;border:1px solid #dbe4eef2;border-radius:20px;flex-direction:column;min-height:100%;display:flex;overflow:hidden}.sensor-card__head,.sensor-card__foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.sensor-card__head{border-bottom:1px solid #dbe4eecc;padding:14px 16px}.sensor-card__identity{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.sensor-card__icon{background-color:var(--sensor-accent,#64748b);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;display:flex}.sensor-card__identity-content{flex:1;min-width:0}.sensor-card__meta-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.sensor-card__code.ant-typography{overflow-wrap:anywhere;font-size:11px}.sensor-card__meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:6px;display:flex}.sensor-card__type-tag{opacity:.92;font-size:10px;font-weight:600;line-height:1}.sensor-card__status{border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:4px 9px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.sensor-card__status--online{color:#166534;background:#dcfce7f2;border-color:#86efacf2}.sensor-card__status--offline{color:#475569;background:#f1f5f9fa;border-color:#cbd5e1f2}.sensor-card__body{background:#fff;flex-direction:column;flex:1;gap:12px;padding:14px 16px 12px;display:flex}.sensor-card__foot{border-top:1px solid #dbe4eec2;padding:12px 16px 16px}.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols,3),minmax(0,1fr));gap:6px;display:grid}.sensor-card__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:13px;line-height:1.4;display:block;overflow:hidden}.sensor-card__description{overflow-wrap:anywhere;word-break:break-word;-webkit-line-clamp:1;-webkit-box-orient:vertical;min-width:0;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.sl-sensor-card{--sensor-accent:#64748b}.sl-sensor-card--connected{background:#fff;border-color:#16a34a4d}.sl-sensor-card--connected .sensor-card__body{background:#fff}.sl-sensor-card--connected .sensor-card__head{background:#fff;border-bottom-color:#16a34a26}.sl-sensor-card--disconnected{background:#f8fafceb;border-color:#cbd5e1cc}.sl-sensor-card--disconnected .sensor-card__head{background:linear-gradient(135deg,#f1f5f9,#f8fafc);border-bottom-color:#cbd5e199}.sl-sensor-card__head{background:linear-gradient(135deg,var(--sensor-accent),var(--sensor-accent))}@supports (color:color-mix(in lab,red,red)){.sl-sensor-card__head{background:linear-gradient(135deg,color-mix(in srgb,var(--sensor-accent)10%,white),color-mix(in srgb,var(--sensor-accent)16%,white))}}.sl-sensor-tags{margin-bottom:12px}.sl-sensor-footnote.ant-typography{font-size:12px}.field-tile{text-align:center;cursor:pointer;background:#f8fafc;border:1px solid #dbe4eee6;border-radius:10px;flex-direction:column;justify-content:flex-start;align-items:center;gap:4px;min-height:72px;padding:8px 8px 6px;transition:border-color .15s,background .15s;display:flex;overflow:hidden}.field-tile--active{background:#f0fdf4;border-color:#86efac}.field-tile--active:hover{background:#ecfdf5;border-color:#6ee7b7}.field-tile--inactive{background:#f1f5f9;border-color:#cbd5e1}.field-tile--error{background:#fef2f2;border-color:#fca5a5}.field-tile--error:hover{background:#fee2e2;border-color:#f87171}.field-tile--error .field-tile__key{color:#991b1b}.field-tile--error .field-tile__value-number{color:#dc2626}.field-tile--warning{background:#fffbeb;border-color:#fcd34d}.field-tile--warning:hover{background:#fef3c7;border-color:#fbbf24}.field-tile--warning .field-tile__key{color:#92400e}.field-tile--warning .field-tile__value-number{color:#b45309}.field-tile--gateway{cursor:default}.field-tile__key{color:var(--ui-text-muted);text-transform:uppercase;letter-spacing:.03em;-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;width:100%;max-width:100%;min-height:2.6em;font-size:10px;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.field-tile__value{font-variant-numeric:tabular-nums;flex-direction:row;justify-content:center;align-items:baseline;gap:4px;width:100%;min-width:0;padding:0 2px;display:flex;overflow:hidden}.field-tile__value-number{color:var(--ui-text);white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0;font-size:15px;font-weight:700;overflow:hidden}.field-tile__value-number--up,.field-tile__value-number--down{color:var(--ui-text)}.field-tile__unit{color:var(--ui-text-muted);white-space:nowrap;flex-shrink:0;font-size:10px;font-weight:500}.field-delta{white-space:nowrap;flex-direction:row;justify-content:center;align-items:center;gap:2px;margin-top:1px;font-size:10px;font-weight:700;line-height:1;display:flex}.field-delta--up{color:#16a34a}.field-delta--down{color:#dc2626}.field-delta--neutral{color:var(--ui-text-muted);opacity:.8}.ui-card-grid--gateway-fields{gap:12px}.section-switcher{grid-template-columns:repeat(var(--section-switcher-cols,4),minmax(0,1fr));gap:10px;display:grid}.section-switcher__button{min-height:44px}@media (max-width:640px){.sensor-card__head{align-items:flex-start}.sensor-card__meta{align-items:flex-start;width:100%;margin-top:2px}.page-hero__head{flex-direction:column;align-items:stretch}.page-hero__title--sensor{flex-wrap:wrap;align-items:flex-start}.page-hero__actions{width:100%;margin-left:0}.page-hero__action-btn{flex:1}.sl-page-hero__meta{margin-left:0}.sl-sensor-search{width:100%}}.info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.info-tile{background:#f8fafc;border:1px solid #dbe4eeeb;border-radius:16px;padding:14px 16px}.info-tile__label{color:var(--ui-text-muted);margin-bottom:6px;font-size:.78rem;font-weight:600;display:block}.info-tile__value{color:var(--ui-text);font-weight:700}.page-empty{justify-content:center;align-items:center;min-height:240px;display:flex}@media (max-width:768px){.auth-shell{flex-direction:column}.auth-brand-panel{display:none}.auth-form-panel{justify-content:center;min-height:100vh;padding:32px 24px}.page-hero,.section-shell{padding:16px}.page-hero__meta--sensor{padding-left:0}.metric-grid,.section-switcher,.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-xs,1),minmax(0,1fr))}.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols-sm,2),minmax(0,1fr))}.realtime-field-grid__container,.realtime-data-container,.fields-data-container{grid-template-columns:repeat(var(--grid-cols-sm,2),minmax(0,1fr))}}@media (max-width:1919px){.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols,4),minmax(0,1fr))}}@media (max-width:1600px){.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-md,3),minmax(0,1fr))}}@media (max-width:1200px){.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-sm,2),minmax(0,1fr))}.metric-grid{grid-template-columns:repeat(min(var(--metric-grid-cols,4),2),minmax(0,1fr))}}@media (max-width:480px){.auth-form-panel{padding:24px 16px}.metric-grid,.ui-card-grid--2,.section-switcher,.info-grid{grid-template-columns:minmax(0,1fr)}.ui-card-grid{grid-template-columns:repeat(var(--card-grid-cols-xs,1),minmax(0,1fr))}.sensor-mini-grid{grid-template-columns:repeat(var(--mini-grid-cols-xs,1),minmax(0,1fr))}.realtime-field-grid__container,.realtime-data-container,.fields-data-container{grid-template-columns:repeat(var(--grid-cols-xs,1),minmax(0,1fr))}.ant-breadcrumb{border-radius:18px;width:100%}}.battery-wifi-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:576px){.ant-card-body{padding:12px!important}.ant-table-cell{padding:6px 8px!important;font-size:12px!important}.ant-statistic-content-value{font-size:20px!important}.ant-modal{max-width:100vw!important;margin:0!important;padding-bottom:0!important;top:0!important}.ant-modal-content{min-height:100vh;border-radius:0!important}}@media (max-width:640px){.realtime-data-container{grid-template-columns:repeat(2,1fr)!important}.sensor-card__head{padding:10px 12px}.sensor-card__icon{border-radius:8px;width:28px;height:28px;font-size:13px}.sensor-card__body{gap:8px;padding:10px 12px 8px}.sensor-card__foot{padding:8px 12px 12px}.field-tile{padding:8px 6px}}.is-online{background:var(--state-online-bg);border-color:var(--state-online-border);color:var(--state-online-text)}.is-offline{background:var(--state-offline-bg);border-color:var(--state-offline-border);color:var(--state-offline-text)}.is-warning{background:var(--state-warning-bg);border-color:var(--state-warning-border);color:var(--state-warning-text)}.is-no-data{background:var(--state-nodata-bg);border-color:var(--state-nodata-border);color:var(--state-nodata-text)}.text-clamp-1{-webkit-line-clamp:1;overflow-wrap:anywhere;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text-clamp-2{-webkit-line-clamp:2;overflow-wrap:anywhere;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text-ellipsis{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.page-surface{border-radius:var(--ui-radius-lg);background:#fff6;border:1px solid #dbe4ee80}.card-normal{border-radius:var(--card-radius);box-shadow:var(--card-shadow);background:var(--ui-surface);border:1px solid var(--ui-border)}.card-hero{border-radius:var(--hero-radius);box-shadow:var(--ui-shadow-md);background:linear-gradient(160deg,#fffffff5,#f8fafceb);border:1px solid #dbe4eef2}.card-alert{border-radius:var(--card-radius);border-style:solid;border-width:1px}.value-fixed{font-variant-numeric:tabular-nums;text-align:right;min-width:4ch;display:inline-block}.delta-fixed{white-space:nowrap;align-items:center;gap:2px;min-width:5ch;font-size:10px;font-weight:700;display:inline-flex}.history-table-sticky .ant-table-cell-fix-left{z-index:2;background:var(--ui-surface-strong)!important}.main-shell .ant-card,.main-shell .ant-btn,.main-shell .ant-tag{transition:background-color .2s,border-color .2s,box-shadow .2s,opacity .2s!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.main-shell{--shell-sidebar-expanded: 200px;--shell-sidebar-collapsed: 80px;--shell-motion-duration: .24s;--shell-motion-easing: cubic-bezier(.22, 1, .36, 1);--shell-surface: rgba(255, 255, 255, .9);--shell-surface-strong: rgba(255, 255, 255, .96);--shell-border: rgba(219, 228, 238, .92);--shell-shadow: 18px 0 40px rgba(15, 23, 42, .06);min-height:100vh;background:radial-gradient(circle at top left,rgba(15,118,110,.08),transparent 32%),radial-gradient(circle at top right,rgba(37,99,235,.08),transparent 30%),linear-gradient(180deg,#f8fbff,#f4f8fb)}.main-shell__sider.ant-layout-sider{overflow:auto;height:100vh;position:fixed;left:0;top:0;bottom:0;z-index:1000;box-shadow:var(--shell-shadow);background:var(--shell-surface)!important;border-right:1px solid var(--shell-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:width var(--shell-motion-duration) var(--shell-motion-easing),box-shadow var(--shell-motion-duration) var(--shell-motion-easing)}.main-shell__logo-wrap{height:64px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--shell-border);background:linear-gradient(135deg,#0f766e14,#2563eb1a);position:relative;overflow:hidden}.main-shell__logo-wrap:after{content:"";position:absolute;top:-50%;right:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(37,99,235,.08) 0%,transparent 70%);transform:rotate(45deg);pointer-events:none}.shell-logo{width:calc(var(--shell-sidebar-expanded) - 28px);display:flex;align-items:center;justify-content:center;position:relative;z-index:1;transition:width var(--shell-motion-duration) var(--shell-motion-easing)}.shell-logo--collapsed{width:48px}.shell-logo__mark{position:relative;width:100%;height:42px;display:flex;align-items:center;justify-content:center}.shell-logo__img,.shell-logo__fallback{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;border-radius:12px;transition:opacity var(--shell-motion-duration) var(--shell-motion-easing),transform var(--shell-motion-duration) var(--shell-motion-easing),clip-path var(--shell-motion-duration) var(--shell-motion-easing)}.shell-logo__img--full,.shell-logo__fallback--full{opacity:1;transform:scale(1)}.shell-logo__img--mini,.shell-logo__fallback--mini{opacity:0;transform:scale(.88)}.shell-logo--collapsed .shell-logo__img--full,.shell-logo--collapsed .shell-logo__fallback--full{opacity:0;transform:scale(.92)}.shell-logo--collapsed .shell-logo__img--mini,.shell-logo--collapsed .shell-logo__fallback--mini{opacity:1;transform:scale(1)}.shell-logo__fallback{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f766e,#2563eb);color:#fff;font-weight:700;letter-spacing:.08em}.main-shell__menu,.main-shell__mobile-menu{border-right:0!important;background:transparent!important;padding:8px!important}.main-shell__inner{min-height:100vh;transition:margin-left var(--shell-motion-duration) var(--shell-motion-easing)}.main-shell__inner--expanded{margin-left:var(--shell-sidebar-expanded)}.main-shell__inner--collapsed{margin-left:var(--shell-sidebar-collapsed)}.main-shell__inner--mobile{margin-left:0}.main-shell__header{padding:0 24px!important;height:68px!important;line-height:68px!important;background:#ffffffd1!important;display:flex;align-items:center;justify-content:space-between;box-shadow:0 12px 28px #0f172a0f;border-bottom:1px solid var(--shell-border);position:sticky;top:0;z-index:20;overflow:hidden;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.main-shell__header:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(15,118,110,.06) 0%,transparent 70%);transform:rotate(-45deg);pointer-events:none}.main-shell__header-left,.main-shell__header-right{position:relative;z-index:1}.main-shell__title-wrap{display:flex;flex-direction:column;gap:2px}.main-shell__title.ant-typography{margin:0!important;color:#0f172a!important;font-weight:600!important}.main-shell__subtitle{color:#64748b;font-size:12px;line-height:1.2}.header-button{font-size:16px!important;width:40px!important;height:40px!important;border-radius:10px!important;color:#0f172a!important;background:#f8fafcf2!important;border:1px solid rgba(219,228,238,.95)!important;transition:transform var(--shell-motion-duration) var(--shell-motion-easing),box-shadow var(--shell-motion-duration) var(--shell-motion-easing),background-color var(--shell-motion-duration) var(--shell-motion-easing)!important}.header-button:hover{transform:translateY(-1px);box-shadow:0 8px 16px #0f172a1a}.main-shell__user-trigger{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;padding:0;cursor:pointer}.main-shell__avatar{background:linear-gradient(135deg,#0f766e,#2563eb)!important;border:2px solid rgba(255,255,255,.7);box-shadow:0 8px 18px #0f172a1f;transition:transform var(--shell-motion-duration) var(--shell-motion-easing),box-shadow var(--shell-motion-duration) var(--shell-motion-easing)!important}.main-shell__user-trigger:hover .main-shell__avatar{transform:scale(1.06);box-shadow:0 10px 22px #0f172a29}.main-content-area{margin:0;min-height:280px;background:transparent;overflow:initial;overflow-y:auto;overflow-x:hidden;position:relative}.main-content-area:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.018;background-image:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23000000' fill-opacity='0.1'%3E%3Ccircle cx='30' cy='30' r='2'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");pointer-events:none}.main-content-area__inner{position:relative;z-index:1}.main-content-area{padding:18px 20px 24px}@media (max-width: 768px){.main-content-area{padding:12px}.main-shell__header{padding:0 14px!important;height:56px!important;line-height:56px!important}.header-button{width:36px!important;height:36px!important;font-size:14px!important}.main-shell__title.ant-typography{font-size:14px!important}.main-shell__subtitle{font-size:11px}}@media (max-width: 576px){.main-content-area{padding:8px}.main-shell__header{padding:0 10px!important;height:50px!important;line-height:50px!important}.header-button{width:34px!important;height:34px!important;border-radius:8px!important}.main-shell__avatar{width:32px!important;height:32px!important;font-size:13px!important}}.ant-menu-item{border-radius:14px!important;margin:4px 0!important;min-height:42px;line-height:42px!important;color:#334155!important;font-weight:600}.ant-menu-item-group-title{font-size:11px!important;font-weight:700!important;text-transform:uppercase!important;letter-spacing:.05em!important;color:#94a3b8!important;padding:16px 16px 4px!important}.ant-menu-item:hover{background:#0f766e14!important;color:#0f766e!important;transform:none!important;box-shadow:none!important}.ant-menu-item-selected{background:linear-gradient(135deg,#0f766e29,#2563eb1f)!important;color:#0f766e!important;font-weight:600!important;box-shadow:inset 0 0 0 1px #0f766e1f!important}.ant-menu-item-selected:hover{background:linear-gradient(135deg,#0f766e33,#2563eb24)!important}.ant-menu-submenu-title{border-radius:14px!important;margin:4px 0!important}.ant-menu-submenu-title:hover{background:#0f766e14!important;color:#0f766e!important;transform:none!important}.ant-menu-submenu-open>.ant-menu-submenu-title{background:#0f766e1a!important;color:#0f766e!important}.ant-badge-count{background:linear-gradient(135deg,#dc2626,#ef4444)!important;box-shadow:0 6px 12px #dc262638!important;border:none!important}.ant-layout-sider::-webkit-scrollbar{width:6px}.ant-layout-sider::-webkit-scrollbar-track{background:transparent;border-radius:3px}.ant-layout-sider::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.ant-layout-sider::-webkit-scrollbar-thumb:hover{background:#94a3b8}.ant-drawer-body{padding:0!important}.ant-drawer-header{background:#fff!important;color:#0f172a!important;border-bottom:1px solid #e2e8f0!important}.ant-drawer-title{color:#0f172a!important;font-weight:600!important}.ant-drawer-close{color:#475569!important}.header-button{transition:none}.ant-dropdown{border-radius:18px!important;box-shadow:0 16px 32px #0f172a1f!important}.ant-dropdown-menu{border-radius:18px!important;padding:8px!important}.ant-dropdown-menu-item{border-radius:12px!important;margin-bottom:4px!important}.ant-dropdown-menu-item:hover{background:#0f766e14!important;color:#0f766e!important}@media (max-width: 991px){.main-shell__header{padding:0 16px!important}.main-shell__subtitle{display:none}}@media (max-width: 768px){.main-shell__header{height:60px!important;line-height:60px!important}}
