/* BT Cars · Executive statistics dashboard · digital white edition */
.statsExecutive{padding-bottom:28px}.statsHeroDigital{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.statsHeroDigital>div:first-child>span{display:block;font-size:10px;font-weight:950;letter-spacing:.14em;color:#40577f}.statsHeroDigital h1{margin:2px 0 0;font-size:27px;letter-spacing:-.035em;color:#111d31}.statsTopControls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.statsPeriodTabs,.miniPeriodTabs{display:flex;align-items:center;border:1px solid #d6dfec;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 8px 22px rgba(21,42,76,.07)}.statsPeriodTabs button,.miniPeriodTabs button{border:0;border-right:1px solid #e2e8f1;background:#fff;padding:10px 15px;font-size:10px;font-weight:850;color:#5d6b80;cursor:pointer;white-space:nowrap;transition:.16s ease}.statsPeriodTabs button:last-child,.miniPeriodTabs button:last-child{border-right:0}.statsPeriodTabs button:hover,.miniPeriodTabs button:hover{background:#f3f7fd;color:#256dc8}.statsPeriodTabs button.active,.miniPeriodTabs button.active{background:linear-gradient(135deg,#159df7,#2876ed);color:#fff;box-shadow:0 0 20px rgba(29,145,243,.24)}#statsManagerFilter{height:40px;border:1px solid #d6dfec;border-radius:13px;background:#fff;padding:0 36px 0 13px;color:#39475c;font-size:10px;font-weight:850;outline:none;box-shadow:0 8px 22px rgba(21,42,76,.07)}

.statsKpiGrid.digital{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:12px}.statsKpiCard.digital{position:relative;min-height:126px;padding:16px;border:1px solid #dfe7f2;border-radius:17px;background:linear-gradient(145deg,#ffffff 0%,#f8fbff 72%,#eef6ff 100%);box-shadow:0 12px 28px rgba(28,52,88,.075);display:grid;grid-template-columns:42px 1fr;gap:12px;overflow:hidden}.statsKpiCard.digital:after{content:'';position:absolute;inset:auto -30px -50px auto;width:130px;height:130px;border-radius:50%;background:radial-gradient(circle,rgba(46,150,255,.10),transparent 68%);pointer-events:none}.statsKpiIcon{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;font-size:17px;font-weight:900;box-shadow:inset 0 0 0 1px rgba(255,255,255,.6)}.statsKpiIcon.blue{background:linear-gradient(145deg,#dff0ff,#edf7ff);color:#1f7dde}.statsKpiIcon.cyan{background:linear-gradient(145deg,#ddfbff,#edfaff);color:#1686ad}.statsKpiIcon.red{background:linear-gradient(145deg,#ffe4e8,#fff0f1);color:#e24650}.statsKpiIcon.green{background:linear-gradient(145deg,#dffbf2,#ecfff8);color:#179876}.statsKpiIcon.violet{background:linear-gradient(145deg,#eee7ff,#f6f2ff);color:#7158bd}.statsKpiCard small{display:block;font-size:8px;font-weight:950;letter-spacing:.085em;color:#75839a}.statsKpiCard strong{display:block;margin-top:4px;font-size:24px;line-height:1;color:#1a2940;letter-spacing:-.035em}.statsKpiCard.danger strong{color:#d94048}.statsKpiCard span{display:block;margin-top:8px;font-size:9px;color:#7e8a9c}.statsKpiCard span.up{color:#169e72;font-weight:800}.statsKpiCard span.down{color:#dc4b54;font-weight:800}.statsSpark{position:absolute;right:12px;bottom:12px;width:100px;height:30px;opacity:.98}

.statsDashboardGrid.digital{display:grid;grid-template-columns:1.45fr .7fr .78fr;gap:12px}.statsPanel.digital{position:relative;min-width:0;border:1px solid #dbe4ef;border-radius:18px;background:linear-gradient(145deg,#fff 0%,#fbfdff 62%,#f4f8fd 100%);box-shadow:0 12px 28px rgba(26,49,82,.075);padding:15px;overflow:hidden}.statsPanel.digital:before{content:'';position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,transparent,#2698ff 25%,#25dbb0 65%,transparent);opacity:.5}.statsPanelHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.statsPanelHead small{display:block;font-size:7px;font-weight:950;letter-spacing:.11em;color:#78869b}.statsPanelHead h3{margin:4px 0 0;font-size:14px;color:#213149}.statsPanelHead>span{font-size:9px;color:#7d899c;font-weight:800;white-space:nowrap}.statsPanelHead>span.statsPositive{color:#13966c;font-size:18px}.statsPanelHead>span.statsNegative{color:#d34950;font-size:18px}.statsWide{grid-column:span 2}.statsMapPanel{grid-row:span 2}.riskPanel{min-height:315px}.statsStatusPanel{min-height:310px}

/* precise Spain map: mainland + Balearic + Canary Islands, no Morocco */
.digitalMap{display:grid;grid-template-columns:165px minmax(0,1fr);gap:18px;align-items:center;min-height:485px}.cityMiniList{align-self:center;padding:12px 13px;border:1px solid #dfe7f1;border-radius:14px;background:linear-gradient(180deg,#fbfdff,#f5f9fe);box-shadow:0 7px 18px rgba(31,58,95,.055)}.cityMiniList>b{display:block;margin-bottom:10px;font-size:10px;color:#304158}.cityMiniList>div{display:grid;grid-template-columns:8px 1fr auto;gap:7px;align-items:center;padding:5px 0;font-size:9px}.cityMiniList i{width:7px;height:7px;border-radius:50%;background:#1c94ff;box-shadow:0 0 8px rgba(28,148,255,.55)}.cityMiniList span{color:#647185;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cityMiniList strong{color:#213149}.mapImageWrap{position:relative;width:100%;display:flex;align-items:center;justify-content:center}.mapImageWrap img{display:block;width:min(100%,720px);height:auto;max-height:480px;object-fit:contain;filter:saturate(.58) contrast(.94) brightness(1.06) drop-shadow(0 10px 22px rgba(53,91,135,.12));opacity:.92}.vehicleMapPoint{position:absolute;width:var(--size);height:var(--size);margin-left:calc(var(--size)/-2);margin-top:calc(var(--size)/-2);border-radius:50%;background:radial-gradient(circle at 35% 30%,#69cfff 0,#168ff8 45%,#0870dc 100%);border:2px solid #fff;box-shadow:0 0 0 2px rgba(44,149,255,.2),0 0 18px rgba(20,134,240,.55);display:grid;place-items:center;transform:translate(-50%,-50%);z-index:3}.vehicleMapPoint:after{content:'';position:absolute;inset:-7px;border:1px solid rgba(45,157,255,.22);border-radius:50%;animation:mapPulse 2.2s infinite}.vehicleMapPoint b{font-size:10px;color:#fff;line-height:1}.vehicleMapPoint em{display:none;position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);padding:6px 8px;border-radius:8px;background:#12223b;color:#fff;font-size:8px;font-style:normal;white-space:nowrap;box-shadow:0 7px 18px rgba(16,32,55,.22)}.vehicleMapPoint:hover em{display:block}.mapSource{margin-top:5px;text-align:center;font-size:7px;color:#a0a8b4}@keyframes mapPulse{0%,100%{transform:scale(.85);opacity:.55}50%{transform:scale(1.2);opacity:0}}

/* digital rings */
.statsCenterGauge{display:grid;place-items:center;min-height:262px}.digitalGauge{position:relative;width:190px;height:190px}.digitalGauge svg{width:100%;height:100%;transform:rotate(-90deg)}.dgTrack2{fill:none;stroke:#eaf0f7;stroke-width:3;stroke-dasharray:3 6}.dgTrack{fill:none;stroke:#e4ebf4;stroke-width:15}.dgArc{fill:none;stroke-width:15;stroke-linecap:round}.dgCore{fill:#fff;stroke:#eef2f7;stroke-width:1}.digitalGaugeValue{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.digitalGaugeValue strong{font-size:27px;color:#1f2f47}.digitalGaugeValue span{margin-top:2px;font-size:8px;font-weight:850;color:#77859a}.digitalGaugeCaption{margin-top:4px;text-align:center;font-size:8.5px;color:#8a95a5}
.digitalDonutWrap{display:grid;grid-template-columns:170px 1fr;gap:17px;align-items:center;min-height:245px}.digitalDonut{width:165px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 24px rgba(45,141,246,.11)}.digitalDonutInner{width:118px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 58%,#f4f8fd 100%);box-shadow:inset 0 0 0 1px #e6ecf4;display:grid;align-content:center;justify-items:center}.digitalDonutInner strong{font-size:25px;color:#1d2c42}.digitalDonutInner span{font-size:8px;color:#8792a2}.digitalLegend{display:flex;flex-direction:column;gap:9px}.digitalLegend>div{display:grid;grid-template-columns:9px 1fr auto auto;gap:7px;align-items:center;font-size:9px}.digitalLegend i{width:8px;height:8px;border-radius:50%}.digitalLegend span{color:#566377}.digitalLegend b{color:#223149}.digitalLegend em{font-style:normal;color:#8d98a7;min-width:22px;text-align:right}

/* contract and trend charts */
.contractHead{margin-bottom:7px}.miniPeriodTabs{width:max-content;margin-bottom:10px;border-radius:10px;box-shadow:none}.miniPeriodTabs button{padding:7px 10px;font-size:8px}.contractSummary{display:flex;gap:18px;margin-bottom:4px}.contractSummary span{font-size:8px;color:#8b96a5}.contractSummary b{font-size:16px;color:#1e2e46;margin-right:4px}.digitalBarChart,.digitalAreaChart{width:100%;height:auto;display:block}.chartGrid{stroke:#e8edf4;stroke-width:1}.digitalBarChart text,.digitalAreaChart text{font-size:8px;fill:#7c899b}.contractIn{fill:#20d5a4;filter:drop-shadow(0 0 4px rgba(32,213,164,.3))}.contractOut{fill:#ff4e5c;filter:drop-shadow(0 0 4px rgba(255,78,92,.28))}.billingPanel{min-height:310px}

/* risk gauge */
.riskDigital{display:grid;grid-template-columns:1.2fr .8fr;gap:20px;align-items:center;min-height:240px}.riskDial{position:relative;width:220px;height:130px;margin:auto;overflow:hidden}.riskScale{position:absolute;left:10px;top:12px;width:200px;height:200px;border-radius:50%;background:conic-gradient(from 225deg,#1fd69d 0 17%,#69dc70 17% 28%,#ffd042 28% 38%,#ff8a3d 38% 47%,#ff4b56 47% 50%,transparent 50% 100%);filter:drop-shadow(0 0 8px rgba(38,184,145,.18))}.riskScale:after{content:'';position:absolute;inset:17px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1px #e7edf4}.riskNeedle{position:absolute;z-index:4;width:86px;height:3px;background:linear-gradient(90deg,#0d315a,#2f7bc6);left:50%;bottom:15px;transform-origin:0 50%;border-radius:3px;box-shadow:0 0 7px rgba(44,107,175,.3)}.riskHub{position:absolute;z-index:5;width:14px;height:14px;border-radius:50%;background:#123a64;left:calc(50% - 7px);bottom:9px;box-shadow:0 0 0 5px rgba(30,99,163,.10)}.riskRead{position:absolute;z-index:6;left:0;right:0;bottom:20px;text-align:center}.riskRead strong{display:block;font-size:28px;color:#203047}.riskRead span{display:block;font-size:8px;color:#8290a2}.riskSide{display:flex;flex-direction:column;gap:10px}.riskSide>div{padding:10px 11px;border:1px solid #e1e8f1;border-radius:11px;background:#fbfdff}.riskSide span{display:block;font-size:8px;color:#8792a2}.riskSide b{display:block;margin-top:3px;font-size:12px;color:#22324a}

/* horizontal closure bars */
.digitalHbars{display:flex;flex-direction:column;gap:11px;padding:6px 1px}.digitalHbar{display:flex;flex-direction:column;gap:5px}.hbarLabel{display:flex;align-items:center;justify-content:space-between;font-size:9px}.hbarLabel span{color:#5e6c80}.hbarLabel b{color:#213149}.hbarTrack{height:9px;border-radius:999px;background:#edf2f7;overflow:hidden;box-shadow:inset 0 1px 2px rgba(29,52,84,.05)}.hbarTrack i{display:block;height:100%;border-radius:999px;box-shadow:0 0 9px rgba(35,147,255,.18)}.statsEmpty{min-height:170px;display:grid;place-items:center;color:#8a95a5;font-size:10px;text-align:center}.originNote{margin-top:6px;font-size:7px;color:#9aa4b2;text-align:center}

/* responsive */
@media(max-width:1380px){.statsKpiGrid.digital{grid-template-columns:repeat(3,1fr)}.statsDashboardGrid.digital{grid-template-columns:1fr 1fr}.statsMapPanel{grid-row:auto;grid-column:span 2}.statsWide{grid-column:span 2}}@media(max-width:980px){.statsHeroDigital{flex-direction:column}.statsKpiGrid.digital{grid-template-columns:1fr 1fr}.statsDashboardGrid.digital{grid-template-columns:1fr}.statsMapPanel,.statsWide{grid-column:auto}.digitalMap{grid-template-columns:1fr}.cityMiniList{display:none}.digitalDonutWrap,.riskDigital{grid-template-columns:1fr}.statsTopControls{width:100%}}@media(max-width:650px){.statsKpiGrid.digital{grid-template-columns:1fr}.statsPeriodTabs{width:100%;overflow:auto}.statsPeriodTabs button{flex:1;padding:9px 8px;font-size:8px}#statsManagerFilter{width:100%}.mapImageWrap img{max-height:350px}.statsPanel.digital{padding:12px}}

/* 20260924 advanced analytics */
.digitalAreaChart .pointValue{font-size:7px;fill:#2b3d55;font-weight:850;paint-order:stroke;stroke:#fff;stroke-width:2.5px;stroke-linejoin:round}
.dualLegend{display:flex;justify-content:flex-end;gap:16px;margin:-3px 4px 5px;font-size:8px;color:#69778c}.dualLegend span{display:flex;align-items:center;gap:6px}.dualLegend i{width:18px;height:3px;border-radius:999px}.dualLegend i.investment{background:#2d95ff;box-shadow:0 0 8px rgba(45,149,255,.35)}.dualLegend i.ganvam{background:#24d7aa;box-shadow:0 0 8px rgba(36,215,170,.35)}
.dualLineChart .investmentLine,.dualLineChart .ganvamLine{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.dualLineChart .investmentLine{stroke:#2d95ff;filter:drop-shadow(0 0 3px rgba(45,149,255,.26))}.dualLineChart .ganvamLine{stroke:#24d7aa;filter:drop-shadow(0 0 3px rgba(36,215,170,.26))}.dualLineChart .investmentDot{fill:#fff;stroke:#2d95ff;stroke-width:2}.dualLineChart .ganvamDot{fill:#fff;stroke:#24d7aa;stroke-width:2}
.investmentPanel{min-height:315px}

/* 20260924 point labels + annual average fee */
.dualLineChart .investmentPointValue,.dualLineChart .ganvamPointValue{font-size:7px;font-weight:900;paint-order:stroke;stroke:#fff;stroke-width:2.4px;stroke-linejoin:round}
.dualLineChart .investmentPointValue{fill:#287fd9}.dualLineChart .ganvamPointValue{fill:#139a77}
.avgFeePanel{min-height:310px}

/* 20260924 dense statistics distribution: no empty grid cells */
.statsDashboardGrid.digital{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  grid-template-areas:
    "map map map map map map unpaid unpaid unpaid product product product"
    "map map map map map map leads leads leads contract contract contract"
    "invest invest invest invest invest invest billing billing billing billing billing billing"
    "avg avg avg avg avg avg close close close origin origin origin"
    "impago impago impago impago impago impago age age age status status status";
  gap:12px;
  align-items:stretch;
}
.statsDashboardGrid.digital>.statsPanel{height:100%;box-sizing:border-box}
.statsMapPanel{grid-area:map;min-height:620px}
.statsUnpaidPanel{grid-area:unpaid;min-height:300px}
.statsProductPanel{grid-area:product;min-height:300px}
.statsLeadsPanel{grid-area:leads;min-height:300px}
.statsContractPanel{grid-area:contract;min-height:300px}
.investmentPanel{grid-area:invest;min-height:325px}
.billingPanel{grid-area:billing;min-height:325px}
.avgFeePanel{grid-area:avg;min-height:325px}
.statsClosePanel{grid-area:close;min-height:315px}
.statsOriginPanel{grid-area:origin;min-height:315px}
.statsAgePanel{grid-area:age;min-height:315px}
.statsStatusPanel{grid-area:status;min-height:315px}
.impagoEvolutionPanel{grid-area:impago;min-height:315px}
.statsDashboardGrid.digital>.investmentPanel{grid-area:invest}
.statsDashboardGrid.digital>.billingPanel{grid-area:billing}
.statsDashboardGrid.digital>.avgFeePanel{grid-area:avg}
.statsMapPanel .digitalMap{min-height:540px}
.statsClosePanel .digitalDonutWrap,.statsOriginPanel .digitalDonutWrap,.statsAgePanel .digitalDonutWrap,.statsStatusPanel .digitalDonutWrap{min-height:245px}
@media(max-width:1380px){
  .statsDashboardGrid.digital{
    grid-template-columns:repeat(6,minmax(0,1fr));
    grid-template-areas:
      "map map map map map map"
      "unpaid unpaid unpaid product product product"
      "leads leads leads contract contract contract"
      "invest invest invest billing billing billing"
      "avg avg avg close close close"
      "origin origin origin age age age"
      "impago impago impago status status status";
  }
  .statsMapPanel{min-height:520px}
  .statsMapPanel .digitalMap{min-height:445px}
}
@media(max-width:980px){
  .statsDashboardGrid.digital{
    grid-template-columns:1fr;
    grid-template-areas:
      "map"
      "unpaid"
      "product"
      "leads"
      "contract"
      "invest"
      "billing"
      "avg"
      "close"
      "origin"
      "impago"
      "age"
      "status";
  }
  .statsMapPanel,.statsUnpaidPanel,.statsProductPanel,.statsLeadsPanel,.statsContractPanel,.investmentPanel,.billingPanel,.avgFeePanel,.statsClosePanel,.statsOriginPanel,.impagoEvolutionPanel,.statsAgePanel,.statsStatusPanel{min-height:auto}
}

/* 20260924 impago regularization chart */
.commissionLegend i.commission{background:#ff9b3f;box-shadow:0 0 8px rgba(255,155,63,.35)}
.commissionLegend i.days{background:#7c65ff;box-shadow:0 0 8px rgba(124,101,255,.35)}
.commissionBar{fill:#ff9b3f;filter:drop-shadow(0 0 4px rgba(255,155,63,.25))}
.daysLine{fill:none;stroke:#7c65ff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(124,101,255,.25))}
.daysDot{fill:#fff;stroke:#7c65ff;stroke-width:2}
.commissionValue,.daysValue{font-size:7px;font-weight:900;paint-order:stroke;stroke:#fff;stroke-width:2.2px;stroke-linejoin:round}
.commissionValue{fill:#c66c17}.daysValue{fill:#654bd4}
