:root{--inset-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));--inset-right:var(--safe-area-inset-right,env(safe-area-inset-right,0px));--inset-bottom:var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px));--inset-left:var(--safe-area-inset-left,env(safe-area-inset-left,0px));color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*,:before,:after{box-sizing:border-box}body{min-height:100vh;padding-right:var(--inset-right);padding-left:var(--inset-left);margin:0}a{color:var(--accent);text-decoration:none}.layout{flex-direction:column;min-height:100vh;display:flex}.header{z-index:20;padding:calc(1rem + var(--inset-top)) 1.5rem 1rem;border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.logo{color:var(--fg);font-weight:700}.nav{align-items:center;gap:1rem;display:flex}.nav a{color:var(--muted)}.nav a.active{color:var(--fg)}.main{flex:1;width:100%;max-width:960px;margin:0 auto;padding:2rem 1.5rem}.nav a.nav-user{min-width:0;color:var(--fg);align-items:center;gap:.5rem;font-weight:500;display:flex}.nav-username{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;overflow:hidden}.link-button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0}.link-button:hover{color:var(--fg)}.auth{max-width:360px;margin:2rem auto}.auth h1{margin-top:0}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-form label{flex-direction:column;gap:.375rem;font-size:.875rem;font-weight:500;display:flex}.auth-form input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:inherit;border-radius:8px;padding:.625rem .75rem;font-size:1rem;font-weight:400}.auth-form input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.auth-form .hint{color:var(--muted);font-size:.75rem;font-weight:400}.auth-form button{background:var(--accent);color:var(--on-accent);font:inherit;cursor:pointer;border:none;border-radius:8px;padding:.625rem 1rem;font-weight:600}.auth-form button:disabled{opacity:.6;cursor:default}.form-error{color:var(--danger);margin:0;font-size:.875rem}.auth-switch{color:var(--muted);margin-top:1.5rem;font-size:.875rem}.button{border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);border-radius:8px;padding:.75rem 1.25rem;font-weight:600;display:inline-block}.button:hover{opacity:.9}.button-secondary{border-color:var(--border);color:var(--fg);background:0 0}.landing{flex-direction:column;gap:4rem;display:flex}.landing h2{margin:0 0 1.5rem;font-size:1.5rem}.landing h3{margin:0 0 .375rem;font-size:1.0625rem}.landing p{margin:0}.hero{text-align:center;padding-top:2rem}.hero h1{margin:0 0 1rem;font-size:clamp(2rem,5vw,3rem);line-height:1.15}.hero .hero-lead{max-width:600px;color:var(--muted);margin:0 auto;font-size:1.125rem}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:2rem;display:flex}.hero-greeting{flex-basis:100%;font-weight:500}.feature-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.feature-card{border:1px solid var(--border);border-radius:12px;padding:1.25rem}.feature-card p,.step p{color:var(--muted);font-size:.9375rem}.steps{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.step{gap:.875rem;display:flex}.step-number{background:var(--accent);width:2rem;height:2rem;color:var(--on-accent);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.landing-cta{border:1px solid var(--border);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:.75rem;padding:2.5rem 1.5rem;display:flex}.landing-cta h2{margin:0}.landing-cta p{color:var(--muted);margin-bottom:.5rem}.auth-wide{max-width:560px}.auth-step{color:var(--muted);margin:0 0 .25rem;font-size:.875rem;font-weight:500}.auth h1+.auth-lead{color:var(--muted);margin:-.5rem 0 1.5rem}.questionnaire{gap:1.5rem}.questionnaire fieldset,.settings-form fieldset{border:none;flex-direction:column;gap:.5rem;margin:0;padding:0;display:flex}.questionnaire legend,.settings-form legend{margin-bottom:.5rem;padding:0;font-size:.875rem;font-weight:500}.questionnaire select{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:inherit;border-radius:8px;padding:.625rem .75rem;font-size:1rem;font-weight:400}.field-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.field-row input{min-width:0}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chips-week{grid-template-columns:repeat(7,minmax(0,1fr));gap:.375rem;display:grid}.chips-week span{text-align:center;width:100%;padding-inline:0;display:block}.chip{cursor:pointer;font-weight:400;display:inline-flex;position:relative}.chip input{opacity:0;pointer-events:none;position:absolute}.chip span{border:1px solid var(--border);-webkit-user-select:none;user-select:none;border-radius:999px;padding:.375rem .875rem}.chip input:checked+span{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}.auth-form .checkbox{flex-direction:row;align-items:flex-start;gap:.5rem;font-weight:400}.auth-form .checkbox input{width:auto;accent-color:var(--accent);flex-shrink:0;margin:.2rem 0 0}.muted{color:var(--muted)}.form-success{color:var(--success);margin:0 0 1rem;font-size:.875rem}.footer{padding:1.25rem 1.5rem calc(1.25rem + var(--inset-bottom));border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;font-size:.875rem;display:flex}.footer-nav{flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.footer-nav a{color:var(--muted)}.footer-nav a:hover{color:var(--fg)}.auth-form p.hint{margin:0}.legal{max-width:720px;margin:0 auto}.legal h1{margin:0 0 .25rem}.legal-updated{color:var(--muted);margin:0 0 2rem;font-size:.875rem}.legal h2{margin:2rem 0 .75rem;font-size:1.25rem}.legal p,.legal li{line-height:1.65}.legal ul{padding-left:1.25rem}.legal li+li{margin-top:.375rem}.button:disabled{opacity:.6;cursor:default}button.button{font:inherit;cursor:pointer;font-weight:600}.button-small{padding:.4rem .875rem;font-size:.875rem}.profile{flex-direction:column;gap:1.5rem;display:flex}.profile h2{margin:0;font-size:1.25rem}.profile h3{margin:0;font-size:1.0625rem}.profile p{margin:0}.profile-title{overflow-wrap:anywhere;margin:0;font-size:1.75rem}.profile-tabs{border-bottom:1px solid var(--border);scrollbar-width:none;align-items:center;gap:.25rem;margin-top:-.5rem;display:flex;overflow-x:auto}.profile-tabs a,.profile-tabs .link-button{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;flex-shrink:0;margin-bottom:-1px;padding:.625rem .75rem}.profile-tabs a:hover{color:var(--fg)}.profile-tabs a.active{border-bottom-color:var(--accent);color:var(--fg);font-weight:500}.profile-tabs .profile-logout{margin-left:auto}.settings-form{flex-direction:column;gap:1.5rem;display:flex}.profile-settings{flex-direction:column;gap:1rem;max-width:560px;display:flex}.profile-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;display:grid}.panel{border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:1rem;padding:1.25rem;display:flex}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.empty-state{text-align:center;align-items:center;padding-block:2rem}.facts{grid-template-columns:repeat(2,1fr);gap:.75rem 1rem;margin:0;display:grid}.facts dt{color:var(--muted);font-size:.8125rem}.facts dd{margin:0;font-weight:500}.facts-wide{grid-column:1/-1}.targets-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.targets-table th,.targets-table td{border-bottom:1px solid var(--border);text-align:right;padding:.5rem .25rem}.targets-table thead th{color:var(--muted);font-size:.8125rem;font-weight:500}.targets-table tbody th{text-align:left;font-weight:500}.progress-summary{flex-direction:column;gap:.125rem;font-size:.875rem;display:flex}.progress-number{font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:700}.plan{flex-direction:column;gap:1rem;display:flex}.day-tabs{scroll-snap-type:x proximity;scrollbar-width:none;grid-template-columns:repeat(7,minmax(3.5rem,1fr));gap:.5rem;display:grid;overflow-x:auto}.day-tabs::-webkit-scrollbar{display:none}.day-tab{scroll-snap-align:center;border:1px solid var(--border);color:var(--fg);font:inherit;cursor:pointer;background:0 0;border-radius:10px;flex-direction:column;align-items:center;gap:.125rem;padding:.625rem .25rem;display:flex;position:relative}.day-tab.active{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.day-tab.done:not(.active){border-color:var(--success)}.day-tab-weekday{text-transform:capitalize;font-weight:600}.day-tab-date{opacity:.8;font-size:.75rem}.day-tab-dot{background:var(--warn);border-radius:50%;width:.4rem;height:.4rem;position:absolute;top:.375rem;right:.375rem}.day-title:first-letter{text-transform:uppercase}.badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.125rem .625rem;font-size:.8125rem}.badge-accent{border-color:var(--warn);color:var(--warn)}.macro-bars{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem 1.25rem;display:grid}.macro-head{justify-content:space-between;gap:.5rem;margin-bottom:.25rem;font-size:.8125rem;display:flex}.macro-value{color:var(--muted);font-variant-numeric:tabular-nums}.macro-track{background:var(--border);border-radius:999px;height:.375rem;overflow:hidden}.macro-fill{border-radius:inherit;background:var(--accent);height:100%}.macro-fill.over{background:var(--warn)}.meals{flex-direction:column;gap:.5rem;display:flex}.meal-card{border:1px solid var(--border);border-radius:10px}.meal-card .form-error{padding:0 1rem .75rem}.meal-main{align-items:flex-start;display:flex}.meal-check{cursor:pointer;padding:.95rem 0 .95rem 1rem;display:flex}.meal-check input{width:1.125rem;height:1.125rem;accent-color:var(--success);cursor:pointer;margin:0}.meal-summary{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;gap:.125rem;padding:.75rem 1rem;display:flex}.meal-type{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.meal-name{font-weight:600}.meal-meta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8125rem}.meal-card.eaten .meal-name{color:var(--muted);text-decoration:line-through}.meal-details{border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:.5rem;padding:.75rem 1rem 1rem;display:flex}.meal-details h4,.shopping-list h4{margin:.25rem 0 0;font-size:.875rem}.ingredients{align-self:stretch;margin:0;padding:0;font-size:.9375rem;list-style:none}.ingredients li{border-bottom:1px dashed var(--border);justify-content:space-between;gap:1rem;padding:.25rem 0;display:flex}.recipe-steps{margin:0;padding-left:1.25rem;font-size:.9375rem}.recipe-steps li+li{margin-top:.25rem}.recipe-links{flex-wrap:wrap;gap:.25rem 1rem;margin:0;padding:0;font-size:.9375rem;list-style:none;display:flex}.shopping-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem 1.5rem;display:grid}.shopping-list h4{text-transform:capitalize;margin-bottom:.25rem}@media (width<=640px){.header{padding:.75rem 1rem}.nav{gap:.75rem}.nav-username{max-width:7rem}.main{padding:1.25rem 1rem 2rem}.footer{flex-direction:column;align-items:flex-start;padding:1rem}.auth{margin:.5rem auto 1rem}.landing{gap:2.5rem}.hero{padding-top:.5rem}.hero .hero-lead{font-size:1rem}.hero-actions{flex-direction:column;align-items:stretch;margin-top:1.5rem}.hero-actions .button,.landing-cta .button{text-align:center}.landing-cta{align-items:stretch;padding:1.75rem 1rem}.landing h2{margin-bottom:1rem}.field-row{gap:.5rem}.profile-title{font-size:1.375rem}.profile-grid{grid-template-columns:1fr}.panel{padding:1rem}.empty-state .button{align-self:stretch}.day-tabs{grid-template-columns:repeat(7,3.5rem);gap:.375rem;margin-inline:-1rem;padding-inline:1rem;scroll-padding-inline:1rem}.macro-bars{grid-template-columns:repeat(2,minmax(0,1fr))}.meal-summary{padding:.75rem .875rem .75rem .75rem}.meal-details{padding:.75rem .875rem .875rem}.meal-details .button{text-align:center;align-self:stretch}.legal h1{overflow-wrap:anywhere;font-size:1.625rem}.legal h2{margin-top:1.5rem;font-size:1.125rem}}.disclaimer{border:1px solid color-mix(in srgb, var(--notice) 33%, transparent);background:color-mix(in srgb, var(--notice) 8%, transparent);border-radius:12px;padding:.875rem 1rem;font-size:.875rem;line-height:1.5}.disclaimer strong{font-weight:600}.auth-form .hint.notice{margin-bottom:.25rem;font-size:.8125rem}.product-source a,.footer .product-source a{color:inherit;text-underline-offset:2px;text-decoration:underline}.plan-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.result-kcal{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.badge-warn{border-color:var(--danger);color:var(--danger)}.tolerance-warning{background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--danger);border-radius:8px;padding:.625rem .875rem;font-size:.875rem}.day-tab-warn{background:var(--danger);border-radius:50%;width:.4rem;height:.4rem;position:absolute;top:.375rem;left:.375rem}.generating{border:1px solid var(--border);color:var(--muted);border-radius:12px;align-items:center;gap:.75rem;padding:1rem;font-size:.9375rem;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:1.25rem;height:1.25rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.shopping-item{cursor:pointer;align-items:center;gap:.5rem;min-width:0;display:flex}.shopping-item input{accent-color:var(--success);flex-shrink:0;margin:0}.ingredients li.bought .shopping-item span{color:var(--muted);text-decoration:line-through}.photo-teaser{border:1px dashed var(--border);color:var(--fg);border-radius:12px;align-items:center;gap:.75rem;padding:.875rem 1rem;font-size:.9375rem;display:flex}.photo-teaser span:nth-child(2){flex:1}.photo-page .badge{display:inline-block}.photo-drop{border:2px dashed var(--border);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:1rem;padding:2rem 1rem;display:flex}.photo-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.photo-actions label.button{cursor:pointer}.photo-preview{aspect-ratio:1;object-fit:cover;border-radius:12px;width:100%;max-width:320px;margin:0 auto;display:block}@media (width<=640px){.plan-actions{justify-content:space-between;width:100%}.photo-actions{flex-direction:column;align-self:stretch}.photo-actions .button{text-align:center}}
