@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root{--bg:#f4f5f7;--card:#fff;--ink:#0f172a;--ink-secondary:#475569;--ink-muted:#94a3b8;--border:#e2e8f0;--primary:#1b2e3f;--primary-dim:#1b2e3f1a;--protein:#3b82f6;--protein-dim:#3b82f61f;--carbs:#22c55e;--carbs-dim:#22c55e1f;--fat:#f59e0b;--fat-dim:#f59e0b1f;--success:#10b981;--success-dim:#10b98124;--warning:#f59e0b;--danger:#ef4444;--neutral:#94a3b8;--calories:#bc4749;--calories-dim:#bc47491f;--radius:20px;--radius-sm:12px;--shadow:0 1px 3px #0f172a0f, 0 1px 2px #0f172a0a;--shadow-md:0 8px 24px #0f172a14, 0 2px 6px #0f172a0a;--font:"Outfit", system-ui, sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}.num{font-variant-numeric:tabular-nums}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}ul,ol{list-style:none}.app-shell{background:var(--bg);flex-direction:column;max-width:480px;min-height:100dvh;margin-inline:auto;display:flex}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.screen{flex-direction:column;flex:1;gap:16px;padding:16px 16px 96px;display:flex}.screen>*{animation:.34s cubic-bezier(.22,1,.36,1) both rise}.screen>:first-child{animation-delay:0s}.screen>:nth-child(2){animation-delay:40ms}.screen>:nth-child(3){animation-delay:80ms}.screen>:nth-child(4){animation-delay:.12s}.screen>:nth-child(5){animation-delay:.16s}.screen>:nth-child(n+6){animation-delay:.2s}.screen>.fab{animation:none}.meal-card,.button-primary,.button-secondary,.button-danger,.segment,.icon-button,.calendar-arrow,.calendar-month,.fab{transition:transform .14s,background .16s,opacity .16s}.meal-card:active,.button-primary:active,.button-secondary:active,.button-danger:active,.segment:active,.fab:active{transform:scale(.975)}.icon-button:active,.calendar-arrow:active{transform:scale(.9)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app-header{z-index:10;padding:14px 16px calc(14px + env(safe-area-inset-top)) 16px;background:var(--bg);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-header-brand{color:var(--primary);align-items:center;gap:8px;transition:transform .14s;display:inline-flex}.app-header-brand:active{transform:scale(.96)}.app-header-title{letter-spacing:-.02em;font-size:18px;font-weight:700}.drawer-brand{color:var(--primary)}.icon-button{background:var(--card);width:40px;height:40px;box-shadow:var(--shadow);color:var(--ink);border-radius:999px;place-items:center;display:grid}.overlay-root{z-index:60;position:fixed;inset:0}.overlay-scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a61;width:100%;position:absolute;inset:0}.overlay-root.is-opening .overlay-scrim{animation:.2s both fade-in}.overlay-root.is-closing .overlay-scrim{animation:.19s reverse both fade-in}.overlay-panel{background:var(--card);box-shadow:var(--shadow-md);position:absolute}.overlay-drawer{width:min(78vw,300px);height:100%;padding:24px 20px calc(24px + env(safe-area-inset-bottom));flex-direction:column;gap:20px;display:flex;top:0;right:0}.overlay-root.is-opening .overlay-drawer{animation:.24s cubic-bezier(.22,1,.36,1) both slide-in-right}.overlay-root.is-closing .overlay-drawer{animation:.19s ease-in reverse both slide-in-right}.overlay-sheet{border-radius:var(--radius) var(--radius) 0 0;max-width:480px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));overscroll-behavior:contain;flex-direction:column;gap:14px;max-height:86dvh;margin-inline:auto;display:flex;bottom:0;left:0;right:0;overflow-y:auto}.overlay-sheet:before{content:"";background:var(--border);border-radius:999px;flex:none;align-self:center;width:38px;height:4px;margin-bottom:2px}.overlay-root.is-opening .overlay-sheet{animation:.26s cubic-bezier(.22,1,.36,1) both slide-up}.overlay-root.is-closing .overlay-sheet{animation:.19s ease-in reverse both slide-up}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.drawer-brand{align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.drawer-item{animation:.26s both rise}.drawer-link{border-radius:var(--radius-sm);color:var(--ink-secondary);padding:14px 12px;font-weight:500;display:block}.drawer-link.is-active{background:var(--primary-dim);color:var(--primary)}.ring{flex:none;place-items:center;display:grid;position:relative}.ring svg{display:block}.ring-center{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.calorie-block{justify-content:space-between;align-items:center;gap:16px;display:flex}.calorie-text{min-width:0}.calorie-label{color:var(--ink-secondary);align-items:center;gap:6px;font-size:14px;font-weight:500;display:flex}.calorie-value{letter-spacing:-.035em;margin-top:6px;font-size:40px;font-weight:700;line-height:1.15}.calorie-unit{color:var(--ink-muted);font-size:16px;font-weight:500}.calorie-target{color:var(--ink-muted);margin-top:4px;font-size:12px}.calorie-flame{color:var(--calories);place-items:center;display:grid}.macro-row{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.macro-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;justify-content:space-between;gap:7px;padding:14px 12px;display:flex}.macro-card-ring{place-items:center;margin-top:2px;display:grid}.macro-card-ring .macro-card-value{font-size:15px}.macro-card-ring .macro-card-caption{font-size:9px}.macro-card-head{align-items:center;gap:5px;display:flex}.macro-card-icon{place-items:center;display:grid}.macro-card-label{color:var(--ink);font-size:12px;font-weight:600}.macro-card-value{letter-spacing:-.02em;font-size:20px;font-weight:700;line-height:1.1}.macro-card-caption{color:var(--ink-muted);font-size:10px}.macro-bar{background:var(--border);border-radius:999px;height:6px;position:relative;overflow:hidden}.macro-bar-fill{border-radius:999px;height:100%;transition:width .6s cubic-bezier(.22,1,.36,1)}.setup-notice{border:1px solid var(--border)}.setup-title{margin-bottom:8px;font-size:15px;font-weight:700}.setup-body{color:var(--ink-secondary);font-size:13px;line-height:1.55}.setup-body+.setup-body{margin-top:8px}.setup-body a{color:var(--protein);font-weight:600;text-decoration:underline}.setup-body code{background:var(--bg);word-break:break-all;border-radius:5px;padding:1px 5px;font-size:12px}.goal-edit{color:var(--protein);font-size:12px;font-weight:600}.goal-headline{color:var(--ink-secondary);margin-bottom:14px;font-size:14px}.goal-headline strong{color:var(--ink);font-weight:700}.goal-stats{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.goal-stat{text-align:center;background:var(--bg);border-radius:var(--radius-sm);padding:10px 4px}.goal-stat-value{font-size:15px;font-weight:700}.goal-stat-label{color:var(--ink-muted);margin-top:2px;font-size:11px}.goal-targets{border-top:1px solid var(--border);flex-direction:column;gap:4px;margin-top:14px;padding-top:14px;display:flex}.goal-target-value{font-size:17px;font-weight:700}.goal-target-label{color:var(--ink-muted);font-size:12px}.goal-note{margin-top:12px;font-size:12px}.greeting{padding:0 4px}.greeting-hello{color:var(--ink-muted);font-size:13px}.greeting-name{letter-spacing:-.02em;font-size:22px;font-weight:700}.calendar{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;padding:12px 10px;display:flex}.calendar-head{justify-content:space-between;align-items:center;display:flex}.calendar-month{color:var(--ink);border-radius:999px;align-items:center;gap:5px;padding:5px 12px;font-size:14px;font-weight:600;display:inline-flex}.calendar-month:hover{background:var(--primary-dim)}.calendar-caret{color:var(--ink-muted)}.calendar-arrow{width:30px;height:30px;color:var(--ink-secondary);background:var(--bg);border-radius:999px;place-items:center;display:grid}.date-strip{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.date-chip{color:var(--ink-muted);--day-track:var(--border);background:0 0;flex-direction:column;align-items:center;gap:5px;padding:2px 0;display:flex}.date-chip-weekday{font-size:11px;font-weight:600}.day-ring{place-items:center;display:grid;position:relative}.day-ring svg{display:block}.day-ring-label{color:var(--ink);place-items:center;font-size:14px;font-weight:700;display:grid;position:absolute;inset:0}.ring circle{transition:stroke-dasharray .65s cubic-bezier(.22,1,.36,1)}.date-chip.is-today .day-ring-label{color:var(--primary)}.date-chip.is-selected .day-ring:before{content:"";background:var(--primary);border-radius:999px;width:32px;height:32px;animation:.22s cubic-bezier(.34,1.4,.64,1) both pop-in;position:absolute}.date-chip.is-selected .day-ring-label{color:#fff;z-index:1}.date-chip.is-selected .date-chip-weekday{color:var(--ink)}.date-chip.is-future .day-ring-label{color:var(--ink-muted)}.date-chip.is-future{--day-track:transparent}.date-chip.is-future.is-selected .day-ring-label{color:#fff}.date-chip{transition:transform .14s}.date-chip:active{transform:scale(.9)}.month-sheet{flex-direction:column;gap:10px;display:flex}.month-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.month-cell{transition:transform .14s,background .16s}.month-cell:active{transform:scale(.88)}.month-head{text-align:center;color:var(--ink-muted);padding-bottom:4px;font-size:11px;font-weight:700}.month-cell{justify-items:center;padding:3px 0}.month-cell.is-outside{opacity:.4}.input-button{text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:8px;display:flex}.input-button-icon{color:var(--ink-muted);flex:none}.picker-head{gap:8px;display:flex}.picker-select{flex:1;min-width:0}.option-list{overscroll-behavior:contain;flex-direction:column;max-height:52dvh;display:flex;overflow-y:auto}.option-empty{text-align:center;padding:16px 4px;font-size:13px}.option-group{z-index:1;background:var(--card);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);padding:10px 4px 6px;font-size:11px;font-weight:700;position:sticky;top:0}.option{border-radius:var(--radius-sm);text-align:left;width:100%;color:var(--ink);justify-content:space-between;align-items:center;gap:10px;padding:13px 12px;font-size:15px;transition:background .14s,transform .14s;display:flex}.option:active{transform:scale(.985)}.option.is-selected{background:var(--primary-dim);color:var(--primary);font-weight:600}.picker-cell{aspect-ratio:1;color:var(--ink);border-radius:999px;place-items:center;font-size:14px;font-weight:600;transition:transform .14s,background .16s;display:grid}.picker-cell:active{transform:scale(.88)}.picker-cell.is-outside{color:var(--ink-muted);opacity:.45}.picker-cell.is-selected{background:var(--primary);color:#fff}.stack-center{flex-direction:column;align-items:center;gap:20px;display:flex}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{border-radius:999px;align-items:center;gap:4px;padding:4px 9px;font-size:11px;font-weight:600;display:inline-flex}.chip-name{opacity:.75;font-weight:500}.chip-protein{background:var(--protein-dim);color:var(--protein)}.chip-carbs{background:var(--carbs-dim);color:var(--carbs)}.chip-fat{background:var(--fat-dim);color:var(--fat)}.section-heading{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-secondary);padding-left:4px;font-size:13px;font-weight:700}.untracked-row{justify-content:space-between;gap:4px;display:flex}.untracked-cell{text-align:center;flex:1}.untracked-value{color:var(--neutral);font-size:15px;font-weight:600}.untracked-label{color:var(--ink-muted);margin-top:2px;font-size:11px}.meal-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px;display:flex}.meal-card-body{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.meal-card-title{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:600;display:-webkit-box;overflow:hidden}.meal-card-kcal{letter-spacing:-.02em;color:var(--ink);font-size:22px;font-weight:700}.meal-card-kcal-unit{color:var(--ink-muted);font-size:13px;font-weight:500}.meal-card-type{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}.meal-card-aside{flex-direction:column;flex:none;align-items:center;gap:6px;display:flex}.meal-thumb{border-radius:var(--radius-sm);object-fit:cover;width:76px;height:76px}.meal-thumb-empty{background:var(--bg);color:var(--ink-muted);place-items:center;display:grid}.meal-card-time{color:var(--ink-muted);font-size:11px}.muted{color:var(--ink-muted)}.empty-state{text-align:center;flex-direction:column;gap:4px;display:flex}.error-card{color:var(--danger);background:#fef2f2}.success-card{color:var(--success);background:var(--success-dim)}.error-text{color:var(--danger);font-size:13px}.fab{left:50%;bottom:calc(20px + env(safe-area-inset-bottom));background:var(--primary);color:#fff;text-align:center;width:min(448px,100vw - 32px);box-shadow:var(--shadow-md);z-index:20;border-radius:999px;padding:16px;font-weight:600;position:fixed;transform:translate(-50%)}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--ink-secondary);font-size:12px;font-weight:600}.field-tracked>span{color:var(--primary)}.input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);width:100%;padding:12px}.input:focus{outline:2px solid var(--primary);outline-offset:1px}.segmented{gap:6px;display:flex}.segment{border-radius:var(--radius-sm);background:var(--bg);color:var(--ink-secondary);text-transform:capitalize;flex:1;padding:10px 4px;font-size:13px;font-weight:500}.segment.is-selected{background:var(--primary);color:#fff}.button-primary,.button-secondary,.button-danger{border-radius:999px;width:100%;padding:15px;font-weight:600}.button-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-md)}.button-secondary{background:var(--card);color:var(--ink-secondary);box-shadow:var(--shadow)}.button-danger{background:var(--danger);color:#fff}.button-primary:disabled,.button-secondary:disabled{opacity:.55}.button-row{gap:10px;display:flex}.review{flex-direction:column;gap:12px;display:flex}.review-item-head{align-items:center;gap:8px;margin-bottom:12px;display:flex}.review-name{font-weight:600}.review-remove{color:var(--ink-muted);padding:0 8px;font-size:24px;line-height:1}.review-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.review-photo{border-radius:var(--radius);width:100%;box-shadow:var(--shadow);display:block}.review-photo-wrap{position:relative}.photo-actions{gap:6px;display:flex;position:absolute;bottom:10px;right:10px}.photo-action{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172ab8;border-radius:999px;padding:8px 14px;font-size:12px;font-weight:600;transition:transform .14s}.photo-action:active{transform:scale(.94)}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.detail-totals{gap:32px;margin-top:8px;display:flex}.detail-figure{letter-spacing:-.02em;font-size:28px;font-weight:700}.detail-caption{color:var(--ink-muted);font-size:12px}.detail-note{margin-top:12px;font-size:13px}.food-row{justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.food-row-name{font-weight:600}.food-row-meta{text-transform:capitalize;font-size:12px}.food-row-figures{text-align:right;flex:none;font-size:13px}.food-row-kcal{color:var(--calories);font-weight:700}.food-row-protein{color:var(--protein);margin-top:2px}.chart-title{justify-content:space-between;align-items:baseline;margin-bottom:12px;font-weight:600;display:flex}.chart-target{color:var(--ink-muted);font-size:12px;font-weight:500}.chart-footnote{text-align:center;font-size:12px}.chart-empty{text-align:center;padding:28px 0;font-size:13px}.trend-title{color:var(--ink-secondary);font-size:14px}.trend-total{letter-spacing:-.03em;margin-top:2px;font-size:30px;font-weight:700;line-height:1.2}.trend-total-unit{color:var(--ink-secondary);font-size:16px;font-weight:600}.trend-delta{align-items:baseline;gap:5px;margin-top:2px;font-size:13px;display:flex}.trend-delta-arrow{font-size:10px}.trend-delta.is-up{color:var(--success)}.trend-delta.is-down{color:var(--ink-secondary)}.trend-delta-note{color:var(--ink-muted)}.chart-tip{background:var(--ink);color:#fff;border-radius:var(--radius-sm);box-shadow:var(--shadow-md);pointer-events:none;padding:9px 12px}.chart-tip-label{opacity:.72;font-size:11px}.chart-tip-value{margin-top:1px;font-size:15px;font-weight:700}.chart-tip-date{opacity:.6;margin-top:3px;font-size:11px}.gain-note{color:var(--ink-secondary);margin-top:10px;font-size:13px}.sheet-title{font-size:18px;font-weight:700}.settings-form{flex-direction:column;gap:14px;display:flex}.preview-line{font-size:20px}.preview-line strong{font-weight:700}.preview-basis{margin-top:10px;font-size:12px}
