.login-page{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;min-height:100dvh;padding:24px;overflow:auto;background-position:center;background-repeat:no-repeat;background-size:cover}.login-page__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 42%,#07101a66,#07101adb 72%),#07101a33}.login-card{position:relative;z-index:1;display:flex;width:min(100%,390px);flex-direction:column;align-items:center;padding:36px 32px 30px;border:1px solid rgba(0,163,224,.3);border-radius:14px;background:#0d1b2ae6;box-shadow:0 12px 44px #0000009e;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);text-align:center}.login-brand{display:flex;min-height:110px;flex-direction:column;align-items:center;justify-content:center;gap:14px;margin-bottom:24px}.login-brand__meta{display:block;height:70px;width:auto}.login-brand__keybiz{display:block;height:24px;width:auto;opacity:.88}.login-card__title{margin:0;color:var(--text-primary);font-size:18px;font-weight:650}.login-card__subtitle{margin:7px 0 26px;color:var(--text-muted);font-size:12px;line-height:1.45}.login-form{display:flex;width:100%;flex-direction:column;align-items:stretch;gap:16px}.login-form .form-group{align-items:center;text-align:center}.login-form .form-label{width:100%;text-align:center}.login-form .gam-input{width:100%;min-height:42px;box-sizing:border-box;text-align:center}.login-form__error{display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid rgba(231,76,60,.45);border-radius:7px;padding:9px 12px;background:#e74c3c24;color:var(--accent-red);font-size:13px;text-align:center}.login-form__submit{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:4px}.login-form__spinner{width:16px;height:16px}@media(max-width:480px){.login-page{padding:18px}.login-card{padding:30px 24px 26px}.login-brand{gap:12px}.login-brand__meta{height:62px}}.application-chooser{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;min-height:100dvh;flex-direction:column;align-items:center;justify-content:center;overflow:auto;padding:36px 32px 70px;background-position:center;background-repeat:no-repeat;background-size:cover}.application-chooser__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 45%,#07101a7a,#07101ae6 76%),#07101a40}.application-chooser__content{position:relative;z-index:1;display:flex;width:min(100%,1100px);flex-direction:column;align-items:center}.application-chooser__meta-logo{display:block;width:auto;height:140px;margin-bottom:18px;filter:drop-shadow(0 8px 18px rgba(0,0,0,.42))}.application-chooser__intro{margin:0 0 38px;color:var(--text-secondary);font-size:15px;text-align:center}.application-chooser__modules{display:grid;width:100%;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.application-module-card{--module-color: var(--accent);--module-background: rgba(0, 163, 224, .1);--module-border: rgba(0, 163, 224, .32);display:flex;min-height:282px;flex-direction:column;border:1px solid var(--module-border);border-radius:14px;padding:28px 24px;background:var(--module-background);box-shadow:0 8px 26px #0000002e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:inherit;text-decoration:none;transition:transform .16s var(--ease-out, ease-out),box-shadow .16s var(--ease-out, ease-out),border-color .16s var(--ease-out, ease-out)}.application-module-card:hover,.application-module-card:focus-visible{border-color:var(--module-color);box-shadow:0 16px 38px color-mix(in srgb,var(--module-color) 26%,transparent);outline:none;transform:translateY(-5px)}.application-module-card:active{transform:translateY(-2px) scale(.985)}.application-module-card--efficiency{--module-color: var(--accent-orange);--module-background: rgba(243, 156, 18, .1);--module-border: rgba(243, 156, 18, .32)}.application-module-card--bems{--module-color: var(--accent-green);--module-background: rgba(39, 174, 96, .1);--module-border: rgba(39, 174, 96, .32)}.application-module-card__heading{display:flex;align-items:center;gap:14px}.application-module-card__icon{display:inline-flex;width:48px;height:48px;flex:0 0 48px;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--module-color) 45%,transparent);border-radius:10px;background:color-mix(in srgb,var(--module-color) 14%,transparent);color:var(--module-color);font-size:22px}.application-module-card__title,.application-module-card__subtitle,.application-module-card__features,.application-module-card__feature,.application-module-card__cta{display:block}.application-module-card__title{color:var(--text-primary);font-size:16px}.application-module-card__subtitle{margin-top:3px;color:var(--text-secondary);font-size:12px;line-height:1.35}.application-module-card__features{display:grid;gap:8px;margin-top:25px}.application-module-card__feature{color:var(--text-secondary);font-size:13px}.application-module-card__feature i{width:18px;color:var(--module-color);font-size:10px;text-align:center}.application-module-card__cta{margin-top:auto;padding-top:22px;color:var(--module-color);font-size:13px;font-weight:650;text-align:right}.application-module-card__cta i{margin-left:6px;font-size:11px}.application-chooser__footer{position:absolute;z-index:1;bottom:18px;color:var(--text-muted);font-size:11px;text-align:center}@media(max-width:920px){.application-chooser__modules{grid-template-columns:minmax(280px,420px);justify-content:center}.application-module-card{min-height:auto}}@media(max-width:560px){.application-chooser{padding:26px 18px 66px}.application-chooser__meta-logo{height:110px}.application-chooser__intro{margin-bottom:28px}.application-module-card{padding:24px 20px}}.readonly-detail-modal{width:min(620px,calc(100vw - 32px));max-height:min(720px,calc(100vh - 32px));display:flex;flex-direction:column}.readonly-detail-header{align-items:flex-start}.readonly-detail-title{display:inline-flex;align-items:center;gap:8px;color:var(--text-primary);font-size:16px;font-weight:700}.readonly-detail-title i{color:var(--accent)}.readonly-detail-subtitle{margin:4px 0 0;color:var(--text-secondary);font-size:12px}.readonly-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;overflow-y:auto;padding:18px}.readonly-detail-field{min-width:0}.readonly-detail-label{display:block;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.readonly-detail-value{margin-top:4px;color:var(--text-primary);font-size:13px;line-height:1.45;overflow-wrap:anywhere}.readonly-detail-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border-color)}.readonly-detail-actions .fa-pen{margin-right:5px}@media(max-width:560px){.readonly-detail-grid{grid-template-columns:1fr}}.document-detail-box{width:min(620px,calc(100vw - 32px))}.document-detail-title{display:flex;align-items:center;gap:9px;color:var(--text-primary);font-size:15px;font-weight:600}.document-detail-title i{color:var(--accent)}.document-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}.document-detail-field{display:flex;min-width:0;flex-direction:column;gap:4px}.document-detail-field.full{grid-column:1 / -1}.document-detail-field>span{color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.document-detail-field>strong{color:var(--text-primary);font-size:13px;font-weight:500;overflow-wrap:anywhere}.document-detail-field .mime-badge{width:fit-content}@media(max-width:560px){.document-detail-grid{grid-template-columns:1fr}.document-detail-field.full{grid-column:auto}}.planimetry-tab{display:flex;flex-direction:column;gap:0;height:100%;min-height:0}.planimetry-viewer{position:relative;flex:1 1 auto;min-height:320px;margin-top:10px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;border-radius:6px;background:var(--bg-tertiary)}.planimetry-svg-scroll{width:max-content;min-width:100%;min-height:100%}.planimetry-svg-scroll>svg{display:block;max-width:none;max-height:none}.asset-type-badge,.asset-page-title-wrap,.asset-page-actions,.asset-actions,.asset-form-actions,.asset-filter-notice,.occupancy-header-actions,.occupancy-card-heading,.occupancy-asset-row-head,.iaq-card-head,.iaq-metrics,.occupancy-heat-legend{display:flex;align-items:center}.asset-type-badge{gap:5px;color:var(--text-secondary);font-size:12px}.asset-type-badge-icon,.asset-page-title-icon,.asset-filter-notice-icon{color:var(--accent)}.asset-type-badge-icon{font-size:11px}.asset-form-modal{max-width:560px}.asset-form{display:flex;flex-direction:column;gap:12px;padding:16px 0}.asset-form-grid-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.asset-form-grid-location{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}.asset-form-textarea{resize:vertical}.asset-form-actions{justify-content:flex-end;gap:8px;margin-top:4px}.asset-name{font-weight:500;color:var(--text-primary)}.asset-meta{color:var(--text-secondary);font-size:13px}.asset-province{color:var(--text-muted);font-size:12px}.asset-count{color:var(--text-muted);font-size:13px;font-weight:500}.asset-count.has-value{color:var(--accent)}.asset-alarm-count.has-value{color:var(--accent-red)}.asset-actions{gap:4px}.asset-page-title-wrap{gap:10px}.asset-page-title-icon{font-size:18px}.asset-page-actions{gap:8px}.asset-new-icon{margin-right:6px}.asset-kpi-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;cursor:pointer;font:inherit;text-align:left;transition:border-color .15s}.asset-kpi-card:hover{border-color:var(--text-secondary)}.asset-kpi-card.is-active.asset-kpi-ok{border-color:var(--accent-green)}.asset-kpi-card.is-active.asset-kpi-warning{border-color:var(--accent-orange)}.asset-kpi-card.is-active.asset-kpi-alarm{border-color:var(--accent-red)}.asset-kpi-card.is-active.asset-kpi-dismesso{border-color:var(--text-muted)}.asset-kpi-ok .kpi-val{color:var(--accent-green)}.asset-kpi-warning .kpi-val{color:var(--accent-orange)}.asset-kpi-alarm .kpi-val{color:var(--accent-red)}.asset-kpi-dismesso .kpi-val{color:var(--text-muted)}.asset-loading-spinner{width:28px;height:28px;margin:0 auto 10px}.asset-loading-text{color:var(--text-secondary);font-size:13px}.asset-error-icon{color:var(--accent-red);font-size:28px;margin-bottom:10px}.asset-retry-button{margin-top:10px}.asset-filter-notice{gap:8px;margin-bottom:8px;padding:8px 14px;border:1px solid rgba(52,152,219,.4);border-radius:6px;background:#3498db1f;color:var(--text-primary);font-size:13px}.asset-filter-clear{margin-left:auto;padding:0;border:0;background:none;color:var(--text-muted);cursor:pointer;font:inherit;font-size:12px}.asset-filter-clear:hover{color:var(--text-primary)}.occupancy-title-icon{margin-right:8px;color:var(--accent-orange)}.occupancy-header-actions{gap:8px}.occupancy-content{display:flex;flex-direction:column;gap:16px}.occupancy-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.occupancy-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.occupancy-kpi-sub,.occupancy-asset-meta{margin-top:2px;color:var(--text-muted);font-size:11px}.occupancy-tone-muted{color:var(--text-muted)}.occupancy-tone-success{color:var(--accent-green)}.occupancy-tone-warning{color:var(--accent-yellow)}.occupancy-tone-danger{color:var(--accent-red)}.occupancy-tone-primary{color:var(--accent)}.occupancy-tone-secondary{color:var(--text-secondary)}.occupancy-card-heading{margin:0 0 12px;color:var(--text-primary);font-size:inherit;font-weight:700}.occupancy-heatmap-heading{margin-bottom:16px}.occupancy-heading-icon{margin-right:8px;color:var(--accent)}.occupancy-heading-icon-iaq{color:var(--accent-green)}.occupancy-empty{padding:24px 0;color:var(--text-muted);text-align:center}.occupancy-list{display:flex;flex-direction:column;gap:10px}.occupancy-asset-row-head{justify-content:space-between;margin-bottom:4px}.occupancy-asset-name{color:var(--text-primary);font-size:13px;font-weight:600}.occupancy-zone-count{margin-left:8px;color:var(--text-muted);font-size:11px}.occupancy-percent{font-size:14px;font-weight:700}.occupancy-progress{height:8px;overflow:hidden;border-radius:4px;background:var(--bg-tertiary)}.occupancy-progress-value{width:var(--occupancy-progress-width);height:100%;border-radius:4px;transition:width .5s ease}.occupancy-progress-value.occupancy-tone-muted{background:var(--text-muted)}.occupancy-progress-value.occupancy-tone-success{background:var(--accent-green)}.occupancy-progress-value.occupancy-tone-warning{background:var(--accent-yellow)}.occupancy-progress-value.occupancy-tone-danger{background:var(--accent-red)}.iaq-list{display:flex;flex-direction:column;gap:12px}.iaq-card{padding:10px 12px;border-left:3px solid var(--text-muted);border-radius:8px;background:var(--bg-tertiary)}.iaq-card.occupancy-tone-success{border-left-color:var(--accent-green)}.iaq-card.occupancy-tone-warning{border-left-color:var(--accent-yellow)}.iaq-card.occupancy-tone-danger{border-left-color:var(--accent-red)}.iaq-card-head{justify-content:space-between;margin-bottom:6px}.iaq-status{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700}.iaq-card.occupancy-tone-success .iaq-status{background:#27ae6021;color:var(--accent-green)}.iaq-card.occupancy-tone-warning .iaq-status{background:#f39c1221;color:var(--accent-yellow)}.iaq-card.occupancy-tone-danger .iaq-status{background:#e74c3c21;color:var(--accent-red)}.iaq-metrics{gap:16px;color:var(--text-muted);font-size:12px}.occupancy-metric-icon{margin-right:4px}.occupancy-heatmap-scroll{overflow-x:auto}.occupancy-heatmap{display:grid;grid-template-columns:60px repeat(24,1fr);gap:2px;min-width:600px}.occupancy-heat-hour{color:var(--text-muted);font-size:9px;text-align:center}.occupancy-heat-day{display:flex;align-items:center;color:var(--text-muted);font-size:11px}.occupancy-heat-cell,.occupancy-legend-swatch{background:var(--occupancy-heat-background, var(--bg-tertiary))}.occupancy-heat-legend{gap:8px;margin-top:12px;color:var(--text-muted);font-size:11px}.occupancy-legend-swatch{display:inline-block;width:20px;height:12px;border-radius:2px}@media(max-width:900px){.occupancy-summary-grid{grid-template-columns:1fr}}@media(max-width:640px){.asset-form-grid-two,.asset-form-grid-location,.occupancy-kpi-grid{grid-template-columns:1fr}.occupancy-header-actions{flex-wrap:wrap;justify-content:flex-end}.iaq-card-head,.iaq-metrics{align-items:flex-start;flex-wrap:wrap}}.asset-mapbox{width:100%;height:100%;background:var(--bg-primary)}.mapbox-loading,.mapbox-error{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);color:var(--text-secondary)}.mapbox-error{flex-direction:column;gap:8px;text-align:center}.mapbox-error i{color:var(--accent-red);font-size:28px}.asset-map-popup .mapboxgl-popup-content{padding:0;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-card);color:var(--text-primary);box-shadow:0 8px 24px #00000061}.asset-map-popup .mapboxgl-popup-tip{border-top-color:var(--bg-card)}.asset-map-popup .mapboxgl-popup-close-button{color:var(--text-secondary);font-size:18px}.asset-map-popup-content{min-width:190px;display:flex;flex-direction:column;gap:7px;padding:12px}.asset-map-popup-content strong{font-size:14px}.asset-map-popup-content span:not(.asset-map-popup-status){color:var(--text-secondary);font-size:12px}.asset-map-popup-status{width:fit-content;padding:2px 6px;border-radius:4px;color:#fff;font-size:10px;font-weight:700;text-transform:uppercase}.asset-map-status-ok{background:#27ae60}.asset-map-status-warning{background:#f39c12}.asset-map-status-alarm{background:#e74c3c}.asset-map-status-dismesso,.asset-map-status-unknown{background:#7f8c8d}.map-settings-panel{display:flex;flex-direction:column;gap:18px;max-width:820px}.map-settings-panel-heading{display:flex;gap:10px;align-items:flex-start;padding:14px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-card)}.map-settings-panel-heading i{color:var(--accent);margin-top:3px}.map-settings-panel-heading h2{margin:0;color:var(--text-primary);font-size:15px}.map-settings-panel-heading p{margin:4px 0 0;color:var(--text-secondary);font-size:12px}.map-settings-grid,.map-settings-view-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.map-settings-view-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.map-settings-fieldset{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin:0;padding:14px;border:1px solid var(--border-color);border-radius:8px}.map-settings-fieldset legend{padding:0 5px;color:var(--text-primary);font-size:13px;font-weight:700}.map-settings-toggle{display:flex;min-height:45px;align-items:center;justify-content:space-between;gap:12px;color:var(--text-primary);cursor:pointer}.map-settings-toggle strong,.map-settings-toggle small{display:block}.map-settings-toggle strong{font-size:12px}.map-settings-toggle small{margin-top:2px;color:var(--text-muted);font-size:11px}.map-settings-toggle input{width:16px;height:16px;accent-color:var(--accent)}.map-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.map-settings-save-status{color:var(--accent-green);font-size:12px}.map-settings-save-status.is-error{color:var(--accent-red)}@media(max-width:850px){.map-settings-grid,.map-settings-view-grid{grid-template-columns:1fr 1fr}}@media(max-width:550px){.map-settings-grid,.map-settings-view-grid,.map-settings-fieldset{grid-template-columns:1fr}.map-settings-footer{align-items:flex-start;flex-direction:column}}.asset-mapbox-shell{position:relative;width:100%;height:100%;min-width:0;min-height:0}.asset-mapbox-shell .asset-mapbox{width:100%;height:100%}.eff-analytics-page{display:flex;flex-direction:column;gap:16px}.eff-analytics-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.eff-analytics-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.eff-analytics-metric{min-width:0;padding:14px;border:1px solid var(--border-color);border-radius:10px;background:var(--bg-card);box-shadow:0 4px 14px #00000024}.eff-analytics-metric>i{display:block;margin-bottom:9px;font-size:15px}.eff-analytics-metric-value{overflow:hidden;color:var(--text-primary);font-size:22px;font-weight:800;line-height:1.05;text-overflow:ellipsis;white-space:nowrap}.eff-analytics-metric-unit,.eff-analytics-metric-note{margin-top:3px;color:var(--text-muted);font-size:11px}.eff-analytics-metric-label{margin-top:5px;color:var(--text-secondary);font-size:12px;font-weight:600}.eff-analytics-tone-primary>i{color:var(--accent)}.eff-analytics-tone-success>i{color:var(--accent-green)}.eff-analytics-tone-warning>i{color:var(--accent-orange)}.eff-analytics-tone-danger>i{color:var(--accent-red)}.eff-analytics-tone-muted>i{color:var(--text-muted)}.eff-analytics-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px}.eff-analytics-grid.equal{grid-template-columns:repeat(2,minmax(0,1fr))}.eff-analytics-grid.full{grid-template-columns:minmax(0,1fr)}.eff-analytics-card{min-width:0;padding:16px}.eff-analytics-card-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;color:var(--text-primary);font-size:14px}.eff-analytics-card-title i{color:var(--accent)}.eff-analytics-tooltip{min-width:148px;padding:9px 10px;border:1px solid var(--border-color);border-radius:6px;background:#0d1b2a;box-shadow:0 8px 22px #00000040;font-size:11px}.eff-analytics-tooltip strong{display:block;margin-bottom:5px;color:var(--text-primary)}.eff-analytics-tooltip-row{display:flex;justify-content:space-between;gap:12px}.eff-analytics-tooltip-row span:last-child{color:var(--text-primary);font-weight:700}.eff-analytics-empty,.eff-analytics-availability{display:flex;min-height:132px;align-items:center;justify-content:center;gap:8px;color:var(--text-muted);text-align:center;font-size:12px}.eff-analytics-empty i,.eff-analytics-availability i{color:var(--accent-orange)}.eff-analytics-ranking{display:flex;flex-direction:column;gap:9px;max-height:320px;overflow:auto}.eff-analytics-ranking-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;border-radius:6px;background:var(--bg-tertiary)}.eff-analytics-ranking-index{color:var(--accent);font-size:11px;font-weight:800}.eff-analytics-ranking-name{overflow:hidden;color:var(--text-primary);font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.eff-analytics-ranking-sub{color:var(--text-muted);font-size:10px}.eff-analytics-ranking-value{color:var(--text-secondary);font-size:12px;font-weight:700;white-space:nowrap}.eff-analytics-legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0;color:var(--text-muted);font-size:11px}.eff-analytics-legend-item{display:inline-flex;align-items:center;gap:5px}.eff-analytics-dot{width:8px;height:8px;border-radius:50%}.eff-analytics-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border:1px solid currentColor;border-radius:999px;font-size:10px;font-weight:700}.eff-analytics-heatmap{display:grid;grid-template-columns:48px repeat(24,minmax(14px,1fr));gap:2px;min-width:590px}.eff-analytics-heat-label{display:flex;align-items:center;color:var(--text-muted);font-size:10px}.eff-analytics-heat-cell{height:16px;border-radius:2px;background:var(--eff-heat-color, var(--bg-tertiary))}.eff-analytics-heat-scroll,.eff-analytics-table-wrap{overflow-x:auto}.eff-analytics-table{width:100%;border-collapse:collapse;font-size:12px}.eff-analytics-table th{padding:8px;color:var(--text-muted);font-size:10px;font-weight:700;text-align:left;text-transform:uppercase}.eff-analytics-table td{padding:9px 8px;border-top:1px solid var(--border-color);color:var(--text-secondary)}.eff-analytics-table td strong{color:var(--text-primary)}.eff-analytics-table tr[data-clickable=true]{cursor:pointer}.eff-analytics-table tr[data-clickable=true]:hover{background:#42a5f514}.eff-analytics-period{display:inline-flex;gap:4px;flex-wrap:wrap}.eff-analytics-period button{min-width:44px}.eff-analytics-notice{padding:10px 12px;border-left:3px solid var(--accent-orange);border-radius:6px;background:#f39c1217;color:var(--text-secondary);font-size:12px}.eff-analytics-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.eff-analytics-tab{flex:0 0 auto}@media(max-width:1050px){.eff-analytics-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.eff-analytics-grid,.eff-analytics-grid.equal{grid-template-columns:minmax(0,1fr)}}@media(max-width:620px){.eff-analytics-metric-grid{grid-template-columns:minmax(0,1fr)}.eff-analytics-card{padding:12px}.eff-analytics-metric-value{font-size:20px}}:root{--bg-primary: #07101a;--bg-secondary: #0a1628;--bg-tertiary: #0d1f30;--bg-card: #0d1f30;--border-color: #1a3a50;--text-primary: #e0e0e0;--text-secondary: #90caf9;--text-muted: #4a7a9b;--accent: #42a5f5;--accent-hover: #1e88e5;--accent-orange: #F39C12;--accent-green: #27AE60;--accent-red: #E74C3C;--accent-yellow: #F39C12;--accent-blue: #00A3E0;--topbar-h: 52px;--sidebar-w: 52px;--shadow: 0 4px 16px rgba(0,0,0,.5);--background: oklch(.09 .02 240);--foreground: oklch(.88 .01 210);--card: oklch(.13 .025 230);--card-foreground: oklch(.88 .01 210);--popover: oklch(.13 .025 230);--popover-foreground: oklch(.88 .01 210);--primary: oklch(.65 .16 220);--primary-foreground: oklch(.98 .005 210);--secondary: oklch(.16 .03 230);--secondary-foreground: oklch(.75 .05 220);--muted: oklch(.16 .03 230);--muted-foreground: oklch(.45 .04 220);--accent-ui: oklch(.16 .03 230);--accent-foreground: oklch(.75 .05 220);--destructive: oklch(.55 .22 25);--border: oklch(.22 .04 230);--input: oklch(.22 .04 230);--ring: oklch(.65 .16 220);--radius: .5rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:Segoe UI,Arial,system-ui,-apple-system,sans-serif;font-size:14px;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-h);background:var(--bg-secondary);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 16px;gap:12px;z-index:1050}.topbar-logo{height:28px;object-fit:contain}.topbar-sep{width:1px;height:24px;background:var(--border-color);flex-shrink:0}.topbar-title{font-size:13px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.topbar-clock{font-size:11px;color:var(--text-muted);font-family:Courier New,monospace;letter-spacing:.03em;white-space:nowrap}.topbar-spacer{flex:1}.topbar-controls{display:flex;align-items:center;gap:8px}.topbar-search-wrap{position:relative;display:flex;align-items:center}.topbar-search-icon{position:absolute;left:8px;color:var(--text-muted);font-size:12px;pointer-events:none}.topbar-search{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:13px;padding:5px 10px 5px 28px;width:200px;outline:none;transition:border-color .15s,width .2s}.topbar-search:focus{border-color:var(--accent);width:260px}.topbar-search::placeholder{color:var(--text-muted)}.topbar-filter-wrap{display:flex;align-items:center;gap:4px}.topbar-filter-btn{background:transparent;border:1px solid var(--border-color);border-radius:5px;color:var(--text-muted);font-size:12px;padding:4px 10px;cursor:pointer;transition:all .15s;white-space:nowrap}.topbar-filter-btn:hover{border-color:var(--accent);color:var(--text-primary)}.topbar-filter-btn.active{border-color:var(--accent);background:#00a3e026;color:var(--accent)}.topbar-alarm-btn{position:relative;background:none;border:none;color:var(--text-secondary);font-size:16px;cursor:pointer;padding:4px;border-radius:4px;transition:color .15s}.topbar-alarm-btn:hover{color:var(--text-primary)}.topbar-alarm-badge{position:absolute;top:-4px;right:-6px;min-width:16px;height:16px;background:var(--accent-red);color:#fff;font-size:10px;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}.topbar-user{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:13px;cursor:default}.btn-logout{background:none;border:1px solid var(--border-color);border-radius:5px;color:var(--text-muted);font-size:13px;padding:4px 10px;cursor:pointer;transition:all .15s}.btn-logout:hover{border-color:var(--accent-red);color:var(--accent-red)}.sidebar{position:fixed;top:var(--topbar-h);left:0;width:var(--sidebar-w);bottom:0;background:var(--bg-secondary);border-right:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;align-items:center;padding-top:8px;z-index:1000;gap:4px}.sb-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;color:#ffffff8c;font-size:16px;text-decoration:none;background:transparent;border:none;cursor:pointer;position:relative;transition:background .15s,color .15s}.sb-btn:hover{background:#00a3e02e;color:#fff}.sb-btn.active{background:#00a3e038;color:var(--accent)}.sb-sep{width:28px;height:1px;background:#00a3e033;margin:4px 0}.sb-spacer{flex:1}.sb-dot{display:none;position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--accent-red)}.sb-dot.visible{display:block}.main-layout{position:fixed;top:var(--topbar-h);left:var(--sidebar-w);right:0;bottom:0;overflow:hidden;background:var(--bg-primary)}.page-content{height:100%;overflow-y:auto;padding:20px}.gam-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:16px}.gam-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.gam-card-title{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.kpi-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.kpi-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.kpi-value{font-size:28px;font-weight:700;color:var(--text-primary);line-height:1.1}.kpi-sub{font-size:12px;color:var(--text-secondary)}.gam-table{width:100%;border-collapse:collapse;font-size:13px}.gam-table th{text-align:left;padding:8px 12px;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border-color);white-space:nowrap}.gam-table td{padding:10px 12px;border-bottom:1px solid rgba(30,58,95,.5);color:var(--text-primary);vertical-align:middle}.gam-table tr:hover td{background:#00a3e00d}.gam-table tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;border:1px solid;white-space:nowrap}.badge-ok{background:#27ae6026;color:#27ae60;border-color:#27ae6066}.badge-warning{background:#f39c1226;color:#f39c12;border-color:#f39c1266}.badge-alarm{background:#e74c3c26;color:#e74c3c;border-color:#e74c3c66}.badge-unknown{background:#00a3e026;color:#00a3e0;border-color:#00a3e066}.badge-dismesso{background:#6b728026;color:#9ca3af;border-color:#6b728066}.badge-info{background:#00a3e026;color:#00a3e0;border-color:#00a3e066}.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:all .15s;white-space:nowrap}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.btn-danger{background:#e74c3c26;color:var(--accent-red);border:1px solid rgba(231,76,60,.4)}.btn-danger:hover{background:#e74c3c40}.btn-icon{padding:6px;width:32px;height:32px;justify-content:center}.btn-sm{padding:4px 10px;font-size:12px}.gam-input{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:13px;padding:7px 10px;outline:none;width:100%;transition:border-color .15s}.gam-input:focus{border-color:var(--accent)}.gam-input::placeholder{color:var(--text-muted)}.gam-select{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:13px;padding:7px 10px;outline:none;cursor:pointer}.gam-select:focus{border-color:var(--accent)}.form-label{font-size:12px;color:var(--text-secondary);margin-bottom:4px;display:block}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding-top:var(--topbar-h)}.modal-box{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 32px #0009;display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border-color);flex-shrink:0}.modal-title{font-size:15px;font-weight:600;color:var(--text-primary)}.modal-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:4px;transition:color .15s}.modal-close:hover{color:var(--text-primary)}.modal-body{flex:1;overflow-y:auto;padding:18px}.modal-footer{padding:12px 18px;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0}.map-container{width:100%;height:100%}.asset-marker-dot{width:14px;height:14px;border-radius:50%;border:2px solid;box-shadow:0 0 6px currentColor}.gam-tabs{display:flex;gap:0;border-bottom:1px solid var(--border-color)}.gam-tab{padding:8px 16px;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;background:none;border-top:none;border-left:none;border-right:none;white-space:nowrap}.gam-tab:hover{color:var(--text-primary)}.gam-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.search-results-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;box-shadow:var(--shadow);z-index:1100;max-height:240px;overflow-y:auto}.search-result-item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px;transition:background .1s}.search-result-item:hover{background:#00a3e01a}.gam-tooltip{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;padding:8px 12px;font-size:12px;color:var(--text-primary);box-shadow:var(--shadow);pointer-events:none;white-space:nowrap}.gam-spinner{width:20px;height:20px;border:2px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px;color:var(--text-muted);text-align:center}.empty-state i{font-size:32px;opacity:.4}.empty-state p{font-size:13px}@media(prefers-reduced-motion:no-preference){.fade-in{animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.modal-box{animation:modalIn .2s cubic-bezier(.23,1,.32,1)}@keyframes modalIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}}@layer base{*{@apply border-border;}body{@apply bg-background text-foreground;}}@theme inline{ --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent-ui); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); }.mm-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}.mm-detail-row{display:flex;flex-direction:column;gap:2px}.mm-detail-row.full{grid-column:1 / -1}.mm-detail-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600}.mm-detail-value{font-size:13px;color:var(--text-primary)}.mm-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mm-kpi-card{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:12px;text-align:center}.mm-kpi-val{font-size:22px;font-weight:700;color:var(--accent);line-height:1.2}.mm-kpi-lbl{font-size:11px;color:var(--text-muted);margin-top:4px}.mm-list-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;transition:border-color .15s}.mm-list-item:hover{border-color:var(--accent)}.mm-form-card{background:var(--bg-tertiary);border:1px solid var(--accent);border-radius:8px;padding:14px}.mm-empty{text-align:center;color:var(--text-muted);font-size:13px;padding:24px 0}.mm-loading{display:flex;justify-content:center;padding:32px 0}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:13px;font-weight:500;transition:all .15s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#0090c8}.btn-secondary{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color)}.btn-secondary:hover{border-color:var(--accent);color:var(--text-primary)}.btn-sm{padding:5px 12px;font-size:12px}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;font-size:12px;transition:all .15s;text-decoration:none}.btn-icon:hover{border-color:var(--accent);color:var(--accent)}.btn-icon-danger:hover{border-color:#e74c3c;color:#e74c3c}.form-group{display:flex;flex-direction:column;gap:4px}.form-label{font-size:11px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.eff-panel{width:280px;flex-shrink:0;background:var(--bg-secondary);border-left:1px solid var(--border-color);overflow-y:auto;overflow-x:hidden;height:100%}.eff-panel-inner{padding:14px;display:flex;flex-direction:column;gap:10px}.eff-panel-header{display:flex;align-items:center;font-size:13px;font-weight:700;color:var(--text-primary);padding-bottom:8px;border-bottom:1px solid var(--border-color)}.eff-panel-section-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:700;margin-top:4px}.eff-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.eff-kpi-card{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:10px;text-align:center}.eff-kpi-val{font-size:20px;font-weight:700;color:var(--accent);line-height:1.2}.eff-kpi-lbl{font-size:10px;color:var(--text-muted);margin-top:3px}.eff-asset-list{display:flex;flex-direction:column;gap:4px}.eff-asset-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:border-color .15s}.eff-asset-item:hover{border-color:var(--accent-orange)}.eff-legend{position:absolute;bottom:24px;left:10px;background:#07101ae0;border:1px solid var(--border-color);border-radius:8px;padding:10px 12px;z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.eff-legend-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:700;margin-bottom:6px}.eff-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);margin-bottom:3px}.eff-legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.eff-back-btn{display:flex;align-items:center;font-size:12px;color:var(--accent-orange);background:none;border:none;cursor:pointer;padding:0;margin-bottom:4px;transition:opacity .15s}.eff-back-btn:hover{opacity:.75}.eff-asset-header{display:flex;align-items:flex-start;gap:8px;padding:10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px}.eff-eff-badge{display:inline-flex;align-items:center;padding:6px 12px;border:1px solid;border-radius:6px;font-size:13px;font-weight:700;background:#0003}.page-content{padding:20px 24px;height:100%;overflow-y:auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-title{font-size:18px;font-weight:700;color:var(--text-primary)}.page-subtitle{font-size:13px;color:var(--text-muted);margin-top:2px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}.stat-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;padding:14px 16px}.stat-card-val{font-size:26px;font-weight:800;color:var(--text-primary);line-height:1.1}.stat-card-lbl{font-size:11px;color:var(--text-muted);margin-top:4px;text-transform:uppercase;letter-spacing:.04em}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;padding:8px 12px;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--border-color);font-weight:700}.data-table td{padding:10px 12px;color:var(--text-secondary);border-bottom:1px solid rgba(255,255,255,.04)}.data-table tr:hover td{background:#ffffff08}.data-table-wrap{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;overflow:visible}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.badge-green{background:#27ae6033;color:#27ae60}.badge-orange{background:#f39c1233;color:#f39c12}.badge-red{background:#e74c3c33;color:#e74c3c}.badge-blue{background:#00a3e033;color:#00a3e0}.badge-gray{background:#95a5a633;color:#95a5a6}.search-filter-bar{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}:root{--qs-w: 300px}.main-layout-qs{right:var(--qs-w)!important}.qs-panel{position:fixed;top:var(--topbar-h);right:0;width:var(--qs-w);bottom:0;background:var(--bg-secondary);border-left:1px solid var(--border-color);overflow-y:auto;z-index:900;display:flex;flex-direction:column}.qs-header{padding:14px 16px 10px;border-bottom:1px solid var(--border-color);display:flex;flex-direction:column;gap:4px}.qs-title{font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--text-primary);text-transform:uppercase}.qs-live{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted)}.qs-live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 6px var(--accent-green);animation:qs-pulse 2s infinite}@keyframes qs-pulse{0%,to{opacity:1}50%{opacity:.4}}.qs-section{padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.05)}.qs-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:10px;display:flex;align-items:center}.qs-kpi-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.qs-kpi{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:10px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px}.qs-kpi-val{font-size:22px;font-weight:800;line-height:1.1}.qs-kpi-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);margin-top:2px}.qs-kpi-sub{font-size:9px;color:var(--text-muted);line-height:1.3;text-align:center}.page-container{display:flex;flex-direction:column;gap:16px;height:100%;overflow-y:auto}.filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:10px 14px}.filter-bar .gam-input,.filter-bar .gam-select{flex:1;min-width:140px}.badge-success{background:#27ae602e;color:#27ae60;border:1px solid rgba(39,174,96,.3);border-radius:12px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-danger,.badge-red{background:#e74c3c2e;color:#e74c3c;border:1px solid rgba(231,76,60,.3);border-radius:12px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-green{background:#27ae602e;color:#27ae60;border:1px solid rgba(39,174,96,.3);border-radius:12px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.pagination-bar{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 0;border-top:1px solid var(--border-color);margin-top:4px}.clickable-row{cursor:pointer}.clickable-row:hover td{background:#42a5f512!important}.settings-section{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:20px;display:flex;flex-direction:column;gap:14px}.settings-section-title{font-size:13px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.06em;padding-bottom:10px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;gap:8px}.settings-section-title i{color:var(--accent)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:600px){.form-row{grid-template-columns:1fr}}.bim-viewer{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;overflow:hidden;flex:1;min-height:400px;display:flex;align-items:center;justify-content:center}.bim-viewer svg{max-width:100%;max-height:100%}.threshold-table{width:100%;border-collapse:collapse;font-size:13px}.threshold-table th{background:var(--bg-tertiary);color:var(--text-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:8px 12px;text-align:left;border-bottom:1px solid var(--border-color)}.threshold-table td{padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--text-primary);vertical-align:middle}.threshold-table tr:hover td{background:#42a5f50d}.mm-referenti-section{margin-top:20px;border-top:1px solid var(--border-color, #1E3A4A);padding-top:14px}.mm-section-header{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:12px}.mm-section-header i{color:var(--accent, #00A3E0)}.mm-ref-grid{display:flex;flex-direction:column;gap:8px}.mm-ref-card{display:flex;align-items:flex-start;gap:12px;background:var(--bg-tertiary, #1a2a35);border:1px solid var(--border-color, #1E3A4A);border-radius:8px;padding:10px 14px}.mm-ref-icon{width:34px;height:34px;border-radius:50%;background:var(--accent-bg, rgba(0,163,224,.12));display:flex;align-items:center;justify-content:center;color:var(--accent, #00A3E0);font-size:14px;flex-shrink:0}.mm-ref-body{flex:1;min-width:0}.mm-ref-ruolo{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}.mm-ref-nome{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.mm-ref-contatti{display:flex;flex-wrap:wrap;gap:10px}.mm-ref-link{font-size:12px;color:var(--accent, #00A3E0);text-decoration:none;display:inline-flex;align-items:center;gap:4px}.mm-ref-link:hover{text-decoration:underline}.mm-alarm-row{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-tertiary, #1a2a35);border-radius:6px;font-size:13px}.mm-esg-bar-wrap{margin-bottom:12px}.mm-esg-bar-label{display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted);margin-bottom:4px}.mm-esg-bar{height:7px;background:var(--bg-tertiary, #1a2a35);border-radius:4px;overflow:hidden}.mm-esg-bar-fill{height:100%;border-radius:4px;transition:width .4s ease}.cal-nav{display:flex;align-items:center;gap:12px;margin-bottom:16px}.cal-nav h2{font-size:16px;font-weight:600;flex:1;text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:8px}.cal-header{text-align:center;font-size:11px;font-weight:700;color:var(--text-muted);padding:4px 0;text-transform:uppercase}.cal-day{min-height:72px;border-radius:8px;padding:6px;background:var(--bg-secondary, #0F1923);border:1px solid var(--border-color, #1E3A4A);font-size:12px;position:relative}.cal-day.other-month{opacity:.35}.cal-day.today{border-color:var(--accent, #00A3E0)}.cal-day-num{font-size:11px;font-weight:600;color:var(--text-muted);margin-bottom:4px}.cal-event{font-size:10px;padding:2px 5px;border-radius:4px;margin-bottom:2px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-event.critica{background:#c0392b;color:#fff}.cal-event.alta{background:#e74c3c;color:#fff}.cal-event.media{background:#00a3e0;color:#fff}.cal-event.bassa{background:#7f8c8d;color:#fff}.cal-event.scaduta{background:#c0392b;color:#fff}.kpi-strip,.kpi-bar{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.kpi-val{font-size:24px;font-weight:700;line-height:1}.kpi-lbl{font-size:11px;color:var(--text-muted);margin-top:4px}.kpi-card.danger .kpi-val{color:var(--accent-red)}.kpi-card.warning .kpi-val{color:var(--accent-orange)}.kpi-card.ok .kpi-val{color:var(--accent-green)}.kpi-card.info .kpi-val{color:var(--accent-blue)}@media(max-width:768px){.kpi-strip,.kpi-bar{gap:8px}}.filtri-bar{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;margin-bottom:12px;overflow-x:auto}.filtri-bar select,.filtri-bar input{height:34px;padding:0 10px;font-size:13px;border-radius:7px;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary)}.filtri-bar select:focus,.filtri-bar input:focus{outline:none;border-color:var(--accent)}.tabs{display:flex;gap:0;border-bottom:2px solid var(--border-color);margin-bottom:16px}.tab-btn{background:none;border:none;cursor:pointer;padding:8px 18px;font-size:13px;font-weight:600;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-2px;display:flex;align-items:center;gap:6px;transition:color .15s}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-btn:hover{color:var(--text-primary)}.dl-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:8px;margin-bottom:8px;border:1px solid var(--border-color);background:var(--bg-card);transition:border-color .15s}.dl-row.scaduta{border-left:3px solid var(--accent-red)}.dl-row.urgente{border-left:3px solid var(--accent-orange)}.dl-row.normale{border-left:3px solid var(--accent-blue)}.dl-row.chiusa{opacity:.55;border-left:3px solid var(--text-muted)}.dl-info{flex:1;min-width:0}.dl-titolo{font-size:13px;font-weight:600}.dl-asset{font-size:12px;color:var(--text-secondary);margin-top:2px}.dl-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.dl-actions{display:flex;gap:6px;flex-shrink:0}@media(max-width:768px){.dl-row{flex-wrap:wrap}.dl-actions{width:100%;justify-content:flex-end;margin-top:4px}}.doc-codice{font-family:monospace;font-size:11px;color:var(--text-muted);white-space:nowrap}.doc-nome{font-weight:500}.doc-asset-link{font-size:12px;color:var(--accent-blue);cursor:pointer;text-decoration:none;white-space:nowrap}.doc-asset-link:hover{text-decoration:underline}.doc-dim,.doc-data{font-size:11px;color:var(--text-muted);white-space:nowrap}.doc-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}.mime-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:10px;font-size:11px;font-weight:600;white-space:nowrap}.mime-pdf{background:#e74c3c26;color:#e74c3c}.mime-word{background:#3498db26;color:#3498db}.mime-xls{background:#2ecc7126;color:#2ecc71}.mime-img{background:#9b59b626;color:#9b59b6}.mime-other{background:#7f8c8d26;color:#7f8c8d}.table-wrap{overflow-x:auto}.data-table tr.row-scaduto td{background:#e74c3c14}.data-table tr.row-urgente td{background:#f39c1212}.giorni-scaduti{color:#e74c3c;font-size:11px;font-weight:700;white-space:nowrap}.giorni-urgenti{color:#f39c12;font-size:11px;font-weight:700;white-space:nowrap}.giorni-ok{color:#27ae60;font-size:11px;white-space:nowrap}.badge-scaduto{font-size:9px;font-weight:700;color:#e74c3c;text-transform:uppercase;letter-spacing:.04em}.codice-badge{font-size:11px;font-family:Courier New,monospace;color:var(--accent);background:#42a5f51a;padding:1px 6px;border-radius:4px;white-space:nowrap}.tipo-badge{font-size:10px;color:var(--text-muted);background:#ffffff0d;padding:1px 6px;border-radius:4px;text-transform:capitalize}.col-titolo{max-width:220px}.cell-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.cell-sm{font-size:12px;white-space:nowrap;color:var(--text-secondary)}.row-actions{display:flex;gap:4px;justify-content:flex-end}.row-actions .btn-icon{opacity:.6}.row-actions .btn-icon:hover{opacity:1}.row-actions .btn-icon.danger:hover{color:#e74c3c}.tipo-icon{font-size:14px}.record-count{font-size:11px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid .form-group.full{grid-column:1 / -1}.mime-pdf{color:#e74c3c;background:#e74c3c1f}.mime-word{color:#2980b9;background:#2980b91f}.mime-xls{color:#27ae60;background:#27ae601f}.mime-img{color:#8e44ad;background:#8e44ad1f}.mime-other{color:var(--text-muted);background:#ffffff0f}.pdf-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d1;z-index:5000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;padding-top:calc(var(--topbar-h, 52px) + 12px)}.pdf-box{width:100%;max-width:960px;height:90vh;display:flex;flex-direction:column;background:#0d1b2a;border:1px solid #1E3A5F;border-radius:12px;overflow:hidden;box-shadow:0 20px 60px #0009}.pdf-header{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid #1E3A5F;flex-shrink:0;background:#0a1628}.pdf-header-title{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:#e0f0ff}.pdf-body{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#0d1b2a}.scaduto-row td{background:#e74c3c0f!important}.scaduto-label{display:inline-block;margin-left:6px;font-size:9px;font-weight:700;color:#e74c3c;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}.badge-red{background:#e74c3c2e;color:#e74c3c;border:1px solid rgba(231,76,60,.35);border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.badge-green{background:#27ae602e;color:#27ae60;border:1px solid rgba(39,174,96,.35);border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.badge-orange{background:#f39c122e;color:#f39c12;border:1px solid rgba(243,156,18,.35);border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.badge-blue{background:#00a3e02e;color:#00a3e0;border:1px solid rgba(0,163,224,.35);border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.badge-gray{background:#95a5a62e;color:#95a5a6;border:1px solid rgba(149,165,166,.35);border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.kpi-mini{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-muted);background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:2px 8px}.bim-flex-wrap{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.bim-file-actions{display:flex;gap:5px;flex-shrink:0}.bim-floor-actions{display:flex;gap:6px}.bim-floor-header{display:flex;width:100%;align-items:center}.bim-disc-badge{font-size:10px;padding:1px 6px;border-radius:8px;flex-shrink:0}.bim-primary-badge{font-size:10px;padding:1px 6px;border-radius:8px;background:#27ae6033;color:#27ae60;flex-shrink:0}.bim-filename{font-weight:600;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.bim-filesize{font-size:10px;color:var(--text-muted);margin-top:2px}.bim-file-info{flex:1;min-width:0}.bim-floor-info{flex:1}.bim-upload-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:var(--bg-tertiary);border-radius:6px}.bim-disc-select{font-size:12px;padding:3px 8px;min-width:140px}.bim-checkbox-label{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-secondary);cursor:pointer}.bim-upload-btn{cursor:pointer;font-size:11px;margin-left:auto}.bim-warning-box{background:#f39c121f;border:1px solid rgba(243,156,18,.4);border-radius:6px;padding:8px 12px}.bim-warning-title{font-weight:600;font-size:12px;color:#f39c12;margin-bottom:4px}.bim-warning-meta{font-weight:400;margin-left:8px;color:var(--text-muted)}.bim-warning-item{font-size:11px;color:var(--text-secondary);margin-top:2px}.bim-warning-close{margin-top:6px;font-size:10px;color:var(--text-muted);background:none;border:none;cursor:pointer;padding:0}.bim-floor-row{flex-direction:column;align-items:flex-start;gap:8px}.bim-svg-preview{width:100%;background:var(--bg-tertiary);border-radius:6px;padding:8px;text-align:center}.bim-svg-img{max-width:100%;max-height:180px;object-fit:contain}.bim-section-header{font-weight:600;font-size:13px;color:var(--text-primary);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.bim-section-title{font-weight:600;font-size:13px;color:var(--text-primary);margin-bottom:10px}.bim-ifc-meta{font-weight:400;font-size:11px;color:var(--text-muted);margin-left:8px}.bim-loading{text-align:center;padding:16px}.bim-floor-name{font-weight:600;font-size:13px}.bim-floor-level{font-size:11px;color:var(--text-muted);margin-left:8px}.bim-floor-svg-ok{font-size:10px;margin-left:8px;color:#27ae60}.mb-12{margin-bottom:12px}.cal-more-events{font-size:10px;color:var(--text-muted)}.cal-legend{display:flex;gap:16px;margin-top:12px;flex-wrap:wrap}.cal-legend span{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text-muted)}.cal-legend i{width:10px;height:10px;border-radius:2px}.bim-ifc-heading-icon{color:var(--accent);margin-right:6px}.bim-ifc-info,.bim-ifc-warnings{border-radius:6px;padding:6px 10px;margin-bottom:10px;font-size:11px}.bim-ifc-info{color:var(--text-secondary);background:#4a90d914;border:1px solid rgba(74,144,217,.2)}.bim-ifc-info>i{color:#4a90d9;margin-right:6px}.bim-ifc-info strong{color:#fffc}.bim-ifc-info code{color:var(--accent);font-size:10px}.bim-ifc-warnings{background:#f39c1214;border:1px solid rgba(243,156,18,.3)}.bim-ifc-warnings p{margin:0;color:#f39c12}.bim-ifc-warnings p+p{margin-top:4px}.bim-ifc-warnings i{margin-right:4px}.bim-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}.bim-stat{padding:8px 6px;text-align:center;border-radius:6px;background:var(--bg-tertiary)}.bim-stat strong{display:block;font-size:18px;font-weight:700}.bim-stat strong.bim-stat--accent{color:var(--accent)}.bim-stat strong.bim-stat--blue{color:#4a90d9}.bim-stat small{color:var(--text-muted);font-size:10px}.bim-mep{margin-bottom:10px}.bim-mep h3,.bim-storey-title{margin:0 0 6px;color:var(--text-secondary);font-size:12px;font-weight:600}.bim-storey-title small{color:var(--text-muted);font-size:11px;font-weight:400}.bim-storey{margin-bottom:4px;border-radius:6px;overflow:hidden;background:var(--bg-tertiary)}.bim-storey-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;border:0;background:transparent;color:inherit;text-align:left}.bim-storey-name,.bim-storey-actions,.bim-space-row,.bim-element-row{display:flex;align-items:center;gap:8px}.bim-storey-name>i,.bim-space-row>i{color:var(--accent)}.bim-storey-name>i{font-size:12px}.bim-storey-name strong{font-size:12px}.bim-storey-name small,.bim-storey-actions>i,.bim-storey-empty,.bim-element-row small{color:var(--text-muted);font-size:10px}.bim-storey-actions em{padding:1px 6px;border-radius:8px;color:#4a90d9;background:#4a90d926;font-size:10px;font-style:normal}.bim-storey-details{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 12px 12px}.bim-storey-details h4{margin:0 0 6px;font-size:11px;font-weight:600;color:var(--text-secondary)}.bim-storey-empty{margin:0;font-size:11px}.bim-space-row,.bim-element-row{margin-bottom:3px;font-size:11px}.bim-space-row>i{font-size:7px}.bim-space-row small{margin-left:auto;color:var(--text-secondary);font-size:10px}.bim-element-row>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bim-element-row>i{flex:0 0 60px;height:6px;overflow:hidden;border-radius:3px;background:var(--bg-secondary)}.bim-element-row>i>b{display:block;height:100%;border-radius:3px;background:var(--accent)}.bim-element-row small{width:24px;text-align:right}@media(max-width:680px){.bim-stat-grid{grid-template-columns:repeat(2,1fr)}.bim-storey-details{grid-template-columns:1fr}}
