:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font-display:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--bg:#1b2434;--surface:#2c3a55;--surface-2:color-mix(in srgb, var(--surface) 82%, white);--border:color-mix(in srgb, var(--surface) 65%, white);--ink:#f5f7fa;--ink-muted:#7c8aa8;--meta:#92a876;--chrome:color-mix(in srgb, var(--bg) 80%, black);--gold:#e5bc38;--gold-ink:var(--bg);--brand:#d1855c;--brand-ink:#2a1608;--brand-hover:#dda385;--ok:#92a876;--ok-bg:#333e41;--warn:#e5bc38;--warn-bg:#434235;--err:#f87171;--err-bg:#473340;--focus:#dda385;--mass:#fbbf24;--volume:#36bafa;--count:#818cf8;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 8px 24px #0006;--radius:1rem;--page-padding:1.25rem}*{box-sizing:border-box}html,body{background:var(--bg);margin:0}body{color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.45}#app{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-weight:700}a{color:var(--focus)}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface-2)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.app-header{background:var(--chrome);z-index:30;position:sticky;top:0}.app-header-inner{width:100%;padding:.85rem var(--page-padding);justify-content:space-between;align-items:center;gap:1rem;display:flex}.brand-row{align-items:center;gap:.7rem;min-width:0;display:flex}.brand-mark-icon{background:var(--gold);width:2.35rem;height:2.35rem;box-shadow:0 4px 12px color-mix(in srgb, var(--gold) 40%, transparent);color:var(--gold-ink);border-radius:.7rem;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.brand-mark-icon svg{width:1.15rem;height:1.15rem}.brand-version-tip{background:var(--chrome);border:1px solid var(--border);color:var(--ink-muted);white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;z-index:50;border-radius:.4rem;padding:.35rem .6rem;font-size:.72rem;font-weight:600;transition:opacity .15s,transform .15s,visibility .15s;position:absolute;top:calc(100% + .5rem);left:0;transform:translateY(-4px)}.brand-mark-icon:hover .brand-version-tip,.brand-mark-icon:focus-visible .brand-version-tip{opacity:1;visibility:visible;transform:translateY(0)}.brand-tagline{color:var(--ink-muted);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.7rem;font-weight:600;overflow:hidden}.page-heading{color:var(--ink);margin:.1rem 0 0;font-size:1.2rem;font-weight:800;line-height:1.15}.header-controls{flex-shrink:0;align-items:center;gap:1rem;display:flex}.nav{background:#0003;border:1px solid #ffffff26;border-radius:.85rem;gap:.2rem;padding:.3rem;display:none}.icon-btn.settings-link{display:none}@media (width>=800px){.nav,.icon-btn.settings-link{display:flex}}.nav-link{color:#ffffffbf;border-radius:.6rem;align-items:center;gap:.45rem;padding:.45rem .85rem;font-size:.83rem;font-weight:600;text-decoration:none;transition:background-color .12s,color .12s;display:flex}.nav-link svg{flex-shrink:0;width:.95rem;height:.95rem}.nav-link:hover{color:#fff}.nav-link.is-active{background:var(--gold);color:var(--gold-ink)}.icon-btn{width:2.1rem;height:2.1rem;color:var(--meta);cursor:pointer;background:#0003;border:1px solid #ffffff40;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;text-decoration:none;display:flex}.icon-btn svg{width:1.05rem;height:1.05rem}.icon-btn:hover,.icon-btn.is-active{color:#fff;background:#fff3}.product-search-bar{padding:.75rem var(--page-padding);border-bottom:1px solid var(--border);flex-direction:column;gap:.75rem;display:flex}.product-search-bar-icons{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.product-search-bar-icons.is-menu-page .product-search-bar-page-slot-mid{flex-wrap:wrap;flex:1;align-items:center;gap:.6rem;min-width:0;display:flex}.product-search-bar-icons.is-menu-page .product-search-bar-page-slot-end{align-items:center;gap:.6rem;display:flex}@media (width<=799px){.product-search-bar-icons.is-menu-page .product-search-input{display:none}}.product-search-input{min-width:0;height:2.2rem;color:var(--brand-ink);background:#fff;border:1.2px solid #ffffff40;border-radius:.5rem;flex:1;padding:0 .75rem}@media (width>=800px){.product-search-input{flex:none;width:16rem}}.product-search-input:focus-visible{outline:none}.product-search-input::placeholder{color:#2a160880}.product-search-icon-btn{border:1px solid var(--border);background:var(--surface-2);width:2.3rem;height:2.3rem;color:var(--meta);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.product-search-icon-btn svg{width:1.05rem;height:1.05rem}.product-search-icon-btn:hover{background:var(--border);color:var(--ink)}.product-search-icon-btn.is-active{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}@media (width>=800px){.product-search-scan-btn{display:none}}.product-search-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-2);color:var(--ink);flex-direction:column;gap:.75rem;padding:1rem;display:flex}.product-search-results{max-height:40vh;overflow-y:auto}.product-search-result{text-align:left;background:var(--surface-2);width:100%;color:var(--ink);border:1px solid var(--border);border-radius:.6rem;padding:.6rem .75rem;display:block}.product-search-result:hover{background:var(--border)}.product-search-result--add{color:var(--brand);border-style:dashed;font-weight:700}.product-search-result strong{font-size:.92rem;display:block}.product-search-result span{color:var(--ink-muted);margin-top:.1rem;font-size:.76rem;font-weight:400;display:block}.ingredient-picker,.ingredient-picker-search{position:relative}.ingredient-picker-search-icon{width:1rem;height:1rem;color:var(--ink-muted);pointer-events:none;position:absolute;top:50%;left:.6rem;transform:translateY(-50%)}.ingredient-picker-search input{padding-left:2rem}.ingredient-picker-input--unresolved{border-color:var(--warn)}.ingredient-picker-selected{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:.6rem;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .6rem;font-size:.88rem;display:flex}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.75rem;display:grid}.recipe-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-2);align-items:stretch;gap:.25rem;display:flex}.recipe-card:hover{border-color:var(--brand)}.recipe-card-body{text-align:left;background:0 0;flex-direction:column;flex:auto;gap:.4rem;min-width:0;padding:1rem;display:flex}.recipe-card-actions{flex-direction:column;flex:none;justify-content:center;gap:.15rem;padding:.5rem;display:flex}.recipe-card-name{color:var(--ink);font-size:1rem;font-weight:700}.recipe-card-meta{color:var(--ink-muted);flex-wrap:wrap;gap:.6rem;font-size:.78rem;display:flex}.recipe-detail-meta{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.recipe-detail-badge{background:var(--surface-2);border:1px solid var(--border);color:var(--ink-muted);border-radius:999px;padding:.2rem .7rem;font-size:.76rem;font-weight:600}.recipe-detail-source{color:var(--brand);font-size:.8rem;font-weight:600}.recipe-detail-macros{background:var(--surface-2);border-radius:var(--radius);padding:.75rem}.recipe-detail-table{border-collapse:collapse;width:100%;font-size:.88rem}.recipe-detail-table th{text-align:left;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;padding:0 .6rem .35rem 0;font-size:.7rem;font-weight:700}.recipe-detail-table td{border-top:1px solid var(--border);color:var(--ink);white-space:nowrap;padding:.45rem .6rem .45rem 0}.recipe-detail-table td:nth-child(3){white-space:normal;width:100%}.recipe-detail-table td:first-child,.recipe-detail-table td:nth-child(2){color:var(--brand);font-weight:700}.recipe-detail-steps{flex-direction:column;gap:.5rem;padding-left:1.25rem;font-size:.9rem;display:flex}.modal-header-actions{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.recipe-form-modal{width:min(760px,100%)}:root{--recipe-ingredient-cols:4rem 4.5rem 1fr 2.25rem}.recipe-ingredient-table-header{grid-template-columns:var(--recipe-ingredient-cols);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.03em;gap:.5rem;padding:0 0 .3rem;font-size:.7rem;font-weight:700;display:grid}.recipe-ingredient-row{flex-direction:column;gap:.3rem;margin-bottom:.5rem;display:flex}.recipe-ingredient-raw{color:var(--ink-muted);font-size:.76rem;font-style:italic}.recipe-ingredient-row-controls{grid-template-columns:var(--recipe-ingredient-cols);align-items:center;gap:.5rem;display:grid}.recipe-ingredient-qty,.recipe-ingredient-unit-input{width:100%}.recipe-ingredient-picker{min-width:0}.recipe-step-row{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.recipe-step-number{color:var(--ink-muted);text-align:right;flex:none;width:1.5rem;font-size:.85rem;font-weight:600}.recipe-step-row input{flex:auto}.recipe-table{table-layout:auto;border-collapse:collapse;background:var(--surface);width:100%}.recipe-table th{text-align:center;letter-spacing:.03em;text-transform:uppercase;color:var(--meta);background:var(--chrome);white-space:nowrap;cursor:pointer;border-bottom:1px solid var(--border);padding:.6rem .9rem;font-size:.7rem;font-weight:700;position:relative}.recipe-table-th{align-items:center;gap:.3rem;display:inline-flex}.recipe-table-th svg{width:.8rem;height:.8rem}.recipe-table td{border-bottom:1px solid var(--border);vertical-align:middle;text-align:center;color:var(--ink);padding:.55rem .9rem}.recipe-table th.recipe-table-name-col,.recipe-table td.recipe-table-name-col{text-align:left;font-weight:700}.recipe-table th.is-sorted-col{color:var(--gold)}.recipe-table td.is-sorted-col{background:color-mix(in srgb, var(--ink) 8%, var(--surface))}.recipe-table tbody tr:hover{background:var(--surface-2);cursor:pointer}.recipe-table-actions-col{white-space:nowrap;width:6.5rem;padding:.3rem .2rem}.recipe-table th.recipe-table-select-col,.recipe-table td.recipe-table-select-col{width:2.25rem;padding-left:.6rem;padding-right:0}.recipe-table-select-col input{cursor:pointer;vertical-align:middle;width:1rem;height:1rem}.recipe-table tbody tr.is-selected{background:var(--surface-2)}.recipe-bulk-bar{color:var(--ink-muted);white-space:nowrap;align-items:center;gap:.6rem;margin-right:.4rem;font-size:.85rem;display:flex}.btn-secondary.recipe-bulk-delete{color:var(--err);border-color:var(--err);padding:.25rem .7rem;font-size:.8rem}.recipe-table.is-fixed{table-layout:fixed}.recipe-table.is-fixed th[data-col],.recipe-table.is-fixed td[data-col]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.recipe-table td.recipe-table-actions-col{text-align:left;padding:.55rem 0}.recipe-table-actions-col .icon-btn-plain{vertical-align:middle;margin:0 .075rem;display:inline-flex}.recipe-ingredients-panel{z-index:90;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:380px;max-width:calc(100vw - 16px);max-height:60vh;box-shadow:var(--shadow-2);padding:.7rem .8rem;position:fixed;overflow-y:auto}.recipe-ingredients-panel-title{margin:0 0 .4rem;font-size:.9rem;font-weight:700}.recipe-ingredients-panel ul{margin:0;padding:0;list-style:none}.recipe-ingredients-panel li{border-top:1px solid var(--border);padding:.25rem 0;font-size:.85rem}.recipe-ingredients-panel-row,.recipe-ingredients-panel-suggestion{align-items:center;gap:.5rem;min-height:2rem;display:flex}.recipe-ingredients-panel-suggestion{color:var(--ink-muted);padding-left:.75rem;font-size:.8rem}.recipe-ingredients-panel-suggestion-text{flex:1;min-width:0}.recipe-ingredients-panel-suggestion strong{color:var(--ink)}.recipe-ingredients-panel-ignore{color:var(--ink-muted);flex-shrink:0;font-size:.78rem}.recipe-ingredients-panel-name{flex-direction:column;flex:1;min-width:0;display:flex}.recipe-ingredients-panel-measure{color:var(--ink-muted);font-size:.75rem}.recipe-ingredients-panel-status{white-space:nowrap;flex-shrink:0;font-size:.75rem}.recipe-ingredients-panel-status.is-have{color:var(--ok)}.recipe-ingredients-panel-status.is-need{color:var(--warn)}.recipe-ingredients-panel-status.is-missing{color:var(--ink-muted)}.recipe-ingredients-panel-btn{white-space:nowrap;flex-shrink:0;padding:.15rem .6rem;font-size:.78rem}.shopping-list-recipe-link{color:var(--brand)}.recipe-table-group-header td{background:var(--chrome);text-align:left;color:var(--ink-muted);font-weight:700}.ingredient-picker-dropdown{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:14rem;box-shadow:var(--shadow-2);flex-direction:column;gap:.35rem;padding:.4rem;display:flex;position:absolute;top:calc(100% + .25rem);left:0;right:0;overflow-y:auto}.mobile-nav{padding:.4rem .25rem calc(.4rem + env(safe-area-inset-bottom,0px));background:#00000026;border-top:1px solid #ffffff26;justify-content:space-around;display:flex}@media (width>=800px){.mobile-nav{display:none}}.mobile-nav-link{color:#ffffffa6;border-radius:.5rem;flex-direction:column;flex:1;align-items:center;gap:.2rem;padding:.2rem .6rem;font-size:.66rem;font-weight:600;text-decoration:none;display:flex}.mobile-nav-link svg{width:1.15rem;height:1.15rem}.mobile-nav-link.is-active{color:#fff}.page{width:100%;padding:1.25rem var(--page-padding) 2.5rem;flex-direction:column;flex:1;gap:1rem;display:flex}.menu-builder-page{padding-top:.5rem}.page-title{color:var(--ink);font-size:1.35rem;font-weight:800}.narrow-section{flex-direction:column;gap:1rem;width:100%;display:flex}.tab-row{border-bottom:1px solid var(--border);gap:.4rem;display:flex}.tab-row--sub{margin-top:.5rem;margin-bottom:.25rem}.tab-row--sub .tab-btn{padding:.4rem .7rem;font-size:.78rem}.tab-btn{color:var(--ink-muted);background:0 0;border-bottom:2px solid #0000;border-radius:.5rem .5rem 0 0;margin-bottom:-1px;padding:.55rem .9rem;font-size:.85rem}.tab-btn:hover{color:var(--ink)}.tab-btn.is-active{color:var(--gold);border-bottom-color:var(--gold)}.section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--meta);font-size:.72rem;font-weight:700}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-2);flex-direction:column;gap:.7rem;padding:1.1rem;display:flex}.card--accent-ok{border-color:color-mix(in srgb, var(--ok) 45%, var(--border))}.card--accent-err{border-color:color-mix(in srgb, var(--err) 45%, var(--border))}.modal-backdrop{z-index:100;background:#0009;justify-content:center;align-items:flex-start;padding:3rem 1.25rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-dialog{width:min(640px,100%)}.card-title{font-size:1.1rem;font-weight:700}.card-meta{color:var(--ink-muted);margin:-.35rem 0 0;font-size:.82rem}.card-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}@media (width>=640px){.card-list--grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;display:grid}}.field{flex-direction:column;gap:.3rem;display:flex}.field-label{letter-spacing:.03em;color:var(--meta);font-size:.72rem;font-weight:700}.field-row{flex-wrap:wrap;gap:.6rem;display:flex}.field-row>.field{flex:12rem}.field-hint{color:var(--ink-muted);margin:0;font-size:.76rem;line-height:1.4}input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:.6rem;width:100%;padding:.55rem .65rem}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}input:disabled{color:var(--ink-muted);background:var(--surface-2)}input[type=number]{font-variant-numeric:tabular-nums;font-weight:600}button{font:inherit;cursor:pointer;border:none;border-radius:.65rem;padding:.7rem 1rem;font-size:.9rem;font-weight:600;transition:background-color .12s,transform 40ms}button:active:not(:disabled){transform:scale(.98)}a.btn-primary,a.btn-secondary{cursor:pointer;text-align:center;border-radius:.65rem;padding:.7rem 1rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}a.icon-btn-plain{cursor:pointer;text-decoration:none}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--surface-2);color:var(--brand);border:1px solid var(--brand)}.btn-primary:hover:not(:disabled){background:var(--surface-2);color:var(--brand-hover);border-color:var(--brand-hover)}.btn-secondary{background:var(--surface-2);color:var(--ink);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--border)}.btn-secondary.is-active{color:var(--gold);border-color:var(--gold)}.btn-block{width:100%}.btn-row{gap:.6rem;display:flex}.btn-row>*{flex:1}.chip{letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;padding:.2rem .55rem;font-size:.66rem;font-weight:700;display:inline-flex}.chip--mass{color:var(--mass);background:color-mix(in srgb, var(--mass) 16%, transparent);border-color:color-mix(in srgb, var(--mass) 35%, transparent)}.chip--volume{color:var(--volume);background:color-mix(in srgb, var(--volume) 16%, transparent);border-color:color-mix(in srgb, var(--volume) 35%, transparent)}.chip--count{color:var(--count);background:color-mix(in srgb, var(--count) 16%, transparent);border-color:color-mix(in srgb, var(--count) 35%, transparent)}.shopping-list-group{border:1.5px solid var(--group-accent,var(--border));border-radius:var(--radius);overflow:hidden}.shopping-list-group-header{letter-spacing:.04em;text-transform:uppercase;color:var(--group-accent,var(--ink));background:color-mix(in srgb, var(--group-accent,var(--border)) 22%, var(--surface));border-bottom:1.5px solid var(--group-accent,var(--border));padding:.45rem .85rem;font-size:.7rem;font-weight:700}.shopping-list-group-items{padding:.75rem}.shopping-list-recurring-badge{color:#fff;background:#3b82f6;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:1.3rem;height:1.3rem;display:inline-flex}.shopping-list-recurring-badge svg{width:.75rem;height:.75rem}.shopping-list-menu-badge{background:var(--brand);width:1.3rem;height:1.3rem;color:var(--bg);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shopping-list-menu-badge svg{width:.75rem;height:.75rem}.menu-day-tab{border:1px solid var(--border);background:var(--surface-2);min-width:2.6rem;color:var(--brand);cursor:pointer;border-radius:.5rem;flex-direction:column;align-items:center;gap:.1rem;padding:.3rem .4rem;display:flex}.menu-day-tab:hover{background:var(--border)}.menu-day-tab.is-active{border-color:var(--gold);color:var(--gold)}.menu-day-tab-dow{letter-spacing:.06em;text-transform:uppercase;font-size:.6rem;font-weight:800}.menu-day-tab-num{color:var(--ink);font-size:.85rem;font-weight:700}.menu-day-tab.is-active .menu-day-tab-num{color:var(--gold)}.menu-nav-desktop{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.menu-nav-mobile{display:none}@media (width<=799px){.menu-nav-desktop{display:none}.menu-nav-mobile{flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0;display:flex}}.menu-nav-mobile-date{color:var(--ink);white-space:nowrap;font-size:.85rem;font-weight:600}.menu-fasting-toggle{cursor:pointer;color:var(--ink-muted);white-space:nowrap;align-items:center;gap:.4rem;font-size:.78rem;display:flex}.menu-fasting-toggle input{width:1rem;height:1rem;accent-color:var(--brand)}.menu-templates-icon-btn{border:1px solid var(--gold);width:2.3rem;height:2.3rem;color:var(--gold);background:0 0;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.menu-templates-icon-btn:hover{background:color-mix(in srgb, var(--gold) 16%, transparent)}.menu-templates-icon-btn svg{width:1.1rem;height:1.1rem}.menu-action-icon-btn{border:1px solid var(--brand);background:var(--bg);width:2.1rem;height:2.1rem;color:var(--brand);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.menu-action-icon-btn:hover{background:color-mix(in srgb, var(--brand) 25%, var(--bg));color:var(--brand-hover);border-color:var(--brand-hover)}.menu-action-icon-btn svg{width:1.05rem;height:1.05rem}.menu-summary-block{flex-direction:column;gap:.45rem;display:flex}.menu-end-desktop{align-items:center;gap:.6rem;display:flex}@media (width<=799px){.menu-end-desktop{display:none}}.menu-summary-day-label{color:var(--ink-muted);white-space:nowrap;font-size:.78rem;font-weight:600}.menu-summary-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1.25rem;display:flex}.menu-stat-grid{flex-wrap:wrap;justify-content:flex-start;gap:.5rem;display:flex}@media (width<=799px){.menu-stat-grid{display:none}}.menu-stat-tile{background:var(--surface-2);border:1px solid var(--border);border-radius:.55rem;flex-direction:column;gap:.15rem;min-width:5.5rem;padding:.45rem .6rem;display:flex}.menu-stat-tile .field-label{color:var(--brand);font-weight:800}.menu-stat-value{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:700;line-height:1.1}.menu-stat-unit{color:var(--brand);margin-left:.15rem;font-size:.65rem;font-weight:800}.menu-stat-target{color:var(--brand);font-size:.62rem;font-weight:800}.menu-stat-target-row{align-items:center;gap:.35rem;display:flex}.menu-stat-target-input{width:4.5rem;padding:.25rem .4rem;font-size:.85rem;font-weight:700}.menu-progress-track{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:.3rem;overflow:hidden}.menu-progress-fill{background:var(--ok);border-radius:999px;height:100%;transition:width .2s}.menu-progress-fill.is-over{background:var(--err)}.menu-fasting-log{flex-wrap:wrap;align-items:flex-start;gap:.75rem;display:flex}.menu-fasting-log input[type=time]{padding:.2rem .35rem;font-size:.75rem}.menu-time-input-row{align-items:center;gap:.3rem;display:flex}.menu-time-clear-btn{width:1.4rem;height:1.4rem;color:var(--ink-muted);background:0 0;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:.7rem;display:flex}.menu-time-clear-btn:hover{background:var(--err-bg);color:var(--err)}.menu-fasted-readout{flex-direction:column;gap:.1rem;display:flex}.menu-fasted-readout strong{font-size:1rem}.menu-meal-card{border:1.5px solid var(--meal-accent,var(--border));border-radius:var(--radius);overflow:hidden}.menu-meal-header{color:var(--meal-accent,var(--ink));background:color-mix(in srgb, var(--meal-accent,var(--border)) 20%, var(--surface));border-bottom:1.5px solid var(--meal-accent,var(--border));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.65rem 1rem;display:flex}.menu-meal-header-left{align-items:baseline;gap:.6rem;display:flex}.menu-meal-header-left strong{font-size:1.05rem}.menu-meal-header-kcal{color:var(--ink);font-size:.82rem;font-weight:700}.menu-meal-header-right{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.menu-meal-header-macros{color:var(--ink);opacity:.85;white-space:nowrap;font-size:.78rem}.menu-meal-body{padding:.85rem 1rem}.menu-item-row{align-items:center;gap:.7rem;padding-bottom:.7rem;display:flex}.menu-item-row:not(:last-child){border-bottom:1px solid var(--border)}.menu-item-main{flex:1;min-width:0}.menu-item-name-row{align-items:center;gap:.5rem;display:flex}.menu-item-name{font-weight:700}.menu-item-name--recipe{color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-weight:700}.menu-item-name--recipe:hover,.menu-item-name--recipe:focus-visible{color:var(--brand);text-decoration:underline}.card-meta--recipe{color:var(--brand);font-weight:700}.macro-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;display:grid}.macro-item{background:var(--surface-2);border:1px solid var(--border);border-radius:.7rem;min-width:0;padding:.55rem .65rem}.macro-item dd{text-overflow:ellipsis;overflow:hidden}.macro-item dt{color:var(--ink-muted);margin:0 0 .2rem;font-size:.64rem;font-weight:600}.macro-item dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.02rem;font-weight:700}.banner{border-radius:.6rem;align-items:center;gap:.4rem;padding:.6rem .75rem;font-size:.8rem;font-weight:600;display:flex}.banner--ok{color:var(--ok);background:var(--ok-bg)}.banner--warn{color:var(--warn);background:var(--warn-bg)}.banner--err{color:var(--err);background:var(--err-bg)}.empty-state{color:var(--ink-muted);text-align:center;padding:1.5rem 0;font-size:.88rem}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.view-tabs-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;display:flex}.view-tabs{align-items:center;gap:.2rem;display:flex;overflow-x:auto}.view-tab{color:var(--ink-muted);white-space:nowrap;background:0 0;border-bottom:2px solid #0000;border-radius:.5rem .5rem 0 0;margin-bottom:-1px;padding:.55rem .9rem;font-size:.85rem}.view-tab:hover{color:var(--ink)}.view-tab.is-active{color:var(--gold);border-bottom-color:var(--gold)}.view-tab.is-drop-target{box-shadow:inset 2px 0 0 var(--gold)}.icon-btn-plain{width:2rem;height:2rem;color:var(--meta);background:0 0;border:1px solid #0000;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.icon-btn-plain svg{width:1rem;height:1rem}.icon-btn-plain:hover{background:var(--surface-2);color:var(--ink)}.icon-btn-plain.danger:hover{background:var(--err-bg);color:var(--err)}.icon-btn-plain.is-active{color:var(--gold)}.view-config-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:min(92vw,420px);max-height:75vh;box-shadow:var(--shadow-2);z-index:40;flex-direction:column;gap:.75rem;padding:1rem;display:flex;position:absolute;top:calc(100% + .5rem);right:0;overflow-y:auto}.view-config-tab{flex-direction:column;gap:.6rem;display:flex}.view-config-columns-header{justify-content:space-between;align-items:center;display:flex}.view-config-column-actions{gap:.6rem;display:flex}.link-btn{color:var(--brand);background:0 0;padding:0;font-size:.78rem;font-weight:600}.link-btn:hover{color:var(--brand-hover)}.ingredient-picker-manual-add{text-align:left;width:100%;padding:.5rem .75rem}.view-config-column-list{flex-direction:column;gap:.2rem;max-height:40vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.view-config-column-list li{border-radius:.4rem;align-items:center;gap:.5rem;padding:.35rem .3rem;display:flex}.view-config-column-list li:hover{background:var(--surface-2)}.category-select-trigger{box-sizing:border-box;width:100%;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.4rem;justify-content:center;align-items:center;gap:.4rem;padding:.4rem .5rem;display:flex;overflow:hidden}.category-select-trigger span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.category-select-trigger:hover{border-color:var(--border)}.category-select-chevron{width:.9rem;height:.9rem;color:var(--ink-muted);flex-shrink:0}.category-select-menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:15rem;max-height:60vh;box-shadow:var(--shadow-2);z-index:110;flex-direction:column;gap:.5rem;padding:.6rem;display:flex;position:fixed;overflow-y:auto}.category-option{cursor:pointer}.category-option.is-selected{background:var(--surface-2)}.category-option.is-selected .view-config-column-name{color:var(--gold);font-weight:700}.category-option-check{width:.9rem;height:.9rem;color:var(--gold);flex-shrink:0}.category-select-add-row{border-top:1px solid var(--border);gap:.5rem;padding-top:.4rem;display:flex}.category-select-add-row input{flex:1}.drag-handle{cursor:grab;color:var(--meta);font-size:.8rem}.view-config-column-name{flex:1;font-size:.85rem}.view-config-rule{align-items:center;gap:.4rem;display:flex}.view-config-rule select,.view-config-rule input{padding:.4rem .5rem;font-size:.82rem}.table-scroll{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.products-table{table-layout:fixed;border-collapse:collapse;background:var(--surface);width:100%}.products-table-actions-col{text-align:center;white-space:nowrap;width:4.5rem;max-width:4.5rem;padding:.3rem .2rem}.products-table th.products-table-actions-col,.products-table td.products-table-actions-col{z-index:2;position:sticky;left:0}.products-table td.products-table-actions-col{background:var(--surface);vertical-align:middle;text-align:left;padding-left:.5rem}.products-table-actions-col .icon-btn-plain{vertical-align:middle;width:1.6rem;height:1.6rem;margin:0 .075rem;display:inline-flex}.products-table-hover-actions{background:inherit;align-items:center;gap:.35rem;height:fit-content;margin-block:auto;padding-left:.4rem;display:none;position:absolute;top:0;bottom:0;right:.4rem}.products-table-buy-btn,.products-table-menu-btn{white-space:nowrap;padding:.15rem .7rem;font-size:.8rem}.products-table-on-list{color:var(--ink-muted);white-space:nowrap;padding:.15rem .4rem;font-size:.8rem}@media (hover:hover) and (pointer:fine){.products-table tbody tr:hover .products-table-hover-actions,.products-table-hover-actions:focus-within{display:flex}}.add-to-menu-check{cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.add-to-menu-check input{width:1.05rem;height:1.05rem;accent-color:var(--brand)}.products-table th{text-align:center;letter-spacing:.03em;text-transform:uppercase;color:var(--meta);background:var(--chrome);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-bottom:1px solid var(--border);padding:.6rem 1.1rem .6rem .75rem;font-size:.7rem;font-weight:700;position:relative;overflow:hidden}.products-table-th{align-items:center;gap:.3rem;display:inline-flex}.products-table-th svg{width:.8rem;height:.8rem}.col-resize-handle{cursor:col-resize;width:10px;height:100%;position:absolute;top:0;right:0}.col-resize-handle:hover,.col-resize-handle:active{background:color-mix(in srgb, var(--gold) 45%, transparent)}.products-table td{border-bottom:1px solid var(--border);vertical-align:middle;text-align:center;padding:.3rem;overflow:hidden}.products-table th[data-col=product_name],.products-table td[data-col=product_name]{z-index:2;position:sticky;left:4.5rem}.products-table td[data-col=product_name]{text-align:left;background:var(--surface)}.products-table td input,.products-table td select{box-sizing:border-box;width:100%;text-align:inherit;background:0 0;border:1px solid #0000;border-radius:.4rem;padding:.4rem .5rem}.products-table td input:hover,.products-table td select:hover{border-color:var(--border)}.products-table td input:focus-visible,.products-table td select:focus-visible{border-color:var(--focus);background:var(--surface)}.products-table-readonly{color:var(--ink-muted);white-space:nowrap;text-overflow:ellipsis;padding:.4rem .5rem;font-size:.82rem;display:block;overflow:hidden}.products-table-readonly:focus-visible{box-shadow:inset 0 0 0 1px var(--focus);border-radius:.4rem;outline:none}.products-table-name-cell{cursor:default;white-space:nowrap;text-overflow:ellipsis;border:1px solid #0000;border-radius:.4rem;padding:.4rem .5rem;display:block;overflow:hidden}.product-link-chip{vertical-align:middle;border:1px solid var(--border);height:1.25rem;color:var(--ink-muted);background:0 0;border-radius:999px;align-items:center;gap:.15rem;margin-left:.4rem;padding:0 .3rem;font-size:.7rem;line-height:1;display:inline-flex}.product-link-chip svg{width:.75rem;height:.75rem}.product-link-chip.has-suggestions{color:var(--gold);border-color:var(--gold)}.product-link-popover{z-index:90;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:340px;max-width:calc(100vw - 16px);max-height:60vh;box-shadow:var(--shadow-2);padding:.7rem .8rem;font-size:.85rem;position:fixed;overflow-y:auto}.product-link-popover-title{margin:0 0 .3rem;font-weight:700}.product-link-popover-label{letter-spacing:.03em;text-transform:uppercase;color:var(--meta);margin:.5rem 0 .1rem;font-size:.7rem;font-weight:700}.product-link-popover-row{align-items:center;gap:.5rem;min-height:2rem;display:flex}.product-link-popover-text{flex:1;min-width:0}.product-link-popover-btn{padding:.15rem .6rem;font-size:.78rem}.duplicate-review-list{margin:0;padding:0;list-style:none}.duplicate-review-list li{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.6rem 0;display:flex}.duplicate-review-names{flex-wrap:wrap;align-items:baseline;gap:.4rem;display:flex}.duplicate-review-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.duplicate-review-actions .btn-secondary{padding:.3rem .7rem;font-size:.8rem}.products-table-name-cell:focus-visible{border-color:var(--focus);background:var(--surface);outline:none}.products-table th.is-sorted-col{color:var(--gold)}.products-table td.is-sorted-col{background:color-mix(in srgb, var(--ink) 8%, var(--surface))}.products-table-group-header td{background:var(--surface-2);color:var(--meta);text-transform:uppercase;letter-spacing:.03em;text-align:left;padding:.6rem .75rem;font-size:.78rem;font-weight:700;overflow:hidden}.products-table-group-label{will-change:transform;display:inline-block}.app-boot-loading{min-height:100vh;color:var(--ink-muted);justify-content:center;align-items:center;font-size:.9rem;display:flex}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.auth-card{gap:.9rem;width:min(380px,100%)}.auth-card-brand{align-items:center;gap:.6rem;margin-bottom:.2rem;display:flex}.passkey-list{flex-direction:column;gap:.5rem;display:flex}.passkey-row{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem .8rem;display:flex}.passkey-row-name{color:var(--ink);font-weight:600}
