*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-width:1px}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--c-primary: #2E1A3A;--c-primary-hover: #45294F;--c-accent: #F7C948;--c-accent-hover: #E9B62E;--c-bg: #F6F4EF;--c-surface: #FFFFFF;--c-surface-2: #EEEBE4;--c-text: #221A2B;--c-text-muted: #655D6D;--c-border: #E4E0D8;--c-on-primary: #F7C948;--c-success-bg: #E5F0E0;--c-success-text: #2F6B28;--c-pill-bg: #FBF0CF;--c-pill-text: #2E1A3A;--c-danger: #A8352A;--c-danger-bg: #F8E3DF;--c-warning: #7A5A12;--c-warning-bg: #F8EDCD;--c-primary-tint: #ECE6EF;--c-shadow: 34 26 43;--c-print-mat: #d9d4ca;--c-border-strong: #857E8D;--c-accent-soft: #FBF0CF;--c-on-accent: #2E1A3A;--day-quick: #4A8C3F;--day-quick-ink: #3B7332;--day-quick-tint: #E3EEDF;--day-standard: #3A6FB0;--day-standard-ink: #2F5E98;--day-standard-tint: #DFE8F3;--day-project: #C8452C;--day-project-ink: #A8361F;--day-project-tint: #F6E0DB;--day-saved: #7B4FA8;--day-saved-ink: #6A4296;--day-saved-tint: #EBE2F3;--day-skip: #C7C2BA;--day-skip-ink: #6B6570;--day-skip-tint: #EFEDE9;--font-display: "Sora", system-ui, sans-serif;--font-serif: "Sora", system-ui, sans-serif;--font-sans: "Source Sans 3", system-ui, -apple-system, sans-serif;--t-display-size: 30px;--t-display-lh: 36px;--t-display-w: 700;--t-h1-size: 26px;--t-h1-lh: 32px;--t-h1-w: 700;--t-h2-size: 20px;--t-h2-lh: 26px;--t-h2-w: 700;--t-recipe-size: 24px;--t-recipe-lh: 30px;--t-recipe-w: 700;--t-h3-size: 16px;--t-h3-lh: 22px;--t-h3-w: 600;--t-bodylg-size: 16px;--t-bodylg-lh: 24px;--t-bodylg-w: 400;--t-body-size: 15px;--t-body-lh: 22px;--t-body-w: 400;--t-bodysm-size: 13.5px;--t-bodysm-lh: 18px;--t-bodysm-w: 400;--t-label-size: 12.5px;--t-label-lh: 16px;--t-label-w: 700;--t-label-tracking: .05em;--t-caption-size: 12.5px;--t-caption-lh: 16px;--t-caption-w: 600;--t-rating-size: 18px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-pill: 999px;--elev-0: none;--elev-1: 0 1px 2px rgba(var(--c-shadow) / .06), 0 1px 3px rgba(var(--c-shadow) / .05);--elev-2: 0 4px 14px rgba(var(--c-shadow) / .09), 0 2px 6px rgba(var(--c-shadow) / .05);--elev-primary: 0 2px 8px rgba(46, 26, 58, .28);--tap-min: 44px;--tabbar-height: 56px;--tabbar-total: calc(var(--tabbar-height) + env(safe-area-inset-bottom, 0px));--focus-ring: 0 0 0 2px #F6F4EF, 0 0 0 4px #2E1A3A}@media (min-width: 1024px){:root{--t-h1-size: 30px;--t-h1-lh: 36px;--t-recipe-size: 30px;--t-recipe-lh: 36px}}html,body,#root{height:100%;margin:0}html,body{overflow-x:hidden}body{background:var(--c-bg)}.btn-primary,.btn-secondary,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-min);padding:0 var(--space-4);border-radius:var(--radius-pill);font-family:var(--font-sans);font-size:var(--t-body-size);font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap;box-sizing:border-box;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform 80ms}.btn-primary{background:var(--c-primary);color:var(--c-on-primary);border:1px solid transparent;box-shadow:var(--elev-primary)}.btn-primary:hover{background:var(--c-primary-hover)}.btn-primary:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn-secondary{background:var(--c-surface);color:var(--c-primary);border:1px solid var(--c-border-strong);box-shadow:none}.btn-secondary:hover{background:var(--c-surface-2);border-color:var(--c-primary)}.btn-secondary:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn-ghost{background:transparent;color:var(--c-text-muted);border:1px solid var(--c-border-strong);box-shadow:none}.btn-ghost:hover{background:var(--c-surface-2);color:var(--c-text)}.btn-ghost:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn-primary:active,.btn-secondary:active,.btn-ghost:active{transform:translateY(1px)}.btn-primary:disabled,.btn-secondary:disabled,.btn-ghost:disabled,.btn-primary[disabled],.btn-secondary[disabled],.btn-ghost[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none;transform:none}.btn--sm{min-height:36px;padding:0 var(--space-3);font-size:var(--t-bodysm-size);border-radius:var(--radius-pill)}.btn--block{width:100%}.btn-icon{width:var(--tap-min);min-width:var(--tap-min);padding:0}input:not([type=checkbox]):not([type=radio]):focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--focus-ring)}.switch{position:relative;flex-shrink:0;width:var(--tap-min);height:var(--tap-min);box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;margin:0;cursor:pointer;border-radius:var(--radius-pill)}.switch:before{content:"";display:block;width:38px;height:22px;border-radius:var(--radius-pill);background:var(--c-border-strong);transition:background .12s}.switch[aria-checked=true]:before{background:var(--c-primary)}.switch-knob{position:absolute;left:50%;top:50%;width:16px;height:16px;border-radius:50%;background:var(--c-surface);box-shadow:var(--elev-1);transform:translate(calc(-50% - 8px),-50%);transition:transform .12s,background .12s}.switch[aria-checked=true] .switch-knob{background:var(--c-accent);transform:translate(calc(-50% + 8px),-50%)}.switch:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media (prefers-reduced-motion: reduce){.switch:before,.switch-knob{transition:none}}.opt-row{display:flex;flex:1 1 auto;min-width:0;align-items:flex-start;gap:var(--space-2);cursor:pointer;font-size:var(--t-bodysm-size);line-height:1.45}.opt-row .switch{margin:-11px 0 -11px -3px}.opt-row-text{min-width:0;padding-top:1px}.list-check{display:grid;place-items:center;box-sizing:border-box;width:20px;height:20px;flex-shrink:0;border:2px solid var(--c-border-strong);border-radius:var(--radius-xs);background:var(--c-surface);color:var(--c-primary);transition:background .12s,border-color .12s}.list-check[data-on=true]{background:var(--c-accent);border-color:var(--c-accent)}.chip-x{position:relative;display:grid;place-items:center;flex-shrink:0;width:16px;height:16px;margin:0 -2px 0 0;padding:0;background:none;border:none;border-radius:var(--radius-pill);color:inherit;cursor:pointer}.chip-x:after{content:"";position:absolute;left:50%;top:50%;width:var(--tap-min);height:var(--tap-min);transform:translate(-50%,-50%)}.chip-x:focus-visible{outline:none;box-shadow:var(--focus-ring)}.tp-share-desktop{padding:0 var(--space-2);min-height:30px}.app-shell>*{min-width:0}.app-shell:not(.app-shell--desktop){padding-bottom:calc(var(--tabbar-total) + var(--space-4))!important}.phone-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;box-sizing:border-box;height:var(--tabbar-total);padding-bottom:env(safe-area-inset-bottom,0px);display:flex;align-items:stretch;background:var(--c-surface);border-top:1px solid var(--c-border)}.phone-tab{flex:1 1 0;min-width:var(--tap-min);min-height:var(--tap-min);box-sizing:border-box;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;cursor:pointer;font-family:var(--font-sans);font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:600;color:var(--c-text-muted)}.phone-tab:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}.phone-tab-chip{display:grid;place-items:center;width:52px;height:32px;border-radius:var(--radius-sm);background:transparent;color:inherit}.phone-tab[aria-current=page]{color:var(--c-primary);font-weight:700}.phone-tab[aria-current=page] .phone-tab-chip{background:var(--c-accent);color:var(--c-on-accent)}.phone-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);box-sizing:border-box;min-height:48px;margin-bottom:var(--space-3)}.phone-header-brand{display:flex;align-items:center;gap:var(--space-2);min-width:0}.phone-header-name{font-family:var(--font-display);font-size:17px;line-height:24px;font-weight:700;letter-spacing:-.01em;color:var(--c-text);white-space:nowrap}.phone-header-name span{color:var(--c-primary)}.phone-account{position:relative;flex-shrink:0}.phone-account-btn{display:grid;place-items:center;width:var(--tap-min);height:var(--tap-min);padding:0;background:none;border:none;cursor:pointer;border-radius:var(--radius-pill)}.phone-account-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.phone-account-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;box-sizing:border-box;background:var(--c-primary-tint);border:1px solid var(--c-border);color:var(--c-primary);font-family:var(--font-display);font-size:15px;font-weight:700;text-transform:uppercase}.phone-menu{position:absolute;right:0;top:calc(100% + var(--space-1));z-index:60;box-sizing:border-box;width:260px;max-width:calc(100vw - 2 * var(--space-4));padding:var(--space-2);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);box-shadow:var(--elev-2)}.phone-menu-email{padding:var(--space-2) var(--space-3) 0;font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phone-menu-beta{padding:0 var(--space-3) var(--space-2);font-size:var(--t-caption-size);line-height:var(--t-caption-lh);font-weight:var(--t-caption-w);color:var(--c-text-muted);border-bottom:1px solid var(--c-border);margin-bottom:var(--space-1)}.phone-menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;box-sizing:border-box;min-height:var(--tap-min);padding:0 var(--space-3);background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;text-align:left;text-decoration:none;font-family:var(--font-sans);font-size:var(--t-body-size);font-weight:600;color:var(--c-text)}.phone-menu-item:hover{background:var(--c-surface-2)}.phone-menu-item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.phone-menu-item svg{flex-shrink:0;color:var(--c-text-muted)}.phone-menu-item--danger,.phone-menu-item--danger svg{color:var(--c-danger)}.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.page-title-text{min-width:0}.page-title-eyebrow{margin:0 0 var(--space-1);font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text-muted)}.page-title-h1{margin:0;font-family:var(--font-display);font-size:var(--t-h1-size);line-height:var(--t-h1-lh);font-weight:var(--t-h1-w);letter-spacing:-.01em;color:var(--c-text);overflow-wrap:anywhere}.page-title-action{flex-shrink:0}.seg-switch{display:flex;gap:var(--space-1);box-sizing:border-box;width:100%;padding:var(--space-1);margin-bottom:var(--space-4);background:var(--c-surface-2);border-radius:var(--radius-pill)}.seg-btn{flex:1 1 0;min-width:0;box-sizing:border-box;height:var(--tap-min);padding:0 var(--space-3);border:none;border-radius:var(--radius-pill);background:transparent;color:var(--c-text-muted);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-sans);font-size:var(--t-body-size);font-weight:700}.seg-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.seg-btn[aria-pressed=true]{background:var(--c-primary);color:var(--c-on-primary)}.phone-action{position:fixed;left:var(--space-4);right:var(--space-4);bottom:calc(var(--tabbar-total) + var(--space-3));z-index:40}.phone-action .btn-primary{box-shadow:var(--elev-2);min-height:52px;border-radius:var(--radius-pill);width:100%}.has-phone-action{padding-bottom:calc(52px + var(--space-3) + var(--space-3))}@media (max-width: 1023px){input,select,textarea{font-size:16px!important}}.setup-view>*{min-width:0}.setup-view input,.setup-view select,.setup-view textarea{min-width:0;max-width:100%;box-sizing:border-box}.dish{box-sizing:border-box;flex-shrink:0;background:var(--c-surface-2);border-radius:var(--radius-md)}.dish>svg{display:block;width:100%;height:100%}@media (min-width: 1024px){.app-shell--desktop{display:grid;grid-template-columns:228px minmax(0,1fr);align-items:start}.app-sidebar{position:sticky;top:0;height:100vh;box-sizing:border-box;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5) var(--space-3);background:var(--c-surface);border-right:1px solid var(--c-border)}.sb-brand{display:flex;align-items:center;gap:12px;min-width:0}.sb-nav{display:flex;flex-direction:column;gap:4px;margin-top:var(--space-4)}.sb-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding-top:var(--space-3);border-top:1px solid var(--c-border)}.sb-email{font-size:12px;color:var(--c-text-muted);padding:0 var(--space-3) var(--space-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-item{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;min-height:var(--tap-min);padding:0 var(--space-3);border:none;border-radius:var(--radius-md);background:transparent;color:var(--c-text);text-decoration:none;text-align:left;font-family:var(--font-sans);font-size:15px;font-weight:600;cursor:pointer}.sb-item:hover{background:var(--c-surface-2)}.sb-item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.sb-item[aria-current=page]{background:var(--c-primary);color:var(--c-on-primary)}.sb-item[aria-current=page]:hover{background:var(--c-primary-hover)}.sb-item svg{flex-shrink:0}.sb-item-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-item-count{margin-left:auto;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;opacity:.85}.sb-item--quiet{color:var(--c-text-muted);font-weight:500;font-size:14px}.sb-item--danger{color:var(--c-danger)}.app-content{width:100%;max-width:1280px;min-width:0;box-sizing:border-box;margin:0;padding:var(--space-7)}.app-shell--desktop main{max-width:880px}.app-shell--desktop main[data-tab=plan],.app-shell--desktop main[data-tab=list],.app-shell--desktop main[data-tab=setup],.app-shell--desktop main[data-tab=today],.app-shell--desktop main[data-tab=rotation]{max-width:1100px}.setup-desktop{display:grid;gap:var(--space-6);align-items:start;grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"main rail"}.setup-main{grid-area:main;display:grid;gap:var(--space-4);min-width:0}.setup-main>*,.dayrows>*{min-width:0}.setup-rail{grid-area:rail;position:sticky;top:var(--space-6);display:grid;gap:var(--space-4);max-height:calc(100vh - 48px);overflow-y:auto}.setup-divider{border:0;border-top:1px solid var(--c-border);margin:var(--space-4) 0}.setup-opt{margin-top:var(--space-4)}.week-fields{display:grid;gap:var(--space-3);align-items:start;grid-template-columns:minmax(0,1.25fr) minmax(0,.6fr) minmax(0,.5fr) minmax(0,1.5fr)}.week-fields>*{min-width:0}.week-fields .loc-field[data-editing=true]{grid-column:1 / -1}.week-fields>div>input,.week-fields>div>select{width:100%;height:42px}.loc-box{display:flex;align-items:center;gap:var(--space-2);width:100%;height:42px}.loc-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loc-change{flex-shrink:0;height:34px;padding:0 var(--space-3);border:none;border-radius:var(--radius-pill);background:transparent;cursor:pointer;font-family:var(--font-sans);font-size:var(--t-bodysm-size);font-weight:700;color:var(--c-primary)}.loc-change:hover{background:var(--c-surface)}.loc-change:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media (max-width: 1279px){.week-fields{grid-template-columns:minmax(0,1.25fr) minmax(0,.6fr) minmax(0,.5fr)}.week-fields .loc-field{grid-column:1 / -1}}.dayrows{display:grid;gap:var(--space-2);margin-top:var(--space-3)}.dayrow{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.dayrow[data-skip=true]{opacity:.8}.dayrow-head{display:flex;align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap}.dayrow-toggle{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:var(--space-2);min-height:36px;background:transparent;border:none;padding:0;cursor:pointer;text-align:left;color:var(--c-text);font-family:var(--font-sans)}.dayrow-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.dayrow-toggle svg{flex-shrink:0;color:var(--c-text-muted)}.dayrow-name{font-family:var(--font-display);font-size:14.5px;font-weight:600;white-space:nowrap}.dayrow-hint{flex:1 1 0;min-width:0;font-size:var(--t-caption-size);color:var(--c-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dayrow-ctl{display:flex;align-items:center;gap:var(--space-3);margin-left:auto}.dayrow-fx{font-size:var(--t-caption-size);font-weight:600;color:var(--c-text-muted);white-space:nowrap}.dayrow-fx--muted{font-weight:400;font-style:italic}.dayrow-body{margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--c-border)}.list-desktop{display:grid;gap:var(--space-6);align-items:start;grid-template-columns:minmax(0,1fr) 340px;grid-template-areas:"main rail"}.list-main{grid-area:main;min-width:0}.list-rail{grid-area:rail;position:sticky;top:var(--space-6);max-height:calc(100vh - 48px);overflow-y:auto}.list-cats{-moz-columns:2 340px;columns:2 340px;-moz-column-gap:var(--space-4);column-gap:var(--space-4)}@media (min-width: 1280px) and (max-width: 1439px){.list-desktop{grid-template-columns:minmax(0,1fr) 264px}}.list-cats>*{-moz-column-break-inside:avoid;break-inside:avoid;margin-bottom:var(--space-4)}.list-cats>*:last-child{margin-bottom:0}.ld-progress{margin:0 0 var(--space-2);font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text-muted)}.ld-progress strong{font-weight:700;color:var(--c-text)}.ld-bar{height:8px;margin:0 0 var(--space-5);overflow:hidden;background:var(--c-surface-2);border-radius:var(--radius-pill)}.ld-bar-fill{height:100%;background:var(--c-primary);border-radius:var(--radius-pill);transition:width .16s ease-out}.ld-group{min-width:0}.ld-cat-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-2);padding:0 var(--space-1)}.ld-cat-name{margin:0;font-family:var(--font-sans);font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text-muted)}.ld-cat-count{flex-shrink:0;font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);font-variant-numeric:tabular-nums;color:var(--c-text-muted)}.ld-cat{box-sizing:border-box;overflow:hidden;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md)}.ld-row{display:flex;flex-wrap:wrap;align-items:center;-moz-column-gap:var(--space-1);column-gap:var(--space-1);box-sizing:border-box;min-height:52px;padding:0 var(--space-1) 0 0}.ld-row+.ld-row{border-top:1px solid var(--c-border)}.ld-hit,.ld-x,.ld-have{box-sizing:border-box;min-height:44px;margin:0;padding:0;background:transparent;border:none;cursor:pointer;font-family:var(--font-sans)}.ld-hit{display:grid;place-items:center;flex:0 0 44px;width:44px}.ld-x{display:grid;place-items:center;flex:0 0 44px;width:44px;margin-left:auto;color:var(--c-text-muted)}.ld-hit:focus-visible,.ld-x:focus-visible,.ld-have:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px;border-radius:var(--radius-sm)}.ld-name{display:flex;align-items:center;flex:1 1 14ch;min-width:0;padding:var(--space-1) 0}.ld-name-text{min-width:0;overflow-wrap:anywhere}.ld-name>:not(.ld-name-text){flex-shrink:0;white-space:nowrap}.ld-end{display:flex;align-items:center;flex:0 1 auto;min-width:0;max-width:calc(100% - 44px - var(--space-1));margin-left:auto}.ld-qty{position:relative;flex:0 1 auto;min-width:0;text-align:right}.ld-amount{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);font-variant-numeric:tabular-nums;color:var(--c-text-muted)}.ld-pack{position:absolute;top:100%;right:0;z-index:1;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s;font-size:var(--t-caption-size);line-height:var(--t-caption-lh);color:var(--c-text-muted)}.ld-row:hover .ld-pack,.ld-row:focus-within .ld-pack{opacity:1}.ld-have{min-width:72px;padding:0 var(--space-2);flex:0 0 auto;text-align:right;white-space:nowrap;font-size:var(--t-bodysm-size);font-weight:400;color:var(--c-text-muted)}.ld-have[aria-pressed=true]{font-weight:700;color:var(--c-primary)}.ld-actions{box-sizing:border-box;overflow:hidden;margin-bottom:var(--space-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg)}.ld-action{display:flex;align-items:center;gap:var(--space-3);box-sizing:border-box;width:100%;min-height:64px;margin:0;padding:var(--space-3) var(--space-4);background:transparent;border:none;text-align:left;cursor:pointer;font-family:var(--font-sans);color:var(--c-text)}.ld-action+.ld-action{border-top:1px solid var(--c-border)}.ld-action:hover{background:var(--c-surface-2)}.ld-action:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px}.ld-action-icon{display:grid;place-items:center;flex-shrink:0;width:36px;height:36px;border-radius:var(--radius-md);background:var(--c-accent-soft);color:var(--c-primary)}.ld-action-text{display:flex;flex-direction:column;min-width:0}.ld-action-title{font-size:var(--t-body-size);line-height:var(--t-body-lh);font-weight:700}.ld-action-desc{font-size:var(--t-caption-size);line-height:var(--t-caption-lh);color:var(--c-text-muted)}.meals-desktop{display:grid;gap:var(--space-5);min-width:0}.stat-row{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-8)}.wk-strip{display:grid;gap:var(--space-2)}.wk-cell{display:flex;flex-direction:column;gap:6px;min-width:0;min-height:176px;box-sizing:border-box;text-align:left;padding:10px;border:none;border-top:4px solid var(--day-skip);border-radius:var(--radius-sm);background:var(--day-skip-tint);color:var(--c-text);font-family:var(--font-sans);cursor:pointer}.wk-cell-day{display:flex;justify-content:space-between;align-items:center;gap:var(--space-1);font-size:var(--t-caption-size);line-height:var(--t-caption-lh);font-weight:700;color:var(--c-text-muted)}.wk-cell-date{font-weight:400}.wk-cell .dish{background:var(--c-surface);border-radius:var(--radius-sm)}.wk-cell-name{font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);font-weight:700;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.wk-cell-skipped{flex:1 1 auto;display:flex;align-items:center;font-size:var(--t-bodysm-size);font-weight:600;font-style:italic;color:var(--day-skip-ink)}.wk-cell-meta{font-size:var(--t-caption-size);line-height:var(--t-caption-lh);color:var(--c-text-muted)}.wk-cell .meal-chip{align-self:flex-start;margin-top:auto}.wk-cell[aria-pressed=true]{outline:2px solid var(--c-primary);outline-offset:-2px}.wk-cell:focus-visible{box-shadow:var(--focus-ring)}.wk-cell:focus-visible:not([aria-pressed=true]){outline:none}.meal-detail{box-sizing:border-box;padding:var(--space-6);background:var(--c-surface);box-shadow:var(--elev-1);border-radius:var(--radius-lg)}.meal-detail-head{display:grid;grid-template-columns:160px minmax(0,1fr) auto;gap:var(--space-6);align-items:start}.meal-detail-id{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);min-width:0}.meal-detail-kicker{margin:0;font-size:var(--t-caption-size);line-height:1.4;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-text-muted)}.meal-detail-name{margin:0;font-family:var(--font-sans);font-size:var(--t-recipe-size);line-height:var(--t-recipe-lh);font-weight:var(--t-recipe-w);letter-spacing:-.01em;overflow-wrap:anywhere}.meal-detail-desc{margin:0;font-size:var(--t-bodysm-size);line-height:20px;color:var(--c-text-muted)}.meal-detail-actions{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2)}.meal-detail-arow{display:flex;align-items:center;gap:var(--space-2)}.meal-detail-cols{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-7);align-items:start;margin-top:var(--space-5)}@media (max-width: 1239px){.wk-cell{padding:8px}.wk-cell .meal-chip{display:block;max-width:100%;box-sizing:border-box;padding:2px 6px;overflow:hidden;text-overflow:ellipsis}.wk-cell .meal-chip svg{display:none}.meal-detail-head{grid-template-columns:160px minmax(0,1fr)}.meal-detail-actions{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start}.meal-detail-arow{display:contents}}.today-hero{display:grid;grid-template-columns:160px minmax(0,1fr);gap:var(--space-6);align-items:start;box-sizing:border-box;padding:var(--space-5);background:var(--c-surface);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.today-hero-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);min-width:0}.today-hero-body .today-meta-row{align-self:stretch}.today-hero-name{margin:0;font-family:var(--font-sans);font-size:var(--t-recipe-size);line-height:var(--t-recipe-lh);font-weight:var(--t-recipe-w);letter-spacing:-.01em;color:var(--c-text);overflow-wrap:anywhere}.today-cols{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-6);align-items:start}.today-gather{position:sticky;top:var(--space-6);max-height:calc(100vh - 48px);overflow-y:auto;box-sizing:border-box;min-width:0;padding:var(--space-5);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg)}.today-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);box-sizing:border-box;width:100%;max-width:520px;padding:var(--space-7);background:var(--c-surface);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.rbox-cols{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-6);align-items:start}.rbox-left{display:grid;gap:var(--space-4);min-width:0}.rbox-rows{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2);min-width:0}.rbox-row{display:flex;flex-direction:column;gap:var(--space-2);box-sizing:border-box;padding:var(--space-3);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);font-family:var(--font-sans);color:var(--c-text)}.rbox-row:hover{border-color:var(--c-border-strong)}.rbox-row[data-selected=true]{outline:2px solid var(--c-primary);outline-offset:-2px}.rbox-row-select{display:flex;align-items:center;gap:var(--space-3);width:100%;min-width:0;padding:0;text-align:left;background:none;border:none;border-radius:var(--radius-sm);font:inherit;color:inherit;cursor:pointer}.rbox-row-select:focus-visible{outline:none;box-shadow:var(--focus-ring)}.rbox-row-text{display:flex;flex-direction:column;gap:2px;flex:1 1 0;min-width:0}.rbox-row-name{font-size:var(--t-body-size);line-height:20px;font-weight:700;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.rbox-row-meta{font-size:var(--t-caption-size);line-height:var(--t-caption-lh);color:var(--c-text-muted)}.rbox-row-actions{display:flex;align-items:center;gap:var(--space-2);margin-left:calc(64px + var(--space-3))}.rbox-right{min-width:0}.rbox-detail{position:sticky;top:var(--space-6);max-height:calc(100vh - 48px);overflow-y:auto;box-sizing:border-box}.rbox-media{display:flex;justify-content:center;background:var(--c-surface-2);border-bottom:1px solid var(--c-border)}.rbox-empty{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:160px;padding:var(--space-6);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg)}}@media (max-width: 1023px){.lp{min-width:0}.lp--bar{padding-bottom:calc(44px + 2 * var(--space-2) + var(--space-3))}.lp-bar{height:8px;margin:0 0 var(--space-4);overflow:hidden;background:var(--c-surface-2);border-radius:var(--radius-pill)}.lp-bar-fill{height:100%;background:var(--c-primary);border-radius:var(--radius-pill);transition:width .16s ease-out}.lp-cats{display:grid;gap:var(--space-4);min-width:0}.lp-group{min-width:0}.lp-cat-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-2);padding:0 var(--space-1)}.lp-cat-name{margin:0;font-family:var(--font-sans);font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text-muted)}.lp-cat-count{flex-shrink:0;font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);font-variant-numeric:tabular-nums;color:var(--c-text-muted)}.lp-cat{box-sizing:border-box;overflow:hidden;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md)}.lp-row{display:flex;align-items:center;gap:var(--space-1);box-sizing:border-box;min-height:48px;padding:0 var(--space-3) 0 0}.lp-row+.lp-row{border-top:1px solid var(--c-border)}.lp-hit{display:grid;place-items:center;flex-shrink:0;box-sizing:border-box;width:44px;height:44px;margin:0;padding:0;background:transparent;border:none;color:var(--c-text-muted);cursor:pointer}.lp-hit:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px;border-radius:var(--radius-sm)}.lp-empty{box-sizing:border-box;display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--space-6) var(--space-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg)}.lp-empty p{margin:0}.lp-actionbar{position:fixed;left:0;right:0;bottom:var(--tabbar-total);z-index:40;display:flex;gap:var(--space-2);box-sizing:border-box;padding:var(--space-2) var(--space-4);background:var(--c-bg);border-top:1px solid var(--c-border)}.lp-actionbar>button{flex:1 1 0;min-width:0;min-height:44px}}.hv-group{min-width:0;margin-top:var(--space-4)}.hv-head{display:flex;align-items:center;gap:var(--space-2);box-sizing:border-box;width:100%;min-height:var(--tap-min);margin:0;padding:0 var(--space-1);background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-sans);color:var(--c-text-muted)}.hv-head:focus-visible,.hv-undo:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px;border-radius:var(--radius-sm)}.hv-title{font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase}.hv-note{margin:0 0 var(--space-2);padding:0 var(--space-1);font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text-muted)}.hv-list{box-sizing:border-box;overflow:hidden;background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--radius-md)}.hv-row{display:flex;align-items:center;gap:var(--space-2);box-sizing:border-box;min-height:48px;padding:0 var(--space-1) 0 var(--space-3)}.hv-row+.hv-row{border-top:1px solid var(--c-border)}.hv-name{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;padding:var(--space-1) 0;font-family:var(--font-sans);font-size:var(--t-body-size);line-height:var(--t-body-lh);color:var(--c-text-muted)}.hv-qty{font-size:var(--t-bodysm-size)}.hv-tag{display:inline-block;margin-left:6px;padding:2px 7px;border:1px solid var(--c-border);border-radius:var(--radius-pill);font-size:var(--t-label-size);font-weight:700;color:var(--c-text-muted)}.hv-undo{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);flex:0 0 auto;box-sizing:border-box;min-width:var(--tap-min);min-height:var(--tap-min);margin:0;padding:0 var(--space-2);background:transparent;border:none;cursor:pointer;font-family:var(--font-sans);font-size:var(--t-bodysm-size);font-weight:700;color:var(--c-primary)}@media (max-width: 1023px){.pm{display:grid;gap:var(--space-3);min-width:0}.pm-stats{display:grid;gap:var(--space-3);box-sizing:border-box;padding:var(--space-4);background:var(--c-surface);border-radius:var(--radius-md);box-shadow:var(--elev-1)}.pm-stats .stat{min-width:0}.pm-strip{display:grid;gap:5px}.pm-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:56px;box-sizing:border-box;padding:6px 2px;border:none;border-top:4px solid var(--day-skip);border-radius:var(--radius-sm);background:var(--day-skip-tint);color:var(--c-text);font-family:var(--font-sans);text-align:center;cursor:pointer}.pm-cell-wd{max-width:100%;overflow:hidden;font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text-muted)}.pm-cell-date{font-family:var(--font-display);font-size:15px;line-height:20px;font-weight:700;font-variant-numeric:tabular-nums}.pm-cell[aria-pressed=true]{outline:2px solid var(--c-primary);outline-offset:-2px}.pm-cell:focus-visible{box-shadow:var(--focus-ring)}.pm-cell:focus-visible:not([aria-pressed=true]){outline:none}.pm-cards{display:grid;gap:var(--space-3);min-width:0}.pm-card{scroll-margin-top:var(--space-4);box-sizing:border-box;min-width:0;overflow:hidden;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.pm-card--skip{background:transparent;border-style:dashed;box-shadow:none}.pm-skip{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);box-sizing:border-box;min-height:var(--tap-min);padding:var(--space-2) var(--space-4)}.pm-skip-text{font-size:var(--t-bodysm-size);font-style:italic;color:var(--day-skip-ink)}.pm-open{display:block;width:100%;margin:0;padding:0;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.pm-open:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px}.pm-band{position:relative;display:flex;align-items:center;justify-content:center;height:120px;background:var(--c-surface-2)}.pm-band .day-chip{position:absolute;top:var(--space-3);left:var(--space-3)}.pm-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);box-sizing:border-box;min-width:0;padding:var(--space-3) var(--space-4)}.pm-body>*{max-width:100%}.pm-label{font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text-muted)}.pm-name{font-family:var(--font-sans);font-size:16px;line-height:21px;font-weight:700;color:var(--c-text);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.pm-meta{font-size:var(--t-caption-size);line-height:var(--t-caption-lh);color:var(--c-text-muted)}.pm-body .meal-chip{margin-top:var(--space-1)}.pm-card-actions{display:flex;gap:var(--space-2);padding:0 var(--space-4) var(--space-4)}.pm-card-actions>button{flex:1 1 0;min-width:0}.pm-detail{display:grid;gap:var(--space-3);min-width:0}.pm-back{justify-self:start}.pm-panel{display:flex;flex-direction:column;gap:var(--space-3);box-sizing:border-box;min-width:0;padding:var(--space-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.pm-media{display:flex;justify-content:center;padding:var(--space-4) 0;background:var(--c-surface-2);border-radius:var(--radius-md)}.pm-kicker{margin:0;font-size:var(--t-label-size);line-height:1.4;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-text-muted)}.pm-detail-name{margin:0;font-family:var(--font-sans);font-size:var(--t-recipe-size);line-height:var(--t-recipe-lh);font-weight:var(--t-recipe-w);letter-spacing:-.01em;overflow-wrap:anywhere}.pm-detail-desc{margin:0;font-size:var(--t-bodysm-size);line-height:20px;color:var(--c-text-muted)}.pm-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--c-border)}.pm-thumb{width:var(--tap-min);padding:0}.pm-share{display:inline-flex}}@media (max-width: 1023px){.ps-head{display:flex;align-items:center;gap:var(--space-2);min-width:0;min-height:var(--tap-min)}.ps-num,.ps-title{font-family:var(--font-display);font-size:var(--t-h3-size);line-height:var(--t-h3-lh);font-weight:700}.ps-num{flex-shrink:0;color:var(--c-primary)}.ps-title{flex:0 1 auto;min-width:0;margin:0;color:var(--c-text)}.ps-hint{margin-left:auto;flex-shrink:0;font-size:var(--t-caption-size);line-height:var(--t-caption-lh);font-weight:var(--t-caption-w);color:var(--c-text-muted)}.ps-edit{margin-left:auto;min-width:var(--tap-min);min-height:var(--tap-min);border-color:transparent;color:var(--c-primary)}.ps-summary{margin-top:var(--space-1)}.ps-summary-line{margin:0;font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text);overflow-wrap:anywhere}.ps-summary-line--muted{color:var(--c-text-muted)}.ps-divider{border:0;border-top:1px solid var(--c-border);margin:var(--space-4) 0}.pdr-list{display:grid;gap:var(--space-2);margin-top:var(--space-3)}.pdr{display:grid;grid-template-columns:4px minmax(0,1fr);overflow:hidden;background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--radius-sm)}.pdr[data-skip=true]{opacity:.8}.pdr-bar{background:var(--c-border-strong)}.pdr-bar--quick{background:var(--day-quick)}.pdr-bar--standard{background:var(--day-standard)}.pdr-bar--project{background:var(--day-project)}.pdr-bar--saved{background:var(--day-saved)}.pdr-bar--skip{background:var(--day-skip)}.pdr-content{min-width:0}.pdr-head{display:flex;align-items:center;gap:var(--space-3);width:100%;min-width:0;min-height:56px;box-sizing:border-box;padding:var(--space-2) var(--space-3);margin:0;background:transparent;border:none;text-align:left;color:var(--c-text);font-family:var(--font-sans)}button.pdr-head{cursor:pointer}button.pdr-head:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}.pdr-main{display:flex;flex-direction:column;gap:2px;flex:1 1 0;min-width:0}.pdr-line{display:flex;align-items:baseline;gap:var(--space-2);min-width:0}.pdr-day{flex-shrink:0;font-size:var(--t-label-size);line-height:var(--t-label-lh);font-weight:var(--t-label-w);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text);white-space:nowrap}.pdr-fx{min-width:0;font-size:var(--t-caption-size);line-height:var(--t-caption-lh);font-weight:400;color:var(--c-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdr-sub{font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdr-act{flex-shrink:0}.pdr-act--text{display:inline-flex;align-items:center;gap:2px;font-size:var(--t-caption-size);line-height:var(--t-caption-lh);font-weight:700;color:var(--c-text-muted)}.pdr-act--text svg{flex-shrink:0}button.pdr-act{min-height:var(--tap-min)}.pdr-body{margin:0 var(--space-3) var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--c-border)}.pdr-body select,.pdr-body input:not([type=checkbox]){min-height:var(--tap-min);box-sizing:border-box}.pdr-skip{margin-top:var(--space-2)}.pdr-skip button{min-height:var(--tap-min)}}@media (max-width: 1023px){.tp-head .page-title{margin-bottom:var(--space-3)}.tp-nav{display:flex;align-items:center;gap:var(--space-2);min-width:0;margin-bottom:var(--space-4)}.tp-btn,.tp-today{flex-shrink:0;box-sizing:border-box;min-height:var(--tap-min)}.tp-btn{width:var(--tap-min);padding:0}.tp-today{padding:0 var(--space-3);white-space:nowrap}.tp-print{display:none}.tp-share{margin-left:auto}.tp-wx{display:inline-flex;align-items:center;gap:var(--space-1);box-sizing:border-box;min-height:var(--tap-min);padding:0 var(--space-3);background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--radius-pill);font-family:var(--font-sans);font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text);white-space:nowrap}.tp-hero{display:grid;grid-template-columns:112px minmax(0,1fr);-moz-column-gap:var(--space-3);column-gap:var(--space-3);row-gap:var(--space-3);align-items:start;min-width:0}.tp-hero-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);min-width:0}.tp-hero-pills{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.tp-hero-name{margin:0;font-family:var(--font-sans);font-size:var(--t-recipe-size);line-height:var(--t-recipe-lh);font-weight:var(--t-recipe-w);letter-spacing:-.01em;color:var(--c-text);overflow-wrap:anywhere}.tp-hero-below{grid-column:1 / -1;min-width:0}.tp-hero-desc{margin:0;font-family:var(--font-sans);font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text-muted)}.tp-cols{display:grid;gap:var(--space-4);min-width:0}.tp-card{box-sizing:border-box;min-width:0;padding:var(--space-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.tp-footer{z-index:30;box-sizing:border-box;margin:0 calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4);background:var(--c-surface);border-top:1px solid var(--c-border)}@media (min-width: 480px){.tp-footer{margin:0 calc(-1 * var(--space-5));padding:var(--space-3) var(--space-5)}}.tp-star{display:grid;place-items:center;width:var(--tap-min);height:var(--tap-min);margin:0}.tp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);box-sizing:border-box;width:100%;padding:var(--space-6) var(--space-4);text-align:center;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg)}.tp-empty .btn-secondary,.tp-empty .btn-ghost{min-height:var(--tap-min);max-width:100%;height:auto;white-space:normal}.tr{display:grid;gap:var(--space-4);min-width:0}.tr>*{min-width:0}.tr .page-title{margin-bottom:var(--space-2)}.tr-sub{margin:0;font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text-muted)}.tr-empty{margin:var(--space-3) 0 0;font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);font-style:italic;color:var(--c-text-muted)}.tr-list{display:grid;gap:var(--space-3);margin:0;padding:0;list-style:none;min-width:0}.tr-row{box-sizing:border-box;min-width:0;padding:var(--space-3) var(--space-2) var(--space-2);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.tr-open{display:flex;align-items:center;gap:var(--space-3);width:100%;min-width:0;min-height:var(--tap-min);box-sizing:border-box;padding:0 var(--space-1);background:transparent;border:none;text-align:left;cursor:pointer;color:var(--c-text);font-family:var(--font-sans)}.tr-open:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-md)}.tr-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 0}.tr-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-size:var(--t-h3-size);line-height:var(--t-h3-lh);font-weight:700;color:var(--c-text)}.tr-meta{font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);color:var(--c-text-muted);overflow-wrap:anywhere}.tr-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0;margin-top:var(--space-1);min-width:0}.tr-stars,.tr-tools{display:flex;align-items:center}.tr-star{display:grid;place-items:center;box-sizing:border-box;width:var(--tap-min);height:var(--tap-min);padding:0;margin:0;background:transparent;border:none;cursor:pointer;font-size:var(--t-rating-size);line-height:1}.tr-share button,.tr-del{display:grid;place-items:center;box-sizing:border-box;min-width:var(--tap-min);min-height:var(--tap-min);padding:0;margin:0;background:transparent;border:none;cursor:pointer}.tr-detail article button{min-width:var(--tap-min);min-height:var(--tap-min)}.tr-back{display:inline-flex;align-items:center;min-height:var(--tap-min);margin-bottom:var(--space-3)}.tr-media{display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:180px;background:var(--c-surface-2);border-bottom:1px solid var(--c-border)}.tr-chips{display:grid;gap:var(--space-4);min-width:0}.tr-card{box-sizing:border-box;min-width:0;padding:var(--space-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.tr-card-title{margin:0;font-family:var(--font-sans);font-size:var(--t-h3-size);line-height:var(--t-h3-lh);font-weight:700;color:var(--c-text)}.mrf input,.mrf select{min-height:var(--tap-min);box-sizing:border-box}.mrf button{min-height:var(--tap-min);min-width:var(--tap-min)}}.day-chip{display:inline-block;flex-shrink:0;padding:2px 9px;border-radius:var(--radius-pill);font-size:var(--t-caption-size);line-height:16px;font-weight:700}.day-chip--quick{background:var(--day-quick-tint);color:var(--day-quick-ink)}.day-chip--project{background:var(--day-project-tint);color:var(--day-project-ink)}.day-chip--saved{background:var(--day-saved-tint);color:var(--day-saved-ink)}.day-chip--skip{background:var(--day-skip-tint);color:var(--day-skip-ink)}.stat{display:flex;flex-direction:column;gap:var(--space-1)}.stat-num{font-family:var(--font-display);font-size:var(--t-display-size);line-height:var(--t-display-lh);font-weight:var(--t-display-w);color:var(--c-text);font-variant-numeric:tabular-nums}.stat-num:after{content:"";display:block;width:28px;height:3px;margin-top:var(--space-1);border-radius:var(--radius-pill);background:var(--c-accent)}.stat-label{font-size:var(--t-caption-size);line-height:var(--t-caption-lh);font-weight:var(--t-caption-w);color:var(--c-text-muted)}.wk-cell--quick{background:var(--day-quick-tint);border-top-color:var(--day-quick)}.wk-cell--standard{background:var(--day-standard-tint);border-top-color:var(--day-standard)}.wk-cell--project{background:var(--day-project-tint);border-top-color:var(--day-project)}.wk-cell--saved{background:var(--day-saved-tint);border-top-color:var(--day-saved)}.wk-cell--skip{background:var(--day-skip-tint);border-top-color:var(--day-skip)}.meal-chip{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;padding:2px 9px;border-radius:var(--radius-pill);font-size:var(--t-caption-size);line-height:16px;font-weight:700;white-space:nowrap}.meal-chip--accepted{background:var(--c-success-bg);color:var(--c-success-text)}.meal-chip--pending{background:var(--c-pill-bg);color:var(--c-pill-text)}.meal-chip--loading{background:var(--c-warning-bg);color:var(--c-warning)}.meal-chip--error{background:var(--c-danger-bg);color:var(--c-danger)}.meal-chip--pinned{background:var(--c-primary);color:var(--c-on-primary)}.kso-row{display:flex;align-items:center;gap:var(--space-3);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);box-sizing:border-box}.kso-label{font-family:var(--font-sans);font-size:var(--t-bodysm-size);line-height:var(--t-bodysm-lh);font-weight:var(--t-bodysm-w);color:var(--c-text)}.kso-active{font-size:var(--t-caption-size);font-weight:var(--t-caption-w);color:var(--c-text-muted)}@media print{.print-only{background:none!important;padding:0!important}.print-sheet{box-shadow:none!important;border:none!important;border-radius:0!important;max-width:100%!important}}.offline-banner{top:calc(env(safe-area-inset-top,0px) + var(--space-3))}html[data-update-banner] .offline-banner{top:calc(env(safe-area-inset-top,0px) + var(--space-3) + var(--tap-min) + var(--space-4) + var(--space-3))}@media print{.offline-banner{display:none!important}}.mf-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.mf-chip{display:inline-flex;align-items:center;gap:4px;min-height:var(--tap-min);box-sizing:border-box;padding:0 var(--space-3);background:var(--c-surface);color:var(--c-text);border:1px solid var(--c-border-strong);border-radius:var(--radius-pill);font-family:var(--font-sans);font-size:var(--t-bodysm-size);cursor:pointer}.mf-chip[data-on=true]{background:var(--c-primary-tint);border-color:var(--c-primary);color:var(--c-text);font-weight:700}.mf-chip:focus-visible,.mf-star:focus-visible,.mf-retry:focus-visible{outline:none;box-shadow:var(--focus-ring)}.mf-note{display:grid;gap:4px;min-width:0}.mf-note-label{font-family:var(--font-sans);font-size:var(--t-bodysm-size);font-weight:600;color:var(--c-text)}.mf-note-input{box-sizing:border-box;width:100%;resize:vertical;padding:var(--space-2) var(--space-3);font:inherit;font-size:16px;color:var(--c-text);background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:var(--radius-md)}.mf-note-count{justify-self:end;font-family:var(--font-sans);font-size:var(--t-caption-size);color:var(--c-text-muted)}.mf-stars{display:flex;gap:4px}.mf-star{display:grid;place-items:center;width:var(--tap-min);height:var(--tap-min);background:none;border:none;padding:0;cursor:pointer}.mf-error{margin:0;font-family:var(--font-sans);font-size:var(--t-bodysm-size);color:var(--c-danger)}.mf-retry{min-height:var(--tap-min);min-width:var(--tap-min);padding:0 4px;background:none;border:none;font:inherit;font-weight:700;color:var(--c-danger);text-decoration:underline;cursor:pointer}.mf-more{display:grid;gap:var(--space-3)}.mf-footer-extra{display:grid;gap:var(--space-3);max-height:38vh;overflow-y:auto;overscroll-behavior:contain}.mf-card{box-sizing:border-box;min-width:0;display:grid;gap:var(--space-3);padding:var(--space-4);background:var(--c-surface);border:1px solid var(--c-border);border-left:3px solid var(--c-primary);border-radius:var(--radius-lg);box-shadow:var(--elev-1)}.mf-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.mf-card-title{margin:0;font-family:var(--font-display);font-size:var(--t-h3-size);line-height:var(--t-h3-lh);color:var(--c-text)}.mf-card-dish{margin:2px 0 0;font-family:var(--font-sans);font-size:var(--t-bodysm-size);color:var(--c-text-muted);overflow-wrap:anywhere}.mf-close{flex-shrink:0;min-width:var(--tap-min);min-height:var(--tap-min)}.mf-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.mf-choices button{min-height:var(--tap-min);padding:0 var(--space-2)}.mf-done{justify-self:stretch}.mf-line{display:flex;align-items:center;gap:var(--space-2);min-width:0;font-family:var(--font-sans);font-size:var(--t-caption-size);line-height:var(--t-caption-lh);color:var(--c-text-muted)}.mf-line-note{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mf-line-stars{flex-shrink:0;color:var(--c-warning);letter-spacing:1px}.v2m{display:grid;gap:var(--space-3);min-width:0}.v2m-progress{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);display:grid;gap:var(--space-2)}.v2m-progress-line{display:flex;align-items:center;gap:var(--space-2);font-size:var(--t-body-size);line-height:var(--t-body-lh);color:var(--c-text)}.v2m-bar{height:4px;border-radius:2px;background:var(--c-surface-2);overflow:hidden}.v2m-bar>div{height:100%;background:var(--c-accent);transition:width .3s ease}.v2m-feedback{margin:0;font-size:var(--t-bodysm-size);line-height:20px;color:var(--c-text-muted)}.v2m-fail{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;color:var(--c-danger);font-size:var(--t-bodysm-size)}.v2m-fail>span{display:inline-flex;align-items:center;gap:var(--space-2)}.v2m-bulk{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.v2m-count{font-size:var(--t-bodysm-size);color:var(--c-text-muted)}.v2m-bulk .btn-primary,.v2m-btn{min-height:var(--tap-min)}.v2m-rows{display:grid;gap:var(--space-2);min-width:0}.v2m-row{display:grid;gap:var(--space-2);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);min-width:0}.v2m-row--sel{border-color:var(--c-primary);box-shadow:var(--elev-1)}.v2m-main{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);min-height:var(--tap-min);width:100%;padding:0;margin:0;background:none;border:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.v2m-day{font-size:var(--t-caption-size);line-height:1.4;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-text-muted)}.v2m-name{font-size:var(--t-body-size);line-height:var(--t-body-lh);font-weight:600;overflow-wrap:anywhere}.v2m-dishes,.v2m-lc{font-size:var(--t-bodysm-size);line-height:20px;color:var(--c-text-muted);overflow-wrap:anywhere}.v2m-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.v2m-actions>button{flex:1 1 0;min-width:0}.v2m-note,.v2m-hint{margin:0;font-size:var(--t-bodysm-size);line-height:20px;color:var(--c-text-muted)}.v2m-err{margin:0;display:flex;gap:var(--space-2);align-items:center;font-size:var(--t-bodysm-size);color:var(--c-danger)}.v2m-sub{margin:var(--space-3) 0 0;font-size:var(--t-label-size);letter-spacing:var(--t-label-tracking);text-transform:uppercase;color:var(--c-text-muted)}.v2m-dishlist{margin:0;padding-left:var(--space-5);font-size:var(--t-body-size);line-height:var(--t-body-lh)}.v2m-detail{display:grid;gap:var(--space-2);align-content:start;min-width:0}.v2m-detail-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}@media (min-width: 1024px){.v2m-split{display:grid;grid-template-columns:minmax(320px,2fr) minmax(0,3fr);gap:var(--space-5);align-items:start}.v2m-split .v2m-detail{position:sticky;top:var(--space-4)}}.v2m button.btn--sm,.v2m button.btn-ghost[aria-label$=week]{min-height:var(--tap-min)!important;min-width:var(--tap-min)}
