:root{--bg-primary:#FDF6EE;--bg-secondary:#FAF0E6;--bg-tertiary:#F0E0CC;--bg-card:#FFFFFF;--accent-primary:#B8622A;--accent-secondary:#5C7A4E;--accent-warning:#C4882A;--accent-danger:#B83A3A;--text-primary:#1C0F08;--text-secondary:#5C3D28;--text-muted:#9C7A5C;--glass-bg:rgba(255,255,255,0.85);--glass-border:rgba(180,140,100,0.2);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:22px;--radius-2xl:28px;--radius-full:9999px;--shadow-xs:0 1px 3px rgba(44,24,16,0.06);--shadow-sm:0 2px 8px rgba(44,24,16,0.08);--shadow-md:0 6px 20px rgba(44,24,16,0.10);--shadow-lg:0 16px 48px rgba(44,24,16,0.12);--shadow-xl:0 24px 64px rgba(44,24,16,0.14);--safe-bottom:env(safe-area-inset-bottom,0px);--tag-beef:#F5D5C8;--tag-beef-text:#7A3520;--tag-chicken:#F5E4C8;--tag-chicken-text:#7A5A20;--tag-pork:#F5C8D5;--tag-pork-text:#8A2040;--tag-fish:#C8E8F5;--tag-fish-text:#204A7A;--tag-lamb:#E8D5C8;--tag-lamb-text:#6B4A20;--tag-vegetarian:#D5F0D8;--tag-vegetarian-text:#2E5C2E;--tag-vegan:#D5F0D8;--tag-vegan-text:#2E5C2E;--tag-quick:#F5EDC8;--tag-quick-text:#7A6020;--tag-comfort:#E8D5C8;--tag-comfort-text:#7A4030;--tag-high-protein:#F0D8C8;--tag-high-protein-text:#7A3020;--tag-chinese:#F5C8C8;--tag-chinese-text:#7A2020;--tag-british:#D8E8F0;--tag-british-text:#204050}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;overscroll-behavior:none;min-height:100dvh;font-size:16px;line-height:1.5}body{padding-bottom:calc(90px+var(--safe-bottom))}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none}button,input,select,textarea{font:inherit}::-webkit-scrollbar{display:none}@keyframes springBounce{0%{transform:scale(.94);opacity:0}60%{transform:scale(1.03)}80%{transform:scale(.99)}to{transform:scale(1);opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes sheetSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes numberRoll{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulseGlow{0%,to{box-shadow:0 0 0 0 rgba(184,98,42,.3)}50%{box-shadow:0 0 0 10px rgba(184,98,42,0)}}@keyframes confetti{0%{transform:scale(.6) rotate(-10deg);opacity:1}60%{transform:scale(1.2) rotate(5deg);opacity:.8}to{transform:scale(1) rotate(0deg);opacity:1}}@keyframes goalReached{0%{transform:scale(1)}30%{transform:scale(1.15)}60%{transform:scale(.97)}to{transform:scale(1)}}.animate-spring{animation:springBounce .45s cubic-bezier(.34,1.56,.64,1) both}.animate-slideUp{animation:slideUp .35s cubic-bezier(.22,1,.36,1) both}.animate-sheet{animation:sheetSlideUp .4s cubic-bezier(.22,1,.36,1) both}.animate-fadeScale{animation:fadeInScale .28s cubic-bezier(.22,1,.36,1) both}.animate-shimmer{background:linear-gradient(90deg,transparent,rgba(255,255,255,.5) 50%,transparent);background-size:200% 100%;animation:shimmer 1.4s infinite}.animate-float{animation:float 3s ease-in-out infinite}.animate-confetti{animation:confetti .5s cubic-bezier(.22,1,.36,1) both}.animate-goalReached{animation:goalReached .6s cubic-bezier(.22,1,.36,1) both}.animate-pulseGlow{animation:pulseGlow 2s ease-in-out infinite}.animate-press{transition:transform .12s cubic-bezier(.22,1,.36,1)}.animate-press:active{transform:scale(.95)}.stagger>*{opacity:0;animation:slideUp .35s cubic-bezier(.22,1,.36,1) both}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:60ms}.stagger>:nth-child(3){animation-delay:.11s}.stagger>:nth-child(4){animation-delay:.16s}.stagger>:nth-child(5){animation-delay:.21s}.stagger>:nth-child(6){animation-delay:.26s}.stagger>:nth-child(n+7){animation-delay:.31s}.card{background:var(--bg-card);border-radius:var(--radius-xl);border:1px solid var(--glass-border);padding:var(--space-5);box-shadow:var(--shadow-sm)}.card:hover{box-shadow:var(--shadow-md)}.tag{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--radius-full);letter-spacing:.02em;white-space:nowrap}.tag-beef{background:var(--tag-beef);color:var(--tag-beef-text)}.tag-chicken{background:var(--tag-chicken);color:var(--tag-chicken-text)}.tag-pork{background:var(--tag-pork);color:var(--tag-pork-text)}.tag-fish{background:var(--tag-fish);color:var(--tag-fish-text)}.tag-lamb{background:var(--tag-lamb);color:var(--tag-lamb-text)}.tag-vegan,.tag-vegetarian{background:var(--tag-vegetarian);color:var(--tag-vegetarian-text)}.tag-quick{background:var(--tag-quick);color:var(--tag-quick-text)}.tag-comfort{background:var(--tag-comfort);color:var(--tag-comfort-text)}.tag-high-protein{background:var(--tag-high-protein);color:var(--tag-high-protein-text)}.tag-chinese{background:var(--tag-chinese);color:var(--tag-chinese-text)}.glass{background:var(--glass-bg);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border:1px solid var(--glass-border)}:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(184,98,42,.25);border-radius:6px}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.expiry-bar{height:3px;border-radius:99px;overflow:hidden;background:rgba(44,24,16,.08)}.expiry-bar-fill{height:100%;border-radius:99px;transition:width .6s cubic-bezier(.22,1,.36,1)}.no-scrollbar{overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.progress-ring-circle{transition:stroke-dashoffset .8s cubic-bezier(.22,1,.36,1)}.pb-safe{padding-bottom:calc(20px + var(--safe-bottom))}