:root{
  /* Immer dunkel (D14). Design: Fusion aus A und B (I15) */
  color-scheme:dark;
  --bg:#121418; --card:#1b1e24; --ink:#f1f1ee; --muted:#959ca7; --line:#2a2e36;
  --macher:#3cc47c; --macher-bg:#173526; --lacher:#f06a52; --lacher-bg:#3a1f1a;
  --teil:#e6a93a; --teil-bg:#3a2e14; --accent:#3cc47c; --accent-ink:#0d1a12;
  --glass:linear-gradient(160deg,rgba(255,255,255,.08),rgba(255,255,255,.03) 45%,rgba(255,255,255,.02));
  --glass-line:rgba(255,255,255,.10);
  --shadow:none;
  --r:20px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink)}
/* Leichter grüner Schimmer oben links und kühles Licht oben rechts */
body{background:radial-gradient(110% 420px at 15% -60px,rgba(60,196,124,.16),rgba(60,196,124,0) 70%),radial-gradient(120% 480px at 90% -80px,#262c38,rgba(20,23,29,0) 70%),var(--bg);background-repeat:no-repeat}
/* Kein Zoom durch Doppeltippen (z. B. bei − / + mehrmals schnell), Zoomen mit zwei Fingern bleibt möglich.
   Gilt für alle Elemente, weil Fenster eigene Scrollbereiche sind und die Regel dort sonst nicht greift. */
*{touch-action:manipulation}
body{font:16px/1.4 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,sans-serif;
  padding:env(safe-area-inset-top) 0 calc(96px + env(safe-area-inset-bottom));min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
.wrap{max-width:560px;margin:0 auto;padding:0 16px}
#view{padding-bottom:16px}
header{padding:20px 2px 4px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
/* Schriftzug in Silber, „oder Lacher?“ leise gespiegelt (Motto: ein Spiegel) */
h1{font-size:30px;line-height:1.04;margin:0;letter-spacing:-.01em;font-weight:800;background:linear-gradient(180deg,#fff,#c3c9d2);-webkit-background-clip:text;background-clip:text;color:transparent}
h1 span{background:linear-gradient(180deg,#8e95a0,#6a717c);-webkit-background-clip:text;background-clip:text;color:transparent}
.refl{font-size:30px;font-weight:800;letter-spacing:-.01em;line-height:1;height:15px;margin-top:4px;overflow:hidden;transform:scaleY(-1);user-select:none;
  background:linear-gradient(0deg,rgba(195,201,210,.28),rgba(195,201,210,0) 60%);-webkit-background-clip:text;background-clip:text;color:transparent}
/* Macher-Quote groß oben rechts */
.quote{text-align:right;white-space:nowrap;flex:none;padding-top:4px}
.quote b{display:block;font-size:32px;font-weight:800;line-height:1;letter-spacing:-.02em;color:var(--macher)}
.quote small{display:block;margin-top:4px;font-size:11px;font-weight:600;color:var(--muted)}
h2{font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--muted);margin:24px 4px 10px;font-weight:700}
/* Gläserne Karten mit dezentem Lichtstreifen */
.card{position:relative;overflow:hidden;background:var(--glass),var(--bg);border:1px solid var(--glass-line);border-radius:var(--r);padding:16px 18px;margin-bottom:10px}
.card::before{content:"";position:absolute;top:-60%;right:-15%;width:55%;height:220%;background:linear-gradient(105deg,rgba(255,255,255,0) 30%,rgba(255,255,255,.05) 50%,rgba(255,255,255,0) 70%);transform:rotate(8deg);pointer-events:none}
.goal{display:flex;gap:14px;align-items:center;width:100%;text-align:left}
.goal .x{flex:1;min-width:0}
.goal .t{font-weight:650;font-size:16px;line-height:1.3;margin-bottom:4px}
/* Restzeit-Ring (I15) */
.ring{position:relative;flex:none;width:56px;height:56px;display:grid;place-items:center;text-align:center}
.ring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.ring circle{fill:none;stroke:rgba(255,255,255,.08);stroke-width:4}
.ring .arc{stroke:var(--macher);stroke-linecap:round}
.ring b{display:block;font-size:18px;font-weight:800;line-height:1}
.ring b.long{font-size:15px}
.ring b.today{font-size:12px}
.ring small{display:block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:1px}
.meta{display:flex;flex-wrap:wrap;gap:6px 10px;color:var(--muted);font-size:13px;align-items:center}
.chip{display:inline-block;font-size:12px;font-weight:600;padding:3px 8px;border-radius:999px;background:var(--bg);color:var(--muted)}
/* Fälliges Vorhaben grün getönt */
.due{background:linear-gradient(160deg,rgba(60,196,124,.20),rgba(60,196,124,.06) 50%,rgba(255,255,255,.02)),var(--bg);border-color:rgba(60,196,124,.40)}
.due .q{font-size:15px;margin:2px 0 12px;color:var(--muted)}
.btns3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.ans{padding:12px 6px;border-radius:12px;font-weight:700;font-size:15px}
.ans.ja{background:var(--macher-bg);color:var(--macher)}
.ans.teil{background:var(--teil-bg);color:var(--teil)}
.ans.nein{background:var(--lacher-bg);color:var(--lacher)}
.ans small{display:block;font-weight:500;font-size:12px;opacity:.85}
.ans{box-shadow:inset 0 0 0 1px color-mix(in srgb,currentColor 28%,transparent)}
.empty{text-align:center;color:var(--muted);padding:36px 12px}
.empty b{display:block;color:var(--ink);font-size:18px;margin-bottom:6px}
.banner{display:flex;gap:12px;align-items:flex-start;background:var(--glass),var(--bg);border:1px solid var(--glass-line);border-radius:var(--r);padding:14px 16px;margin-top:8px;font-size:14px}
.banner .x{flex:1}
.banner.hl{border-color:rgba(60,196,124,.55)}
.banner b{display:block;font-size:15px;margin-bottom:2px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:13px 16px;border-radius:14px;font-weight:700;background:var(--accent);color:var(--accent-ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.btn.sec{background:rgba(255,255,255,.07);color:var(--ink);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.btn.small{padding:8px 12px;font-size:14px;border-radius:10px}
.btn.full{width:100%}
.btn.danger{background:var(--lacher-bg);color:var(--lacher);box-shadow:none}
/* Leiste unten (I15, Variante C): schwebende Glaskapsel, rechts daneben das Plus (nur im Tab Vorhaben) */
nav{position:fixed;left:16px;right:16px;bottom:max(14px,calc(env(safe-area-inset-bottom) - 10px));max-width:528px;margin:0 auto;
  display:flex;gap:10px;align-items:center;z-index:6}
body::after{content:"";position:fixed;left:0;right:0;bottom:0;height:calc(110px + env(safe-area-inset-bottom));pointer-events:none;z-index:5;
  background:linear-gradient(180deg,rgba(18,20,24,0),rgba(18,20,24,.92) 70%)}
nav .in{flex:1;min-width:0;display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:6px;height:64px;border-radius:32px;
  background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.05) 50%,rgba(255,255,255,.04)),rgba(18,20,24,.82);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.13);
  box-shadow:0 12px 32px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.10)}
nav .in button{border-radius:26px;font-size:11px;font-weight:600;color:#7a828e;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0}
nav .in button svg{width:22px;height:22px}
nav .in button.on{color:var(--macher);background:rgba(60,196,124,.14);box-shadow:inset 0 0 0 1px rgba(60,196,124,.28)}
.fab{flex:none;width:64px;height:64px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:32px;line-height:64px;
  box-shadow:0 8px 24px rgba(60,196,124,.25),inset 0 1px 0 rgba(255,255,255,.35)}
/* Sheets */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.6);opacity:0;pointer-events:none;transition:opacity .2s;z-index:20}
.scrim.open{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;max-height:92vh;overflow:auto;background:var(--card);border-radius:22px 22px 0 0;
  transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);z-index:21;padding:8px 0 calc(20px + env(safe-area-inset-bottom))}
.sheet.open{transform:none}
.sheet{box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.sheet .wrap{padding:0 20px}
.grab{position:absolute;left:50%;top:6px;width:40px;height:5px;margin-left:-20px;border-radius:3px;background:var(--line)}
.sheet{overscroll-behavior:contain}
.sheet-bar{position:sticky;top:-8px;z-index:3;display:flex;align-items:center;height:48px;margin:-8px 0 0;padding:4px 10px 0;background:var(--card);border-radius:22px 22px 0 0}
.sheet-back{display:flex;align-items:center;gap:2px;padding:8px 10px 8px 4px;font-size:16px;font-weight:600;color:var(--ink)}
.sheet-back svg{width:22px;height:22px}
/* Rückfrage-Dialog */
.dialog-scrim{position:fixed;inset:0;z-index:45;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;transition:opacity .15s}
.dialog-scrim.show{opacity:1}
.dialog{width:100%;max-width:340px;background:var(--card);border-radius:18px;padding:20px;border:1px solid var(--glass-line);box-shadow:0 12px 40px rgba(0,0,0,.5)}
.dialog h4{margin:0 0 6px;font-size:18px}
.dialog p{margin:0 0 14px;color:var(--muted);font-size:15px}
.dialog-btns{display:flex;flex-direction:column;gap:8px}
.dialog-small{align-self:center;margin-top:6px}
/* Empfohlene Handy-Einstellungen */
.tipcount{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--teil-bg);color:var(--teil);font-size:13px;margin-right:4px}
.tips{display:flex;flex-direction:column;gap:8px}
.tip{background:var(--bg);border-radius:12px}
.tip summary{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;cursor:pointer;list-style:none}
.tip summary::-webkit-details-marker{display:none}
.tip summary::after{content:"›";margin-left:auto;color:var(--muted);font-size:20px;line-height:22px;transition:transform .2s}
.tip[open] summary::after{transform:rotate(90deg)}
.tip-ico{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:800;background:var(--line);color:var(--muted)}
.tip.ok .tip-ico{background:var(--macher-bg);color:var(--macher)}
.tip.todo .tip-ico{background:var(--teil-bg);color:var(--teil)}
.tip-x{min-width:0}
.tip-x b{display:block;font-size:15px}
.tip-x small{display:block;color:var(--muted);font-size:13px;margin-top:2px;line-height:1.35}
.tip ol{margin:0;padding:0 14px 14px 54px;font-size:14px;line-height:1.5}
.tip ol li{margin:4px 0}
.sheet h3{font-size:22px;margin:6px 0 16px;letter-spacing:-.01em}
label.f{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:16px 0 6px}
input[type=text],input[type=date],input[type=time],textarea,select{width:100%;padding:13px 14px;border-radius:12px;border:1px solid var(--line);background:var(--bg);font-size:16px;-webkit-appearance:none;appearance:none}
textarea{min-height:80px;resize:vertical}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{padding:8px 12px;border-radius:999px;background:var(--bg);font-size:14px;font-weight:600;color:var(--muted);border:1px solid transparent}
.chips button.on{background:var(--accent);color:var(--accent-ink)}
.seg{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.seg button{padding:10px;border-radius:12px;background:var(--bg);font-size:14px;font-weight:600;color:var(--muted)}
.seg button.on{background:var(--accent);color:var(--accent-ink)}
.seg.conf{grid-template-columns:repeat(5,1fr);gap:6px}
.seg.conf button{padding:10px 2px;font-size:13px}
.calib-v{font-weight:700;font-size:16px;margin:0}
.letter.crit{font-style:normal}
.critbtn{display:block;margin-top:8px;padding:4px 0;background:none;color:var(--muted);font:inherit;font-size:14px;font-weight:600}
.row{display:flex;gap:8px}
.row>*{flex:1}
.hint{font-size:13px;color:var(--muted);margin-top:6px}
.drafts{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.draft{display:flex;align-items:stretch;gap:8px}
.draft-open{flex:1;min-width:0;text-align:left;background:var(--bg);border-radius:12px;padding:12px 14px;color:var(--ink)}
.draft-open b{display:block;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.draft-open small{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.draft-del{flex:none;min-width:48px;padding:0 12px;border-radius:12px;background:var(--bg);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}
.draft-del.armed{background:var(--lacher-bg);color:var(--lacher)}
.letter{background:var(--bg);border-radius:12px;padding:12px 14px;font-style:italic;margin:4px 0 16px;white-space:pre-wrap}
.actions{display:flex;flex-direction:column;gap:8px;margin-top:22px}
/* Bilanz (I15): Quote als großer Ring, darunter Kacheln in den Ergebnisfarben */
.quotecard{display:flex;gap:18px;align-items:center;padding:20px 56px 20px 20px;margin-top:16px}
.quotecard .x{flex:1;min-width:0}
.verdict{font-size:19px;font-weight:700;line-height:1.25}
.quotecard .hint{margin-top:6px}
.bigring{position:relative;flex:none;width:104px;height:104px;display:grid;place-items:center}
.bigring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.bigring circle{fill:none;stroke:rgba(255,255,255,.08);stroke-width:7}
.bigring .arc{stroke:var(--macher);stroke-linecap:round}
.big{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1;white-space:nowrap}
.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.card.stat{margin:0;padding:12px 6px;text-align:center;border-radius:16px}
.stat b{display:block;font-size:22px;font-weight:800}
.stat span{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.stat.ja{color:var(--macher)}.stat.teil{color:var(--teil)}.stat.nein{color:var(--lacher)}
.catrow{display:grid;grid-template-columns:96px 1fr 44px;gap:10px;align-items:center;font-size:14px;margin:8px 0}
.catbar{height:10px;border-radius:5px;background:var(--line);display:flex;overflow:hidden}
.catbar i{display:block;height:100%}
.hist{display:flex;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.hist:first-child,.histmonth+.hist{border-top:0}
.histmonth{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);padding:14px 0 2px;border-top:1px solid var(--line)}
.histmonth:first-child{border-top:0;padding-top:2px}
.histmore{display:block;width:100%;padding:14px 0 4px;border-top:1px solid var(--line);color:var(--accent);font:inherit;font-weight:600;background:none}
.badge{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:15px}
.badge.ja{background:var(--macher-bg);color:var(--macher)}
.badge.teil{background:var(--teil-bg);color:var(--teil)}
.badge.nein{background:var(--lacher-bg);color:var(--lacher)}
.hist .x{flex:1;min-width:0}
.hist .x div:first-child{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.set{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line)}
.set:first-child{border-top:0}
/* Listen in Karten: kein doppelter Innenabstand oben und unten */
.card>:is(.set,.hist,.chain):first-child{padding-top:2px}
.card>:is(.set,.hist,.chain):last-child{padding-bottom:2px}
.set .x{flex:1}
.set .x div:last-child{font-size:13px;color:var(--muted)}
.toast{position:fixed;left:50%;bottom:calc(150px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:var(--bg);
  padding:12px 18px;border-radius:14px;font-weight:600;opacity:0;transition:all .25s;z-index:40;max-width:88vw;text-align:center;pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}
.steps{margin:8px 0 0;padding-left:20px;font-size:14px}
.steps li{margin:4px 0}
.hidden{display:none!important}
/* Teilen */
.card.rel{position:relative}
.sharebtn{position:absolute;top:12px;right:12px;z-index:1;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted);background:rgba(255,255,255,.07)}
.sharebtn svg{width:20px;height:20px}
.hist .sharebtn{position:static;flex:none;width:36px;height:36px}
.btn svg{width:18px;height:18px}
.sharepreview{display:block;max-width:100%;max-height:56vh;margin:0 auto;border-radius:16px;box-shadow:0 6px 24px rgba(0,0,0,.25)}
a.btn{text-decoration:none}
.rowbtn{width:100%;text-align:left;color:inherit}
a.rowbtn{text-decoration:none}
.hint a{color:inherit}
.rowbtn .x div:last-child{font-size:13px;color:var(--muted)}
.motto{margin:6px 0 0;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.2em;text-transform:uppercase}
/* Momente (Vollbild, immer dunkel wie die Teilen-Bilder) */
.letter.sealed{font-style:normal;color:var(--muted)}
.moment{position:fixed;inset:0;z-index:50;background:radial-gradient(circle at 50% 30%,rgba(60,196,124,.28),rgba(60,196,124,0) 60%),#14161a;color:#f1f1ee;
  display:flex;align-items:center;justify-content:center;padding:24px 24px calc(24px + env(safe-area-inset-bottom));opacity:0;transition:opacity .3s;overflow-y:auto}
.moment.show{opacity:1}
.moment{overscroll-behavior:contain}
/* Hinweis „Zum Home-Bildschirm“ im Browser des Handys */
.install{align-items:flex-start}
@media (min-width:700px){.install{align-items:center}}
.install .moment-in{padding-top:max(12px,env(safe-area-inset-top))}
.install-logo{font-size:34px;line-height:1.05;font-weight:800;letter-spacing:-.02em;margin:8px 0 6px}
.install-logo span{color:#9a9ea6;font-weight:700}
.install-title{font-size:24px;font-weight:800;letter-spacing:-.01em;color:#f1f1ee;text-transform:none;margin:28px 0 8px}
.install-why{font-size:16px;color:#c9ccd1;margin:0 0 18px}
.install-steps{text-align:left;margin:0;padding:16px 18px 16px 40px;background:#1d2026;border:1px solid #3cc47c;border-radius:16px;font-size:16px}
.install-steps li{margin:8px 0;padding-left:4px}
.install-steps li::marker{color:#3cc47c;font-weight:800}
.install-ico{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;vertical-align:middle;color:#14161a;background:#3cc47c;margin:0 2px}
.install-ico svg{width:17px;height:17px}
.install-link{display:inline-block;margin:4px 0 16px;padding:10px 16px;border-radius:12px;background:#1d2026;border:1px solid #3cc47c;font-weight:600;font-size:17px;word-break:break-all}
.install-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.install .btn{background:#3cc47c;color:#0d1a12}
.install .btn.sec{background:#2c3038;color:#f1f1ee}
.install-skip{margin-top:28px;color:#9a9ea6;font:inherit;font-size:15px;text-decoration:underline;background:none}
.install-note{font-size:13px;color:#7d818a;margin:6px 0 0}
.moment-in{max-width:420px;width:100%;text-align:center}
.moment .fx{opacity:0;transform:translateY(10px);transition:opacity .7s ease-out,transform .7s ease-out}
.moment .fx.in{opacity:1;transform:none}
.m-title{font-size:44px;font-weight:800;letter-spacing:-.02em;margin:28px 0 8px;color:#f1f1ee;text-transform:none}
.m-line{font-size:19px;font-weight:600;margin:0 0 14px}
.m-goal{font-size:17px;color:#cfd2d6;margin:0 0 18px;font-style:italic}
.m-sub{font-size:15px;color:#9a9ea6;margin:6px 0}
.m-btn{margin-top:28px;min-width:180px;background:#3cc47c;color:#0d1a12}
/* Umschlag – Ebenen wie bei einem echten Umschlag (hinten → vorn):
   Rückwand (1) · Brief (2) · vordere Tasche (3) · Lasche geschlossen (4) · Siegel (5).
   Die offene Lasche liegt hinter allem (0), damit der Brief davor hinein-/herausgleiten kann. */
.env{position:relative;width:170px;height:112px;margin:0 auto;perspective:600px}
.env-back{position:absolute;inset:0;border-radius:10px;background:#cfc2aa;box-shadow:0 10px 30px rgba(0,0,0,.35);z-index:1}
.env-paper{position:absolute;left:14px;right:14px;top:12px;height:92px;border-radius:5px;z-index:2;
  background:repeating-linear-gradient(#fffdf8 0 13px,#e7e2d6 13px 14px) 0 18px/100% 100% no-repeat,#fffdf8;box-shadow:0 2px 6px rgba(0,0,0,.18);display:none}
.env-front{position:absolute;inset:0;border-radius:10px;overflow:hidden;z-index:3}
.env-front::before{content:"";position:absolute;inset:0;clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%);
  background:linear-gradient(to top right,transparent 49.4%,#d9cdb7 50%,transparent 50.6%),linear-gradient(to top left,transparent 49.4%,#d9cdb7 50%,transparent 50.6%),#e9dfcd}
.env-flap{position:absolute;left:0;right:0;top:0;height:68px;background:#ddd1bb;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transform:rotateX(180deg);z-index:0;border-radius:10px 10px 0 0}
.env-seal{position:absolute;left:50%;top:48px;width:46px;height:46px;margin-left:-23px;border-radius:50%;background:#3cc47c;color:#14161a;font-weight:800;font-size:22px;
  display:grid;place-items:center;z-index:5;box-shadow:0 4px 12px rgba(0,0,0,.35);transform:scale(0)}
/* Versprechen: Brief schwebt über der Öffnung, gleitet langsam hinein, danach schließt sich die Lasche, dann das Siegel */
.promise .env{margin-top:100px}
.env.with-letter .env-paper{display:block;transform:translateY(-112px)}
.env.play.with-letter .env-paper{animation:paperIn 1.2s cubic-bezier(.45,0,.3,1) forwards}
.env.play .env-flap{animation:flapClose .55s ease-in-out .2s forwards}
.env.play.with-letter .env-flap{animation-delay:1.5s}
.env.play .env-seal{animation:sealOn .35s cubic-bezier(.3,1.6,.5,1) .85s forwards}
.env.play.with-letter .env-seal{animation-delay:2.15s}
@keyframes paperIn{from{transform:translateY(-112px)}to{transform:translateY(0)}}
@keyframes flapClose{0%{transform:rotateX(180deg);z-index:0}49%{z-index:0}50%{z-index:4}100%{transform:rotateX(0);z-index:4}}
@keyframes sealOn{to{transform:scale(1)}}
/* Moment der Wahrheit: Umschlag startet geschlossen und versiegelt, Brief liegt drin */
.env.closed .env-paper{display:block}
.env.closed .env-flap{transform:rotateX(0);z-index:4}
.env.closed .env-seal{transform:scale(1)}
.env.closed.opening .env-seal{animation:sealOff .4s ease-in forwards}
.env.closed.opening .env-flap{animation:flapOpen .7s ease-in-out .5s forwards}
.env.closed.opening .env-paper{animation:paperOut 1.2s cubic-bezier(.45,0,.3,1) 1.3s forwards}
@keyframes sealOff{to{transform:scale(0) rotate(-30deg);opacity:0}}
@keyframes flapOpen{0%{transform:rotateX(0);z-index:4}49%{z-index:4}50%{z-index:0}100%{transform:rotateX(180deg);z-index:0}}
@keyframes paperOut{from{transform:translateY(0)}to{transform:translateY(-96px)}}
/* Kalenderblatt (Vorhaben ohne Brief) */
.cal{position:relative;width:132px;height:150px;margin:0 auto;border-radius:16px;background:#fffdf8;color:#16181c;box-shadow:0 10px 30px rgba(0,0,0,.35);overflow:visible;text-align:center}
.cal-top{height:36px;line-height:36px;border-radius:16px 16px 0 0;background:#3cc47c;color:#14161a;font-weight:800;font-size:15px;letter-spacing:.12em}
.cal-day{font-size:60px;font-weight:800;line-height:1;margin-top:14px;letter-spacing:-.02em}
.cal-wd{font-size:13px;color:#6b6f76;font-weight:600;margin-top:8px}
.cal-ring{position:absolute;left:6px;top:40px;width:120px;height:74px;overflow:visible}
.cal-ring path{fill:none;stroke:#3cc47c;stroke-width:4.5;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100}
.cal-seal{top:auto;bottom:-16px;left:auto;right:-16px;margin:0}
.promise .cal{margin-top:80px;transform:translateY(-14px);opacity:0}
.cal.play{animation:calIn .6s ease-out forwards}
.cal.play .cal-ring path{animation:ringDraw .9s ease-in-out .7s forwards}
.cal.play .cal-seal{animation:sealOn .35s cubic-bezier(.3,1.6,.5,1) 1.7s forwards}
@keyframes calIn{to{transform:none;opacity:1}}
@keyframes ringDraw{to{stroke-dashoffset:0}}
.cal.marked .cal-ring path{stroke-dashoffset:0}
.cal.marked .cal-seal{transform:scale(1)}
.cal.pulse{animation:calPulse 1.4s ease-in-out 2}
@keyframes calPulse{50%{transform:scale(1.05);box-shadow:0 10px 40px rgba(60,196,124,.35)}}
.t-cal{margin:0 0 6px}
.t-letter{padding-top:90px}
.t-letter.read{padding-top:0}
.moment.truth{background:radial-gradient(circle at 50% 25%,rgba(230,169,58,.2),rgba(230,169,58,0) 60%),#14161a}
.t-intro{font-size:16px;color:#9a9ea6;margin:0 0 12px}
.t-goal{font-size:30px;font-weight:800;line-height:1.2;margin:0 0 10px;color:#f1f1ee;text-transform:none;letter-spacing:-.01em}
.t-when{font-size:15px;color:#9a9ea6;margin:0 0 30px}
.t-label{font-size:14px;color:#9a9ea6;margin:14px 0 0;font-weight:600}
.t-card{background:#fffdf8;color:#16181c;border-radius:14px;padding:18px 20px;font-style:italic;white-space:pre-wrap;text-align:left;font-size:17px;line-height:1.45;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.t-card b{display:block;font-style:normal;font-size:13px;color:#6b6f76;margin-bottom:6px}
.t-q{font-size:22px;font-weight:800;margin:28px 0 14px}
.t-crit{font-size:16px;color:#c9ccd1;margin:24px 0 -12px}
.truth .ans.ja{background:#173526;color:#3cc47c}.truth .ans.teil{background:#3a2e14;color:#e6a93a}.truth .ans.nein{background:#3a1f1a;color:#f06a52}
.t-later{margin-top:18px;color:#9a9ea6;font-size:14px;font-weight:600}
/* Feiern und Auffangen */
.moment.celebrate{background:radial-gradient(circle at 50% 28%,rgba(60,196,124,.38),rgba(60,196,124,0) 62%),#14161a}
.moment.catch.teil{background:radial-gradient(circle at 50% 25%,rgba(230,169,58,.22),rgba(230,169,58,0) 60%),#14161a}
.moment.catch.lacher{background:radial-gradient(circle at 50% 25%,rgba(240,106,82,.18),rgba(240,106,82,0) 60%),#14161a}
.c-badge{width:120px;height:120px;margin:0 auto;border-radius:50%;background:#173526;border:4px solid #3cc47c;color:#3cc47c;font-size:64px;font-weight:800;display:grid;place-items:center;transform:scale(0)}
.c-badge.pop{animation:sealOn .5s cubic-bezier(.3,1.6,.5,1) forwards}
.c-word{font-size:52px;font-weight:800;letter-spacing:-.01em;color:#3cc47c;margin:22px 0 12px}
.c-quote{font-size:15px;font-weight:700;color:#3cc47c;margin:16px 0 0}
.c-label{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9a9ea6;margin:0}
.catch.teil .c-label{color:#e6a93a}.catch.lacher .c-label{color:#f06a52}
.catch .m-title{font-size:34px;margin-top:12px}
.catch .m-note{margin-top:4px}
.c-actions{display:flex;flex-direction:column;align-items:center}
.c-actions .m-btn svg{width:18px;height:18px;margin-right:6px}
.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.confetti i{position:absolute;top:-20px;width:8px;height:14px;border-radius:2px;opacity:.95;animation:fall 2s ease-in forwards}
@keyframes fall{to{transform:translate(var(--dx),110vh) rotate(var(--r));opacity:.9}}
@media (prefers-reduced-motion: reduce){
  .moment *,.moment{animation:none!important;transition:none!important}
  .c-badge{transform:scale(1)}
  .moment .fx{opacity:1;transform:none}
  .env-flap,.env.closed .env-flap{transform:none;z-index:4}.env-seal{transform:scale(1)}
  .env.with-letter .env-paper{transform:none}
  .env.closed.opening .env-seal{opacity:0}
  .promise .cal{transform:none;opacity:1}.cal-ring path{stroke-dashoffset:0}
}
.moment [hidden]{display:none!important}
/* Onboarding (I06) */
.intro{text-align:center;padding:8px 4px 0}
.intro h3{margin:10px 0 10px}
.intro p{color:var(--muted);line-height:1.5;margin:0 0 8px}
.intro-ico{width:72px;height:72px;margin:8px auto 6px;border-radius:50%;display:grid;place-items:center;font-size:32px;background:var(--macher-bg);color:var(--macher)}
.intro-motto{font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--macher)!important}
.intro-tpl{justify-content:center;margin:16px 0 4px}
.intro-tpl button{color:var(--ink)}
.intro-dots{display:flex;justify-content:center;gap:6px;margin-top:20px}
.intro-dots i{width:6px;height:6px;border-radius:3px;background:var(--line);transition:width .2s}
.intro-dots i.on{width:18px;background:var(--macher)}
@media (prefers-reduced-motion: reduce){.intro-dots i{transition:none}}
/* Anläufe (I04) */
.chip.retry{background:var(--teil-bg);color:var(--teil)}
.attempts{background:var(--bg);border-radius:12px;padding:0 14px}
.attempts .hist{align-items:flex-start}
.attempts .hist .x div:first-child{white-space:normal}
.attempt-note{font-size:13px;font-style:italic;margin-top:4px;white-space:pre-wrap;color:var(--ink)}
/* Schnellwahl Stichtag: Zähler für Wochen/Monate */
.stepper{display:flex;align-items:center;gap:14px;margin-top:10px}
.stepper button{width:38px;height:38px;border-radius:50%;background:var(--bg);color:var(--ink);font-size:22px;font-weight:700;line-height:1}
.stepper button[aria-disabled="true"]{opacity:.35}
.stepper span{min-width:96px;text-align:center;font-weight:600}
/* Vorlagen im Formular (I06): eine Zeile zum Wischen */
.tplrow{flex-wrap:nowrap;overflow-x:auto;margin:8px -4px 0;padding:0 24px 2px 4px;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,#000 82%,transparent);mask-image:linear-gradient(to right,#000 82%,transparent)}
.tplrow::-webkit-scrollbar{display:none}
.tplrow button{flex:none;white-space:nowrap}
/* Abgeschlossenes Vorhaben aus dem Verlauf (I04) */
.hist .x.rowbtn{padding:0;background:none;font:inherit}
.chip.res-ja{background:var(--macher-bg);color:var(--macher)}
.chip.res-teil{background:var(--teil-bg);color:var(--teil)}
.chip.res-nein{background:var(--lacher-bg);color:var(--lacher)}
/* Kategorien (I07): Top 5 + „+ Mehr“ */
#hilfe{scroll-margin-top:16px}
/* Sortierung der Übersicht */
.h2row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.h2row h2{margin-right:0}
.sortbtn{margin:24px 4px 10px 0;padding:5px 11px;border-radius:999px;background:var(--glass),var(--bg);border:1px solid var(--glass-line);color:var(--muted);font:inherit;font-size:12px;font-weight:700;white-space:nowrap}
.grouphd{font-size:13px;font-weight:700;color:var(--ink);margin:14px 4px 8px}
.sortlist{margin-top:10px}
.sortlist .set.on .x div:first-child{color:var(--accent);font-weight:700}
.sortlist .set b{color:var(--accent);font-size:18px}
.chips button.more{border:1px dashed var(--line);background:none;color:var(--muted)}
.catpanel{margin-top:10px;padding:12px;border-radius:14px;background:var(--bg)}
.catadd{display:flex;gap:8px;margin-top:10px}
.catadd input{flex:1;min-width:0}
.catlist{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.catitem{display:flex;align-items:center;background:var(--card);border-radius:12px;min-width:0}
.catpick{flex:1;min-width:0;text-align:left;padding:10px 12px;font-size:14px;font-weight:600;color:var(--muted);border-radius:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.catpick.on{background:var(--accent);color:var(--accent-ink)}
.star{flex:none;width:40px;height:40px;font-size:20px;color:var(--muted);line-height:1}
.star.on{color:var(--teil)}
.catadd .btn.sec{background:var(--card)}
.catbtns{display:flex;gap:6px;flex:none}
/* Anläufe in der Bilanz (I04): eine Zeile pro Vorhaben mit Verlauf */
.chain{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.chain:first-child{border-top:0}
.chain .x{flex:1;min-width:0}
.chain .x div:first-child{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dots{display:flex;gap:4px;flex:none}
.dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800}
.dot.ja{background:var(--macher-bg);color:var(--macher)}
.dot.teil{background:var(--teil-bg);color:var(--teil)}
.dot.nein{background:var(--lacher-bg);color:var(--lacher)}
.dot.open{border:1.5px dashed var(--muted);color:transparent}
.chain-q{margin:4px 0 8px}
