/* Qlik Objects & Components – Refined */
.qlik-object{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);display:flex;flex-direction:column;overflow:hidden;}
.qlik-object-header{padding:9px 12px 7px;border-bottom:1px solid var(--border-light);flex-shrink:0;}
.qlik-object-title{font-size:11.5px;font-weight:600;color:var(--text-primary);letter-spacing:-.01em;line-height:1.3;}
.qlik-object-subtitle{font-size:10px;color:var(--text-tertiary);margin-top:2px;line-height:1.3;}
.qlik-object-body{flex:1;padding:10px 12px;overflow:hidden;}
.qlik-object-body.no-pad{padding:0;}
.qlik-object-footer{padding:6px 12px;border-top:1px solid var(--border-light);background:var(--surface-2);flex-shrink:0;font-size:10px;color:var(--text-tertiary);}

/* KPI – compact */
.kpi-row{display:grid;gap:10px;margin-bottom:12px;}
.kpi-row-6{grid-template-columns:repeat(6,1fr);}
.kpi-row-5{grid-template-columns:repeat(5,1fr);}
.kpi-row-4{grid-template-columns:repeat(4,1fr);}
.kpi-row-3{grid-template-columns:repeat(3,1fr);}
.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;display:flex;flex-direction:column;}
.kpi-card.accent-heat{border-left:3px solid var(--heat);}
.kpi-card.accent-critical{border-left:3px solid var(--critical);}
.kpi-card.accent-high{border-left:3px solid var(--high);}
.kpi-card.accent-medium{border-left:3px solid var(--medium);}
.kpi-card.accent-low{border-left:3px solid var(--low);}
.kpi-card.accent-brand{border-left:3px solid var(--brand-500);}
.kpi-card.accent-forecast{border-left:3px solid var(--forecast);}
.kpi-label{font-size:9.5px;font-weight:600;color:var(--text-tertiary);letter-spacing:.03em;text-transform:uppercase;margin-bottom:4px;line-height:1.2;}
.kpi-value{font-size:24px;font-weight:700;color:var(--text-primary);line-height:1;letter-spacing:-.02em;}
.kpi-value.sm{font-size:19px;}.kpi-value.lg{font-size:28px;}
.kpi-value.critical{color:var(--critical);}.kpi-value.high{color:var(--high);}.kpi-value.heat{color:var(--heat);}.kpi-value.low{color:var(--low);}
.kpi-delta{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:600;margin-top:4px;padding:2px 5px;border-radius:3px;}
.kpi-delta.up-bad,.kpi-delta.down-bad{color:var(--critical);background:var(--critical-bg);}
.kpi-delta.up-good,.kpi-delta.down-good{color:var(--low);background:var(--low-bg);}
.kpi-delta.neutral{color:var(--text-tertiary);background:var(--surface-3);}
.kpi-context{font-size:9.5px;color:var(--text-muted);margin-top:3px;}

/* Filter Pane – compact inline variant for page-specific controls */
.filter-pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;}
.filter-pane-header{padding:7px 10px;border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;background:var(--surface-2);}
.filter-pane-title{font-size:9.5px;font-weight:600;color:var(--text-secondary);letter-spacing:.02em;text-transform:uppercase;}
.filter-pane-clear{font-size:9.5px;color:var(--brand-500);cursor:pointer;text-decoration:underline;display:none;}
.filter-pane-clear.visible{display:block;}
.filter-pane-body{padding:6px 8px;}
.filter-pane-row{display:flex;flex-wrap:wrap;gap:4px;}
.filter-value{font-size:10.5px;font-weight:500;padding:3px 8px;border-radius:3px;cursor:pointer;transition:all var(--transition);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);user-select:none;}
.filter-value:hover{background:var(--surface-3);}
.filter-value.selected{background:var(--qlik-selected-bg);border-color:var(--qlik-selected-border);color:var(--qlik-selected);font-weight:600;}
.filter-value.alternative{background:var(--qlik-alternative);color:var(--text-muted);}
.filter-value.excluded{background:var(--qlik-excluded-bg);color:var(--qlik-excluded);cursor:default;opacity:.6;}
.filter-bar{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap;align-items:flex-start;}
.filter-bar .filter-pane{flex:1;min-width:140px;}

/* Page contextual controls (horizon, layer) – slim inline strip */
.contextual-controls{
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:12px;
  padding:7px 12px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  flex-wrap:wrap;
}
.cc-label{font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;flex-shrink:0;}
.cc-divider{width:1px;height:16px;background:var(--border);flex-shrink:0;}

/* Priority Badge */
.priority-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;padding:2px 7px;border-radius:3px;letter-spacing:.02em;text-transform:uppercase;}
.priority-badge.critico{background:var(--critical-bg);color:var(--critical);border:1px solid var(--critical-border);}
.priority-badge.alto{background:var(--high-bg);color:var(--high);border:1px solid var(--high-border);}
.priority-badge.medio-alto{background:var(--mh-bg);color:var(--mh-color);border:1px solid #D1B700;}
.priority-badge.medio{background:var(--medium-bg);color:var(--medium);border:1px solid var(--medium-border);}
.priority-badge.basso{background:var(--low-bg);color:var(--low);border:1px solid var(--low-border);}

/* Status Badge */
.status-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:600;padding:2px 6px;border-radius:3px;}
.status-badge.completata{background:var(--st-completata-bg);color:var(--st-completata);}
.status-badge.in-corso{background:var(--st-in-corso-bg);color:var(--st-in-corso);}
.status-badge.approvata{background:var(--st-approvata-bg);color:var(--st-approvata);}
.status-badge.proposta{background:var(--st-proposta-bg);color:var(--st-proposta);}
.status-badge.bloccata{background:var(--st-bloccata-bg);color:var(--st-bloccata);}

/* Data type tag */
.data-tag{display:inline-flex;align-items:center;gap:3px;font-size:9px;font-weight:700;padding:1px 5px;border-radius:2px;letter-spacing:.04em;text-transform:uppercase;}
.data-tag.observed{background:#E8EDF5;color:var(--observed);}
.data-tag.current{background:var(--medium-bg);color:var(--current);}
.data-tag.forecast{background:#EDE9FE;color:var(--forecast);}
.data-tag.predicted{background:#FEF3C7;color:var(--escalation);}

/* Score Bar */
.score-bar-wrap{display:flex;align-items:center;gap:8px;}
.score-bar-track{flex:1;height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.score-bar-fill{height:100%;border-radius:3px;transition:width .4s ease;}
.score-bar-fill.critical{background:var(--critical);}
.score-bar-fill.high{background:var(--high);}
.score-bar-fill.medium-high{background:#D97706;}
.score-bar-fill.medium{background:var(--medium);}
.score-bar-fill.low{background:var(--low);}
.score-bar-val{font-size:10.5px;font-weight:700;min-width:26px;text-align:right;color:var(--text-primary);}

/* Table */
.data-table{width:100%;border-collapse:collapse;font-size:11.5px;}
.data-table th{background:var(--surface-2);color:var(--text-secondary);font-size:10px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;padding:7px 11px;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;cursor:pointer;}
.data-table th:hover{background:var(--surface-3);}
.data-table th.num{text-align:right;}
.data-table td{padding:7px 11px;border-bottom:1px solid var(--border-light);color:var(--text-primary);vertical-align:middle;}
.data-table td.num{text-align:right;font-variant-numeric:tabular-nums;}
.data-table tr:hover td{background:var(--surface-2);}
.data-table tr.selected-row td{background:var(--qlik-selected-bg);}
.data-table tr.excluded-row td{opacity:.45;}
.data-table-wrap{overflow-x:auto;overflow-y:auto;}

/* Alert Banner – slim */
.alert-banner{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:var(--r-md);margin-bottom:12px;}
.alert-banner.heat{background:var(--heat-bg);border:1px solid #FCD9B0;}
.alert-banner.critical{background:var(--critical-bg);border:1px solid var(--critical-border);}
.alert-banner-icon{font-size:18px;flex-shrink:0;margin-top:1px;}
.alert-banner-content{flex:1;min-width:0;}
.alert-banner-title{font-size:12.5px;font-weight:700;color:var(--text-primary);margin-bottom:2px;}
.alert-banner-body{font-size:11px;color:var(--text-secondary);line-height:1.4;}
.alert-banner-meta{font-size:10px;color:var(--text-tertiary);margin-top:3px;}

/* Area Detail Card */
.area-detail-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;}
.area-detail-name{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:7px;}
.area-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 12px;}
.area-detail-item{display:flex;flex-direction:column;gap:2px;}
.area-detail-item-label{font-size:9px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);}
.area-detail-item-value{font-size:12.5px;font-weight:600;color:var(--text-primary);}
.area-drivers{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-light);}
.area-drivers-title{font-size:9.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:5px;}
.driver-row{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.driver-label{font-size:10.5px;color:var(--text-secondary);min-width:110px;}
.driver-bar{flex:1;height:4px;background:var(--border);border-radius:3px;overflow:hidden;}
.driver-fill{height:100%;border-radius:3px;}

/* Chart container – height:100% lets Chart.js fill the body's usable area */
.chart-container{position:relative;height:100%;}
.chart-container canvas{display:block;}

/* Tab container */
.tab-container{display:flex;flex-direction:column;height:100%;}
.tab-header{display:flex;border-bottom:1px solid var(--border);padding:0 12px;background:var(--surface);flex-shrink:0;}
.tab-btn{font-size:11px;font-weight:500;color:var(--text-tertiary);padding:8px 12px;border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all var(--transition);}
.tab-btn:hover{color:var(--text-secondary);}
.tab-btn.active{color:var(--brand-500);border-bottom-color:var(--brand-500);font-weight:600;}
.tab-panel{display:none;flex:1;overflow:auto;}
.tab-panel.active{display:block;}

/* SVG Map */
.map-area{cursor:pointer;transition:opacity .15s ease;}
.map-area:hover{opacity:.85;}
.map-area.map-selected{stroke:#166534;stroke-width:2.5;}
.map-area.map-excluded{opacity:.35;}
.map-label{font-size:10px;font-weight:600;fill:#1B3A5C;pointer-events:none;text-anchor:middle;}
.map-label-sub{font-size:8.5px;fill:#374151;pointer-events:none;text-anchor:middle;}

/* Insight callout */
.insight-callout{background:var(--brand-50);border:1px solid var(--brand-100);border-left:3px solid var(--brand-500);border-radius:var(--r-md);padding:9px 12px;margin-bottom:10px;}
.insight-callout-title{font-size:10.5px;font-weight:700;color:var(--brand-700);margin-bottom:2px;}
.insight-callout-body{font-size:11px;color:var(--text-secondary);line-height:1.4;}
