:root{--bg: #0f1419;--panel: #1a222c;--panel-2: #222d39;--line: #2c3a49;--fg: #e8eef4;--muted: #90a2b4;--accent: #35c48a;--charge: #4aa3ff;--discharge: #35c48a;--warn: #f0a63a;--bad: #e5604d;--price: #c58cf0}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:1180px;margin:0 auto;padding:20px 16px 60px}header.top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}header.top h1{font-size:22px;margin:0;letter-spacing:.5px}header.top .sub{color:var(--muted);font-size:13px}.tabs{display:flex;gap:8px;margin:16px 0}.tabs button{background:var(--panel);color:var(--muted);border:1px solid var(--line);padding:8px 16px;border-radius:8px;cursor:pointer;font-size:14px}.tabs button.active{background:var(--panel-2);color:var(--fg);border-color:var(--accent)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}.card h2{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 10px}.kpi .value{font-size:30px;font-weight:650}.kpi .unit{font-size:15px;color:var(--muted);margin-left:4px}.kpi .big{font-size:40px;color:var(--accent)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.pill .dot{width:8px;height:8px;border-radius:50%}.pill.online{background:#35c48a26;color:var(--accent)}.pill.offline{background:#e5604d26;color:var(--bad)}.mode{font-weight:600}.mode.schedule{color:var(--accent)}.mode.self_consumption{color:var(--warn)}.mode.hold{color:var(--muted)}.mode.grid_limit{color:var(--bad)}.section{margin-top:20px}.chart-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}.chart-card h2{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 8px}.buttons{display:flex;gap:10px;flex-wrap:wrap}.buttons button{border:1px solid var(--line);border-radius:8px;padding:10px 14px;cursor:pointer;background:var(--panel-2);color:var(--fg);font-size:14px}.buttons button:hover{border-color:var(--accent)}.buttons button.danger{border-color:#e5604d80}.buttons button.active{background:var(--bad);color:#fff;border-color:var(--bad)}.events{max-height:320px;overflow-y:auto}.events .row{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}.events .row .t{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.events .row .ty{font-weight:600}.tag{padding:1px 7px;border-radius:6px;font-size:11px;font-weight:700}.tag.fallback_enter,.tag.grid_limit_enter,.tag.schedule_rejected,.tag.safety_clamp{background:#f0a63a2e;color:var(--warn)}.tag.fallback_leave,.tag.grid_limit_leave,.tag.schedule_accepted,.tag.buffer_replayed,.tag.startup{background:#35c48a26;color:var(--accent)}table.hw{width:100%;border-collapse:collapse;font-size:13px}table.hw th,table.hw td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}table.hw th{color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.5px}table.hw .status{font-weight:600;white-space:nowrap}table.hw .status.simuliert{color:var(--charge)}.price{color:var(--muted);font-variant-numeric:tabular-nums}.cols2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 820px){.cols2{grid-template-columns:1fr}}.hint{color:var(--muted);font-size:13px}.scenario{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-top:12px}.scenario ul{margin:6px 0 0;padding-left:20px}.scenario li{margin:3px 0}.numfield{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0}.nf-label{color:var(--fg);font-size:14px}.nf-label em{color:var(--muted);font-style:normal;font-size:12px}.nf-input{display:inline-flex;align-items:center;gap:6px}.nf-input input{width:110px;text-align:right;background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:7px;padding:6px 8px;font-size:14px;font-variant-numeric:tabular-nums}.nf-input input:focus{outline:none;border-color:var(--accent)}.nf-unit{color:var(--muted);font-size:12px;width:62px}.divider{height:1px;background:var(--line);margin:10px 0}button.mini{background:var(--panel-2);color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:3px 9px;font-size:12px;cursor:pointer;margin-left:6px}button.mini.on{border-color:var(--accent);color:var(--accent)}table.ue td{padding:7px 10px}table.ue .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.ue .num.neg{color:var(--muted)}table.ue tr.grp td{color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.5px;padding-top:14px;border-bottom:none}table.ue tr.sum td{font-weight:600}table.ue tr.result td{font-weight:700;font-size:15px;border-top:2px solid var(--line)}.track-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.total-badge{border:1px solid;border-radius:999px;padding:3px 12px;font-size:13px;font-weight:600;white-space:nowrap}.stepper{list-style:none;margin:12px 0 0;padding:0}.stepper>li{display:flex;gap:12px;padding-bottom:16px;position:relative}.stepper>li:not(:last-child):before{content:"";position:absolute;left:13px;top:28px;bottom:0;width:2px;background:var(--line)}.step-dot{flex:0 0 28px;width:28px;height:28px;border-radius:50%;color:#0b0f14;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:1}.step-body{flex:1;min-width:0}.step-title{font-weight:600;display:flex;align-items:center;gap:10px}.step-sub{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:1px 7px;font-variant-numeric:tabular-nums}.buylist{list-style:none;margin:8px 0;padding:0}.buy{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:13px;flex-wrap:wrap}.buy a{color:var(--charge);text-decoration:none}.buy a:hover{text-decoration:underline}.buy-note{color:var(--muted);font-size:12px}.buy-price{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--fg);white-space:nowrap}.chip{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:6px;text-transform:uppercase;letter-spacing:.4px}.chip.opt{background:#f0a63a2e;color:var(--warn)}.chip.prov{background:#90a2b42e;color:var(--muted)}.done{margin-top:6px;font-size:12.5px;color:var(--accent)}.bars{display:flex;flex-direction:column;gap:9px;margin-top:4px}.bar-row{display:grid;grid-template-columns:220px 1fr 72px;align-items:center;gap:10px;font-size:13px}.bar-label{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{background:var(--bg);border:1px solid var(--line);border-radius:6px;height:16px;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:6px 0 0 6px}.bar-val{text-align:right;font-variant-numeric:tabular-nums}table.hw a{color:var(--charge);text-decoration:none}table.hw a:hover{text-decoration:underline}@media (max-width: 560px){.bar-row{grid-template-columns:120px 1fr 64px}}
