:root{color-scheme:light dark;--bg: #f7f4fc;--surface: #ffffff;--surface-strong: #ffffff;--text: #2d2340;--dim: #746a84;--border: #ded6ea;--accent: #6d28d9;--accent-2: #8b5cf6;--accent-deep: #5520ad;--gold: #f7c948;--soft: #eee8f7;--danger: #d43d5c;--radius: 16px;--shadow: 0 8px 0 rgba(77, 41, 130, .08);--serif: "Avenir Next Rounded", "Nunito Sans", "Avenir Next", ui-rounded, system-ui, sans-serif;--sans: "Avenir Next Rounded", "Nunito Sans", "Avenir Next", ui-rounded, system-ui, -apple-system, sans-serif;--space-surface: var(--surface);--space-surface-alt: var(--soft);--space-muted: var(--dim);--space-border: var(--border);--space-accent: var(--accent-2)}@media(prefers-color-scheme:dark){:root{--bg: #171222;--surface: #211a2f;--surface-strong: #2a213b;--text: #fbf9ff;--dim: #b9aec8;--border: #483b5d;--accent: #a98aff;--accent-2: #9d73ff;--accent-deep: #7c50e6;--gold: #f7ca55;--soft: #302542;--danger: #ff7890;--shadow: 0 8px 0 rgba(0, 0, 0, .22)}}*{box-sizing:border-box}html,body,#root{width:100%;max-width:100%;overflow-x:hidden}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{min-height:100vh;max-width:100%;overflow-x:clip;background:var(--bg)}.main-content{width:min(100%,1080px);min-width:0;margin:0 auto;padding:20px 16px calc(104px + env(safe-area-inset-bottom))}.page{min-width:0;display:grid;gap:26px}.page>*{min-width:0}.page h1,.page h2,.sheet h2{font-family:var(--serif);letter-spacing:-.025em}.page-head{max-width:700px;padding:12px 0 0}.page-head h1,.date-bar h1{margin:2px 0 8px;font-family:var(--serif);font-size:clamp(34px,9vw,52px);line-height:.98;font-weight:700;letter-spacing:-.035em}.page-head p:last-child{margin:0;color:var(--dim);max-width:590px;line-height:1.55}.kicker{margin:0;color:var(--accent-2);font-weight:750;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.date-bar{display:flex;align-items:end;justify-content:space-between;gap:20px;padding-top:10px}.date-bar .field{width:154px}.macro-hero{background:var(--accent);color:#f8fbf5;padding:26px 22px 20px;border-radius:4px 28px 4px 4px;box-shadow:var(--shadow);position:relative;overflow:hidden}.macro-hero:after{content:"";position:absolute;width:72px;height:72px;border:12px solid var(--gold);border-radius:50%;right:-28px;top:-26px;opacity:.85}.calorie-total{display:flex;align-items:end;gap:12px}.calorie-total strong{font-family:var(--serif);font-size:clamp(54px,16vw,82px);line-height:.8;font-weight:700;letter-spacing:-.045em}.calorie-total span{font-size:13px;color:#dbe7dc;padding-bottom:6px}.macro-rule{height:1px;background:#ffffff38;margin:23px 0 18px}.macro-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.macro-strip div{display:grid;gap:1px}.macro-strip strong{font-family:var(--serif);font-size:24px}.macro-strip span{font-size:12px;color:#dbe7dc}.macro-strip.small strong{font-size:20px}.macro-strip.small span{color:var(--dim)}.micro-line{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:18px;font-size:12px;color:#dbe7dc}.quick-actions,.export-actions,.builder-actions{display:flex;flex-wrap:wrap;gap:10px}.btn{min-height:46px;border:1px solid transparent;border-radius:8px;padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:720;cursor:pointer;transition:background .18s,color .18s,transform .18s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-2);color:#fff}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn-quiet{background:transparent;color:var(--accent-2);padding-inline:4px;min-height:36px}.btn-danger{background:var(--danger);color:#fff}.btn.full{width:100%;margin-top:10px}.icon-btn{width:42px;height:42px;display:inline-grid;place-items:center;border:0;background:var(--soft);color:var(--text);border-radius:50%;cursor:pointer;flex:none}.icon-btn.subtle{background:transparent;color:var(--dim);width:34px;height:34px}.field{display:grid;align-content:start;gap:6px;color:var(--dim);font-size:12px;font-weight:720}.field small{font-weight:500;line-height:1.35}input,select,textarea{width:100%;color:var(--text);background:var(--surface-strong);border:1px solid var(--border);border-radius:7px;padding:11px 12px;outline:none;min-height:44px}textarea{resize:vertical;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-2) 18%,transparent)}.form-grid{display:grid;gap:14px;margin:16px 0}.form-grid.two,.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.form-error{color:var(--danger);font-size:13px;margin:8px 0 0}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.section-heading h2{font-size:25px;margin:0}.section-heading>span{color:var(--dim);font-size:12px}.journal-list{display:grid;gap:25px}.meal-block{display:grid;gap:9px}.meal-heading{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:7px;border-bottom:2px solid var(--text)}.meal-heading h2{margin:0;font-size:24px}.meal-heading span{color:var(--dim);font-size:13px}.ruled-list{display:grid}.log-row{display:flex;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}.log-row h3{margin:0 0 5px;font-size:15px}.log-row p{margin:0;color:var(--dim);font-size:12px;line-height:1.45}.row-end{display:flex;align-items:center;gap:2px}.row-end strong{font-family:var(--serif);font-size:20px}.empty-meal{text-align:left;min-height:46px;padding:12px 0;border:0;border-bottom:1px dashed var(--border);color:var(--accent-2);background:transparent;font-weight:700;cursor:pointer}.recent-foods{display:grid;gap:12px}.food-rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.food-rail button{min-width:0;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:12px;text-align:left;display:grid;grid-template-columns:46px 1fr;grid-template-rows:auto auto;column-gap:10px;border-radius:8px;cursor:pointer}.food-rail img,.food-rail .food-initial{grid-row:1 / 3;width:46px;height:46px}.food-rail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}.food-rail small{color:var(--dim)}.food-initial{display:grid;place-items:center;background:var(--gold);color:#2f260d;font-family:var(--serif);font-size:24px;font-weight:700;border-radius:6px 18px 6px 6px}img{object-fit:cover}.scanner{min-height:240px;background:#101713;color:#fff;border-radius:4px 30px 4px 4px;position:relative;overflow:hidden;display:grid;place-items:center}.scanner video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scanner-copy{width:min(340px,88%);text-align:center;display:grid;justify-items:center;gap:12px;padding:28px 0;z-index:1}.scanner-copy p{color:#d8e1da;margin:0;line-height:1.45}.scanner-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.scanner-actions .btn-secondary{background:transparent;color:#f0f3ea;border-color:#ffffff73}.scan-frame{position:absolute;top:21%;right:12%;bottom:21%;left:12%;border:2px solid var(--gold);border-radius:8px;box-shadow:0 0 0 999px #080d0a61}.scanner-hint{position:absolute;z-index:2;left:18px;right:18px;top:12px;margin:0;text-align:center;font-size:12px;color:#fff;text-shadow:0 1px 3px #000}.scanner-stop{position:absolute;right:12px;bottom:12px;z-index:2}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.barcode-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.library-title{margin-top:2px}.library-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:8px 14px}.library-manage-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-block:1px solid var(--border)}.library-manage-bar p{margin:0;max-width:470px;color:var(--dim);font-size:12px;line-height:1.45}.search-input{margin-top:-12px}.food-list{display:grid;border-top:2px solid var(--text)}.food-row{width:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;border-bottom:1px solid var(--border);color:var(--text)}.food-row-main{min-width:0;display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:12px;text-align:left;padding:14px 0;border:0;background:transparent;color:var(--text);cursor:pointer}.food-row img,.food-row .food-initial{width:58px;height:58px;border-radius:7px}.food-row h3{margin:0 0 3px;font-size:16px}.food-row p,.food-row span{margin:0;color:var(--dim);font-size:12px;line-height:1.5}.row-open{width:42px;height:42px;display:grid;place-items:center;border:0;background:transparent;color:var(--dim);cursor:pointer}.food-row-actions{display:flex;align-items:center;gap:2px}.library-edit{color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 10%,transparent)}.library-delete{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.scan-review{display:grid;gap:12px;padding-top:6px}.scan-review h3{margin:4px 0 3px;font-family:var(--serif);font-size:24px}.scan-review>div>p{margin:0;color:var(--dim);font-size:13px}.review-source{color:var(--accent-2);font-size:12px;font-weight:750}.confirm-copy{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:center;margin:10px 0 22px}.confirm-copy img,.confirm-copy .food-initial{width:64px;height:64px}.confirm-copy h3{margin:0 0 5px}.confirm-copy p,.purge-copy{color:var(--dim);line-height:1.5;margin:0}.purge-copy{padding:10px 0 22px}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.empty{min-height:190px;padding:34px 18px;display:grid;justify-items:start;align-content:center;border-block:1px solid var(--border)}.empty-mark{width:44px;height:9px;background:var(--gold);margin-bottom:16px}.empty h3{font-family:var(--serif);font-size:24px;margin:0 0 6px}.empty p{color:var(--dim);margin:0 0 16px;line-height:1.5;max-width:440px}.dose-entry,.routine-builder,.recipe-import,.export-panel{background:var(--surface);border-top:4px solid var(--accent);padding:20px;box-shadow:0 8px 24px #18352b0f}.timeline{display:grid}.timeline article{display:grid;grid-template-columns:100px minmax(0,1fr) 36px;gap:14px;padding:18px 0;border-bottom:1px solid var(--border)}.timeline time{color:var(--dim);font-size:12px}.timeline strong{font-family:var(--serif);color:var(--accent-2);font-size:26px}.timeline h3{margin:2px 0;font-size:15px}.timeline p{color:var(--dim);margin:4px 0 0;font-size:13px}.weight-strip{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:18px 0;border-block:2px solid var(--text)}.weight-strip h2{margin:0 0 3px;font-size:22px}.weight-strip p{color:var(--dim);margin:0;font-size:13px}.weight-fields{display:grid;grid-template-columns:110px 72px auto;gap:8px}.routine-builder>h2{margin:0 0 14px}.activity-row{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(76px,.7fr) minmax(86px,.8fr) 34px;gap:10px;align-items:end;padding:14px 0;border-bottom:1px solid var(--border)}.formula-note{color:var(--dim);font-size:12px;line-height:1.5;margin:15px 0 0}.routine-list{display:grid;gap:10px}.routine-list article{background:var(--surface);padding:17px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:4px 18px 4px 4px}.routine-list h3{font-family:var(--serif);font-size:21px;margin:0 0 4px}.routine-list p{color:var(--dim);margin:0 0 6px;font-size:12px;line-height:1.45}.routine-list span{color:var(--accent-2);font-weight:750;font-size:12px}.session-list{display:grid;border-top:1px solid var(--border)}.session-list div{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:12px;padding:13px 0;border-bottom:1px solid var(--border);font-size:13px}.session-list span,.session-list em{color:var(--dim);font-style:normal}.file-line{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px dashed var(--border);padding:12px 0;margin-bottom:14px;color:var(--dim);font-size:13px}.file-line input{position:absolute;opacity:0;pointer-events:none}.recipe-draft{border-top:1px solid var(--border);margin-top:20px;padding-top:20px}.estimate-note{padding:13px 15px;background:color-mix(in srgb,var(--gold) 24%,var(--surface));border-left:4px solid var(--gold);margin:12px 0 18px}.estimate-note strong{text-transform:capitalize}.estimate-note p{margin:4px 0 0;color:var(--dim);font-size:12px;line-height:1.45}.recipe-list{display:grid;border-top:2px solid var(--text)}.recipe-list details{border-bottom:1px solid var(--border)}.recipe-list summary{list-style:none;display:flex;justify-content:space-between;align-items:center;padding:16px 0;cursor:pointer}.recipe-list summary::-webkit-details-marker{display:none}.recipe-list h3{font-family:var(--serif);font-size:20px;margin:0 0 3px}.recipe-list p{color:var(--dim);font-size:12px;margin:0}.recipe-list details[open] summary svg{transform:rotate(90deg)}.recipe-body{padding:0 0 20px}.recipe-body h4{margin:18px 0 6px}.recipe-body pre{white-space:pre-wrap;font-family:var(--sans);line-height:1.55;color:var(--dim);margin:0}.export-panel>p{color:var(--dim);line-height:1.5;font-size:13px}.ingredient-editor{border-top:1px solid var(--border);margin:18px 0;padding-top:14px;min-width:0}.ingredient-edit-row{border:1px solid var(--border);border-radius:14px;padding:12px;margin-bottom:12px;background:var(--surface);min-width:0}.ingredient-edit-main{display:flex;align-items:flex-end;gap:10px;min-width:0}.ingredient-edit-main .field{flex:1;min-width:0}.ingredient-edit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.ingredient-source-tag{display:inline-block;margin-top:8px;font-size:11px;font-weight:700;color:var(--dim);text-transform:capitalize;background:var(--soft);padding:2px 9px;border-radius:8px}.source-badge{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-size:11px;font-weight:700;border:1px solid transparent;padding:3px 10px;border-radius:8px;cursor:pointer}.source-badge-library{color:var(--accent-deep);background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.source-badge-usda{color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 14%,var(--surface));border-color:color-mix(in srgb,var(--accent-2) 35%,transparent)}.source-badge-off{color:color-mix(in srgb,var(--gold) 65%,var(--text));background:color-mix(in srgb,var(--gold) 30%,var(--surface));border-color:color-mix(in srgb,var(--gold) 55%,transparent)}.source-badge-estimated{color:var(--dim);background:var(--soft);border-color:var(--border)}.source-badge-manual{color:var(--dim);background:transparent;border-color:var(--border)}.low-confidence-mark{color:var(--danger);font-weight:800}.ingredient-match-name{margin:3px 0 0;font-size:11px;color:var(--dim)}.calc-nutrition-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0}.candidate-list{display:grid;gap:8px;margin:12px 0}.candidate-option{width:100%;text-align:left;display:grid;gap:2px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);cursor:pointer}.candidate-option strong{font-size:14px}.candidate-option span{font-size:12px;color:var(--dim)}.ingredient-row-totals{margin-top:12px}.ingredients-raw-toggle{border-top:1px dashed var(--border);margin:16px 0;padding-top:12px}.ingredients-raw-toggle summary{cursor:pointer;font-weight:800;display:flex;align-items:center;gap:6px;color:var(--dim);list-style:none}.ingredients-raw-toggle summary::-webkit-details-marker{display:none}.ingredients-raw-toggle[open] summary svg{transform:rotate(90deg)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#09100c8a;display:flex;align-items:end;justify-content:center;padding-top:max(env(safe-area-inset-top),20px)}.sheet{width:min(100%,680px);max-height:calc(100vh - max(env(safe-area-inset-top),20px));overflow-y:auto;background:var(--bg);border-radius:22px 22px 0 0;padding:10px 18px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -18px 60px #0000003d}.sheet-handle{width:42px;height:5px;background:var(--border);border-radius:9px;margin:0 auto 8px}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.sheet-head h2{font-size:28px;margin:0}.sheet-intro{color:var(--dim);font-size:13px;line-height:1.5;margin:0 0 14px}.sheet-product{display:flex;align-items:center;gap:12px;padding:12px 0;border-block:1px solid var(--border)}.sheet-product img,.sheet-product .food-initial{width:58px;height:58px}.sheet-product h3{margin:0 0 4px}.sheet-product p{margin:0;color:var(--dim);font-size:12px}.nutrition-ticket{background:var(--surface);border-block:2px solid var(--text);padding:16px 0;display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin-bottom:10px}.nutrition-ticket>span{color:var(--dim)}.nutrition-ticket strong{font-family:var(--serif);font-size:23px}.nutrition-ticket p{grid-column:1 / -1;color:var(--dim);margin:0;font-size:12px}.photo-drop{min-height:210px;display:grid;place-items:center;align-content:center;gap:6px;background:var(--surface);border:1px dashed var(--border);position:relative;overflow:hidden;color:var(--dim);text-align:center}.photo-drop img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.photo-drop input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.photo-drop strong{color:var(--text)}.photo-drop span{font-size:12px}.estimate-item{padding:15px 0;border-top:1px solid var(--border)}.bottom-nav{position:fixed;z-index:40;left:0;right:0;bottom:0;min-height:calc(68px + env(safe-area-inset-bottom));padding:7px max(8px,env(safe-area-inset-left)) env(safe-area-inset-bottom) max(8px,env(safe-area-inset-right));background:color-mix(in srgb,var(--surface) 94%,transparent);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr)}.bottom-nav button{border:0;background:transparent;color:var(--dim);min-height:54px;display:grid;place-items:center;align-content:center;gap:2px;font-size:10px;font-weight:700;cursor:pointer}.bottom-nav button[aria-current=page]{color:var(--accent-2)}.bottom-nav button[aria-current=page]:after{content:"";width:18px;height:3px;background:currentColor;border-radius:3px;margin-top:1px}.toast{position:fixed;z-index:90;top:calc(12px + env(safe-area-inset-top));left:50%;transform:translate(-50%);width:min(calc(100% - 32px),480px);padding:12px 16px;background:var(--text);color:var(--bg);border-radius:8px;box-shadow:var(--shadow);font-size:13px;font-weight:700;text-align:center}@media(min-width:760px){.main-content{padding:34px 28px 120px}.journal-page{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);align-items:start;column-gap:36px}.journal-page .date-bar,.journal-page .macro-hero,.journal-page .quick-actions,.journal-page .recent-foods{grid-column:1}.journal-page .journal-list{grid-column:2;grid-row:1 / span 5;padding-top:16px}.food-rail{grid-template-columns:repeat(2,1fr)}.page:not(.journal-page){max-width:780px;margin:0 auto}.sheet{margin-bottom:18px;border-radius:22px;padding:12px 24px 28px}.bottom-nav{left:50%;right:auto;transform:translate(-50%);width:min(560px,calc(100% - 32px));bottom:14px;border:1px solid var(--border);border-radius:18px;padding-bottom:7px;box-shadow:var(--shadow);min-height:68px}}@media(max-width:520px){.form-grid.three{grid-template-columns:1fr 1fr}.date-bar{align-items:start;flex-direction:column;gap:10px}.date-bar .field{width:100%}.quick-actions .btn,.export-actions .btn{flex:1 1 150px}.library-title{align-items:flex-start;flex-direction:column;gap:8px}.library-actions{width:100%;max-width:none;justify-content:flex-start}.library-manage-bar{align-items:stretch;flex-direction:column}.library-manage-bar .btn{width:100%}.activity-row{grid-template-columns:1fr 78px 86px}.activity-row .icon-btn{grid-column:3;justify-self:end}.weight-strip{display:grid}.weight-fields{grid-template-columns:minmax(0,1fr) 70px auto}.routine-list article{align-items:stretch;flex-direction:column}.file-line{display:grid;justify-items:stretch}.file-line>span{min-width:0;overflow-wrap:anywhere}.file-line .btn{width:100%}.session-list div{grid-template-columns:90px minmax(0,1fr)}.session-list em{grid-column:2}.ingredient-edit-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:380px){.main-content{padding-inline:12px}.date-bar{align-items:start}.date-bar .field{width:100%}.macro-strip strong{font-size:21px}.food-rail,.form-grid.two,.form-grid.three{grid-template-columns:1fr}.activity-row{grid-template-columns:1fr 1fr}.activity-row .field:first-child{grid-column:1 / -1}.activity-row .icon-btn{grid-column:2}.barcode-entry{grid-template-columns:1fr}.timeline article{grid-template-columns:82px minmax(0,1fr) 34px}.ingredient-edit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}body{font-weight:500}.main-content{padding-top:16px}.page{gap:22px}.page h1,.page h2,.sheet h2{font-family:var(--sans);letter-spacing:-.035em;font-weight:850}.page-head{padding-top:8px}.page-head h1,.date-bar h1{font-family:var(--sans);font-weight:900;line-height:1.02}.page-head p:last-child{font-weight:550}.kicker{color:var(--accent);letter-spacing:.035em;font-size:13px;text-transform:none;font-weight:850}.btn{min-height:48px;border-radius:14px;font-weight:850;border-width:2px;border-bottom-width:4px;transition:transform .12s,filter .12s,background .12s}.btn-primary{background:var(--accent-2);border-color:var(--accent-deep);color:#fff}.btn-primary:hover{filter:brightness(1.04)}.btn-primary:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.btn-secondary{background:var(--surface);border-color:var(--border);color:var(--accent)}.btn-quiet{border:0;color:var(--accent)}.btn-danger{border-color:color-mix(in srgb,var(--danger) 74%,#53101c)}.icon-btn{background:var(--soft);color:var(--accent);border-radius:14px}input,select,textarea{border:2px solid var(--border);border-radius:13px;font-weight:600}input:focus,select:focus,textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-2) 16%,transparent)}.macro-hero{background:var(--accent);border-radius:22px;padding:25px 22px 21px;box-shadow:0 7px 0 var(--accent-deep)}.macro-hero:after{width:78px;height:78px;border:13px solid var(--gold);right:-30px;top:-29px;opacity:1}.calorie-total strong,.macro-strip strong,.row-end strong{font-family:var(--sans);font-weight:900}.macro-strip strong{font-size:22px}.meal-heading{border-bottom:3px solid var(--accent)}.meal-heading h2{color:var(--accent)}.empty-meal{color:var(--accent);font-weight:850}.food-rail button{border:2px solid var(--border);border-bottom-width:4px;border-radius:16px}.food-initial{background:color-mix(in srgb,var(--accent-2) 18%,var(--surface));color:var(--accent);border-radius:15px}.scanner{min-height:254px;border-radius:22px;background:#171222;box-shadow:0 7px #0d0914}.scan-frame{border:3px solid var(--gold);border-radius:16px}.scanner-live-actions{position:absolute;z-index:3;left:12px;right:12px;bottom:12px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}.scanner-live-actions .btn{min-height:42px;padding:7px 11px;font-size:12px;background:#180f25db;color:#fff;border-color:#ffffff61;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.scanner-live-actions .scanner-flash.is-on{background:var(--gold);color:#3a2a02;border-color:#b88300}.scanner-live-actions .btn:disabled{opacity:.72}.scanner-stop{position:static}.scanner-error{position:absolute;z-index:4;left:14px;right:14px;bottom:64px;margin:0;padding:8px 10px;border-radius:10px;background:#23102be0;font-size:12px;text-align:center}.long-press-hint{display:flex;align-items:center;gap:6px;color:var(--dim);font-size:12px;font-weight:750;margin:-8px 0 2px}.food-list{border-top:0;gap:10px}.food-row{border:2px solid var(--border);border-bottom-width:4px;border-radius:16px;background:var(--surface);padding:0 10px;touch-action:pan-y}.food-row-main{padding:11px 0;-webkit-user-select:none;user-select:none}.food-row h3{font-weight:850}.row-open,.library-edit{color:var(--accent)}.library-manage-bar{padding:15px;border:2px solid var(--border);border-radius:16px;background:var(--surface)}.empty{border:2px dashed var(--border);border-radius:18px;background:color-mix(in srgb,var(--surface) 72%,transparent)}.empty-mark{width:46px;height:10px;border-radius:20px;background:var(--accent-2)}.empty h3{font-family:var(--sans);font-weight:900}.dose-entry,.routine-builder,.recipe-import,.export-panel{background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-top-width:2px;border-radius:18px;box-shadow:none}.timeline article,.session-list div{background:var(--surface);border:2px solid var(--border);border-radius:15px;margin-bottom:9px;padding:15px}.timeline strong{font-family:var(--sans);color:var(--accent);font-weight:900}.weight-strip{padding:17px;border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;background:var(--surface)}.activity-row{grid-template-columns:minmax(0,1.8fr) minmax(88px,.65fr) minmax(92px,.65fr) 38px;border-bottom:2px solid var(--soft)}.activity-row .field:nth-child(2):not(:last-child){min-width:0}.routine-list article{border:2px solid var(--border);border-bottom-width:5px;border-radius:18px}.routine-list h3,.recipe-list h3{font-family:var(--sans);font-weight:900}.routine-list span{color:var(--accent)}.formula-note{background:var(--soft);border-radius:12px;padding:11px 12px}.sheet-backdrop{background:#1c102b9e}.sheet{border-radius:26px 26px 0 0;background:var(--bg)}.sheet-handle{height:6px;background:var(--border)}.nutrition-ticket{border:2px solid var(--border);border-radius:16px;padding:15px}.nutrition-ticket strong{font-family:var(--sans);font-weight:900}.photo-drop{border:2px dashed var(--accent-2);border-radius:18px}.confirm-actions .btn{width:100%}.bottom-nav{background:var(--surface);border-top:2px solid var(--border)}.bottom-nav button{font-weight:850;border-radius:13px}.bottom-nav button[aria-current=page]{color:var(--accent);background:color-mix(in srgb,var(--accent-2) 10%,transparent)}.bottom-nav button[aria-current=page]:after{display:none}.toast{background:var(--accent);color:#fff;border-radius:14px;box-shadow:0 5px 0 var(--accent-deep)}@media(min-width:760px){.sheet{border-radius:26px}.bottom-nav{border:2px solid var(--border);border-bottom-width:5px;border-radius:20px}}@media(max-width:620px){.activity-row{grid-template-columns:minmax(0,1fr) 86px}.activity-row .field:first-child{grid-column:1 / -1}.activity-row .field:nth-child(2):not(:last-child){grid-column:1 / -1}.activity-row .icon-btn{grid-column:2;justify-self:end}}@media(max-width:380px){.scanner-live-actions{justify-content:stretch}.scanner-live-actions .btn{flex:1 1 130px}.food-row{padding-inline:8px}}.macro-strip.macro-four{grid-template-columns:repeat(4,minmax(0,1fr))}.macro-strip.macro-four strong{font-size:clamp(17px,5.2vw,22px)}.macro-strip.macro-four span{line-height:1.2}.net-carb-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin:4px 0 16px;border-radius:14px;background:var(--soft)}.net-carb-preview strong{color:var(--accent);font-size:17px}.net-carb-preview span{color:var(--dim);font-size:11px;text-align:right}.sugar-index{border:2px solid var(--border);border-bottom-width:4px;border-radius:16px;background:var(--surface);overflow:hidden}.sugar-index summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;color:var(--accent);font-weight:850;cursor:pointer}.sugar-index summary::-webkit-details-marker{display:none}.sugar-index[open] summary svg{transform:rotate(90deg)}.sugar-index>div{padding:0 16px 16px}.net-formula{margin:0 0 10px;padding:11px 12px;border-radius:12px;background:var(--soft);color:var(--text);font-size:13px;font-weight:750}.sugar-index dl{display:grid;gap:0;margin:0}.sugar-index dl div{display:grid;gap:3px;padding:11px 0;border-bottom:1px solid var(--border)}.sugar-index dt{font-weight:800}.sugar-index dd{margin:0;color:var(--dim);font-size:12px}.index-note{margin:12px 0 0;color:var(--dim);font-size:11px;line-height:1.45}.food-option-actions{display:grid;gap:9px;margin-top:14px}.log-remove-link{width:100%;min-height:42px;margin-top:8px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;background:transparent;color:var(--danger);font:inherit;font-size:13px;font-weight:800;cursor:pointer}.log-remove-link:focus-visible{outline:3px solid color-mix(in srgb,var(--danger) 28%,transparent);outline-offset:2px;border-radius:10px}.log-remove-confirm{margin-top:12px;padding:14px;border-radius:14px;background:color-mix(in srgb,var(--danger) 8%,var(--surface))}.log-remove-confirm>p{margin:0 0 12px;color:var(--dim);font-size:13px;line-height:1.45}.log-remove-confirm>p strong{color:var(--text);display:block;margin-bottom:2px}.library-photo-picker{min-height:96px;display:grid;place-items:center;border:2px dashed var(--accent-2);border-radius:16px;background:var(--surface);overflow:hidden;position:relative;cursor:pointer}.library-photo-picker input,.progress-photo-picker input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.001;cursor:pointer}.library-photo-picker img{width:100%;height:150px;object-fit:cover}.library-photo-picker span{min-height:94px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-content:center;gap:2px 10px;color:var(--accent)}.library-photo-picker span svg{grid-row:1 / 3;align-self:center}.library-photo-picker small{color:var(--dim)}.weigh-in-entry{padding:18px;border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;background:var(--surface)}.progress-photo-picker{min-height:170px;margin-top:16px;display:grid;place-items:center;border:2px dashed var(--accent-2);border-radius:18px;background:var(--soft);overflow:hidden;position:relative;cursor:pointer}.progress-photo-picker img{width:100%;height:250px;object-fit:cover}.progress-photo-picker>span{display:grid;place-items:center;gap:5px;color:var(--accent)}.progress-photo-picker small{color:var(--dim)}.progress-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.progress-summary>div{display:grid;gap:3px;padding:16px;border-radius:16px;background:var(--accent);color:#fff;box-shadow:0 5px 0 var(--accent-deep)}.progress-summary span,.progress-summary small{font-size:11px;color:#e9ddff}.progress-summary strong{font-size:clamp(22px,7vw,34px);font-weight:900}.progress-chart{padding:17px 12px 10px;border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;background:var(--surface)}.progress-chart .section-heading{padding:0 7px 8px}.progress-chart select{width:78px;min-height:38px;padding:6px 9px}.chart-frame{height:245px;width:100%;min-width:0}.progress-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.progress-gallery article{min-width:0;position:relative;overflow:hidden;border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;background:var(--surface)}.progress-gallery article>img,.progress-photo-empty{width:100%;aspect-ratio:4 / 5;object-fit:cover}.progress-photo-empty{display:grid;place-items:center;align-content:center;gap:6px;background:var(--soft);color:var(--dim);font-size:12px}.progress-card-copy{display:grid;gap:4px;padding:12px 46px 14px 12px}.progress-card-copy time{color:var(--dim);font-size:11px}.progress-card-copy strong{color:var(--accent);font-size:20px;font-weight:900}.progress-card-copy p{margin:2px 0 0;color:var(--dim);font-size:12px;line-height:1.4;overflow-wrap:anywhere}.progress-delete{position:absolute;right:7px;bottom:9px}.bottom-nav{grid-template-columns:repeat(6,minmax(0,1fr))}@media(max-width:430px){.macro-strip.macro-four{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.net-carb-preview{align-items:flex-start;flex-direction:column}.net-carb-preview span{text-align:left}.bottom-nav{padding-inline:3px}.bottom-nav button{font-size:9px}}@media(max-width:340px){.progress-gallery,.progress-summary{grid-template-columns:1fr}}.goal-panel{padding:17px;border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;background:var(--surface)}.goal-panel .section-heading{align-items:flex-start}.goal-panel .section-heading p{margin:3px 0 0;color:var(--dim);font-size:12px}.goal-grid{display:grid;gap:14px}.goal-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px}.goal-row>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:12px;grid-column:1 / -1}.goal-row strong{font-size:13px}.goal-row span,.goal-row small{color:var(--dim);font-size:11px}.goal-track{height:10px;overflow:hidden;border-radius:999px;background:var(--soft)}.goal-track i{display:block;height:100%;border-radius:inherit;background:var(--accent-2)}.goal-empty{margin:0;color:var(--dim);font-size:13px;line-height:1.5}.goal-input{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.goal-input span{color:var(--dim);font-size:12px;font-weight:750}.recipe-import{display:grid;gap:14px}.import-help{margin:-4px 0 0;color:var(--dim);font-size:13px;line-height:1.5}.url-import{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.url-import .btn{min-height:48px}.social-import-help{padding:14px 15px;border-radius:16px;background:var(--soft);color:var(--text)}.social-import-help strong{color:var(--accent);font-size:13px}.social-import-help ol{margin:9px 0 7px;padding-left:20px}.social-import-help li{margin:5px 0;color:var(--text);font-size:12px;line-height:1.45}.social-import-help p{margin:0;color:var(--dim);font-size:11px;line-height:1.45}.manual-fallback{padding:13px;border-radius:14px;background:color-mix(in srgb,var(--accent-2) 12%,var(--surface))}.manual-fallback strong{color:var(--accent)}.manual-fallback p{margin:4px 0 0;color:var(--dim);font-size:12px;line-height:1.45}.manual-recipe{border-top:1px solid var(--border);padding-top:12px}.manual-recipe summary{list-style:none;display:flex;justify-content:space-between;align-items:center;color:var(--accent);font-size:13px;font-weight:850;cursor:pointer}.manual-recipe summary::-webkit-details-marker{display:none}.manual-recipe[open] summary svg{transform:rotate(90deg)}.manual-recipe>div{display:grid;gap:13px;padding-top:14px}.source-link{width:fit-content;color:var(--accent);font-size:13px;font-weight:800;text-decoration-thickness:2px;text-underline-offset:3px}.recipe-card{border-bottom:1px solid var(--border);min-width:0}.recipe-body{min-width:0}.recipe-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.recipe-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}.recipe-totals>div{min-width:0;display:grid;gap:2px;padding:11px;border-radius:13px;background:var(--soft)}.recipe-totals strong{overflow-wrap:anywhere;color:var(--accent);font-size:14px}.recipe-totals span{color:var(--dim);font-size:10px;line-height:1.25}.recipe-action-row{display:flex;flex-wrap:wrap;gap:9px}.recipe-action-row .btn{flex:1 1 150px}.ingredient-list{display:grid;border-top:1px solid var(--border)}.ingredient-list>div{padding:12px 0;border-bottom:1px solid var(--border)}.ingredient-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.ingredient-line strong{min-width:0;overflow-wrap:anywhere;font-size:13px}.ingredient-line span{flex:none;color:var(--accent);font-size:10px;font-weight:800}.ingredient-list p{margin-top:5px;color:var(--dim);font-size:11px;line-height:1.45}.grocery-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.grocery-list{display:grid;margin-top:14px;border-top:1px solid var(--border)}.grocery-list label{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:10px;padding:12px 0;border-bottom:1px solid var(--border)}.grocery-list input{width:20px;height:20px;margin-top:2px;accent-color:var(--accent)}.grocery-list span{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 8px;overflow-wrap:anywhere;font-size:13px}.grocery-list strong{color:var(--accent)}.grocery-list small{grid-column:1 / -1;color:var(--dim);font-size:10px}.store-picker{margin-top:22px;padding-top:18px;border-top:2px solid var(--text)}.store-picker h3{margin:0;font-size:18px}.store-picker p{color:var(--dim);font-size:12px;line-height:1.5}.store-picker>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.store-picker .btn{width:100%;justify-content:center}@media(max-width:520px){.url-import,.grocery-toolbar{grid-template-columns:1fr}.url-import .btn,.grocery-toolbar .btn{width:100%}.recipe-totals{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:350px){.recipe-controls,.store-picker>div{grid-template-columns:1fr}}.auth-screen{min-height:100vh;display:grid;place-items:center;align-content:start;padding:48px 16px calc(24px + env(safe-area-inset-bottom));background:var(--bg)}.auth-card{width:min(100%,440px);background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;padding:26px 20px;display:grid;gap:14px}.auth-card h1{margin:2px 0 0;font-family:var(--sans);font-weight:900;font-size:clamp(28px,7vw,36px);letter-spacing:-.03em;line-height:1.05}.auth-card .kicker{color:var(--accent)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--soft);border-radius:13px;padding:4px;gap:4px}.auth-tabs button{border:0;background:transparent;border-radius:10px;min-height:42px;font:inherit;font-weight:850;color:var(--dim);cursor:pointer}.auth-tabs button.is-active{background:var(--surface);color:var(--accent);box-shadow:0 2px 0 var(--border)}.auth-goals-label{margin:4px 0 -6px;font-size:12px;font-weight:850;color:var(--dim);text-transform:uppercase;letter-spacing:.05em}.auth-card .form-grid{margin:0}.coming-soon{color:var(--dim);font-size:12px;margin:6px 0 0;line-height:1.5;font-weight:600}.account-panel{background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;padding:20px}.account-panel .btn{width:100%}.backup-panel{background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;padding:20px}.backup-panel>p{color:var(--dim);line-height:1.5;font-size:13px}.backup-list{list-style:none;margin:12px 0;padding:0;display:grid;gap:8px}.backup-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:12px;padding:10px 12px}.backup-list li strong{display:block;font-size:14px}.backup-list li span{color:var(--dim);font-size:12px}.backup-list .btn{width:auto;flex-shrink:0}.notif-panel{background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;padding:20px;display:grid;gap:14px}.notif-status{margin:0;font-size:14px}.notif-note{margin:0;color:var(--dim);font-size:13px;line-height:1.5}.notif-actions .btn{width:100%}.notif-toggle{display:flex;align-items:flex-start;gap:12px;cursor:pointer}.notif-toggle input{width:22px;height:22px;margin-top:2px;accent-color:var(--accent);flex-shrink:0}.notif-toggle span{display:grid;gap:2px}.notif-toggle small{color:var(--dim);font-size:12px}.notif-panel .form-grid{margin:0}.notif-panel>.btn{width:100%}.day-chips{display:flex;gap:8px;margin-top:8px}.day-chip{width:38px;height:38px;border-radius:50%;border:2px solid var(--border);background:var(--surface);color:var(--text);font-weight:700;font-size:13px;cursor:pointer}.day-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.help-panel{background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;padding:20px}.help-panel p{color:var(--dim);font-size:13px;line-height:1.5;margin:8px 0 14px}.chat-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#09100c8a;display:flex;align-items:end;justify-content:center}.chat-panel{width:min(100%,680px);height:100dvh;background:var(--bg);display:flex;flex-direction:column}.chat-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px 10px;border-bottom:1px solid var(--border)}.chat-head h2{margin:0;font-size:24px;font-family:var(--serif)}.chat-disclaimer{padding:8px 18px;font-size:12px;line-height:1.45;color:var(--dim);border-bottom:1px solid var(--border)}.chat-log{flex:1;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:10px}.chat-bubble{max-width:85%;padding:10px 14px;border-radius:16px;line-height:1.55;font-size:14px;white-space:pre-wrap;overflow-wrap:break-word}.chat-bubble.user{align-self:flex-end;background:var(--accent-2);color:#fff;border-bottom-right-radius:6px}.chat-bubble.assistant{align-self:flex-start;background:var(--surface);color:var(--text);border:1px solid var(--border);border-bottom-left-radius:6px}.chat-error{align-self:stretch;background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger);border:1px solid var(--danger);border-radius:12px;padding:10px 14px;font-size:13px;line-height:1.5}.chat-source{margin-top:6px;font-size:11px;color:var(--dim)}.chat-chips{display:flex;gap:8px;overflow-x:auto;padding:12px 18px 0;scrollbar-width:none}.chat-chips::-webkit-scrollbar{display:none}.chat-chip{flex:0 0 auto;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:8px 14px;font-size:13px;line-height:1.3;cursor:pointer}.chat-chip:disabled{opacity:.5;cursor:default}.typing-dots{display:inline-flex;gap:5px;padding:4px 2px}.typing-dots span{width:7px;height:7px;border-radius:50%;background:var(--dim);animation:typing-pulse 1.1s infinite ease-in-out}.typing-dots span:nth-child(2){animation-delay:.18s}.typing-dots span:nth-child(3){animation-delay:.36s}@keyframes typing-pulse{0%,60%,to{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.chat-input-row{display:flex;gap:8px;padding:12px 18px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface)}.chat-input-row input{border-radius:22px;padding-inline:16px}@media(min-width:760px){.chat-backdrop{align-items:center;padding:24px}.chat-panel{height:min(80vh,780px);border-radius:22px;overflow:hidden;box-shadow:0 -18px 60px #0000003d}}.ticket-panel{background:var(--surface);border:2px solid var(--border);border-bottom-width:5px;border-radius:18px;padding:20px;display:grid;gap:12px}.ticket-help{color:var(--dim);font-size:13px;line-height:1.5;margin:0}.ticket-confirm{background:#e9f7ef;border:2px solid #34a853;border-radius:12px;padding:10px 12px;font-size:13px;font-weight:600}.ticket-list-head{margin-top:6px}.ticket-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.ticket-item{border:2px solid var(--border);border-radius:12px;padding:12px}.ticket-item p{margin:6px 0;font-size:13px;line-height:1.5;white-space:pre-wrap}.ticket-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.ticket-status{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;background:var(--accent-soft, #efe7ff);color:var(--accent);border-radius:999px;padding:3px 10px}.ticket-meta{font-size:11px;color:var(--dim)}
