:root{
  --bg:#0f1720;
  --bg-soft:#151f2b;
  --card:#1b2735;
  --card-2:#213040;
  --line:#2b3b4d;
  --text:#e8eef5;
  --muted:#9fb0c2;
  --accent:#ffb020;      /* Solar-Amber */
  --accent-2:#2ecc9b;    /* Teal-Grün */
  --blue:#4aa8ff;
  --pos:#3ddc84;
  --neg:#ff6b6b;
  --in-bg:#2a3a2a;
  --in-border:#4c6b3f;
  --radius:14px;
  --shadow:0 8px 30px rgba(0,0,0,.35);
  --font:'Segoe UI',Roboto,Helvetica,Arial,system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--font);
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(255,176,32,.10), transparent 60%),
    radial-gradient(1000px 500px at -10% 10%, rgba(46,204,155,.08), transparent 55%),
    var(--bg);
  color:var(--text);
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
}
.app{width:90%;max-width:1800px;margin:0 auto;padding:0 16px 60px}

/* Topbar */
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:18px 4px 14px;flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:12px}
.logo{
  display:grid;place-items:center;width:44px;height:44px;border-radius:12px;
  color:#101820;background:linear-gradient(135deg,var(--accent),#ff8a3d);
  box-shadow:0 6px 18px rgba(255,140,60,.35);
}
.brand-title{font-size:20px;font-weight:700;letter-spacing:.2px}
.brand-sub{font-size:12.5px;color:var(--muted)}

.yearpick{display:flex;align-items:center;gap:10px}
.yearpick label{font-size:13px;color:var(--muted)}
.yearpick select{
  background:var(--card);color:var(--text);border:1px solid var(--line);
  border-radius:10px;padding:8px 12px;font-size:15px;font-weight:600;cursor:pointer;
}
.newyear{position:relative}
.newyear summary{
  list-style:none;cursor:pointer;font-size:13px;color:var(--accent);
  border:1px dashed var(--line);border-radius:10px;padding:8px 10px;user-select:none;
}
.newyear summary::-webkit-details-marker{display:none}
.newyear-form{
  position:absolute;right:0;top:110%;z-index:20;background:var(--card);
  border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;gap:6px;
  box-shadow:var(--shadow);
}
.newyear-form input{width:90px;background:var(--bg-soft);border:1px solid var(--line);
  color:var(--text);border-radius:8px;padding:7px 8px}

/* Tabs */
.tabs{
  display:flex;gap:4px;flex-wrap:wrap;
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:6px;margin:6px 0 18px;box-shadow:var(--shadow);
}
.tab{
  text-decoration:none;color:var(--muted);font-weight:600;font-size:14px;
  padding:10px 16px;border-radius:10px;transition:.15s;white-space:nowrap;
}
.tab:hover{color:var(--text);background:var(--card-2)}
.tab.active{color:#101820;background:linear-gradient(135deg,var(--accent),#ffc54d)}

/* Flash */
.flash{
  background:linear-gradient(90deg,rgba(46,204,155,.18),transparent);
  border:1px solid rgba(46,204,155,.4);color:#c8f6e4;
  padding:11px 16px;border-radius:12px;margin-bottom:16px;font-size:14px;
}

/* Cards */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:20px;margin-bottom:22px;
}
.card-head h2{margin:0 0 4px;font-size:18px}
.card-head .muted{margin:0 0 8px}
.muted{color:var(--muted);font-size:13.5px}
h3{font-size:15px;margin:0 0 12px}

/* Forms */
.grid-form{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:8px}
fieldset{
  border:1px solid var(--line);border-radius:12px;padding:14px 16px 6px;margin:0;
  background:var(--bg-soft);
}
legend{padding:0 8px;font-size:13px;color:var(--accent);font-weight:700}
.grid-form label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--muted);margin-bottom:12px}
.grid-form label.wide{grid-column:1/-1}
.grid-form input{
  background:var(--card);border:1px solid var(--line);color:var(--text);
  border-radius:9px;padding:9px 11px;font-size:14px;
}
.grid-form input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,176,32,.15)}

.form-actions{display:flex;align-items:center;gap:14px;margin-top:14px;flex-wrap:wrap}
.hint{font-size:12px;color:var(--muted)}
.btn{
  background:var(--card-2);color:var(--text);border:1px solid var(--line);
  border-radius:10px;padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;transition:.15s;
}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:linear-gradient(135deg,var(--accent),#ff8a3d);color:#101820;border:none}
.btn.primary:hover{filter:brightness(1.05)}

/* Tables */
.table-scroll{overflow-x:auto;border-radius:12px;border:1px solid var(--line)}
table.grid{border-collapse:collapse;width:100%;min-width:720px;font-size:13px}
table.grid th,table.grid td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
table.grid thead th{
  background:var(--bg-soft);color:var(--muted);font-weight:600;font-size:11.5px;
  text-align:right;position:sticky;top:0;
}
table.grid thead th span{color:#7d8fa3;font-weight:500}
table.grid th.in,table.grid thead th.in{color:var(--accent)}
.month{text-align:left;font-weight:600;color:var(--text)}
.sticky-col{position:sticky;left:0;background:var(--card);z-index:2;text-align:left}
thead .sticky-col{background:var(--bg-soft);z-index:3}
td.calc{color:var(--muted)}
td.strong,.strong{color:var(--text);font-weight:700}
tr:hover td{background:rgba(255,255,255,.02)}
tfoot .sumrow td{
  background:var(--card-2);font-weight:700;color:var(--text);
  border-top:2px solid var(--accent);
}
tfoot .sumrow .sticky-col{background:var(--card-2)}

/* Eingabefelder in Tabellen */
td.in{padding:4px}
td.in input{
  width:88px;background:var(--in-bg);border:1px solid var(--in-border);
  color:#eafce0;border-radius:7px;padding:7px 8px;font-size:13px;text-align:right;
}
td.in input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,176,32,.18)}
thead th.in::after{content:" ✎";font-size:10px;opacity:.6}

.grid.yearly td:first-child,.grid.yearly .month{font-variant-numeric:tabular-nums}
.grp{border-left:2px solid var(--line)}

/* Wirtschaftlichkeit */
.wirt-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:6px}
.wirt-block{background:var(--bg-soft);border:1px solid var(--line);border-radius:12px;padding:16px}
dl.kv{display:grid;grid-template-columns:1fr auto;gap:6px 14px;margin:0;font-size:13.5px}
dl.kv dt{color:var(--muted)}
dl.kv dd{margin:0;text-align:right;font-weight:600}
dl.kv .sep{border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
dd.pos{color:var(--pos)} dd.neg{color:var(--neg)}

/* % vom Soll – Ampelzelle */
td.pctcell{color:#0f1720;font-weight:700;text-align:right;border-radius:6px}

/* Amortisation Gesamtanlage */
.amort-summary{margin-top:18px}
.amort-summary h3 .muted{font-weight:400;font-size:13px}
.amort-summary .kv{font-size:14px}
.kv dd.big{font-size:1.3rem;line-height:1.2}
.notes{margin-top:16px;font-size:12.5px;color:var(--muted)}
.notes summary{cursor:pointer;color:var(--accent);font-weight:600}
.notes ol{margin:10px 0 0;padding-left:20px;line-height:1.7}

/* Charts */
.charts{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}
.chart-box{background:var(--bg-soft);border:1px solid var(--line);border-radius:12px;padding:16px}
.chart-box.wide{grid-column:1/-1}
.chart{width:100%;overflow:visible}
.chart svg{width:100%;height:auto;display:block}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:10px;font-size:12px;color:var(--muted)}
.legend .lk{display:inline-flex;align-items:center;gap:6px}
.legend .sw{width:12px;height:12px;border-radius:3px;display:inline-block}
.bar{transition:opacity .15s}
.bar:hover{opacity:.75;cursor:pointer}
.axis{stroke:var(--line);stroke-width:1}
.gridline{stroke:var(--line);stroke-dasharray:3 4;opacity:.5}
.axis-label{fill:#7d8fa3;font-size:10px}
.tip{
  position:fixed;pointer-events:none;background:#0b131c;border:1px solid var(--line);
  color:var(--text);padding:6px 9px;border-radius:8px;font-size:12px;z-index:99;
  box-shadow:var(--shadow);opacity:0;transition:opacity .1s;white-space:nowrap;
}

/* Gauges (Home-Assistant-Stil) */
.gauges{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:4px 0 18px}
.gauge-box{background:var(--bg-soft);border:1px solid var(--line);border-radius:12px;
  padding:16px 16px 14px;text-align:center}
.gauge{width:100%;max-width:230px;margin:0 auto}
.gauge svg{width:100%;height:auto;display:block}
.gauge-val{fill:var(--text);font-size:30px;font-weight:700}
.gauge-tick{fill:#7d8fa3;font-size:12px}
.gauge-cap{margin-top:6px;font-size:13.5px;font-weight:600}
.gauge-cap .muted{font-weight:400}
.gauge-note{font-size:12px;margin:-6px 0 18px;text-align:center}

.yearpick .yearform{display:flex;align-items:center;gap:10px}

.heart{color:var(--accent-2);font-style:normal}

.sumlabel{text-align:right;color:var(--muted);font-weight:600}
.footnote{margin-top:8px;max-width:none}

.foot{text-align:center;color:#61748a;font-size:12px;padding:10px 0}

/* Responsive */
@media (max-width:900px){
  .gauges{grid-template-columns:1fr}
}
@media (max-width:820px){
  .grid-form,.wirt-cols,.charts{grid-template-columns:1fr}
  .brand-sub{display:none}
}
