:root{
  --bg:#f6f9f9; --card:#ffffff; --ink:#24292e; --muted:#6b7480; --line:#e6ecee;
  --teal:#2eabb3; --teal-soft:#e3f4f5; --teal-mid:#9ad6da; --green:#3f9e5c; --green-soft:#e6f4ea;
  --coral:#d9644a; --coral-soft:#fbebe6; --sun:#f2b84b; --sun-soft:#fdf3df; --grey:#c9d3d6;
  --radius:18px; --shadow:0 1px 2px rgba(20,40,50,.04),0 8px 24px rgba(20,40,50,.06);
  --font:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif; --brand:"Martel Sans","Inter",sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5}
body{background:radial-gradient(1200px 500px at 10% -10%,#e7f6f6 0,transparent 60%),radial-gradient(900px 400px at 100% 0,#fdf6e8 0,transparent 55%),var(--bg);min-height:100vh}
.num{font-variant-numeric:tabular-nums}
a{color:var(--teal)}

/* Kopfzeile */
.top{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.82);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.top .in{max-width:1240px;margin:auto;padding:10px 20px;display:flex;align-items:center;gap:16px}
.top img{height:30px}
.top .title{font-family:var(--brand);font-weight:700;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:13px;padding-left:14px;border-left:1px solid var(--line)}
.top .sp{flex:1}
.top .sync{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block}
.dot.bad{background:var(--coral)}
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:6px 14px;font:inherit;font-size:13px;cursor:pointer}
.btn:hover{border-color:var(--teal);color:var(--teal)}

main{max-width:1240px;margin:auto;padding:28px 20px 60px;display:flex;flex-direction:column;gap:28px}

/* Begrüßung */
.hello h1{font-family:var(--brand);font-weight:700;font-size:30px;margin:0;line-height:1.2}
.hello p{margin:8px 0 0;color:var(--muted);font-size:16px;max-width:820px}
.hello p b{color:var(--ink);font-weight:600}

h2{font-family:var(--brand);font-size:19px;font-weight:700;margin:0 0 4px}
.sub{color:var(--muted);font-size:13.5px;margin:0 0 14px}

/* Karten */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;border:1px solid rgba(230,236,238,.7)}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.grid.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr))}

/* Heute */
.today{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.today .t{background:var(--teal-soft);border-radius:14px;padding:14px 16px}
.today .t:nth-child(2){background:var(--sun-soft)}
.today .t:nth-child(3){background:var(--green-soft)}
.today .t:nth-child(4){background:#eef1f8}
.today .k{font-size:12.5px;color:var(--muted)}
.today .v{font-size:26px;font-weight:700;margin-top:2px}

/* Kennzahlen */
.kpis{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr))}
.kpi{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;border:1px solid rgba(230,236,238,.7)}
.kpi .k{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}
.kpi .k i{width:10px;height:10px;border-radius:3px;background:var(--teal);display:inline-block}
.kpi .v{font-size:clamp(21px,2.1vw,28px);white-space:nowrap;font-weight:700;margin:6px 0 6px;letter-spacing:-.01em}
.pill{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:600;padding:2px 9px;border-radius:999px}
.pill.up{background:var(--green-soft);color:var(--green)}
.pill.down{background:var(--coral-soft);color:var(--coral)}
.pill.flat{background:#eef1f3;color:var(--muted)}
.kpi .b{font-size:12.5px;color:var(--muted);margin-top:8px}

/* Diagramme */
.chart{position:relative;width:100%;min-height:240px}
.chart.sm{min-height:190px}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart .axis text{fill:var(--muted);font-size:11.5px}
.chart .grid line{stroke:var(--line)}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--muted);margin:-4px 0 10px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:12px;height:12px;border-radius:4px;display:inline-block}
.legend i.line{height:3px;border-radius:2px}
.tip{position:absolute;pointer-events:none;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(20,40,50,.12);padding:8px 12px;font-size:12.5px;white-space:nowrap;display:none;z-index:5}
.tip .h{color:var(--muted);margin-bottom:2px}
.tip .r{display:flex;align-items:center;gap:6px}
.tip .r i{width:9px;height:9px;border-radius:3px;display:inline-block}

/* Tabellen */
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th{font-size:12px;font-weight:600;color:var(--muted);text-align:right;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{text-align:right;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
tr:last-child td{border-bottom:none}
.scroll{overflow:auto;max-height:440px}
.scroll th{position:sticky;top:0;background:#fff}
.bar{height:8px;border-radius:999px;background:var(--teal-soft);position:relative;min-width:80px}
.bar b{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--teal)}
.bar.ghost b{background:var(--grey)}
.cellbar{display:flex;align-items:center;gap:10px;justify-content:flex-end}
.cellbar .bar{width:90px}
.up{color:var(--green)} .down{color:var(--coral)}
.future td{color:var(--muted)}
.tag{font-size:11px;background:var(--sun-soft);color:#9a6b12;border-radius:6px;padding:1px 6px;margin-left:6px}

/* Preise */
.rates td,.rates th{padding:6px 6px;font-size:12.5px;text-align:center}
.rates td:first-child,.rates th:first-child{text-align:left;padding-left:0}
.rates .wk{color:var(--muted);font-weight:400}
.rates td.p{border-radius:6px}
.rates .we{background:#fbf7ee}

.note{font-size:12.5px;color:var(--muted);margin-top:10px}
.empty{display:flex;align-items:center;justify-content:center;min-height:200px;color:var(--muted);font-size:14px;text-align:center;padding:20px}
.foot{font-size:12px;color:var(--muted);text-align:center}

/* Anmeldung */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login form{background:#fff;border-radius:22px;box-shadow:var(--shadow);padding:34px 30px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px}
.login img{height:44px;align-self:flex-start;margin-bottom:6px}
.login h1{font-family:var(--brand);font-size:20px;margin:0}
.login p{margin:0;color:var(--muted);font-size:13.5px}
.login label{font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
.login input{font:inherit;border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:#fbfdfd}
.login input:focus{outline:2px solid var(--teal-mid);border-color:var(--teal)}
.login button{font:inherit;font-weight:600;border:0;border-radius:12px;padding:12px;background:var(--teal);color:#fff;cursor:pointer}
.login button:hover{background:#25959c}
.login .err{color:var(--coral);font-size:13px;min-height:18px}

@media (max-width:640px){
  .hello h1{font-size:24px}
  .top .title{display:none}
  .card{padding:16px}
  .kpi .v{font-size:24px}
}
.card,.kpi{min-width:0}
#channels,#cats,#months,#rates{overflow-x:auto}
.grid>*{min-width:0}
