@import "tailwindcss"; :root { --cream: #F5F0E8; --beige: #E8DCC8; --beige-dark: #D4C8B0; --teal: #4AAFA8; --teal-dark: #3D9A94; --teal-glow: rgba(74, 175, 168, 0.35); --green: #5C8A5C; --coffee: #3D2B1F; --coffee-dark: #1F140A; --coffee-light: #5A3D2D; --gold: #C8A850; --muted: #8A7265; --header-h: 68px; --catnav-h: 49px; } @theme inline { --color-cream: var(--cream); --color-beige: var(--beige); --color-beige-dark: var(--beige-dark); --color-teal: var(--teal); --color-teal-dark: var(--teal-dark); --color-green: var(--green); --color-coffee: var(--coffee); --color-coffee-dark: var(--coffee-dark); --color-coffee-light: var(--coffee-light); --color-gold: var(--gold); --color-muted: var(--muted); --font-display: var(--font-playfair); --font-body: var(--font-inter); } html { scroll-behavior: smooth; } /* ─── Page background ─────────────────────────────── */ body { background: radial-gradient(ellipse 80% 60% at 10% 0%, rgba(74,175,168,0.10) 0%, transparent 60%), radial-gradient(ellipse 60% 50% at 90% 100%, rgba(92,138,92,0.09) 0%, transparent 55%), radial-gradient(ellipse 50% 40% at 80% 30%, rgba(200,168,80,0.05) 0%, transparent 50%), #F5F0E8; } /* Dot grid overlay */ body::before { content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 0; background-image: radial-gradient(circle, rgba(61,43,31,0.10) 1px, transparent 1px); background-size: 22px 22px; } /* Grain overlay on top of everything */ body::after { content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 9999; opacity: 0.022; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='256' height='256'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='256' height='256' filter='url(%23n)'/%3E%3C/svg%3E"); background-repeat: repeat; background-size: 256px 256px; } /* ─── Animations ──────────────────────────────────── */ /* Logo shimmer — travels across text */ @keyframes text-shimmer { 0% { background-position: -200% center; } 100% { background-position: 200% center; } } /* Header accent line pulse */ @keyframes border-flow { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Category emoji orbit ring */ @keyframes spin-slow { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Item fade-up on mount */ @keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* WhatsApp pulse */ @keyframes wa-pulse { 0% { box-shadow: 0 0 0 0 rgba(37,211,102,0.50); } 70% { box-shadow: 0 0 0 14px rgba(37,211,102,0); } 100% { box-shadow: 0 0 0 0 rgba(37,211,102,0); } } /* Section reveal */ @keyframes section-reveal { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } } /* ─── Logo shimmer class ──────────────────────────── */ .logo-shimmer { background: linear-gradient( 105deg, #F5F0E8 0%, #F5F0E8 35%, #4AAFA8 45%, #C8A850 52%, #4AAFA8 59%, #F5F0E8 65%, #F5F0E8 100% ); background-size: 250% auto; background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: text-shimmer 5s linear infinite; } /* Header gradient line */ .header-line { background: linear-gradient(90deg, #4AAFA8, #C8A850, #5C8A5C, #4AAFA8); background-size: 300% 100%; animation: border-flow 4s ease infinite; } /* ─── Category section ────────────────────────────── */ .category-section { scroll-margin-top: calc(var(--header-h) + var(--catnav-h) + 8px); } .category-reveal { animation: section-reveal 0.5s ease both; } /* ─── Menu item ───────────────────────────────────── */ .menu-item-row { animation: fadeUp 0.38s ease both; animation-delay: calc(var(--item-index, 0) * 60ms); } /* Magic card gradient spotlight — CSS-only hover version */ .menu-item-row { position: relative; overflow: hidden; transition: background 0.2s ease; } .menu-item-row::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(74,175,168,0.07) 0%, transparent 60%); opacity: 0; transition: opacity 0.25s ease; border-radius: 10px; } .menu-item-row:hover::before { opacity: 1; } /* ─── Bottom tab bar ──────────────────────────────── */ .tabbar-glass { background: rgba(31, 20, 10, 0.88); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-top: 1px solid rgba(74, 175, 168, 0.18); } /* Active tab pill */ .tab-pill { background: linear-gradient(135deg, rgba(74,175,168,0.22), rgba(92,138,92,0.15)); border: 1px solid rgba(74,175,168,0.30); border-radius: 8px; transition: all 0.25s ease; } /* ─── WhatsApp button ─────────────────────────────── */ .wa-btn { animation: wa-pulse 2.8s ease-out infinite; } /* ─── Section heading ornament ────────────────────── */ .section-ornament { display: inline-block; width: 4px; height: 4px; border-radius: 50%; background: var(--teal); } /* ─── Price pill ──────────────────────────────────── */ .price-pill { background: linear-gradient(135deg, rgba(92,138,92,0.15), rgba(92,138,92,0.08)); border: 1px solid rgba(92,138,92,0.25); color: var(--green); border-radius: 20px; padding: 2px 10px; font-size: 0.8rem; font-weight: 600; white-space: nowrap; }