@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-primary: #1f8a5b;--color-primary-hover: #197048;--color-primary-soft: #e6f4ec;--color-on-primary: #ffffff;--color-primary-text: #197048;--color-primary-strong: #145c3b;--color-secondary: #f28c38;--color-secondary-hover: #d9762a;--color-secondary-soft: #fff1e3;--color-secondary-text: #a4520f;--color-bg: #f7f6f2;--color-surface: #ffffff;--color-surface-2: #f1efea;--color-text: #1b1f1d;--color-muted: #636b66;--color-subtle: #9aa19c;--color-success: #1f8a5b;--color-warning: #c98a0b;--color-warning-soft: #fff6dc;--color-warning-text: #7a5300;--color-error: #d0443a;--color-error-soft: #fdecea;--color-error-text: #b0342b;--color-info: #2f6fb0;--color-info-soft: #eaf2fb;--color-border: #e6e3dc;--color-border-strong: #d6d2c8;--color-protein: #e0663a;--color-fat: #e6b23a;--color-carbs: #4e8fd8;--color-kcal: var(--color-primary);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 24px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(20, 25, 22, .06);--shadow-md: 0 4px 16px rgba(20, 25, 22, .08);--shadow-lg: 0 12px 32px rgba(20, 25, 22, .12);--font: "Inter Variable", Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-display: 40px;--fs-h1: 28px;--fs-h2: 22px;--fs-h3: 18px;--fs-body: 16px;--fs-small: 14px;--fs-caption: 12px;--fs-key: 30px;--topbar-h: 64px;--bottomnav-h: 64px;--content-max: 1120px;--bg: var(--color-bg);--surface: var(--color-surface);--text: var(--color-text);--muted: var(--color-muted);--border: var(--color-border);--primary: var(--color-primary);--primary-hover: var(--color-primary-hover);--primary-soft: var(--color-primary-soft);--danger: var(--color-error-text);--danger-soft: var(--color-error-soft);color-scheme:light;font-family:var(--font);font-size:var(--fs-body);line-height:1.5;color:var(--color-text);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);min-width:320px}a{color:var(--color-primary-text);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0;line-height:1.2;letter-spacing:-.01em}h1{font-size:var(--fs-h1);font-weight:700}h2{font-size:var(--fs-h2);font-weight:650}h3{font-size:var(--fs-h3);font-weight:600}button,input,select,textarea{font:inherit}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}code{font-size:.85em;background:var(--color-surface-2);padding:1px 4px;border-radius:4px}.muted{color:var(--color-muted)}.small{font-size:var(--fs-small)}.caption{font-size:var(--fs-caption);font-weight:500}.num,.tabular{font-variant-numeric:tabular-nums}.num{text-align:right;white-space:nowrap}.capitalize:first-letter{text-transform:uppercase}.text-danger{color:var(--color-error-text)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.icon{flex:none;display:inline-block;vertical-align:middle}.topbar{position:sticky;top:0;z-index:20;height:var(--topbar-h);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar-inner{max-width:var(--content-max);height:100%;margin:0 auto;padding:0 var(--space-6);display:flex;align-items:center;gap:var(--space-6)}.brand{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--color-text);flex:none;font-weight:800;font-size:17px;letter-spacing:.02em}.brand:hover{text-decoration:none}.brand-mark{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--color-primary);color:var(--color-on-primary)}.brand-accent{color:var(--color-secondary-text)}.nav{display:flex;align-items:center;gap:var(--space-1);flex:1;min-width:0}.nav-link{display:inline-flex;align-items:center;gap:var(--space-2);height:40px;padding:0 var(--space-3);border-radius:var(--r-md);color:var(--color-muted);font-weight:550;font-size:15px;white-space:nowrap}.nav-link:hover{background:var(--color-surface-2);color:var(--color-text);text-decoration:none}.nav-link.active{background:var(--color-primary-soft);color:var(--color-primary-text);font-weight:650}.nav-link-mobile{display:none}.nav-guest{justify-content:flex-end}.topbar-end{display:flex;align-items:center;gap:var(--space-2);margin-left:auto;flex:none}.dev-user{font-size:var(--fs-caption);color:var(--color-muted);border:1px dashed var(--color-border-strong);padding:4px 8px;border-radius:var(--r-sm)}.menu{position:relative}.menu-trigger{display:inline-flex;align-items:center;gap:var(--space-1);height:44px;padding:0 var(--space-2) 0 4px;border:1px solid var(--color-border);border-radius:var(--r-pill);background:var(--color-surface);color:var(--color-text);cursor:pointer}.menu-trigger:hover{border-color:var(--color-border-strong);background:var(--color-surface-2)}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--color-secondary-soft);color:var(--color-secondary-text);font-weight:700;font-size:15px}.menu-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:30;min-width:240px;max-width:calc(100vw - 32px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:var(--space-2)}.menu-panel[hidden]{display:none}.menu-head{padding:var(--space-2) var(--space-3) var(--space-3);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-1);min-width:0}.menu-name{font-weight:650}.menu-email{font-size:var(--fs-small);color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:44px;padding:0 var(--space-3);border:none;background:none;border-radius:var(--r-md);color:var(--color-text);cursor:pointer;text-align:left;font-weight:500}.menu-item:hover,.menu-item:focus-visible{background:var(--color-surface-2);text-decoration:none}.menu-item .icon{color:var(--color-muted)}.menu-item-danger,.menu-item-danger .icon{color:var(--color-error-text)}.menu-item:disabled{opacity:.6;cursor:not-allowed}.menu-sep{height:1px;background:var(--color-border);margin:var(--space-1) 0}.content{max-width:var(--content-max);margin:0 auto;padding:var(--space-8) var(--space-6) var(--space-16);display:flex;flex-direction:column;gap:var(--space-5)}.auth-page{width:100%;max-width:440px;margin:var(--space-6) auto 0;display:flex;flex-direction:column;gap:var(--space-4)}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap}.page-header>div:first-child{min-width:0}.page-header p{margin:var(--space-1) 0 0}.page-actions,.button-row,.row-actions,.card-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-3) var(--space-4)}.quick-links{display:flex;gap:var(--space-5);flex-wrap:wrap}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);padding:var(--space-5);box-shadow:var(--shadow-sm);min-width:0}.card-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.card-header h2{font-size:var(--fs-h3);font-weight:650}.form{display:flex;flex-direction:column;gap:var(--space-4)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-weight:600;font-size:var(--fs-small)}.field-hint{font-size:13px;color:var(--color-muted)}.field-error{font-size:13px;color:var(--color-error-text)}.field-invalid .input{border-color:var(--color-error)}.input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--color-border-strong);border-radius:var(--r-md);background:var(--color-surface);color:var(--color-text)}.input:hover:not(:disabled){border-color:var(--color-subtle)}.input:focus{outline:3px solid var(--color-primary-soft);border-color:var(--color-primary)}.input:disabled{background:var(--color-surface-2);color:var(--color-muted)}.checks{border:1px solid var(--color-border);border-radius:var(--r-md);padding:var(--space-3) var(--space-4);display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);margin:0}.checks legend{font-weight:600;font-size:var(--fs-small);padding:0 4px}.checks label{display:flex;align-items:center;gap:var(--space-2);min-height:32px}.checks input,.toggle input{accent-color:var(--color-primary);width:18px;height:18px}.toggle{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-small)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:44px;padding:0 var(--space-4);border-radius:var(--r-md);border:1px solid transparent;font-weight:600;font-size:15px;line-height:1;cursor:pointer;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.btn:hover{text-decoration:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn[aria-busy=true]{opacity:.8;cursor:progress}.btn-sm{height:36px;padding:0 var(--space-3);font-size:var(--fs-small);border-radius:10px}.btn-lg{height:52px;padding:0 var(--space-6);font-size:var(--fs-body)}.btn-primary{background:var(--color-primary-text);color:var(--color-on-primary);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--color-primary-strong)}.btn-tonal{background:var(--color-primary-soft);color:var(--color-primary-hover)}.btn-tonal:hover:not(:disabled){background:#d5ecdf}.btn-outline,.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-outline:hover:not(:disabled),.btn-secondary:hover:not(:disabled){background:var(--color-surface-2)}.btn-ghost{background:transparent;color:var(--color-primary-text)}.btn-ghost:hover:not(:disabled){background:var(--color-primary-soft)}.btn-danger{background:var(--color-surface);color:var(--color-error-text);border-color:#f1c3bf}.btn-danger:hover:not(:disabled){background:var(--color-error-soft)}.btn-danger-ghost{background:transparent;color:var(--color-error-text)}.btn-danger-ghost:hover:not(:disabled){background:var(--color-error-soft)}.btn-icon{width:44px;padding:0;background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-icon.btn-sm{width:36px}.btn-icon.btn-lg{width:52px}.btn-icon:hover:not(:disabled){background:var(--color-surface-2)}.btn-block{width:100%}.alert{border-radius:var(--r-md);padding:var(--space-3) var(--space-4);border:1px solid;display:flex;flex-direction:column;gap:var(--space-1);font-size:15px}.alert-info{background:var(--color-info-soft);border-color:#c9dcf0}.alert-success{background:var(--color-primary-soft);border-color:#bfe0cd}.alert-warning{background:var(--color-warning-soft);border-color:#f0dca0}.alert-error{background:var(--color-error-soft);border-color:#f1c3bf}.error-fields{margin:2px 0 0;padding-left:18px}.loading{display:flex;align-items:center;gap:var(--space-3);color:var(--color-muted);padding:var(--space-6) 0}.spinner{width:18px;height:18px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block;flex:none}.spinner-sm{width:14px;height:14px;border-color:#ffffff73;border-top-color:currentColor}.btn-tonal .spinner-sm,.btn-outline .spinner-sm,.btn-secondary .spinner-sm,.btn-ghost .spinner-sm,.btn-icon .spinner-sm,.btn-danger .spinner-sm,.btn-danger-ghost .spinner-sm,.menu-item .spinner-sm{border-color:var(--color-border-strong);border-top-color:currentColor}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;padding:var(--space-10) var(--space-4);display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.empty-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin-bottom:4px;background:var(--color-primary-soft);color:var(--color-primary)}.empty-title{font-weight:650;font-size:var(--fs-h3)}.empty-text{color:var(--color-muted);max-width:420px;margin:0}.empty-action{margin-top:var(--space-2)}.skeleton{display:block;border-radius:var(--r-sm);background:linear-gradient(90deg,var(--color-surface-2) 25%,#f8f7f3 50%,var(--color-surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.skeleton,.spinner{animation-duration:3s}.btn{transition:none}}.stats{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-8);align-items:flex-end}.stat-label{font-size:13px;color:var(--color-muted)}.stat-value{font-size:18px;font-weight:650;font-variant-numeric:tabular-nums}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--color-border);vertical-align:top}.table th{font-size:13px;color:var(--color-muted);font-weight:600}.table td .input{min-width:90px}.row-muted td{color:var(--color-muted)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:var(--r-pill);font-size:13px;font-weight:600;line-height:1.5;white-space:nowrap;vertical-align:middle}.badge-neutral,.badge-archived{background:var(--color-surface-2);color:var(--color-muted)}.badge-success,.badge-ready{background:var(--color-primary-soft);color:var(--color-primary-hover)}.badge-info,.badge-committed{background:var(--color-info-soft);color:#245a90}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning-text)}.badge-error{background:var(--color-error-soft);color:var(--color-error-text)}.badge-accent{background:var(--color-secondary-soft);color:var(--color-secondary-text)}.tabs{display:inline-flex;gap:4px;padding:4px;background:var(--color-surface-2);border-radius:var(--r-md);align-self:flex-start}.tab{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--space-4);border-radius:10px;color:var(--color-muted);font-weight:550;font-size:15px}.tab.active{background:var(--color-surface);color:var(--color-text);font-weight:650;box-shadow:var(--shadow-sm)}.tab:hover{text-decoration:none;color:var(--color-text)}.progress{display:flex;flex-direction:column;gap:6px;min-width:0}.progress-track{height:10px;border-radius:var(--r-pill);background:var(--color-surface-2);overflow:hidden}.progress-sm .progress-track{height:6px}.progress-fill{height:100%;border-radius:inherit;background:var(--color-primary);transition:width .4s ease}.progress-accent .progress-fill{background:var(--color-secondary)}.progress-warning .progress-fill{background:var(--color-warning)}.progress-error .progress-fill{background:var(--color-error)}.ring{position:relative;display:inline-grid;place-items:center;flex:none;width:132px;height:132px}.ring svg{display:block;width:100%;height:100%;transform:rotate(-90deg)}.ring-track{stroke:var(--color-surface-2)}.ring-fill{stroke:var(--color-kcal);transition:stroke-dashoffset .5s ease}.ring-over .ring-fill{stroke:var(--color-warning)}.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.15}.macros{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.macro-row{display:grid;grid-template-columns:84px minmax(0,1fr) auto;align-items:center;gap:var(--space-3)}.macro-name{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-small);font-weight:550}.macro-dot{width:10px;height:10px;border-radius:50%;flex:none}.macro-value{font-size:var(--fs-small);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.macro-value .muted{font-weight:400}.macro-over .macro-value b{color:var(--color-warning-text)}.macro-protein .macro-dot,.macro-protein .progress-fill{background:var(--color-protein)}.macro-fat .macro-dot,.macro-fat .progress-fill{background:var(--color-fat)}.macro-carbs .macro-dot,.macro-carbs .progress-fill{background:var(--color-carbs)}.stat-card{display:flex;flex-direction:column;gap:var(--space-3)}.stat-card-head{display:flex;align-items:center;gap:var(--space-2);color:var(--color-muted);font-size:var(--fs-small);font-weight:600}.stat-card-icon{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--color-primary-soft);color:var(--color-primary)}.stat-card-icon.tone-accent{background:var(--color-secondary-soft);color:var(--color-secondary-text)}.key-number{font-size:var(--fs-key);font-weight:700;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.key-number small{font-size:var(--fs-body);font-weight:600;color:var(--color-muted);letter-spacing:0}.segmented{display:inline-flex;gap:4px;padding:4px;background:var(--color-surface-2);border-radius:var(--r-md);max-width:100%;overflow-x:auto}.segment{min-height:36px;padding:0 var(--space-4);border:none;border-radius:10px;background:transparent;color:var(--color-muted);font-weight:550;cursor:pointer;white-space:nowrap}.segment:hover:not(:disabled){color:var(--color-text)}.segment[aria-checked=true]{background:var(--color-surface);color:var(--color-text);font-weight:650;box-shadow:var(--shadow-sm)}.chip-group{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip-toggle{min-height:36px;padding:0 var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--r-pill);background:var(--color-surface);color:var(--color-text);font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.chip-toggle:hover:not(:disabled){border-color:var(--color-subtle)}.chip-toggle[aria-pressed=true]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-hover);font-weight:600}.sticky-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.plan-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:var(--space-4)}.budget-figure{display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap}.budget-left{display:flex;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;font-size:var(--fs-small)}.budget-left strong{color:var(--color-primary-text)}.budget-over strong{color:var(--color-error-text)}.budget-facts{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:0;padding:0;list-style:none;font-size:13px;color:var(--color-muted)}.budget-facts li{display:inline-flex;align-items:center;gap:6px}.budget-facts b{color:var(--color-text);font-weight:600;font-variant-numeric:tabular-nums}.nutrition{display:flex;align-items:center;gap:var(--space-6)}.nutrition .macros{flex:1}.ring-value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.ring-sub{font-size:var(--fs-caption);color:var(--color-muted);font-weight:500}.issues-panel{border-radius:var(--r-lg);border:1px solid #f0dca0;background:var(--color-warning-soft)}.issues-panel.tone-error{border-color:#f1c3bf;background:var(--color-error-soft)}.issues-panel.tone-info{border-color:#c9dcf0;background:var(--color-info-soft)}.issues-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4)}.issues-icon{color:var(--color-warning);flex:none}.tone-error .issues-icon{color:var(--color-error)}.tone-info .issues-icon{color:var(--color-info)}.issues-title{flex:1;min-width:0}.issues-title strong{display:block;font-weight:650}.issues-title span{font-size:var(--fs-small);color:var(--color-muted)}.issues-toggle{flex:none}.issues-toggle .icon{transition:transform .2s}.issues-toggle[aria-expanded=true] .icon{transform:rotate(180deg)}.issues-body{padding:0 var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.issues-body[hidden]{display:none}.issues{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.issue{display:flex;gap:var(--space-3);padding:var(--space-3);background:var(--color-surface);border-radius:var(--r-md)}.issue>.icon{margin-top:2px;color:var(--color-warning)}.issue.sev-error>.icon{color:var(--color-error)}.issue.sev-info>.icon{color:var(--color-info)}.issue-main{min-width:0;display:flex;flex-direction:column;gap:6px}.issue-dates{display:flex;flex-wrap:wrap;gap:4px}.issue-dates .badge{font-weight:550}.menu-section{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.menu-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.day-selector{display:flex;gap:var(--space-2);overflow-x:auto;scroll-snap-type:x proximity;padding:2px 2px 6px;margin:-2px -2px -6px;scrollbar-width:none}.day-selector::-webkit-scrollbar{display:none}.day-tab{flex:none;scroll-snap-align:start;min-width:64px;min-height:60px;padding:var(--space-2) var(--space-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--color-border);border-radius:var(--r-md);background:var(--color-surface);color:var(--color-muted);cursor:pointer;line-height:1.1}.day-tab:hover{border-color:var(--color-border-strong);color:var(--color-text)}.day-tab-wd{font-size:var(--fs-caption);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.day-tab-d{font-size:20px;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.day-tab-dot{width:5px;height:5px;border-radius:50%;background:transparent}.day-tab-dot.has-issues{background:var(--color-warning)}.day-tab[aria-selected=true]{background:var(--color-primary-text);border-color:var(--color-primary-text);color:var(--color-on-primary);box-shadow:var(--shadow-md)}.day-tab[aria-selected=true] .day-tab-d{color:var(--color-on-primary)}.day-tab[aria-selected=true] .day-tab-dot.has-issues{background:var(--color-secondary-soft)}.day-panel{display:flex;flex-direction:column;gap:var(--space-3)}.day-panel:focus-visible{outline-offset:4px;border-radius:var(--r-lg)}.day-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3) var(--space-6);flex-wrap:wrap}.day-head h3{font-size:var(--fs-h3)}.day-totals{display:flex;align-items:center;gap:var(--space-3) var(--space-5);flex-wrap:wrap;font-size:var(--fs-small);color:var(--color-muted)}.day-totals b{color:var(--color-text);font-weight:650;font-variant-numeric:tabular-nums}.day-kcal{display:flex;align-items:center;gap:var(--space-2)}.day-kcal .progress{width:96px}.meals{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.meal-card{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:var(--space-4);align-items:start;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s}.meal-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-strong)}.meal-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center}.meal-breakfast .meal-icon{background:var(--color-secondary-soft);color:var(--color-secondary-text)}.meal-lunch .meal-icon{background:var(--color-primary-soft);color:var(--color-primary)}.meal-dinner .meal-icon{background:var(--color-info-soft);color:var(--color-info)}.meal-snack .meal-icon{background:var(--color-warning-soft);color:var(--color-warning-text)}.meal-body{min-width:0;display:flex;flex-direction:column;gap:6px}.meal-type{font-size:var(--fs-caption);font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:.05em}.meal-name{font-size:17px;font-weight:650;line-height:1.3;color:var(--color-text);overflow-wrap:anywhere}.meal-name:hover{color:var(--color-primary-text);text-decoration:none}.meal-name:after{content:"";position:absolute;inset:0;border-radius:var(--r-lg)}.meal-card{position:relative}.meal-macros{display:flex;flex-wrap:wrap;gap:6px}.macro-chip{display:inline-flex;align-items:center;gap:5px;padding:1px 8px;border-radius:var(--r-pill);background:var(--color-surface-2);font-size:13px;font-variant-numeric:tabular-nums;color:var(--color-text)}.macro-chip .macro-dot{width:7px;height:7px}.macro-chip abbr{text-decoration:none;color:var(--color-muted);font-weight:600}.macro-chip.macro-protein .macro-dot{background:var(--color-protein)}.macro-chip.macro-fat .macro-dot{background:var(--color-fat)}.macro-chip.macro-carbs .macro-dot{background:var(--color-carbs)}.meal-side{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.meal-kcal{font-size:18px;font-weight:700}.meal-kcal small{font-size:var(--fs-caption);font-weight:500;color:var(--color-muted)}.meal-cost{font-size:var(--fs-small);font-weight:600;color:var(--color-secondary-text)}.meal-servings{font-size:var(--fs-caption);color:var(--color-muted)}.plan-header-meta{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.plan-header-meta .dot{color:var(--color-subtle)}.plan-actions{display:flex;gap:var(--space-2);align-items:center}.days{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-4)}.instructions{white-space:pre-line;margin:0}.shopping{list-style:none;margin:0;padding:0}.shopping li{display:grid;grid-template-columns:minmax(0,1fr) auto 110px;gap:var(--space-3);align-items:center;min-height:48px;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.shopping li:last-child{border-bottom:none}.shopping label{display:flex;align-items:center;gap:var(--space-3);cursor:pointer}.shopping input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-primary);flex:none}.shopping li.checked .shopping-name{text-decoration:line-through;color:var(--color-muted)}.plain{margin:0;padding-left:18px}.choices{border:1px solid var(--color-border);border-radius:var(--r-md);padding:var(--space-3) var(--space-4);margin:0;display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.choices legend{font-weight:600;font-size:var(--fs-small);padding:0 4px}.choice{display:flex;align-items:flex-start;gap:var(--space-2);cursor:pointer}.choice input{margin-top:4px;accent-color:var(--color-primary);flex:none}.choice span{min-width:0;overflow-wrap:anywhere}.picker{display:flex;flex-direction:column;gap:6px}.chips{display:flex;flex-wrap:wrap;gap:6px;min-height:28px;align-items:center}.chip{background:var(--color-primary-soft);color:var(--color-primary-hover);border-radius:var(--r-pill);padding:2px 4px 2px 10px;font-size:var(--fs-small);display:inline-flex;align-items:center;gap:2px}.chip button{border:none;background:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;padding:0 4px;min-width:24px;min-height:24px}.picker-list{list-style:none;margin:0;padding:4px;border:1px solid var(--color-border);border-radius:var(--r-md);max-height:220px;overflow-y:auto}.picker-list button{width:100%;text-align:left;border:none;background:none;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer}.picker-list button:hover:not(:disabled){background:var(--color-surface-2)}.picker-list button:disabled{color:var(--color-muted);cursor:not-allowed}.recipe{display:flex;flex-direction:column;gap:var(--space-8);min-width:0}.recipe-back{margin:calc(-1 * var(--space-4)) 0 calc(-1 * var(--space-5)) calc(-1 * var(--space-3))}.recipe-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:var(--space-8);align-items:center}.recipe-cover{margin:0;aspect-ratio:4 / 3;border-radius:var(--r-xl);overflow:hidden;background:var(--color-surface-2);box-shadow:var(--shadow-md);position:relative}.recipe-figure img{display:block;width:100%;height:100%;object-fit:cover}.recipe-figure{display:flex;flex-direction:column}.recipe-cover.recipe-figure img{flex:1;min-height:0}.recipe-image-fallback{display:grid;place-items:center;color:var(--color-primary);background:radial-gradient(circle at 30% 25%,var(--color-secondary-soft),transparent 55%),linear-gradient(135deg,var(--color-primary-soft),var(--color-surface-2))}.image-credit{margin:0;padding:6px var(--space-3);font-size:11px;line-height:1.35;color:var(--color-muted);background:var(--color-surface);overflow-wrap:anywhere}.recipe-cover .image-credit{position:absolute;left:0;right:0;bottom:0;background:#ffffffdb}.recipe-head{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.recipe-meals{margin:0;font-size:var(--fs-caption);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-secondary-text)}.recipe-title{font-size:36px;line-height:1.15;letter-spacing:-.02em;overflow-wrap:anywhere}.recipe-facts{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.recipe-facts li{display:flex;align-items:center;gap:var(--space-2);min-width:0;padding:10px var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-md);font-size:var(--fs-small);color:var(--color-muted)}.recipe-facts li .icon{color:var(--color-primary)}.recipe-facts li>span{display:flex;flex-direction:column;min-width:0;line-height:1.25;font-size:13px}.recipe-facts b{color:var(--color-text);font-weight:650;font-size:15px;font-variant-numeric:tabular-nums}.recipe-hero:has(>.recipe-image-fallback){grid-template-columns:auto minmax(0,1fr);align-items:start;gap:var(--space-6)}.recipe-cover.recipe-image-fallback{width:112px;aspect-ratio:1;border-radius:var(--r-xl);box-shadow:var(--shadow-sm)}.recipe-cover.recipe-image-fallback .icon{width:48px;height:48px}.recipe-macros{display:flex;flex-wrap:wrap;gap:var(--space-2)}.recipe-macros .macro-chip{padding:4px 12px;font-size:var(--fs-small);background:var(--color-surface);border:1px solid var(--color-border)}.recipe-head .sticky-actions{margin-top:var(--space-2)}.recipe-body{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:var(--space-8);align-items:start}.recipe-section{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.recipe-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.recipe-ingredients{position:sticky;top:calc(var(--topbar-h) + var(--space-5));padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.ingredient-list{list-style:none;margin:0;padding:0}.ingredient-list li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px dashed var(--color-border);min-height:44px}.ingredient-list li:last-child{border-bottom:none}.ingredient-name{display:flex;flex-direction:column;min-width:0;font-weight:550;overflow-wrap:anywhere}.ingredient-note{font-size:var(--fs-caption);font-weight:500;color:var(--color-muted)}.ingredient-list li.is-staple .ingredient-name{color:var(--color-muted);font-weight:500}.ingredient-qty{flex:none;font-variant-numeric:tabular-nums;font-weight:650;white-space:nowrap}.step-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-6)}.step{display:grid;grid-template-columns:56px minmax(0,1fr);gap:var(--space-4)}.step-number{font-size:28px;font-weight:750;line-height:1;color:var(--color-secondary);font-variant-numeric:tabular-nums;padding-top:4px}.step-content{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border)}.step:last-child .step-content{border-bottom:none;padding-bottom:0}.step-image{margin:0;aspect-ratio:16 / 9;border-radius:var(--r-lg);overflow:hidden;background:var(--color-surface-2)}.step-image img{flex:1;min-height:0}.step-title{font-size:var(--fs-h3)}.step-text{margin:0;font-size:17px;line-height:1.6;white-space:pre-line;overflow-wrap:anywhere}body.cooking-open{overflow:hidden}.cooking-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:var(--space-6);background:#1419168c}.cooking{width:min(760px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);outline:none}.cooking-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.cooking-recipe{font-weight:650;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cooking-progress .progress-track{border-radius:0}.cooking-body{flex:1;min-height:0;overflow-y:auto;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.cooking-count{margin:0;font-size:var(--fs-small);font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--color-secondary-text)}.cooking-image{margin:0;aspect-ratio:16 / 10;border-radius:var(--r-lg);overflow:hidden;background:var(--color-surface-2);flex:none}.cooking-image img{flex:1;min-height:0}.cooking-title{font-size:26px;overflow-wrap:anywhere}.cooking-text{margin:0;font-size:20px;line-height:1.55;white-space:pre-line;overflow-wrap:anywhere}.cooking-nav{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:var(--space-3);padding:var(--space-4) var(--space-5) calc(var(--space-4) + env(safe-area-inset-bottom,0px));background:var(--color-surface);border-top:1px solid var(--color-border)}.cooking-nav .btn{width:100%;min-width:0}.cooking-done{align-items:center;justify-content:center;text-align:center;padding:var(--space-12) var(--space-6)}.cooking-done-icon{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--color-primary-soft);color:var(--color-primary)}@media(max-width:1023px){.plan-summary,.meals{grid-template-columns:minmax(0,1fr)}.topbar-inner{gap:var(--space-4)}.nav-link{padding:0 10px}.recipe-hero{grid-template-columns:minmax(0,1fr);gap:var(--space-6)}.recipe-body{grid-template-columns:minmax(0,1fr)}.recipe-ingredients{position:static}}@media(max-width:767px){:root{--fs-display: 32px;--fs-h1: 24px;--fs-h2: 20px;--fs-key: 28px;--topbar-h: 56px}.topbar-inner{padding:0 var(--space-4)}.content{padding:var(--space-5) var(--space-4) calc(var(--bottomnav-h) + env(safe-area-inset-bottom,0px) + var(--space-6))}.content.no-bottomnav{padding-bottom:var(--space-10)}.nav-app{position:fixed;left:0;right:0;bottom:0;z-index:25;gap:0;justify-content:space-around;height:calc(var(--bottomnav-h) + env(safe-area-inset-bottom,0px));padding:0 4px env(safe-area-inset-bottom,0px);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:0 -4px 16px #1419160d}.nav-app .nav-link{flex:1 1 0;min-width:0;height:100%;padding:6px 2px;flex-direction:column;justify-content:center;gap:3px;border-radius:0;font-size:11px;font-weight:550;background:none}.nav-app .nav-link .icon{width:24px;height:24px}.nav-app .nav-link:hover{background:none}.nav-app .nav-link.active{background:none;color:var(--color-primary-text);font-weight:650}.nav-app .nav-link.active .icon{background:var(--color-primary-soft);border-radius:var(--r-pill);width:48px;padding:2px 12px;box-sizing:border-box}.nav-app .nav-link-mobile{display:flex}.nav-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-trigger .icon{display:none}.menu-trigger{padding:0 4px}.nav-guest .nav-link{height:40px}.grid-2,.days{grid-template-columns:minmax(0,1fr)}.card{padding:var(--space-4)}.nutrition{gap:var(--space-4)}.macro-row{grid-template-columns:minmax(0,1fr) auto;gap:4px var(--space-2)}.macro-row .progress{grid-column:1 / -1;order:3}.nutrition .ring{width:112px;height:112px}.ring-value{font-size:21px}.plan-header-meta .dot{display:none}.issues-head{flex-wrap:wrap;row-gap:0}.issues-title{flex:1 1 calc(100% - 40px)}.issues-toggle{margin-left:26px}.sticky-actions>.btn:not(.btn-icon) .icon{display:none}.meal-card{grid-template-columns:44px minmax(0,1fr);gap:var(--space-3);padding:var(--space-3) var(--space-4)}.meal-icon{width:44px;height:44px;border-radius:12px}.meal-side{grid-column:2;flex-direction:row;align-items:baseline;gap:var(--space-3);justify-content:flex-start;flex-wrap:wrap}.meal-kcal{font-size:16px}.day-kcal .progress{width:72px}.page-header{align-items:flex-start}.sticky-actions{position:fixed;left:var(--space-3);right:var(--space-3);z-index:15;bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom,0px) + var(--space-2));padding:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);flex-wrap:nowrap}.sticky-actions>.btn:not(.btn-icon){flex:1 1 0;min-width:0;padding:0 var(--space-2);white-space:normal;text-align:center;line-height:1.15;font-size:14px;gap:6px}.sticky-actions .menu-panel{top:auto;bottom:calc(100% + 8px)}.content:has(.sticky-actions){padding-bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom,0px) + 96px)}.page-actions:has(.sticky-actions){display:contents}.shopping li{grid-template-columns:minmax(0,1fr) auto}.shopping li .muted{grid-column:1 / -1;order:3;font-size:13px;padding-left:32px}.recipe{gap:var(--space-6)}.recipe-back{margin:calc(-1 * var(--space-2)) 0 calc(-1 * var(--space-4)) calc(-1 * var(--space-3))}.recipe-hero{gap:var(--space-5)}.recipe-cover{margin:0 calc(-1 * var(--space-4));border-radius:0;box-shadow:none;aspect-ratio:4 / 3}.recipe-hero:has(>.recipe-image-fallback){grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.recipe-cover.recipe-image-fallback{margin:0;width:72px;border-radius:var(--r-lg)}.recipe-cover.recipe-image-fallback .icon{width:36px;height:36px}.recipe-title{font-size:28px}.recipe-facts li{padding:var(--space-2) var(--space-3)}.recipe-ingredients{padding:var(--space-4)}.step{grid-template-columns:40px minmax(0,1fr);gap:var(--space-3)}.step-number{font-size:22px}.step-text{font-size:16px}.cooking-backdrop{padding:0}.cooking{width:100%;height:100%;border-radius:0}.cooking-body{padding:var(--space-5) var(--space-4)}.cooking-image{margin:0 calc(-1 * var(--space-4));border-radius:0}.cooking-title{font-size:24px}.cooking-text{font-size:18px}.cooking-nav{padding-left:var(--space-4);padding-right:var(--space-4)}}
