@import url("https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap");:root{--paper:#faf8f6;--paper-warm:#f3eeea;--ink:#2c2420;--ink-soft:#4a3f38;--ink-muted:#7a6e65;--ink-faint:#a89e96;--ink-ghost:#d4cec9;--rule:#e8e2dd;--accent:#3d322b;--accent-light:#5c4f46;--accent-bg:#f5f0ec;--danger:#b33a2a;--danger-bg:#fef2f0;--warning-bg:#fdf8ee;--warning-text:#7a5220;--font-display:"Instrument Serif",Georgia,serif;--font-body:"Inter",-apple-system,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,monospace;--touch:44px;--radius:12px;--radius-sm:8px;--radius-xs:4px;--shadow-card:0 1px 3px rgba(44,36,32,0.04),0 4px 12px rgba(44,36,32,0.03);--shadow-elevated:0 4px 16px rgba(44,36,32,0.08),0 12px 40px rgba(44,36,32,0.04);--shadow-overlay:0 24px 80px rgba(44,36,32,0.2)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{text-size-adjust:100%;overflow-x:hidden;max-width:100vw}body{font-family:var(--font-body);background:var(--paper);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;border:none;background:none}a{color:inherit;text-decoration:none}.land{min-height:100dvh}.land-nav{display:flex;align-items:center;justify-content:space-between;padding:24px 32px;max-width:1200px;margin:0 auto}.land-wordmark{font-family:var(--font-display);font-size:22px;color:var(--ink)}.land-nav-link{font-size:14px;font-weight:500;color:var(--ink-muted);transition:color .15s}.land-nav-link:hover{color:var(--ink)}.land-split{display:grid;grid-template-columns:1fr;grid-gap:48px;gap:48px;max-width:1200px;margin:0 auto;padding:60px 32px 80px;align-items:center}@media (min-width:900px){.land-split{grid-template-columns:1fr 1fr;padding:100px 56px 120px;gap:80px}}.land-left{animation:landFadeUp .6s ease-out both}.land-h1{font-family:var(--font-display);font-size:clamp(40px,7vw,72px);line-height:1.1;color:var(--ink);margin-bottom:24px}.land-h1-line{display:block}.land-h1-line--2,.land-sub{color:var(--ink-muted)}.land-sub{font-size:17px;line-height:1.7;max-width:420px;margin-bottom:32px}.land-actions{display:flex;gap:12px;flex-wrap:wrap}.land-btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 28px;font-size:14px;font-weight:600;border-radius:var(--radius-sm);transition:all .15s}.land-btn--primary{background:var(--accent);color:white}.land-btn--primary:hover{background:#231c18}.land-btn--primary:active{transform:scale(.97)}.land-btn--ghost{border:1.5px solid var(--rule);color:var(--ink-soft)}.land-btn--ghost:hover{border-color:var(--ink-muted);color:var(--ink)}.land-right{animation:landFadeUp .6s ease-out .2s both}.land-receipt{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:28px 24px;box-shadow:var(--shadow-elevated);font-family:var(--font-mono);font-size:13px;max-width:380px;margin:0 auto}@media (min-width:900px){.land-receipt{margin:0 0 0 auto}}.land-receipt-header{margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--rule)}.land-receipt-date{font-family:var(--font-display);font-size:16px;color:var(--ink)}.land-receipt-meal{margin-bottom:16px}.land-receipt-meal-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}.land-receipt-title{font-family:var(--font-body);font-weight:600;font-size:14px;color:var(--ink)}.land-receipt-kcal{font-weight:500;color:var(--ink)}.land-receipt-comp{display:flex;justify-content:space-between;padding:3px 0 3px 12px;color:var(--ink-muted);font-size:12px}.land-receipt-num{color:var(--ink-faint)}.land-receipt-divider{height:1px;background:var(--rule);margin:12px 0}.land-receipt-total{display:flex;justify-content:space-between;padding-top:4px;font-weight:500;color:var(--ink)}.land-receipt-total-num{font-weight:600}.land-receipt-anim--1{animation:landFadeUp .4s ease-out .5s both}.land-receipt-anim--2{animation:landFadeUp .4s ease-out .65s both}.land-receipt-anim--3{animation:landFadeUp .4s ease-out .75s both}.land-receipt-anim--4{animation:landFadeUp .4s ease-out .85s both}.land-receipt-anim--5{animation:landFadeUp .4s ease-out .95s both}.land-receipt-anim--6{animation:landFadeUp .4s ease-out 1.05s both}.land-receipt-anim--7{animation:landFadeUp .4s ease-out 1.15s both}.land-receipt-anim--8{animation:landFadeUp .4s ease-out 1.25s both}.land-receipt-anim--9{animation:landFadeUp .4s ease-out 1.35s both}@keyframes landFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.land-how{max-width:720px;margin:0 auto;padding:60px 32px 80px;display:flex;flex-direction:column;gap:32px}.land-how-step{display:flex;gap:20px;align-items:flex-start}.land-how-num{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--paper-warm);font-family:var(--font-display);font-size:16px;color:var(--ink-soft)}.land-how-step h3{font-family:var(--font-display);font-size:18px;color:var(--ink);margin-bottom:4px}.land-how-step p{font-size:14px;color:var(--ink-muted);line-height:1.6}.land-footer{text-align:center;padding:32px 24px;font-size:13px;color:var(--ink-faint);border-top:1px solid var(--rule)}.land-disclaimer{margin-top:16px;font-size:11px;color:var(--ink-ghost);max-width:520px;margin-left:auto;margin-right:auto;line-height:1.5}.app-shell{display:flex;min-height:100dvh}.app-main{flex:1 1;min-width:0;padding:32px 24px 100px;max-width:800px;overflow-x:hidden}.pwa-back-link{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--ink-muted);text-decoration:none;margin-bottom:12px}.pwa-back-link:active{opacity:.6}@media (min-width:1024px){.app-main{padding:48px 56px;max-width:none}}.sidebar{display:none}@media (min-width:1024px){.sidebar{display:flex;flex-direction:column;width:260px;height:100dvh;padding:32px 24px;background:white;border-right:1px solid var(--rule);position:fixed;top:0;left:0;z-index:50}.app-main{margin-left:260px}}.sidebar-logo{font-family:var(--font-display);font-size:18px;font-weight:700;color:var(--ink);margin-bottom:40px}.sidebar-nav{display:flex;flex-direction:column;gap:4px;flex:1 1}.sidebar-link{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--ink-muted);transition:background .15s,color .15s}.sidebar-link:hover{background:var(--paper-warm);color:var(--ink)}.sidebar-link--active{background:var(--accent-bg);color:var(--accent);font-weight:600}.sidebar-link--disabled{opacity:.4;cursor:default}.sidebar-scan-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;margin-top:24px;background:var(--accent);color:white;font-size:14px;font-weight:700;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,transform .1s}.sidebar-scan-button:hover{background:#231c18}.sidebar-scan-button:active{transform:scale(.97)}.sidebar-footer{margin-top:auto;padding-top:24px;border-top:1px solid var(--rule)}.sidebar-sign-out{font-size:13px;color:var(--ink-faint);transition:color .15s}.sidebar-sign-out:hover{color:var(--danger)}.tab-bar{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-around;padding:8px 16px calc(8px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--rule);z-index:100}@media (min-width:1024px){.tab-bar{display:none}}.tab-button{flex:1 1;height:var(--touch);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);cursor:pointer;transition:color .2s}.tab-button:disabled{cursor:default}.tab-active{color:var(--accent)}.fab-button{width:56px;height:56px;margin:0 20px;border-radius:50%;background:var(--accent);color:white;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px rgba(44,36,32,.3),0 1px 3px rgba(44,36,32,.2);transition:transform .15s ease,box-shadow .15s ease}.fab-button:hover{transform:scale(1.05);box-shadow:0 6px 20px rgba(44,36,32,.35),0 2px 6px rgba(44,36,32,.25)}.fab-button:active{transform:scale(.95)}.ledger-container{padding-top:24px}.ledger-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px;padding:0 4px}.ledger-date{font-family:var(--font-display);font-size:22px;font-weight:700;font-optical-sizing:auto;color:var(--ink)}.date-nav-button{width:var(--touch);height:var(--touch);display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--ink-muted);cursor:pointer;transition:color .2s,background .2s}.date-nav-button:hover{color:var(--accent);background:var(--accent-bg)}.macro-header{display:flex;justify-content:flex-end;padding:0 20px 12px;border-bottom:1px solid var(--rule);margin-bottom:16px}.macro-col,.macro-col-kcal{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;text-align:right}.macro-col-kcal{width:52px}.macro-col{width:36px}.empty-state{text-align:center;padding:80px 32px}.empty-state p{font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--ink-muted);margin-bottom:8px}.empty-hint{font-size:14px;color:var(--ink-faint)}.meals-list{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.meal-card{background:white;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-card);border:1px solid var(--rule);transition:box-shadow .2s,border-color .2s;overflow:hidden}.meal-card:hover{box-shadow:var(--shadow-elevated);border-color:transparent}.meal-card-header{margin-bottom:16px}.meal-card-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}.meal-card-title{font-family:var(--font-display);font-size:17px;font-weight:700;color:var(--ink);flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meal-card-time{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);white-space:nowrap}.meal-card-macros{display:flex;justify-content:flex-end}.macro-value,.macro-value-kcal{font-family:var(--font-mono);font-weight:500;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.macro-value-kcal{width:52px;font-size:14px;color:var(--ink)}.macro-value{width:36px;font-size:13px;color:var(--ink-muted)}.meal-card-footer{display:flex;justify-content:flex-end;gap:16px;margin-top:12px;padding-top:10px;border-top:1px solid var(--rule)}.action-text{font-size:12px;font-weight:500;color:var(--ink-faint);cursor:pointer;padding:4px 0;transition:color .15s}.action-text:hover{color:var(--ink-soft)}.action-text:disabled{opacity:.4;cursor:not-allowed}.action-text--delete:hover{color:var(--danger)}.meal-card-divider{border:none;height:1px;background:var(--rule);margin:0 -20px 16px}.meal-card-components{display:flex;flex-direction:column;gap:8px}.component-row{display:flex;align-items:center;justify-content:space-between;padding:2px 0}.component-name{flex:1 1;font-size:14px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:12px}.component-macros{display:flex}.sub-container{display:inline;position:relative;margin-left:6px}.sub-btn{font-size:11px;color:var(--ink-faint);cursor:pointer;padding:2px 4px;border-radius:3px;transition:color .15s}.sub-btn:hover{color:var(--ink-muted);background:var(--paper-warm)}.sub-dropdown{position:absolute;top:100%;left:0;z-index:10;background:white;border:1px solid var(--rule);border-radius:var(--radius-xs);box-shadow:var(--shadow-elevated);padding:4px;min-width:120px}.sub-goal{display:block;width:100%;padding:6px 10px;font-size:12px;text-align:left;color:var(--ink-soft);cursor:pointer;border-radius:3px;transition:background .15s}.sub-goal:hover{background:var(--paper-warm)}.sub-result{display:flex;align-items:center;gap:6px;padding:6px 0;font-size:12px}.sub-result-arrow{color:var(--ink-faint)}.sub-result-name{font-weight:500;color:var(--accent)}.sub-result-reason{color:var(--ink-faint);font-style:italic}.sub-result-close{font-size:14px;color:var(--ink-faint);cursor:pointer;margin-left:auto}.sub-loading{font-size:11px;color:var(--ink-faint);margin-left:6px}.day-totals-card{background:var(--paper-warm);border-radius:var(--radius);padding:20px;border:1px solid var(--rule)}.day-totals-header{display:flex;align-items:center;justify-content:space-between}.day-totals-label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.day-totals-macros{display:flex;font-weight:700}.day-totals-macros .macro-value-kcal{font-size:16px}.day-totals-macros .macro-value{font-size:14px;color:var(--ink-soft)}.day-totals-progress{margin-top:14px}.progress-bar{width:100%;height:4px;background:var(--ink-ghost);border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .4s cubic-bezier(.4,0,.2,1)}.progress-label{display:block;margin-top:6px;font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);text-align:right}.scan-overlay{position:fixed;inset:0;background:rgba(44,36,32,.4);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:200;display:flex;align-items:flex-end;justify-content:center;padding:20px;animation:overlayIn .2s ease-out}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.scan-overlay-content{position:relative;background:white;border-radius:var(--radius) var(--radius) 0 0;padding:28px 20px calc(24px + env(safe-area-inset-bottom));width:100%;max-width:500px;max-height:85dvh;overflow-y:auto;overflow-x:hidden;box-shadow:var(--shadow-overlay);animation:sheetUp .3s cubic-bezier(.2,0,0,1)}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.overlay-close{position:absolute;top:16px;right:16px;width:var(--touch);height:var(--touch);display:flex;align-items:center;justify-content:center;color:var(--ink-faint);z-index:10;cursor:pointer;border-radius:50%;transition:background .15s,color .15s}.overlay-close:hover{background:var(--paper-warm);color:var(--ink)}.overlay-title{font-family:var(--font-display);font-size:22px;font-weight:700;margin-bottom:20px;color:var(--ink)}.credit-pill{display:inline-flex;align-items:center;gap:6px;background:var(--accent-bg);padding:6px 12px;border-radius:20px;margin-bottom:16px}.credit-pill-link{display:inline-block;text-decoration:none;margin-bottom:16px}.credit-count{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--accent)}.credit-label{font-size:12px;color:var(--ink-muted)}.mode-picker{display:flex;gap:6px;margin-bottom:20px;border-bottom:1px solid var(--rule);flex-wrap:wrap}.mode-tab{padding:12px 16px;background:none;border:none;border-bottom:2px solid transparent;color:var(--ink-muted);font-family:var(--font-body);font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap;transition:color .2s,border-color .2s}.mode-tab:hover{color:var(--ink)}.mode-tab-active{color:var(--accent);border-bottom-color:var(--accent)}.photo-upload{margin-bottom:20px}.photo-input-hidden{display:none}.photo-input-label{display:flex;align-items:center;justify-content:center;padding:40px 20px;border:2px dashed var(--rule);border-radius:var(--radius-sm);background:var(--paper);cursor:pointer;transition:border-color .2s,background .2s}.photo-input-label:hover{border-color:var(--accent);background:var(--accent-bg)}.photo-prompt{color:var(--ink-muted)}.photo-prompt,.photo-selected{font-family:var(--font-body);font-size:14px}.photo-selected{color:var(--ink);font-weight:500}.upload-error{margin-top:-12px;margin-bottom:16px;padding:12px;background:var(--danger-bg);border-radius:var(--radius-xs);color:var(--danger);font-size:13px}.scan-input{width:100%;background:var(--paper);border:1.5px solid var(--rule);border-radius:var(--radius-sm);padding:14px 16px;font-size:15px;line-height:1.5;color:var(--ink);resize:vertical;min-height:80px;transition:border-color .2s,box-shadow .2s;margin-bottom:16px}.scan-input::placeholder{color:var(--ink-faint)}.scan-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(44,36,32,.08)}.tier-picker{margin-bottom:20px}.tier-label{display:block;font-size:12px;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.tier-chips{display:flex;gap:8px}.tier-chip{flex:1 1;height:var(--touch);border:1.5px solid var(--rule);border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:var(--ink-muted);cursor:pointer;transition:all .15s}.tier-chip:hover{border-color:var(--accent);color:var(--accent)}.tier-chip-active{border-color:var(--accent)}.scan-button,.tier-chip-active{background:var(--accent);color:white}.scan-button{width:100%;height:52px;border-radius:var(--radius-sm);font-size:15px;font-weight:700;cursor:pointer;transition:background .15s,transform .1s}.scan-button:hover{background:#231c18}.scan-button:active{transform:scale(.98)}.scan-button:disabled{background:var(--ink-ghost);color:var(--ink-faint);cursor:not-allowed}.scan-button--secondary{background:var(--paper-warm);color:var(--ink);border:1px solid var(--rule)}.scan-button--secondary:hover{background:var(--rule)}.scan-error{font-size:13px;color:var(--danger);margin-bottom:12px}.scan-photos{margin-bottom:16px}.scan-photos-list{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}.scan-photo-thumb{position:relative;width:64px;height:64px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--rule)}.scan-photo-thumb img{width:100%;height:100%;object-fit:cover}.scan-photo-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:rgba(0,0,0,.6);color:white;font-size:11px;border:none}.scan-photo-add,.scan-photo-remove{display:flex;align-items:center;justify-content:center;cursor:pointer}.scan-photo-add{flex-direction:column;width:64px;height:64px;border:1.5px dashed var(--rule);border-radius:var(--radius-sm);color:var(--ink-muted);font-size:10px;gap:2px}.scan-photos-hint{font-size:11px;color:var(--ink-ghost)}.barcode-product-card{background:var(--paper-warm);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:16px;margin-bottom:16px}.barcode-product-card h3{font-family:var(--font-display);font-size:18px;margin-bottom:4px}.barcode-product-brand{font-size:13px;color:var(--ink-muted);margin-bottom:10px}.barcode-product-macros{display:flex;gap:10px;font-size:12px;color:var(--ink-soft);flex-wrap:wrap}.barcode-product-per{color:var(--ink-ghost)}.barcode-actions{display:flex;gap:8px}.barcode-actions .scan-button{flex:1 1}.scan-loading{text-align:center;padding:48px 24px}.loading-dots{font-size:32px;color:var(--accent);display:flex;justify-content:center;gap:6px;margin-bottom:12px}.loading-dots span{animation:pulse 1.4s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.16s}.loading-dots span:nth-child(3){animation-delay:.32s}@keyframes pulse{0%,80%,to{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.follow-up-question{background:var(--paper-warm);padding:16px;border-radius:var(--radius-sm);margin-bottom:16px;border-left:3px solid var(--accent);font-size:15px;color:var(--ink-soft)}.review-form{position:relative}.barcode-scanner{margin-top:12px}.barcode-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.barcode-header h3{font-size:16px;font-weight:600}.barcode-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--ink-muted)}.barcode-video{width:100%;border-radius:var(--radius-sm);margin-bottom:12px}.barcode-manual{display:flex;gap:8px}.barcode-manual .form-input{flex:1 1}.barcode-status{font-size:13px;color:var(--ink-muted);text-align:center;padding:20px}.barcode-error{font-size:13px;color:var(--danger);margin-top:8px}.scan-subtitle{font-size:13px;color:var(--ink-muted)}.multi-meal-progress,.scan-subtitle{margin-bottom:16px}.multi-meal-progress-bar{height:4px;background:var(--rule);border-radius:2px;overflow:hidden;margin-bottom:6px}.multi-meal-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .3s ease}.multi-meal-progress-label{font-size:12px;color:var(--ink-muted);font-weight:500}.confidence-banner{background:var(--warning-bg);color:var(--warning-text);padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;margin-bottom:20px;border:1px solid #fde68a}.form-group{margin-bottom:20px}.form-label{display:block;font-size:12px;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.form-input,.form-select{width:100%;height:var(--touch);background:var(--paper);border:1.5px solid var(--rule);border-radius:var(--radius-sm);padding:0 14px;font-size:15px;transition:border-color .2s,box-shadow .2s}.form-input:focus,.form-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(44,36,32,.08)}.component-edit-row{background:var(--paper);border:1.5px solid var(--rule);border-radius:var(--radius-sm);padding:12px;margin-bottom:10px;transition:border-color .15s;overflow:hidden}.component-edit-row:focus-within{border-color:var(--accent)}.component-edit-header{display:flex;gap:8px;margin-bottom:10px}.form-input-inline{flex:1 1;height:36px;background:white;border:1px solid var(--rule);border-radius:var(--radius-xs);padding:0 10px;font-size:14px;font-weight:500}.form-input-inline:focus{outline:none;border-color:var(--accent)}.component-remove{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);color:var(--ink-faint);cursor:pointer;transition:all .15s}.component-remove:hover{background:var(--danger-bg);color:var(--danger)}.component-edit-macros{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px}@media (min-width:600px){.component-edit-macros{grid-template-columns:repeat(6,1fr)}}.form-input-macro{height:32px;background:white;border:1px solid var(--rule);border-radius:var(--radius-xs);padding:0 4px;font-family:var(--font-mono);font-size:12px;text-align:center;transition:border-color .15s}.form-input-macro:focus{outline:none;border-color:var(--accent)}.component-add{width:100%;height:var(--touch);border:1.5px dashed var(--rule);border-radius:var(--radius-sm);color:var(--ink-faint);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.component-add:hover{border-color:var(--accent);color:var(--accent)}.form-actions{display:flex;gap:12px;margin-top:24px}.form-button{flex:1 1;height:48px;border-radius:var(--radius-sm);font-size:14px;font-weight:700;cursor:pointer;transition:all .15s}.form-button-discard{border:1.5px solid var(--rule);color:var(--ink-muted)}.form-button-discard:hover{border-color:var(--danger);color:var(--danger)}.form-button-save{background:var(--accent);color:white}.form-button-save:hover{background:#231c18}.auth-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:400px;background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:40px 32px;box-shadow:var(--shadow-card)}.auth-wordmark{display:block;font-size:20px;margin-bottom:32px}.auth-title,.auth-wordmark{font-family:var(--font-display);color:var(--ink);text-align:center}.auth-title{font-size:26px;margin-bottom:8px}.auth-subtitle{font-size:14px;color:var(--ink-muted);text-align:center;margin-bottom:24px;line-height:1.5}.auth-form{gap:16px;margin-top:24px}.auth-field,.auth-form{display:flex;flex-direction:column}.auth-field{gap:6px}.auth-field label{font-size:13px;font-weight:500;color:var(--ink-soft)}.auth-field input{height:44px;padding:0 14px;background:var(--paper);border:1.5px solid var(--rule);border-radius:var(--radius-sm);font-size:15px;transition:border-color .15s,box-shadow .15s}.auth-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(44,36,32,.06)}.auth-error{font-size:13px;color:var(--danger);text-align:center}.auth-submit{height:48px;margin-top:8px;background:var(--accent);color:white;font-size:15px;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,transform .1s}.auth-submit:hover{background:#231c18}.auth-submit:active{transform:scale(.98)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-links{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:20px;padding-top:20px;border-top:1px solid var(--rule)}.auth-links a{font-size:13px;color:var(--ink-muted);transition:color .15s}.auth-links a:hover{color:var(--ink)}.credits-page{max-width:600px;padding-top:24px}.credits-back{font-size:14px;color:var(--ink-muted);margin-bottom:16px;display:inline-flex;align-items:center;gap:8px;transition:color .15s}.credits-back:hover{color:var(--ink)}.credits-title{font-family:var(--font-display);font-size:28px;margin-bottom:24px}.credits-balance{display:flex;gap:24px;margin-bottom:16px}.credits-balance-item{display:flex;flex-direction:column}.credits-balance-number{font-family:var(--font-mono);font-size:36px;font-weight:500;color:var(--ink)}.credits-balance-label{font-size:13px;color:var(--ink-muted);margin-top:4px}.credits-reset-info{font-size:14px;color:var(--ink-muted);margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--rule)}.credits-log-title{font-family:var(--font-display);font-size:18px;margin-bottom:16px}.credits-log-empty{font-size:14px;color:var(--ink-faint)}.credits-log{display:flex;flex-direction:column;gap:12px}.credits-log-entry{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--rule)}.credits-log-info{display:flex;align-items:center;gap:8px}.credits-log-reason{font-size:14px;color:var(--ink-soft);text-transform:capitalize}.credits-log-tier{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint);background:var(--paper-warm);padding:2px 6px;border-radius:3px}.credits-log-right{display:flex;flex-direction:column;align-items:flex-end}.credits-log-delta{font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--ink)}.credits-log-date{font-size:11px;color:var(--ink-faint)}.credits-loading{padding:48px;text-align:center;color:var(--ink-faint)}.edit-overlay-placeholder,.scan-overlay-placeholder{position:fixed;inset:0;background:rgba(44,36,32,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:300;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}.settings-page{max-width:600px;padding-top:24px}.settings-back{font-size:14px;color:var(--ink-muted);margin-bottom:16px;display:inline-block}.settings-back:hover{color:var(--ink)}.settings-title{font-family:var(--font-display);font-size:28px;margin-bottom:32px}.settings-section{margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--rule)}.settings-section-title{font-family:var(--font-display);font-size:18px;margin-bottom:12px}.settings-hint{font-size:13px;color:var(--ink-faint);margin-bottom:12px}.nlg-wrapper-col{margin-bottom:16px}.nlg-wrapper{display:flex;gap:8px}.nlg-wrapper .form-input{flex:1 1;font-size:13px}.nlg-btn{padding:8px 16px;background:var(--accent);color:white;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer}.nlg-btn:disabled{opacity:.5;cursor:not-allowed}.settings-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.settings-row label{font-size:14px;color:var(--ink-soft);min-width:60px}.settings-row .form-select{flex:1 1}.settings-targets{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));grid-gap:8px;gap:8px}.settings-target-field label{display:block;font-size:11px;color:var(--ink-faint);text-transform:uppercase;margin-bottom:4px}.settings-target-field .form-input{width:100%;height:36px;text-align:center}.settings-tier-options{display:flex;gap:8px}.settings-tier-btn{flex:1 1;height:40px;border:1.5px solid var(--rule);border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.settings-tier-btn:hover{border-color:var(--ink-faint)}.settings-tier-btn--active{background:var(--accent);border-color:var(--accent);color:white}.settings-toggle{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink-soft);cursor:pointer}.settings-toggle input{width:18px;height:18px}.settings-section--danger{border-bottom:none;display:flex;flex-direction:column;gap:12px}.settings-sign-out{height:44px;border:1.5px solid var(--rule);border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:all .15s}.settings-sign-out:hover{border-color:var(--ink-faint);color:var(--ink)}.settings-delete{height:44px;border:1.5px solid var(--danger);border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--danger);cursor:pointer;transition:all .15s}.settings-delete:hover{background:var(--danger);color:white}.settings-loading{padding:48px;text-align:center;color:var(--ink-faint)}@media (min-width:481px){.scan-overlay-content{border-radius:var(--radius);margin-bottom:20px}.scan-overlay{align-items:center}}@media (min-width:1024px){.ledger-container{padding-top:0}.ledger-header{margin-bottom:40px}.ledger-date{font-size:28px}.meal-card{padding:28px}.meal-card-title{font-size:20px}.macro-value-kcal{width:64px;font-size:15px}.macro-value{width:48px;font-size:14px}.macro-col-kcal{width:64px}.macro-col{width:48px}.meals-list{gap:16px}.day-totals-card{padding:24px}}@media (max-width:380px){.macro-col{width:32px}.macro-value{width:32px;font-size:12px}.component-edit-macros{grid-template-columns:repeat(3,1fr)}}.scan-input--hint{min-height:48px;margin-top:12px;font-size:13px}.insights-page{max-width:700px;padding-top:24px}.insights-title{font-family:var(--font-display);font-size:28px;margin-bottom:24px}.insights-loading{padding:48px;text-align:center;color:var(--ink-faint)}.insights-empty{text-align:center;padding:60px 24px}.insights-empty p{font-family:var(--font-display);font-size:18px;color:var(--ink-muted);margin-bottom:8px}.insights-empty-hint{font-size:14px;color:var(--ink-faint)}.insights-error{font-size:13px;color:var(--danger);margin-bottom:12px}.insights-metrics{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:20px;margin-bottom:24px}.insights-metrics-header{margin-bottom:16px}.insights-metrics-label{font-family:var(--font-display);font-size:16px}.insights-metrics-sub{font-size:12px;color:var(--ink-muted);margin-left:8px}.insights-metrics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:12px;gap:12px}.metric-card{background:var(--paper-warm);border-radius:var(--radius-sm);padding:12px;text-align:center}.metric-card-value{display:block;font-family:var(--font-mono);font-size:18px;font-weight:600;color:var(--ink)}.metric-card-label{display:block;font-size:11px;color:var(--ink-muted);margin-top:2px}.metric-card-pct{display:block;font-size:10px;color:var(--ink-faint);margin-top:4px}.metric-card-pct--over{color:var(--danger)}.metric-card-pct--under{color:#b38a00}.insights-generate-section{margin-bottom:24px}.insights-generate{width:100%;height:44px;background:var(--accent);color:white;font-size:14px;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.insights-generate:hover{background:#231c18}.insights-generate:disabled{opacity:.5;cursor:not-allowed}.insights-analysis{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.insights-section{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:20px}.insights-section h2{font-family:var(--font-display);font-size:17px;margin-bottom:10px;color:var(--ink)}.insights-section p{font-size:14px;line-height:1.6;color:var(--ink-soft)}.insights-section ul{list-style:none;padding:0}.insights-section li{font-size:14px;color:var(--ink-soft);padding:6px 0 6px 14px;border-left:3px solid var(--rule);margin-bottom:6px;line-height:1.5}.insights-section--good li{border-left-color:#8fad7e}.insights-section--improve li{border-left-color:#c4956a}.insights-section--gaps li{border-left-color:#7a9eb8}.insights-history{margin-bottom:24px}.insights-history-title{font-family:var(--font-display);font-size:18px;margin-bottom:12px}.insights-history-item{background:white;border:1px solid var(--rule);border-radius:var(--radius-sm);margin-bottom:8px}.insights-history-summary{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;cursor:pointer;font-size:14px;font-weight:500}.insights-history-summary::-webkit-details-marker{display:none}.insights-history-date{font-size:12px;color:var(--ink-faint)}.insights-history-body{padding:0 16px 16px}.insights-history-overview{font-size:13px;color:var(--ink-soft);line-height:1.6;margin-bottom:10px}.insights-history-section{margin-bottom:8px}.insights-history-section h4{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:4px}.insights-history-section ul{list-style:none;padding:0}.insights-history-section li{font-size:13px;color:var(--ink-soft);padding:3px 0 3px 10px;border-left:2px solid var(--rule);margin-bottom:3px}.insights-history-note{font-size:13px;color:var(--ink-muted);font-style:italic}.insights-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.settings-save{width:100%;height:48px;background:var(--accent);color:white;font-size:15px;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s;margin-bottom:32px}.settings-save:hover{background:#231c18}.settings-save:disabled{opacity:.5;cursor:not-allowed}.macro-charts{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:24px;margin-top:16px}.macro-donut-container{position:relative;width:140px;height:140px;margin:0 auto 20px}.macro-donut-svg{width:100%;height:100%;transform:rotate(0deg)}.macro-donut-svg circle{transition:stroke-dasharray .6s ease,stroke-dashoffset .6s ease}.macro-donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.macro-donut-kcal{font-family:var(--font-mono);font-size:20px;font-weight:500;color:var(--ink)}.macro-donut-label{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}.macro-donut-legend{display:flex;justify-content:center;gap:20px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--rule)}.macro-legend-item{display:flex;align-items:center;gap:6px}.macro-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.macro-legend-label{font-size:12px;color:var(--ink-muted)}.macro-legend-value{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);font-weight:500}.macro-goals-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:14px}.goal-bar{margin-bottom:14px}.goal-bar:last-child{margin-bottom:0}.goal-bar-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.goal-bar-label{font-size:13px;color:var(--ink-soft)}.goal-bar-values{font-family:var(--font-mono);font-size:12px}.goal-bar-current{font-weight:500;color:var(--ink)}.goal-bar-current--over{color:var(--danger)}.goal-bar-separator{color:var(--ink-ghost);margin:0 2px}.goal-bar-target{color:var(--ink-faint)}.goal-bar-track{width:100%;height:6px;background:var(--paper-warm);border-radius:3px;overflow:hidden}.goal-bar-fill{height:100%;border-radius:3px;transition:width .4s cubic-bezier(.4,0,.2,1)}.goal-bar-fill--over{background:var(--danger)!important}.macro-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid var(--rule)}.macro-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.macro-stat-value{font-family:var(--font-mono);font-size:16px;font-weight:500;color:var(--ink)}.macro-stat-label{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.chat-toggle{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;margin-top:16px;background:white;border:1px solid var(--rule);border-radius:var(--radius);font-size:13px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:border-color .15s,color .15s}.chat-toggle:hover{border-color:var(--ink-faint);color:var(--ink-soft)}.chat-layout{display:flex;height:calc(100dvh - 120px);position:relative;overflow:hidden}.chat-sidebar-toggle{position:absolute;top:12px;left:0;z-index:20;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--paper-warm);border:1px solid var(--rule);border-radius:var(--radius-sm);color:var(--ink-muted);cursor:pointer;transition:background .15s}.chat-sidebar-toggle:hover{background:var(--rule)}@media (min-width:768px){.chat-sidebar-toggle{display:none}}.chat-sidebar-overlay{position:fixed;inset:0;background:rgba(44,36,32,.3);z-index:29}@media (min-width:768px){.chat-sidebar-overlay{display:none}}.chat-sidebar{width:260px;min-width:260px;border-right:1px solid var(--rule);background:var(--paper-warm);display:flex;flex-direction:column;overflow:hidden}@media (max-width:767px){.chat-sidebar{position:fixed;top:0;left:0;bottom:0;z-index:30;transform:translateX(-100%);transition:transform .2s ease;border-radius:0}.chat-sidebar--open{transform:translateX(0)}}.chat-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--rule)}.chat-sidebar-title{font-family:var(--font-display);font-size:18px;color:var(--ink)}.chat-new-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--ink-muted);cursor:pointer;transition:background .15s,color .15s}.chat-new-btn:hover{background:var(--rule);color:var(--ink)}.chat-thread-list{flex:1 1;overflow-y:auto;padding:8px}.chat-thread-empty{font-size:13px;color:var(--ink-faint);text-align:center;padding:24px 12px}.chat-thread-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:background .12s}.chat-thread-item:hover{background:var(--rule)}.chat-thread-item--active{background:white;border:1px solid var(--rule)}.chat-thread-item-content{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.chat-thread-item-title{font-size:13px;font-weight:500;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-thread-item-date{font-size:11px;color:var(--ink-faint)}.chat-thread-delete{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--ink-ghost);cursor:pointer;opacity:0;transition:opacity .12s,background .12s,color .12s}.chat-thread-item:hover .chat-thread-delete{opacity:1}.chat-thread-delete:hover{background:var(--danger-bg);color:var(--danger)}.chat-main{flex:1 1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.chat-main-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 12px 48px;border-bottom:1px solid var(--rule)}@media (min-width:768px){.chat-main-header{padding-left:16px}}.chat-page-title{font-family:var(--font-display);font-size:20px}.chat-credits-badge{font-size:12px;font-weight:600;color:var(--ink-muted);background:var(--paper-warm);border:1px solid var(--rule);padding:4px 10px;border-radius:100px}.chat-messages--standalone{flex:1 1;overflow-y:auto;padding:16px;background:white}.chat-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 24px;height:100%}.chat-welcome-title{font-family:var(--font-display);font-size:28px;color:var(--ink);margin-bottom:8px}.chat-welcome-text{font-size:14px;color:var(--ink-muted);max-width:400px;line-height:1.6;margin-bottom:24px}.chat-welcome-prompts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:440px}.chat-prompt-chip{font-size:13px;padding:8px 14px;border:1px solid var(--rule);border-radius:100px;color:var(--ink-soft);cursor:pointer;transition:border-color .15s,background .15s}.chat-prompt-chip:hover{border-color:var(--accent);background:var(--accent-bg)}.chat-msg-bubble{font-size:14px;line-height:1.6;padding:10px 14px;border-radius:var(--radius-sm);max-width:85%;position:relative}.chat-msg-bubble--user{background:var(--accent);color:white;margin-left:auto;border-bottom-right-radius:var(--radius-xs)}.chat-msg-bubble--assistant{background:var(--paper-warm);color:var(--ink-soft);border-bottom-left-radius:var(--radius-xs)}.chat-msg-bubble--user p{margin:0}.chat-msg-tier{display:block;font-size:10px;opacity:.7;margin-top:4px;text-align:right}.chat-bottom-bar{border-top:1px solid var(--rule);padding:12px 16px;background:var(--paper)}.chat-tier-row{display:flex;gap:8px;margin-bottom:10px}.chat-tier-row .tier-chip{flex:1 1;height:34px;font-size:12px}.chat-panel{margin-top:16px;background:white;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;max-height:400px}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--rule)}.chat-header-title{font-size:13px;font-weight:600;color:var(--ink-soft)}.chat-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ink-faint);cursor:pointer;border-radius:50%;transition:background .15s}.chat-close:hover{background:var(--paper-warm)}.chat-messages{flex:1 1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;min-height:150px}.chat-empty{font-size:13px;color:var(--ink-faint);text-align:center;padding:24px 16px;line-height:1.6}.chat-msg p{font-size:14px;line-height:1.5;padding:10px 14px;border-radius:var(--radius-sm);max-width:85%}.chat-msg--user p{background:var(--accent);color:white;margin-left:auto;border-bottom-right-radius:var(--radius-xs)}.chat-msg--assistant p{background:var(--paper-warm);color:var(--ink-soft);border-bottom-left-radius:var(--radius-xs)}.chat-cursor{animation:blink 1s steps(1) infinite;color:var(--ink-faint)}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.chat-input-row{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--rule)}.chat-input{flex:1 1;height:40px;padding:0 12px;background:var(--paper);border:1.5px solid var(--rule);border-radius:var(--radius-sm);font-size:14px;transition:border-color .15s}.chat-input:focus{outline:none;border-color:var(--accent)}.chat-input:disabled{opacity:.5}.chat-send{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:white;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.chat-send:hover{background:#231c18}.chat-send:disabled{opacity:.4;cursor:not-allowed}.suggestion-container{margin-top:16px}.suggestion-trigger{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;background:var(--paper-warm);border:1px solid var(--rule);border-radius:var(--radius);font-size:13px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:border-color .15s,color .15s,background .15s}.suggestion-trigger:hover{border-color:var(--ink-faint);color:var(--ink-soft);background:white}.suggestion-loading{font-size:13px;color:var(--ink-faint);text-align:center;padding:16px}.suggestion-error{font-size:13px;color:var(--danger);text-align:center;padding:8px}.suggestion-card{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:20px;margin-top:8px}.suggestion-name{font-family:var(--font-display);font-size:18px;color:var(--ink);margin-bottom:6px}.suggestion-desc{font-size:14px;color:var(--ink-soft);line-height:1.5;margin-bottom:12px}.suggestion-meta{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}.suggestion-kcal{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--ink)}.suggestion-why{font-size:12px}.suggestion-refresh{font-size:12px;color:var(--ink-faint);cursor:pointer;transition:color .15s}.suggestion-refresh:hover{color:var(--ink-soft)}.ledger-nav-row{display:flex;align-items:center;justify-content:space-between;width:100%}.ledger-date-group{position:relative;display:flex;align-items:center;cursor:pointer}.ledger-date-picker{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.ledger-date-center{display:flex;flex-direction:column;align-items:center;gap:4px}.ledger-today-btn{padding:3px 12px;font-size:11px;font-weight:500;color:var(--ink-muted);background:var(--paper-warm);border:1px solid var(--rule);border-radius:10px;cursor:pointer;transition:all .15s}.ledger-today-btn:hover{color:var(--ink);border-color:var(--ink-faint)}.ledger-today-btn--hidden{visibility:hidden}.scan-input-wrapper{position:relative}.scan-input-wrapper .voice-btn{position:absolute;bottom:10px;right:10px}.voice-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--ink-faint);cursor:pointer;transition:all .15s;background:var(--paper);border:1px solid var(--rule)}.voice-btn:hover{color:var(--ink-muted);border-color:var(--ink-faint)}.voice-btn--active{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.voice-btn-recording{display:flex;align-items:center;gap:4px;font-size:11px;font-family:var(--font-mono);font-weight:500}.voice-dot{width:6px;height:6px;border-radius:50%;background:var(--danger);animation:pulse-dot 1s infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.suggestion-macros{display:flex;gap:12px;font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);margin-bottom:8px}.suggestion-projected{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);background:var(--paper-warm);padding:6px 10px;border-radius:var(--radius-xs);margin-bottom:10px}.suggestion-why{font-size:13px;color:var(--ink-faint);font-style:italic;margin-bottom:12px}.suggestion-actions{display:flex;gap:8px}.recipe-form{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:20px;margin-top:12px}.recipe-form-title{font-family:var(--font-display);font-size:16px;margin-bottom:12px}.recipe-form-field{margin-bottom:12px}.recipe-form-field label{display:block;font-size:12px;color:var(--ink-muted);margin-bottom:4px}.recipe-form-field input{width:100%;height:36px;padding:0 10px;background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius-xs);font-size:14px}.recipe-form-field input:focus{outline:none;border-color:var(--accent)}.recipe-form-actions{display:flex;gap:8px;justify-content:flex-end}.recipe-form-cancel{color:var(--ink-muted)}.recipe-form-cancel,.recipe-form-submit{padding:8px 16px;font-size:13px;cursor:pointer}.recipe-form-submit{background:var(--accent);color:white;font-weight:600;border-radius:var(--radius-xs)}.recipe-form-submit:disabled{opacity:.5}.recipe-card{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:24px;margin-top:12px}.recipe-card-title{font-family:var(--font-display);font-size:20px;margin-bottom:12px}.recipe-card-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink-muted);padding-bottom:12px;border-bottom:1px solid var(--rule)}.recipe-card-meta,.recipe-card-section{margin-bottom:16px}.recipe-card-section h4{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:8px}.recipe-card-section ol,.recipe-card-section ul{padding-left:20px;font-size:14px;color:var(--ink-soft);line-height:1.8}.recipe-card-macros{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);margin-bottom:12px;padding:8px;background:var(--paper-warm);border-radius:var(--radius-xs)}.suggestion-recipe-btn{font-size:12px;color:var(--accent);cursor:pointer;font-weight:500;transition:opacity .15s}.suggestion-recipe-btn:hover{opacity:.7}.ledger-section{margin-top:32px;padding-top:24px;border-top:1px solid var(--rule)}.ledger-section-title{font-family:var(--font-display);font-size:18px;color:var(--ink-muted);margin-bottom:16px}.tab-more-container{position:relative;flex:1 1;display:flex;justify-content:center}.tab-more-menu{position:absolute;bottom:100%;right:0;margin-bottom:8px;background:white;border:1px solid var(--rule);border-radius:var(--radius-sm);box-shadow:var(--shadow-elevated);min-width:140px;overflow:hidden}.tab-more-item{display:block;padding:12px 16px;font-size:14px;color:var(--ink-soft);transition:background .15s}.tab-more-item:hover{background:var(--paper-warm)}.onboard{min-height:100dvh;display:flex;flex-direction:column;background:var(--paper)}.onboard-progress{position:fixed;top:0;left:0;right:0;height:3px;background:var(--rule);z-index:10}.onboard-progress-fill{height:100%;background:var(--accent);transition:width .5s cubic-bezier(.4,0,.2,1)}.onboard-content{flex:1 1;display:flex;align-items:center;justify-content:center;padding:60px 24px}.onboard-step{max-width:440px;width:100%;text-align:center}.onboard-fade{animation:onboardFade .4s ease-out}@keyframes onboardFade{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.onboard-emoji{font-size:56px;margin-bottom:24px;animation:onboardBounce .6s ease-out .2s both}@keyframes onboardBounce{0%{transform:scale(0)}60%{transform:scale(1.2)}to{transform:scale(1)}}.onboard-celebrate{animation:onboardCelebrate .8s ease-out}@keyframes onboardCelebrate{0%{transform:scale(0) rotate(-20deg)}50%{transform:scale(1.3) rotate(10deg)}to{transform:scale(1) rotate(0)}}.onboard-title{font-size:32px;margin-bottom:12px}.onboard-question,.onboard-title{font-family:var(--font-display);color:var(--ink)}.onboard-question{font-size:26px;margin-bottom:8px}.onboard-hint,.onboard-subtitle{font-size:15px;color:var(--ink-muted);margin-bottom:32px;line-height:1.6}.onboard-btn{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 36px;background:var(--accent);color:white;font-size:15px;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,transform .1s;margin-top:16px}.onboard-btn:hover{background:#231c18}.onboard-btn:active{transform:scale(.97)}.onboard-btn:disabled{opacity:.5;cursor:not-allowed}.onboard-cards{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.onboard-cards--vertical{flex-direction:column;align-items:stretch}.onboard-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 24px;background:white;border:2px solid var(--rule);border-radius:var(--radius);cursor:pointer;transition:all .2s;min-width:120px}.onboard-card:hover{border-color:var(--ink-faint);transform:translateY(-2px)}.onboard-card--selected{border-color:var(--accent);background:var(--accent-bg)}.onboard-card-emoji{font-size:28px}.onboard-card-label{font-size:14px;font-weight:600;color:var(--ink-soft)}.onboard-card-wide{display:flex;flex-direction:column;align-items:flex-start;padding:16px 20px;background:white;border:2px solid var(--rule);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;text-align:left}.onboard-card-wide:hover{border-color:var(--ink-faint)}.onboard-card-wide.onboard-card--selected{border-color:var(--accent);background:var(--accent-bg)}.onboard-card-wide-label{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:2px}.onboard-card-wide-desc{font-size:13px;color:var(--ink-muted)}.onboard-inputs{display:flex;flex-direction:column;gap:16px;text-align:left;margin-bottom:16px}.onboard-input-group label{display:block;font-size:13px;font-weight:500;color:var(--ink-muted);margin-bottom:6px}.onboard-input-group input{width:100%;height:48px;padding:0 16px;background:white;border:2px solid var(--rule);border-radius:var(--radius-sm);font-size:18px;font-family:var(--font-mono);text-align:center;transition:border-color .15s}.onboard-input-group input:focus{outline:none;border-color:var(--accent)}.onboard-targets{margin-bottom:16px}.onboard-target-big{display:flex;flex-direction:column;align-items:center;margin-bottom:24px;animation:onboardReveal .6s ease-out .2s both}@keyframes onboardReveal{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.onboard-target-value{font-family:var(--font-mono);font-size:48px;font-weight:500;color:var(--ink)}.onboard-target-unit{font-size:14px;color:var(--ink-muted);margin-top:4px}.onboard-target-row{display:flex;justify-content:center;gap:24px;animation:onboardReveal .6s ease-out .4s both}.onboard-target-item{display:flex;flex-direction:column;align-items:center;gap:4px}.onboard-target-num{font-family:var(--font-mono);font-size:20px;font-weight:500;color:var(--ink)}.onboard-target-label{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.suggest{margin-top:16px}.menu-upload{text-align:center;padding:40px 20px}.menu-upload-label{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px;border:2px dashed var(--rule);border-radius:var(--radius);cursor:pointer;color:var(--ink-muted);font-size:14px}.menu-upload-label:active{border-color:var(--accent)}.menu-upload-icon{color:var(--ink-ghost)}.menu-loading{text-align:center;padding:40px;color:var(--ink-muted);font-size:14px}.menu-card{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:16px;margin-bottom:12px}.menu-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.menu-card-name{font-family:var(--font-display);font-size:16px;margin-bottom:2px}.menu-card-desc{font-size:12px;color:var(--ink-muted)}.menu-card-score{background:var(--accent);color:white;font-size:12px;font-weight:700;padding:4px 8px;border-radius:var(--radius-sm);white-space:nowrap}.menu-card-macros{display:flex;gap:12px;font-size:12px;color:var(--ink-soft);margin:10px 0}.menu-card-reason{font-size:12px;color:var(--ink-muted);font-style:italic;margin-bottom:10px}.menu-card-add{width:100%;padding:8px;background:var(--ink);color:white;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer}.menu-card-add:disabled{opacity:.5;cursor:not-allowed}.menu-card-add:active:not(:disabled){transform:scale(.98)}.suggest-idle{display:flex;flex-direction:column;gap:8px}.suggest-restaurant-input{padding:10px 12px;border:1px dashed var(--rule);border-radius:var(--radius-sm);font-size:13px;background:transparent;color:var(--ink)}.suggest-restaurant-input::placeholder{color:var(--ink-ghost)}.suggest-trigger{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;background:var(--paper-warm);border:1px solid var(--rule);border-radius:var(--radius);font-size:13px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:all .15s}.suggest-trigger:hover{border-color:var(--ink-faint);color:var(--ink-soft)}.suggest-loading{padding:20px;color:var(--ink-faint)}.suggest-error,.suggest-loading{text-align:center;font-size:13px}.suggest-error{padding:8px;color:var(--danger)}.suggest-card{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:20px;animation:onboardFade .3s ease-out}.suggest-card--recipe{border-color:var(--accent-bg)}.suggest-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.suggest-card-name{font-family:var(--font-display);font-size:18px;color:var(--ink)}.suggest-card-dismiss{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ink-faint);cursor:pointer;border-radius:50%}.suggest-card-dismiss:hover{background:var(--paper-warm)}.suggest-card-desc{font-size:14px;color:var(--ink-soft);line-height:1.5;margin-bottom:14px}.suggest-card-macros{display:flex;gap:16px;padding:12px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:12px}.suggest-macro{display:flex;flex-direction:column;align-items:center;gap:2px}.suggest-macro-val{font-family:var(--font-mono);font-size:15px;font-weight:500;color:var(--ink)}.suggest-macro-label{font-size:10px;color:var(--ink-faint);text-transform:uppercase}.suggest-card-projected{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);margin-bottom:10px}.suggest-card-why{font-size:13px;color:var(--ink-muted);font-style:italic;margin-bottom:16px}.suggest-card-actions{display:flex;gap:8px}.suggest-action{flex:1 1;height:40px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.suggest-action--primary{background:var(--accent);color:white}.suggest-action--primary:hover{background:#231c18}.suggest-action--secondary{border:1.5px solid var(--rule);color:var(--ink-muted)}.suggest-action--secondary:hover{border-color:var(--ink-faint);color:var(--ink)}.suggest-recipe-form{margin-top:16px;padding-top:16px;border-top:1px solid var(--rule)}.suggest-recipe-fields{display:flex;gap:12px;margin-bottom:12px;flex-wrap:wrap}.suggest-recipe-field label{display:block;font-size:11px;color:var(--ink-faint);margin-bottom:4px;text-transform:uppercase}.suggest-recipe-field input{height:36px;padding:0 10px;background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius-xs);font-size:14px;width:80px}.suggest-recipe-field--wide{flex:1 1;min-width:160px}.suggest-recipe-field--wide input{width:100%}.suggest-recipe-field input:focus{outline:none;border-color:var(--accent)}.suggest-recipe-meta{display:flex;gap:16px;font-size:12px;color:var(--ink-muted);margin-bottom:16px}.suggest-recipe-section{margin-bottom:16px}.suggest-recipe-section h4{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:8px}.suggest-recipe-section ol,.suggest-recipe-section ul{padding-left:20px;font-size:14px;color:var(--ink-soft);line-height:1.8}.suggest-card,.suggest-card-macros,.suggest-recipe-fields,.suggest-recipe-meta{overflow-x:hidden}.suggest-card-macros,.suggest-recipe-meta{flex-wrap:wrap}.suggest-recipe-section ol,.suggest-recipe-section ul{word-break:break-word}.suggest-streaming{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);white-space:pre-wrap;word-break:break-all;max-height:80px;overflow:hidden;margin-top:8px;opacity:.6}.export-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;font-size:12px;font-weight:500;color:var(--ink-muted);border:1px solid var(--rule);border-radius:var(--radius-xs);cursor:pointer;transition:all .15s;margin-top:12px;background:var(--paper)}.export-btn:hover{border-color:var(--ink-faint);color:var(--ink-soft)}.insights-export-actions{display:flex;gap:8px;margin-bottom:24px}.insights-export-actions button{padding:8px 14px;font-size:12px;font-weight:500;color:var(--ink-muted);border:1px solid var(--rule);border-radius:var(--radius-xs);cursor:pointer;transition:all .15s;background:var(--paper)}.insights-export-actions button:hover{border-color:var(--ink-faint);color:var(--ink-soft)}.recipes-page{max-width:700px;padding-top:24px}.recipes-back{font-size:14px;color:var(--ink-muted);margin-bottom:16px;display:inline-block}.recipes-back:hover{color:var(--ink)}.recipes-title{font-family:var(--font-display);font-size:28px;margin-bottom:4px}.recipes-subtitle{font-size:13px;color:var(--ink-faint);margin-bottom:24px}.recipes-empty,.recipes-loading{text-align:center;padding:48px;color:var(--ink-faint)}.recipes-list{display:flex;flex-direction:column;gap:12px}.recipe-list-card{background:white;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.recipe-list-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;cursor:pointer;transition:background .15s}.recipe-list-header:hover{background:var(--paper-warm)}.recipe-list-name{font-family:var(--font-display);font-size:16px;color:var(--ink);margin-bottom:2px}.recipe-list-meta{font-size:12px;color:var(--ink-faint)}.recipe-list-expand{font-size:20px;color:var(--ink-faint)}.recipe-list-body{padding:0 20px 20px;border-top:1px solid var(--rule)}.recipe-list-macros{display:flex;gap:12px;font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);padding:12px 0}.recipe-list-body h4{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin:12px 0 8px}.recipe-list-body ol,.recipe-list-body ul{padding-left:20px;font-size:13px;color:var(--ink-soft);line-height:1.8}.land-nav-links{display:flex;gap:24px;align-items:center}.land-nav-link--cta{padding:6px 14px;border:1.5px solid var(--rule);border-radius:6px;font-weight:500;transition:border-color .15s}.land-nav-link--cta:hover{border-color:var(--ink-muted)}.land-eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:12px}.land-trust{font-size:12px;color:var(--ink-faint);margin-top:20px;letter-spacing:.02em}.land-features{max-width:1100px;margin:0 auto;padding:100px 32px 80px}.land-features-header{text-align:center;margin-bottom:56px}.land-features-title{font-family:var(--font-display);font-size:clamp(26px,4vw,38px);line-height:1.2;color:var(--ink);margin-top:8px}.land-features-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:2px;gap:2px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.land-feature-card{background:white;padding:32px}.land-feature-card:hover{background:var(--paper)}.land-feature-card--wide{grid-column:1/-1}@media (min-width:640px){.land-feature-card--wide{grid-column:span 2}}.land-feature-num{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);display:block;margin-bottom:12px}.land-feature-card h3{font-family:var(--font-display);font-size:19px;margin-bottom:10px;color:var(--ink)}.land-feature-card p{font-size:14px;color:var(--ink-muted);line-height:1.65}.land-pwa-banner{max-width:1100px;margin:0 auto;padding:0 32px 80px}.land-pwa-inner{background:var(--paper-warm);border:1px solid var(--rule);border-radius:var(--radius);padding:32px;text-align:center}.land-pwa-inner h3{font-family:var(--font-display);font-size:20px;margin-bottom:8px}.land-pwa-inner p{font-size:14px;color:var(--ink-muted);max-width:440px;margin:0 auto;line-height:1.6}.land-how-header{text-align:center;margin-bottom:40px}.land-how-steps{max-width:560px;margin:0 auto}.land-pricing{max-width:480px;margin:0 auto;padding:100px 32px;text-align:center}.land-pricing-title{font-family:var(--font-display);font-size:clamp(28px,5vw,42px);margin-bottom:8px;color:var(--ink)}.land-pricing-sub{font-size:15px;color:var(--ink-muted);margin-bottom:32px}.land-pricing-card{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:28px;text-align:left}.land-pricing-features{list-style:none;padding:0}.land-pricing-features li{padding:10px 0;font-size:14px;color:var(--ink-soft);border-bottom:1px solid var(--paper-warm)}.land-pricing-features li:before{content:"— ";color:var(--ink-ghost)}.land-pricing-detail{display:inline-block;margin-top:16px;font-size:13px;color:var(--ink-muted);transition:color .15s}.land-pricing-detail:hover{color:var(--ink)}.land-cta{text-align:center;padding:100px 32px;border-top:1px solid var(--rule)}.land-cta h2{font-family:var(--font-display);font-size:clamp(26px,4vw,36px);margin-bottom:12px;color:var(--ink)}.land-cta p{font-size:15px;color:var(--ink-muted);margin-bottom:28px;max-width:400px;margin-left:auto;margin-right:auto}.land-footer-links{display:flex;gap:24px;justify-content:center;margin-bottom:12px;font-size:13px;color:var(--ink-muted)}.land-footer-links a:hover{color:var(--ink)}.mealprep-page{max-width:700px;padding-top:24px}.mealprep-form{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:24px}.mealprep-field{margin-bottom:12px}.mealprep-field label{display:block;font-size:12px;color:var(--ink-muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.04em}.mealprep-field input{width:100%;height:40px;padding:0 12px;background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius-xs);font-size:14px}.mealprep-field input:focus{outline:none;border-color:var(--accent)}.mealprep-targets{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px;gap:12px}.mealprep-plan{background:white;border:1px solid var(--rule);border-radius:var(--radius);padding:24px}.mealprep-day{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--rule)}.mealprep-day h3{font-family:var(--font-display);font-size:16px;margin-bottom:10px}.mealprep-meals{display:flex;flex-direction:column;gap:6px}.mealprep-meal{display:flex;align-items:center;gap:10px;padding:6px 0}.mealprep-meal-type{font-size:10px;text-transform:uppercase;color:var(--ink-faint);min-width:60px}.mealprep-meal-name{flex:1 1;font-size:14px;color:var(--ink-soft)}.mealprep-meal-macros{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.mealprep-section{margin-top:20px}.mealprep-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:10px}.mealprep-section ul{padding-left:20px;font-size:13px;line-height:1.8;color:var(--ink-soft)}.mealprep-section p{font-size:13px;color:var(--ink-soft);line-height:1.6}