:root{--cream: #fdfbf7;--paper: #ffffff;--paper-2: #f7f2ea;--line: #eae3da;--line-strong: #ded4c7;--ink: #1a1614;--ink-2: #635b55;--ink-3: #9c948e;--on-dark: #fdfbf7;--on-dark-2: rgba(253, 251, 247, .78);--accent: #c4552f;--accent-dark: #a3421f;--accent-tint: #faede7;--sage: #5c7053;--sage-tint: #edf2ea;--amber: #b3822c;--amber-tint: #fbf2e1;--berry: #a93244;--berry-tint: #faebed;--sh-1: 0 1px 2px rgba(60, 40, 25, .05);--sh-2: 0 4px 16px rgba(60, 40, 25, .07);--sh-3: 0 12px 32px rgba(60, 40, 25, .1);--sh-4: 0 20px 48px rgba(60, 40, 25, .16);--r-sm: 12px;--r-md: 18px;--r-lg: 24px;--r-xl: 32px;--r-pill: 999px;--ease: cubic-bezier(.2, .7, .3, 1);--fast: .14s;--base: .24s;--font-body: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", system-ui, sans-serif;--font-display: "Gowun Batang", "Pretendard Variable", Pretendard, serif;--bg: var(--cream);--surface: var(--paper);--surface-alt: var(--paper-2);--border: var(--line);--text: var(--ink);--text-muted: var(--ink-2);--primary: var(--accent);--primary-dark: var(--accent-dark);--primary-contrast: #fff;--danger: var(--berry);--danger-bg: var(--berry-tint);--warn: var(--amber);--warn-bg: var(--amber-tint);--ok-bg: var(--sage-tint);--ok-text: var(--sage);--match-bg: var(--accent-tint);--match-text: var(--accent);--shadow: var(--sh-2);--radius: var(--r-md);--radius-sm: var(--r-sm)}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6;letter-spacing:-.01em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{max-width:560px;margin:0 auto;min-height:100vh;background:var(--cream);position:relative}button,input,textarea{font-family:inherit;letter-spacing:inherit}img{max-width:100%}.page-title{font-family:var(--font-display);font-size:1.95rem;font-weight:700;line-height:1.22;letter-spacing:-.02em;color:var(--ink);margin:0 0 4px}.page-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:18px}.page-title-row .page-title{margin-bottom:0}.section-title{display:flex;align-items:center;gap:10px;font-size:.78rem;font-weight:700;letter-spacing:.04em;color:var(--ink-3);margin:0 0 12px}.section-title:after{content:"";flex:1;height:1px;background:var(--line)}.muted{color:var(--ink-2);font-size:.92rem}.error-text{color:var(--berry);font-size:.9rem;margin:8px 0}.success-text{color:var(--sage);font-size:.9rem;margin:8px 0;font-weight:600}.notice-line,.meta-line{text-align:center;color:var(--ink-3);font-size:.85rem;margin:18px 0 4px}.field-label{display:block;font-size:.78rem;font-weight:700;letter-spacing:.03em;color:var(--ink-3);margin-bottom:8px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app-shell{min-height:100vh;padding-bottom:124px}.app-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;row-gap:2px;padding:14px 20px;background:#fdfbf7db;backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--line)}.app-header-title{font-family:var(--font-display);font-size:1.06rem;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.app-header-user{display:flex;align-items:center;gap:6px;justify-content:flex-end;font-size:.82rem;color:var(--ink-3);min-width:0}.app-header-name{max-width:8.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--ink-2);margin-right:4px}.header-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--paper);font-size:.95rem;line-height:1;cursor:pointer;transition:background var(--fast) var(--ease)}.header-icon-btn:active{background:var(--paper-2)}.app-content{padding:0}.page{padding:22px 20px 8px}.tab-bar{position:fixed;left:50%;transform:translate(-50%);bottom:max(14px,env(safe-area-inset-bottom));z-index:40;display:flex;gap:4px;padding:7px;width:min(calc(100% - 32px),460px);background:#1a1614e6;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border-radius:var(--r-pill);box-shadow:var(--sh-4)}.tab-bar a,.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 7px;border-radius:var(--r-pill);text-decoration:none;color:#fdfbf79e;transition:color var(--fast) var(--ease),background var(--fast) var(--ease)}.tab-item-active{color:var(--on-dark);background:#fdfbf724}.tab-icon{font-size:1.15rem;line-height:1}.tab-label{font-size:.68rem;font-weight:600;letter-spacing:.02em}.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:52px;padding:14px 20px;border:none;border-radius:var(--r-pill);background:var(--accent);color:#fff;font-size:1rem;font-weight:700;letter-spacing:-.01em;cursor:pointer;box-shadow:0 6px 18px #c4552f42;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),background var(--fast) var(--ease)}.primary-btn:active:not(:disabled){transform:translateY(1px) scale(.99);box-shadow:0 3px 10px #c4552f38}.primary-btn:disabled{background:var(--paper-2);color:var(--ink-3);box-shadow:none;cursor:not-allowed}.secondary-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:12px 18px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--paper);color:var(--ink);font-size:.92rem;font-weight:600;cursor:pointer;transition:background var(--fast) var(--ease),transform var(--fast) var(--ease)}.secondary-btn:active:not(:disabled){transform:translateY(1px);background:var(--paper-2)}.secondary-btn:disabled{color:var(--ink-3);cursor:not-allowed}.link-btn{min-height:40px;display:inline-flex;align-items:center;gap:4px;padding:4px 0;border:none;background:none;color:var(--ink-2);font-size:.85rem;font-weight:600;cursor:pointer;transition:color var(--fast) var(--ease)}.link-btn:active{color:var(--accent)}.back-btn{color:var(--ink-2);margin-bottom:6px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 14px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--paper);color:var(--ink-2);font-size:.82rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.icon-btn:active:not(:disabled){background:var(--paper-2)}.icon-btn:disabled{opacity:.55;cursor:not-allowed}.danger-btn{border-color:transparent;background:var(--berry-tint);color:var(--berry)}.refresh-btn{border-color:var(--line)}.more-btn{width:100%;margin-top:14px}.text-input{width:100%;min-height:52px;padding:14px 18px;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper);color:var(--ink);font-size:1rem;outline:none;transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.text-input::placeholder{color:var(--ink-3)}.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-tint)}.add-form{display:flex;gap:8px;align-items:stretch}.add-form .text-input{flex:1}.add-btn{width:auto;min-width:84px;padding:12px 18px;min-height:52px}.segmented{display:flex;gap:4px;padding:5px;background:var(--paper-2);border-radius:var(--r-pill);margin-bottom:14px}.segment-btn{flex:1;min-height:42px;padding:10px 12px;border:none;border-radius:var(--r-pill);background:transparent;color:var(--ink-2);font-size:.9rem;font-weight:600;cursor:pointer;transition:all var(--fast) var(--ease)}.segment-btn-active{background:var(--ink);color:var(--on-dark);box-shadow:var(--sh-2)}.chip-row{display:flex;flex-wrap:wrap;gap:7px}.scroll-row{flex-wrap:nowrap;overflow-x:auto;padding-bottom:8px;margin-bottom:6px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.scroll-row::-webkit-scrollbar{height:3px}.scroll-row::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}.chip{display:inline-flex;align-items:center;gap:5px;padding:8px 13px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--paper);color:var(--ink-2);font-size:.85rem;font-weight:600;white-space:nowrap;cursor:default}.chip-toggle,.chip-filter,.chip-selectable,.chip-removable{cursor:pointer;transition:all var(--fast) var(--ease)}.chip-toggle:active,.chip-filter:active,.chip-selectable:active{transform:scale(.96)}.chip-toggle-active{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.chip-toggle-pending{opacity:.5}.chip-filter-active{background:var(--accent);border-color:var(--accent);color:#fff}.chip-missing{background:var(--berry-tint);border-color:transparent;color:var(--berry)}.chip-shared{background:var(--sage-tint);border-color:transparent;color:var(--sage)}.chip-removable{background:var(--ink);border-color:var(--ink);color:var(--on-dark)}.chip-category{margin-bottom:16px}.chip-category-label{font-size:.76rem;font-weight:700;letter-spacing:.03em;color:var(--ink-3);margin:0 0 8px}.chip-search{margin-bottom:14px}.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--r-pill);font-size:.74rem;font-weight:700;letter-spacing:.01em;white-space:nowrap}.badge-ok{background:var(--sage-tint);color:var(--sage)}.badge-warn{background:var(--amber-tint);color:var(--amber)}.badge-danger{background:var(--berry-tint);color:var(--berry)}.badge-match{background:var(--ink);color:var(--on-dark)}.badge-fav{background:var(--accent-tint);color:var(--accent)}.login-page{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding:28px 22px max(30px,env(safe-area-inset-bottom));background:var(--ink);overflow:hidden}.login-hero{position:absolute;top:-30px;right:-30px;bottom:-30px;left:-30px;background-size:cover;background-position:center 62%;filter:blur(5px) saturate(1.16) brightness(.98);transform:scale(1.1);animation:heroDrift 20s ease-in-out infinite alternate}@keyframes heroDrift{0%{transform:scale(1.1) translateY(0)}to{transform:scale(1.18) translateY(-12px)}}.login-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#1a16144d,#1a16148f 42%,#1a1614eb 78%,#1a1614)}.login-content,.login-card{position:relative;z-index:2}.login-brand{font-size:.76rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--on-dark-2);margin-bottom:10px}.login-title{font-family:var(--font-display);font-size:2.3rem;font-weight:700;line-height:1.24;letter-spacing:-.02em;color:var(--on-dark);margin:0 0 8px}.login-subtitle{color:var(--on-dark-2);font-size:.95rem;margin:0 0 22px}.family-grid{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.family-card{display:flex;align-items:center;gap:13px;width:100%;padding:14px 16px;border:1px solid rgba(253,251,247,.16);border-radius:var(--r-md);background:#fdfbf717;backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);color:var(--on-dark);font-size:1rem;font-weight:600;text-align:left;cursor:pointer;transition:all var(--base) var(--ease)}.family-card:active{transform:scale(.99)}.family-card-selected{background:#fdfbf7f5;border-color:transparent;color:var(--ink);box-shadow:var(--sh-3)}.family-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--r-pill);background:#fdfbf72e;color:var(--on-dark);font-size:1.05rem;font-weight:700;flex-shrink:0}.family-card-selected .family-avatar{background:var(--accent);color:#fff}.family-name{flex:1}.family-check{color:var(--accent);font-size:1.1rem}.login-form{display:flex;flex-direction:column;gap:14px}.pin-field{position:relative;padding:14px 0 10px;border-radius:var(--r-md)}.pin-field:focus-within .pin-dot{border-color:#fdfbf7b3}.pin-dots{display:flex;justify-content:center;gap:18px;pointer-events:none}.pin-hint{margin:12px 0 0;text-align:center;font-size:.8rem;color:#fdfbf780;pointer-events:none}.pin-dot{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(253,251,247,.45);transition:all var(--fast) var(--ease)}.pin-dot-filled{background:var(--on-dark);border-color:var(--on-dark);transform:scale(1.1)}.pin-input{text-align:center;letter-spacing:.4em;font-size:1.05rem}.pin-input::placeholder{letter-spacing:.02em}.login-page .pin-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:0;padding:0;border:none;background:transparent;color:transparent;caret-color:transparent;font-size:16px;letter-spacing:normal;cursor:pointer;outline:none;box-shadow:none}.login-page .pin-input:focus,.login-page .pin-input:focus-visible{border:none;box-shadow:none;outline:none}.login-page .error-text{color:#ffb3ab}.login-page .muted{color:var(--on-dark-2)}.briefing-card{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:22px 20px 20px;margin-bottom:22px;background:linear-gradient(155deg,#2a2320,#1a1614 60%,#241d19);color:var(--on-dark);box-shadow:var(--sh-3)}.briefing-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:var(--hero, none);background-size:cover;background-position:center;opacity:.42}.briefing-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(170deg,#1a16146b,#1a1614c2 55%,#1a1614f2)}.briefing-card>*{position:relative;z-index:1}.briefing-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.briefing-title{font-size:.76rem;font-weight:700;letter-spacing:.06em;color:var(--on-dark-2);margin:0}.briefing-weather{font-size:.82rem;color:var(--on-dark-2);white-space:nowrap}.briefing-message{font-family:var(--font-display);font-size:1.42rem;font-weight:400;line-height:1.44;letter-spacing:-.01em;color:var(--on-dark);margin:0 0 18px}.briefing-message strong{font-weight:700;color:#ffcbb4}.briefing-mealset-mini{display:flex;flex-direction:column;gap:2px;padding-top:4px;border-top:1px solid rgba(253,251,247,.16)}.briefing-mealset-row{display:flex;align-items:center;gap:10px;width:100%;padding:11px 2px;border:none;border-bottom:1px solid rgba(253,251,247,.09);background:none;color:var(--on-dark);font-size:.95rem;font-weight:500;text-align:left;cursor:pointer;transition:opacity var(--fast) var(--ease)}.briefing-mealset-row:last-child{border-bottom:none}.briefing-mealset-row:active{opacity:.6}.briefing-mealset-row .mealset-row-title,.briefing-mealset-row .recipe-title{color:var(--on-dark);font-weight:500}.briefing-mealset-row .mealset-row-time{color:var(--on-dark-2)}.briefing-mealset-row .mealset-thumb{width:46px;height:46px}.briefing-alt-btn{margin-top:14px;border-color:#fdfbf747;background:#fdfbf714;color:var(--on-dark);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.briefing-card-loading,.briefing-card-error{border-radius:var(--r-lg);padding:28px 20px;margin-bottom:22px;background:var(--paper-2);color:var(--ink-2);text-align:center;font-size:.92rem}.expiring-banner{display:flex;align-items:flex-start;gap:11px;padding:13px 16px;border-radius:var(--r-md);background:var(--amber-tint);border:1px solid rgba(179,130,44,.2);margin-bottom:18px}.expiring-banner-icon{font-size:1.05rem;line-height:1.4}.expiring-banner-text{font-size:.89rem;line-height:1.5;color:#7a5716}.expiring-item{font-weight:700}.expiring-red{color:var(--berry)}.expiring-yellow{color:var(--amber)}.recipe-list{display:flex;flex-direction:column;gap:22px}.recipe-card{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--paper);box-shadow:var(--sh-2);transition:transform var(--base) var(--ease),box-shadow var(--base) var(--ease)}.recipe-card-clickable{cursor:pointer}.recipe-card-clickable:active{transform:scale(.985);box-shadow:var(--sh-1)}.recipe-image{display:block;width:100%;height:216px;object-fit:cover;background:var(--paper-2)}.recipe-image-placeholder{display:flex;align-items:center;justify-content:center;font-size:2.4rem;color:var(--ink-3)}.recipe-body{padding:16px 18px 18px}.recipe-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.recipe-head-badges{display:flex;align-items:center;gap:6px;flex-shrink:0}.recipe-title{font-size:1.12rem;font-weight:700;line-height:1.38;letter-spacing:-.02em;color:var(--ink);margin:0}.recipe-reason{font-size:.9rem;line-height:1.55;color:var(--ink-2);margin:8px 0 0}.recipe-tip{display:flex;gap:7px;font-size:.87rem;line-height:1.55;color:var(--ink-2);background:var(--paper-2);border-radius:var(--r-sm);padding:10px 12px;margin:12px 0 0}.recipe-open-hint{display:inline-block;margin-top:12px;font-size:.82rem;font-weight:700;color:var(--accent);letter-spacing:-.01em}.recipe-link{display:inline-block;color:var(--accent);font-size:.87rem;font-weight:600;text-decoration:none}.source-link-minor{display:block;margin:26px 0 8px;text-align:center;color:var(--ink-3);font-size:.82rem;font-weight:500}.mealset-list{display:flex;flex-direction:column;gap:18px}.mealset-card{border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--sh-2);padding:0 0 8px;overflow:hidden;transition:box-shadow var(--base) var(--ease)}.mealset-hero{position:relative;height:170px;overflow:hidden}.mealset-hero img{width:100%;height:100%;object-fit:cover;display:block}.mealset-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#1a161400 45%,#1a16148c)}.mealset-hero-label{position:absolute;left:14px;bottom:11px;z-index:1;font-size:.74rem;font-weight:700;letter-spacing:.14em;color:var(--on-dark);text-shadow:0 1px 6px rgba(0,0,0,.4)}.mealset-card .mealset-head,.mealset-card .mealset-missing-row{padding:0 16px}.mealset-card .mealset-head{padding-top:14px}.mealset-card .mealset-row{padding-left:16px;padding-right:16px}.mealset-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:10px}.mealset-head .mealset-total-time,.mealset-head .chip{height:28px;padding:0 12px;font-size:.76rem;font-weight:700;letter-spacing:.01em;line-height:1;display:inline-flex;align-items:center}.mealset-head .mealset-shared-row{margin-bottom:0;gap:6px}.mealset-total-time{display:inline-flex;align-items:center;padding:5px 12px;border-radius:var(--r-pill);background:var(--ink);color:var(--on-dark);font-size:.76rem;font-weight:700;letter-spacing:.02em}.mealset-shared-row,.mealset-missing-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.mealset-row{display:flex;align-items:center;gap:12px;width:100%;padding:11px 4px;border:none;border-top:1px solid var(--line);background:none;text-align:left;cursor:pointer;transition:background var(--fast) var(--ease)}.mealset-row:active{background:var(--paper-2)}.mealset-thumb{width:54px;height:54px;border-radius:var(--r-sm);object-fit:cover;flex-shrink:0;background:var(--paper-2)}.mealset-thumb-placeholder{display:flex;align-items:center;justify-content:center;font-size:1.3rem;color:var(--ink-3)}.mealset-row-icon{font-size:1.05rem;flex-shrink:0}.mealset-row-title{flex:1;font-size:.97rem;font-weight:600;line-height:1.4;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mealset-row-time{font-size:.8rem;font-weight:600;color:var(--ink-3);flex-shrink:0}.recipe-detail-page{padding:0 0 20px}.recipe-detail-page .back-btn{margin:12px 0 4px 20px}.recipe-detail-image{display:block;width:100%;height:300px;object-fit:cover;background:var(--paper-2)}.recipe-detail-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:0 20px;margin-top:-34px;position:relative;z-index:2}.recipe-detail-title-row:before{content:"";position:absolute;left:0;right:0;top:-18px;bottom:-10px;background:var(--cream);border-radius:var(--r-xl) var(--r-xl) 0 0;z-index:-1}.recipe-detail-title{font-family:var(--font-display);font-size:1.62rem;font-weight:700;line-height:1.3;letter-spacing:-.02em;margin:0;padding-top:22px}.heart-btn{flex-shrink:0;width:46px;height:46px;margin-top:18px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--paper);color:var(--ink-3);font-size:1.3rem;line-height:1;cursor:pointer;box-shadow:var(--sh-1);transition:all var(--fast) var(--ease)}.heart-btn-active{color:var(--accent);border-color:var(--accent-tint);background:var(--accent-tint)}.heart-btn:active{transform:scale(.92)}.recipe-detail-badges{position:relative;z-index:2;padding:14px 20px 0;margin:0 0 16px;background:var(--cream)}.recipe-detail-section{padding:0 20px;margin-bottom:26px}.tip-box{display:flex;gap:8px;margin:0 20px 18px;padding:14px 16px;border-radius:var(--r-md);background:var(--amber-tint);color:#6f4f14;font-size:.92rem;line-height:1.6}.ing-section{margin-bottom:16px}.ing-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.ing-row{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--r-sm);font-size:.95rem;border-bottom:1px solid var(--line)}.ing-row:last-child{border-bottom:none}.ing-have{color:var(--ink)}.ing-have .ing-mark{color:var(--sage)}.ing-missing{background:var(--berry-tint);border-bottom-color:transparent;margin-bottom:1px;color:var(--ink)}.ing-missing .ing-mark{color:var(--berry)}.ing-mark{font-weight:700;flex-shrink:0;min-width:28px}.ing-name{flex:1;font-weight:500}.ing-qty{color:var(--ink-3);font-size:.87rem;font-weight:600;flex-shrink:0}.ing-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:.8rem;color:var(--ink-3)}.step-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:26px}.step-item{display:flex;flex-direction:column;gap:12px}.step-head{display:flex;gap:13px;align-items:flex-start}.step-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;border-radius:var(--r-pill);background:var(--ink);color:var(--on-dark);font-size:.82rem;font-weight:700}.step-text{margin:0;font-size:.97rem;line-height:1.68;color:var(--ink);padding-top:2px}.step-image{width:100%;border-radius:var(--r-md);object-fit:cover;box-shadow:var(--sh-1)}.advice-section{padding:0 20px;margin-bottom:22px}.chef-btn{background:var(--ink);box-shadow:0 6px 18px #1a161433}.chef-btn:active:not(:disabled){box-shadow:0 3px 10px #1a16142e}.chef-loading{text-align:center;padding:16px 0;color:var(--ink-2)}.advice-box{border-radius:var(--r-lg);background:linear-gradient(160deg,#2a2320,#1a1614);color:var(--on-dark);padding:20px 18px;box-shadow:var(--sh-3)}.advice-box .section-title{color:var(--on-dark-2)}.advice-box .section-title:after{background:#fdfbf733}.advice-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}.advice-item{padding-bottom:14px;border-bottom:1px solid rgba(253,251,247,.12)}.advice-item:last-child{border-bottom:none;padding-bottom:0}.advice-title{display:block;font-size:.98rem;font-weight:700;color:#ffcbb4;margin-bottom:5px}.advice-text{margin:0;font-size:.92rem;line-height:1.66;color:var(--on-dark-2)}.cooked-cta-row{padding:0 20px;margin-bottom:18px}.cooked-cta-btn{width:100%}.reaction-box{margin-top:14px;padding:16px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line);text-align:center}.reaction-prompt{font-size:.92rem;font-weight:600;color:var(--ink-2);margin:0 0 12px}.reaction-row{display:flex;gap:8px}.reaction-btn{flex:1;min-height:54px;padding:8px 6px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--cream);color:var(--ink);font-size:.86rem;font-weight:600;cursor:pointer;transition:all var(--fast) var(--ease)}.reaction-btn:active{transform:scale(.96);background:var(--accent-tint);border-color:var(--accent)}.ingredients-section,.tools-section,.freeform-items-section{margin-bottom:30px}.photo-add-row{display:flex;gap:8px;margin-bottom:14px}.photo-add-btn{flex:1;min-width:0;justify-content:center;min-height:48px;padding:12px 10px;border-style:dashed;border-color:var(--line-strong);color:var(--ink-2);font-size:.86rem;white-space:nowrap}.photo-file-input{display:none}.photo-loading{text-align:center;color:var(--ink-2);font-size:.9rem;padding:10px 0}.freeform-toggle-row{margin-top:6px}.freeform-box{margin-top:12px;padding:16px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line)}.suggestion-box{margin-top:12px}.pantry-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.pantry-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line)}.pantry-item-main{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.pantry-item-name{font-weight:600}.pantry-item-qty{color:var(--ink-3);font-size:.87rem}.dish-result-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.dish-result-item{display:flex;align-items:center;gap:13px;width:100%;padding:11px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);text-align:left;cursor:pointer;transition:all var(--fast) var(--ease)}.dish-result-item:active{transform:scale(.99);background:var(--paper-2)}.dish-thumb{width:62px;height:62px;border-radius:var(--r-sm);object-fit:cover;flex-shrink:0;background:var(--paper-2)}.dish-thumb-placeholder{display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:var(--ink-3)}.dish-result-text{display:flex;flex-direction:column;gap:3px;min-width:0}.dish-result-title{font-size:.97rem;font-weight:600;line-height:1.4;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.dish-result-type{font-size:.78rem;font-weight:600;color:var(--ink-3)}.shopping-list{display:flex;flex-direction:column;gap:18px;margin-top:16px}.shop-section{padding:16px 16px 8px;border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--sh-1)}.shop-section-buy{background:#fff7f3;box-shadow:0 0 0 1.5px #c4552f38,var(--sh-2)}.check-row{display:flex;align-items:center;gap:13px;padding:14px 4px;border-bottom:1px solid var(--line);cursor:pointer;font-size:1.02rem}.check-row:last-child{border-bottom:none}.check-row input[type=checkbox]{width:23px;height:23px;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.check-row-name{flex:1;font-weight:500}.check-row-buy .check-row-name{font-weight:700}.check-row-qty{color:var(--ink-3);font-size:.87rem;font-weight:600}.check-row-done .check-row-name{text-decoration:line-through;color:var(--ink-3);font-weight:500}.recipe-view-btn{margin:6px 0 4px}.history-page .history-section{margin-bottom:32px}.favorite-grid,.loved-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.favorite-card{border:none;padding:0;border-radius:var(--r-md);overflow:hidden;background:var(--paper);box-shadow:var(--sh-1);text-align:left;cursor:pointer;transition:transform var(--fast) var(--ease)}.favorite-card:active{transform:scale(.97)}.favorite-card-image{width:100%;height:108px;object-fit:cover;display:block;background:var(--paper-2)}.favorite-card-title{display:-webkit-box;padding:10px 12px 12px;font-size:.88rem;font-weight:600;line-height:1.4;color:var(--ink);overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cooked-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.cooked-item{display:flex;align-items:center;gap:13px;width:100%;padding:10px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);text-align:left;cursor:pointer}.cooked-item:active{background:var(--paper-2)}.cooked-item-image{width:52px;height:52px;border-radius:var(--r-sm);object-fit:cover;flex-shrink:0;background:var(--paper-2)}.cooked-item-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.cooked-item-title{font-size:.94rem;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cooked-item-date{font-size:.78rem;color:var(--ink-3);font-weight:500}.cooked-loading{padding:10px 0}.leftover-section{margin-top:8px}.leftover-ideas{display:flex;flex-direction:column;gap:12px;margin-top:14px}.leftover-idea-card{padding:16px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line);box-shadow:var(--sh-1)}.leftover-idea-card .advice-title{color:var(--accent)}.leftover-idea-card .advice-text{color:var(--ink-2)}.leftover-idea-card .advice-item{border-bottom-color:var(--line)}.leftover-idea-card .section-title{color:var(--ink-3)}.leftover-idea-card .section-title:after{background:var(--line)}.leftover-idea-card strong{display:block;font-size:1rem;font-weight:700;color:var(--accent);margin-bottom:6px}.leftover-related-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.leftover-error-box{margin-top:12px}.chef-ask-section{margin-bottom:16px}.chef-ask-toggle{width:100%;justify-content:center;min-height:48px;border-style:dashed;border-color:var(--line-strong);font-size:.92rem;color:var(--ink-2)}.chef-ask-form{display:flex;gap:8px;margin-top:12px}.chef-ask-form .text-input{flex:1}.chef-ask-panel{margin-top:14px;padding:18px 16px;border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--sh-2)}.chef-ask-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.chef-reply-bubble{padding:14px 16px;border-radius:var(--r-md);background:var(--ink);color:var(--on-dark);font-size:.95rem;line-height:1.6;margin-bottom:18px}.chef-ask-recs{display:flex;flex-direction:column;gap:16px}.chef-ask-keyword-section{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.chef-ask-keyword-title{font-size:.78rem;font-weight:700;letter-spacing:.03em;color:var(--ink-3);margin:0 0 10px}.account-intro{color:var(--ink-2);font-size:.92rem;line-height:1.6;margin-bottom:18px}.account-list{display:flex;flex-direction:column;gap:10px}.account-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;border-radius:var(--r-md);background:var(--paper);border:1px solid var(--line);box-shadow:var(--sh-1)}.account-item-main{display:flex;align-items:center;gap:9px;font-weight:600;min-width:0}.account-actions{display:flex;gap:7px;flex-shrink:0}.account-edit-input{min-height:44px;padding:10px 14px}.account-confirm-text{font-size:.87rem;color:var(--berry);font-weight:600}.account-row-error{font-size:.84rem;color:var(--berry);padding:0 4px 8px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;background:#1a16148c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fadeIn var(--base) var(--ease)}.modal-box,.photo-modal-box{width:100%;max-width:420px;max-height:82vh;overflow-y:auto;padding:22px 20px;border-radius:var(--r-lg);background:var(--cream);box-shadow:var(--sh-4);animation:sheetUp var(--base) var(--ease)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.modal-head h3,.modal-head .section-title{margin:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sheetUp{0%{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:none}}.photo-detect-list{display:flex;flex-direction:column;gap:2px;margin-bottom:18px}.photo-detect-label{display:flex;align-items:center;gap:12px;padding:13px 6px;border-bottom:1px solid var(--line);cursor:pointer}.photo-detect-label:last-child{border-bottom:none}.photo-detect-label input[type=checkbox]{width:21px;height:21px;accent-color:var(--accent)}.photo-detect-name{flex:1;font-weight:600}.photo-detect-row-disabled{opacity:.5;cursor:not-allowed}.photo-confirm-btn{width:100%}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.browse-search{margin-bottom:14px}.badge-muted{background:var(--paper-2);color:var(--ink-3)}.browse-card-meta{margin:8px 0 0;font-size:.83rem}.browse-options-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}.browse-options-row .segmented{flex:1;min-width:140px;margin-bottom:0}.browse-avail-toggle,.browse-video-toggle{flex-shrink:0}.browse-search-note{font-size:.83rem;margin:-4px 0 10px}.browse-meta-line{margin:4px 0 14px}.browse-empty{text-align:center;padding:32px 12px}.badge-video{background:var(--accent-tint);color:var(--accent)}.browse-import-status,.browse-import-success{text-align:center;margin:4px 0 14px}.browse-import-error-row{display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px 0 18px;text-align:center}.browse-import-more-btn{width:100%;margin:4px 0 14px}.video-section{margin-top:-4px}.video-no-photos-note{margin:0 0 10px}.video-frame{position:relative;width:100%;aspect-ratio:16 / 9;border:0;border-radius:var(--r-md);overflow:hidden;background:var(--ink);box-shadow:var(--sh-2);margin-bottom:12px}.video-frame iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.video-watch-btn{width:100%}.collapsible-section{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;margin-top:16px;box-shadow:var(--shadow-1)}.section-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:0;background:none;border:0;cursor:pointer;text-align:left}.section-toggle .section-title{margin:0}.exclusion-summary{font-size:.82rem;white-space:nowrap}.exclusion-help{font-size:.82rem;line-height:1.6;margin:12px 0 4px}.exclusion-help strong{color:var(--ink)}.exclusion-selected{margin-top:4px}.exclusion-search{margin-top:12px}.week-intro{font-size:.86rem;line-height:1.6;margin-bottom:14px}.week-days{list-style:none;padding:0;margin:0;display:grid;gap:10px}.week-day-btn{display:flex;align-items:flex-start;gap:12px;width:100%;padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);cursor:pointer;text-align:left}.week-day-btn:hover{box-shadow:var(--shadow-2)}.week-day-label{flex:0 0 auto;font-family:var(--font-display);font-size:.82rem;color:var(--accent);padding-top:2px;min-width:62px}.week-day-body{display:flex;flex-direction:column;gap:4px;min-width:0}.week-day-title{font-weight:600;color:var(--ink);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.week-day-meta{font-size:.78rem}.week-cart{margin-top:22px;padding:16px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-lg)}.week-cart-list{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}.week-cart-item{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.week-cart-name{font-weight:600;color:var(--ink)}.week-cart-when{font-size:.76rem;text-align:right}.week-cart-note{font-size:.78rem;margin-top:12px;line-height:1.6}.week-refresh{margin-top:18px}.chip-low-stock{background:var(--amber-tint);border-color:var(--amber);color:var(--ink)}
