:root{--color-bg: #F7F5F2;--color-card-ring: #EFE9E1;--color-dark-surface: #141414;--color-green-primary: #1DAF61;--color-green-ink: #178C4E;--color-mint-carbs: #3EE089;--color-orange-fat: #FA7319;--color-white: #FFFFFF;--color-black: #000000;--surface-card: var(--color-white);--surface-sunken: color-mix(in srgb, var(--ring-color) 70%, var(--color-white));--surface-success-soft: color-mix(in srgb, var(--accent) 12%, var(--color-white));--surface-warning-soft: color-mix(in srgb, var(--color-orange-fat) 14%, var(--color-white));--ring-color: var(--color-card-ring);--divider: color-mix(in srgb, var(--ring-color) 62%, var(--color-white));--surface-overlay: color-mix(in srgb, var(--color-dark-surface) 38%, transparent);--text-primary: var(--color-dark-surface);--text-secondary: color-mix(in srgb, var(--color-dark-surface) 68%, transparent);--text-muted: color-mix(in srgb, var(--color-dark-surface) 62%, transparent);--text-tertiary: color-mix(in srgb, var(--color-dark-surface) 46%, transparent);--text-on-dark: var(--color-white);--text-on-dark-muted: color-mix(in srgb, var(--color-white) 68%, transparent);--text-success: color-mix(in srgb, var(--color-green-ink) 90%, var(--color-dark-surface));--text-warning: color-mix(in srgb, var(--color-orange-fat) 65%, var(--color-dark-surface));--accent: var(--color-green-primary);--accent-strong: var(--color-green-ink);--danger: var(--color-orange-fat);--protein: var(--color-green-primary);--fat: var(--color-orange-fat);--carbs: var(--color-mint-carbs);--mint-carbs: var(--color-mint-carbs);--radius-sm: 16px;--radius-md: 18px;--radius-lg: 20px;--radius-pill: 999px;--radius-chip: 12px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--page-gutter: 18px;--tile-gap: 12px;--tap-min: 44px;--header-h: 56px;--content-max: 480px;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-display: 34px;--fs-h1: 28px;--fs-h2: 22px;--fs-h3: 17px;--fs-metric: 26px;--fs-metric-sm: 21px;--fs-body: 15px;--fs-secondary: 13px;--fs-caption: 12px;--fs-micro: 11px;--lh-tight: 1.12;--lh-snug: 1.3;--lh-normal: 1.5;--ls-display: -.035em;--ls-title: -.02em;--ls-label: .09em;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--ring-inset: inset 0 0 0 1px var(--ring-color);--shadow-raised: 0 12px 32px -16px rgb(14 18 27 / .28);--shadow-fab: 0 10px 24px -10px rgb(29 175 97 / .55);--shadow-tile: var(--ring-inset);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--ease-standard: cubic-bezier(.2, .7, .3, 1);--ease-emphasized: cubic-bezier(.2, 0, 0, 1);--z-header: 10;--z-sticky: 20;--z-overlay: 40;--z-sheet: 50;--z-toast: 60;--fs-metric-dense: 19px;--fs-chart-label: 10px;--chart-h: 180px;--chart-axis: 32px;--chart-gap: 6px;--chart-col-max: 48px;--chart-bar-max: 28px;--chart-bar-radius: 6px;--chart-bar-min-h: 4px;--chart-bar: var(--accent);--chart-range: color-mix(in srgb, var(--accent) 22%, transparent);--chart-grid: var(--divider);--surface-draft-soft: var(--surface-sunken);--text-draft: var(--text-muted);--surface-accent-soft: color-mix(in srgb, var(--accent) 14%, var(--color-white));--empty-icon-size: 44px;--sticky-actions-h: 64px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{min-height:100dvh;display:flex;justify-content:center}h1,h2,h3,p{margin:0}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.mono{font-family:var(--font-mono)}.shell{width:100%;max-width:480px;min-height:100dvh;display:flex;flex-direction:column;background:var(--color-bg);overflow-x:clip}.app-header{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-width:0;padding:calc(var(--space-2) + env(safe-area-inset-top)) var(--page-gutter) var(--space-2);background:var(--color-bg);box-shadow:inset 0 -1px 0 var(--divider)}.app-header-start{display:flex;align-items:center;gap:var(--space-2);min-width:0}.app-header-title{font-size:var(--fs-h3);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.brand{display:flex;align-items:center;gap:var(--space-2);min-width:0}.brand-name{font-size:var(--fs-body);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.brand-text{display:flex;flex-direction:column;min-width:0;line-height:1.15}.brand-version{font-size:var(--fs-micro);color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.brand-meta{display:flex;align-items:center;gap:4px;min-width:0}.brand-update{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;padding:0;border:none;border-radius:var(--radius-pill);background:transparent;color:var(--text-tertiary);cursor:pointer}.brand-update:hover{color:var(--accent-strong);background:var(--surface-sunken)}.brand-update:disabled{opacity:.6;cursor:default}.brand-update:disabled svg{animation:brand-spin .9s linear infinite}@keyframes brand-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.brand-update:disabled svg{animation:none}}.brand-mark{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:10px;background:var(--color-dark-surface);color:var(--color-mint-carbs)}.app-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap-min);height:var(--tap-min);border-radius:var(--radius-pill);border:none;background:var(--surface-card);color:var(--text-secondary);box-shadow:var(--ring-inset);padding:0;transition:color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}.icon-btn svg{width:22px;height:22px}.icon-btn:hover{color:var(--text-primary)}.icon-btn:active{transform:scale(.96)}.app-main{flex:1;padding:0 var(--space-4) var(--space-5);overflow-x:hidden}.tab-bar-empty{height:0;visibility:hidden}.auth-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-5);padding:var(--space-6) var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:16px;font-weight:600}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-dark-surface);color:var(--text-on-dark);min-height:52px}.btn-primary:not([disabled]):hover{background:#282828}.btn-accent{background:var(--accent);color:var(--color-dark-surface)}.btn-ghost{background:transparent;border-color:var(--ring-color);color:var(--text-primary)}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--ring-color);border-top-color:var(--accent-strong);animation:hp-spin .9s linear infinite}@keyframes hp-spin{to{transform:rotate(360deg)}}.session-gate{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);color:var(--text-muted)}.offline-banner{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--color-dark-surface);color:var(--text-on-dark);font-size:14px;text-align:center}.error-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-5);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card);text-align:center}.skeleton{position:relative;overflow:hidden;background:color-mix(in srgb,var(--color-card-ring) 70%,transparent);border-radius:var(--radius-sm)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgb(255 255 245 / .6),transparent);animation:hp-shimmer 1.4s ease-in-out infinite}@keyframes hp-shimmer{to{transform:translate(100%)}}.page-stub-note{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--text-secondary);font-size:14px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.pin-screen{display:flex;flex-direction:column;align-items:center;gap:var(--space-5);width:100%;max-width:340px;outline:none}.pin-topbar{width:100%;display:flex;justify-content:flex-end}.pin-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.pin-brand-name{font-size:var(--fs-body);font-weight:var(--fw-semibold);color:var(--text-primary)}.pin-heading{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.pin-title{font-size:var(--fs-h1);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title)}.pin-subtitle{font-size:var(--fs-secondary);color:var(--text-secondary)}.pin-dots{display:flex;gap:var(--space-3)}.pin-dot{width:14px;height:14px;border-radius:50%;background:transparent;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--text-primary) 24%,transparent);transition:background var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}.pin-dot--on{background:var(--color-dark-surface);box-shadow:inset 0 0 0 1.5px var(--color-dark-surface)}.pin-dots--error .pin-dot{box-shadow:inset 0 0 0 1.5px var(--danger)}.pin-status{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);min-height:56px}.pin-message{font-size:14px;color:var(--text-muted);text-align:center}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);width:100%;outline:none}.pin-key{height:64px;border-radius:var(--radius-md);border:none;background:var(--surface-card);box-shadow:var(--ring-inset);font-family:var(--font-mono);font-size:24px;color:var(--text-primary)}.pin-key:not([disabled]):hover{box-shadow:var(--ring-inset),inset 0 0 0 1px var(--accent-strong)}.pin-key[disabled]{opacity:.55;cursor:not-allowed}.pin-key-spacer{visibility:hidden}.pin-actions{display:flex;flex-direction:column;gap:var(--space-2);width:100%}.pin-submit{width:100%}.pin-hint{font-size:12px;color:var(--text-muted);text-align:center}.launcher-page{display:flex;flex-direction:column;gap:var(--space-3)}.launcher-edit-toggle{align-self:flex-end;min-height:var(--tap-min);font-size:14px}.edit-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--surface-card);box-shadow:var(--ring-inset)}.edit-hint{font-size:13px;color:var(--text-secondary)}.tile-grid{display:flex;flex-direction:column;gap:var(--tile-gap)}.tile-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--tile-gap);align-items:stretch}.tile-cell{min-width:0}.tile-cell--full{grid-column:span 2}.tile{position:relative;display:flex;flex-direction:column;justify-content:flex-start;gap:var(--space-2);min-height:104px;padding:var(--space-4);border-radius:var(--radius-lg);background:var(--surface-card);color:var(--text-primary);box-shadow:var(--ring-inset);text-decoration:none;transition:box-shadow var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-standard)}a.tile:hover{box-shadow:var(--ring-inset),inset 0 0 0 1px var(--accent-strong);transform:translateY(-1px)}.tile:active{transform:scale(.985)}.tile--medium{min-height:140px}.tile--wide{grid-column:span 2;min-height:116px;flex-direction:row;align-items:center;gap:var(--space-3)}.tile--dark{background:var(--color-dark-surface);color:var(--text-on-dark)}.tile--placeholder{background:var(--surface-sunken)}.tile--soon{opacity:.82;cursor:default}.tile-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.tile-icon-plate{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-chip);background:var(--surface-sunken);color:var(--text-primary);flex-shrink:0}.tile-icon-plate svg{width:20px;height:20px}.tile--dark .tile-icon-plate{background:color-mix(in srgb,var(--color-white) 10%,transparent);color:var(--text-on-dark)}.tile--placeholder .tile-icon-plate{background:var(--surface-card);color:var(--text-tertiary)}.tile-body{display:flex;flex-direction:column;gap:2px;min-width:0}.tile--wide .tile-body{flex:1}.tile-metric-line{display:flex;align-items:baseline;gap:var(--space-2);min-width:0;flex-wrap:nowrap}.tile-metric{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-metric);font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:var(--ls-title);font-variant-numeric:tabular-nums;color:var(--text-primary)}.tile-metric--dense{font-size:var(--fs-metric-dense)}.tile--small .tile-metric{font-size:var(--fs-metric-sm)}.tile--dark .tile-metric{color:var(--text-on-dark)}.tile-metric--empty{color:var(--text-tertiary)}.tile-unit{font-size:var(--fs-caption);color:var(--text-secondary);white-space:nowrap;flex:0 0 auto}.tile--dark .tile-unit{color:var(--text-on-dark-muted)}.tile-label{font-size:var(--fs-secondary);font-weight:var(--fw-medium);color:var(--text-secondary)}.tile--dark .tile-label{color:var(--text-on-dark-muted)}.tile-micro{font-size:var(--fs-micro);color:var(--text-muted);letter-spacing:var(--ls-label);white-space:nowrap}.tile--dark .tile-micro{color:var(--text-on-dark-muted)}.tile-chevron{display:inline-flex;align-items:center;color:var(--text-secondary);flex-shrink:0}.tile--dark .tile-chevron{color:var(--text-on-dark-muted)}.tile--editing{box-shadow:var(--ring-inset),inset 0 0 0 1px var(--accent-strong);padding-bottom:56px}.tile-edit-controls{position:absolute;inset-inline:var(--space-2);bottom:var(--space-2);display:flex;gap:var(--space-1);justify-content:center;background:var(--surface-card);box-shadow:var(--ring-inset);border-radius:var(--radius-md);padding:4px}.tile-mini-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap-min);height:var(--tap-min);border:none;border-radius:var(--radius-chip);background:transparent;color:var(--text-secondary);padding:0}.tile-mini-btn:hover{color:var(--text-primary);background:var(--surface-sunken)}.tile-mini-btn svg{width:20px;height:20px}.tile--add{flex-direction:row;align-items:center;justify-content:center;gap:var(--space-3);min-height:64px;cursor:pointer;width:100%}.tile--add .tile-label{font-size:var(--fs-body);font-weight:var(--fw-semibold);color:var(--text-primary)}.tile-catalog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:flex;align-items:flex-end;justify-content:center;background:var(--surface-overlay)}.tile-catalog{width:100%;max-width:var(--content-max);max-height:80dvh;overflow-y:auto;border-radius:26px 26px 0 0;background:var(--color-bg);box-shadow:var(--shadow-raised);padding:var(--space-4) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--space-3);animation:sheet-up var(--dur-slow) var(--ease-emphasized)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tile-catalog-drag{align-self:center;width:36px;height:4px;border-radius:var(--radius-pill);background:var(--ring-color)}.tile-catalog-header{display:flex;align-items:center;justify-content:space-between}.tile-catalog-header h2{font-size:var(--fs-h2);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title)}.tile-catalog-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.tile-catalog-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--divider)}.tile-catalog-item:last-child{border-bottom:none}.tile-catalog-label{font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--text-primary)}.tile-catalog-added{display:inline-flex;align-items:center;gap:var(--space-1);padding:4px var(--space-3);border-radius:var(--radius-pill);background:var(--surface-success-soft);color:var(--text-success);font-size:var(--fs-caption);font-weight:var(--fw-medium)}.tile-catalog-empty{color:var(--text-secondary);font-size:14px}.btn-link{border:none;background:none;color:var(--mint-carbs);font-weight:600;padding:0;margin-left:var(--space-2)}.launcher-error{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.tile-grid-skeleton{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--tile-gap)}.sk-sm{height:104px}.sk-md{height:140px}.sk-lg{height:116px;grid-column:span 2}.sk-wide{height:116px}.page-stub{display:flex;flex-direction:column;gap:var(--space-4)}.page-stub-header{display:flex;align-items:center;justify-content:space-between}.stub-skeleton-block{display:flex;flex-direction:column;gap:var(--space-3)}.period-switch{display:inline-flex;gap:var(--space-1);padding:var(--space-1);border:1px solid var(--ring-color);border-radius:var(--radius-md);background:var(--surface-card);align-self:flex-start}.period-btn{border:none;background:transparent;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);font-size:14px;color:var(--text-muted)}.period-btn--on{background:var(--color-dark-surface);color:var(--text-on-dark)}.sk-chart{height:220px}.page{display:flex;flex-direction:column;gap:var(--space-4)}.page-header{display:flex;align-items:center;gap:var(--space-2);min-width:0;min-height:var(--header-h)}.page-header-title{flex:1;min-width:0;font-size:var(--fs-h3);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-header-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.action-label{white-space:nowrap}@media(max-width:399px){.action-label{display:none}}.info-banner{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 14%,var(--surface-card));border:1px solid var(--ring-color);color:var(--text-primary);font-size:14px}.info-banner--ok{background:color-mix(in srgb,var(--mint-carbs) 18%,var(--surface-card))}.field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.field-label{font-size:12px;color:var(--text-muted)}.field input,.field select,.ingredient-name{width:100%;min-height:44px;padding:0 var(--space-3);border:1px solid var(--ring-color);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-primary);font:inherit;font-size:15px}.field input:focus-visible,.field select:focus-visible,.ingredient-name:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.day-summary{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card);box-shadow:var(--shadow-tile)}.day-summary-kcal{display:flex;flex-direction:column;gap:var(--space-2)}.day-summary-kcal-head{display:flex;align-items:baseline;justify-content:space-between}.day-summary-label{font-size:14px;color:var(--text-muted)}.day-summary-value{font-size:26px;font-weight:700}.day-summary-norm{font-size:12px;color:var(--text-muted)}.day-summary-macros{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.macro-chip{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--ring-color)}.macro-chip--protein{background:color-mix(in srgb,var(--protein) 14%,var(--surface-card))}.macro-chip--fat{background:color-mix(in srgb,var(--fat) 14%,var(--surface-card))}.macro-chip--carbs{background:color-mix(in srgb,var(--carbs) 16%,var(--surface-card))}.macro-chip-name{font-size:12px;color:var(--text-muted)}.macro-chip-value{font-size:16px;font-weight:700}.coverage-panel{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card)}.coverage-title{font-size:16px;font-weight:700}.coverage-macros{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.coverage-macro{display:flex;flex-direction:column;gap:var(--space-1)}.coverage-macro-head{display:flex;align-items:baseline;justify-content:space-between}.coverage-name{font-size:14px;display:inline-flex;align-items:center;gap:var(--space-2)}.coverage-value{font-size:14px;font-weight:600}.coverage-track{position:relative;height:8px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-card-ring) 70%,transparent);overflow:hidden}.coverage-track--lg{height:12px}.coverage-track-fill{position:absolute;inset-block:0;inset-inline-start:0;background:var(--accent);border-radius:var(--radius-sm)}.coverage-norm{font-size:12px;color:var(--text-muted)}.coverage-summary{font-size:13px;color:var(--text-muted)}.coverage-others{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.coverage-other{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--ring-color);border-radius:var(--radius-md)}.coverage-other .coverage-value{margin-left:auto}.coverage-class{font-size:11px;color:var(--text-muted);text-transform:lowercase}.coverage-uncertain{font-size:11px;padding:1px var(--space-2);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--fat) 14%,var(--surface-card));color:var(--text-muted)}.diary-actions{display:flex;gap:var(--space-3)}.diary-actions .btn{flex:1}.manual-form{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card)}.meal-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.meal-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-md);background:var(--surface-card);color:var(--text-primary);text-align:start}.meal-item:hover{border-color:var(--accent-strong)}.meal-type{font-weight:700;min-width:76px}.meal-names{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:14px}.chip{display:inline-flex;align-items:center;gap:var(--space-1);align-self:flex-start;padding:3px 10px;border-radius:var(--radius-pill);font-size:var(--fs-caption);font-weight:var(--fw-medium);white-space:nowrap}.chip--draft{background:var(--surface-draft-soft);color:var(--text-draft)}.chip--confirmed,.chip--active{background:var(--surface-success-soft);color:var(--text-success)}.chip--off{background:var(--surface-sunken);color:var(--text-muted)}.chip--info{background:var(--surface-accent-soft);color:var(--text-primary)}.ingredient-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.ingredient-row{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card)}.ingredient-row-head{display:flex;align-items:center;gap:var(--space-2)}.ingredient-remove{min-height:40px;font-size:13px;flex-shrink:0}.ingredient-row-fields{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.edit-actions{position:sticky;bottom:0;z-index:var(--z-sticky);display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-3) calc(var(--space-3) + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--color-bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 -1px 0 var(--divider)}.edit-actions .btn-primary,.edit-actions .btn-accent{flex:1;min-height:52px}.edit-actions .btn-ghost{flex:0 0 auto}.stats-range{font-size:13px;color:var(--text-muted)}.chart-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card)}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.chart-title{font-size:var(--fs-h3);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title)}.chart-metric-switch{display:inline-flex;gap:var(--space-1);max-width:100%;overflow-x:auto;scrollbar-width:none}.chart-metric-switch::-webkit-scrollbar{display:none}.chart-plot{display:grid;grid-template-columns:var(--chart-axis) 1fr;gap:var(--space-2);align-items:stretch}.chart-axis{display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-end;font-variant-numeric:tabular-nums}.chart-axis-unit{font-size:var(--fs-chart-label);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--ls-label)}.chart-axis-scale{flex:1;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;font-size:var(--fs-chart-label);color:var(--text-muted)}.chart-area{display:flex;flex-direction:column;min-width:0}.chart-bars{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:var(--chart-gap);height:var(--chart-h);border-bottom:1px solid var(--chart-grid)}.chart-grid-line{position:absolute;inset-inline:0;border-top:1px dashed var(--chart-grid);pointer-events:none}.chart-col{flex:1 1 0;min-width:0;max-width:var(--chart-col-max);position:relative;height:100%;display:flex;align-items:flex-end;justify-content:center}.chart-range{position:absolute;inset-inline:20%;background:var(--chart-range);border-radius:3px}.chart-bar{position:relative;width:min(70%,var(--chart-bar-max));margin-inline:auto;background:var(--chart-bar);border-radius:var(--chart-bar-radius) var(--chart-bar-radius) 0 0;min-height:var(--chart-bar-min-h);transition:height var(--dur-slow) var(--ease-standard)}.chart-bar--unknown{align-self:center;background:transparent;color:var(--text-muted);font-family:var(--font-mono);min-height:0;width:auto;margin:0}.chart-labels{display:flex;align-items:flex-start;justify-content:center;gap:var(--chart-gap)}.chart-col-label{flex:1 1 0;min-width:0;max-width:var(--chart-col-max);text-align:center;font-size:var(--fs-chart-label);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-5) 0;text-align:center}.chart-empty-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--empty-icon-size);height:var(--empty-icon-size);border-radius:var(--radius-chip);background:var(--surface-sunken);color:var(--text-muted)}.chart-empty-title{font-size:var(--fs-h3);font-weight:var(--fw-semibold)}.totals-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card)}.totals-title{font-size:16px;font-weight:700}.totals-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.totals-row{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--ring-color);border-radius:var(--radius-md)}.totals-name{font-weight:600}.totals-value{margin-left:auto;font-weight:700}.totals-norm{font-size:12px;color:var(--text-muted)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:color-mix(in srgb,var(--color-dark-surface) 45%,transparent);z-index:20}.dialog{width:100%;max-width:420px;max-height:85dvh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);border:1px solid var(--ring-color);border-radius:var(--radius-lg);background:var(--surface-card);box-shadow:var(--shadow-tile)}.dialog-header{display:flex;align-items:center;justify-content:space-between}.dialog-header h2{font-size:18px}.dialog-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.norms-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.norms-row{display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:var(--space-2);align-items:end}.norms-name{display:flex;flex-direction:column;font-size:14px;font-weight:600}.norms-unit{font-size:11px;color:var(--text-muted)}.settings-page,.profile-page{display:flex;flex-direction:column;gap:var(--space-4)}.section-label{font-size:var(--fs-micro);font-weight:var(--fw-semibold);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-muted)}.section-label--sentence{text-transform:none;letter-spacing:normal}.settings-card{display:flex;flex-direction:column;background:var(--surface-card);box-shadow:var(--ring-inset);border-radius:var(--radius-lg);overflow:hidden}.settings-row{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--divider)}.settings-row:last-child{border-bottom:none}.settings-row--link{color:inherit;text-decoration:none}.settings-row--link:hover{background:var(--surface-sunken)}.settings-row-label{flex:1;min-width:0;font-size:var(--fs-body);color:var(--text-primary)}.settings-row-value{font-size:var(--fs-secondary);color:var(--text-secondary);white-space:nowrap}.settings-row-chevron{display:inline-flex;color:var(--text-tertiary)}.provider-form{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--divider)}.provider-form .field-label{font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--text-secondary)}.check-row{display:flex;align-items:center;gap:var(--space-2);min-height:var(--tap-min);font-size:var(--fs-secondary);color:var(--text-primary);cursor:pointer}.check-row input{width:20px;height:20px;accent-color:var(--accent-strong)}.key-field{display:flex;align-items:center;gap:var(--space-2)}.key-field input{flex:1}.key-mask{flex:1;font-family:var(--font-mono);font-size:var(--fs-body);color:var(--text-primary);letter-spacing:.04em}.info-note{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--text-secondary);font-size:var(--fs-secondary)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--radius-pill);background:var(--surface-success-soft);color:var(--text-success);font-size:20px;font-weight:var(--fw-semibold)}.profile-head{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-3) 0}.profile-name{font-size:var(--fs-h1);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title)}.profile-role{font-size:var(--fs-secondary);color:var(--text-secondary)}.mono-id{font-family:var(--font-mono);font-size:var(--fs-secondary);color:var(--text-secondary)}.inline-edit{display:flex;align-items:center;gap:var(--space-2);width:100%}.inline-edit input{flex:1;min-width:0;min-height:var(--tap-min);padding:0 var(--space-3);border:none;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--text-primary);font:inherit;font-size:var(--fs-body)}.provider-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--divider)}.provider-item:last-child{border-bottom:none}.provider-item-main{display:flex;flex-direction:column;gap:2px;min-width:0}.provider-label{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--text-primary)}.provider-sub{font-size:var(--fs-caption);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.provider-item-actions{display:flex;gap:var(--space-2);flex-shrink:0}.provider-action{min-height:var(--tap-min);padding:0 var(--space-3);font-size:var(--fs-secondary)}.provider-form-title{font-size:var(--fs-h3);font-weight:var(--fw-semibold);letter-spacing:var(--ls-title)}.provider-row-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-5);text-align:center}.empty-state-icon{display:inline-flex;align-items:center;justify-content:center;width:var(--empty-icon-size);height:var(--empty-icon-size);border-radius:var(--radius-chip);background:var(--surface-sunken);color:var(--text-muted)}.empty-state-title{font-size:var(--fs-h3);font-weight:var(--fw-semibold)}.empty-state-sub{font-size:var(--fs-secondary);color:var(--text-secondary)}.profile-page>.btn{width:100%}.recognize-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;padding:var(--space-4);background:var(--surface-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.recognize-card{width:100%;max-width:520px;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--surface-card);box-shadow:var(--ring-inset)}.recognize-head{display:flex;align-items:center;gap:var(--space-3)}.recognize-headlines{min-width:0}.recognize-spark{display:inline-flex;gap:4px;flex-shrink:0}.recognize-spark span{width:8px;height:8px;border-radius:50%;background:var(--accent-strong);animation:rec-bounce 1.2s infinite ease-in-out}.recognize-spark span:nth-child(2){animation-delay:.15s}.recognize-spark span:nth-child(3){animation-delay:.3s}@keyframes rec-bounce{0%,80%,to{transform:translateY(0);opacity:.45}40%{transform:translateY(-6px);opacity:1}}.recognize-title{margin:0;font-size:var(--fs-h3);font-weight:var(--fw-semibold);color:var(--text-primary)}.recognize-stage{margin:2px 0 0;font-size:var(--fs-caption);color:var(--text-secondary)}.recognize-timer{font-variant-numeric:tabular-nums;color:var(--text-tertiary)}.recognize-reasoning{max-height:34vh;min-height:96px;overflow-y:auto;padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-sunken);scroll-behavior:smooth}.recognize-thoughts{margin:0;white-space:pre-wrap;word-break:break-word;font-size:var(--fs-caption);line-height:1.55;color:var(--text-secondary)}.recognize-thoughts--waiting{color:var(--text-tertiary);font-style:italic}.recognize-hint{margin:0;font-size:var(--fs-caption);color:var(--text-tertiary)}@media(prefers-reduced-motion:reduce){.recognize-spark span{animation:none}.recognize-reasoning{scroll-behavior:auto}}
