@import"https://fonts.googleapis.com/css2?family=Outfit:wght@200..900&display=swap";@media (max-width: 1024px){.demo-overlay-text{font-size:1rem;padding:.8rem 1.5rem}}.grecaptcha-badge{visibility:hidden}.hr-solid{border:0;border-top:1px solid #d0d0d5}body{background-color:var(--kendo-color-app-surface);color:#000;font-family:Roboto,sans-serif;margin:0;padding:0}.overlay-active{opacity:.2}.k-drawer{background:var(--kendo-color-surface-alt, #212121)}.k-drawer-item{white-space:nowrap}.positive{color:#86b079}.negative{color:#b05768}.k-grid td{border-color:#a2a2a2;padding:12px}.k-select-checkbox{border:none;background-color:#e0e0e0;opacity:.1}header .k-picker-solid{border-bottom-right-radius:6px!important;border-bottom-left-radius:6px!important}.separator{width:2px;height:50px;background-color:#a2a2a2;margin:0 15px}.stock-tabs{overflow:hidden}.k-expander-title{font-weight:700;text-transform:none;color:var(--kendo-color-primary)}@media (min-width: 1024px){.top-bar{align-items:center}}.k-table-row>.k-table-td:first-child{background-color:#e0e0e01a!important;padding:10px 22px!important}.k-table-row>th:first-child,.k-table-row>.k-table-td.k-selected:first-child{background-color:#e0e0e01a!important;padding-left:22px!important;padding-right:22px!important}.k-table-row>th:not(:first-child){border-right:1px solid #ffffff33!important}.k-table-row>.k-table-td input[type=checkbox],.k-table-row>th input[type=checkbox]{width:16px;height:16px;border-radius:2px;padding:2px;border-width:1px;background:var(--kendo-color-opacity-sorted, #e0e0e01a);border:1px solid #00000014}.k-chip-label{font-size:10px;font-weight:400}.k-table-th.k-header{justify-items:center}.k-table-row .k-table-td{text-align:center;padding-left:4px!important;padding-right:4px!important}.k-listview-content{display:grid;gap:16px!important}.k-listview{line-height:unset}.k-tabstrip-top>.k-tabstrip-items-wrapper{border-bottom-width:0px!important}.k-prompt-suggestion{background-color:var(--kendo-color-surface-alt)}.k-calendar{border-width:0px;border-style:none}.k-tabstrip-content>.k-animation-container{width:100%}.k-form-md .k-form-field{margin-top:0}.k-grid .k-chip{padding-inline:2px!important;min-width:80px}.k-drawer-content{min-height:92vh;margin-left:80px}.k-drawer-container.k-drawer-overlay.mobile.not-expanded .k-drawer{display:none!important}@media (max-width: 767px){.k-drawer{z-index:1000}.k-drawer-content{margin-left:0!important;min-height:calc(100vh - 56px)!important;margin-top:0!important}.mobile-menu-toggle{z-index:1001}header{padding-top:0!important;padding-bottom:8px!important}Footer{margin-left:0!important}.k-drawer.mini .k-drawer-item{display:none}}.home-container{padding:1rem;max-width:100vw;box-sizing:border-box}.home-container.mobile{padding:.5rem}.ai-analysis-container{min-height:150px}.analysis-summary{margin-bottom:1rem;padding:.5rem;background-color:#f5f5f5;border-radius:4px}.analysis-placeholder{padding:1rem;background-color:#f9f9f9;border:1px dashed #ccc;border-radius:4px;text-align:center}.map-placeholder{height:300px;background-color:#f9f9f9;border:1px dashed #ccc;border-radius:4px}.k-table .k-header th{font-size:.85rem}.k-table td{font-size:.8rem;padding:.5rem!important}.k-table-hover tbody tr:hover{background-color:#f0f8ff}@media (max-width: 767px){.ai-analysis-container{min-height:auto}.map-placeholder{height:200px}}.ai-iframe-container{position:relative;width:100%;overflow:hidden;border-radius:8px;box-shadow:0 2px 8px #0000001a}.ai-iframe-compact{min-height:300px}.ai-iframe{transition:all .3s ease}.ai-iframe-placeholder{display:flex;align-items:center;justify-content:center;height:300px;background-color:#f9f9f9;border:1px dashed #ccc;border-radius:4px;color:#666}@media (max-width: 767px){.ai-iframe-compact{min-height:250px}}:root{--dash-bg: #f5f7fa;--dash-card-bg: #ffffff;--dash-radius: 12px;--dash-shadow: 0 1px 3px rgba(15, 23, 42, .04), 0 1px 2px rgba(15, 23, 42, .06);--dash-shadow-hover: 0 12px 28px -10px rgba(15, 23, 42, .14), 0 4px 10px -4px rgba(15, 23, 42, .08);--dash-border: #eef1f5;--dash-text: #0f172a;--dash-muted: #64748b;--dash-primary: #2563eb;--dash-green: #22c55e;--dash-yellow: #f59e0b;--dash-red: #ef4444;--dash-grey: #94a3b8}.dash-page{background:var(--dash-bg);min-height:calc(100vh - 60px);padding:20px 24px 40px}@media (max-width: 1024px){.dash-page{padding:12px}}.dash-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:12px}.dash-title{margin:0;font-size:22px;font-weight:700;color:var(--dash-text);letter-spacing:-.01em}.dash-subtitle{margin:2px 0 0;font-size:13px;color:var(--dash-muted)}.dash-card{background:var(--dash-card-bg);border:1px solid var(--dash-border);border-radius:var(--dash-radius);box-shadow:var(--dash-shadow);transition:box-shadow .2s ease,transform .2s ease}.dash-card:hover{box-shadow:var(--dash-shadow-hover)}.dash-card .k-card-header{border-bottom:1px solid var(--dash-border);padding:14px 18px}.dash-card .k-card-body{padding:16px 18px}.dash-card-title{margin:0;font-size:15px;font-weight:600;color:var(--dash-text)}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}@media (max-width: 1024px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}.kpi-card{display:flex;align-items:center;gap:12px;padding:14px 16px}.kpi-icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;flex:0 0 42px}.kpi-label{margin:0;font-size:11px;font-weight:600;color:var(--dash-muted);text-transform:uppercase;letter-spacing:.05em}.kpi-value{margin:2px 0 0;font-size:22px;font-weight:700;color:var(--dash-text);line-height:1.1;font-variant-numeric:tabular-nums}.kpi-unit{font-size:12px;font-weight:500;color:var(--dash-muted);margin-left:4px}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;line-height:1.4}.status-pill .dot{width:7px;height:7px;border-radius:50%;flex:0 0 7px}.status-pill--green{background:#22c55e1f;color:#15803d}.status-pill--green .dot{background:var(--dash-green)}.status-pill--yellow{background:#f59e0b24;color:#b45309}.status-pill--yellow .dot{background:var(--dash-yellow)}.status-pill--red{background:#ef44441f;color:#b91c1c}.status-pill--red .dot{background:var(--dash-red)}.status-pill--grey{background:#94a3b829;color:#475569}.status-pill--grey .dot{background:var(--dash-grey)}.wx-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.wx-temp--hot{background:#ef44441f;color:#b91c1c}.wx-temp--warm{background:#f59e0b24;color:#b45309}.wx-temp--cool{background:#3b82f61f;color:#1d4ed8}.wx-temp--ok{background:#22c55e1f;color:#15803d}.wx-temp--na{background:#f1f5f9;color:#64748b}.wx-humid--high{background:#3b82f61f;color:#1d4ed8}.wx-humid--low{background:#f59e0b24;color:#b45309}.wx-humid--ok{background:#22c55e1f;color:#15803d}.wx-humid--na{background:#f1f5f9;color:#64748b}.tag-pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:500;background:#f1f5f9;color:#475569;margin-right:4px;margin-bottom:4px}.dash-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;color:var(--dash-text)}.dash-table thead th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--dash-muted);padding:10px 12px;background:#fafbfc;border-bottom:1px solid var(--dash-border);white-space:nowrap}.dash-table tbody td{padding:12px;border-bottom:1px solid #f4f6f9;vertical-align:middle}.dash-table tbody tr:last-child td{border-bottom:none}.dash-table tbody tr:hover{background:#f8fafc}.dash-table tbody tr.clickable{cursor:pointer}.map-wrap{height:420px;border-radius:10px;overflow:hidden;background:#eef3f8}.mobile-location-card{border-radius:var(--dash-radius)!important;box-shadow:var(--dash-shadow)!important;border:1px solid var(--dash-border)!important}.mobile-meta-row{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:10px}.mobile-status-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.ai-hero{background:linear-gradient(135deg,#eff6ff,#faf5ff 55%,#fdf2f8);border-radius:10px;padding:18px 20px;position:relative;overflow:hidden}.ai-hero:before{content:"";position:absolute;top:-40px;right:-40px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(139,92,246,.18),transparent 70%);pointer-events:none}.ai-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;background:#8b5cf624;color:#6d28d9;margin-bottom:10px}.ai-summary{margin:0 0 12px;color:#1e293b;line-height:1.6;font-size:14px}.ai-rec-title{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--dash-text)}.ai-rec-list{margin:0;padding:0;list-style:none}.ai-rec-list li{position:relative;padding-left:20px;margin-bottom:6px;font-size:13px;color:#334155;line-height:1.5}.ai-rec-list li:before{content:"";position:absolute;left:4px;top:8px;width:6px;height:6px;border-radius:50%;background:#8b5cf6}.devices-container{max-width:100vw}@media (max-width: 1024px){.k-grid-header .k-header{padding:8px 6px!important;white-space:nowrap}.k-grid-content .k-grid tr td{padding:8px 6px!important}.k-pager-wrap{padding:8px!important}.k-pager-numbers .k-button{min-width:30px!important;height:30px!important;line-height:30px!important;font-size:12px!important}}.location-detail-containerr{max-width:100vw}@media (max-width: 639px){.location-detail-container.mobile{padding:.8rem .5rem}.k-grid-cols-1{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.5rem}.page-title.mobile-title{font-size:1.2rem;margin:0 0 .5rem}.action-buttons.mobile-buttons{width:100%;justify-content:flex-end;gap:.25rem}.mobile-card-header{padding:.8rem 1rem}.mobile-card-title{font-size:1.1rem;margin:0}.mobile-card-body{padding:.8rem}.mobile-card-footer{padding:.8rem;gap:.5rem}.device-table{width:100%;border-collapse:collapse}.device-table tr{border-bottom:1px solid #f0f0f0}.device-table td{padding:.5rem!important;font-size:.9rem}.tag-container span{font-size:11px;padding:1px 6px;margin-right:2px;margin-bottom:4px}.k-btn-sm{padding:.25rem .5rem!important}}.desktop-filter{flex-wrap:wrap}.mobile-filter{width:100%}.mobile-parameter-selector{width:100%;text-align:left}.desktop-parameter-buttons{flex-wrap:wrap;gap:.5rem}.chart-container{width:100%;margin-top:1rem}@media (max-width: 375px){.mobile-filter .k-datepicker,.mobile-filter .k-button-group{width:100%}}.device-detail-container{max-width:100vw}@media (max-width: 639px){.device-detail-container.mobile{padding:.8rem .5rem}.k-grid-cols-1{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.5rem}.page-title.mobile-title{font-size:1.2rem;margin:0 0 .5rem}.action-buttons.mobile-buttons{width:100%;justify-content:flex-end;gap:.25rem}.mobile-card-header{padding:.8rem 1rem}.mobile-card-title{font-size:1.1rem;margin:0}.mobile-card-body{padding:.8rem}.mobile-card-footer{padding:.8rem;gap:.5rem}.device-table{width:100%;border-collapse:collapse}.device-table tr{border-bottom:1px solid #f0f0f0}.device-table td{padding:.5rem!important;font-size:.9rem}.tag-container span{font-size:11px;padding:1px 6px;margin-right:2px;margin-bottom:4px}.k-btn-sm{padding:.25rem .5rem!important}}@media (min-width: 640px) and (max-width: 1023px){.k-grid-cols-1.sm\:k-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sensor-grid{gap:1rem}}@media (min-width: 1024px){.k-grid-cols-1.lg\:k-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sensor-grid{gap:1.5rem}}*{margin:0;padding:0;box-sizing:border-box;font-family:思源黑体,微软雅黑,sans-serif}a{text-decoration:none;color:#ccc}a:hover{color:#fff}.gwin-portal-wrapper{min-height:100vh;display:flex;flex-direction:column}.portal-header{position:fixed;top:0;left:0;right:0;background-color:#fff;box-shadow:0 2px 8px #0000001a;z-index:1000;padding:12px 0}.header-container{max-width:1200px;margin:0 auto;padding:0 20px;display:flex;justify-content:space-between;align-items:center}.header-left{display:flex;align-items:end}.header-logo{margin-right:6px}.header-brand{margin-bottom:3px}.header-right,.pc-nav{display:flex;align-items:center}.nav-list{display:flex;list-style:none;margin-right:24px}.nav-item{margin-right:24px;color:#333;font-weight:400;display:flex;align-items:center;cursor:pointer}.nav-item:hover{color:#1e88e5}.nav-icon{margin-right:6px;display:flex;align-items:center}.mobile-menu-btn{background:transparent;border:none;color:#333;cursor:pointer;display:none}.mobile-nav{background-color:#fff;border-top:1px solid #e4e7ed;padding:12px 20px;display:none}.mobile-nav-list{list-style:none}.mobile-nav-item{padding:12px 0;color:#333;display:flex;align-items:center;cursor:pointer;border-bottom:1px solid #f5f7fa}.mobile-nav-divider{height:1px;background-color:#e4e7ed;margin:8px 0}.portal-main{margin-top:72px;flex:1}@media (max-width: 768px){.portal-main{margin-top:56px}}.hero-section{background:linear-gradient(135deg,#1e88e5,#4caf50);color:#fff;padding:60px 20px;display:flex;justify-content:center;align-items:center;min-height:80vh}.hero-container{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center}.hero-content{margin-bottom:40px}.hero-title{font-size:clamp(32px,5vw,56px);font-weight:700;margin-bottom:16px}.hero-subtitle{font-size:clamp(18px,3vw,28px);font-weight:400;opacity:.9;margin-bottom:32px;max-width:800px}.hero-image{max-width:1200px;border-radius:8px;box-shadow:0 4px 16px #0003}.about-section,.product-section,.scenario-section,.case-section,.contact-section{padding:80px 20px}.about-container,.product-container,.scenario-container,.case-container,.contact-container{max-width:1200px;margin:0 auto}.section-header{text-align:center;margin-bottom:48px}.section-title{font-size:32px;font-weight:600;color:#333;margin-bottom:16px}.section-desc{font-size:16px;color:#666;max-width:800px;margin:0 auto}.about-container{display:flex;flex-direction:column;gap:40px;align-items:center}@media (min-width: 1024px){.about-container{flex-direction:row;gap:60px}}.about-content{flex:1}.about-text{font-size:16px;color:#666;line-height:1.8;margin-bottom:24px}.about-image{flex:1;width:100%;max-width:500px}.about-img{width:100%;border-radius:8px;box-shadow:0 2px 8px #0000001a}.product-cards-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:24px}@media (min-width: 576px){.product-cards-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.product-cards-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1200px){.product-cards-grid{grid-template-columns:repeat(4,1fr)}}.product-card{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000000d;padding:24px;display:flex;flex-direction:column;align-items:center;text-align:center;transition:box-shadow .3s ease;height:100%}.product-card:hover{box-shadow:0 4px 12px #0000001a}.product-card-icon{margin-bottom:16px;font-size:32px}.product-card-title{font-size:18px;font-weight:600;color:#333;margin-bottom:16px}.product-card-desc{font-size:14px;color:#666;line-height:1.6;margin-bottom:24px;flex:1}.carousel-wrapper{position:relative;overflow:hidden;border-radius:8px;box-shadow:0 2px 8px #0000001a;max-width:1200px;margin:0 auto}.carousel-content{display:flex;transition:transform .5s ease;height:450px}.carousel-item{flex:0 0 100%;width:100%}.scenario-item{display:flex;flex-direction:column;height:100%;padding:20px;align-items:center;justify-content:center}@media (min-width: 1024px){.scenario-item{flex-direction:row;gap:40px}}.scenario-item-image{width:100%;max-width:500px;margin-bottom:24px}@media (min-width: 1024px){.scenario-item-image{width:50%;margin-bottom:0}}.scenario-item-content{width:100%;max-width:500px;text-align:center}@media (min-width: 1024px){.scenario-item-content{width:50%;text-align:left}}.scenario-item-title{font-size:24px;font-weight:600;color:#333;margin-bottom:16px}.scenario-item-desc{font-size:16px;color:#666;line-height:1.8}.carousel-indicators{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:8px}.indicator-btn{width:12px;height:12px;border-radius:50%;background-color:#ffffff80;border:none;cursor:pointer}.indicator-btn.active{background-color:#fff}.case-cards-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:24px;max-width:1000px;margin:0 auto}@media (min-width: 1024px){.case-cards-grid{grid-template-columns:repeat(2,1fr)}}.case-card{background-color:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;height:100%}.case-img{width:100%;border-top-left-radius:8px;border-top-right-radius:8px}.case-card-body{padding:24px;flex:1}.case-card-title{font-size:18px;font-weight:600;color:#333;margin-bottom:8px}.case-card-partner{font-size:14px;color:#999;margin-bottom:16px}.case-card-achievement{font-size:14px;color:#666;line-height:1.6}.case-card-footer{padding:0 24px 24px}.contact-content{display:flex;flex-direction:column;gap:24px;max-width:1000px;margin:0 auto}@media (min-width: 1024px){.contact-content{flex-direction:row;gap:40px}}.contact-form-wrapper,.contact-info-wrapper{flex:1;width:100%}.contact-card{background-color:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:24px;height:100%}.contact-form{display:flex;flex-direction:column}.form-row{display:flex;flex-direction:column;gap:24px}@media (min-width: 576px){.form-row{flex-direction:row}}.form-group{margin-bottom:24px;width:100%}.form-label{display:block;margin-bottom:8px;font-size:14px;color:#333;font-weight:500}.form-input,.form-select,.form-textarea{width:100%;padding:12px 16px;border:1px solid #e4e7ed;border-radius:4px;font-size:14px;color:#333;outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:#1e88e5}.form-textarea{resize:none}.contact-info-title{font-size:20px;font-weight:600;color:#333;margin-bottom:24px}.contact-info-item{display:flex;align-items:center;margin-bottom:16px;font-size:14px;color:#666}.contact-map-title{font-size:16px;font-weight:500;color:#333;margin:24px 0 16px}.contact-map{width:100%;border-radius:8px}.contact-social{display:flex;gap:16px;margin-top:24px}.portal-footer{background-color:#1f1f1f;color:#ccc;padding:60px 20px 24px}.footer-container{max-width:1200px;margin:0 auto}.footer-top{display:grid;grid-template-columns:repeat(1,1fr);gap:40px;margin-bottom:40px;border-bottom:1px solid #333;padding-bottom:40px}@media (min-width: 1024px){.footer-top{grid-template-columns:repeat(4,1fr)}}.footer-brand{display:flex;align-items:center;margin-bottom:16px}.footer-logo{margin-right:12px}.footer-brand-name{font-size:18px;color:#fff;font-weight:600}.footer-slogan{font-size:14px;margin-bottom:16px;opacity:.8}.footer-column-title{font-size:16px;color:#fff;font-weight:500;margin-bottom:16px}.footer-link-list{list-style:none}.footer-link-item{margin-bottom:12px;font-size:14px}.footer-subscribe{display:flex;gap:0}.subscribe-input{flex:1;padding:12px 16px;border:none;border-top-left-radius:4px;border-bottom-left-radius:4px;outline:none;font-size:14px}.footer-bottom{text-align:center;font-size:12px;opacity:.7}@media (max-width: 1122px){.pc-nav{display:none}.mobile-menu-btn,.mobile-nav{display:block}.section-title{font-size:24px}.hero-title{font-size:28px}.hero-title2{font-size:24px;stroke-width:5}.hero-subtitle{font-size:22px}}.carousel-wrapper{max-width:100%;margin:0 auto}.carousel-nav-btn:hover{background-color:#1e88e5cc;color:#fff}.indicator-btn.active{background-color:#1e88e5}.indicator-btn:hover{background-color:#90caf9}.reveal{opacity:0;transform:translateY(16px);transition:opacity .55s cubic-bezier(.22,.61,.36,1) var(--reveal-delay, 0ms),transform .55s cubic-bezier(.22,.61,.36,1) var(--reveal-delay, 0ms);will-change:opacity,transform}.reveal.is-revealed{opacity:1;transform:translateY(0);will-change:auto}.login-page{min-height:100vh;position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:var(--kendo-font-family, Roboto, sans-serif)}.login-background{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(/images/auth-img-default.png);background-size:cover;background-position:center;z-index:-1;filter:brightness(.9)}.login-container{width:100%;max-width:400px;padding:2rem;background-color:#fffffff2;border-radius:8px;box-shadow:0 4px 20px #0000001a;margin:2rem 1rem}@media (prefers-color-scheme: dark){.login-container{background-color:#242424f2}}.login-logo{display:flex;justify-content:center;margin-bottom:2rem}.login-logo img{height:60px;object-fit:contain}.login-tabs .k-tabstrip-items{justify-content:center;margin-bottom:1.5rem}.login-tabs .k-tabstrip-item{padding:.5rem 1.5rem}.login-form{display:flex;flex-direction:column;gap:1rem}.form-group{margin-bottom:.5rem}.k-label{display:block;margin-bottom:.5rem;font-weight:500}.k-input-lg{padding:.75rem 1rem;font-size:1rem}.login-button{width:100%;padding:.75rem;font-size:1rem;margin-top:1rem}.login-links{display:flex;justify-content:space-between;margin-top:1rem}.login-links a{color:var(--kendo-color-primary);text-decoration:none;font-size:.9rem}.login-links a:hover{text-decoration:underline}.login-footer{position:absolute;bottom:1rem;color:var(--kendo-color-on-app-surface);opacity:.8;font-size:.9rem}.notification-container{position:fixed;top:20px;right:20px;z-index:1000}@media (max-width: 767px){.login-container{padding:1.5rem;margin-top:4rem;box-shadow:0 6px 18px #0000001f;border-radius:0 0 8px 8px}.login-tabs .k-tabstrip-items{flex-wrap:wrap}.login-tabs .k-tabstrip-item{padding:.5rem 1rem}}@font-face{font-family:DejaVu Sans;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans.ttf) format("truetype")}@font-face{font-family:DejaVu Sans;font-weight:700;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Bold.ttf) format("truetype")}@font-face{font-family:DejaVu Sans;font-style:italic;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf) format("truetype")}@font-face{font-family:DejaVu Sans;font-weight:700;font-style:italic;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf) format("truetype")}.ils-filter-toolbar{margin-bottom:16px;padding:12px 16px;background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;display:flex;flex-direction:column;gap:8px}.ils-filter-toolbar__row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:32px}.ils-filter-toolbar__label{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#555;white-space:nowrap}.ils-filter-toolbar__count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:9px;background:#1e78dc;color:#fff;font-size:11px;font-weight:600;line-height:1}.ils-filter-toolbar__badges{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:1 1 auto;min-width:0}.ils-filter-toolbar__badges--stacked{padding-left:4px}.ils-filter-toolbar__divider{height:1px;background:#e8e8e8;margin:0 -16px}.ils-filter-toolbar__clear{margin-left:auto}.ils-filter-toolbar__dropdown{min-width:180px;max-width:220px}.ils-filter-toolbar__dir{min-width:32px;padding-left:0;padding-right:0}@media (max-width: 640px){.ils-filter-toolbar{padding:10px 12px}.ils-filter-toolbar__divider{margin:0 -12px}.ils-filter-toolbar__dropdown{flex:1 1 auto;min-width:140px;max-width:none}}.ilsmap-region{margin-bottom:16px}.ilsmap-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}.ilsmap-toolbar .ilsmap-title{font-weight:600;margin-right:auto}.ilsmap-canvas-wrap{position:relative;width:100%;aspect-ratio:16 / 9;border:1px solid #d8d8d8;border-radius:6px;overflow:hidden;background-color:#fafafa}.ilsmap-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.ilsmap-canvas--editable{cursor:default}.ilsmap-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(to right,rgba(0,0,0,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.06) 1px,transparent 1px);background-size:5% 5%;pointer-events:none}.ilsmap-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.ilsmap-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.ilsmap-icon{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:999px;background:#fff;border:1px solid #c8c8c8;font-size:11px;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:opacity .12s ease,box-shadow .12s ease}.ilsmap-icon--host{border-radius:4px;font-weight:600}.ilsmap-icon--dimmed{opacity:.4}.ilsmap-icon--highlighted{box-shadow:0 0 0 3px #1e78dc99;opacity:1}.ilsmap-icon--draggable{cursor:grab}.ilsmap-dots{display:inline-flex;align-items:center;gap:2px;flex:0 0 auto}.ilsmap-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}.ilsmap-dot--good{background:#2e9e4f}.ilsmap-dot--warning{background:#e0a800}.ilsmap-dot--critical{background:#d93025}.ilsmap-dot--offline{background:#6b6b6b}.ilsmap-count{font-variant-numeric:tabular-nums}.ilsmap-sn{margin-left:2px;color:#555;font-size:10px;max-width:160px;overflow:hidden;text-overflow:ellipsis}.ilsmap-main-badge{background:#1e78dc;color:#fff;font-size:9px;line-height:1;padding:2px 4px;border-radius:3px;margin-right:4px;text-transform:lowercase}.ilsmap-unplace{border:none;background:transparent;color:#d93025;cursor:pointer;font-size:12px;padding:0 2px;line-height:1}.ilsmap-popover{position:absolute;z-index:10000;transform:translate(-50%,calc(-100% - 12px));min-width:180px;max-width:260px;background:#fff;border:1px solid #d8d8d8;border-radius:6px;box-shadow:0 6px 18px #00000029;padding:8px 10px;font-size:12px}.ilsmap-popover-sn{font-weight:600;margin-bottom:6px;word-break:break-all}.ilsmap-popover-row{display:flex;justify-content:space-between;gap:12px;padding:2px 0}.ilsmap-popover-ts{margin-top:6px;color:#6b6b6b;font-size:11px}.ilsmap-popover-alerts{margin-top:8px;padding-top:6px;border-top:1px dashed #e0e0e0}.ilsmap-popover-alerts-title{font-weight:600;color:#d93025;margin-bottom:4px;font-size:11px}.ilsmap-popover-alert{display:flex;flex-direction:column;gap:1px;padding:3px 0;font-size:11px;border-top:1px solid #f1f1f1}.ilsmap-popover-alert:first-of-type{border-top:none}.ilsmap-popover-alert-type{font-weight:600;color:#b3261e;text-transform:lowercase}.ilsmap-popover-alert-details{color:#555;word-break:break-word;overflow-wrap:anywhere}.ilsmap-tray{margin-top:8px;border:1px dashed #c8c8c8;border-radius:6px;padding:8px;min-height:48px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#fcfcfc}.ilsmap-tray-label{font-size:11px;color:#6b6b6b;margin-right:4px}.ilsmap-tray-item{display:flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid #c8c8c8;border-radius:999px;background:#fff;font-size:11px;cursor:grab;-webkit-user-select:none;user-select:none}.ilsmap-tray-empty{font-size:11px;color:#9aa0a6}.ilsmap-grid-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 24px;color:#9aa0a6;font-size:13px;line-height:1.5;pointer-events:none;-webkit-user-select:none;user-select:none}.ilsmap-summary{margin-top:12px;border:1px solid #e0e0e0;border-radius:6px;background:#fafafa;overflow:hidden}.ilsmap-summary-title{padding:6px 10px;font-size:11px;font-weight:600;color:#555;background:#f0f0f0;border-bottom:1px solid #e0e0e0;text-transform:uppercase;letter-spacing:.5px}.ilsmap-summary-body{max-height:280px;overflow-y:auto;padding:4px 0}.ilsmap-summary-group{padding:2px 10px;border-left:2px solid transparent}.ilsmap-summary-group--active{border-left-color:#1e78dc;background:#1e78dc0a}.ilsmap-summary-host{display:flex;align-items:center;gap:6px;padding:4px 0 2px;font-size:11px;font-weight:600;color:#444}.ilsmap-source-badge{background:#6b6b6b;color:#fff;font-size:9px;line-height:1;padding:2px 4px;border-radius:3px;text-transform:uppercase}.ilsmap-summary-row{display:flex;align-items:flex-start;gap:8px;padding:3px 0;font-size:11px;line-height:1.45;border-top:1px dashed #eee}.ilsmap-summary-row:first-of-type{border-top:none}.ilsmap-summary-sn{flex:0 0 auto;font-family:monospace;color:#333}.ilsmap-summary-readings{flex:1 1 auto;color:#555;overflow-wrap:anywhere;min-width:0}.ilsmap-summary-reading-label{color:#888}.ilsmap-summary-reading-value{color:#222;font-weight:500}.ilsmap-summary-nodata{color:#aaa;font-style:italic}.ilsmap-summary-ts{flex:0 0 auto;color:#888;font-size:10px;white-space:nowrap}.ilsmap-summary-empty{padding:4px 0;font-size:11px;color:#aaa;font-style:italic}@media (max-width: 640px){.ilsmap-summary-row{flex-wrap:wrap}.ilsmap-summary-ts{flex-basis:100%;text-align:right;margin-top:2px;padding-left:16px}}.ils-host-title{display:flex;align-items:center;gap:8px;width:100%;padding-left:8px;border-left:3px solid transparent;transition:border-color .12s ease,color .12s ease}.ils-host-title--selected{border-left-color:#1e78dc;color:#1e78dc}.ils-host-stats{margin-left:auto;display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:10px;background:#f0f0f0;color:#666;font-size:11px;font-weight:500;line-height:1.4;white-space:nowrap;transition:background .12s ease,color .12s ease}.ils-host-stats--selected{background:#1e78dc;color:#fff}.ils-host-stats-alert{color:#d93025;font-weight:600}.ils-host-stats--selected .ils-host-stats-alert{color:#fff;background:#ffffff40;padding:0 4px;border-radius:6px;margin-left:2px}.ilsmap-summary-group--pulse{animation:ilsmap-summary-pulse 1.2s ease-out}@keyframes ilsmap-summary-pulse{0%{background:#1e78dc33}to{background:transparent}}.ils-host-stats--selected .ils-host-stats-alert{color:#fff;background:#ffffff40;padding:0 4px;border-radius:6px}.ilsmap-summary-row--host{background:#1e78dc08;font-weight:500}.ils-io-title{display:inline-flex;align-items:center;gap:6px}.ils-io-group{display:flex;flex-direction:column;gap:4px}.ils-io-row{display:flex;align-items:flex-start;gap:8px;padding:4px 0;font-size:12px;line-height:1.45;border-top:1px dashed #eee}.ils-io-row:first-child{border-top:none}.ils-io-sn{flex:0 0 auto;font-family:monospace;color:#333}.ils-io-readings{flex:1 1 auto;min-width:0;color:#555;overflow-wrap:anywhere}.ils-io-label{color:#888}.ils-io-value{color:#222;font-weight:500}.ils-io-nodata{color:#aaa;font-style:italic}.ils-io-ts{flex:0 0 auto;color:#888;font-size:11px;white-space:nowrap}@media (max-width: 640px){.ils-io-row{flex-wrap:wrap}.ils-io-ts{flex-basis:100%;text-align:right;padding-left:16px}}.ilsmap-valve-section{margin-top:12px;border:1px solid #e0e0e0;border-radius:6px;background:#fafafa;overflow:hidden}.ilsmap-valve-section-title{padding:6px 10px;font-size:11px;font-weight:600;color:#555;background:#f0f0f0;border-bottom:1px solid #e0e0e0;text-transform:uppercase;letter-spacing:.5px}.ils-valve-card{padding:16px 18px;border-top:1px solid #e8e8e8;display:flex;flex-direction:column;gap:16px}.ils-valve-card:first-of-type{border-top:none}.ils-valve-card__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.ils-valve-card__title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:#333}.ils-valve-card__section{display:flex;flex-direction:column;gap:10px}.ils-valve-card__section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.ils-valve-card__section-actions{display:flex;gap:8px;flex-wrap:wrap}.ils-valve-label{font-size:12px;color:#666;font-weight:500;white-space:nowrap}.ils-valve-slot-count{color:#999;font-weight:400}.ils-valve-rows{display:flex;flex-direction:column;gap:10px}.ils-valve-row{border:1px solid #e8e8e8;border-radius:6px;padding:10px 12px;background:#fff;display:flex;flex-direction:column;gap:10px}.ils-valve-row__head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.ils-valve-row__target{min-width:160px;max-width:220px;flex:0 0 auto}.ils-valve-row__actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.ils-valve-row__remove{color:#d93025!important;min-width:32px}.ils-valve-row__feedback{font-size:11px;font-weight:500;padding:3px 8px;border-radius:4px;align-self:flex-start}.ils-valve-row__feedback--ok{color:#2e7d32;background:#e6f4ea}.ils-valve-row__feedback--err{color:#c62828;background:#fce8e6}.ils-valve-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}.ils-valve-slot{display:flex;align-items:center;gap:6px;padding:6px 8px;background:#fafafa;border:1px solid #e0e0e0;border-radius:6px;transition:border-color .12s ease}.ils-valve-slot:hover{border-color:silver}.ils-valve-slot-hour{width:120px;min-width:120px;flex:0 0 auto}.ils-valve-slot-seconds{width:80px;flex:0 0 auto}.ils-valve-unit{font-size:12px;color:#888}.ils-valve-remove{flex:0 0 auto;min-width:24px;color:#d93025!important;margin-left:auto}.ils-valve-empty{font-size:12px;color:#aaa;font-style:italic;padding:4px 0}.ils-valve-card__manual{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:12px;border-top:1px dashed #e8e8e8}.ils-valve-manual-target{min-width:140px;max-width:200px;flex:0 0 auto}.ils-valve-manual-input{width:80px;flex:0 0 auto}.ils-valve-manual-feedback{font-size:11px;font-weight:500;padding:3px 8px;border-radius:4px}.ils-valve-manual-feedback--ok{color:#2e7d32;background:#e6f4ea}.ils-valve-manual-feedback--err{color:#c62828;background:#fce8e6}@media (max-width: 640px){.ils-valve-card{padding:12px;gap:14px}.ils-valve-row__head{flex-direction:column;align-items:stretch}.ils-valve-row__target{min-width:0;max-width:none}.ils-valve-row__actions{justify-content:flex-start}.ils-valve-slots{grid-template-columns:1fr}.ils-valve-slot-hour{flex:0 0 120px}.ils-valve-slot-seconds{flex:1 1 auto;width:auto}.ils-valve-card__manual{flex-direction:column;align-items:stretch;gap:10px}.ils-valve-manual-target{min-width:0;max-width:none}.ils-valve-card__manual .k-button{width:100%}}.ils-io-panel-title{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:4px}.ils-io-panel-title__serial{font-weight:600}.ils-io-panel-title__sep{color:#999}.ils-io-panel-title__loc{color:#444}.ils-io-panel-title__count,.ils-io-panel-title__time{color:#888;font-size:.9em}.ils-io-panel-title .ilsmap-source-badge{margin-left:4px}.ils-valve-row__actions .k-button[disabled]{opacity:.5}.ils-valve-queue-badge{margin-left:8px;padding:2px 8px;background:#fff3cd;color:#856404;border-radius:10px;font-size:11px;font-weight:500;vertical-align:baseline}.location-detail-container{max-width:100vw}.indicator-list{width:100%}.indicator-item:hover{background-color:#f5f5f5;transition:background-color .2s ease}.mobile-card-body .indicator-item{font-size:.9em;padding:8px!important}.k-mb-4{margin-bottom:1rem!important}.k-mb-3{margin-bottom:.75rem!important}.k-mb-2{margin-bottom:.5rem!important}.k-mb-1{margin-bottom:.25rem!important}.k-grid .k-header{font-size:.85rem}.k-grid td{font-size:.8rem;padding:.5rem!important}@media (max-width: 639px){.location-detail-container.mobile{padding:.8rem .5rem}.k-grid-cols-1{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:.5rem}.page-title.mobile-title{font-size:1.2rem;margin:0 0 .5rem}.action-buttons.mobile-buttons{width:100%;justify-content:flex-end;gap:.25rem}.mobile-card-header{padding:.8rem 1rem}.mobile-card-title{font-size:1.1rem;margin:0}.mobile-card-body{padding:.8rem}.mobile-card-footer{padding:.8rem;gap:.5rem}.location-table{width:100%;border-collapse:collapse}.location-table tr{border-bottom:1px solid #f0f0f0}.location-table td{padding:.5rem!important;font-size:.9rem}.tag-container span{font-size:11px;padding:1px 6px;margin-right:2px;margin-bottom:4px}.k-btn-sm{padding:.25rem .5rem!important}}@media (min-width: 640px) and (max-width: 1023px){.k-grid-cols-1.sm\:k-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sensor-grid{gap:0}}@media (min-width: 1024px){.k-grid-cols-1.lg\:k-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sensor-grid{gap:0}}.k-cursor-pointer{cursor:pointer}.show{display:block}.hidden{display:none}@media (max-width: 375px){.page-header{flex-direction:column!important;align-items:flex-start!important}.action-buttons{width:100%;justify-content:flex-end;margin-top:.5rem}}div{font-family:DejaVu Sans,Arial,sans-serif;font-size:12px}.k-textbox{touch-action:manipulation}.k-textbox>input{-webkit-user-select:text!important;user-select:text!important}@font-face{font-family:DejaVu Sans;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans.ttf) format("truetype")}@font-face{font-family:DejaVu Sans;font-weight:700;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Bold.ttf) format("truetype")}@font-face{font-family:DejaVu Sans;font-style:italic;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf) format("truetype")}@font-face{font-family:DejaVu Sans;font-weight:700;font-style:italic;src:url(https://kendo.cdn.telerik.com/2017.2.621/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf) format("truetype")}.no-border-sparkline svg>g>path:first-child{fill:none!important}.no-border-sparkline{width:100%}.no-border-sparkline .k-sparkline{width:100%!important}.k-badge-container{margin-left:30px;margin-bottom:5px}.ef-ro__value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:600;color:#0f172a;white-space:normal;word-break:break-word;overflow-wrap:anywhere;line-height:1.4}
