/* Unser Geld – Design
   Leuchtender, ruhiger Hintergrund · Glas-Karten · eine starke Zahl oben.
   Hell und Dunkel folgen der iPhone-Einstellung. */
:root{
  --bg:#F2F4F7;
  --glow-1:rgba(16,185,129,.20);
  --glow-2:rgba(99,102,241,.13);
  --glow-3:rgba(14,165,233,.13);
  --card:rgba(255,255,255,.80);
  --card-solid:#FFFFFF;
  --card-border:rgba(16,24,40,.07);
  --ink:#0B1220;
  --muted:#5B6476;
  --faint:#98A2B3;
  --line:rgba(16,24,40,.08);
  --fill:rgba(16,24,40,.05);
  --fill-2:rgba(16,24,40,.08);
  --accent:#059669;
  --accent-2:#0EA5E9;
  --accent-ink:#FFFFFF;
  --accent-soft:rgba(5,150,105,.12);
  --danger:#DC2626;
  --danger-soft:rgba(220,38,38,.10);
  --scrim:rgba(8,12,20,.42);
  --toast-bg:#0B1220;
  --toast-fg:#F1F4F9;
  --toast-action:#6EE7B7;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 14px 34px -14px rgba(16,24,40,.20);
  --shadow-lg:0 24px 60px -20px rgba(16,24,40,.35);
  --track:rgba(16,24,40,.07);

  /* Kategorien – feste Reihenfolge (farbenblind-geprüft), Farbe folgt der Kategorie */
  --s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#008300;--s7:#6250d6;--s0:#98A2B3;
  --k-lebensmittel:var(--s1);--k-mobilitaet:var(--s2);--k-kind:var(--s3);--k-freizeit:var(--s4);
  --k-shopping:var(--s5);--k-gesundheit:var(--s6);--k-urlaub:var(--s7);--k-sonstiges:var(--s0);
  --k-wohnen:var(--s7);--k-vertraege:var(--s1);--k-altersvorsorge:var(--s6);
  --k-einkommen:var(--accent);--k-kindergeld:var(--s3);
  --c-fixed:#6172F3;

  --font:"Plus Jakarta Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --gutter-l:max(16px,env(safe-area-inset-left,0px));
  --gutter-r:max(16px,env(safe-area-inset-right,0px));
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);
  --ease:cubic-bezier(.2,.9,.25,1);
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#06080D;--glow-1:rgba(16,185,129,.22);--glow-2:rgba(99,102,241,.20);--glow-3:rgba(14,165,233,.14);
    --card:rgba(255,255,255,.045);--card-solid:#10141C;--card-border:rgba(255,255,255,.08);
    --ink:#F1F4F9;--muted:#9AA3B5;--faint:#5D6678;--line:rgba(255,255,255,.08);--fill:rgba(255,255,255,.06);--fill-2:rgba(255,255,255,.10);
    --accent:#34D399;--accent-ink:#04130D;--accent-soft:rgba(52,211,153,.14);
    --danger:#F87171;--danger-soft:rgba(248,113,113,.14);--scrim:rgba(0,0,0,.6);
    --toast-bg:#F1F4F9;--toast-fg:#0B1220;--toast-action:#059669;
    --shadow:0 1px 0 rgba(255,255,255,.04) inset,0 16px 40px -18px rgba(0,0,0,.7);
    --shadow-lg:0 30px 70px -20px rgba(0,0,0,.8);--track:rgba(255,255,255,.07);
    --s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s0:#6B7385;
    --c-fixed:#8B98F9;color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#06080D;--glow-1:rgba(16,185,129,.22);--glow-2:rgba(99,102,241,.20);--glow-3:rgba(14,165,233,.14);
  --card:rgba(255,255,255,.045);--card-solid:#10141C;--card-border:rgba(255,255,255,.08);
  --ink:#F1F4F9;--muted:#9AA3B5;--faint:#5D6678;--line:rgba(255,255,255,.08);--fill:rgba(255,255,255,.06);--fill-2:rgba(255,255,255,.10);
  --accent:#34D399;--accent-ink:#04130D;--accent-soft:rgba(52,211,153,.14);
  --danger:#F87171;--danger-soft:rgba(248,113,113,.14);--scrim:rgba(0,0,0,.6);
  --toast-bg:#F1F4F9;--toast-fg:#0B1220;--toast-action:#059669;
  --shadow:0 1px 0 rgba(255,255,255,.04) inset,0 16px 40px -18px rgba(0,0,0,.7);
  --shadow-lg:0 30px 70px -20px rgba(0,0,0,.8);--track:rgba(255,255,255,.07);
  --s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s0:#6B7385;
  --c-fixed:#8B98F9;color-scheme:dark;
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.45;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;min-height:100dvh}
/* Leuchtender Hintergrund */
body::after{content:"";position:fixed;inset:-10% -20% auto;height:80vh;z-index:-1;pointer-events:none;
  background:radial-gradient(40% 50% at 15% 10%,var(--glow-1),transparent 70%),
             radial-gradient(45% 45% at 90% 0%,var(--glow-2),transparent 70%),
             radial-gradient(40% 40% at 60% 45%,var(--glow-3),transparent 70%);
  filter:blur(10px)}
body::before{content:"";position:fixed;inset:0 0 auto;height:var(--safe-t);z-index:10;background:var(--bg)}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
svg{display:block}

.app{max-width:560px;margin:0 auto;padding-left:var(--gutter-l);padding-right:var(--gutter-r);padding-block:0 calc(130px + var(--safe-b))}

/* ---------- Kopfzeile ---------- */
.top{position:sticky;top:var(--safe-t);z-index:5;display:flex;align-items:center;gap:10px;padding-block:12px 10px;margin-inline:calc(-1 * var(--gutter-l)) calc(-1 * var(--gutter-r));padding-left:var(--gutter-l);padding-right:var(--gutter-r);
  background:color-mix(in srgb,var(--bg) 72%,transparent);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4)}
.brand{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:800;letter-spacing:-.02em;white-space:nowrap;min-width:0}
.brand-mark{width:30px;height:30px;border-radius:10px;flex:none;display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;
  background:linear-gradient(140deg,#34D399,#059669 55%,#0E7490);box-shadow:0 6px 16px -6px rgba(5,150,105,.7)}
.month{display:flex;align-items:center;margin-left:auto;background:var(--card);border:1px solid var(--card-border);border-radius:999px;padding:3px;box-shadow:var(--shadow)}
.month button{width:32px;height:32px;border:0;border-radius:50%;background:transparent;font-size:19px;line-height:1;color:var(--muted)}
.month button:hover{background:var(--fill);color:var(--ink)}
.month span{min-width:112px;padding-inline:2px;text-align:center;font-weight:700;font-size:13.5px;white-space:nowrap}
.logout{width:40px;height:40px;flex:none;border:1px solid var(--card-border);border-radius:50%;background:var(--card);color:var(--muted);display:grid;place-items:center;box-shadow:var(--shadow)}
.logout:hover{color:var(--ink)}
.logout svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* ---------- Karten ---------- */
.card{position:relative;background:var(--card);border:1px solid var(--card-border);border-radius:26px;padding:18px;margin-top:14px;box-shadow:var(--shadow);
  backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5)}
.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.card-head h2{font-size:17px;font-weight:800;letter-spacing:-.02em;margin:0}
.card-head small{color:var(--muted);font-size:12.5px;font-weight:500}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.link{border:0;background:none;color:var(--accent);font-weight:700;font-size:13.5px;padding:4px 0}
.empty{color:var(--muted);text-align:center;padding:22px 8px;font-size:14px}
.pill{font-size:11.5px;font-weight:700;border-radius:999px;padding:4px 10px;background:rgba(255,255,255,.18);color:#fff;white-space:nowrap}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:hidden;border-radius:30px;padding:20px 20px 16px;margin-top:8px;color:#fff;isolation:isolate;
  background:radial-gradient(120% 90% at 100% 0%,rgba(56,189,248,.50),transparent 55%),
             radial-gradient(90% 80% at 0% 100%,rgba(52,211,153,.55),transparent 60%),
             linear-gradient(140deg,#042F2B 0%,#065F46 48%,#0F766E 100%);
  box-shadow:0 24px 50px -22px rgba(5,150,105,.75),0 1px 0 rgba(255,255,255,.18) inset}
.hero::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.14),transparent 40%);z-index:-1}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.28) 48%,rgba(255,255,255,.08) 55%,transparent 70%);transform:translateX(-130%)}
.enter .hero::before{animation:sheen 1.5s .45s var(--ease) both}
.hero-glow{position:absolute;width:260px;height:260px;right:-80px;top:-110px;border-radius:50%;z-index:-1;pointer-events:none;
  background:radial-gradient(circle,rgba(167,243,208,.55),transparent 65%);animation:drift 9s ease-in-out infinite alternate}
.hero-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.hero .eyebrow{color:rgba(255,255,255,.75)}
.big{font-size:clamp(40px,12.5vw,56px);font-weight:800;letter-spacing:-.045em;line-height:1;margin:10px 0 16px;font-variant-numeric:tabular-nums;white-space:nowrap}
.hero .big.neg{color:#FECACA}
.hbar{display:flex;gap:3px;height:10px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.14)}
.hbar span{display:block;height:100%;min-width:4px;border-radius:999px;transform-origin:left}
.hbar .s-fixed{background:rgba(255,255,255,.55)}
.hbar .s-exp{background:#FCD34D}
.hbar .s-free{background:#6EE7B7}
.hlegend{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.hlegend div{min-width:0}
.hlegend small{display:flex;align-items:center;gap:6px;font-size:12px;color:rgba(255,255,255,.75);font-weight:600}
.hlegend i{width:8px;height:8px;border-radius:50%;flex:none}
.hlegend b{display:block;font-size:15px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:10px;border-top:1px solid rgba(255,255,255,.16);font-size:13.5px;color:rgba(255,255,255,.75);font-weight:600}
.hero-foot b{color:#fff;font-variant-numeric:tabular-nums}
.hero-empty p{margin:0 0 16px;color:rgba(255,255,255,.8);max-width:36ch}
.hero .btn.light{background:#fff;color:#065F46}

/* ---------- Schnell eintragen ---------- */
.q-amount{display:flex;align-items:baseline;gap:6px;border-radius:18px;background:var(--fill);padding:6px 16px;border:1.5px solid transparent;transition:border-color .2s,background .2s}
.q-amount:focus-within{border-color:var(--accent);background:var(--card-solid)}
.q-amount input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font-family:var(--font);font-size:36px;font-weight:800;letter-spacing:-.04em;padding:2px 0;outline:none;font-variant-numeric:tabular-nums}
.q-amount input::placeholder{color:var(--faint);opacity:.6}
.q-amount span{font-size:24px;font-weight:700;color:var(--muted)}
.q-who{display:flex;gap:6px;margin-top:12px;overflow-x:auto;scrollbar-width:none}
.q-who::-webkit-scrollbar{display:none}
.mini-chip{border:1px solid var(--line);background:transparent;border-radius:999px;padding:7px 13px;font-size:13.5px;font-weight:700;color:var(--muted);white-space:nowrap;transition:all .15s}
.mini-chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
.tile{border:0;background:var(--fill);border-radius:18px;padding:11px 2px 9px;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:10.5px;letter-spacing:-.01em;font-weight:700;color:var(--ink);min-width:0;
  transition:transform .15s var(--ease),background .2s}
.tile span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile:active{transform:scale(.93)}
.tile:hover{background:var(--fill-2)}
.tile-ico{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 16%,transparent)}
.tile.pop .tile-ico{animation:pop .5s var(--ease)}
.ico svg,.tile-ico svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hint{margin:12px 2px 0;font-size:12.5px;color:var(--muted);text-align:center}
.shake{animation:shake .4s}

/* ---------- Hinweis wiederkehrende Posten ---------- */
.notice{display:flex;flex-wrap:wrap;align-items:center;gap:12px;border-radius:22px;padding:14px 16px;margin-top:14px;
  background:linear-gradient(120deg,var(--accent-soft),color-mix(in srgb,var(--accent-2) 12%,transparent));border:1px solid color-mix(in srgb,var(--accent) 22%,transparent)}
.notice div{flex:1;min-width:180px}
.notice b{display:block;font-weight:800}
.notice small{color:var(--muted);font-size:13px}
.demo{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;border:1px dashed var(--line);border-radius:14px;padding:6px 12px;font-size:12.5px;color:var(--muted);margin-top:4px}

/* ---------- Buchungen ---------- */
.entries{padding:2px 0}
.entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;padding:10px 2px;border-radius:14px}
.entry + .entry{border-top:1px solid var(--line)}
.entry:hover .entry-main b{color:var(--accent)}
.ico{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;flex:none;color:var(--c);background:color-mix(in srgb,var(--c) 15%,transparent)}
.entry-main{flex:1;min-width:0}
.entry-main b{display:block;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.entry-main small{display:block;color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amt{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em}
.amt.income{color:var(--accent)}
.day{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:18px 8px 0}
.day + .card{margin-top:8px}
.filters{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--fill);border-radius:16px;padding:4px;margin-top:6px}
.filters button{border:0;background:none;border-radius:12px;padding:9px 2px;font-weight:700;font-size:13px;color:var(--muted);white-space:nowrap}
.filters button[aria-pressed="true"]{background:var(--card-solid);color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.12)}
.list-card{padding-block:4px}
.totals{display:flex;justify-content:space-between;padding:12px 8px 0;color:var(--muted);font-size:13px}
.totals b{color:var(--ink);font-variant-numeric:tabular-nums}

/* ---------- Auswertung ---------- */
.donut-wrap{position:relative;width:min(100%,270px);aspect-ratio:1;margin:4px auto 6px}
.donut{width:100%;height:100%;overflow:visible}
.donut .track{fill:none;stroke:var(--track);stroke-width:24}
.donut .seg{fill:none;stroke-width:24;cursor:pointer;transition:opacity .25s,stroke-width .25s var(--ease)}
.donut.has-sel .seg{opacity:.22}
.donut.has-sel .seg.on{opacity:1;stroke-width:30}
.donut-glow{position:absolute;inset:16%;border-radius:50%;pointer-events:none;background:radial-gradient(circle,var(--glow-1),transparent 70%);filter:blur(14px)}
.donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;padding:22%}
.donut-center small{font-size:12.5px;color:var(--muted);font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donut-center b{font-size:clamp(24px,7.4vw,30px);font-weight:800;letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap;margin:2px 0}
.donut-center .dc-label{font-weight:700;color:var(--ink);display:flex;align-items:center;gap:6px}
.donut-center .dc-label i{width:8px;height:8px;border-radius:50%;background:var(--c)}
.ranks{display:grid;gap:2px;margin-top:8px}
.rank{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 12px;width:100%;border:0;background:none;text-align:left;padding:9px 8px;border-radius:16px;transition:background .2s,opacity .2s}
.rank:hover{background:var(--fill)}
.rank.on{background:var(--fill)}
.ranks.has-sel .rank:not(.on){opacity:.45}
.rank .ico{grid-row:span 2;width:38px;height:38px;border-radius:12px}
.rank .ico svg{width:19px;height:19px}
.rank-name{font-weight:700;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-val{font-weight:800;font-variant-numeric:tabular-nums;font-size:14px;text-align:right;white-space:nowrap}
.rank-val em{font-style:normal;color:var(--muted);font-weight:600;margin-left:6px;font-size:12.5px}
.rank-bar{grid-column:2 / 4;height:5px;border-radius:999px;background:var(--track);overflow:hidden}
.rank-bar span{display:block;height:100%;border-radius:999px;background:var(--c);transform-origin:left}

.cols{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;align-items:end;height:170px;padding-top:26px}
.col{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;border:0;background:none;padding:0}
.col-bar{position:relative;width:100%;max-width:38px;border-radius:10px 10px 4px 4px;background:color-mix(in srgb,var(--c-fixed) 32%,transparent);transform-origin:bottom;min-height:4px;transition:background .2s}
.col.cur .col-bar{background:linear-gradient(180deg,var(--accent-2),var(--accent))}
.col.on .col-bar{background:var(--c-fixed)}
.col.cur.on .col-bar{background:linear-gradient(180deg,var(--accent-2),var(--accent))}
.col small{font-size:11.5px;font-weight:700;color:var(--muted)}
.col.cur small{color:var(--ink)}
.col-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);font-size:11.5px;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink);opacity:0;transition:opacity .2s}
.col.on .col-tip{opacity:1}

.people{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.person{background:var(--fill);border-radius:18px;padding:12px 14px;min-width:0}
.person-top{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13.5px}
.avatar{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;color:#fff;background:var(--c);flex:none}
.person b{display:block;font-size:20px;font-weight:800;letter-spacing:-.03em;margin:8px 0 0;font-variant-numeric:tabular-nums;white-space:nowrap}
.person small{display:block;color:var(--muted);font-size:12px}

.fixlist{display:grid;gap:12px}
.fixrow-top{display:flex;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:6px}
.fixrow-top span{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fixrow-top b{font-variant-numeric:tabular-nums;font-weight:800;white-space:nowrap}
.fixbar{height:6px;border-radius:999px;background:var(--track);overflow:hidden}
.fixbar span{display:block;height:100%;border-radius:999px;background:var(--c-fixed);transform-origin:left}

/* ---------- Chips & Buttons ---------- */
.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 14px;min-height:40px;font-weight:700;font-size:13.5px;white-space:nowrap;display:inline-flex;align-items:center;gap:7px}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.chip .count{opacity:.6;font-weight:600}
.chip .dot{width:9px;height:9px;border-radius:50%;background:var(--c);flex:none}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.btn{border:0;border-radius:16px;min-height:48px;padding:0 20px;font-weight:800;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .15s var(--ease),filter .2s}
.btn:active{transform:scale(.97)}
.btn.primary{background:linear-gradient(135deg,#10B981,#059669 60%,#0E7490);color:#fff;box-shadow:0 10px 24px -10px rgba(5,150,105,.8)}
.btn.ghost{background:var(--fill);color:var(--ink)}
.btn.danger{background:var(--danger-soft);color:var(--danger)}
.btn.wide{width:100%}
.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}

/* ---------- Navigation ---------- */
.tabs{position:fixed;left:0;right:0;bottom:calc(10px + var(--safe-b));z-index:20;padding-left:var(--gutter-l);padding-right:var(--gutter-r);pointer-events:none}
.tabs-inner{max-width:440px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;pointer-events:auto;padding:6px;border-radius:26px;
  background:color-mix(in srgb,var(--card-solid) 93%,transparent);border:1px solid var(--card-border);box-shadow:var(--shadow-lg);
  backdrop-filter:blur(22px) saturate(1.6);-webkit-backdrop-filter:blur(22px) saturate(1.6)}
.tabs button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 6px;color:var(--muted);font-size:10.5px;font-weight:700;border-radius:20px;transition:color .2s,background .2s}
.tabs svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.tabs button[aria-current="page"]{color:var(--accent);background:var(--accent-soft)}
.tabs .tab-add{padding:0;display:grid;place-items:center}
.tab-add span{width:50px;height:50px;border-radius:18px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(140deg,#34D399,#059669 55%,#0E7490);box-shadow:0 10px 22px -8px rgba(5,150,105,.85),0 1px 0 rgba(255,255,255,.25) inset;transition:transform .15s var(--ease)}
.tab-add:active span{transform:scale(.9)}
.tabs .tab-add svg{width:24px;height:24px;stroke-width:2.6}

/* ---------- Eingabe-Sheet ---------- */
.scrim{position:fixed;inset:0;z-index:30;background:var(--scrim);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:fade .2s ease-out}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:31;max-height:94dvh;overflow:auto;overscroll-behavior:contain;background:var(--card-solid);border-radius:30px 30px 0 0;padding-top:8px;padding-bottom:var(--safe-b);padding-left:var(--gutter-l);padding-right:var(--gutter-r);animation:sheet-up .32s var(--ease);box-shadow:var(--shadow-lg)}
.sheet form{max-width:560px;margin:0 auto}
.grip{width:40px;height:5px;border-radius:9px;background:var(--fill-2);margin:0 auto 10px}
.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.sheet-head h2{font-size:21px;font-weight:800;letter-spacing:-.02em;margin:0}
.x{width:38px;height:38px;border-radius:50%;border:0;background:var(--fill);font-size:22px;line-height:1}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--fill);border-radius:16px;padding:4px}
.seg button{border:0;background:none;border-radius:12px;padding:9px 4px;font-weight:700;font-size:14px;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--card-solid);color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.12)}
.amount{display:flex;align-items:baseline;gap:8px;border-bottom:2px solid var(--line);margin-top:16px}
.amount:focus-within{border-color:var(--accent)}
.amount input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font-family:var(--font);font-size:46px;font-weight:800;letter-spacing:-.04em;padding:4px 0;outline:none;font-variant-numeric:tabular-nums}
.amount input::placeholder{color:var(--faint);opacity:.6}
.amount span{font-size:28px;font-weight:700;color:var(--muted)}
.err{color:var(--danger);font-size:13px;font-weight:700;margin-top:8px}
.text-in{display:block;width:100%;border:1px solid var(--line);background:var(--fill);color:var(--ink);border-radius:14px;padding:12px 14px;font:inherit;font-size:16px}
.text-in:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}
.field{margin-top:18px}
.flabel{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.name-in{margin-top:12px}
.tpl{display:flex;gap:7px;overflow-x:auto;margin-top:14px;padding-bottom:2px;scrollbar-width:none}
.tpl::-webkit-scrollbar{display:none}
.tpl .chip{background:var(--fill);border-color:transparent;font-weight:600}
.tpl .chip b{font-weight:800;font-variant-numeric:tabular-nums}
.switch{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px;font-weight:700}
.switch small{display:block;font-weight:500;color:var(--muted);font-size:13px}
.switch input{appearance:none;-webkit-appearance:none;flex:none;width:50px;height:30px;border-radius:999px;background:var(--fill-2);position:relative;margin:0;cursor:pointer;transition:background .2s}
.switch input::before{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.3);transition:transform .25s var(--ease)}
.switch input:checked{background:var(--accent)}
.switch input:checked::before{transform:translateX(20px)}
details.more{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
details.more summary{cursor:pointer;color:var(--accent);font-weight:700;list-style:none}
details.more summary::-webkit-details-marker{display:none}
details.more summary::after{content:" ▾"}
details.more[open] summary::after{content:" ▴"}
.sheet-actions{position:sticky;bottom:0;display:flex;gap:10px;background:var(--card-solid);padding-block:14px 16px;margin-top:10px}
.sheet-actions .primary{flex:1;font-size:17px;min-height:54px}
.sheet-actions .danger{min-height:54px}

/* ---------- Töpfe ---------- */
.split{display:flex;gap:3px;height:12px;border-radius:999px;overflow:hidden;margin:2px 0 6px}
.split span{display:block;height:100%;background:var(--c);transform-origin:left}
.pot{display:grid;grid-template-columns:46px minmax(0,1fr) auto;column-gap:12px;row-gap:2px;align-items:center;padding:14px 0}
.pot-ring{grid-row:1 / span 2}
.pot-add{grid-column:2 / 4;color:var(--muted);font-size:12.5px}
.pot-add b{color:var(--accent);font-weight:800}
.pot + .pot{border-top:1px solid var(--line)}
.pot-ring{width:46px;height:46px;flex:none;position:relative}
.pot-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.pot-ring circle{fill:none;stroke-width:5}
.pot-ring .bg{stroke:var(--track)}
.pot-ring .fg{stroke:var(--c);stroke-linecap:round;transition:stroke-dasharray .5s var(--ease)}
.pot-ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:800}
.pot-main{flex:1;min-width:0}
.pot-main b{display:block;font-weight:700;font-size:14px}
.pot-main .bal{font-size:21px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.pot-main small{display:block;color:var(--muted);font-size:12.5px}
.stepper{display:flex;align-items:center;gap:2px;background:var(--fill);border-radius:999px;padding:3px}
.stepper button{width:32px;height:32px;border:0;border-radius:50%;background:var(--card-solid);font-size:18px;line-height:1;font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.stepper span{min-width:40px;text-align:center;font-weight:800;font-size:13.5px;font-variant-numeric:tabular-nums}
.sum-line{display:flex;justify-content:space-between;padding:12px 0 0;font-size:13.5px;color:var(--muted);border-top:1px solid var(--line);margin-top:4px}
.sum-line b{color:var(--accent)}
.sum-line b.bad{color:var(--danger)}
.close-box p{color:var(--muted);margin:4px 0 14px;font-size:14px;max-width:46ch}
.close-box .rest{font-size:32px;font-weight:800;letter-spacing:-.04em;margin:0;color:var(--ink);font-variant-numeric:tabular-nums}
.close-actions{display:flex;flex-wrap:wrap;gap:8px}
.close-actions .primary{flex:1}

/* ---------- Toast ---------- */
.toast{position:fixed;z-index:40;left:50%;transform:translateX(-50%);bottom:calc(96px + var(--safe-b));width:max-content;max-width:calc(100vw - 32px);background:var(--toast-bg);color:var(--toast-fg);border-radius:18px;padding:10px 10px 10px 16px;display:flex;align-items:center;gap:14px;font-size:14px;font-weight:600;box-shadow:var(--shadow-lg);animation:toast-in .35s var(--ease)}
.toast button{border:0;background:none;color:var(--toast-action);font-weight:800;padding:6px 8px}

/* ---------- Effekte ---------- */
.enter .card,.enter .hero,.enter .notice,.enter .day,.enter .filters{animation:rise .6s var(--ease) backwards;animation-delay:calc(var(--d,0) * 70ms)}
.enter .hbar span{animation:grow-x .9s var(--ease) backwards;animation-delay:.25s}
.enter .rank-bar span,.enter .fixbar span,.enter .split span{animation:grow-x .9s var(--ease) backwards;animation-delay:.35s}
.enter .col-bar{animation:grow-y .8s var(--ease) backwards;animation-delay:calc(.2s + var(--i,0) * 60ms)}
.enter .tile{animation:rise .5s var(--ease) backwards;animation-delay:calc(.15s + var(--i,0) * 35ms)}
@keyframes rise{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
@keyframes grow-x{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes grow-y{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.25)}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:none}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
@keyframes sheen{from{transform:translateX(-130%)}to{transform:translateX(130%)}}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(-60px,40px)}}
@keyframes sheet-up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}

@media (min-width:640px){
  .sheet{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-50%);width:520px;max-height:90vh;border-radius:30px;padding-left:24px;padding-right:24px;padding-bottom:0;animation:fade .2s ease-out}
  .grip{display:none}
  .app{padding-top:8px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* ---------- Login (cloud.js) ---------- */
body.locked .tabs,body.locked .top .month{display:none}
.account{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:18px;padding-inline:6px;font-size:13px;color:var(--muted)}
.login{margin-top:28px}
.login h2{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:6px 0 4px}
.login .muted{color:rgba(255,255,255,.8)}
.login form{display:grid;gap:12px;margin-top:18px}
.login .text-in{background:rgba(255,255,255,.95);color:#0B1220;border-color:transparent}
.login .err{margin-top:0;color:#FECACA}
.link-btn{border:0;background:none;color:#fff;font:inherit;font-weight:700;padding:6px 0;text-decoration:underline;text-underline-offset:3px;opacity:.9}
.login-info{background:rgba(255,255,255,.16);color:#fff;border-radius:14px;padding:10px 12px;font-size:14px;margin:12px 0 0}
.login .btn.primary{background:#fff;color:#065F46;box-shadow:none}
