@font-face{font-family:Caveat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/caveat-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/caveat-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/caveat-600-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/caveat-600-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/fraunces-400_700-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/fraunces-400_700-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Quicksand;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/quicksand-400-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Quicksand;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/quicksand-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Quicksand;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/quicksand-500-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Quicksand;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/quicksand-500-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Quicksand;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/quicksand-600-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Quicksand;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/quicksand-600-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Quicksand;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/quicksand-700-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Quicksand;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/quicksand-700-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#faf6f1;--surface:#fffefc;--surface-2:#f7efec;--text:#2e2429;--text-muted:#76656c;--border:#eadfda;--accent:#7a2340;--accent-strong:#611a31;--accent-soft:#f9e8ee;--on-accent:#fff;--amber:#b98234;--amber-soft:#f7ecd9;--clay:#a3455e;--clay-soft:#f7e3ea;--focus:#611a31;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #2e24290f, 0 4px 16px #2e24290f;--tabbar-h:60px;--font:"Quicksand", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-heading:"Fraunces", Georgia, "Times New Roman", serif;--font-accent:"Caveat", "Segoe Script", "Bradley Hand", cursive}[data-theme=dark]{--bg:#1a1519;--surface:#241d22;--surface-2:#2e252b;--text:#f2ebee;--text-muted:#ab99a2;--border:#3b3038;--accent:#a34566;--accent-strong:#eba9c0;--accent-soft:#3d2733;--on-accent:#fff;--amber:#d9a055;--amber-soft:#33291a;--clay:#e59aad;--clay-soft:#3a2229;--focus:#eba9c0;--shadow:0 1px 2px #0006, 0 4px 16px #0000004d}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);overscroll-behavior-y:none;min-height:100dvh;font-size:16px;line-height:1.5}#root{min-height:100dvh}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font-heading);font-weight:650}h1{font-size:1.4rem;line-height:1.25}h2{font-size:1.1rem}h3{font-size:1rem}a{color:var(--accent-strong)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}.app{flex-direction:column;max-width:720px;min-height:100dvh;margin:0 auto;display:flex}.app-main{padding:16px 16px calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 24px);flex-direction:column;flex:1;gap:16px;display:flex}.page-title{margin-bottom:-4px}.page-sub{color:var(--text-muted);font-family:var(--font-accent);font-size:1.1rem;line-height:1.35}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;padding:16px;display:flex}.card-title{font-size:.95rem;font-weight:650}.muted{color:var(--text-muted)}.small{font-size:.88rem}.tnum{font-variant-numeric:tabular-nums}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spread{justify-content:space-between}.grow{flex:1}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);min-width:44px;min-height:44px;color:var(--text);font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;padding:10px 18px;font-weight:600}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-ghost{color:var(--accent-strong);background:0 0;border-color:#0000}.btn-block{width:100%}.btn[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong)}.input,.select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;padding:10px 12px;font-size:16px}.label{color:var(--text-muted);margin-bottom:6px;font-size:.88rem;font-weight:600;display:block}.field{margin-bottom:4px}.tabbar{z-index:20;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar-inner{width:100%;max-width:720px;margin:0 auto;display:flex}.tab{min-height:var(--tabbar-h);color:var(--text-muted);-webkit-tap-highlight-color:transparent;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 4px;font-size:.72rem;font-weight:600;text-decoration:none;display:flex}.tab[aria-current=page]{color:var(--accent-strong)}.tab svg{width:24px;height:24px}.pin-gate{min-height:100dvh;padding:24px 20px calc(24px + env(safe-area-inset-bottom));background:var(--bg);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;display:flex}.pin-dots{justify-content:center;gap:12px;display:flex}.pin-dot{border:2px solid var(--accent);border-radius:50%;width:14px;height:14px}.pin-dot.filled{background:var(--accent)}.pin-input{letter-spacing:.5em;text-align:center;max-width:260px;font-size:1.2rem}.pin-error{color:var(--clay);min-height:1.2em;font-size:.9rem}.keypad{grid-template-columns:repeat(3,72px);justify-content:center;gap:10px;display:grid}.keypad button{border:1px solid var(--border);background:var(--surface);min-height:56px;color:var(--text);cursor:pointer;border-radius:50%;font-size:1.3rem;font-weight:600}.keypad button:active{background:var(--accent-soft)}.keypad button.wide{border-radius:var(--radius-sm);font-size:.9rem}.update-toast{left:12px;right:12px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px);z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-width:696px;box-shadow:var(--shadow);align-items:center;gap:6px;margin:0 auto;padding:10px 12px;font-size:.92rem;display:flex;position:fixed}.update-toast .btn{min-height:40px;padding:8px 12px;font-size:.88rem}.empty{text-align:center;color:var(--text-muted);font-family:var(--font-accent);flex-direction:column;align-items:center;gap:8px;padding:28px 16px;font-size:1.1rem;line-height:1.35;display:flex}.empty-emoji{font-size:1.6rem}.onb-progress{justify-content:space-between;align-items:center;gap:10px;display:flex}.onb-dots{gap:6px;margin-top:8px;display:flex}.onb-dot{background:var(--border);border-radius:50%;width:8px;height:8px}.onb-dot.on{background:var(--accent)}.onb-choice{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;min-height:60px;padding:12px 16px;font-size:1rem;display:flex}.onb-choice .hint{color:var(--text-muted);font-size:.85rem;font-weight:400}.onb-actions{gap:10px;display:flex}.onb-actions .btn{flex:1}.onb-hero{align-items:baseline;gap:8px;display:flex}.onb-result{font-family:var(--font-heading);color:var(--accent-strong);font-variant-numeric:tabular-nums;font-size:2.1rem;font-weight:700}.onb-edit-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.onb-edit-row .input{width:96px}.onb-edit-label{min-width:120px;color:var(--text-muted);flex:1;font-size:.88rem;font-weight:600}.note{background:var(--accent-soft);border-radius:var(--radius-sm);padding:10px 12px;font-size:.9rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.meal-datebar{align-items:center;gap:8px;display:flex}.meal-datebar .input{flex:1;min-width:0}.meal-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.meal-head .card-title{flex:1}.meal-kcal{font-family:var(--font-heading);color:var(--accent-strong);font-size:1.05rem;font-weight:700}.meal-macros{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.meal-macro{background:var(--surface-2);border-radius:var(--radius-sm);text-align:center;font-variant-numeric:tabular-nums;flex:1;min-width:110px;padding:8px 10px;font-size:.9rem;font-weight:600}.meal-list{flex-direction:column;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.meal-item{background:var(--surface-2);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:8px 10px;display:flex}.meal-item-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.meal-item-name{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:.95rem;font-weight:600;display:flex;overflow:hidden}.meal-item-kcal{white-space:nowrap;font-size:.9rem;font-weight:600}.meal-icon{justify-content:center;align-items:center;min-width:40px;min-height:40px;padding:6px;display:inline-flex}.meal-panel{flex-direction:column;gap:8px;margin-top:10px;display:flex}.meal-results{flex-direction:column;gap:6px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.meal-result{text-align:left;flex-direction:column;gap:2px;width:100%;min-height:48px;padding:10px 12px;font-size:1rem;display:flex}.meal-result-name{flex-wrap:wrap;align-items:center;gap:6px;font-size:.95rem;font-weight:600;display:flex}.meal-badge{text-transform:uppercase;letter-spacing:.05em;background:var(--accent-soft);color:var(--accent-strong);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.66rem;font-weight:700}.meal-badge-warn{background:var(--amber-soft);color:var(--text)}.meal-error{background:var(--clay-soft);color:var(--text);border-radius:var(--radius-sm);padding:10px 12px;font-size:.9rem}.dash-kcal{align-items:center;gap:16px;margin-top:12px;display:flex}.dash-ring{flex:none}.dash-ring-track{fill:none;stroke:var(--surface-2);stroke-width:9px}.dash-ring-fill{fill:none;stroke:var(--accent);stroke-width:9px;stroke-linecap:round}.dash-kcal-num{margin:0;font-size:1.75rem;font-weight:700;line-height:1.15}.dash-kcal-target{color:var(--text-muted);font-size:.95rem;font-weight:500}.dash-bars{flex-direction:column;gap:14px;margin-top:18px;display:flex}.dash-bar-head{justify-content:space-between;gap:10px;margin-bottom:6px;font-size:.93rem;display:flex}.dash-bar-label{font-weight:600}.dash-bar-value{color:var(--text-muted);font-weight:600}.dash-track{background:var(--surface-2);border-radius:999px;height:10px;overflow:hidden}.dash-fill{background:var(--accent);border-radius:999px;height:100%}.dash-bar-ref .dash-fill{background:var(--clay)}.dash-note{margin-top:5px}.dash-per1000{margin-top:14px}.dash-nudge{background:var(--accent-soft)}.dash-nudge p{margin:0;font-size:.97rem;line-height:1.55}.backup-reminder{background:var(--amber-soft)}@media (width>=600px){.app-main{padding-top:24px}}
