/* Overview components. Shell and login styles are defined in app.css. */
.overview{--green:#07594c;--gold:#c08a20;--muted:#647870;--line:#dce6df;color:#163e34;min-width:0;font-family:Roboto,Arial,sans-serif;}
.overview *{box-sizing:border-box;}
.ov-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:26px 0;}
.ov-heading h2{font-size:clamp(25px,2.5vw,36px);margin:5px 0;letter-spacing:-1px;}
.ov-heading p{margin:6px 0;color:var(--muted);}
.ov-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:1.7px;font-weight:800;color:var(--muted);}
.ov-health-badge{display:flex;align-items:center;gap:16px;max-width:260px;}
.ov-health-badge>strong{border:5px solid #c6d7cd;border-radius:50%;min-width:88px;height:88px;display:flex;align-items:center;justify-content:center;font-size:28px;}
.ov-health-badge small{font-size:12px;}
.ov-health-badge>span{font-weight:700;font-size:14px;}
.ov-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.ov-kpi,.ov-panel{background:#fff;border:1px solid var(--line);border-radius:18px;min-width:0;}
.ov-kpi{border-top:3px solid #88a99a;padding:14px 16px;}
.ov-kpi h3{line-height:1.5;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:0;font-size:12px;margin:0 0 8px;}
.ov-number{display:block;letter-spacing:-.7px;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:23px;}
.ov-kpi p{font-size:11px;line-height:1.6;margin:10px 0 0;color:var(--muted);margin-top:6px;}
.overview .good{color:#087353;}
.overview .bad{color:#b32741;}
.overview .neutral{color:var(--muted);}
.ov-main-grid{display:grid;gap:18px;margin-top:22px;grid-template-columns:minmax(0,1fr);}
.ov-panel{padding:18px;}
.ov-panel h3{font-size:17px;margin:0 0 20px;letter-spacing:-.3px;}
.ov-panel-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:18px;}
.ov-panel-head h3{margin:0;}
.ov-tabs{display:flex;flex-wrap:wrap;gap:4px;}
.ov-tabs button{padding:10px 12px;border:0;border-radius:8px;background:#f0f4f1;color:#52685c;min-height:44px;}
.ov-tabs button[aria-pressed=true]{background:#07594c;color:white;}
.ov-legend{display:flex;gap:16px;flex-wrap:wrap;margin:10px 0 16px;font-size:12px;}
.ov-legend span{display:flex;align-items:center;gap:6px;}
.ov-legend i,.ov-mix-list i{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.ov-line{display:block;height:auto;min-width:0;width:100%;max-height:380px;}
.ov-line text{font:12px Arial;fill:#647870;}
.ov-line circle{cursor:pointer;touch-action:manipulation;}
.ov-chart-scroll{overflow-x:auto;}
.ov-values{margin-top:12px;}
.ov-values summary,.ov-explanation summary,.ov-sources summary{cursor:pointer;padding:14px 0;font-size:12px;font-weight:bold;min-height:44px;}
.ov-table-scroll{overflow-x:auto;max-width:100%;}
.ov-table-scroll table{border-collapse:collapse;font-size:12px;white-space:nowrap;min-width:100%;}
.ov-table-scroll caption{text-align:left;padding:10px;color:var(--muted);}
.ov-table-scroll th,.ov-table-scroll td{padding:12px;border-bottom:1px solid var(--line);text-align:right;}
.ov-table-scroll th:first-child{text-align:left;}
.ov-targets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:20px;padding:18px;border-radius:12px;background:#f2f6f3;}
.ov-targets span{font-size:10px;color:var(--muted);display:block;line-height:1.5;min-height:30px;}
.ov-targets strong{display:block;font-size:15px;margin-top:6px;font-variant-numeric:tabular-nums;}
.ov-target-progress{font-size:11px;margin-top:18px;}
.overview progress{display:block;width:100%;height:8px;border:0;border-radius:10px;overflow:hidden;accent-color:#07594c;margin-top:10px;}
.overview progress::-webkit-progress-bar{background:#e4ece7;}
.overview progress::-webkit-progress-value{background:#07594c;}
.ov-footnote{font-size:11px;line-height:1.7;color:var(--muted);margin:18px 0 0;}
.ov-year-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0;}
.ov-year-pair>div{background:#f1f5f2;border-radius:12px;padding:12px;}
.ov-year-pair>div+div{background:#faf5e9;}
.ov-year-pair span{font-size:12px;display:block;margin-bottom:5px;}
.ov-year-pair strong{font-variant-numeric:tabular-nums;font-size:21px;}
.ov-movement{display:flex;flex-direction:column;margin:12px 0;gap:4px;}
.ov-movement strong{font-size:23px;}
.ov-movement span{font-size:13px;}
.ov-drivers{list-style:none;padding:0;margin:10px 0;}
.ov-drivers li{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;border-top:1px solid var(--line);font-size:12px;padding:9px 0;}
.ov-commercial-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:18px;margin-top:18px;}
.ov-mix-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;}
.ov-mix-year{min-width:0;}
.ov-mix-year h3{text-align:center;font-size:16px;margin:12px;}
.ov-donut{display:block;width:min(100%,210px);margin:auto;}
.ov-donut text{font:13px Arial;fill:#52685c;}
.ov-donut circle[data-tip]{cursor:pointer;}
.ov-mix-total{text-align:center;display:block;font-size:21px;margin:10px 0 20px;font-variant-numeric:tabular-nums;}
.ov-mix-list{list-style:none;padding:0;margin:0;}
.ov-mix-list li{display:grid;grid-template-columns:1fr auto;gap:5px;font-size:11px;padding:10px 0;border-top:1px solid var(--line);}
.ov-mix-list span{display:flex;align-items:center;gap:7px;}
.ov-mix-list small{grid-column:2;text-align:right;color:var(--muted);}
.ov-score{display:flex;align-items:center;gap:14px;padding:16px 0 24px;}
.ov-score strong{font-size:36px;letter-spacing:-1px;}
.ov-score span{font-size:12px;color:var(--muted);}
.ov-score-row{margin-bottom:19px;}
.ov-score-row>div{display:flex;justify-content:space-between;gap:10px;font-size:12px;}
.ov-explanation p,.ov-sources p{font-size:12px;line-height:1.8;color:var(--muted);}
.ov-insights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:18px;}
.ov-insight{border-top:3px solid #85ad97;}
.ov-insight.bad{border-top-color:#bc3651;}
.ov-insight.action{border-top-color:#c08a20;}
.ov-insight ul{padding:0;list-style:none;margin:0;}
.ov-insight li{padding:13px 0;border-top:1px solid var(--line);font-size:12px;color:#264e41;line-height:1.6;}
.ov-insight li strong{display:block;margin-top:6px;font-size:17px;}
.ov-insight li p{color:var(--muted);margin-bottom:0;}
.ov-notice{padding:14px 18px;border:1px solid #e6d8b9;background:#faf5e9;color:#6a5527;font-size:12px;line-height:1.7;border-radius:12px;}
.ov-sources{margin-top:18px;border-top:1px solid var(--line);}
.ov-tooltip{position:fixed;z-index:1000;background:#103e32;color:white;padding:12px 15px;border-radius:9px;max-width:250px;font-size:13px;pointer-events:none;box-shadow:0 4px 18px #0002;}
.ov-loading,.ov-error{padding:40px;background:white;border:1px solid #dce6df;border-radius:18px;}
.ov-empty{color:#647870;font-size:13px;line-height:1.7;}
.overview :focus-visible{outline:3px solid #c08a20;outline-offset:4px;}
.ov-status{display:grid;place-items:center;width:24px;height:24px;flex-shrink:0;border-radius:50%;background:#edf5f0;font:700 15px Arial;}
.ov-status.bad{background:#fceff1;}
.ov-health-badge>strong.ov-health-ring{position:relative;border:0;background:conic-gradient(#07594c var(--score),#dce6df 0);width:88px;min-width:88px;height:88px;}
.ov-health-ring::before{content:"";position:absolute;inset:5px;border-radius:50%;background:#f5f8f6;}
.ov-health-ring>span{position:relative;font-size:26px;}
.ov-chart-scroll::before{display:none;}
.ov-line path{stroke-width:2.5px;}
.ov-donut text.ov-donut-year{font:700 24px Montserrat,Arial,sans-serif;}
.ov-venues{margin-top:18px;}
.ov-venues small{display:block;margin-top:4px;}
.ov-venues th:first-child{text-align:left;}
.ov-venues tbody tr:hover{background:#f1f6f3;}

@media(hover:hover){.ov-tabs button:hover{background:#e1ebe5}.ov-tabs button[aria-pressed=true]:hover{background:#104538}}
@media(max-width:1150px){.ov-commercial-grid{grid-template-columns:minmax(0,1fr)}.ov-insights{grid-template-columns:minmax(0,1fr)}}
@media(max-width:800px){.ov-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.ov-kpis{grid-template-columns:1fr}.ov-number{font-size:25px}.ov-kpi{padding:13px 16px}.ov-kpi p{font-size:12px}.ov-heading{margin:18px 0;flex-direction:column;align-items:flex-start;gap:14px}.ov-heading h2{font-size:25px}.ov-health-badge>strong.ov-health-ring{min-width:72px;width:72px;height:72px}.ov-health-ring>span{font-size:23px}.ov-line{min-width:0;max-height:none}.ov-year-pair strong{font-size:18px}.ov-targets{grid-template-columns:repeat(2,minmax(0,1fr));padding:14px;gap:14px}.ov-targets strong{overflow-wrap:anywhere}.ov-targets span{font-size:11px}.ov-legend{gap:10px;font-size:11px}.ov-panel{padding:14px}.ov-tabs button{padding:10px;font-size:12px}.ov-mix-grid{grid-template-columns:1fr;gap:26px}.ov-mix-list li{font-size:13px}.ov-score strong{font-size:32px}}
@media(max-width:360px){.ov-number{font-size:23px}.ov-targets{grid-template-columns:1fr}}

/* Chart interaction and quiet KPI status colours. */
.overview .ov-status.good{background:#219653}
.overview .ov-status.bad{background:#d83240}
.ov-month-hit{cursor:crosshair;touch-action:pan-y}
.ov-month-hit:hover,.ov-month-hit:focus{fill:#0c332f0a;outline:none}
.ov-tooltip{white-space:pre-line;line-height:1.6}

.overview .ov-status{width:12px;height:12px;border-radius:50%}.overview .ov-status.neutral{background:#ccd5d1}

.ov-line,.ov-donut{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.ov-line{touch-action:pan-y pinch-zoom}.ov-donut{touch-action:none}
.ov-month-hit{touch-action:pan-y pinch-zoom}.ov-month-hit.is-selected{fill:#0c332f0a}
.ov-donut [data-tip].is-selected{filter:brightness(1.1)}
.ov-venues .ov-table-scroll{position:relative;isolation:isolate}
.ov-venues table{border-collapse:separate;border-spacing:0}
.ov-venues th:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:2px 0 0 #dce6df;min-width:145px}
.ov-venues thead th:first-child{z-index:3}
.ov-venues tbody tr:hover th:first-child{background:#f1f6f3}

.ov-mix-adjustment strong,.ov-mix-adjustment small{color:#b42318!important}.ov-mix-note{font-size:11px;line-height:1.5;color:#647870;margin:12px 0 0}
