:root{--bg: #faf8f4;--surface: #ffffff;--surface-2: #f4f1ea;--surface-3: #ebe6dc;--border: #e9e3d9;--border-strong: #d9d2c5;--text: #211d18;--muted: #736c62;--faint: #9c958a;--accent: #2e7d54;--accent-hover: #266645;--accent-soft: #e7f2eb;--accent-border: #c1ddcc;--accent-text: #216344;--energy: #f47825;--energy-hover: #e0680f;--energy-soft: #ffedd8;--energy-border: #f6d3b0;--energy-text: #b4530c;--warn: #a45c12;--warn-soft: #fdf2e4;--warn-border: #f0dcc0;--danger: #b0342a;--danger-soft: #fceeec;--danger-border: #f2d5d1;--shadow-sm: 0 1px 2px rgba(28, 26, 23, .05);--shadow-md: 0 6px 20px rgba(28, 26, 23, .09);--shadow-lg: 0 20px 52px rgba(28, 26, 23, .17);--shadow-glow: 0 8px 24px rgba(244, 120, 37, .28);--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--r-xl: 24px;--r-full: 999px;--tint-1-bg: #fdeecd;--tint-1-fg: #8a5a12;--tint-2-bg: #d9f0dd;--tint-2-fg: #2f6d43;--tint-3-bg: #d0efec;--tint-3-fg: #266863;--tint-4-bg: #d9e9fb;--tint-4-fg: #2f5c8f;--tint-5-bg: #e6e1fb;--tint-5-fg: #55479b;--tint-6-bg: #fbe0ec;--tint-6-fg: #9b3b66;--tint-7-bg: #ffe3cf;--tint-7-fg: #a8551f;--tint-8-bg: #e6e3da;--tint-8-fg: #5c574c;--sidebar-w: 236px;--ease: cubic-bezier(.32, .72, 0, 1);color-scheme:light}:root[data-theme=dark]{--bg: #131211;--surface: #1b1a18;--surface-2: #232120;--surface-3: #2c2a27;--border: #2e2b28;--border-strong: #3d3936;--text: #f2efe9;--muted: #a7a199;--faint: #7c766e;--accent: #74b691;--accent-hover: #8bc7a4;--accent-soft: #1c2a23;--accent-border: #2f4a3c;--accent-text: #9ed4b5;--energy: #f6934f;--energy-hover: #f8a869;--energy-soft: #2c2016;--energy-border: #4d371f;--energy-text: #f2ac74;--warn: #e0a35c;--warn-soft: #2a2118;--warn-border: #4a3823;--danger: #e8837a;--danger-soft: #2c1c1a;--danger-border: #4d2b27;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 20px rgba(0, 0, 0, .5);--shadow-lg: 0 20px 52px rgba(0, 0, 0, .62);--shadow-glow: 0 8px 24px rgba(246, 147, 79, .22);--tint-1-bg: #3a3120;--tint-1-fg: #e6c78e;--tint-2-bg: #23342a;--tint-2-fg: #9cd3ac;--tint-3-bg: #21332f;--tint-3-fg: #91cec6;--tint-4-bg: #232f3d;--tint-4-fg: #9dc0e6;--tint-5-bg: #2c2941;--tint-5-fg: #b6abe6;--tint-6-bg: #3a2732;--tint-6-fg: #e3a3c1;--tint-7-bg: #3a2c1f;--tint-7-fg: #e6ab82;--tint-8-bg: #2f2c25;--tint-8-fg: #bdb6a6;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-weight:700;letter-spacing:-.025em;line-height:1.2}h1{font-size:27px}h2{font-size:19px}h3{font-size:16px}::selection{background:var(--accent-soft);color:var(--accent-text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-full);border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:flex;min-height:100%}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 14px 16px;z-index:30}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 22px}.brand-mark{width:30px;height:30px;color:var(--accent);display:block;flex:none}.brand-name{font-weight:660;letter-spacing:-.02em;font-size:16px}.nav{display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:var(--r-md);color:var(--muted);font-weight:520;transition:background .14s var(--ease),color .14s var(--ease);position:relative}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--accent-soft);color:var(--accent-text);font-weight:600}.nav-link .icon{flex:none}.nav-count{margin-left:auto;font-size:12px;font-weight:600;color:var(--faint);background:var(--surface-2);border-radius:var(--r-full);padding:1px 7px}.nav-link.active .nav-count{background:var(--surface);color:var(--accent-text)}.sidebar-footer{margin-top:auto;padding-top:14px}.main{flex:1;margin-left:var(--sidebar-w);min-width:0}.page{max-width:1060px;margin:0 auto;padding:34px 32px 96px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.page-title{display:flex;flex-direction:column;gap:4px}.page-sub{color:var(--muted);font-size:14px}.section{margin-top:32px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-head h2{font-size:15px;font-weight:640;letter-spacing:-.01em}.eyebrow{font-size:11px;font-weight:660;letter-spacing:.07em;text-transform:uppercase;color:var(--faint)}.mobile-bar,.tabbar{display:none}@media (max-width: 860px){.sidebar{display:none}.main{margin-left:0}.page{padding:14px 16px 96px}.mobile-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;position:sticky;top:0;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border);z-index:20}.tabbar{display:grid;grid-auto-flow:column;position:fixed;inset:auto 0 0 0;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:40}.tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:var(--r-md);color:var(--faint);font-size:10.5px;font-weight:560}.tab.active{color:var(--accent)}.page-head{flex-direction:column;align-items:stretch}h1{font-size:22px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px}.card-tight{padding:14px}.card-quiet{background:transparent;border-color:var(--border)}.grid{display:grid;gap:12px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}@media (max-width: 720px){.grid-3,.grid-2,.grid-auto{grid-template-columns:minmax(0,1fr)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 17px;border-radius:var(--r-full);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-weight:570;font-size:14px;cursor:pointer;white-space:nowrap;transition:background .14s var(--ease),border-color .14s var(--ease),box-shadow .16s var(--ease),transform .1s var(--ease),opacity .14s var(--ease)}.btn:hover{background:var(--surface-2)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}:root[data-theme=dark] .btn-primary{color:#10201a}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 32%,transparent)}.btn-energy{background:var(--energy);border-color:var(--energy);color:#fff}:root[data-theme=dark] .btn-energy{color:#241206}.btn-energy:hover{background:var(--energy-hover);border-color:var(--energy-hover);box-shadow:var(--shadow-glow)}.btn-ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-danger{color:var(--danger);border-color:var(--danger-border);background:transparent}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{height:31px;padding:0 13px;font-size:13px}.btn-lg{height:44px;padding:0 22px;font-size:15px}.btn-icon{width:34px;height:34px;padding:0;border-radius:var(--r-full)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:6px}.label{font-size:13px;font-weight:580;color:var(--text)}.hint{font-size:12.5px;color:var(--faint)}.input,.textarea,.select{width:100%;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:9px 12px;transition:border-color .14s var(--ease),box-shadow .14s var(--ease);font-size:14.5px}.input::placeholder,.textarea::placeholder{color:var(--faint)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-lg{height:46px;font-size:16px;padding:0 14px}.textarea{resize:vertical;min-height:110px;line-height:1.6;font-family:inherit}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:34px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236f6a61' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 11px center}.search{position:relative;flex:1;min-width:0}.search .input{padding-left:36px}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--faint);pointer-events:none}.checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:19px;height:19px;flex:none;border:1.5px solid var(--border-strong);border-radius:6px;background:var(--surface);cursor:pointer;display:grid;place-items:center;transition:background .14s var(--ease),border-color .14s var(--ease)}.checkbox:checked{background:var(--accent);border-color:var(--accent)}.checkbox:checked:after{content:"";width:10px;height:6px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:40px;height:23px;border-radius:var(--r-full);background:var(--border-strong);position:relative;cursor:pointer;transition:background .18s var(--ease);flex:none}.switch:after{content:"";position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .18s var(--ease)}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(17px)}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--r-full);border:1px solid var(--border-strong);background:var(--surface);color:var(--muted);font-size:13px;font-weight:540;cursor:pointer;white-space:nowrap;transition:all .14s var(--ease)}.chip:hover{background:var(--surface-2);color:var(--text)}.chip.active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent-text);font-weight:600}.chip-row{display:flex;gap:7px;flex-wrap:wrap}.chip-scroll{display:flex;gap:7px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chip-scroll::-webkit-scrollbar{display:none}.tag{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:var(--r-full);background:var(--surface-2);color:var(--muted);font-size:12px;font-weight:540}.tag-accent{background:var(--accent-soft);color:var(--accent-text)}.tag-warn{background:var(--warn-soft);color:var(--warn)}.notice{display:flex;gap:11px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);font-size:13.5px;animation:rise .22s var(--ease)}.notice-title{font-weight:620}.notice-body{color:var(--muted)}.notice .icon{flex:none;margin-top:1px}.notice-warn{background:var(--warn-soft);border-color:var(--warn-border);color:var(--warn)}.notice-warn .notice-body{color:color-mix(in srgb,var(--warn) 80%,var(--text))}.notice-accent{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent-text)}.notice-accent .notice-body{color:color-mix(in srgb,var(--accent-text) 78%,var(--text))}.notice-danger{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}@keyframes rise{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.row{display:flex;align-items:center;gap:12px;padding:12px 15px;border-bottom:1px solid var(--border);transition:background .12s var(--ease)}.row:last-child{border-bottom:0}.row-hover:hover{background:var(--surface-2)}.row-main{flex:1;min-width:0}.row-title{font-weight:560}.row-sub{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grocery-description{color:var(--warn);font-weight:600}.grocery-quantity{display:inline-flex;align-items:center;min-height:21px;padding:1px 8px;border-radius:var(--r-full);background:var(--accent-soft);color:var(--accent-text);font-weight:750;letter-spacing:.01em}.row-actions{display:flex;gap:4px;align-items:center;opacity:0;transition:opacity .14s var(--ease)}.row:hover .row-actions,.row:focus-within .row-actions{opacity:1}@media (hover: none){.row-actions{opacity:1}}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:10px}.item-card{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);transition:background .12s var(--ease),border-color .12s var(--ease)}.item-card:hover{background:var(--surface-2)}.item-card .row-main{flex:1;min-width:0}.item-card .row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-card .row-actions{opacity:1;flex:none;justify-content:flex-end}.item-card .row-actions:empty{display:none}@media (max-width: 560px){.item-grid{grid-template-columns:1fr}.item-card{gap:8px;padding:10px 12px}.item-card .row-actions{gap:2px}.item-card .row-actions .btn-sm{width:32px;height:32px;padding:0;border-radius:var(--r-md)}.item-card .row-actions .btn-label,.item-card .row-title .tag{display:none}}@media (max-width: 860px){.activity-clear{align-self:flex-end}}.food-emoji{flex:none;width:1.6em;font-size:16px;line-height:1;text-align:center;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.row-title .food-emoji{margin-right:6px;width:auto;font-size:15px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#18161357;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px;z-index:60;animation:fade .16s var(--ease)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);width:min(560px,100%);max-height:min(86vh,760px);display:flex;flex-direction:column;animation:pop .2s var(--ease)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 12px}.modal-body{padding:4px 20px 20px;overflow-y:auto}.modal-foot{display:flex;gap:8px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--border)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@media (max-width: 620px){.overlay{padding:0;align-items:flex-end}.modal{border-radius:var(--r-xl) var(--r-xl) 0 0;max-height:92vh;animation:sheet .24s var(--ease)}.modal-foot{padding-bottom:calc(14px + env(safe-area-inset-bottom))}}@keyframes sheet{0%{transform:translateY(100%)}to{transform:none}}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:52px 24px;color:var(--muted)}.empty-icon{width:46px;height:46px;border-radius:var(--r-lg);background:var(--surface-2);display:grid;place-items:center;color:var(--faint);margin-bottom:4px}.empty h3{color:var(--text)}.empty p{font-size:14px;max-width:40ch}.meter{height:5px;border-radius:var(--r-full);background:var(--surface-3);overflow:hidden}.meter-fill{height:100%;background:var(--accent);border-radius:var(--r-full);transition:width .4s var(--ease)}.divider{height:1px;background:var(--border)}.toast-wrap{position:fixed;left:50%;bottom:28px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}@media (max-width: 860px){.toast-wrap{bottom:calc(72px + env(safe-area-inset-bottom))}}.toast{display:flex;align-items:center;gap:10px;background:var(--text);color:var(--bg);padding:10px 16px;border-radius:var(--r-full);font-size:13.5px;font-weight:540;box-shadow:var(--shadow-md);animation:toastIn .24s var(--ease);pointer-events:auto;max-width:90vw}.toast button{background:none;border:0;color:inherit;font-weight:660;cursor:pointer;text-decoration:underline;text-underline-offset:2px}@keyframes toastIn{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}.stack{display:flex;flex-direction:column}.stack-2{gap:2px}.stack-4{gap:4px}.stack-6{gap:6px}.stack-8{gap:8px}.stack-10{gap:10px}.stack-14{gap:14px}.stack-16{gap:16px}.stack-18{gap:18px}.hstack{display:flex;align-items:center}.hstack-4{gap:4px}.hstack-6{gap:6px}.hstack-8{gap:8px}.hstack-10{gap:10px}.hstack-12{gap:12px}.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.push{margin-left:auto}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:13px}.tiny{font-size:12px}.strong{font-weight:620}.accent{color:var(--accent-text)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.center{text-align:center}@media (max-width: 860px){.hide-sm{display:none}}.fab{display:none}@media (max-width: 860px){.fab{display:grid;place-items:center;position:fixed;right:18px;bottom:calc(74px + env(safe-area-inset-bottom));width:52px;height:52px;border-radius:50%;background:var(--accent);color:#fff;border:0;box-shadow:var(--shadow-md);z-index:45;cursor:pointer}}.recipe-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;transition:border-color .16s var(--ease),box-shadow .16s var(--ease),transform .16s var(--ease)}.recipe-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.recipe-card-body{display:flex;flex-direction:column;gap:7px;padding:16px;flex:1}.recipe-card-foot{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--border);background:var(--surface-2)}.recipe-name{font-size:15.5px;font-weight:620;line-height:1.3}.star{background:none;border:0;padding:2px;color:var(--faint);cursor:pointer;border-radius:var(--r-sm);flex:none;transition:color .14s var(--ease),transform .14s var(--ease)}.star:hover{color:var(--muted);transform:scale(1.12)}.star.on{color:#d99a20}.star.on svg{fill:#f0b942;stroke:#d99a20}.hero-card{border-color:var(--border-strong);box-shadow:var(--shadow-sm);padding:22px}.suggest-card{transition:border-color .16s var(--ease),transform .16s var(--ease)}.suggest-card:hover{border-color:var(--accent-border);transform:translateY(-1px)}.stat-link{display:flex;align-items:center;gap:11px;transition:border-color .16s var(--ease)}.stat-link:hover{border-color:var(--border-strong)}.stat-icon{width:32px;height:32px;flex:none;border-radius:10px;background:var(--accent-soft);color:var(--accent-text);display:grid;place-items:center}.admin-stats .card{display:flex;flex-direction:column;gap:5px}.admin-number,.admin-warn{font-size:26px;letter-spacing:-.04em;line-height:1.1}.admin-warn{color:var(--warn)}.admin-usage{padding:4px 18px}.admin-usage-row{display:flex;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--border)}.admin-usage-row:last-child{border-bottom:0}.admin-users-head{align-items:center}.admin-users-head .search{max-width:340px}.admin-users-card{padding:0 18px;overflow:hidden}.admin-users-list{min-width:0}.admin-user{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:18px;padding:15px 0;border-bottom:1px solid var(--border)}.admin-user:last-child{border-bottom:0}.admin-user-main{display:flex;min-width:0;flex-direction:column;gap:4px}.admin-user-main .hstack{flex-wrap:wrap}.admin-user-metrics{display:flex;flex-direction:column;gap:3px;color:var(--faint);font-size:12px;min-width:124px}.admin-user-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.admin-status{text-transform:capitalize}.status-pending_approval{background:var(--warn-soft);color:var(--warn)}.status-pending_verification{background:var(--surface-2);color:var(--muted)}.status-rejected,.status-banned{background:var(--danger-soft);color:var(--danger)}.status-active{background:var(--accent-soft);color:var(--accent-text)}@media (max-width: 720px){.admin-users-head{align-items:stretch}.admin-users-head .search{max-width:none}.admin-users-card{padding:0 14px}.admin-user{grid-template-columns:1fr;gap:10px}.admin-user-actions{justify-content:flex-start}}.ingredient{display:flex;align-items:flex-start;gap:10px;padding:7px 0;border-bottom:1px solid var(--border)}.ingredient:last-child{border-bottom:0}.ingredient-open{width:100%;border-inline:0;border-top:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background .12s var(--ease)}.ingredient-open:hover{background:var(--surface-2)}.ingredient-open .ingredient-text{text-align:left}.ingredient-dot{width:19px;height:19px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--surface-2);color:var(--faint);margin-top:1px}.ingredient.have .ingredient-dot{background:var(--accent-soft);color:var(--accent-text)}.ingredient-text{flex:1;font-size:14.5px}.ingredient:not(.have) .ingredient-text{color:var(--muted)}.method{white-space:pre-wrap;line-height:1.72;font-size:14.8px;color:color-mix(in srgb,var(--text) 88%,var(--muted))}.source-link{align-items:center;gap:12px;color:var(--text);transition:border-color .16s var(--ease),background .16s var(--ease)}.source-link:hover{border-color:var(--accent-border);background:var(--accent-soft)}.plan-row{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--border);cursor:pointer}.plan-row:last-child{border-bottom:0}.done{text-decoration:line-through;text-decoration-thickness:1px;color:var(--faint)}.picker-row{background:none;border:0;border-bottom:1px solid var(--border);width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit}.picker-row:last-child{border-bottom:0}.picker-row:disabled{cursor:default;color:var(--faint)}.cal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 14px 12px;flex-wrap:wrap}.cal-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--border);background:var(--surface-2)}.cal-weekdays span{padding:7px 8px;font-size:11px;font-weight:640;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);text-align:left}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-cell{min-height:104px;display:flex;flex-direction:column;gap:5px;padding:7px 7px 9px;background:var(--surface);border-top:1px solid var(--border);border-right:1px solid var(--border);text-align:left;cursor:pointer;font:inherit;color:inherit;transition:background .13s var(--ease);overflow:hidden}.cal-cell:nth-child(7n){border-right:0}.cal-cell:hover{background:var(--surface-2)}.cal-cell.outside{background:var(--bg)}.cal-cell.outside .cal-day{color:var(--faint);opacity:.6}.cal-day{font-size:12.5px;font-weight:600;color:var(--muted);width:22px;height:22px;display:grid;place-items:center;border-radius:50%;flex:none}.cal-cell.today .cal-day{background:var(--accent);color:#fff}:root[data-theme=dark] .cal-cell.today .cal-day{color:#10201a}.cal-entries{display:flex;flex-direction:column;gap:3px;min-width:0}.cal-pill{display:flex;align-items:center;gap:3px;font-size:11.5px;font-weight:540;padding:2px 6px;border-radius:6px;background:var(--surface-2);color:var(--muted);border-left:2px solid var(--border-strong);min-width:0}.cal-pill.cooked{background:var(--accent-soft);color:var(--accent-text);border-left-color:var(--accent)}.cal-pill .icon{flex:none}.cal-more{font-size:10.5px;color:var(--faint);padding-left:6px}@media (max-width: 860px){.cal-cell{min-height:76px;padding:5px 4px 7px}.cal-pill{font-size:10px;padding:1px 4px;gap:2px}.cal-pill .icon{display:none}.cal-weekdays span{text-align:center;padding:6px 2px}.cal-day{font-size:11.5px;width:20px;height:20px}.cal-head strong{min-width:116px!important;font-size:14px}}@media (max-width: 600px){.cal{margin-inline:-16px;border-radius:0;border-left:0;border-right:0}.cal-head{padding-inline:16px}.cal-weekdays span{padding-inline:3px}.cal-cell{min-height:108px;padding:5px 1px 7px}.cal-entries{gap:2px}.cal-pill{font-size:9px;line-height:1.24;font-weight:560;letter-spacing:-.015em;padding:2px;border-radius:4px;border-left:0;align-items:flex-start}.cal-pill .truncate{white-space:normal;text-overflow:clip;overflow:hidden;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.cal-more{display:block;font-size:9px;padding-left:2px}}.boot{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}.boot-mark{width:44px;height:44px;border-radius:13px;animation:pulse 1.4s var(--ease) infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.62;transform:scale(.95)}}.auth{min-height:100vh;display:grid;place-items:center;padding:24px 20px 60px;background:radial-gradient(1100px 460px at 50% -8%,var(--accent-soft),transparent 70%),var(--bg)}.auth-panel{width:min(420px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-md);padding:28px}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:24px}.auth-swap{margin-top:18px;text-align:center;font-size:13.5px;color:var(--muted)}.linkish{background:none;border:0;padding:0;font:inherit;font-weight:620;color:var(--accent-text);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.auth-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--border);font-size:12px;line-height:1.6;color:var(--faint)}.auth-panel code{font-size:11.5px;background:var(--surface-2);border-radius:5px;padding:1px 5px}.password-wrap{position:relative}.password-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);height:28px}.password-wrap .input{padding-right:66px}.account{display:flex;align-items:center;gap:10px;margin-top:10px;padding:9px 10px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);transition:border-color .14s var(--ease)}.account:hover{border-color:var(--border-strong)}.avatar{width:28px;height:28px;flex:none;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:660}:root[data-theme=dark] .avatar{color:#10201a}.avatar-lg{width:42px;height:42px;font-size:17px}.sync-dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--accent)}.sync-dot.error{background:var(--danger)}.combo{position:relative;flex:1;min-width:0}.combo-list{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:50;margin:0;padding:5px;list-style:none;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--shadow-md);max-height:300px;overflow-y:auto;animation:rise .14s var(--ease)}.combo-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:var(--r-sm);background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.combo-item.active{background:var(--surface-2)}.combo-item.on-list{cursor:default;color:var(--faint)}.combo-name{flex:1;min-width:0;font-weight:540;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combo-meta{font-size:11.5px;color:var(--faint);flex:none}.combo-item.active .combo-meta{color:var(--muted)}.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:8px}.catalog-item{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color .14s var(--ease),background .14s var(--ease),transform .12s var(--ease)}.catalog-item:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft);transform:translateY(-1px)}.catalog-item:disabled,.catalog-item.listed{cursor:default;color:var(--faint);background:var(--surface-2);border-style:dashed}.catalog-item .icon{flex:none;color:var(--faint)}.catalog-item:hover:not(:disabled) .icon{color:var(--accent-text)}.catalog-open{display:flex;align-items:center;gap:8px;flex:1;min-width:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;padding:0}.catalog-item .checkbox{flex:none}@media (max-width: 560px){.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}.legacy{position:fixed;left:50%;transform:translate(-50%);bottom:22px;width:min(460px,calc(100vw - 32px));z-index:55}@media (max-width: 860px){.legacy{bottom:calc(74px + env(safe-area-inset-bottom))}}.segmented{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2)}.segment{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border:0;border-radius:var(--r-md);background:transparent;color:var(--muted);font:inherit;font-weight:560;font-size:13.5px;cursor:pointer;transition:background .14s var(--ease),color .14s var(--ease)}.segment:hover{color:var(--text)}.segment.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000000f}.catalog-item.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-text)}.catalog-item.selected .icon{color:var(--accent-text)}.pick-bar{position:sticky;bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-radius:var(--r-lg);border:1px solid var(--accent-border);background:var(--surface);box-shadow:0 8px 24px #0000001f;z-index:25}@media (max-width: 860px){.pick-bar{bottom:calc(76px + env(safe-area-inset-bottom))}}@media (max-width: 520px){.pick-bar{flex-direction:column;align-items:stretch;gap:8px}.pick-bar .hstack{justify-content:stretch}.pick-bar .btn{flex:1}}.chip-divider{width:1px;align-self:stretch;background:var(--border);flex:none;margin:2px}.lib-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;transition:border-color .14s var(--ease),transform .12s var(--ease)}.lib-card:hover{transform:translateY(-1px);border-color:var(--border-strong)}.lib-card.selected{border-color:var(--accent);background:var(--accent-soft)}.lib-open{flex:1;border:0;background:transparent;font:inherit;color:inherit;text-align:left;padding:14px 15px 12px;cursor:pointer}.lib-actions{display:flex;gap:6px;padding:0 12px 12px}.lib-ingredients{list-style:none;display:grid;gap:5px;font-size:13.5px;color:var(--muted)}.lib-ingredients li{padding-left:14px;position:relative}.lib-ingredient-open{border:0;background:none;font:inherit;color:inherit;text-align:left;padding:1px 0;cursor:pointer;text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:2px}.lib-ingredient-open:hover{color:var(--text);text-decoration-color:var(--accent)}.lib-ingredients li:before{content:"";position:absolute;left:2px;top:8px;width:4px;height:4px;border-radius:50%;background:var(--faint)}.invite-banner{display:grid;gap:10px;max-width:1060px;margin:0 auto;padding:18px 32px 0}@media (max-width: 860px){.invite-banner{padding:14px 16px 0}}.nav-count.accent-count{background:var(--accent);color:#fff}.menu-btn{position:relative}.menu-dot{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--bg)}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#18161357;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-end;animation:fade .16s var(--ease)}.sheet-panel{width:100%;max-height:86vh;overflow-y:auto;background:var(--surface);border-top-left-radius:18px;border-top-right-radius:18px;padding:16px 14px calc(20px + env(safe-area-inset-bottom));animation:sheet-up .2s var(--ease)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:0 4px}@keyframes sheet-up{0%{transform:translateY(14px);opacity:.6}to{transform:none;opacity:1}}@media (max-width: 860px){.tab{min-width:0;overflow:hidden}.tab span{display:block}}@media (max-width: 400px){.tabbar{padding-left:0;padding-right:0}.tab{font-size:9.5px}}.tint-1{background:var(--tint-1-bg);color:var(--tint-1-fg)}.tint-2{background:var(--tint-2-bg);color:var(--tint-2-fg)}.tint-3{background:var(--tint-3-bg);color:var(--tint-3-fg)}.tint-4{background:var(--tint-4-bg);color:var(--tint-4-fg)}.tint-5{background:var(--tint-5-bg);color:var(--tint-5-fg)}.tint-6{background:var(--tint-6-bg);color:var(--tint-6-fg)}.tint-7{background:var(--tint-7-bg);color:var(--tint-7-fg)}.tint-8{background:var(--tint-8-bg);color:var(--tint-8-fg)}.food-tile{flex:none;width:40px;height:40px;border-radius:var(--r-md);display:grid;place-items:center;font-size:21px;line-height:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.food-tile-sm{width:32px;height:32px;font-size:17px;border-radius:var(--r-sm)}.food-tile-lg{width:52px;height:52px;font-size:27px;border-radius:var(--r-lg)}.tag-energy{background:var(--energy-soft);color:var(--energy-text)}.skeleton{position:relative;overflow:hidden;background:var(--surface-2);border-radius:var(--r-sm)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--surface-3) 70%,var(--surface)),transparent);animation:shimmer 1.5s var(--ease) infinite}@keyframes shimmer{to{transform:translate(100%)}}.skeleton-line{height:12px;border-radius:var(--r-full)}.skeleton-line.lg{height:18px}.skeleton-line.sm{height:9px}.skeleton-circle{border-radius:50%}.skeleton-media{width:100%;aspect-ratio:16 / 10;border-radius:var(--r-lg)}.skeleton-card{border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--surface)}.skeleton-row{display:flex;align-items:center;gap:12px;padding:14px 15px;border-bottom:1px solid var(--border)}.skeleton-row:last-child{border-bottom:0}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rise-in{animation:rise-in .34s var(--ease) both}.stagger>*{animation:rise-in .4s var(--ease) both}.stagger>*:nth-child(1){animation-delay:.02s}.stagger>*:nth-child(2){animation-delay:.05s}.stagger>*:nth-child(3){animation-delay:.08s}.stagger>*:nth-child(4){animation-delay:.11s}.stagger>*:nth-child(5){animation-delay:.14s}.stagger>*:nth-child(6){animation-delay:.17s}.stagger>*:nth-child(7){animation-delay:.2s}.stagger>*:nth-child(8){animation-delay:.23s}.stagger>*:nth-child(9){animation-delay:.26s}.stagger>*:nth-child(10){animation-delay:.29s}.stagger>*:nth-child(n+11){animation-delay:.32s}@keyframes glow-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--energy) 42%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--energy) 0%,transparent)}}.pulse{animation:glow-pulse 2.4s var(--ease) infinite}.recipe-card-media{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:var(--surface-2)}.recipe-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}.recipe-card:hover .recipe-card-media img{transform:scale(1.045)}.recipe-card-media-fallback{width:100%;height:100%;display:grid;place-items:center;font-size:40px;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;background:radial-gradient(120% 120% at 15% 0%,color-mix(in srgb,currentColor 16%,transparent),transparent 62%),color-mix(in srgb,currentColor 9%,var(--surface-2))}.recipe-card-media .star{position:absolute;top:8px;right:8px;background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:var(--r-full);width:30px;height:30px;display:grid;place-items:center}.recipe-hero{position:relative;border-radius:var(--r-xl);overflow:hidden;margin-bottom:18px;border:1px solid var(--border);min-height:200px;display:flex;align-items:flex-end}.recipe-hero-media,.recipe-hero-fallback{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0}.recipe-hero-fallback{display:grid;place-items:center;font-size:92px;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;filter:drop-shadow(0 6px 14px rgba(0,0,0,.14));background:radial-gradient(90% 120% at 15% 0%,var(--energy-soft),transparent 55%),radial-gradient(90% 120% at 100% 100%,var(--accent-soft),transparent 55%),var(--surface-2)}.recipe-hero.no-photo{min-height:168px}.recipe-hero-scrim{position:relative;z-index:1;width:100%;padding:22px;display:flex;flex-direction:column;gap:10px;color:#fff;background:linear-gradient(to top,rgba(0,0,0,.66),rgba(0,0,0,.14) 62%,transparent)}.recipe-hero.no-photo .recipe-hero-scrim{color:var(--text);background:linear-gradient(to top,color-mix(in srgb,var(--bg) 78%,transparent),transparent 70%)}.recipe-hero-scrim h1{color:inherit}.recipe-meta-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:13.5px;font-weight:550}.recipe-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}@media (min-width: 900px){.recipe-layout{grid-template-columns:minmax(0,1fr) 300px}.recipe-layout .recipe-aside{position:sticky;top:20px}}.recipe-aside{display:flex;flex-direction:column;gap:12px}.action-band{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media (max-width: 520px){.action-band{grid-template-columns:minmax(0,1fr)}}.action-tile{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color .14s var(--ease),transform .12s var(--ease),box-shadow .16s var(--ease)}.action-tile:hover{border-color:var(--accent-border);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.action-tile:disabled{opacity:.55;cursor:default;transform:none;box-shadow:none}.action-tile-icon{width:38px;height:38px;flex:none;border-radius:var(--r-md);display:grid;place-items:center}.qty-stepper{display:inline-flex;align-items:center;border:1px solid var(--border-strong);border-radius:var(--r-full);background:var(--surface);overflow:hidden}.qty-stepper button{width:38px;height:38px;border:0;background:none;color:var(--muted);cursor:pointer;display:grid;place-items:center;transition:background .12s var(--ease),color .12s var(--ease)}.qty-stepper button:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.qty-stepper button:disabled{opacity:.4;cursor:default}.qty-stepper input{width:46px;height:38px;border:0;border-inline:1px solid var(--border);background:none;text-align:center;font-weight:600;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.qty-stepper input::-webkit-outer-spin-button,.qty-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.row-open{display:flex;align-items:center;gap:12px;flex:1;min-width:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;padding:0}.nutri{display:flex;flex-direction:column;gap:14px;padding:14px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2)}.nutri-score{display:flex;align-items:center;justify-content:space-between;gap:12px}.nutri-score-num{font-size:26px;font-weight:700;color:var(--faint);font-variant-numeric:tabular-nums}.nutri-badge{align-self:flex-start;padding:3px 12px;border-radius:var(--r-full);font-size:13px;font-weight:620}.nutri-pill{min-width:26px;padding:1px 7px;border-radius:var(--r-full);font-size:12px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}.tone-good{background:var(--accent-soft);color:var(--accent-text)}.tone-ok{background:var(--warn-soft);color:var(--warn)}.tone-warn{background:var(--danger-soft);color:var(--danger)}.nutri-glyc,.nutri-table{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--border)}.nutri-glyc-row,.nutri-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13.5px}.nutri-row-label{color:var(--muted)}.nutri-row-value{font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.nutri-row-dv{color:var(--faint);font-weight:500}.nutri-foot{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--faint)}.nutri-foot .icon{flex:none}
