:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,Segoe UI,Roboto,sans-serif}html{min-height:100%}html[data-theme=light]{color:#0f172a;background:#f4f7fb}html[data-theme=dark]{color:#eef4ff;background:#111827}body{background:inherit;min-width:320px;min-height:100svh;color:inherit;margin:0}#root{box-sizing:border-box;width:100%;min-height:100svh}button,input,select,textarea{font:inherit}*{box-sizing:border-box}main{--page-bg:#f4f7fb;--surface:#fff;--surface-elevated:#fff;--text-main:#0f172a;--text-muted:#475569;--border-soft:#d9e2ec;--accent-main:#07a;--accent-soft:#e6f5fb;--chart-grid:#d9e2ec;width:100%;min-height:100vh;color:var(--text-main);background:var(--page-bg);margin:0;padding:24px clamp(16px,2vw,40px) 48px;font-family:system-ui,sans-serif}main[data-theme=dark]{--page-bg:#111827;--surface:#182235;--surface-elevated:#1f2a40;--text-main:#eef4ff;--text-muted:#aeb9cc;--border-soft:#334155;--accent-main:#38bdf8;--accent-soft:#38bdf829;--chart-grid:#334155}.app-shell{width:100%;max-width:2400px;margin:0 auto}main h1,main h2,main h3{color:var(--text-main)}main p,main li,main span,main label,main td,main th{color:inherit}button,input{font:inherit}.app-header{text-align:left;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:28px;padding:8px 0 4px;display:flex}.app-eyebrow{color:var(--accent-main);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;font-size:.9rem;font-weight:700}.app-header h1{letter-spacing:-.06em;margin:0 0 8px;font-size:clamp(2.4rem,4vw,4.2rem);line-height:.95}.app-subtitle{max-width:760px;color:var(--text-muted);font-size:1rem;line-height:1.45}.app-header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.view-switcher{border:1px solid var(--border-soft);background:var(--surface);border-radius:999px;gap:6px;padding:4px;display:inline-flex}.view-switcher button{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:8px 12px;font-weight:700}.view-switcher button.active{background:var(--accent-soft);color:var(--text-main)}.view-switcher button:hover{color:var(--text-main)}.theme-toggle{border:1px solid var(--border-soft);background:var(--surface);color:var(--text-main);cursor:pointer;border-radius:999px;padding:10px 14px;font-weight:600;transition:background .15s,border-color .15s,transform .15s}.theme-toggle:hover{border-color:var(--accent-main);transform:translateY(-1px)}.dashboard-card,.dashboard-controls>section,.dashboard-sidebar>section{border:1px solid var(--border-soft);background:var(--surface);color:var(--text-main);text-align:left;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;margin-bottom:24px;padding:20px;box-shadow:0 14px 30px #0f172a14}main[data-theme=dark] .dashboard-card,main[data-theme=dark] .dashboard-controls>section,main[data-theme=dark] .dashboard-sidebar>section{box-shadow:0 18px 40px #00000040}.dashboard-card h2,.dashboard-controls h2,.dashboard-sidebar h2{color:var(--text-main);letter-spacing:-.02em;margin-bottom:14px;font-size:1.1rem;font-weight:700}.dashboard-card p,.dashboard-controls p,.dashboard-sidebar p{color:var(--text-muted)}.dashboard-controls{grid-template-columns:minmax(0,1fr) clamp(300px,22vw,460px);align-items:start;gap:clamp(20px,2vw,36px);margin-bottom:32px;display:grid}.dashboard-layout{grid-template-columns:minmax(0,1fr) clamp(340px,22vw,460px);align-items:start;gap:clamp(20px,2vw,36px);display:grid}.dashboard-main{min-width:0}.dashboard-sidebar{scrollbar-width:thin;scrollbar-color:var(--border-soft) transparent;max-height:calc(100vh - 48px);position:sticky;top:24px;overflow:auto}.dashboard-sidebar::-webkit-scrollbar{width:8px}.dashboard-sidebar::-webkit-scrollbar-track{background:0 0}.dashboard-sidebar::-webkit-scrollbar-thumb{background:var(--border-soft);border-radius:999px}.overview-hero{justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px;display:flex}.overview-hero h2{margin-bottom:8px}.overview-hero p{color:var(--text-muted)}.primary-action{border:1px solid var(--accent-main);background:var(--accent-soft);color:var(--text-main);cursor:pointer;white-space:nowrap;border-radius:999px;padding:12px 16px;font-weight:800}.primary-action:hover{border-color:var(--accent-main);transform:translateY(-1px)}.time-range-buttons,.chart-mode-buttons{flex-wrap:wrap;gap:8px;display:flex}.time-range-buttons{margin-bottom:16px}.time-range-buttons button,.chart-mode-buttons button,.unit-toolbar button,.plant-group summary button{border:1px solid var(--border-soft);background:var(--surface-elevated);color:var(--text-main);cursor:pointer;border-radius:6px;padding:8px 12px;transition:background .15s,border-color .15s,transform .15s}.time-range-buttons button:hover,.chart-mode-buttons button:hover,.unit-toolbar button:hover,.plant-group summary button:hover{border-color:var(--accent-main);transform:translateY(-1px)}.time-range-buttons button.active,.chart-mode-buttons button.active{border-color:var(--accent-main);background:var(--accent-soft);color:var(--text-main);box-shadow:inset 0 0 0 1px var(--accent-main);font-weight:600}.unit-toolbar button:disabled{opacity:.5;cursor:not-allowed;transform:none}.unit-toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.unit-toolbar p{color:var(--text-muted);margin:0 0 4px}.unit-search{box-sizing:border-box;border:1px solid var(--border-soft);background:var(--surface-elevated);width:100%;color:var(--text-main);border-radius:6px;margin-bottom:16px;padding:10px 12px}.unit-search::placeholder{color:var(--text-muted)}.plant-list{flex-direction:column;gap:8px;display:flex}.plant-group{border:1px solid var(--border-soft);background:var(--surface);color:var(--text-main);border-radius:8px;transition:border-color .15s,background .15s;overflow:hidden}.plant-group:hover{border-color:var(--accent-main)}.plant-group summary{cursor:pointer;background:var(--surface-elevated);min-height:44px;color:var(--text-main);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-weight:600;display:flex}.plant-group summary button{padding:6px 10px;font-weight:500}.plant-units{border-top:1px solid var(--border-soft);padding:10px 12px}.unit-row{cursor:pointer;align-items:center;gap:8px;margin-bottom:6px;padding:4px 0;display:flex}.unit-row input{cursor:pointer;accent-color:var(--accent-main)}.unit-row span{color:var(--text-main);font-size:.92rem}.dashboard-controls li{color:var(--text-main);margin-bottom:6px}.table-wrapper{width:100%;overflow-x:auto}.summary-table,.load-factor-table{border-collapse:collapse;border-radius:10px;width:100%;font-size:.95rem;overflow:hidden}.summary-table th,.summary-table td,.load-factor-table th,.load-factor-table td{border-bottom:1px solid var(--border-soft);text-align:left;white-space:nowrap;height:42px;padding:10px 12px}.summary-table th{width:45%;color:var(--text-muted);background:var(--surface-elevated);font-weight:600}.summary-table td{color:var(--text-main);background:var(--surface);font-weight:700}.load-factor-table th{color:var(--text-main);text-transform:uppercase;letter-spacing:.04em;background:var(--surface-elevated);font-size:.85rem;font-weight:600}.load-factor-table td{color:var(--text-muted)}.summary-table td,.load-factor-table td{font-variant-numeric:tabular-nums}.summary-table tr:last-child th,.summary-table tr:last-child td{border-bottom:none}.load-factor-table tbody tr{transition:background .12s}.load-factor-table tbody tr:hover{background:var(--accent-soft)}.chart-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.chart-header p{color:var(--text-muted);margin-top:4px}.chart-container{background:var(--surface);border-radius:12px;width:100%;height:400px;margin-top:24px;margin-bottom:24px;overflow:hidden}.recharts-cartesian-axis-tick text{fill:var(--text-muted)}.recharts-legend-item-text{color:var(--text-main)!important}.recharts-tooltip-wrapper{outline:none}.fleet-overview-summary{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.fleet-overview-card{border:1px solid var(--border-soft);background:var(--surface-elevated);border-radius:12px;padding:16px}.fleet-overview-label{color:var(--text-muted);margin-bottom:8px;font-size:.9rem;display:block}.fleet-overview-card strong{color:var(--text-main);font-size:1.1rem}.fleet-plant-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.plant-status-card{border:1px solid var(--border-soft);background:var(--surface-elevated);border-radius:12px;overflow:hidden}.plant-status-header{border-bottom:1px solid var(--border-soft);padding:12px 14px}.plant-status-header h3{color:var(--text-main);margin:0 0 4px;font-size:1rem}.plant-status-header p{color:var(--text-muted);margin:0;font-size:.9rem}.plant-unit-list{flex-direction:column;display:flex}.plant-unit-item{border-top:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.plant-unit-name{color:var(--text-main);font-size:.92rem}.plant-unit-item strong{font-size:.95rem}.plant-unit-item-running{border-left:4px solid #22c55e}.plant-unit-item-stopped{border-left:4px solid #ef4444}.plant-unit-item-unavailable{opacity:.8;border-left:4px solid #94a3b8}.france-map-panel{margin-bottom:24px}.france-map-header{margin-bottom:16px}.france-map-header p{color:var(--text-muted)}.france-map-canvas{aspect-ratio:976/1018;width:100%;max-width:900px;margin:0 auto;position:relative}.france-map-background{object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;display:block}.plant-map-marker{z-index:2;place-items:center;display:grid;position:absolute;transform:translate(-50%,-50%)}.plant-map-pie{cursor:pointer;border:3px solid #fde68a;border-radius:999px;transition:transform .15s,box-shadow .15s;box-shadow:0 8px 18px #00000052}.plant-map-marker:hover .plant-map-pie{transform:scale(1.12);box-shadow:0 12px 26px #0000006b}.plant-map-tooltip{border:1px solid var(--border-soft);background:var(--surface);min-width:230px;color:var(--text-main);opacity:0;pointer-events:none;z-index:10;border-radius:10px;padding:10px 12px;font-size:.82rem;line-height:1.45;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%);box-shadow:0 12px 28px #00000052}.plant-map-tooltip strong{color:var(--text-main);font-size:.9rem}.plant-map-marker:hover .plant-map-tooltip{opacity:1;transform:translate(-50%)translateY(-4px)}@media (width<=1100px){main{padding:16px 12px 32px}.dashboard-layout,.dashboard-controls{grid-template-columns:1fr}.dashboard-sidebar{max-height:none;position:static;overflow:visible}.fleet-overview-summary{grid-template-columns:repeat(2,1fr)}}@media (width<=900px){.app-header-actions{justify-content:flex-start}.overview-hero{flex-direction:column;align-items:flex-start}.plant-map-pie{border-width:2px}}@media (width<=700px){.chart-header{flex-direction:column}.fleet-overview-summary{grid-template-columns:1fr}}@media (width<=600px){.france-map-canvas{max-width:100%}}
