@font-face{font-family:"Work Sans";src:url("/fonts/WorkSans-Variable.ttf") format("truetype");font-weight:100 900;font-display:swap}
:root{--red:rgb(232,68,73);--charcoal:rgb(60,60,60);--white:rgb(255,255,255);--light:rgb(244,244,244);--pale:rgb(138,138,138);--black:rgb(32,32,32);--zonos:rgb(81,82,81)}
*{box-sizing:border-box}body{margin:0;background:var(--light);color:var(--charcoal);font-family:"Work Sans",sans-serif;font-size:14px}#sidebar{position:fixed;inset:0 auto 0 0;width:304px;background:var(--black);color:var(--white);display:flex;flex-direction:column}.logo-space{padding:64px;background:rgb(0,0,0)}.logo-space img{display:block;width:176px;height:auto}nav{padding:28px 24px}nav a{display:block;padding:17px 18px;margin:4px 0;color:var(--white);text-decoration:none;border-left:3px solid transparent;font-size:17px}nav a.active{border-color:var(--red);background:var(--charcoal);font-weight:700}.sidebar-foot{margin-top:auto;padding:28px 42px;line-height:1.9;font-size:13px}main{margin-left:304px;padding:28px 32px;max-width:1900px}header{display:flex;align-items:center;gap:20px;margin-bottom:24px}h1{font-size:29px;margin:0;color:var(--black);font-weight:500}h2{font-size:19px;margin:0;font-weight:500;color:var(--black)}.eyebrow{font-size:11px;letter-spacing:1.5px;margin:0 0 6px}#health{margin-left:auto;font-size:12px}#menu{display:none}.toolbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:20px}label{display:flex;flex-direction:column;gap:7px;font-size:12px}input,select,button{font:inherit;min-height:40px;padding:9px 12px;border:1px solid var(--pale);border-radius:0;color:var(--charcoal);background:var(--white)}button{cursor:pointer;background:var(--red);color:var(--white);border-color:var(--red);font-size:19px;font-weight:700}button.secondary{background:var(--white);border-color:var(--pale);color:var(--charcoal);font-size:14px;font-weight:500}button:disabled{cursor:default;opacity:.5}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--charcoal);outline-offset:3px}.chart-card{background:var(--white);border:1px solid var(--light);margin-bottom:16px}.card-head{padding:18px 22px 8px;display:flex;gap:12px;align-items:center;justify-content:space-between}.card-head span{font-size:11px}.legend{display:flex;gap:18px;flex-wrap:wrap;padding:6px 22px;font-size:11px}.legend span:before{content:"";display:inline-block;width:22px;border-top:3px solid var(--charcoal);margin-right:7px;vertical-align:middle}.legend .frozen:before{border-color:var(--red)}.legend .future:before{border-color:var(--zonos);border-top-style:dashed}.legend .band:before{border-width:8px;border-color:rgba(232,68,73,.18)}.chart-wrap{width:100%;overflow:hidden}svg{display:block;width:100%;height:330px;touch-action:none;cursor:grab;user-select:none}#error-chart{height:205px}svg.dragging{cursor:grabbing}svg text{font-family:"Work Sans",sans-serif;fill:var(--charcoal);font-size:11px}.hint{font-size:12px;line-height:1.7}details{background:var(--white);padding:18px;margin-top:22px}summary{cursor:pointer;font-weight:500;font-size:17px}.table-scroll{overflow-x:auto;background:var(--white);margin-top:14px}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:12px;text-align:right;border-bottom:1px solid var(--light);white-space:nowrap}th{background:var(--light);font-weight:500}td:first-child,th:first-child{text-align:left}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:14px}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:20px 0}.stat{background:var(--white);padding:20px;min-width:0}.stat p{font-size:11px;margin:0 0 15px}.stat strong{font-size:27px;font-weight:500;color:var(--black)}.stat small{display:block;line-height:1.6;margin-top:12px;overflow-wrap:anywhere}#runs h2,#settings h2{margin:25px 0 15px}#message{background:var(--white);border-left:3px solid var(--red);padding:14px;margin-bottom:20px}footer{margin-top:36px;font-size:11px;color:var(--zonos)}#tooltip{position:fixed;z-index:30;pointer-events:none;background:var(--white);border:1px solid var(--pale);padding:12px;font-size:12px;line-height:1.7;max-width:270px}#admin-key{max-width:380px}#job-list p{padding:12px;background:var(--white)}
.device-control,.register-control{display:flex;align-items:end;gap:8px}.device-control{flex:0 1 190px;min-width:150px}.register-control{flex:0 1 320px;min-width:180px}.device-control label,.register-control label{flex:1;min-width:0}.device-control select,.register-control select{width:100%;min-width:0}.register-control button{flex:0 0 auto;min-height:40px;padding:9px 12px;font-size:14px;font-weight:500}.register-status{margin:-12px 0 16px}.register-status[data-state="error"]{padding-left:8px;border-left:3px solid var(--red)}
@media(max-width:1100px){main{padding:22px 20px;margin-left:304px}.card-head{align-items:start;flex-direction:column}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.error-plot{position:relative}.error-toggle{position:absolute;right:20px;top:2px;display:flex;gap:0}.error-toggle button{background:var(--white);color:var(--charcoal);border-color:var(--pale);min-height:26px;padding:4px 8px;font-size:11px;font-weight:500}.error-toggle button+button{border-left:0}.error-toggle button[aria-pressed="true"]{background:var(--charcoal);color:var(--white);border-color:var(--charcoal)}
.product-name{margin:0 0 6px;color:var(--black);font-size:18px;font-weight:500}
/* Match ZCP's Bootstrap danger-button hover state while keeping the brand red at rest. */
button:not(.secondary):not(.table-sort):not([aria-pressed]):not(.source-choice-action):not(.source-choice-toggle){transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}
button:not(.secondary):not(.table-sort):not([aria-pressed]):not(.source-choice-action):not(.source-choice-toggle):hover:not(:disabled){background-color:#d23430;border-color:#c9302c}
@media(prefers-reduced-motion:reduce){button:not(.secondary):not(.table-sort):not([aria-pressed]):not(.source-choice-action):not(.source-choice-toggle){transition:none}}
#health-status{position:relative;margin-left:auto;flex-shrink:0}#health{display:inline-block;cursor:help}#health:focus-visible{outline:2px solid var(--charcoal);outline-offset:3px}#health-tooltip{position:absolute;top:100%;right:0;z-index:40;width:360px;max-width:calc(100vw - 24px);padding:12px;background:var(--white);border:1px solid var(--pale);box-shadow:0 3px 12px rgba(32,32,32,.12);font-size:12px;font-weight:400;line-height:1.7;white-space:pre-line;visibility:hidden}#health-status:not([data-dismissed="true"]):hover #health-tooltip,#health-status:not([data-dismissed="true"]):focus-within #health-tooltip{visibility:visible}
#sources .source-choice-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}#sources .source-choice-actions .source-choice-action{margin-top:0}#sources .new-source-connection{display:block;margin-top:8px;min-height:28px;padding:4px 8px;font-size:11px}
#sources .source-choice-header{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0}
#sources .source-choice-header h3{min-width:0}
#sources .source-choice-toggle{appearance:none;display:inline-flex;flex:0 0 44px;align-items:center;justify-content:flex-end;margin-top:0;min-width:44px;min-height:38px;padding:4px 0 4px 6px;border:0;border-radius:3px;background:transparent;color:#505050}
#sources .source-choice-toggle:hover:not(:disabled){background:transparent;color:var(--black)}
#sources .source-switch-track{position:relative;display:inline-flex;flex:0 0 38px;align-items:center;width:38px;height:22px;border-radius:999px;background:#b8b8b8;transition:background-color .18s ease-in-out}
#sources .source-switch-thumb{position:absolute;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.24);transform:translateX(0);transition:transform .18s ease-in-out}
#sources .source-choice-toggle[aria-checked="true"] .source-switch-track{background:var(--red)}
#sources .source-choice-toggle[aria-checked="true"] .source-switch-thumb{transform:translateX(16px)}
#sources .source-choice-toggle:hover:not(:disabled) .source-switch-track{filter:brightness(.94)}
#sources .source-choice-toggle:focus-visible{outline:2px solid var(--charcoal);outline-offset:3px}
@media(prefers-reduced-motion:reduce){#sources .source-switch-track,#sources .source-switch-thumb{transition:none}}
#sources .source-selection-help{margin:0 0 12px}
.heatmap-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:22px 0 12px}.heatmap-key{display:inline-flex;align-items:center;gap:8px;font-size:11px}.heatmap-gradient{display:inline-block;width:70px;height:12px;background:linear-gradient(to right,rgba(232,68,73,.08),rgba(232,68,73,.85))}.analytics-table-nav{display:grid;grid-template-columns:32px minmax(0,1fr) 32px;align-items:center;gap:8px}.analytics-table-nav.all-period{grid-template-columns:minmax(0,1fr)}.analytics-table-nav .table-scroll{margin-top:0;min-width:0}.period-arrow.secondary{min-width:0;padding:4px;min-height:48px;font-size:26px;font-weight:500}.period-arrow[hidden]{display:none}#heatmap td{border-bottom-color:var(--white)}#heatmap th:first-child{position:sticky;left:0;z-index:1}#heatmap tbody th{background:var(--white)}#heatmap[aria-busy="true"]{min-height:80px}
.brand-word{white-space:nowrap}.trademark{font-size:.5em;line-height:0;vertical-align:super;margin-left:1px;font-weight:500}
.chart-period-nav{margin:0 0 12px}.forecast-plots{display:grid;grid-template-columns:minmax(0,1fr);column-gap:8px}.forecast-plots>.chart-card{grid-column:1;min-width:0}.forecast-plots>.chart-card:first-of-type{grid-row:1}.forecast-plots>.chart-card:last-of-type{grid-row:2}.forecast-plots.calendar-period{grid-template-columns:32px minmax(0,1fr) 32px}.forecast-plots.calendar-period>.chart-card{grid-column:2}.forecast-plots>.period-arrow{grid-row:1;align-self:center;min-height:48px;font-size:12px}#chart-period-prev{grid-column:1}#chart-period-next{grid-column:3}#forecasts [hidden]{display:none}
.analytics-table-nav>.table-scroll{grid-column:2;grid-row:1}.analytics-table-nav.all-period>.table-scroll{grid-column:1}#analysis-prev{grid-column:1;grid-row:1}#analysis-next{grid-column:3;grid-row:1}#heatmap[aria-busy="true"]{opacity:.65}
#analytics{container-type:inline-size;container-name:analytics}#analytics .metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin:8px 0}#analytics .stat{padding:8px 10px;display:flex;flex-direction:column}#analytics .stat p{font-size:10.5px;line-height:1.25;min-height:0;margin:0 0 5px}#analytics .stat strong{font-size:clamp(16px,1.5vw,20px);line-height:1.25;margin-top:auto}#analytics .metric-unit{font-size:11px;font-weight:400}#analytics .heatmap-heading{margin-top:12px}#analytics-note{font-size:11px;margin:8px 0}
@container analytics (max-width:750px){#analytics .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@container analytics (max-width:360px){#analytics .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@supports not (container-type:inline-size){@media(min-width:801px) and (max-width:1100px),(max-width:774px){#analytics .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:410px){#analytics .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}}
@media(max-width:650px){#analytics .heatmap-heading{flex-direction:column;align-items:flex-start;gap:6px}}
.chart-wrap{position:relative}#chart-loading{position:absolute;right:20px;top:4px;margin:0;font-size:11px;background:var(--white);pointer-events:none}
.table-sort{display:inline-flex;align-items:center;gap:6px;width:100%;min-height:24px;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:500;text-align:left}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}
#runs .admin-job{padding:9px 12px;margin:6px 0;background:var(--white);font-size:12px;line-height:1.5}#runs .admin-job-scope{font-size:11px;margin-top:2px;overflow-wrap:anywhere}#runs .admin-job .admin-error{max-width:none;padding:0;margin:6px 0 0;overflow-wrap:anywhere}#runs .completed-jobs{padding:10px 12px;margin:8px 0 0;background:var(--white);font-size:12px}#runs .completed-jobs>summary{font-size:12px;line-height:1.5}
#settings{container-type:inline-size;container-name:settings}#settings .settings-heading{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:25px 0 15px}#settings .settings-heading h2{margin:0}#settings .settings-heading>span{font-size:12px;color:var(--zonos)}#settings #settings-form .settings-fields{display:grid;grid-template-columns:100px 125px 105px minmax(180px,220px) auto;align-items:start;margin:0 0 12px;gap:12px}#settings .settings-fields>label{min-width:0;line-height:16px}#settings .settings-fields input{width:100%;min-width:0}#settings #save-settings{margin-top:23px;justify-self:start}#settings .settings-help{display:flex;flex-wrap:wrap;gap:0 10px;font-size:11px;line-height:1.5;font-weight:400}#settings #settings-info{margin:8px 0 12px}#settings #admin-key-error{border-left:2px solid var(--red);padding-left:8px}@container settings (max-width:750px){#settings #settings-form .settings-fields{grid-template-columns:repeat(2,minmax(0,1fr))}#settings #save-settings{margin-top:0}}@container settings (max-width:360px){#settings #settings-form .settings-fields{grid-template-columns:minmax(0,1fr)}}
#sources #source-series-table{min-width:760px}#sources #source-series-table th,#sources #source-series-table td{text-align:left;vertical-align:middle;padding:10px 12px}#sources #source-series-table th:first-child{width:100%;min-width:260px}#sources #source-series-table th:nth-child(3),#sources #source-series-table td:nth-child(3){text-align:center}#sources #source-series-table th:nth-child(4),#sources #source-series-table td:nth-child(4){min-width:160px}#sources #source-series-table th:last-child,#sources #source-series-table td:last-child{text-align:right}#sources #source-series-table .series-name{max-width:360px;min-height:36px;padding:7px 10px}#sources #source-series-table small{margin-top:4px}#sources #source-series-table .series-enabled{width:18px;height:18px;min-height:18px;padding:0;margin:0;vertical-align:middle;accent-color:var(--red)}#sources #source-series-table .source-meta{margin:0;padding:0;max-width:200px;line-height:1.4;background:transparent}#sources #source-series-table .source-meta summary{font-size:12px;line-height:1.5}#sources #source-series-table .source-meta[open] summary{margin-bottom:6px}#sources #source-series-table .secondary{min-height:34px;padding:6px 10px;font-size:13px}
#sources{container-type:inline-size;container-name:sources}#sources .source-picker{background:var(--white);border:1px solid var(--light);padding:16px;margin:0 0 12px}#sources .source-picker>.admin-heading{margin:0 0 10px}#sources .source-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}#sources .source-choice{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px;min-width:0;min-height:144px;border:1px solid var(--pale);background:var(--light)}#sources .source-choice h3{margin:0;font-size:17px;line-height:1.4;font-weight:500;color:var(--black)}#sources .source-choice-status{font-size:12px;color:var(--zonos)}#sources .source-choice-details{background:transparent;padding:0;margin:0;max-width:100%;font-size:11px;overflow-wrap:anywhere}#sources .source-choice-details summary{font-size:11px;font-weight:400}#sources .source-choice-details span{display:block;margin-top:6px}#sources .source-choice-action{display:inline-block;margin-top:auto;min-height:38px;padding:9px 14px;background:var(--black);border:1px solid var(--black);color:var(--white);font-size:14px;font-weight:500;text-decoration:none}@container sources (max-width:720px){#sources .source-choice-grid{grid-template-columns:minmax(0,1fr)}}
#sources .admin-heading,#runs .admin-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:20px 0 10px}#sources .source-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}#sources .source-actions button{font-size:12px;min-height:30px;padding:5px 8px}#sources .source-panel{padding:14px;margin:12px 0}#sources .admin-details,#settings .admin-details{margin:12px 0;padding:12px}#sources .admin-details summary,#settings .admin-details summary{font-size:14px}#sources .admin-details p,#settings .admin-details p{font-size:12px;line-height:1.6}#sources .admin-details .toolbar{margin-top:16px}#sources .source-meta{font-size:11px;white-space:normal;overflow-wrap:anywhere;margin-top:6px}#runs .admin-jobs p{padding:8px 12px;margin:8px 0;background:var(--white);font-size:12px}#runs .admin-error{font-size:12px;white-space:normal;max-width:360px;padding:6px;margin:4px 0}#runs .admin-error summary{font-size:12px}#settings [hidden]{display:none}#settings .toolbar{margin-top:16px}
.source-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:24px 0}.source-card,.source-panel{padding:24px;background:var(--white);border:1px solid var(--light)}.source-card{display:flex;flex-direction:column;align-items:start;gap:12px}.source-card p{margin:0;line-height:1.6}.source-card h2{font-weight:500}.source-status{font-size:12px;color:var(--zonos)}.source-card .secondary{font-size:14px}.source-panel{margin:22px 0}.source-panel p{line-height:1.7}.section-heading{margin-top:28px}.button-link{display:inline-block;padding:11px 12px;background:var(--white);color:var(--charcoal);border:1px solid var(--pale);text-decoration:none}.check-label{flex-direction:row;align-items:center}.check-label input,.select-upload{min-height:auto;width:18px;height:18px;accent-color:var(--red)}#source-series small{display:block;max-width:220px;white-space:normal;overflow-wrap:anywhere;margin-top:7px}#source-series input.series-name{max-width:240px;width:100%}.source-panel[hidden]{display:none}#file-preview>button{margin-top:20px}.source-panel input[type="file"]{max-width:290px}#connection-url{min-width:250px}
@media(max-width:1000px){.source-cards{grid-template-columns:1fr}.source-panel{padding:18px}}
@media(max-width:850px){#error-chart{height:230px}}
@media(max-width:800px){#sidebar{display:none;z-index:20;overflow-y:auto}#sidebar.open{display:flex}main{margin-left:0;padding:18px 12px}#menu{display:block}.toolbar label{flex:1;min-width:130px}.toolbar button{flex:1}h1{font-size:24px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:14px}.stat strong{font-size:22px}header{gap:12px}svg{height:310px}#health{max-width:90px}}
#sources #connection-form .toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr) auto;align-items:end;gap:12px;margin:10px 0 0}#sources #connection-form label{min-width:0}#sources #connection-form .toolbar input{width:100%;min-width:0}#sources #connection-form button{justify-self:end}#sources #connection-panel .panel-heading button{flex-shrink:0}#sources .section-heading{margin-top:16px}@container sources (max-width:720px){#sources #connection-form .toolbar{grid-template-columns:minmax(0,1fr)}}
#sources [hidden]{display:none}#sources #entsoe-form .toolbar{margin:12px 0 6px;gap:10px}#sources #entsoe-form button{font-size:14px}#sources #entsoe-form label{min-width:0}#sources #entsoe-name{width:200px}#sources #entsoe-area{max-width:280px}#sources .retry-entsoe{margin-left:6px}#sources .entsoe-import-status{max-width:260px;white-space:normal}

/* Visual-only ZONOS theme. Existing DOM, hash routes and interactions are retained.
   This is not the ZCP shell, SSO, an embedding mode or a ZONOS API connector. */
@font-face {
  font-family: "Open Sans";
  src: url("/fonts/OpenSans-Variable.ttf") format("truetype");
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
}

:root {
  --charcoal: #404040;
  --zonos: #505050;
  --light: #f8f8f8;
  --zcp-font: "Open Sans", Verdana, Geneva, Arial, Helvetica, sans-serif;
  --zcp-border: #dedede;
  --zcp-hover: rgba(0, 0, 0, 0.05);
  --zcp-menu-width: 230px;
}

html { font-size: 14px; }
body { background: #fff; font-family: var(--zcp-font); }
svg text { font-family: var(--zcp-font); }
a { cursor: pointer; }

#sidebar {
  width: var(--zcp-menu-width);
  color: #505050;
  background: #f8f8f8;
  box-shadow: 1px 0 2px -2px black;
}
#sidebar .logo-space {
  display: flex;
  align-items: center;
  min-height: 50px;
  padding: 10px 20px;
  background: #fff;
  border-bottom: 3px solid var(--red);
}
#sidebar .logo-space img { width: auto; height: 30px; max-width: 100%; object-fit: contain; }
#sidebar nav { padding: 14px 0; }
#sidebar nav a {
  display: flex;
  align-items: center;
  min-height: 34px;
  margin: 0;
  padding: 6px 14px 6px 20px;
  border-left: 0;
  border-right: 4px solid transparent;
  color: #505050;
  font-size: 14px;
  font-weight: 600;
  line-height: 22px;
}
#sidebar nav a:hover,
#sidebar nav a.active { background: var(--zcp-hover); }
#sidebar nav a.active { border-right-color: #E84449; }
#sidebar nav a:focus-visible { outline-offset: -3px; }
#sidebar .sidebar-foot { padding: 16px 20px; font-size: 12px; line-height: 1.8; }

/* Keep the existing page heading in flow: do not manufacture a second fixed ZCP header. */
main { margin-left: var(--zcp-menu-width); padding: 20px 24px; }
main > header {
  gap: 16px;
  margin-bottom: 20px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--zcp-border);
  background: #fff;
}
.product-name { color: #505050; font-size: 14px; font-weight: 400; }
h1 { color: #404040; font-size: 24px; font-weight: 400; }
h2 { color: #404040; font-size: 18px; font-weight: 600; }
button { font-size: 14px; font-weight: 600; }
button.secondary { font-weight: 400; }
button.secondary:not(:disabled):hover,
.button-link:hover { background: #f8f8f8; }
.chart-card,
.source-card,
.source-panel,
#sources .source-picker { border-color: var(--zcp-border); }
.stat { border: 1px solid var(--zcp-border); }
th { color: #505050; font-weight: 600; }
summary { font-size: 14px; }
#sources .source-choice { background: #f8f8f8; border-color: var(--zcp-border); }
#sources .source-choice h3 { font-size: 16px; }
#sources .source-choice-action {
  background: #fff;
  color: #505050;
  border-color: var(--pale);
}
#sources .source-choice-action:hover { background: var(--zcp-hover); }

/* Preserve the existing mobile menu and responsive page grids. */
@media (max-width: 1100px) {
  main { margin-left: var(--zcp-menu-width); padding: 20px; }
}
@media (max-width: 800px) {
  main { margin-left: 0; padding: 18px 12px; }
  main > header { gap: 12px; }
  h1 { font-size: 22px; }
}
