@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap";:root{color-scheme:light dark;--surface-dim: #131313;--surface: #131313;--surface-container-lowest: #0e0e0e;--surface-container-low: #1c1b1b;--surface-container: #201f1f;--surface-container-high: #2a2a2a;--surface-container-highest: #353534;--surface-bright: #393939;--surface-variant: #353534;--surface-tint: #c8c6c3;--on-surface: #e5e2e1;--on-surface-variant: #c6c7c1;--on-background: #e5e2e1;--inverse-surface: #e5e2e1;--inverse-on-surface: #313030;--primary: #ffffff;--primary-container: #e4e2df;--primary-fixed: #e4e2df;--primary-fixed-dim: #c8c6c3;--on-primary: #30302f;--on-primary-container: #656462;--on-primary-fixed: #1b1c1a;--on-primary-fixed-variant: #474745;--inverse-primary: #5f5e5c;--secondary: #aad0aa;--secondary-container: #2f5033;--secondary-fixed: #c6edc5;--secondary-fixed-dim: #aad0aa;--on-secondary: #16371c;--on-secondary-container: #9cc29d;--on-secondary-fixed: #012109;--on-secondary-fixed-variant: #2d4e31;--tertiary: #ff8c42;--tertiary-container: #ffdbc9;--tertiary-fixed: #ffdbc9;--tertiary-fixed-dim: #ffb68d;--on-tertiary: #532200;--on-tertiary-container: #a44a00;--on-tertiary-fixed: #331200;--on-tertiary-fixed-variant: #763300;--error: #ffb4ab;--error-container: #93000a;--on-error: #690005;--on-error-container: #ffdad6;--outline: #90918c;--outline-variant: #454743;--text-primary: var(--on-surface);--text-secondary: var(--on-surface-variant);--text-muted: var(--outline);--text-disabled: #666;--text-hint: #aaa;--text-on-accent: var(--on-tertiary-fixed);--success: var(--secondary);--success-text: var(--secondary);--success-container: var(--secondary-container);--on-success: var(--on-secondary);--destructive: #e74c3c;--destructive-hover: rgba(231, 76, 60, .1);--destructive-text: #e74c3c;--accent: var(--tertiary);--accent-container: var(--tertiary-container);--on-accent: var(--on-tertiary-fixed);--interactive-hover: rgba(170, 208, 170, .1);--interactive-active: rgba(170, 208, 170, .15);--interactive-selected: rgba(170, 208, 170, .2);--interactive-muted: rgba(170, 208, 170, .05);--input-bg: var(--surface-container-lowest);--input-bg-focus: var(--surface-bright);--input-border: var(--outline-variant);--input-border-focus: var(--secondary);--input-placeholder: var(--text-muted);--card-bg: var(--surface-container);--card-bg-hover: var(--surface-container-high);--card-border: var(--outline-variant);--badge-bg: var(--surface-container-high);--badge-text: var(--on-surface-variant);--toast-bg: #1a1a2e;--toast-border: #2a2a40;--ledger-paper: #f4efe3;--ledger-paper-strong: #fff9ed;--ledger-panel: #efe4cf;--ledger-panel-warm: #f8f1e4;--ledger-line: #2c251c;--ledger-line-soft: #c9bda8;--ledger-ink: #231f1a;--ledger-muted: #756d61;--ledger-herb: #59754b;--ledger-herb-soft: #dce9d0;--ledger-paprika: #b94724;--ledger-citrus: #e4b64b;--ledger-blue-pencil: #315f83;--ledger-grid-line: rgba(35, 31, 26, .035);--ledger-grid-size: 1.75rem;--ledger-rule: 2px;--ledger-rule-heavy: 3px;--ledger-shadow: 0 8px 0 #231f1a;--font-family: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-wide: .04em;--tracking-wider: .05em;--tracking-widest: .2em;--text-display-lg: 3.5rem;--text-display-md: 2.75rem;--text-display-sm: 2.25rem;--text-headline-lg: 2rem;--text-headline-md: 1.75rem;--text-headline-sm: 1.5rem;--text-title-lg: 1.375rem;--text-title-md: 1rem;--text-title-sm: .875rem;--text-body-lg: 1rem;--text-body-md: .875rem;--text-body-sm: .75rem;--text-label-lg: .875rem;--text-label-md: .75rem;--text-label-sm: .6875rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--leading-none: 1;--leading-tight: 1.1;--leading-snug: 1.3;--leading-normal: 1.5;--leading-relaxed: 1.6;--space-0: 0;--space-px: 1px;--space-0_5: .125rem;--space-1: .25rem;--space-1_5: .375rem;--space-2: .5rem;--space-2_5: .625rem;--space-3: .75rem;--space-3_5: .875rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-10: 2.5rem;--space-11: 2.75rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--radius-xs: .25rem;--radius-sm: .375rem;--radius-default: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-pill: 2rem;--radius-full: 9999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .15);--shadow-md: 0 4px 16px rgba(0, 0, 0, .2);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .3);--shadow-xl: 0 8px 32px rgba(0, 0, 0, .4);--glow-accent: 0 0 40px rgba(255, 140, 66, .06);--glow-accent-strong: 0 0 40px rgba(255, 140, 66, .15);--color-primary: var(--secondary);--color-primary-dark: #2d4e31;--color-surface: var(--surface-container);--color-surface-hover: var(--surface-container-high);--color-border: var(--outline-variant)}@media(prefers-color-scheme:light){:root{--surface-dim: #e0d5cf;--surface: #fff8f6;--surface-container-lowest: #ffffff;--surface-container-low: #fef1eb;--surface-container: #fceae2;--surface-container-high: #f6e5dd;--surface-container-highest: #f0dfd7;--surface-bright: #fff8f6;--surface-variant: #f3ded4;--surface-tint: #9b4500;--on-surface: #221a15;--on-surface-variant: #52443c;--on-background: #221a15;--inverse-surface: #382e28;--inverse-on-surface: #ffede5;--primary: #9b4500;--primary-container: #ff8c42;--primary-fixed: #ffdbc9;--primary-fixed-dim: #ffb68d;--on-primary: #ffffff;--on-primary-container: #331200;--on-primary-fixed: #331200;--on-primary-fixed-variant: #763300;--inverse-primary: #ffb68d;--secondary: #446647;--secondary-container: #c6edc5;--secondary-fixed: #c6edc5;--secondary-fixed-dim: #aad0aa;--on-secondary: #ffffff;--on-secondary-container: #012109;--on-secondary-fixed: #012109;--on-secondary-fixed-variant: #2d4e31;--tertiary: #7a5732;--tertiary-container: #fad7c4;--tertiary-fixed: #ffdbc9;--tertiary-fixed-dim: #e6bd9e;--on-tertiary: #ffffff;--on-tertiary-container: #2c1600;--on-tertiary-fixed: #2c1600;--on-tertiary-fixed-variant: #5f401e;--error: #ba1a1a;--error-container: #ffdad6;--on-error: #ffffff;--on-error-container: #410002;--outline: #85746b;--outline-variant: #d7c3b8;--text-disabled: #999;--text-hint: #888;--destructive: #c0392b;--destructive-text: #c0392b;--interactive-hover: rgba(68, 102, 71, .08);--interactive-active: rgba(68, 102, 71, .12);--interactive-selected: rgba(68, 102, 71, .15);--interactive-muted: rgba(68, 102, 71, .04);--color-primary: var(--secondary);--color-primary-dark: #2d4e31;--color-surface: var(--surface-container);--color-surface-hover: var(--surface-container-high);--color-border: var(--outline-variant);--ledger-paper: #f4efe3;--ledger-paper-strong: #fff9ed;--ledger-panel: #efe4cf;--ledger-panel-warm: #f8f1e4;--ledger-line: #2c251c;--ledger-line-soft: #c9bda8;--ledger-ink: #231f1a;--ledger-muted: #756d61;--ledger-herb: #59754b;--ledger-herb-soft: #dce9d0;--ledger-paprika: #b94724;--ledger-citrus: #e4b64b;--ledger-blue-pencil: #315f83;--ledger-grid-line: rgba(35, 31, 26, .035);--ledger-grid-size: 1.75rem;--ledger-rule: 2px;--ledger-rule-heavy: 3px;--ledger-shadow: 0 8px 0 #231f1a}}.display-lg{font-size:var(--display-lg);font-weight:800;line-height:1.05;letter-spacing:var(--letter-spacing-tight)}.display-md{font-size:var(--display-md);font-weight:800;line-height:1.1;letter-spacing:var(--letter-spacing-tight)}.display-sm{font-size:var(--display-sm);font-weight:700;line-height:1.15;letter-spacing:var(--letter-spacing-tight)}.headline-lg{font-size:var(--headline-lg);font-weight:700;line-height:1.2}.headline-md{font-size:var(--headline-md);font-weight:700;line-height:1.25}.headline-sm{font-size:var(--headline-sm);font-weight:600;line-height:1.3}.title-lg{font-size:var(--title-lg);font-weight:600;line-height:1.3}.title-md{font-size:var(--title-md);font-weight:600;line-height:1.4}.title-sm{font-size:var(--title-sm);font-weight:600;line-height:1.4}.body-lg{font-size:var(--body-lg);font-weight:400;line-height:1.6}.body-md{font-size:var(--body-md);font-weight:400;line-height:1.5}.body-sm{font-size:var(--body-sm);font-weight:400;line-height:1.5}.label-lg{font-size:var(--label-lg);font-weight:600;line-height:1.4;letter-spacing:var(--letter-spacing-wide);text-transform:uppercase}.label-md{font-size:var(--label-md);font-weight:700;line-height:1.4;letter-spacing:var(--letter-spacing-wide);text-transform:uppercase}.label-sm{font-size:var(--label-sm);font-weight:700;line-height:1.4;letter-spacing:var(--letter-spacing-widest);text-transform:uppercase}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-family:var(--font-family);line-height:var(--leading-normal);font-weight:var(--weight-regular);color:var(--text-primary);background-color:var(--surface);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}a{font-weight:var(--weight-medium);color:var(--accent);text-decoration:inherit}a:hover{opacity:.85}h1{font-size:var(--text-display-sm);line-height:var(--leading-tight);margin-top:0}h2{font-size:var(--text-headline-md);line-height:var(--leading-snug)}button{border-radius:var(--radius-default);border:1px solid transparent;padding:var(--space-2_5) var(--space-5);font-size:var(--text-body-lg);font-weight:var(--weight-medium);font-family:inherit;background-color:var(--surface-container-lowest);cursor:pointer;transition:border-color .25s}button:hover{border-color:var(--secondary)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.app{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(var(--ledger-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ledger-grid-line) 1px,transparent 1px),var(--ledger-paper);background-size:var(--ledger-grid-size) var(--ledger-grid-size);color:var(--ledger-ink)}.app-header{position:sticky;top:0;z-index:40;display:grid;grid-template-columns:minmax(12rem,auto) minmax(0,1fr) auto;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-8);border-bottom:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-panel);color:var(--ledger-ink)}.app-logo{display:inline-grid;grid-template-columns:var(--space-12) auto;gap:var(--space-3);align-items:center;text-decoration:none;color:var(--ledger-ink)}.app-logo:hover{color:var(--ledger-ink);opacity:1}.app-logo__mark{display:inline-flex;align-items:center;justify-content:center;width:var(--space-12);aspect-ratio:1;border:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paprika);color:var(--primary);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal);box-shadow:var(--ledger-rule-heavy) var(--ledger-rule-heavy) 0 var(--ledger-line)}.app-logo__text{display:grid;gap:var(--space-0_5)}.app-logo__eyebrow{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);line-height:var(--leading-none)}.app-logo__name{color:var(--ledger-ink);font-size:var(--text-headline-sm);font-weight:var(--weight-extrabold);line-height:var(--leading-tight)}.app-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));justify-self:center;width:min(42rem,100%);border:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paper-strong)}.app-nav a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--space-11);padding:var(--space-2) var(--space-3);border-right:var(--ledger-rule) solid var(--ledger-line);border-radius:0;text-decoration:none;color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);transition:background .15s,color .15s}.app-nav a:last-child{border-right:0}.app-nav a:hover{color:var(--ledger-ink);background:var(--ledger-citrus);opacity:1}.app-nav a.active{color:var(--ledger-ink);background:var(--ledger-herb-soft)}.user-menu{display:grid;grid-template-columns:auto auto auto;align-items:center;justify-self:end;gap:var(--space-2);padding:var(--space-2);border:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paper-strong)}.feedback-button{display:flex;align-items:center;justify-content:center;width:var(--space-10);height:var(--space-10);padding:0;background:var(--ledger-paper);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;color:var(--ledger-ink);cursor:pointer;transition:color .15s,background .15s}.feedback-button:hover{color:var(--ledger-ink);background:var(--ledger-citrus)}.user-avatar{width:var(--space-10);height:var(--space-10);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;object-fit:cover}.user-avatar--fallback{display:flex;align-items:center;justify-content:center;background:var(--ledger-herb-soft);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-body-sm);font-weight:var(--weight-extrabold)}.user-sign-out{min-height:var(--space-10);padding:var(--space-2) var(--space-3);background:var(--ledger-paper);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);cursor:pointer;transition:color .15s,background .15s}.user-sign-out:hover{color:var(--ledger-ink);background:var(--ledger-citrus)}.app-main{flex:1;padding:var(--space-8)}@media(max-width:640px){.app-header{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4)}.app-logo{grid-template-columns:var(--space-10) auto;min-width:0;gap:var(--space-2)}.app-logo__mark{width:var(--space-10)}.app-logo__text{min-width:0}.app-logo__eyebrow{display:none}.app-logo__name{overflow:hidden;font-size:var(--text-title-md);text-overflow:clip;white-space:nowrap}.app-nav{grid-column:1 / -1;justify-self:stretch;width:100%;overflow-x:auto}.app-nav a{min-height:var(--space-11);padding:var(--space-2) var(--space-3);font-size:var(--text-label-sm)}.user-menu{grid-column:2;grid-row:1;grid-template-columns:auto auto auto;justify-self:end;gap:var(--space-1);padding:0;border:0;background:transparent}.user-sign-out{padding-inline:var(--space-2)}.app-main{padding:var(--space-4) var(--space-3)}}.page{max-width:1200px;margin:0 auto}.recipes-layout,.lists-layout{width:100%}.page-header{margin-bottom:var(--space-8)}.page-header p{color:var(--text-muted);margin-top:var(--space-1)}.back-link{display:inline-block;margin-bottom:var(--space-6);color:var(--text-muted);text-decoration:none;font-size:var(--text-body-md)}.back-link:hover{color:var(--accent)}.recipe-add-new-btn{padding:var(--space-2_5) var(--space-5);border:2px solid var(--ledger-line);border-radius:0;background:var(--ledger-paprika);color:var(--primary);font-family:var(--font-mono);font-size:var(--text-body-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal);cursor:pointer;white-space:nowrap;transition:transform .1s;box-shadow:none}.recipe-add-new-btn:hover{transform:scale(.98)}.recipe-card__add-btn{position:absolute;top:var(--space-3);left:var(--space-3);z-index:2;padding:var(--space-1_5) var(--space-4);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-body-sm);font-weight:var(--weight-extrabold);cursor:pointer;transition:background .15s,transform .1s;box-shadow:var(--ledger-rule) var(--ledger-rule) 0 var(--ledger-line)}.recipe-card__add-btn:hover{background:var(--ledger-citrus);transform:scale(1.02)}.recipe-card__add-btn--added{background:var(--success-container);color:var(--on-secondary-container);cursor:default}.recipe-card__add-btn--added:hover{background:var(--success-container);transform:none}.recipe-action-menu-wrapper{position:relative;align-self:flex-start;margin-top:var(--space-3)}.add-recipe-week-btn{padding:var(--space-2) var(--space-5);background:var(--accent);color:var(--on-accent);border:none;border-radius:var(--radius-default);font-size:var(--text-body-md);font-weight:var(--weight-semibold);cursor:pointer;transition:background .15s,transform .1s;box-shadow:var(--glow-accent)}.add-recipe-week-btn:hover:not(:disabled){transform:scale(.98)}.recipe-action-menu{position:absolute;top:calc(100% + var(--space-2));left:0;z-index:50;min-width:220px;background:var(--surface-container);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;display:flex;flex-direction:column}.recipe-action-menu__item{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-0_5);padding:var(--space-3) var(--space-4);border:none;background:none;cursor:pointer;text-align:left;transition:background .15s;color:var(--text-primary)}.recipe-action-menu__item:hover{background:var(--surface-container-high)}.recipe-action-menu__item--primary{background:var(--surface-container-low)}.recipe-action-menu__label{font-size:var(--text-body-md);font-weight:var(--weight-semibold)}.recipe-action-menu__hint{font-size:var(--text-label-sm);color:var(--text-muted)}.add-recipe-week-btn--added{background:var(--success-container);color:var(--on-secondary-container);border:none;cursor:default;opacity:.8}.add-all-row{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.add-all-row .add-all-btn{margin-bottom:0}.add-all-btn{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-0_5);padding:var(--space-2_5) var(--space-4);border-radius:var(--radius-default);border:none;background:var(--surface-container-high);color:var(--text-secondary);font-size:var(--text-body-md);font-weight:var(--weight-medium);cursor:pointer;margin-bottom:var(--space-4);transition:background .15s}.add-all-btn:hover{background:var(--surface-container-highest)}.add-all-btn--primary{background:var(--accent);color:var(--on-accent);box-shadow:var(--glow-accent)}.add-all-btn--primary:hover{opacity:.92;background:var(--accent)}.add-all-btn__label{font-weight:var(--weight-semibold)}.add-all-btn__hint{font-size:var(--text-label-sm);opacity:.7}.add-all-btn--primary .add-all-btn__hint{opacity:.8}@media(max-width:640px){.recipe-add-new-btn{width:100%;min-height:var(--space-11);display:flex;align-items:center;justify-content:center}.recipe-card__add-btn{min-height:var(--space-10);padding:var(--space-1_5) var(--space-3);font-size:var(--text-label-md)}.add-recipe-week-btn{min-height:var(--space-11);padding:var(--space-2_5) var(--space-6)}.recipe-action-menu__item{padding:var(--space-4) var(--space-5);min-height:var(--space-11)}.add-all-btn{min-height:var(--space-11);padding:var(--space-3) var(--space-4)}}.action-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-12);background:var(--surface-container-low);border-radius:var(--radius-xl);text-decoration:none;color:inherit;transition:transform .2s,background .2s;border:none}.action-card:hover{transform:translateY(-4px);background:var(--surface-container);color:inherit}.action-icon{font-size:var(--text-display-sm)}.action-label{font-size:var(--text-title-md);font-weight:var(--weight-medium)}@media(max-width:640px){.action-card{width:100%}}.recipe-card{position:relative;background:var(--ledger-paper-strong);border:2px solid var(--ledger-line);border-radius:var(--radius-xs);overflow:hidden;color:var(--ledger-ink);transition:transform .2s,background .15s;display:flex;flex-direction:column}.recipe-card:hover{transform:translateY(-4px);background:var(--ledger-panel-warm);box-shadow:var(--ledger-shadow);color:inherit}.recipe-card__link,.recipe-card__image-link,.recipe-card__body-link{text-decoration:none;color:inherit}.recipe-card__link,.recipe-card__body-link{flex:1}.recipe-card__image-link{display:block;height:100%}.recipe-card__link:hover,.recipe-card__image-link:hover,.recipe-card__body-link:hover{color:inherit}.recipe-card__image{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--ledger-panel);border-bottom:2px solid var(--ledger-line)}.recipe-card__image img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.recipe-card__image-link .recipe-placeholder{height:100%}.recipe-card:hover .recipe-card__image img{transform:scale(1.05)}.recipe-card__difficulty{position:absolute;top:var(--space-3);right:var(--space-3);padding:var(--space-1) var(--space-2_5);border:2px solid var(--ledger-line);border-radius:0;font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-semibold);text-transform:capitalize;letter-spacing:var(--tracking-normal)}.recipe-card__difficulty--easy{background:var(--success-container);color:var(--on-secondary-container)}.recipe-card__difficulty--medium{background:var(--accent);color:var(--on-accent)}.recipe-card__difficulty--hard{background:var(--error-container);color:var(--on-error-container)}.recipe-card__body{padding:var(--space-3)}.recipe-card__title{font-size:var(--text-title-lg);font-weight:var(--weight-bold);margin:0 0 var(--space-1_5);line-height:var(--leading-snug)}.recipe-card__desc{color:var(--ledger-muted);font-size:var(--text-body-md);margin:0 0 var(--space-3);line-height:var(--leading-snug);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card__meta{display:flex;gap:var(--space-4);font-size:var(--text-body-sm);color:var(--ledger-muted);font-family:var(--font-mono);margin-bottom:var(--space-2)}.recipe-card__tags{display:flex;gap:var(--space-1_5);flex-wrap:wrap}@media(max-width:640px){.recipe-card__image{aspect-ratio:2 / 1}.recipe-card__body{padding:var(--space-2_5) var(--space-3) var(--space-3)}.recipe-card__desc{-webkit-line-clamp:1;margin-bottom:var(--space-2)}}.list-card{background:var(--surface-container);border:none;border-radius:var(--radius-xl);padding:var(--space-5);text-decoration:none;color:inherit;transition:transform .2s,background .15s;display:block}.list-card:hover{transform:translateY(-2px);background:var(--surface-container-high);box-shadow:var(--glow-accent);color:inherit}.list-card__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.list-card__header h3{margin:0;font-size:var(--text-title-lg)}.list-card__date{color:var(--text-muted);font-size:var(--text-body-sm)}.list-card__progress{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.list-card__progress-bar{flex:1;height:6px;background:var(--card-border);border-radius:3px;overflow:hidden}.list-card__progress-bar--lg{height:8px;border-radius:4px}.list-card__progress-fill{height:100%;background:var(--secondary);border-radius:inherit;transition:width .3s}.list-card__progress-text{font-size:var(--text-body-sm);color:var(--text-muted);white-space:nowrap}.list-card__preview{display:flex;flex-wrap:wrap;gap:var(--space-1_5)}.list-card__preview-item{font-size:var(--text-label-md);padding:var(--space-0_5) var(--space-2);background:var(--card-bg-hover);border-radius:var(--radius-xs);color:var(--text-hint)}.list-card__preview-more{font-size:var(--text-label-md);color:var(--text-disabled);padding:var(--space-0_5) var(--space-2)}.recipe-list-controls{display:flex;gap:var(--space-3);margin-bottom:var(--space-6);align-items:center}.recipe-list-controls__count{font-size:var(--text-label-md);font-weight:var(--weight-medium);color:var(--text-muted);white-space:nowrap}.recipe-search__input{flex:1;padding:var(--space-2_5) var(--space-4);border:none;border-bottom:2px solid var(--outline-variant);border-radius:0;background:var(--input-bg);color:inherit;font-size:var(--text-body-md);font-family:inherit;transition:border-color .15s;height:var(--space-10)}.recipe-search__input::placeholder{color:var(--input-placeholder)}.recipe-search__input:focus{outline:none;border-bottom-color:var(--input-border-focus)}.recipe-filter__select{padding:var(--space-2_5) var(--space-3);border:none;border-bottom:2px solid var(--outline-variant);border-radius:0;background:var(--input-bg);color:inherit;font-size:var(--text-body-md);font-family:inherit;cursor:pointer;appearance:auto;transition:border-color .15s;height:var(--space-10)}.recipe-filter__select:focus{outline:none;border-bottom-color:var(--input-border-focus)}@media(max-width:640px){.recipe-list-controls{flex-wrap:wrap}.recipe-filter__select{flex:0 0 auto;min-width:120px}.recipe-search__input{flex:1 1 150px;min-width:0}.recipe-list-controls__count{display:none}}.recipe-add-menu-wrapper{position:relative}.recipe-add-menu{position:absolute;top:100%;right:0;margin-top:var(--space-1_5);background:var(--ledger-paper-strong);border:2px solid var(--ledger-line);border-radius:0;box-shadow:var(--ledger-shadow);z-index:50;overflow:hidden;min-width:180px}.recipe-add-menu__item{display:block;width:100%;padding:var(--space-2_5) var(--space-4);background:none;border:none;border-bottom:1px solid var(--ledger-line-soft);text-align:left;font-family:var(--font-mono);font-size:var(--text-body-md);font-weight:var(--weight-bold);color:var(--ledger-ink);cursor:pointer;transition:background .15s}.recipe-add-menu__item:hover{background:var(--ledger-citrus)}@media(max-width:640px){.recipe-add-menu-wrapper{width:100%;order:-1}.recipe-add-menu{left:0;right:0;min-width:auto}.recipe-add-menu__item{padding:var(--space-3) var(--space-4);min-height:var(--space-11);display:flex;align-items:center}}.confirm-modal{background:var(--surface-container);border:none;border-radius:var(--radius-xl);width:90%;max-width:360px;padding:var(--space-5);box-shadow:var(--glow-accent-strong);display:flex;flex-direction:column;gap:var(--space-3)}.confirm-modal__title{margin:0;font-size:var(--text-title-md);font-weight:var(--weight-semibold)}.confirm-modal__message{margin:0;font-size:var(--text-body-md);color:var(--text-secondary);line-height:var(--leading-relaxed)}.confirm-modal__actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}.confirm-modal__btn{padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius-default);font-size:var(--text-body-md);font-weight:var(--weight-medium);cursor:pointer;transition:background .15s}.confirm-modal__btn--cancel{background:var(--surface-container-high);color:var(--text-primary)}.confirm-modal__btn--cancel:hover{background:var(--surface-container-highest)}.confirm-modal__btn--confirm{background:var(--accent);color:var(--on-accent)}.confirm-modal__btn--confirm:hover{filter:brightness(1.1)}.confirm-modal__btn--destructive{background:var(--destructive);color:#fff}.confirm-modal__btn--destructive:hover{filter:brightness(1.1)}@media(max-width:640px){.confirm-modal{width:95%;border-radius:var(--radius-lg)}.confirm-modal__btn{min-height:var(--space-11);padding:var(--space-2_5) var(--space-5)}}.picker-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:color-mix(in srgb,var(--ledger-line) 46%,transparent);z-index:100}.picker-modal{display:flex;width:min(100%,30rem);max-width:480px;max-height:min(42rem,calc(100dvh - var(--space-8)));flex-direction:column;overflow:hidden;border:var(--ledger-rule-heavy) solid var(--ledger-line);border-radius:var(--radius-xs);background:var(--ledger-paper-strong);color:var(--ledger-ink);box-shadow:var(--ledger-shadow)}.picker-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border-bottom:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-panel)}.picker-header h3{margin:0;color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal)}.picker-close{display:inline-flex;align-items:center;justify-content:center;width:var(--space-8);height:var(--space-8);padding:0;border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);font-size:var(--text-title-md);line-height:var(--leading-none);cursor:pointer}.picker-close:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.picker-close:disabled{cursor:not-allowed;opacity:.55}.picker-meal-type{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paper)}.picker-type-btn{min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);cursor:pointer;text-transform:capitalize;transition:background .15s,color .15s}.picker-type-btn:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.picker-type-btn--active{background:var(--ledger-herb-soft);color:var(--ledger-ink)}.picker-ingredients-toggle{padding:var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paper)}.picker-toggle-label{display:flex;align-items:center;gap:var(--space-2);color:var(--ledger-ink);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-body-md);font-weight:var(--weight-bold)}.picker-toggle-checkbox{width:1.1rem;height:1.1rem;accent-color:var(--ledger-herb);cursor:pointer}.picker-toggle-text{-webkit-user-select:none;user-select:none}.picker-add-actions{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3)}.picker-add-action-btn{width:100%;padding:var(--space-3) var(--space-4);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-body-md);font-weight:var(--weight-extrabold);cursor:pointer;transition:background .15s}.picker-add-action-btn:hover{background:var(--ledger-citrus)}.picker-add-action-btn--primary{background:var(--ledger-paprika);color:var(--primary)}.picker-day-prompt{font-size:var(--text-body-md);color:var(--ledger-muted);margin:0;text-align:center}.picker-note{display:flex;gap:var(--space-2);align-items:center;padding:var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line-soft)}.picker-note__input{flex:1;padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);font-size:var(--text-body-md)}.picker-note__input::placeholder{color:var(--ledger-muted);font-style:italic}.picker-note__input:focus{outline:var(--ledger-rule) solid var(--ledger-citrus);outline-offset:var(--space-0_5)}.picker-note__add{padding:var(--space-1_5) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paprika);color:var(--primary);font-family:var(--font-mono);font-size:var(--text-body-sm);font-weight:var(--weight-extrabold);cursor:pointer;white-space:nowrap}.picker-note__add:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.picker-search{padding:var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line)}.picker-search__input{width:100%;padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);font-size:var(--text-body-md)}.picker-search__input::placeholder{color:var(--ledger-muted)}.picker-search__input:focus{outline:var(--ledger-rule) solid var(--ledger-citrus);outline-offset:var(--space-0_5)}.picker-recipes{flex:1;min-height:0;list-style:none;margin:0;padding:var(--space-2);overflow-y:auto;background:var(--ledger-paper-strong)}.picker-recipes--empty{display:grid;gap:var(--space-1);padding:var(--space-8) var(--space-5);text-align:center}.picker-recipes--empty strong{color:var(--ledger-ink);font-size:var(--text-body-lg)}.picker-recipes--empty span{color:var(--ledger-muted);font-size:var(--text-body-md)}.picker-recipe{display:flex;flex-direction:column;gap:var(--space-0_5);width:100%;padding:var(--space-3);border:0;border-bottom:var(--ledger-rule) solid var(--ledger-line-soft);border-radius:0;background:transparent;color:var(--ledger-ink);text-align:left;cursor:pointer;transition:background .15s}.picker-recipe:hover{background:var(--ledger-herb-soft)}.picker-recipe__title{font-size:var(--text-body-lg);font-weight:var(--weight-bold)}.picker-recipe__meta{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-md)}.new-recipe-modal{background:var(--surface-container);border:none;border-radius:var(--radius-xl);width:90%;max-width:720px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--glow-accent-strong)}.new-recipe-modal form{display:flex;flex-direction:column;max-height:85vh}.new-recipe-modal__body{padding:var(--space-5);overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:var(--space-4)}.new-recipe-modal__footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);background:var(--surface-container-high);border-radius:0 0 var(--radius-xl) var(--radius-xl)}.new-recipe-field{display:flex;flex-direction:column;gap:var(--space-1_5)}.new-recipe-field--sm{flex:1;min-width:0}.new-recipe-label{font-size:var(--text-label-md);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--text-secondary)}.new-recipe-input{padding:var(--space-2) var(--space-2_5);border:none;border-bottom:2px solid var(--outline-variant);border-radius:0;background:var(--input-bg);color:inherit;font-size:var(--text-body-md);font-family:inherit}.new-recipe-input:focus{outline:none;border-bottom-color:var(--input-border-focus)}.new-recipe-textarea{resize:vertical;min-height:var(--space-11)}.new-recipe-meta-row{display:flex;gap:var(--space-3)}.new-recipe-tags{display:flex;gap:var(--space-1_5);flex-wrap:wrap}.new-recipe-ing-row{display:flex;gap:var(--space-1_5);align-items:center;margin-bottom:var(--space-1_5)}.new-recipe-input--amount{flex:0 0 55px}.new-recipe-input--unit{flex:0 0 65px}.new-recipe-input--name{flex:1}.new-recipe-input--cat{flex:0 0 90px;font-size:var(--text-body-sm)}.new-recipe-step-row{display:flex;gap:var(--space-2);align-items:flex-start;margin-bottom:var(--space-1_5)}.new-recipe-step-num{flex-shrink:0;width:var(--space-6);height:var(--space-6);border-radius:var(--radius-full);background:var(--secondary);color:var(--on-secondary);display:flex;align-items:center;justify-content:center;font-size:var(--text-label-md);font-weight:var(--weight-semibold);margin-top:var(--space-1_5)}.new-recipe-step-row .new-recipe-textarea{flex:1}.new-recipe-remove-btn{width:var(--space-6);height:var(--space-6);border-radius:var(--radius-full);border:none;background:transparent;color:var(--text-muted);font-size:var(--text-body-lg);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0}.new-recipe-remove-btn:hover{color:var(--destructive-text);background:var(--destructive-hover)}.new-recipe-add-row-btn{align-self:flex-start;padding:var(--space-1) var(--space-3);border:none;border-radius:var(--radius-sm);background:var(--surface-container-high);color:var(--accent);font-size:var(--text-body-sm);font-weight:var(--weight-medium);cursor:pointer;margin-top:var(--space-1)}.new-recipe-add-row-btn:hover{background:var(--surface-container-highest)}.new-recipe-cancel-btn{padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius-default);background:var(--surface-container-low);color:inherit;font-size:var(--text-body-md);cursor:pointer}.new-recipe-cancel-btn:hover{background:var(--card-bg-hover)}.new-recipe-save-btn{padding:var(--space-2) var(--space-5);border:none;border-radius:var(--radius-default);background:var(--accent);color:var(--on-accent);font-size:var(--text-body-md);font-weight:var(--weight-semibold);cursor:pointer}.new-recipe-save-btn:hover:not(:disabled){filter:brightness(1.1)}.new-recipe-save-btn:disabled{opacity:.4;cursor:not-allowed}.new-recipe-modal:has(.recipe-ledger-form){background:var(--ledger-paper-strong);border:3px solid var(--ledger-line);border-radius:var(--radius-sm);box-shadow:var(--ledger-shadow);color:var(--ledger-ink)}.new-recipe-modal:has(.recipe-ledger-form) .picker-header{border-bottom:3px solid var(--ledger-line);background:var(--ledger-panel)}.new-recipe-modal:has(.recipe-ledger-form) .picker-header h3{font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal);text-transform:none}.recipe-ledger-form{display:flex;flex-direction:column;min-height:0;max-height:85vh}.recipe-ledger-form__body{display:flex;flex:1;flex-direction:column;gap:var(--space-3);overflow-y:auto;padding:var(--space-4)}.recipe-ledger-status{display:grid;grid-template-columns:1fr auto;gap:var(--space-3);align-items:center;padding:var(--space-3);border:2px solid var(--ledger-line);background:var(--ledger-herb-soft)}.recipe-ledger-status strong{display:block;color:var(--ledger-ink);font-size:var(--text-title-md);line-height:var(--leading-snug)}.recipe-ledger-status span,.recipe-ledger-actions span{font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-bold);text-transform:none}.recipe-ledger-status__chip{padding:var(--space-1) var(--space-2);background:var(--ledger-blue-pencil);color:var(--primary)}.recipe-ledger-saving,.recipe-ledger-error{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2);align-items:center;padding:var(--space-3);border:2px solid var(--ledger-line);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-bold)}.recipe-ledger-saving{background:var(--ledger-citrus);color:var(--ledger-ink)}.recipe-ledger-saving__spinner{width:var(--space-4);height:var(--space-4);border:2px solid color-mix(in srgb,var(--ledger-ink) 28%,transparent);border-top-color:var(--ledger-ink);border-radius:var(--radius-full);animation:recipe-ledger-spin .7s linear infinite}.recipe-ledger-error{background:var(--destructive-hover);color:var(--ledger-ink)}.recipe-ledger-error strong{grid-column:1 / -1;color:var(--destructive-text);font-size:var(--text-body-md)}.recipe-ledger-error span{grid-column:1 / -1;color:var(--ledger-ink)}@keyframes recipe-ledger-spin{to{transform:rotate(360deg)}}.recipe-ledger-help{margin:0;color:var(--ledger-muted);font-size:var(--text-body-md);line-height:var(--leading-normal)}.recipe-ledger-jump{display:grid;grid-template-columns:repeat(3,1fr);border:2px solid var(--ledger-line)}.recipe-ledger-jump button{min-height:var(--space-10);padding:0 var(--space-3);border:0;border-right:2px solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);text-transform:uppercase}.recipe-ledger-jump button:focus,.recipe-ledger-jump button:focus-visible{border-radius:0;outline:3px solid var(--ledger-citrus);outline-offset:-3px}.recipe-ledger-jump button:last-child{border-right:0}.recipe-ledger-jump__item--active{border-radius:0!important;background:var(--ledger-citrus)!important}.recipe-ledger-section{margin:0;padding:0;border:2px solid var(--ledger-line);background:var(--ledger-paper)}.recipe-ledger-section legend{width:100%;padding:var(--space-2) var(--space-3);border-bottom:2px solid var(--ledger-line);background:var(--ledger-panel);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);text-transform:uppercase}.recipe-ledger-fields{display:grid;grid-template-columns:repeat(4,1fr)}.recipe-ledger-field{display:grid;gap:var(--space-1);padding:var(--space-3);border-right:1px solid var(--ledger-line-soft);border-bottom:1px solid var(--ledger-line-soft)}.recipe-ledger-field--wide{grid-column:1 / -1;border-right:0}.recipe-ledger-field label{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);text-transform:uppercase}.recipe-ledger-field input,.recipe-ledger-field textarea,.recipe-ledger-field select,.recipe-ledger-ingredients input,.recipe-ledger-ingredients select,.recipe-ledger-steps textarea{width:100%;padding:var(--space-1) 0;border:0;border-bottom:2px solid var(--ledger-line);border-radius:0;background:transparent;color:var(--ledger-ink);font:inherit;font-weight:var(--weight-semibold)}.recipe-ledger-field input:focus,.recipe-ledger-field textarea:focus,.recipe-ledger-field select:focus,.recipe-ledger-ingredients input:focus,.recipe-ledger-ingredients select:focus,.recipe-ledger-steps textarea:focus{outline:3px solid var(--ledger-citrus);outline-offset:2px}.recipe-ledger-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3)}.recipe-ledger-tags button,.recipe-ledger-add-row,.recipe-ledger-row-remove,.recipe-ledger-actions button{border:2px solid var(--ledger-line);border-radius:0;font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);text-transform:uppercase}.recipe-ledger-tags button,.recipe-ledger-add-row,.recipe-ledger-row-remove{background:var(--ledger-paper-strong);color:var(--ledger-ink)}.recipe-ledger-tag--active{background:var(--ledger-herb-soft)!important}.recipe-ledger-ingredients,.recipe-ledger-steps{margin:0;padding:0;list-style:none}.recipe-ledger-ingredients li{display:grid;grid-template-columns:minmax(3rem,.5fr) minmax(3.5rem,.6fr) minmax(10rem,2fr) minmax(6rem,.9fr) var(--space-8);gap:var(--space-2);align-items:end;padding:var(--space-3);border-bottom:1px solid var(--ledger-line-soft)}.recipe-ledger-steps li{display:grid;grid-template-columns:var(--space-8) 1fr var(--space-8);gap:var(--space-2);align-items:start;padding:var(--space-3);border-bottom:1px solid var(--ledger-line-soft)}.recipe-ledger-steps li>span{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);padding-top:var(--space-2)}.recipe-ledger-row-remove{width:var(--space-8);height:var(--space-8);padding:0}.recipe-ledger-add-row{margin:var(--space-3);padding:var(--space-2) var(--space-3)}.recipe-ledger-source{margin:0;color:var(--ledger-muted);font-size:var(--text-body-sm)}.recipe-ledger-source a{color:var(--ledger-paprika)}.recipe-ledger-actions{position:sticky;bottom:0;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:3px solid var(--ledger-line);background:var(--ledger-ink);color:var(--ledger-paper-strong)}.recipe-ledger-actions span{margin-right:auto}.recipe-ledger-actions button{min-height:var(--space-10);padding:var(--space-2) var(--space-3)}.recipe-ledger-actions__secondary{background:transparent;color:var(--ledger-paper-strong);border-color:var(--ledger-paper-strong)!important}.recipe-ledger-actions__primary{background:var(--ledger-paprika);color:var(--ledger-ink)}.recipe-ledger-actions__primary:disabled{opacity:.5;cursor:not-allowed}.recipe-ledger-tags button:disabled,.recipe-ledger-add-row:disabled,.recipe-ledger-row-remove:disabled,.recipe-ledger-jump button:disabled,.recipe-ledger-actions button:disabled{cursor:not-allowed;opacity:.55}.recipe-ledger-field input:disabled,.recipe-ledger-field textarea:disabled,.recipe-ledger-field select:disabled,.recipe-ledger-ingredients input:disabled,.recipe-ledger-ingredients select:disabled,.recipe-ledger-steps textarea:disabled{cursor:wait;opacity:.7}.recipe-ledger-form[data-saving=true] .recipe-ledger-form__body{background-image:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--ledger-citrus) 18%,transparent) 0,color-mix(in srgb,var(--ledger-citrus) 18%,transparent) var(--space-1),transparent var(--space-1),transparent var(--space-3))}@media(max-width:640px){.picker-modal{width:100%;max-height:calc(100dvh - var(--space-8));border-radius:var(--radius-xs)}.new-recipe-modal{width:95%;max-height:92vh;border-radius:var(--radius-lg)}.new-recipe-modal:has(.recipe-ledger-form){width:100%;max-height:calc(100dvh - var(--space-8));border-radius:var(--radius-xs)}.new-recipe-modal:has(.recipe-ledger-form) .recipe-ledger-form{max-height:calc(100dvh - var(--space-8) - var(--space-12))}.picker-type-btn{padding:var(--space-2) var(--space-4);min-height:var(--space-11);font-size:var(--text-body-md)}.picker-close{width:var(--space-11);height:var(--space-11);display:flex;align-items:center;justify-content:center}.picker-add-action-btn{min-height:var(--space-11);padding:var(--space-3) var(--space-4)}.picker-recipe{padding:var(--space-4) var(--space-5);min-height:var(--space-11)}.new-recipe-cancel-btn,.new-recipe-save-btn{min-height:var(--space-11);padding:var(--space-2_5) var(--space-5)}.new-recipe-ing-row{flex-wrap:wrap}.new-recipe-input--amount{flex:0 0 50px}.new-recipe-input--unit{flex:0 0 55px}.new-recipe-input--name{flex:1 1 calc(100% - 120px);min-width:100px}.new-recipe-input--cat{flex:1 1 calc(100% - 50px)}.recipe-ledger-form--create .recipe-ledger-section{display:none}.recipe-ledger-form--create[data-active-section=basics] .recipe-ledger-section[data-section=basics],.recipe-ledger-form--create[data-active-section=ingredients] .recipe-ledger-section[data-section=ingredients],.recipe-ledger-form--create[data-active-section=steps] .recipe-ledger-section[data-section=steps]{display:block}.recipe-ledger-fields{grid-template-columns:1fr 1fr}.recipe-ledger-ingredients li{grid-template-columns:minmax(3rem,.55fr) minmax(3.5rem,.65fr) 1fr var(--space-8)}.recipe-ledger-ingredients li select{grid-column:1 / 4}.recipe-ledger-actions{flex-wrap:wrap}.recipe-ledger-actions span{flex:1 0 100%}}.tag{padding:var(--space-0_5) var(--space-2);border-radius:var(--radius-pill);font-size:var(--text-label-sm);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);border:none}.toast-container{position:fixed;bottom:var(--space-20);left:50%;transform:translate(-50%);z-index:9998;display:flex;flex-direction:column;gap:var(--space-2);align-items:center;pointer-events:none}.toast{background:var(--toast-bg);color:#fff;padding:var(--space-2_5) var(--space-5);border-radius:var(--radius-lg);font-size:var(--text-body-md);box-shadow:var(--shadow-md);border:1px solid var(--toast-border);animation:toast-in .25s ease-out;white-space:nowrap;pointer-events:auto;display:flex;align-items:center;gap:var(--space-3)}.toast__text{flex:1}.toast__action{background:none;border:none;color:var(--accent);font-size:var(--text-body-md);font-weight:var(--weight-semibold);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);white-space:nowrap}.toast__action:hover{background:#ffffff1a}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.store-combobox{position:relative}.store-combobox__input{width:100%;padding:var(--space-2) var(--space-3);border:none;border-bottom:2px solid var(--outline-variant);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--input-bg);color:inherit;font-size:var(--text-body-md);font-family:inherit;transition:border-color .15s}.store-combobox__input::placeholder{color:var(--input-placeholder)}.store-combobox__input:focus{outline:none;border-bottom-color:var(--input-border-focus)}.store-combobox__dropdown{position:absolute;top:100%;left:0;right:0;z-index:20;list-style:none;margin:0;padding:var(--space-1) 0;background:var(--surface-container-high);border-radius:0 0 var(--radius-default) var(--radius-default);box-shadow:var(--shadow-md);max-height:180px;overflow-y:auto}.store-combobox__option{display:block;width:100%;padding:var(--space-2_5) var(--space-3);background:none;border:none;color:inherit;font-size:var(--text-body-md);font-family:inherit;text-align:left;cursor:pointer;transition:background .1s}.store-combobox__option:hover{background:var(--interactive-hover)}@media(max-width:640px){.store-combobox__option{min-height:var(--space-11);display:flex;align-items:center}}.ingredient-combobox{position:relative}.ingredient-combobox__input{width:100%;padding:var(--space-2_5) var(--space-3);border:none;border-bottom:2px solid var(--outline-variant);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--input-bg);color:var(--text-primary);font-size:var(--text-body-md);font-family:inherit;transition:border-color .15s}.ingredient-combobox__input::placeholder{color:var(--input-placeholder)}.ingredient-combobox__input:focus{outline:none;border-bottom-color:var(--input-border-focus)}.ingredient-combobox__dropdown{position:absolute;top:100%;left:0;right:0;z-index:20;list-style:none;margin:0;padding:var(--space-1) 0;background:var(--surface-container-high);border-radius:0 0 var(--radius-default) var(--radius-default);box-shadow:var(--shadow-md);max-height:240px;overflow-y:auto}.ingredient-combobox__option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-2_5) var(--space-3);background:none;border:none;color:inherit;font-size:var(--text-body-md);font-family:inherit;text-align:left;cursor:pointer;gap:var(--space-3);transition:background .1s}.ingredient-combobox__option:hover{background:var(--interactive-hover)}.ingredient-combobox__option-name{font-weight:var(--weight-medium);flex:1;min-width:0}.ingredient-combobox__option-meta{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.ingredient-combobox__option-store{font-size:var(--text-label-sm);color:var(--text-secondary);background:var(--surface-container-highest);padding:var(--space-0_5) var(--space-2);border-radius:var(--radius-pill);white-space:nowrap}.ingredient-combobox__option-amount{font-size:var(--text-label-sm);color:var(--text-muted);white-space:nowrap}@media(max-width:640px){.ingredient-combobox__option{min-height:var(--space-11)}}.onboarding{display:grid;gap:var(--space-4);width:min(100%,40rem);margin:var(--space-8) auto;padding:var(--space-3);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong);color:var(--ledger-ink)}.onboarding__hero{display:grid;gap:var(--space-2);padding:var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-panel)}.onboarding__kicker{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold)}.onboarding__icon{display:inline-flex;align-items:center;justify-content:center;width:var(--space-12);aspect-ratio:1;border:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paper);font-size:var(--text-headline-sm)}.onboarding__title{margin:0;color:var(--ledger-ink);font-size:var(--text-headline-sm);font-weight:var(--weight-extrabold);line-height:var(--leading-tight)}.onboarding__desc{max-width:32rem;margin:0;color:var(--ledger-muted);font-size:var(--text-body-md);line-height:var(--leading-normal)}.onboarding__actions{display:grid;gap:var(--space-2)}.onboarding-action{display:grid;grid-template-columns:var(--space-10) minmax(0,1fr);gap:var(--space-3);align-items:center;min-height:var(--space-12);padding:var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);text-align:left;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.onboarding-action:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.onboarding-action--primary{background:var(--ledger-paprika);color:var(--primary)}.onboarding-action--primary:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.onboarding-action__icon{display:inline-flex;align-items:center;justify-content:center;width:var(--space-10);aspect-ratio:1;border:var(--ledger-rule) solid currentColor;background:color-mix(in srgb,currentColor 8%,transparent);font-size:var(--text-title-md)}.onboarding-action__text{display:grid;gap:var(--space-1);min-width:0}.onboarding-action__text strong{color:inherit;font-size:var(--text-body-lg);font-weight:var(--weight-extrabold);line-height:var(--leading-snug)}.onboarding-action__text span{color:color-mix(in srgb,currentColor 72%,transparent);font-size:var(--text-body-sm);line-height:var(--leading-normal)}.onboarding__tip{padding:var(--space-3);border:var(--ledger-rule) solid var(--ledger-line-soft);background:var(--ledger-herb-soft);color:var(--ledger-ink);font-size:var(--text-body-sm)}@media(max-width:640px){.onboarding{margin:var(--space-4) auto}.onboarding-action{grid-template-columns:var(--space-8) minmax(0,1fr);padding:var(--space-2)}.onboarding-action__icon{width:var(--space-8)}}.home-page{color:var(--ledger-ink)}.meal-plan-section{display:grid;gap:var(--space-4)}.week-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-panel)}.week-section-label{margin:0;color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-title-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal)}.week-section-add,.meal-plan-day__add{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:var(--space-8);height:var(--space-8);padding:0;border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paprika);color:var(--primary);font-family:var(--font-mono);font-size:var(--text-title-md);font-weight:var(--weight-extrabold);line-height:var(--leading-none);box-shadow:var(--ledger-rule) var(--ledger-rule) 0 var(--ledger-line);cursor:pointer;transition:background .15s,color .15s,transform .15s,box-shadow .15s}.week-section-add:hover,.meal-plan-day__add:hover{background:var(--ledger-citrus);color:var(--ledger-ink);transform:translate(var(--ledger-rule),var(--ledger-rule));box-shadow:0 0 0 var(--ledger-line)}.week-section-add:focus-visible,.meal-plan-day__add:focus-visible,.week-toggle-btn:focus-visible,.meal-plan-meal__clear:focus-visible{outline:var(--ledger-rule) solid var(--ledger-blue-pencil);outline-offset:var(--space-0_5)}.past-days-toggle{display:flex}.week-toggle-btn{min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-bold);cursor:pointer;transition:background .15s}.week-toggle-btn:hover{background:var(--ledger-citrus)}.meal-plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:var(--space-4)}.meal-plan-day{display:flex;min-height:9.5rem;flex-direction:column;overflow:hidden;border:var(--ledger-rule-heavy) solid var(--ledger-line);border-radius:var(--radius-xs);background:var(--ledger-paper-strong);color:var(--ledger-ink)}.meal-plan-day--past{opacity:.72}.meal-plan-day--today,.today-card{min-height:11rem;background:var(--ledger-paper-strong)}.meal-plan-day__header,.today-card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:0;padding:var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-panel)}.meal-plan-day__name,.today-card__name{display:flex;min-width:0;align-items:center;gap:var(--space-2);margin:0;color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal)}.today-card__name{font-size:var(--text-title-md)}.meal-plan-day__today-badge{display:inline-flex;align-items:center;min-height:var(--space-6);padding:var(--space-0_5) var(--space-2);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-herb-soft);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-bold);letter-spacing:var(--tracking-normal)}.meal-plan-day__meals,.today-card__meals{display:flex;flex:1;flex-direction:column;gap:var(--space-2);min-height:var(--space-16);padding:var(--space-3)}.meal-plan-empty,.today-card__empty{display:grid;flex:1;place-content:center;gap:var(--space-1);min-height:var(--space-16);color:var(--ledger-muted);font-style:normal;text-align:center}.meal-plan-empty strong,.today-card__empty strong{color:var(--ledger-ink);font-size:var(--text-body-sm)}.meal-plan-empty span,.today-card__empty span{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm)}.meal-plan-meal,.today-meal{display:flex;align-items:stretch;gap:var(--space-1);border:var(--ledger-rule) solid var(--ledger-line-soft);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);transition:background .15s}.meal-plan-meal:hover,.today-meal:hover{background:var(--ledger-herb-soft);color:var(--ledger-ink)}.meal-plan-meal__link,.today-meal__link{display:flex;flex:1;min-width:0;flex-direction:column;gap:var(--space-0_5);padding:var(--space-2);color:inherit;text-decoration:none}.meal-plan-meal__link:hover,.today-meal__link:hover{color:inherit}.meal-plan-meal__type,.today-meal__type,.today-meal__meta{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:capitalize}.meal-plan-meal__title,.today-meal__title{overflow:hidden;color:var(--ledger-ink);font-size:var(--text-body-md);font-weight:var(--weight-bold);line-height:var(--leading-snug);text-overflow:ellipsis}.meal-plan-meal__clear,.today-meal__clear{display:inline-flex;align-items:center;justify-content:center;align-self:stretch;width:var(--space-8);padding:0;border:0;border-left:var(--ledger-rule) solid var(--ledger-line-soft);border-radius:0;background:transparent;color:var(--ledger-muted);font-size:var(--text-title-md);line-height:var(--leading-none);cursor:pointer}.meal-plan-meal__clear:hover,.today-meal__clear:hover{background:var(--destructive-hover);color:var(--destructive-text)}.today-meal__image{flex-shrink:0;width:var(--space-20);min-height:var(--space-12);overflow:hidden;border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-panel)}.today-meal__image img{display:block;width:100%;height:100%;object-fit:cover}.today-meal__image .recipe-placeholder{width:100%;height:100%;border-radius:0;aspect-ratio:auto}.today-meal__image .recipe-placeholder__emoji{font-size:var(--text-title-md)}.today-meal__info{display:flex;min-width:0;flex-direction:column;gap:var(--space-0_5)}.meal-plan-meal--note .meal-plan-meal__title,.today-meal--note .today-meal__title{color:var(--ledger-muted);font-style:italic}@media(max-width:640px){.meal-plan-section{gap:var(--space-3)}.week-section-header,.meal-plan-day__header,.today-card__header,.meal-plan-day__meals,.today-card__meals{padding:var(--space-2)}.meal-plan-grid{grid-template-columns:1fr;gap:var(--space-3)}.meal-plan-day,.meal-plan-day--today,.today-card{min-height:8rem}.meal-plan-empty,.today-card__empty{min-height:var(--space-12)}}.recipe-list-hero{margin-bottom:var(--space-12)}.recipe-list-hero__label{font-size:var(--text-label-md);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-widest);color:var(--accent);margin:0 0 var(--space-2)}.recipe-list-hero__title{font-size:var(--text-display-lg);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);color:var(--text-primary);margin:0 0 var(--space-3)}.recipe-list-hero__subtitle{color:var(--text-secondary);font-size:var(--text-body-lg);line-height:var(--leading-relaxed);margin:0}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}.recipe-grid--empty{display:grid;grid-column:1 / -1;gap:var(--space-1);padding:var(--space-8);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong);text-align:center}.recipe-grid--empty strong{color:var(--ledger-ink);font-size:var(--text-title-md)}.recipe-grid--empty span{color:var(--ledger-muted);font-size:var(--text-body-md)}.import-hint{font-size:var(--text-body-md);color:var(--text-muted);line-height:var(--leading-normal);margin:0}.import-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-12) var(--space-4)!important;text-align:center;color:var(--text-muted)}.import-spinner{width:var(--space-8);height:var(--space-8);border:3px solid var(--card-border);border-top-color:var(--secondary);border-radius:var(--radius-full);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.import-error{text-align:center;padding:var(--space-6) 0}.import-error__icon{font-size:var(--text-headline-lg);margin:0 0 var(--space-2)}.import-error__msg{color:var(--text-muted);font-size:var(--text-body-md);line-height:var(--leading-normal)}.camera-viewfinder{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:0!important}.camera-viewfinder__video{width:100%;max-height:60vh;border-radius:0;object-fit:cover;background:var(--surface-container-lowest)}.camera-viewfinder__hint{color:var(--text-muted);font-size:var(--text-body-md);margin:0;padding:0 var(--space-4)}.camera-snap-btn{font-size:var(--text-title-md)!important;padding:var(--space-2_5) var(--space-8)!important}.ingredient-view-toggle{display:flex;gap:0;margin-bottom:var(--space-3);border-radius:var(--radius-default);overflow:hidden;background:var(--surface-container-low)}.ingredient-view-btn{flex:1;padding:var(--space-2) var(--space-3);background:transparent;border:none;color:var(--text-muted);font-size:var(--text-body-md);cursor:pointer;transition:background .15s,color .15s}.ingredient-view-btn--active{background:var(--success-container);color:var(--on-secondary-container)}.shopping-preview-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-2) 0}.shopping-preview-item__qty{min-width:5rem;font-weight:var(--weight-semibold);color:var(--secondary);font-size:var(--text-body-md);flex-shrink:0}.shopping-preview-item__info{flex:1;display:flex;flex-direction:column;gap:var(--space-0_5)}.shopping-preview-item__name{font-size:var(--text-body-md)}.shopping-preview-item__sources{font-size:var(--text-label-md);color:var(--text-muted);font-style:italic}.import-review-image{margin-bottom:var(--space-3);border-radius:var(--radius-default);overflow:hidden;min-height:80px}.import-review-image__img{width:100%;height:200px;object-fit:cover;border-radius:var(--radius-default);display:block;background:var(--toast-bg)}.import-review-image .recipe-placeholder{aspect-ratio:3 / 1;border-radius:var(--radius-default)}.import-review-image .recipe-placeholder__emoji{font-size:var(--text-headline-lg)}.import-review-banner{padding:var(--space-2_5) var(--space-4);background:var(--success-container);border:none;border-left:4px solid var(--success);border-radius:var(--radius-default);font-size:var(--text-body-md);color:var(--on-secondary-container)}.import-review-ingredient{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1_5) var(--space-2);margin-bottom:var(--space-1);border-radius:var(--radius-sm);background:var(--surface-container-low);font-size:var(--text-body-md)}.import-review-ingredient__amount{color:var(--text-muted);min-width:80px;white-space:nowrap}.import-review-ingredient__name{flex:1}.import-review-ingredient__cat{font-size:var(--text-label-sm);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--secondary);background:var(--interactive-hover);padding:var(--space-0_5) var(--space-1_5);border-radius:var(--radius-pill)}.import-review-step{display:flex;gap:var(--space-2);align-items:flex-start;margin-bottom:var(--space-2);font-size:var(--text-body-md);line-height:var(--leading-normal)}.import-review-step p{margin:0;padding-top:var(--space-0_5)}.import-source{font-size:var(--text-body-sm);color:var(--text-muted);margin:0}.import-source a{color:var(--accent)}.recipe-detail-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.recipe-overflow{position:relative}.recipe-overflow__btn{background:var(--surface-container-high);border:none;border-radius:var(--radius-full);width:var(--space-10);height:var(--space-10);font-size:var(--text-title-lg);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.recipe-overflow__btn:hover{background:var(--surface-container-highest);color:var(--text-primary)}.recipe-overflow__menu{position:absolute;top:calc(100% + var(--space-2));right:0;background:var(--surface-container-high);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:12rem;z-index:20;overflow:hidden}.recipe-overflow__item{display:flex;align-items:center;gap:var(--space-2);width:100%;text-align:left;padding:var(--space-3) var(--space-4);border:none;background:transparent;color:var(--text-primary);font-size:var(--text-body-md);cursor:pointer;transition:background .15s}.recipe-overflow__item:hover{background:var(--surface-container-highest)}.recipe-overflow__item--danger{color:var(--destructive-text)}.recipe-overflow__item--danger:hover{background:var(--destructive-hover)}.recipe-header{margin-bottom:var(--space-8);padding-bottom:var(--space-8)}.recipe-header__layout{display:flex;gap:var(--space-8);align-items:flex-start}.recipe-header__info{flex:1;min-width:0}.recipe-header__visual{flex-shrink:0;width:320px;border-radius:var(--radius-lg);overflow:hidden;position:relative}.recipe-fab{position:absolute;bottom:var(--space-4);right:var(--space-4);padding:var(--space-2_5) var(--space-6);border:none;border-radius:var(--radius-pill);background:var(--accent);color:var(--on-accent);font-size:var(--text-body-lg);font-weight:var(--weight-bold);cursor:pointer;box-shadow:var(--glow-accent-strong),var(--shadow-md);transition:transform .15s,box-shadow .15s;z-index:2;letter-spacing:var(--tracking-wide)}.recipe-fab:hover{transform:scale(1.05);box-shadow:var(--glow-accent-strong),var(--shadow-lg)}.recipe-fab--added{background:var(--success-container);color:var(--on-secondary-container);box-shadow:none;cursor:default}.recipe-header__visual img{width:100%;aspect-ratio:3 / 2;object-fit:cover;display:block}.recipe-header__title{font-size:var(--text-display-sm);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);margin:0 0 var(--space-2)}.recipe-header__desc{color:var(--text-muted);font-size:var(--text-title-md);line-height:var(--leading-normal);margin:0 0 var(--space-4)}.recipe-header__meta{display:flex;gap:var(--space-5);font-size:var(--text-body-md);color:var(--text-muted);margin-bottom:var(--space-3);flex-wrap:wrap}.recipe-header__difficulty{font-weight:var(--weight-semibold);text-transform:capitalize}.recipe-header__difficulty--easy{color:var(--success-text)}.recipe-header__difficulty--medium{color:var(--tertiary)}.recipe-header__difficulty--hard{color:var(--error)}.recipe-header__tags{display:flex;gap:var(--space-1_5);flex-wrap:wrap}.recipe-placeholder{width:100%;aspect-ratio:3 / 2;border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);position:relative;overflow:hidden}.recipe-placeholder--card{aspect-ratio:3/2;border-radius:0}.recipe-placeholder__emojis{display:flex;gap:var(--space-2)}.recipe-placeholder__emoji{font-size:var(--text-display-sm);filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.recipe-placeholder--card .recipe-placeholder__emoji{font-size:var(--text-display-md)}.recipe-placeholder__worm{position:absolute;bottom:var(--space-2);right:var(--space-3);font-size:var(--text-title-lg);opacity:.6}.ingredients-header{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-3)}.ingredients-header h2{margin:0}.serving-adjuster{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.serving-adjuster__btn{width:var(--space-7);height:var(--space-7);border-radius:var(--radius-full);border:none;background:var(--surface-container-high);color:inherit;font-size:var(--text-body-lg);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:var(--leading-none);transition:background .15s}.serving-adjuster__btn:hover{background:var(--surface-container-highest)}.serving-adjuster__btn:disabled{opacity:.3;cursor:not-allowed}.serving-adjuster__value{font-size:var(--text-body-md);white-space:nowrap}.serving-adjuster__multiplier{color:var(--secondary);font-weight:var(--weight-semibold);margin-left:var(--space-1)}.ingredients-header__toggle{display:flex;align-items:center;gap:var(--space-3);background:none;border:none;cursor:pointer;padding:var(--space-2) 0;color:inherit;flex:1}.ingredients-header__toggle h2{margin:0}.ingredients-header__count{font-size:var(--text-body-sm);color:var(--text-muted);font-weight:var(--weight-regular)}.ingredients-header__chevron{font-size:var(--text-body-lg);color:var(--text-muted);margin-left:auto}.ingredient-select-bar{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.ingredient-select-btn{padding:var(--space-1) var(--space-3);border:none;border-radius:var(--radius-pill);background:var(--surface-container-high);color:var(--text-secondary);font-size:var(--text-body-sm);cursor:pointer;transition:background .15s}.ingredient-select-btn:hover{background:var(--surface-container-highest)}.ingredient-select-count{font-size:var(--text-body-sm);color:var(--accent);font-weight:var(--weight-semibold)}.ingredient-item__check{width:var(--space-5);height:var(--space-5);border-radius:var(--radius-xs);border:2px solid var(--card-border);display:flex;align-items:center;justify-content:center;font-size:var(--text-label-sm);flex-shrink:0;color:transparent;transition:background .15s,border-color .15s,color .15s}.ingredient-item__check--on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.ingredient-item{cursor:pointer;-webkit-user-select:none;user-select:none}.ingredient-item--selected{background:var(--interactive-selected)}.ingredient-bulk-bar{display:flex;gap:var(--space-2);padding:var(--space-3);margin-top:var(--space-4);background:var(--surface-container-high);border-radius:var(--radius-lg);position:sticky;bottom:var(--space-4);box-shadow:var(--shadow-lg)}.ingredient-bulk-btn{flex:1;padding:var(--space-2_5) var(--space-4);border:none;border-radius:var(--radius-default);font-size:var(--text-body-md);font-weight:var(--weight-semibold);cursor:pointer;transition:background .15s,transform .1s}.ingredient-bulk-btn:hover{transform:scale(.98)}.ingredient-bulk-btn--review{background:var(--accent);color:var(--on-accent);box-shadow:var(--glow-accent)}.ingredient-bulk-btn--shopping{background:var(--surface-container-highest);color:var(--text-primary)}.recipe-detail__content{display:grid;grid-template-columns:1fr 2fr;gap:var(--space-8);margin-bottom:var(--space-8)}.recipe-detail__ingredients h2,.recipe-detail__steps h2{margin-top:0;margin-bottom:var(--space-4)}.ingredient-group{margin-bottom:var(--space-5)}.ingredient-group__label{font-size:var(--text-label-md);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--secondary);margin:0 0 var(--space-2)}.ingredient-group ul{list-style:none;padding:0;margin:0}.ingredient-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-1);border-radius:var(--radius-sm);background:var(--surface-container-low);font-size:var(--text-body-md)}.ingredient-item__amount{color:var(--text-muted);white-space:nowrap;min-width:80px}.ingredient-item__name{flex:1}.steps-list{list-style:none;padding:0;margin:0;counter-reset:none}.step-item{display:flex;gap:var(--space-4);margin-bottom:var(--space-5);align-items:flex-start}.step-item__number{flex-shrink:0;width:var(--space-8);height:var(--space-8);border-radius:var(--radius-full);background:var(--secondary);color:var(--on-secondary);display:flex;align-items:center;justify-content:center;font-size:var(--text-body-md);font-weight:var(--weight-semibold)}.step-item p{margin:0;padding-top:var(--space-1);line-height:var(--leading-normal)}.recipe-detail__tags{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-4)}@media(max-width:640px){.recipe-detail__content,.recipe-grid{grid-template-columns:1fr}.recipe-header__layout{flex-direction:column-reverse;gap:var(--space-4)}.recipe-header__visual{width:100%;max-width:none}.recipe-header__title{font-size:var(--text-headline-lg)}.ingredients-header{flex-direction:column;align-items:flex-start}.serving-adjuster{margin-left:0}.serving-adjuster__btn{width:var(--space-11);height:var(--space-11)}.ingredient-item__check{min-width:var(--space-11);min-height:var(--space-11);display:flex;align-items:center;justify-content:center}.ingredient-bulk-bar{position:fixed;bottom:var(--space-4);left:var(--space-4);right:var(--space-4)}.step-item__number{width:var(--space-11);height:var(--space-11);font-size:var(--text-body-lg)}}.recipe-not-found{text-align:center;max-width:24rem;margin:0 auto;padding:var(--space-12) var(--space-8)}.recipe-not-found__icon{font-size:3rem;display:block;margin-bottom:var(--space-4)}.recipe-not-found__title{font-size:var(--text-headline-md);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--space-3)}.recipe-not-found__desc{font-size:var(--text-body-md);color:var(--text-muted);margin-bottom:var(--space-6);line-height:var(--leading-relaxed, 1.6)}.recipe-not-found__link{font-size:var(--text-body-md);font-weight:var(--weight-medium);color:var(--accent);text-decoration:none}.recipe-not-found__link:hover{text-decoration:underline}.recipe-list-page,.recipe-detail-page{color:var(--ledger-ink);background:linear-gradient(var(--ledger-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--ledger-grid-line) 1px,transparent 1px),var(--ledger-paper);background-size:28px 28px;padding:var(--space-4)}.recipe-list-controls{padding:var(--space-3);border:3px solid var(--ledger-line);background:var(--ledger-panel)}.recipe-search__input,.recipe-filter__select{border-bottom-color:var(--ledger-line);background:var(--ledger-paper-strong);color:var(--ledger-ink)}.recipe-search__input:focus,.recipe-filter__select:focus{border-bottom-color:var(--ledger-paprika)}.recipe-detail-topbar{padding-bottom:var(--space-3);border-bottom:3px solid var(--ledger-line)}.recipe-header{margin-bottom:var(--space-5);padding:var(--space-4);border:3px solid var(--ledger-line);background:var(--ledger-paper-strong);box-shadow:var(--ledger-shadow)}.recipe-header__layout{gap:var(--space-5)}.recipe-header__title{color:var(--ledger-ink);letter-spacing:var(--tracking-normal)}.recipe-header__desc,.recipe-header__meta{color:var(--ledger-muted)}.recipe-header__visual{width:min(240px,35vw);border:2px solid var(--ledger-line);border-radius:var(--radius-xs)}.recipe-header__visual img,.recipe-placeholder{border-radius:0}.recipe-fab{display:none}.recipe-ledger-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.recipe-ledger-toolbar button,.ingredient-select-btn,.ingredient-bulk-btn{border:2px solid var(--ledger-line);border-radius:0;font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold)}.recipe-ledger-toolbar button{min-height:var(--space-10);padding:var(--space-2) var(--space-3);background:var(--ledger-paper-strong);color:var(--ledger-ink)}.recipe-ledger-toolbar button:first-child{background:var(--ledger-paprika);color:var(--primary)}.recipe-detail__content{grid-template-columns:minmax(18rem,.9fr) minmax(0,1.4fr);gap:var(--space-5)}.recipe-detail__ingredients,.recipe-detail__steps{border:3px solid var(--ledger-line);background:var(--ledger-paper-strong)}.ingredients-header,.recipe-detail__steps>h2{margin:0;padding:var(--space-3);border-bottom:2px solid var(--ledger-line);background:var(--ledger-panel)}.ingredients-header__toggle{padding:0}.ingredients-header__toggle h2,.recipe-detail__steps>h2,.ingredient-group__label{color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal);text-transform:uppercase}.serving-adjuster,.ingredient-select-bar{padding:var(--space-3);margin:0;border-bottom:1px solid var(--ledger-line-soft)}.serving-adjuster__btn{border:2px solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink)}.ingredient-group{margin:0}.ingredient-group__label{padding:var(--space-2) var(--space-3);margin:0;border-bottom:1px solid var(--ledger-line-soft);background:var(--ledger-herb-soft)}.ingredient-item{display:grid;grid-template-columns:var(--space-7) minmax(5.5rem,auto) 1fr;gap:var(--space-2);align-items:center;margin:0;padding:var(--space-2) var(--space-3);border-radius:0;border-bottom:1px solid var(--ledger-line-soft);background:var(--ledger-paper)}.ingredient-item__checkbox{position:absolute;inline-size:1px;block-size:1px;opacity:0}.ingredient-item__checkbox:focus-visible+.ingredient-item__check{outline:3px solid var(--ledger-citrus);outline-offset:2px}.ingredient-item__check{border-color:var(--ledger-line);border-radius:0}.ingredient-item__check--on{background:var(--ledger-herb);border-color:var(--ledger-line);color:var(--primary)}.ingredient-item--selected{background:var(--ledger-herb-soft)}.ingredient-item__amount{min-width:5.5rem;color:var(--ledger-paprika);font-family:var(--font-mono);font-weight:var(--weight-extrabold)}.ingredient-bulk-bar{margin:var(--space-3);border:2px solid var(--ledger-line);border-radius:0;background:var(--ledger-ink);box-shadow:none}.ingredient-bulk-btn--review{background:var(--ledger-paprika);color:var(--primary);box-shadow:none}.ingredient-bulk-btn--shopping{background:var(--ledger-paper-strong);color:var(--ledger-ink)}.steps-list{padding:0}.step-item{gap:var(--space-3);padding:var(--space-3);margin:0;border-bottom:1px solid var(--ledger-line-soft)}.step-item__number{border:2px solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-muted);font-family:var(--font-mono)}@media(max-width:640px){.recipe-header{padding:var(--space-3);box-shadow:none}.recipe-header__visual{width:100%}.recipe-ledger-toolbar{display:grid;grid-template-columns:1fr}.ingredient-item{grid-template-columns:var(--space-7) minmax(5.5rem,auto) 1fr;min-height:var(--space-11)}}.lists-page,.shopping-list-view,.staples-view{display:flex;flex-direction:column;gap:var(--space-4);color:var(--ledger-ink)}.lists-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong)}.lists-tab{min-height:var(--space-11);padding:var(--space-2) var(--space-3);border:0;border-right:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:transparent;color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);cursor:pointer}.lists-tab:last-child{border-right:0}.lists-tab:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.lists-tab--active{background:var(--ledger-herb-soft);color:var(--ledger-ink)}.shopping-list-header,.staples-view__header{display:grid;grid-template-columns:1fr auto auto;gap:var(--space-3);align-items:center;padding:var(--space-3);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-panel)}.shopping-list-header h1,.staples-view__header h1{margin:0;color:var(--ledger-ink);font-size:var(--text-headline-sm);font-weight:var(--weight-extrabold);line-height:var(--leading-tight)}.shopping-list-progress,.staples-view__hint{margin:0;color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-bold)}.shopping-list-clear-btn{min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--destructive-text);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);cursor:pointer}.shopping-list-clear-btn:hover{background:var(--destructive-hover)}.shopping-add-form{display:grid;gap:var(--space-3);padding:var(--space-3);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong)}.shopping-add-form__row{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(4rem,.25fr) minmax(5rem,.3fr);gap:var(--space-2);align-items:stretch}.shopping-add-form__row:has(.shopping-add-form__store){grid-template-columns:minmax(10rem,1fr) auto}.shopping-add-form__input,.shopping-add-form__input--name .ingredient-combobox__input,.shopping-add-form__store .store-combobox__input,.shopping-item__edit-input,.shopping-item__edit-input--name .ingredient-combobox__input,.shopping-item__edit-store .store-combobox__input{width:100%;min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);font:inherit;font-size:var(--text-body-md)}.shopping-add-form__input::placeholder,.shopping-add-form__input--name .ingredient-combobox__input::placeholder,.shopping-add-form__store .store-combobox__input::placeholder,.shopping-item__edit-input::placeholder,.shopping-item__edit-input--name .ingredient-combobox__input::placeholder,.shopping-item__edit-store .store-combobox__input::placeholder{color:var(--ledger-muted)}.shopping-add-form__input:focus,.shopping-add-form__input--name .ingredient-combobox__input:focus,.shopping-add-form__store .store-combobox__input:focus,.shopping-item__edit-input:focus,.shopping-item__edit-input--name .ingredient-combobox__input:focus,.shopping-item__edit-store .store-combobox__input:focus{outline:var(--ledger-rule) solid var(--ledger-citrus);outline-offset:var(--space-0_5)}.shopping-add-form__input--amount,.shopping-add-form__input--unit{text-align:center}.shopping-add-form__btn{min-height:var(--space-10);padding:var(--space-2) var(--space-4);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paprika);color:var(--primary);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);box-shadow:var(--ledger-rule) var(--ledger-rule) 0 var(--ledger-line)}.shopping-add-form__btn:hover:not(:disabled){background:var(--ledger-citrus);color:var(--ledger-ink)}.shopping-add-form__btn:disabled{opacity:.5;cursor:not-allowed}.shopping-add-form__categories,.shopping-add-form__frequency,.shopping-item__edit-categories{display:flex;flex-wrap:wrap;gap:var(--space-2)}.category-pill,.shopping-group-btn{min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);cursor:pointer}.category-pill:hover,.shopping-group-btn:hover{background:var(--ledger-citrus)}.category-pill--active,.shopping-group-btn--active{background:var(--ledger-herb-soft)}.category-pill--sm{min-height:var(--space-8);padding:var(--space-1) var(--space-2)}.shopping-group-toggle{display:flex;flex-wrap:wrap;gap:var(--space-2)}.review-section,.shopping-group{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong)}.review-section{background:var(--ledger-herb-soft)}.review-section__header,.shopping-group__label{margin:calc(var(--space-3) * -1) calc(var(--space-3) * -1) var(--space-1);padding:var(--space-2) var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-panel);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal)}.review-list,.shopping-group__items{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.review-item,.shopping-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto auto;gap:var(--space-2);align-items:center;min-height:var(--space-11);padding:var(--space-2);border:var(--ledger-rule) solid var(--ledger-line-soft);background:var(--ledger-paper);color:var(--ledger-ink)}.review-item{grid-template-columns:minmax(0,1fr) auto}.shopping-item:hover{background:var(--ledger-herb-soft)}.shopping-item--checked{opacity:.66}.shopping-item--checked .shopping-item__name{text-decoration:line-through}.shopping-item__check,.shopping-item__edit-btn,.shopping-item__remove,.shopping-item__edit-save,.shopping-item__edit-cancel,.review-item__approve,.review-item__remove{display:inline-flex;align-items:center;justify-content:center;width:var(--space-10);height:var(--space-10);padding:0;border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-body-md);font-weight:var(--weight-extrabold);cursor:pointer}.shopping-item__check{color:var(--ledger-herb)}.shopping-item--checked .shopping-item__check,.shopping-item__edit-save,.review-item__approve{background:var(--ledger-herb-soft);color:var(--ledger-ink)}.shopping-item__edit-save:disabled{opacity:.4;cursor:not-allowed}.shopping-item__remove:hover,.shopping-item__edit-cancel:hover,.review-item__remove:hover{background:var(--destructive-hover);color:var(--destructive-text)}.shopping-item__edit-btn:hover{background:var(--ledger-citrus)}.shopping-item__name{min-width:0;padding:0;border:0;background:transparent;color:var(--ledger-ink);font:inherit;font-size:var(--text-body-lg);font-weight:var(--weight-bold);text-align:left;cursor:pointer}.shopping-item__name:hover{color:var(--ledger-blue-pencil)}.shopping-item__amount,.shopping-item__store,.staple-frequency-badge,.review-item__info{color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-bold);white-space:nowrap}.shopping-item__store,.staple-frequency-badge{padding:var(--space-1) var(--space-2);border:var(--ledger-rule) solid var(--ledger-line-soft);background:var(--ledger-paper-strong)}.shopping-item--editing{grid-template-columns:1fr;padding:var(--space-2);background:var(--ledger-panel-warm)}.shopping-item__edit-form{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(4rem,.25fr) minmax(5rem,.3fr) minmax(8rem,.8fr) minmax(8rem,1fr) auto auto;gap:var(--space-2);align-items:center;width:100%}.shopping-empty{display:grid;gap:var(--space-1);padding:var(--space-8);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong);text-align:center}.shopping-empty strong{color:var(--ledger-ink);font-size:var(--text-title-md)}.shopping-empty span{color:var(--ledger-muted);font-size:var(--text-body-md)}.ingredient-combobox__dropdown,.store-combobox__dropdown{border:var(--ledger-rule) solid var(--ledger-line);border-top:0;border-radius:0;background:var(--ledger-paper-strong);color:var(--ledger-ink);box-shadow:var(--ledger-rule-heavy) var(--ledger-rule-heavy) 0 var(--ledger-line)}.ingredient-combobox__option,.store-combobox__option{color:var(--ledger-ink)}.ingredient-combobox__option:hover,.store-combobox__option:hover{background:var(--ledger-herb-soft)}@media(max-width:720px){.shopping-list-header,.staples-view__header{grid-template-columns:1fr;gap:var(--space-2)}.shopping-add-form__row{grid-template-columns:1fr 1fr}.shopping-add-form__input--name{grid-column:1 / -1}.shopping-add-form__row:has(.shopping-add-form__store){grid-template-columns:minmax(0,1fr) auto}.shopping-item{grid-template-columns:auto minmax(0,1fr) auto auto auto auto;gap:var(--space-1)}.shopping-item__store,.staple-frequency-badge{grid-column:2 / -1;justify-self:start}.shopping-item__edit-form{grid-template-columns:1fr 1fr}.shopping-item__edit-input--name,.shopping-item__edit-store,.shopping-item__edit-categories{grid-column:1 / -1}}.login-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:var(--space-6);background:var(--surface)}.login-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-8);width:100%;max-width:24rem;padding:var(--space-10);background:var(--card-bg);border-radius:var(--radius-xl)}.login-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center}.login-logo{font-size:var(--text-display-sm);line-height:1}.login-title{font-size:var(--text-headline-md);font-weight:var(--weight-bold);color:var(--text-primary);letter-spacing:var(--tracking-tight)}.login-subtitle{font-size:var(--text-body-md);color:var(--text-muted);max-width:18rem}.login-google-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-3);width:100%;padding:var(--space-4) var(--space-6);background:var(--surface-container-high);color:var(--text-primary);font-family:var(--font-family);font-size:var(--text-body-lg);font-weight:var(--weight-medium);border:none;border-radius:var(--radius-default);cursor:pointer;transition:background .15s ease}.login-google-btn:hover{background:var(--surface-container-highest)}.login-google-btn:active{background:var(--surface-bright)}.login-google-btn:disabled{opacity:.5;cursor:not-allowed}.login-google-btn svg{width:1.25rem;height:1.25rem;flex-shrink:0}.login-dev{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.login-dev__divider{display:flex;align-items:center;gap:var(--space-3);color:var(--text-muted);font-size:var(--text-label-md);letter-spacing:var(--tracking-wider);text-transform:uppercase}.login-dev__divider:before,.login-dev__divider:after{content:"";flex:1;height:1px;background:var(--surface-container-highest)}.login-dev__input{padding:var(--space-3) var(--space-4);background:var(--input-bg);color:var(--text-primary);font-family:var(--font-family);font-size:var(--text-body-md);border:none;border-radius:var(--radius-default)}.login-dev__input::placeholder{color:var(--input-placeholder)}.login-dev__input:focus{outline:none;box-shadow:0 2px 0 var(--input-border-focus)}.login-dev__actions{display:flex;gap:var(--space-2)}.login-dev__btn{flex:1;padding:var(--space-3) var(--space-4);background:var(--surface-container-high);color:var(--text-primary);font-family:var(--font-family);font-size:var(--text-body-md);font-weight:var(--weight-medium);border:none;border-radius:var(--radius-default);cursor:pointer;transition:background .15s ease}.login-dev__btn:hover{background:var(--surface-container-highest)}.login-dev__btn--secondary{background:none;color:var(--text-muted)}.login-dev__btn--secondary:hover{background:var(--surface-container-high);color:var(--text-primary)}.login-dev__btn:disabled{opacity:.5;cursor:not-allowed}.login-error{font-size:var(--text-body-sm);color:var(--destructive-text);text-align:center}.consent-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:var(--space-6);background:var(--surface)}.consent-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-6);width:100%;max-width:26rem;padding:var(--space-10);background:var(--card-bg);border-radius:var(--radius-xl)}.consent-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center}.consent-logo{font-size:var(--text-display-sm);line-height:1}.consent-title{font-size:var(--text-headline-md);font-weight:var(--weight-bold);color:var(--text-primary);letter-spacing:var(--tracking-tight)}.consent-subtitle{font-size:var(--text-body-md);color:var(--text-muted);max-width:20rem}.consent-user{font-size:var(--text-body-sm);color:var(--text-muted);padding:var(--space-3) var(--space-5);background:var(--surface-container-high);border-radius:var(--radius-default);width:100%;text-align:center}.consent-scopes{width:100%}.consent-scopes__label{font-size:var(--text-label-md);color:var(--text-muted);letter-spacing:var(--tracking-wider);text-transform:uppercase;margin-bottom:var(--space-3)}.consent-scopes__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2)}.consent-scopes__item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface-container-high);border-radius:var(--radius-default);font-size:var(--text-body-md);color:var(--text-primary)}.consent-scopes__item:before{content:"✓";color:var(--accent);font-weight:var(--weight-bold)}.consent-actions{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.consent-btn{width:100%;padding:var(--space-4) var(--space-6);font-family:var(--font-family);font-size:var(--text-body-lg);font-weight:var(--weight-medium);border:none;border-radius:var(--radius-default);cursor:pointer;transition:background .15s ease}.consent-btn:disabled{opacity:.5;cursor:not-allowed}.consent-btn--primary{background:var(--accent);color:var(--on-accent)}.consent-btn--primary:hover:not(:disabled){background:var(--accent-hover)}.consent-btn--secondary{background:none;color:var(--text-muted)}.consent-btn--secondary:hover:not(:disabled){background:var(--surface-container-high);color:var(--text-primary)}.consent-error{font-size:var(--text-body-sm);color:var(--destructive-text);text-align:center}.invite-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:var(--space-6);background:var(--surface)}.invite-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);width:100%;max-width:24rem;padding:var(--space-10);background:var(--card-bg);border-radius:var(--radius-xl);text-align:center}.invite-icon{font-size:var(--text-display-sm);line-height:1}.invite-title{font-size:var(--text-headline-md);font-weight:var(--weight-bold);color:var(--text-primary);letter-spacing:var(--tracking-tight);margin:0}.invite-desc{font-size:var(--text-body-md);color:var(--text-secondary);line-height:var(--leading-relaxed);margin:0}.invite-org-name{font-size:var(--text-headline-sm);font-weight:var(--weight-semibold);color:var(--accent);margin:0}.invite-role{font-size:var(--text-body-md);color:var(--text-muted);margin:0}.invite-role-badge{display:inline-block;padding:var(--space-0_5) var(--space-2);background:var(--success-container);color:var(--on-success);border-radius:var(--radius-pill);font-size:var(--text-label-md);font-weight:var(--weight-medium);text-transform:capitalize}.invite-actions{display:flex;flex-direction:column;gap:var(--space-2);width:100%;margin-top:var(--space-4)}.invite-btn{width:100%;padding:var(--space-4) var(--space-6);font-family:var(--font-family);font-size:var(--text-body-lg);font-weight:var(--weight-medium);border:none;border-radius:var(--radius-default);cursor:pointer;transition:background .15s ease}.invite-btn--primary{background:var(--accent);color:var(--on-accent)}.invite-btn--primary:hover{filter:brightness(1.1)}.invite-btn--secondary{background:var(--surface-container-high);color:var(--text-primary)}.invite-btn--secondary:hover{background:var(--surface-container-highest)}.invite-btn:disabled{opacity:.5;cursor:not-allowed}.invite-signed-in{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-4);background:var(--surface-container-low);border-radius:var(--radius-lg)}.invite-signed-in__user{display:flex;align-items:center;gap:var(--space-3)}.invite-signed-in__avatar{width:2.5rem;height:2.5rem;border-radius:var(--radius-full);object-fit:cover;flex-shrink:0}.invite-signed-in__avatar--fallback{display:flex;align-items:center;justify-content:center;background:var(--surface-container-highest);color:var(--text-primary);font-size:var(--text-body-lg);font-weight:var(--weight-semibold)}.invite-signed-in__info{display:flex;flex-direction:column;text-align:left}.invite-signed-in__name{font-size:var(--text-body-md);font-weight:var(--weight-medium);color:var(--text-primary)}.invite-signed-in__email{font-size:var(--text-body-sm);color:var(--text-muted)}.invite-switch-btn{background:none;border:none;color:var(--accent);font-family:var(--font-family);font-size:var(--text-body-sm);font-weight:var(--weight-medium);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:background .15s}.invite-switch-btn:hover{background:var(--interactive-hover)}.invite-error{font-size:var(--text-body-sm);color:var(--destructive-text);margin:0}.invite-loading{font-size:var(--text-body-md);color:var(--text-muted);padding:var(--space-8)}.merge-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--space-4)}.merge-modal{background:var(--surface-container);border-radius:var(--radius-xl);width:100%;max-width:28rem;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);box-shadow:var(--glow-accent-strong)}.merge-modal__title{font-size:var(--text-title-lg);font-weight:var(--weight-semibold);color:var(--text-primary);margin:0}.merge-modal__desc{font-size:var(--text-body-md);color:var(--text-secondary);margin:0;line-height:var(--leading-relaxed)}.merge-modal__loading{font-size:var(--text-body-md);color:var(--text-muted);margin:0}.merge-modal__note{font-size:var(--text-body-sm);color:var(--text-muted);margin:0;line-height:var(--leading-relaxed)}.merge-modal__error{font-size:var(--text-body-sm);color:var(--destructive-text);margin:0}.merge-options{display:flex;flex-direction:column;gap:var(--space-1);background:var(--surface-container-low);border-radius:var(--radius-lg);overflow:hidden}.merge-option{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3_5) var(--space-4);cursor:pointer;transition:background .15s}.merge-option:hover{background:var(--surface-container)}.merge-option__checkbox{width:1.25rem;height:1.25rem;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.merge-option__label{flex:1;font-size:var(--text-body-md);font-weight:var(--weight-medium);color:var(--text-primary)}.merge-option__count{font-size:var(--text-body-sm);color:var(--text-muted);background:var(--badge-bg);padding:var(--space-0_5) var(--space-2);border-radius:var(--radius-pill)}.merge-modal__actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}.merge-modal__btn{padding:var(--space-2_5) var(--space-5);border:none;border-radius:var(--radius-default);font-family:var(--font-family);font-size:var(--text-body-md);font-weight:var(--weight-medium);cursor:pointer;transition:background .15s,filter .15s}.merge-modal__btn--cancel{background:var(--surface-container-high);color:var(--text-primary)}.merge-modal__btn--cancel:hover{background:var(--surface-container-highest)}.merge-modal__btn--confirm{background:var(--accent);color:var(--on-accent);font-weight:var(--weight-semibold)}.merge-modal__btn--confirm:hover:not(:disabled){filter:brightness(1.1)}.merge-modal__btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:640px){.invite-btn{min-height:var(--space-11)}.merge-modal{width:95%}.merge-modal__btn{min-height:var(--space-11)}.merge-option{padding:var(--space-4);min-height:var(--space-11)}}.household-page{display:flex;max-width:44rem;flex-direction:column;gap:var(--space-4);color:var(--ledger-ink)}.household-page .page-header{margin-bottom:0;padding:var(--space-3);border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-panel)}.household-page .page-title{margin:0;color:var(--ledger-ink);font-size:var(--text-headline-sm);font-weight:var(--weight-extrabold);line-height:var(--leading-tight)}.household-page .page-subtitle{margin:var(--space-1) 0 0;color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-bold)}.household-section{border:var(--ledger-rule-heavy) solid var(--ledger-line);background:var(--ledger-paper-strong)}.household-section-title{margin:0;padding:var(--space-2) var(--space-3);border-bottom:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-panel);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);letter-spacing:var(--tracking-normal)}.household-members,.household-invites-for-me,.household-invitations{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3)}.household-member,.household-invite-for-me,.household-invitation{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:var(--ledger-rule) solid var(--ledger-line-soft);background:var(--ledger-paper)}.household-member__info,.household-invitation__info,.household-invite-for-me__info,.household-invitation__meta,.household-invite-link-row{display:flex;align-items:center;gap:var(--space-3);min-width:0}.household-member__avatar{width:var(--space-10);height:var(--space-10);flex-shrink:0;border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;object-fit:cover}.household-member__avatar--fallback{display:flex;align-items:center;justify-content:center;background:var(--ledger-herb-soft);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-body-sm);font-weight:var(--weight-extrabold)}.household-member__text{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--space-0_5)}.household-member__name,.household-invitation__email,.household-invite-for-me__org{color:var(--ledger-ink);font-size:var(--text-body-lg);font-weight:var(--weight-bold)}.household-member__you,.household-member__email,.household-invite-for-me__from,.household-invite-for-me__meta,.household-invitation__meta,.household-invite-hint,.household-invite-result-note{color:var(--ledger-muted);font-size:var(--text-body-sm)}.household-member__email,.household-invitation__email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.household-member__role,.household-invitation__status{margin-left:auto;padding:var(--space-1) var(--space-2);border:var(--ledger-rule) solid var(--ledger-line);background:var(--ledger-paper-strong);color:var(--ledger-ink);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold);text-transform:capitalize}.household-member__role--owner,.household-invitation__status--accepted{background:var(--ledger-herb-soft)}.household-invitation__status--pending{background:var(--ledger-citrus)}.household-invitation__status--revoked,.household-invitation__status--expired{color:var(--ledger-muted)}.household-invite-form{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3)}.household-invite-hint{margin:0;line-height:var(--leading-normal)}.household-invite-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2)}.household-invite-input{min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paper);color:var(--ledger-ink);font:inherit;font-size:var(--text-body-md)}.household-invite-input::placeholder{color:var(--ledger-muted)}.household-invite-input:focus{outline:var(--ledger-rule) solid var(--ledger-citrus);outline-offset:var(--space-0_5)}.household-invite-btn,.household-invite-for-me__accept,.household-invite-copy-btn,.household-invitation__revoke{min-height:var(--space-10);padding:var(--space-2) var(--space-3);border:var(--ledger-rule) solid var(--ledger-line);border-radius:0;background:var(--ledger-paprika);color:var(--primary);font-family:var(--font-mono);font-size:var(--text-label-md);font-weight:var(--weight-extrabold);cursor:pointer}.household-invite-btn:hover:not(:disabled),.household-invite-for-me__accept:hover,.household-invite-copy-btn:hover{background:var(--ledger-citrus);color:var(--ledger-ink)}.household-invite-btn:disabled,.household-invitation__revoke:disabled{opacity:.5;cursor:not-allowed}.household-invitation__revoke{align-self:flex-start;background:var(--ledger-paper);color:var(--destructive-text)}.household-invitation__revoke:hover:not(:disabled){background:var(--destructive-hover)}.household-invite-error{margin:0;color:var(--destructive-text);font-size:var(--text-body-sm)}.household-invite-result{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:var(--ledger-rule) solid var(--ledger-line-soft);background:var(--ledger-panel-warm)}.household-invite-result-label{margin:0;color:var(--ledger-muted);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:var(--weight-extrabold)}.household-invite-link{flex:1;min-width:0;color:var(--ledger-blue-pencil);font-family:var(--font-mono);font-size:var(--text-body-sm);line-height:var(--leading-normal);overflow-wrap:anywhere}@media(max-width:640px){.household-invite-row,.household-invite-link-row{grid-template-columns:1fr;flex-direction:column;align-items:stretch}.household-member__info,.household-invitation__info{align-items:flex-start}.household-member__role,.household-invitation__status{margin-left:0}}.not-found-page{display:flex;align-items:center;justify-content:center;min-height:60vh}.not-found-content{text-align:center;max-width:24rem;padding:var(--space-8)}.not-found-icon{font-size:3rem;display:block;margin-bottom:var(--space-4)}.not-found-title{font-size:var(--text-headline-md);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--space-3)}.not-found-desc{font-size:var(--text-body-md);color:var(--text-muted);margin-bottom:var(--space-6);line-height:var(--leading-relaxed, 1.6)}.not-found-link{font-size:var(--text-body-md);font-weight:var(--weight-medium);color:var(--accent);text-decoration:none}.not-found-link:hover{text-decoration:underline}
