{"id":6,"date":"2026-08-16T13:46:44","date_gmt":"2026-08-16T13:46:44","guid":{"rendered":"https:\/\/wemakemoney.de\/?page_id=6"},"modified":"2026-08-16T13:47:52","modified_gmt":"2026-08-16T13:47:52","slug":"6-2","status":"publish","type":"page","link":"https:\/\/wemakemoney.de\/?page_id=6","title":{"rendered":""},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Dein Plan. Deine Zahlen.<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue&#038;family=Inter:wght@400;500;600;700;800&#038;family=Space+Mono:wght@400;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg: #14170F;\n    --bg-alt: #191D14;\n    --surface: rgba(38,43,34,0.55);\n    --surface-solid: #262B22;\n    --surface-raised: rgba(48,54,40,0.7);\n    --text: #F3F1E7;\n    --muted: #9BA292;\n    --protein: #E14A56;\n    --carbs: #EFBB3E;\n    --fat: #4FA0BA;\n    --accent: #D3E83A;\n    --border: rgba(243,241,231,0.10);\n    --border-hi: rgba(243,241,231,0.22);\n    --radius: 10px;\n    --glow: 0 0 60px rgba(211,232,58,0.18);\n    --sleep: #4FA0BA;\n    --sport: #E14A56;\n    --edu: #EFBB3E;\n    --work: #8C7AE6;\n    --leisure: #D3E83A;\n    --other: #5B6152;\n  }\n  *{box-sizing:border-box;}\n  html{scroll-behavior:smooth;}\n  body{\n    margin:0;\n    background:var(--bg);\n    color:var(--text);\n    font-family:'Inter',sans-serif;\n    line-height:1.5;\n    overflow-x:hidden;\n  }\n  h1,h2,h3{\n    font-family:'Bebas Neue',sans-serif;\n    letter-spacing:0.02em;\n    margin:0;\n    font-weight:400;\n  }\n  .mono{font-family:'Space Mono',monospace;}\n\n  \/* ---------- NOISE + BACKDROP ---------- *\/\n  .noise{\n    position:fixed;inset:0;pointer-events:none;z-index:2;opacity:0.05;mix-blend-mode:overlay;\n    background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\");\n  }\n\n  \/* ---------- TOPNAV ---------- *\/\n  .topnav{\n    position:sticky;top:0;z-index:20;\n    background:rgba(20,23,15,0.72);\n    backdrop-filter:blur(14px);\n    -webkit-backdrop-filter:blur(14px);\n    border-bottom:1px solid var(--border);\n  }\n  .topnav-inner{\n    max-width:760px;margin:0 auto;padding:0.9rem 1.5rem;\n    display:flex;align-items:center;justify-content:space-between;\n  }\n  .topnav-brand{font-family:'Bebas Neue',sans-serif;font-size:1.3rem;letter-spacing:0.03em;}\n  .topnav-brand span{color:var(--accent);}\n  .topnav-links{display:flex;gap:1.4rem;}\n  .topnav-links a{\n    color:var(--muted);text-decoration:none;font-size:0.85rem;font-weight:500;\n    position:relative;padding-bottom:2px;transition:color .2s ease;\n  }\n  .topnav-links a::after{\n    content:'';position:absolute;left:0;bottom:-2px;width:0;height:1px;background:var(--accent);\n    transition:width .25s ease;\n  }\n  .topnav-links a:hover{color:var(--text);}\n  .topnav-links a:hover::after{width:100%;}\n  @media(max-width:520px){.topnav-links{gap:0.9rem;}.topnav-links a{font-size:0.78rem;}}\n\n  \/* ---------- HERO ---------- *\/\n  .hero{\n    position:relative;\n    padding:5.5rem 1.5rem 4.5rem;\n    overflow:hidden;\n    border-bottom:1px solid var(--border);\n  }\n  .blob{\n    position:absolute;\n    border-radius:50%;\n    filter:blur(90px);\n    opacity:0.35;\n    z-index:0;\n    will-change:transform;\n  }\n  .blob-1{width:420px;height:420px;background:var(--accent);top:-160px;left:-120px;animation:float1 22s ease-in-out infinite;}\n  .blob-2{width:360px;height:360px;background:var(--protein);top:60px;right:-140px;animation:float2 26s ease-in-out infinite;}\n  .blob-3{width:300px;height:300px;background:var(--fat);bottom:-160px;left:35%;animation:float3 30s ease-in-out infinite;}\n  @keyframes float1{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(60px,50px) scale(1.15);}}\n  @keyframes float2{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-50px,40px) scale(0.9);}}\n  @keyframes float3{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(40px,-40px) scale(1.1);}}\n\n  .hero-inner{max-width:760px;margin:0 auto;position:relative;z-index:1;}\n  .eyebrow{\n    font-family:'Space Mono',monospace;\n    color:var(--accent);\n    font-size:0.75rem;\n    letter-spacing:0.18em;\n    text-transform:uppercase;\n    margin:0 0 1rem;\n    opacity:0;\n    animation:riseIn .7s ease forwards;\n  }\n  .hero h1{\n    font-size:clamp(2.8rem,9vw,5.4rem);\n    line-height:0.93;\n    background:linear-gradient(100deg,var(--text) 40%,var(--accent) 60%,var(--text) 80%);\n    background-size:200% auto;\n    -webkit-background-clip:text;\n    background-clip:text;\n    color:transparent;\n    animation:riseIn .8s ease forwards, sheen 6s linear infinite 1.2s;\n    opacity:0;\n  }\n  @keyframes riseIn{\n    from{opacity:0;transform:translateY(18px);}\n    to{opacity:1;transform:translateY(0);}\n  }\n  @keyframes sheen{\n    0%{background-position:0% center;}\n    100%{background-position:200% center;}\n  }\n  .hero-sub{\n    color:var(--muted);\n    font-size:1.05rem;\n    max-width:40ch;\n    margin-top:1.2rem;\n    opacity:0;\n    animation:riseIn .8s ease forwards;\n    animation-delay:.15s;\n  }\n  .hero-teaser{\n    margin-top:2.4rem;\n    display:flex;\n    gap:3px;\n    height:10px;\n    max-width:420px;\n    opacity:0;\n    animation:riseIn .8s ease forwards;\n    animation-delay:.3s;\n  }\n  .hero-teaser span{flex:1;border-radius:3px;background:var(--surface-raised);animation:pulseSeg 2.6s ease-in-out infinite;}\n  .hero-teaser span:nth-child(1),.hero-teaser span:nth-child(2){background:var(--protein);animation-delay:0s;}\n  .hero-teaser span:nth-child(3),.hero-teaser span:nth-child(4),.hero-teaser span:nth-child(5){background:var(--carbs);animation-delay:.3s;}\n  .hero-teaser span:nth-child(6),.hero-teaser span:nth-child(7){background:var(--fat);animation-delay:.6s;}\n  @keyframes pulseSeg{0%,100%{opacity:0.65;}50%{opacity:1;}}\n\n  main{max-width:760px;margin:0 auto;padding:0 1.5rem 5rem;position:relative;z-index:1;}\n\n  \/* ---------- REVEAL ---------- *\/\n  .reveal{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1);}\n  .reveal.visible{opacity:1;transform:translateY(0);}\n\n  \/* ---------- CARDS \/ FORM ---------- *\/\n  .card{\n    position:relative;\n    background:var(--surface);\n    backdrop-filter:blur(18px);\n    -webkit-backdrop-filter:blur(18px);\n    border:1px solid var(--border);\n    border-radius:var(--radius);\n    padding:2rem;\n    margin-top:2.5rem;\n    overflow:hidden;\n    transition:border-color .3s ease, box-shadow .3s ease;\n  }\n  .card::before{\n    content:'';\n    position:absolute;inset:0;\n    background:radial-gradient(500px circle at var(--x,50%) var(--y,50%), rgba(211,232,58,0.10), transparent 45%);\n    opacity:0;\n    transition:opacity .4s ease;\n    pointer-events:none;\n  }\n  .card:hover::before{opacity:1;}\n  .card:hover{border-color:var(--border-hi);}\n  .card h2{font-size:1.9rem;margin-bottom:1.5rem;}\n  .card h2 span{color:var(--accent);}\n\n  .field{margin-bottom:1.5rem;}\n  .field label{\n    display:block;\n    font-size:0.75rem;\n    letter-spacing:0.08em;\n    text-transform:uppercase;\n    color:var(--muted);\n    margin-bottom:0.6rem;\n  }\n  .field input[type=number]{\n    width:100%;\n    background:var(--bg-alt);\n    border:1px solid var(--border);\n    color:var(--text);\n    padding:0.8rem 0.95rem;\n    border-radius:8px;\n    font-family:'Space Mono',monospace;\n    font-size:1rem;\n    transition:border-color .2s ease, box-shadow .2s ease;\n  }\n  .field input[type=number]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(211,232,58,0.15);}\n\n  .choice-group{display:flex;flex-wrap:wrap;gap:0.5rem;}\n  .choice-btn{\n    position:relative;\n    overflow:hidden;\n    flex:1 1 auto;\n    background:var(--bg-alt);\n    border:1px solid var(--border);\n    color:var(--muted);\n    padding:0.75rem 0.9rem;\n    border-radius:8px;\n    font-family:'Inter',sans-serif;\n    font-size:0.9rem;\n    font-weight:500;\n    cursor:pointer;\n    transition:all .18s ease;\n    text-align:center;\n  }\n  .choice-btn:hover{border-color:var(--accent);color:var(--text);transform:translateY(-1px);}\n  .choice-btn.active{\n    background:var(--accent);\n    border-color:var(--accent);\n    color:#14170F;\n    font-weight:700;\n    box-shadow:0 4px 18px rgba(211,232,58,0.3);\n  }\n  .choice-btn small{display:block;font-weight:400;font-size:0.72rem;opacity:0.8;margin-top:2px;}\n  .ripple{\n    position:absolute;\n    border-radius:50%;\n    background:rgba(243,241,231,0.5);\n    transform:scale(0);\n    animation:rippleAnim .6s ease-out forwards;\n    pointer-events:none;\n  }\n  .choice-btn.active .ripple{background:rgba(20,23,15,0.4);}\n  @keyframes rippleAnim{to{transform:scale(3.5);opacity:0;}}\n\n  .grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;}\n  @media(max-width:520px){.grid-2{grid-template-columns:1fr;}}\n\n  .submit-btn{\n    position:relative;\n    overflow:hidden;\n    width:100%;\n    padding:1.05rem;\n    background:var(--accent);\n    color:#14170F;\n    border:none;\n    border-radius:8px;\n    font-family:'Bebas Neue',sans-serif;\n    font-size:1.35rem;\n    letter-spacing:0.04em;\n    cursor:pointer;\n    margin-top:0.5rem;\n    transition:transform .15s ease, box-shadow .15s ease;\n    box-shadow:0 6px 24px rgba(211,232,58,0.22);\n  }\n  .submit-btn:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(211,232,58,0.32);}\n  .submit-btn:active{transform:translateY(0);}\n  .submit-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px;}\n  .submit-btn.loading{color:transparent;pointer-events:none;}\n  .submit-btn .spinner{\n    display:none;\n    position:absolute;top:50%;left:50%;\n    width:20px;height:20px;\n    margin:-10px 0 0 -10px;\n    border:3px solid rgba(20,23,15,0.3);\n    border-top-color:#14170F;\n    border-radius:50%;\n    animation:spin .6s linear infinite;\n  }\n  .submit-btn.loading .spinner{display:block;}\n  @keyframes spin{to{transform:rotate(360deg);}}\n  .error-msg{color:var(--protein);font-size:0.85rem;margin-top:0.8rem;display:none;}\n\n  \/* ---------- RESULTS ---------- *\/\n  .results{display:none;}\n  .results.visible{display:block;}\n  .results-heading{margin-top:3.5rem;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--accent);font-family:'Space Mono',monospace;}\n\n  .numbers-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-top:1rem;}\n  .stat{background:var(--surface-solid);padding:1.5rem 1rem;text-align:center;transition:background .2s ease;}\n  .stat:hover{background:var(--surface-raised);}\n  .stat.highlight{background:linear-gradient(160deg,rgba(211,232,58,0.14),rgba(211,232,58,0.04));}\n  .stat-label{display:block;font-size:0.68rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--muted);margin-bottom:0.5rem;}\n  .stat-value{display:block;font-family:'Space Mono',monospace;font-size:1.7rem;font-weight:700;}\n  .stat.highlight .stat-value{color:var(--accent);}\n  .stat-unit{display:block;font-size:0.7rem;color:var(--muted);margin-top:0.2rem;}\n\n  .macro-section{margin-top:2.5rem;}\n  .macro-section h3{font-size:1.55rem;margin-bottom:1rem;}\n  .macro-bar{position:relative;display:flex;height:36px;border-radius:8px;overflow:hidden;background:var(--bg-alt);border:1px solid var(--border);}\n  .segment{position:relative;height:100%;width:0%;transition:width 1.1s cubic-bezier(.16,1,.3,1);display:flex;align-items:center;justify-content:center;font-family:'Space Mono',monospace;font-size:0.72rem;font-weight:700;color:#14170F;white-space:nowrap;overflow:hidden;}\n  .segment::after{\n    content:'';position:absolute;top:0;left:-40%;width:40%;height:100%;\n    background:linear-gradient(100deg,transparent,rgba(255,255,255,0.35),transparent);\n    animation:shimmer 2.6s ease-in-out infinite;\n    animation-delay:1.2s;\n  }\n  @keyframes shimmer{0%{left:-40%;}100%{left:120%;}}\n  .segment.protein{background:linear-gradient(160deg,var(--protein),#b93743);color:var(--text);}\n  .segment.carbs{background:linear-gradient(160deg,var(--carbs),#c99529);}\n  .segment.fat{background:linear-gradient(160deg,var(--fat),#3a7d93);color:var(--text);}\n  .macro-legend{display:flex;flex-wrap:wrap;gap:1.4rem;margin-top:1rem;}\n  .legend-item{font-size:0.85rem;color:var(--muted);display:flex;align-items:center;gap:0.5rem;}\n  .legend-item strong{color:var(--text);font-family:'Space Mono',monospace;}\n  .dot{width:10px;height:10px;border-radius:3px;display:inline-block;}\n  .dot.protein{background:var(--protein);}\n  .dot.carbs{background:var(--carbs);}\n  .dot.fat{background:var(--fat);}\n\n  .training-section{margin-top:3rem;}\n  .training-section h3{font-size:1.55rem;}\n  .week-strip{display:flex;gap:3px;margin:1rem 0 1.6rem;height:8px;}\n  .week-strip span{flex:1;border-radius:2px;background:var(--surface-raised);transition:background .3s ease, transform .3s ease;}\n  .week-strip span.on{background:var(--accent);}\n\n  .day-card{\n    perspective:800px;\n    background:var(--bg-alt);\n    border:1px solid var(--border);\n    border-radius:var(--radius);\n    padding:1.3rem 1.4rem;\n    margin-bottom:0.9rem;\n    transition:transform .15s ease, border-color .2s ease, box-shadow .2s ease;\n    transform-style:preserve-3d;\n    opacity:0;\n    transform:translateY(20px);\n  }\n  .day-card.shown{opacity:1;transform:translateY(0);transition:opacity .5s ease, transform .5s ease;}\n  .day-card:hover{border-color:var(--border-hi);box-shadow:0 14px 30px rgba(0,0,0,0.35);}\n  .day-card-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:0.8rem;}\n  .day-card-head h4{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:1.35rem;margin:0;}\n  .day-card-head span{font-family:'Space Mono',monospace;font-size:0.72rem;color:var(--muted);}\n  .day-card ul{margin:0;padding:0;list-style:none;}\n  .day-card li{display:flex;justify-content:space-between;padding:0.42rem 0;border-top:1px solid var(--border);font-size:0.92rem;}\n  .day-card li:first-child{border-top:none;}\n  .day-card li span:last-child{font-family:'Space Mono',monospace;color:var(--muted);font-size:0.82rem;}\n  .cardio-note{margin-top:0.6rem;font-size:0.85rem;color:var(--accent);}\n\n  .nutrition-section{margin-top:3rem;}\n  .nutrition-section h3{font-size:1.55rem;margin-bottom:1rem;}\n  .meals{display:flex;flex-direction:column;gap:0.6rem;}\n  .meal-row{display:flex;justify-content:space-between;align-items:center;background:var(--bg-alt);border:1px solid var(--border);border-radius:8px;padding:0.85rem 1.1rem;transition:transform .15s ease, border-color .2s ease;}\n  .meal-row:hover{transform:translateX(4px);border-color:var(--border-hi);}\n  .meal-row .meal-name{font-weight:600;font-size:0.92rem;}\n  .meal-row .meal-kcal{font-family:'Space Mono',monospace;color:var(--muted);font-size:0.85rem;}\n\n  .food-examples{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-top:1.4rem;}\n  @media(max-width:560px){.food-examples{grid-template-columns:1fr;}}\n  .food-col{background:var(--surface-solid);padding:1.1rem 1.2rem;transition:background .2s ease;}\n  .food-col:hover{background:var(--surface-raised);}\n  .food-col h5{margin:0 0 0.6rem;font-size:0.78rem;letter-spacing:0.05em;text-transform:uppercase;font-family:'Inter',sans-serif;}\n  .food-col.protein h5{color:var(--protein);}\n  .food-col.carbs h5{color:var(--carbs);}\n  .food-col.fat h5{color:var(--fat);}\n  .food-col ul{margin:0;padding:0;list-style:none;font-size:0.85rem;color:var(--muted);}\n  .food-col li{padding:0.15rem 0;}\n  .diet-tip{margin-top:1rem;font-size:0.82rem;color:var(--muted);display:none;}\n  .diet-tip.visible{display:block;}\n\n  footer{max-width:760px;margin:0 auto;padding:0 1.5rem 3rem;color:var(--muted);font-size:0.8rem;border-top:1px solid var(--border);padding-top:1.5rem;position:relative;z-index:1;}\n\n  \/* ---------- SECTION HEADERS ---------- *\/\n  .section-intro{margin-top:5rem;}\n  .section-intro .eyebrow{position:static;opacity:1;animation:none;margin-bottom:0.6rem;}\n  .section-intro h2{font-size:2.2rem;}\n  .section-intro p{color:var(--muted);max-width:46ch;margin-top:0.6rem;font-size:0.95rem;}\n\n  \/* ---------- MEMBER AREA ---------- *\/\n  .member-note{font-size:0.78rem;color:var(--muted);margin-top:-0.6rem;margin-bottom:1.6rem;}\n  .login-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;}\n  @media(max-width:520px){.login-grid{grid-template-columns:1fr;}}\n  #memberLoggedOut, #memberLoggedIn{display:none;}\n  #memberLoggedOut.active, #memberLoggedIn.active{display:block;}\n\n  .dash-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:0.6rem;margin-bottom:1.6rem;}\n  .dash-head h3{font-size:1.5rem;}\n  .dash-head .muted{color:var(--muted);font-size:0.85rem;}\n  .logout-link{background:none;border:1px solid var(--border);color:var(--muted);font-size:0.78rem;padding:0.4rem 0.8rem;border-radius:6px;cursor:pointer;transition:all .2s ease;}\n  .logout-link:hover{border-color:var(--border-hi);color:var(--text);}\n\n  .tracker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;}\n  @media(max-width:560px){.tracker-grid{grid-template-columns:1fr 1fr;}}\n  .tracker-field label{font-size:0.7rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:0.5rem;}\n  .tracker-field input{width:100%;background:var(--bg-alt);border:1px solid var(--border);color:var(--text);padding:0.7rem 0.8rem;border-radius:8px;font-family:'Space Mono',monospace;font-size:0.95rem;}\n  .tracker-field input:focus{outline:none;border-color:var(--accent);}\n\n  .dash-body{display:grid;grid-template-columns:auto 1fr;gap:2.4rem;align-items:center;margin-top:2.2rem;}\n  @media(max-width:560px){.dash-body{grid-template-columns:1fr;justify-items:center;}}\n  .donut-wrap{position:relative;width:180px;height:180px;flex-shrink:0;}\n  .donut-wrap svg{transform:rotate(-90deg);}\n  .donut-ring{transition:stroke-dashoffset 1s cubic-bezier(.16,1,.3,1);}\n  .donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}\n  .donut-center .big{font-family:'Space Mono',monospace;font-size:1.5rem;font-weight:700;}\n  .donut-center .small{font-size:0.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:0.05em;}\n\n  .donut-legend{display:flex;flex-direction:column;gap:0.7rem;}\n  .donut-legend .legend-item{justify-content:space-between;width:100%;max-width:280px;}\n  .donut-legend .legend-item .val{color:var(--text);font-family:'Space Mono',monospace;}\n\n  .history{margin-top:2.4rem;}\n  .history h4{font-size:1.1rem;font-weight:600;font-family:'Inter',sans-serif;color:var(--muted);text-transform:uppercase;letter-spacing:0.05em;font-size:0.75rem;margin-bottom:0.9rem;}\n  .history-row{display:grid;grid-template-columns:80px 1fr;gap:0.8rem;align-items:center;margin-bottom:0.55rem;}\n  .history-row .hist-date{font-family:'Space Mono',monospace;font-size:0.75rem;color:var(--muted);}\n  .history-bar{display:flex;height:14px;border-radius:4px;overflow:hidden;background:var(--bg-alt);}\n  .history-bar span{height:100%;}\n  .history-empty{color:var(--muted);font-size:0.85rem;}\n\n  \/* ---------- DOWNLOADS ---------- *\/\n  .download-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin-top:1.6rem;}\n  .download-card{\n    display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;\n    background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);\n    padding:1.3rem 1.5rem;transition:border-color .2s ease, transform .15s ease;\n  }\n  .download-card:hover{border-color:var(--border-hi);transform:translateX(3px);}\n  .download-card h4{font-family:'Bebas Neue',sans-serif;font-size:1.35rem;font-weight:400;margin-bottom:0.3rem;}\n  .download-card p{color:var(--muted);font-size:0.85rem;max-width:44ch;margin:0;}\n  .download-btn{\n    flex-shrink:0;\n    background:transparent;border:1px solid var(--accent);color:var(--accent);\n    padding:0.65rem 1.1rem;border-radius:7px;font-family:'Inter',sans-serif;font-weight:600;font-size:0.85rem;\n    cursor:pointer;transition:all .2s ease;white-space:nowrap;\n  }\n  .download-btn:hover{background:var(--accent);color:#14170F;}\n  .download-btn:disabled{opacity:0.4;cursor:not-allowed;border-color:var(--border);color:var(--muted);}\n  .download-btn:disabled:hover{background:transparent;color:var(--muted);}\n\n  @media (prefers-reduced-motion: reduce){\n    html{scroll-behavior:auto;}\n    .segment, .blob, .hero h1, .eyebrow, .hero-sub, .hero-teaser, .reveal, .day-card{animation:none !important;transition:none !important;opacity:1 !important;transform:none !important;}\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"noise\" aria-hidden=\"true\"><\/div>\n\n<nav class=\"topnav\">\n  <div class=\"topnav-inner\">\n    <span class=\"topnav-brand\">Plan<span>.<\/span><\/span>\n    <div class=\"topnav-links\">\n      <a href=\"#planer\">Planer<\/a>\n      <a href=\"#mitglieder\">Mitgliederbereich<\/a>\n      <a href=\"#downloads\">Downloads<\/a>\n    <\/div>\n  <\/div>\n<\/nav>\n\n<header class=\"hero\" id=\"planer\">\n  <div class=\"blob blob-1\" aria-hidden=\"true\"><\/div>\n  <div class=\"blob blob-2\" aria-hidden=\"true\"><\/div>\n  <div class=\"blob blob-3\" aria-hidden=\"true\"><\/div>\n  <div class=\"hero-inner\">\n    <p class=\"eyebrow\">Personalisiert \u00b7 in Sekunden<\/p>\n    <h1>Dein Plan.<br>Deine Zahlen.<\/h1>\n    <p class=\"hero-sub\">Trainings- und Ern\u00e4hrungsplan, berechnet aus deinen Werten \u2014 kein Standard-Template von der Stange.<\/p>\n    <div class=\"hero-teaser\" aria-hidden=\"true\">\n      <span><\/span><span><\/span><span><\/span><span><\/span><span><\/span><span><\/span><span><\/span>\n    <\/div>\n  <\/div>\n<\/header>\n\n<main>\n  <section class=\"card form-card reveal\">\n    <h2>Deine <span>Werte<\/span><\/h2>\n    <form id=\"planForm\">\n\n      <div class=\"field\">\n        <label>Geschlecht<\/label>\n        <div class=\"choice-group\" data-group=\"gender\">\n          <button type=\"button\" class=\"choice-btn active\" data-value=\"maennlich\">M\u00e4nnlich<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"weiblich\">Weiblich<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"divers\">Divers<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"grid-2\">\n        <div class=\"field\">\n          <label for=\"age\">Alter (Jahre)<\/label>\n          <input type=\"number\" id=\"age\" min=\"14\" max=\"99\" placeholder=\"z. B. 28\">\n        <\/div>\n        <div class=\"field\">\n          <label for=\"weight\">Gewicht (kg)<\/label>\n          <input type=\"number\" id=\"weight\" min=\"30\" max=\"300\" placeholder=\"z. B. 75\">\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <label for=\"height\">Gr\u00f6\u00dfe (cm)<\/label>\n        <input type=\"number\" id=\"height\" min=\"120\" max=\"230\" placeholder=\"z. B. 178\">\n      <\/div>\n\n      <div class=\"field\">\n        <label>Aktivit\u00e4tslevel (Alltag, ohne Training)<\/label>\n        <div class=\"choice-group\" data-group=\"activity\" style=\"flex-direction:column;\">\n          <button type=\"button\" class=\"choice-btn\" data-value=\"sitzend\">Sitzend <small>B\u00fcrojob, kaum Bewegung<\/small><\/button>\n          <button type=\"button\" class=\"choice-btn active\" data-value=\"leicht\">Leicht aktiv <small>etwas Bewegung im Alltag<\/small><\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"moderat\">Moderat aktiv <small>viel auf den Beinen<\/small><\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"aktiv\">Aktiv <small>k\u00f6rperlicher Beruf<\/small><\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"sehraktiv\">Sehr aktiv <small>k\u00f6rperlich sehr fordernd<\/small><\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <label>Ziel<\/label>\n        <div class=\"choice-group\" data-group=\"goal\">\n          <button type=\"button\" class=\"choice-btn active\" data-value=\"abnehmen\">Abnehmen<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"halten\">Gewicht halten<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"muskelaufbau\">Muskelaufbau<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <label>Ern\u00e4hrungsweise<\/label>\n        <div class=\"choice-group\" data-group=\"diet\">\n          <button type=\"button\" class=\"choice-btn active\" data-value=\"omnivor\">Alles<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"vegetarisch\">Vegetarisch<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"pescetarisch\">Pescetarisch<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"vegan\">Vegan<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <label>Trainingserfahrung<\/label>\n        <div class=\"choice-group\" data-group=\"level\">\n          <button type=\"button\" class=\"choice-btn active\" data-value=\"anfaenger\">Anf\u00e4nger<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"fortgeschritten\">Fortgeschritten<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"profi\">Profi<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"field\">\n        <label>Trainingstage pro Woche<\/label>\n        <div class=\"choice-group\" data-group=\"days\">\n          <button type=\"button\" class=\"choice-btn\" data-value=\"2\">2<\/button>\n          <button type=\"button\" class=\"choice-btn active\" data-value=\"3\">3<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"4\">4<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"5\">5<\/button>\n          <button type=\"button\" class=\"choice-btn\" data-value=\"6\">6<\/button>\n        <\/div>\n      <\/div>\n\n      <button type=\"submit\" class=\"submit-btn\">\n        <span class=\"btn-label\">Plan erstellen<\/span>\n        <span class=\"spinner\"><\/span>\n      <\/button>\n      <p class=\"error-msg\" id=\"errorMsg\">Bitte Alter, Gewicht und Gr\u00f6\u00dfe ausf\u00fcllen.<\/p>\n    <\/form>\n  <\/section>\n\n  <section class=\"results\" id=\"results\">\n    <p class=\"results-heading reveal\">Dein Ergebnis<\/p>\n\n    <div class=\"numbers-row reveal\">\n      <div class=\"stat\">\n        <span class=\"stat-label\">Grundumsatz<\/span>\n        <span class=\"stat-value mono\" id=\"bmrVal\">0<\/span>\n        <span class=\"stat-unit\">kcal \/ Tag<\/span>\n      <\/div>\n      <div class=\"stat\">\n        <span class=\"stat-label\">Gesamtumsatz<\/span>\n        <span class=\"stat-value mono\" id=\"tdeeVal\">0<\/span>\n        <span class=\"stat-unit\">kcal \/ Tag<\/span>\n      <\/div>\n      <div class=\"stat highlight\">\n        <span class=\"stat-label\">Kalorienziel<\/span>\n        <span class=\"stat-value mono\" id=\"targetVal\">0<\/span>\n        <span class=\"stat-unit\">kcal \/ Tag<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"macro-section reveal\">\n      <h3>Makron\u00e4hrstoffe<\/h3>\n      <div class=\"macro-bar\" id=\"macroBar\">\n        <div class=\"segment protein\" id=\"segProtein\"><\/div>\n        <div class=\"segment carbs\" id=\"segCarbs\"><\/div>\n        <div class=\"segment fat\" id=\"segFat\"><\/div>\n      <\/div>\n      <div class=\"macro-legend\">\n        <div class=\"legend-item\"><span class=\"dot protein\"><\/span>Protein <strong id=\"proteinG\">\u2013<\/strong><\/div>\n        <div class=\"legend-item\"><span class=\"dot carbs\"><\/span>Kohlenhydrate <strong id=\"carbsG\">\u2013<\/strong><\/div>\n        <div class=\"legend-item\"><span class=\"dot fat\"><\/span>Fett <strong id=\"fatG\">\u2013<\/strong><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"training-section reveal\">\n      <h3>Trainingsplan<\/h3>\n      <div class=\"week-strip\" id=\"weekStrip\"><\/div>\n      <div id=\"trainingDays\"><\/div>\n    <\/div>\n\n    <div class=\"nutrition-section reveal\">\n      <h3>Ern\u00e4hrungsplan<\/h3>\n      <div class=\"meals\" id=\"mealsContainer\"><\/div>\n      <div class=\"food-examples\" id=\"foodExamples\">\n        <div class=\"food-col protein\">\n          <h5>Proteinquellen<\/h5>\n          <ul id=\"foodProteinList\"><\/ul>\n        <\/div>\n        <div class=\"food-col carbs\">\n          <h5>Kohlenhydratquellen<\/h5>\n          <ul id=\"foodCarbsList\"><\/ul>\n        <\/div>\n        <div class=\"food-col fat\">\n          <h5>Fettquellen<\/h5>\n          <ul id=\"foodFatList\"><\/ul>\n        <\/div>\n      <\/div>\n      <p class=\"diet-tip\" id=\"dietTip\"><\/p>\n    <\/div>\n  <\/section>\n\n  <!-- ---------- MITGLIEDERBEREICH ---------- -->\n  <section class=\"section-intro reveal\" id=\"mitglieder\">\n    <p class=\"eyebrow\">Deine Selbstkontrolle<\/p>\n    <h2>Mitglieder&shy;bereich<\/h2>\n    <p>Trag t\u00e4glich ein, wie sich dein Tag aufgeteilt hat \u2014 Schlaf, Sport, Bildung, Arbeit und Erholung \u2014 und sieh die Verteilung auf einen Blick.<\/p>\n  <\/section>\n\n  <section class=\"card reveal\">\n    <p class=\"member-note\">Hinweis: Deine Angaben werden ausschlie\u00dflich lokal in diesem Browser gespeichert (kein Server, kein echtes Nutzerkonto) und sind nur auf diesem Ger\u00e4t sichtbar.<\/p>\n\n    <div id=\"memberLoggedOut\" class=\"active\">\n      <div class=\"login-grid\">\n        <div class=\"field\" style=\"margin-bottom:0;\">\n          <label for=\"memberName\">Name<\/label>\n          <input type=\"text\" id=\"memberName\" placeholder=\"z. B. Alex\" style=\"width:100%;background:var(--bg-alt);border:1px solid var(--border);color:var(--text);padding:0.8rem 0.95rem;border-radius:8px;font-family:'Inter',sans-serif;font-size:0.95rem;\">\n        <\/div>\n        <div class=\"field\" style=\"margin-bottom:0;\">\n          <label for=\"memberEmail\">E-Mail<\/label>\n          <input type=\"email\" id=\"memberEmail\" placeholder=\"du@beispiel.de\" style=\"width:100%;background:var(--bg-alt);border:1px solid var(--border);color:var(--text);padding:0.8rem 0.95rem;border-radius:8px;font-family:'Inter',sans-serif;font-size:0.95rem;\">\n        <\/div>\n      <\/div>\n      <button type=\"button\" class=\"submit-btn\" id=\"loginBtn\" style=\"margin-top:1.4rem;\">\n        <span class=\"btn-label\">Bereich betreten<\/span>\n      <\/button>\n    <\/div>\n\n    <div id=\"memberLoggedIn\">\n      <div class=\"dash-head\">\n        <div>\n          <h3>Willkommen zur\u00fcck, <span id=\"memberGreetName\">\u2013<\/span><\/h3>\n          <p class=\"muted\">Trag deinen heutigen Tag ein oder sieh dir deine Verteilung an.<\/p>\n        <\/div>\n        <button type=\"button\" class=\"logout-link\" id=\"logoutBtn\">Abmelden<\/button>\n      <\/div>\n\n      <div class=\"tracker-grid\">\n        <div class=\"tracker-field\"><label for=\"trSleep\">Schlaf (h)<\/label><input type=\"number\" id=\"trSleep\" min=\"0\" max=\"24\" step=\"0.5\" placeholder=\"7.5\"><\/div>\n        <div class=\"tracker-field\"><label for=\"trSport\">Sport (h)<\/label><input type=\"number\" id=\"trSport\" min=\"0\" max=\"24\" step=\"0.5\" placeholder=\"1\"><\/div>\n        <div class=\"tracker-field\"><label for=\"trEdu\">Bildung (h)<\/label><input type=\"number\" id=\"trEdu\" min=\"0\" max=\"24\" step=\"0.5\" placeholder=\"1.5\"><\/div>\n        <div class=\"tracker-field\"><label for=\"trWork\">Arbeit (h)<\/label><input type=\"number\" id=\"trWork\" min=\"0\" max=\"24\" step=\"0.5\" placeholder=\"8\"><\/div>\n        <div class=\"tracker-field\"><label for=\"trLeisure\">Erholung (h)<\/label><input type=\"number\" id=\"trLeisure\" min=\"0\" max=\"24\" step=\"0.5\" placeholder=\"3\"><\/div>\n        <div class=\"tracker-field\"><label for=\"trDate\">Datum<\/label><input type=\"date\" id=\"trDate\"><\/div>\n      <\/div>\n      <button type=\"button\" class=\"submit-btn\" id=\"saveEntryBtn\" style=\"margin-top:1.4rem;\">\n        <span class=\"btn-label\">Tag speichern<\/span>\n      <\/button>\n      <p class=\"error-msg\" id=\"trackerError\">Die Summe der Stunden darf 24 nicht \u00fcbersteigen.<\/p>\n\n      <div class=\"dash-body\" id=\"dashBody\" style=\"display:none;\">\n        <div class=\"donut-wrap\">\n          <svg viewBox=\"0 0 180 180\" width=\"180\" height=\"180\">\n            <circle cx=\"90\" cy=\"90\" r=\"72\" fill=\"none\" stroke=\"var(--bg-alt)\" stroke-width=\"20\"><\/circle>\n            <g id=\"donutSegments\"><\/g>\n          <\/svg>\n          <div class=\"donut-center\">\n            <span class=\"big mono\" id=\"donutTotal\">0h<\/span>\n            <span class=\"small\">erfasst<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"donut-legend\" id=\"donutLegend\"><\/div>\n      <\/div>\n\n      <div class=\"history\">\n        <h4>Verlauf (letzte Eintr\u00e4ge)<\/h4>\n        <div id=\"historyList\"><p class=\"history-empty\">Noch keine Eintr\u00e4ge \u2014 trag oben deinen ersten Tag ein.<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ---------- DOWNLOADBEREICH ---------- -->\n  <section class=\"section-intro reveal\" id=\"downloads\">\n    <p class=\"eyebrow\">Vorlagen<\/p>\n    <h2>Download&shy;bereich<\/h2>\n    <p>Vorlagen zum Ausdrucken oder in einer Tabellenkalkulation weiterzuf\u00fchren \u2014 f\u00fcr Tage, an denen du lieber offline mitschreibst.<\/p>\n  <\/section>\n\n  <section class=\"card reveal\">\n    <div class=\"download-grid\">\n      <div class=\"download-card\">\n        <div>\n          <h4>Wochenprotokoll Selbstkontrolle<\/h4>\n          <p>Schlaf, Sport, Bildung, Arbeit und Erholung f\u00fcr eine ganze Woche \u2014 passend zum Mitgliederbereich oben.<\/p>\n        <\/div>\n        <button type=\"button\" class=\"download-btn\" data-template=\"wochenprotokoll\">CSV herunterladen<\/button>\n      <\/div>\n      <div class=\"download-card\">\n        <div>\n          <h4>Trainings-Logbuch<\/h4>\n          <p>\u00dcbung, S\u00e4tze, Wiederholungen und Gewicht pro Trainingseinheit festhalten und Fortschritt sichtbar machen.<\/p>\n        <\/div>\n        <button type=\"button\" class=\"download-btn\" data-template=\"trainingslog\">CSV herunterladen<\/button>\n      <\/div>\n      <div class=\"download-card\">\n        <div>\n          <h4>Ern\u00e4hrungstagebuch<\/h4>\n          <p>Mahlzeiten mit Kalorien und Makros protokollieren, um dein Kalorienziel im Blick zu behalten.<\/p>\n        <\/div>\n        <button type=\"button\" class=\"download-btn\" data-template=\"ernaehrungstagebuch\">CSV herunterladen<\/button>\n      <\/div>\n      <div class=\"download-card\">\n        <div>\n          <h4>Meinen aktuellen Plan exportieren<\/h4>\n          <p>Deine berechneten Werte, Makros und dein Trainingsplan als Textdatei zum Aufbewahren oder Ausdrucken.<\/p>\n        <\/div>\n        <button type=\"button\" class=\"download-btn\" id=\"exportPlanBtn\" disabled>Erst Plan erstellen<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n<\/main>\n\n<footer>\n  Hinweis: Diese Berechnung basiert auf g\u00e4ngigen Sch\u00e4tzformeln (Mifflin-St Jeor) und dient der groben Orientierung. Sie ersetzt keine individuelle Beratung durch \u00c4rzt:innen, Ern\u00e4hrungsberater:innen oder Trainer:innen \u2014 besonders bei Vorerkrankungen, Schwangerschaft oder Leistungssport.\n<\/footer>\n\n<script>\n(function(){\n  const state = { gender:'maennlich', age:null, weight:null, height:null, activity:'leicht', goal:'abnehmen', diet:'omnivor', level:'anfaenger', days:3 };\n\n  \/* ---- choice groups + ripple ---- *\/\n  document.querySelectorAll('.choice-group').forEach(group=>{\n    const key = group.dataset.group;\n    group.addEventListener('click', e=>{\n      const btn = e.target.closest('.choice-btn');\n      if(!btn) return;\n\n      const rect = btn.getBoundingClientRect();\n      const ripple = document.createElement('span');\n      ripple.className = 'ripple';\n      const size = Math.max(rect.width, rect.height);\n      ripple.style.width = ripple.style.height = size + 'px';\n      ripple.style.left = (e.clientX - rect.left - size\/2) + 'px';\n      ripple.style.top = (e.clientY - rect.top - size\/2) + 'px';\n      btn.appendChild(ripple);\n      setTimeout(()=>ripple.remove(), 650);\n\n      group.querySelectorAll('.choice-btn').forEach(b=>b.classList.remove('active'));\n      btn.classList.add('active');\n      state[key] = (key==='days') ? parseInt(btn.dataset.value,10) : btn.dataset.value;\n    });\n  });\n\n  \/* ---- spotlight cursor glow on cards ---- *\/\n  document.querySelectorAll('.card').forEach(card=>{\n    card.addEventListener('mousemove', e=>{\n      const rect = card.getBoundingClientRect();\n      card.style.setProperty('--x', ((e.clientX - rect.left)\/rect.width*100) + '%');\n      card.style.setProperty('--y', ((e.clientY - rect.top)\/rect.height*100) + '%');\n    });\n  });\n\n  \/* ---- hero parallax ---- *\/\n  const blobs = document.querySelectorAll('.blob');\n  window.addEventListener('scroll', ()=>{\n    const y = window.scrollY;\n    blobs.forEach((b,i)=>{\n      b.style.transform = `translateY(${y * (0.08 + i*0.05)}px)`;\n    });\n  }, {passive:true});\n\n  \/* ---- inputs ---- *\/\n  const ageInput = document.getElementById('age');\n  const weightInput = document.getElementById('weight');\n  const heightInput = document.getElementById('height');\n  ageInput.addEventListener('input', ()=> state.age = parseFloat(ageInput.value));\n  weightInput.addEventListener('input', ()=> state.weight = parseFloat(weightInput.value));\n  heightInput.addEventListener('input', ()=> state.height = parseFloat(heightInput.value));\n\n  const activityFactors = { sitzend:1.2, leicht:1.375, moderat:1.55, aktiv:1.725, sehraktiv:1.9 };\n\n  function calcBMR(s){\n    const base = 10*s.weight + 6.25*s.height - 5*s.age;\n    if(s.gender==='maennlich') return base + 5;\n    if(s.gender==='weiblich') return base - 161;\n    return base - 78;\n  }\n\n  function calcTarget(tdee, goal){\n    if(goal==='abnehmen') return tdee*0.80;\n    if(goal==='muskelaufbau') return tdee*1.12;\n    return tdee;\n  }\n\n  function calcMacros(s, target){\n    let proteinPerKg = s.goal==='abnehmen' ? 2.2 : s.goal==='muskelaufbau' ? 1.8 : 1.6;\n    \/\/ \u00fcberwiegend pflanzliche Proteinquellen liefern im Schnitt etwas weniger vollst\u00e4ndige\n    \/\/ Aminos\u00e4ureprofile -> Zielwert leicht anheben, um das auszugleichen\n    if(s.diet==='vegan') proteinPerKg += 0.3;\n    else if(s.diet==='vegetarisch') proteinPerKg += 0.15;\n    const proteinG = s.weight * proteinPerKg;\n    const proteinKcal = proteinG * 4;\n    const fatG = s.weight * 1.0;\n    const fatKcal = fatG * 9;\n    const carbsKcal = Math.max(target - proteinKcal - fatKcal, 0);\n    const carbsG = carbsKcal \/ 4;\n    return { proteinG, fatG, carbsG, proteinKcal, fatKcal, carbsKcal };\n  }\n\n  const foodPools = {\n    omnivor: {\n      protein: ['H\u00e4hnchenbrust','Magerquark','Eier','Linsen','Lachs','Griech. Joghurt'],\n      fat: ['Oliven\u00f6l','Avocado','N\u00fcsse','Mandelmus','Lachs','Chiasamen'],\n      tip: ''\n    },\n    vegetarisch: {\n      protein: ['Magerquark','Eier','Linsen','Kichererbsen','Tofu','Griech. Joghurt'],\n      fat: ['Oliven\u00f6l','Avocado','N\u00fcsse','Mandelmus','Chiasamen','Lein\u00f6l'],\n      tip: 'Tipp: Linsen, Kichererbsen und Tofu regelm\u00e4\u00dfig einplanen, um genug Protein ohne Fleisch zu erreichen.'\n    },\n    pescetarisch: {\n      protein: ['Lachs','Thunfisch','Garnelen','Eier','Magerquark','Linsen'],\n      fat: ['Oliven\u00f6l','Avocado','N\u00fcsse','Mandelmus','Lachs','Chiasamen'],\n      tip: 'Tipp: Fisch 2\u20133x pro Woche einplanen, dazwischen Eier und Milchprodukte f\u00fcr Abwechslung nutzen.'\n    },\n    vegan: {\n      protein: ['Tofu','Tempeh','Linsen','Kichererbsen','Seitan','Veganer Proteinshake'],\n      fat: ['Oliven\u00f6l','Avocado','N\u00fcsse','Mandelmus','Chiasamen','Lein\u00f6l'],\n      tip: 'Tipp: Proteinquellen bewusst kombinieren (z. B. H\u00fclsenfr\u00fcchte + Getreide) und Vitamin B12 supplementieren.'\n    }\n  };\n  const carbsPool = ['Haferflocken','Reis','S\u00fc\u00dfkartoffel','Vollkornnudeln','Obst','Quinoa'];\n\n  function renderFoodExamples(diet){\n    const pool = foodPools[diet] || foodPools.omnivor;\n    const proteinList = document.getElementById('foodProteinList');\n    const carbsList = document.getElementById('foodCarbsList');\n    const fatList = document.getElementById('foodFatList');\n    proteinList.innerHTML = pool.protein.map(item=>`<li>${item}<\/li>`).join('');\n    carbsList.innerHTML = carbsPool.map(item=>`<li>${item}<\/li>`).join('');\n    fatList.innerHTML = pool.fat.map(item=>`<li>${item}<\/li>`).join('');\n\n    const tipEl = document.getElementById('dietTip');\n    if(pool.tip){\n      tipEl.textContent = pool.tip;\n      tipEl.classList.add('visible');\n    } else {\n      tipEl.classList.remove('visible');\n    }\n  }\n\n  const exercisePool = {\n    Ganzkoerper: ['Kniebeuge','Bankdr\u00fccken','Rudern vorgebeugt','Schulterdr\u00fccken','Kreuzheben (moderat)','Plank'],\n    Oberkoerper: ['Bankdr\u00fccken','Klimmz\u00fcge (unterst\u00fctzt m\u00f6glich)','Schulterdr\u00fccken','Rudern vorgebeugt','Bizepscurls','Trizepsdr\u00fccken am Kabel'],\n    Unterkoerper: ['Kniebeuge','Rum\u00e4nisches Kreuzheben','Ausfallschritte','Beinpresse','Wadenheben','Plank'],\n    Push: ['Bankdr\u00fccken','Schulterdr\u00fccken','Dips','Seitheben','Trizepsdr\u00fccken am Kabel'],\n    Pull: ['Klimmz\u00fcge','Rudern vorgebeugt','Latzug','Face Pulls','Bizepscurls'],\n    Beine: ['Kniebeuge','Rum\u00e4nisches Kreuzheben','Beinpresse','Ausfallschritte','Wadenheben']\n  };\n\n  function getSplitLabels(days, level){\n    if(level==='anfaenger'){\n      const pattern=['Ganzk\u00f6rper A','Ganzk\u00f6rper B','Ganzk\u00f6rper C'];\n      return Array.from({length:Math.min(days,4)}, (_,i)=>pattern[i%3]);\n    }\n    const maps = {\n      2:['Ganzk\u00f6rper A','Ganzk\u00f6rper B'],\n      3:['Ganzk\u00f6rper A','Ganzk\u00f6rper B','Ganzk\u00f6rper C'],\n      4:['Oberk\u00f6rper A','Unterk\u00f6rper A','Oberk\u00f6rper B','Unterk\u00f6rper B'],\n      5:['Push','Pull','Beine','Oberk\u00f6rper','Unterk\u00f6rper'],\n      6:['Push','Pull','Beine','Push','Pull','Beine']\n    };\n    return maps[days] || maps[3];\n  }\n\n  function poolKey(label){\n    if(label.startsWith('Ganzk\u00f6rper')) return 'Ganzkoerper';\n    if(label.startsWith('Oberk\u00f6rper')) return 'Oberkoerper';\n    if(label.startsWith('Unterk\u00f6rper')) return 'Unterkoerper';\n    return label;\n  }\n\n  function scheme(goal, level){\n    let sets = goal==='muskelaufbau' ? 4 : 3;\n    if(level==='profi') sets += 1;\n    const reps = goal==='abnehmen' ? '12\u201315' : goal==='muskelaufbau' ? '8\u201312' : '10\u201312';\n    const rest = goal==='abnehmen' ? '45\u201360 Sek.' : goal==='muskelaufbau' ? '90\u2013120 Sek.' : '60\u201390 Sek.';\n    return {sets, reps, rest};\n  }\n\n  function renderWeekStrip(days){\n    const strip = document.getElementById('weekStrip');\n    strip.innerHTML = '';\n    for(let i=0;i<7;i++){\n      const span = document.createElement('span');\n      if(i<days) span.classList.add('on');\n      strip.appendChild(span);\n    }\n  }\n\n  function renderTraining(s){\n    const labels = getSplitLabels(s.days, s.level);\n    const {sets, reps, rest} = scheme(s.goal, s.level);\n    const container = document.getElementById('trainingDays');\n    container.innerHTML = '';\n    labels.forEach((label, idx)=>{\n      const exercises = exercisePool[poolKey(label)] || exercisePool.Ganzkoerper;\n      const card = document.createElement('div');\n      card.className = 'day-card';\n      let html = `<div class=\"day-card-head\"><h4>Tag ${idx+1} \u00b7 ${label}<\/h4><span>${sets} \u00d7 ${reps} \u00b7 Pause ${rest}<\/span><\/div><ul>`;\n      exercises.forEach(ex=>{ html += `<li><span>${ex}<\/span><span>${sets} \u00d7 ${reps}<\/span><\/li>`; });\n      html += '<\/ul>';\n      if(s.goal==='abnehmen' && idx%2===0){\n        html += `<p class=\"cardio-note\">+ 20\u201330 Min. lockeres Cardio nach dem Training<\/p>`;\n      }\n      card.innerHTML = html;\n      container.appendChild(card);\n      setTimeout(()=>card.classList.add('shown'), 60 * idx);\n\n      \/* subtle 3D tilt *\/\n      card.addEventListener('mousemove', e=>{\n        const r = card.getBoundingClientRect();\n        const px = (e.clientX - r.left) \/ r.width - 0.5;\n        const py = (e.clientY - r.top) \/ r.height - 0.5;\n        card.style.transform = `translateY(0) rotateX(${py*-5}deg) rotateY(${px*5}deg)`;\n      });\n      card.addEventListener('mouseleave', ()=>{\n        card.style.transform = 'translateY(0) rotateX(0) rotateY(0)';\n      });\n    });\n  }\n\n  function renderNutrition(target){\n    const meals = [\n      {name:'Fr\u00fchst\u00fcck', pct:0.25},\n      {name:'Mittagessen', pct:0.35},\n      {name:'Abendessen', pct:0.30},\n      {name:'Snack', pct:0.10}\n    ];\n    const container = document.getElementById('mealsContainer');\n    container.innerHTML = '';\n    meals.forEach(m=>{\n      const row = document.createElement('div');\n      row.className = 'meal-row';\n      row.innerHTML = `<span class=\"meal-name\">${m.name}<\/span><span class=\"meal-kcal mono\">${Math.round(target*m.pct)} kcal<\/span>`;\n      container.appendChild(row);\n    });\n  }\n\n  function animateCount(el, end, suffix){\n    const start = 0;\n    const duration = 900;\n    const startTime = performance.now();\n    function tick(now){\n      const p = Math.min((now-startTime)\/duration, 1);\n      const eased = 1 - Math.pow(1-p, 3);\n      el.textContent = Math.round(start + (end-start)*eased) + (suffix||'');\n      if(p<1) requestAnimationFrame(tick);\n    }\n    requestAnimationFrame(tick);\n  }\n\n  function render(s){\n    const bmr = calcBMR(s);\n    const tdee = bmr * activityFactors[s.activity];\n    const target = calcTarget(tdee, s.goal);\n    const macros = calcMacros(s, target);\n\n    animateCount(document.getElementById('bmrVal'), Math.round(bmr));\n    animateCount(document.getElementById('tdeeVal'), Math.round(tdee));\n    animateCount(document.getElementById('targetVal'), Math.round(target));\n\n    document.getElementById('proteinG').textContent = Math.round(macros.proteinG) + ' g';\n    document.getElementById('carbsG').textContent = Math.round(macros.carbsG) + ' g';\n    document.getElementById('fatG').textContent = Math.round(macros.fatG) + ' g';\n\n    const proteinPct = (macros.proteinKcal\/target)*100;\n    const carbsPct = (macros.carbsKcal\/target)*100;\n    const fatPct = Math.max(100 - proteinPct - carbsPct, 0);\n\n    const segP = document.getElementById('segProtein');\n    const segC = document.getElementById('segCarbs');\n    const segF = document.getElementById('segFat');\n    segP.style.width = '0%'; segC.style.width='0%'; segF.style.width='0%';\n    requestAnimationFrame(()=>{\n      setTimeout(()=>{\n        segP.style.width = proteinPct + '%';\n        segC.style.width = carbsPct + '%';\n        segF.style.width = fatPct + '%';\n        segP.textContent = proteinPct>=10 ? Math.round(proteinPct)+'%' : '';\n        segC.textContent = carbsPct>=10 ? Math.round(carbsPct)+'%' : '';\n        segF.textContent = fatPct>=10 ? Math.round(fatPct)+'%' : '';\n      }, 50);\n    });\n\n    renderWeekStrip(s.days);\n    renderTraining(s);\n    renderNutrition(target);\n    renderFoodExamples(s.diet);\n\n    lastPlanState = {s, bmr, tdee, target, macros};\n    if(exportPlanBtn){\n      exportPlanBtn.disabled = false;\n      exportPlanBtn.textContent = 'Als Textdatei speichern';\n    }\n\n    const results = document.getElementById('results');\n    results.classList.add('visible');\n    results.querySelectorAll('.reveal').forEach(el=>observer.observe(el));\n    setTimeout(()=>{\n      results.scrollIntoView({behavior:'smooth', block:'start'});\n    }, 100);\n  }\n\n  \/* ---- scroll reveal ---- *\/\n  const observer = new IntersectionObserver((entries)=>{\n    entries.forEach(entry=>{\n      if(entry.isIntersecting){\n        entry.target.classList.add('visible');\n        observer.unobserve(entry.target);\n      }\n    });\n  }, {threshold:0.15});\n  document.querySelectorAll('.reveal').forEach(el=>observer.observe(el));\n\n  \/* ---- form submit ---- *\/\n  const submitBtn = document.querySelector('.submit-btn');\n  document.getElementById('planForm').addEventListener('submit', function(e){\n    e.preventDefault();\n    const errorMsg = document.getElementById('errorMsg');\n    if(!state.age || !state.weight || !state.height || state.age<=0 || state.weight<=0 || state.height<=0){\n      errorMsg.style.display = 'block';\n      return;\n    }\n    errorMsg.style.display = 'none';\n    submitBtn.classList.add('loading');\n    setTimeout(()=>{\n      submitBtn.classList.remove('loading');\n      render(state);\n    }, 550);\n  });\n  \/* ==================== MITGLIEDERBEREICH ==================== *\/\n  const MEMBER_KEY = 'fp_member_user';\n  const ENTRIES_KEY = 'fp_member_entries';\n\n  const loggedOutEl = document.getElementById('memberLoggedOut');\n  const loggedInEl = document.getElementById('memberLoggedIn');\n  const dateInput = document.getElementById('trDate');\n  if(dateInput) dateInput.value = new Date().toISOString().slice(0,10);\n\n  function getEntries(){\n    try{ return JSON.parse(localStorage.getItem(ENTRIES_KEY)) || []; }\n    catch(e){ return []; }\n  }\n  function saveEntries(entries){\n    localStorage.setItem(ENTRIES_KEY, JSON.stringify(entries));\n  }\n\n  function showMemberDashboard(user){\n    loggedOutEl.classList.remove('active');\n    loggedInEl.classList.add('active');\n    document.getElementById('memberGreetName').textContent = user.name;\n    renderHistoryAndDonut();\n  }\n  function showMemberLogin(){\n    loggedInEl.classList.remove('active');\n    loggedOutEl.classList.add('active');\n  }\n\n  const storedUser = (function(){\n    try{ return JSON.parse(localStorage.getItem(MEMBER_KEY)); }catch(e){ return null; }\n  })();\n  if(storedUser && storedUser.name) showMemberDashboard(storedUser);\n\n  const loginBtn = document.getElementById('loginBtn');\n  if(loginBtn) loginBtn.addEventListener('click', ()=>{\n    const name = document.getElementById('memberName').value.trim();\n    const email = document.getElementById('memberEmail').value.trim();\n    if(!name){ document.getElementById('memberName').focus(); return; }\n    const user = {name, email};\n    localStorage.setItem(MEMBER_KEY, JSON.stringify(user));\n    showMemberDashboard(user);\n  });\n\n  const logoutBtn = document.getElementById('logoutBtn');\n  if(logoutBtn) logoutBtn.addEventListener('click', ()=>{\n    localStorage.removeItem(MEMBER_KEY);\n    showMemberLogin();\n  });\n\n  const distColors = { sleep:'var(--sleep)', sport:'var(--sport)', edu:'var(--edu)', work:'var(--work)', leisure:'var(--leisure)', other:'var(--other)' };\n  const distLabels = { sleep:'Schlaf', sport:'Sport', edu:'Bildung', work:'Arbeit', leisure:'Erholung', other:'Sonstiges' };\n\n  function renderDonut(dist, totalHours){\n    const svg = document.getElementById('donutSegments');\n    svg.innerHTML = '';\n    const r = 72, cx = 90, cy = 90, circumference = 2*Math.PI*r;\n    let offsetAcc = 0;\n    Object.keys(dist).forEach(key=>{\n      const pct = dist[key] \/ 24;\n      if(pct <= 0) return;\n      const len = pct * circumference;\n      const circle = document.createElementNS('http:\/\/www.w3.org\/2000\/svg','circle');\n      circle.setAttribute('cx', cx);\n      circle.setAttribute('cy', cy);\n      circle.setAttribute('r', r);\n      circle.setAttribute('fill', 'none');\n      circle.setAttribute('stroke', distColors[key]);\n      circle.setAttribute('stroke-width', '20');\n      circle.setAttribute('stroke-dasharray', `${len} ${circumference-len}`);\n      circle.setAttribute('stroke-dashoffset', -offsetAcc);\n      circle.classList.add('donut-ring');\n      svg.appendChild(circle);\n      offsetAcc += len;\n    });\n    document.getElementById('donutTotal').textContent = totalHours.toFixed(1).replace('.0','') + 'h';\n\n    const legend = document.getElementById('donutLegend');\n    legend.innerHTML = '';\n    Object.keys(dist).forEach(key=>{\n      if(dist[key] <= 0) return;\n      const pct = Math.round((dist[key]\/24)*100);\n      const row = document.createElement('div');\n      row.className = 'legend-item';\n      row.innerHTML = `<span style=\"display:flex;align-items:center;gap:0.5rem;\"><span class=\"dot\" style=\"background:${distColors[key]};\"><\/span>${distLabels[key]}<\/span><span class=\"val\">${dist[key]}h \u00b7 ${pct}%<\/span>`;\n      legend.appendChild(row);\n    });\n  }\n\n  function renderHistoryAndDonut(){\n    const entries = getEntries().sort((a,b)=> a.date < b.date ? 1 : -1);\n    const list = document.getElementById('historyList');\n    const dashBody = document.getElementById('dashBody');\n\n    if(entries.length === 0){\n      list.innerHTML = '<p class=\"history-empty\">Noch keine Eintr\u00e4ge \u2014 trag oben deinen ersten Tag ein.<\/p>';\n      dashBody.style.display = 'none';\n      return;\n    }\n\n    dashBody.style.display = 'grid';\n    const latest = entries[0];\n    const dist = { sleep:latest.sleep, sport:latest.sport, edu:latest.edu, work:latest.work, leisure:latest.leisure, other:latest.other };\n    const total = latest.sleep+latest.sport+latest.edu+latest.work+latest.leisure+latest.other;\n    renderDonut(dist, total);\n\n    list.innerHTML = '';\n    entries.slice(0,7).forEach(entry=>{\n      const row = document.createElement('div');\n      row.className = 'history-row';\n      const total7 = entry.sleep+entry.sport+entry.edu+entry.work+entry.leisure+entry.other || 1;\n      const segs = ['sleep','sport','edu','work','leisure','other'].map(k=>{\n        const w = (entry[k]\/total7)*100;\n        return w>0 ? `<span style=\"width:${w}%;background:${distColors[k]};\"><\/span>` : '';\n      }).join('');\n      const d = new Date(entry.date);\n      const label = isNaN(d) ? entry.date : d.toLocaleDateString('de-DE',{day:'2-digit',month:'2-digit'});\n      row.innerHTML = `<span class=\"hist-date\">${label}<\/span><div class=\"history-bar\">${segs}<\/div>`;\n      list.appendChild(row);\n    });\n  }\n\n  const saveEntryBtn = document.getElementById('saveEntryBtn');\n  if(saveEntryBtn) saveEntryBtn.addEventListener('click', ()=>{\n    const sleep = parseFloat(document.getElementById('trSleep').value) || 0;\n    const sport = parseFloat(document.getElementById('trSport').value) || 0;\n    const edu = parseFloat(document.getElementById('trEdu').value) || 0;\n    const work = parseFloat(document.getElementById('trWork').value) || 0;\n    const leisure = parseFloat(document.getElementById('trLeisure').value) || 0;\n    const date = document.getElementById('trDate').value || new Date().toISOString().slice(0,10);\n    const sum = sleep+sport+edu+work+leisure;\n    const trackerError = document.getElementById('trackerError');\n    if(sum > 24){\n      trackerError.style.display = 'block';\n      return;\n    }\n    trackerError.style.display = 'none';\n    const other = Math.max(24 - sum, 0);\n\n    const entries = getEntries().filter(e=>e.date !== date);\n    entries.push({date, sleep, sport, edu, work, leisure, other});\n    saveEntries(entries);\n    renderHistoryAndDonut();\n  });\n\n  \/* ==================== DOWNLOADBEREICH ==================== *\/\n  function downloadCSV(filename, rows){\n    const csv = rows.map(r=>r.map(cell=>`\"${String(cell).replace(\/\"\/g,'\"\"')}\"`).join(';')).join('\\r\\n');\n    const blob = new Blob(['\\uFEFF'+csv], {type:'text\/csv;charset=utf-8;'});\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = filename;\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n\n  const csvTemplates = {\n    wochenprotokoll(){\n      const rows = [['Datum','Schlaf (h)','Sport (h)','Bildung (h)','Arbeit (h)','Erholung (h)','Notizen']];\n      ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'].forEach(day=> rows.push([day,'','','','','','']));\n      downloadCSV('wochenprotokoll-selbstkontrolle.csv', rows);\n    },\n    trainingslog(){\n      const rows = [['Datum','\u00dcbung','S\u00e4tze','Wiederholungen','Gewicht (kg)','Notizen']];\n      for(let i=0;i<10;i++) rows.push(['','','','','','']);\n      downloadCSV('trainings-logbuch.csv', rows);\n    },\n    ernaehrungstagebuch(){\n      const rows = [['Datum','Mahlzeit','Lebensmittel','Kalorien','Protein (g)','Kohlenhydrate (g)','Fett (g)']];\n      for(let i=0;i<12;i++) rows.push(['','','','','','','']);\n      downloadCSV('ernaehrungstagebuch.csv', rows);\n    }\n  };\n\n  document.querySelectorAll('.download-btn[data-template]').forEach(btn=>{\n    btn.addEventListener('click', ()=>{\n      const fn = csvTemplates[btn.dataset.template];\n      if(fn) fn();\n    });\n  });\n\n  let lastPlanState = null;\n  const exportPlanBtn = document.getElementById('exportPlanBtn');\n\n  function downloadText(filename, content){\n    const blob = new Blob([content], {type:'text\/plain;charset=utf-8;'});\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = filename;\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n    URL.revokeObjectURL(url);\n  }\n\n  if(exportPlanBtn) exportPlanBtn.addEventListener('click', ()=>{\n    if(!lastPlanState) return;\n    const {s, bmr, tdee, target, macros} = lastPlanState;\n    const dietLabels = {omnivor:'Alles', vegetarisch:'Vegetarisch', pescetarisch:'Pescetarisch', vegan:'Vegan'};\n    const goalLabels = {abnehmen:'Abnehmen', halten:'Gewicht halten', muskelaufbau:'Muskelaufbau'};\n    let text = 'DEIN PLAN \u2014 ZUSAMMENFASSUNG\\n';\n    text += '============================\\n\\n';\n    text += `Ziel: ${goalLabels[s.goal]}\\n`;\n    text += `Ern\u00e4hrungsweise: ${dietLabels[s.diet]}\\n`;\n    text += `Trainingstage\/Woche: ${s.days} \u00b7 Erfahrung: ${s.level}\\n\\n`;\n    text += `Grundumsatz: ${Math.round(bmr)} kcal\/Tag\\n`;\n    text += `Gesamtumsatz: ${Math.round(tdee)} kcal\/Tag\\n`;\n    text += `Kalorienziel: ${Math.round(target)} kcal\/Tag\\n\\n`;\n    text += `Protein: ${Math.round(macros.proteinG)} g\\n`;\n    text += `Kohlenhydrate: ${Math.round(macros.carbsG)} g\\n`;\n    text += `Fett: ${Math.round(macros.fatG)} g\\n\\n`;\n    const labels = getSplitLabels(s.days, s.level);\n    text += 'TRAININGSPLAN\\n-------------\\n';\n    labels.forEach((label, idx)=>{ text += `Tag ${idx+1}: ${label}\\n`; });\n    downloadText('mein-plan.txt', text);\n  });\n\n})();\n<\/script>\n\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Dein Plan. Deine Zahlen. Plan. Planer Mitgliederbereich Downloads Personalisiert \u00b7 in Sekunden Dein Plan.Deine Zahlen. Trainings- und Ern\u00e4hrungsplan, berechnet aus deinen Werten \u2014 kein Standard-Template von der Stange. Deine Werte Geschlecht M\u00e4nnlich Weiblich Divers Alter (Jahre) Gewicht (kg) Gr\u00f6\u00dfe (cm) Aktivit\u00e4tslevel (Alltag, ohne Training) Sitzend B\u00fcrojob, kaum Bewegung Leicht aktiv etwas Bewegung im Alltag Moderat [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wemakemoney.de\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wemakemoney.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wemakemoney.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wemakemoney.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wemakemoney.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":2,"href":"https:\/\/wemakemoney.de\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":9,"href":"https:\/\/wemakemoney.de\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/9"}],"wp:attachment":[{"href":"https:\/\/wemakemoney.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}