@import "tailwindcss"; @custom-variant dark (&:where(.dark, .dark *)); @theme { --color-brew-bg: #FAF6F1; --color-brew-bg2: #F3EDE4; --color-brew-card: #FFFFFF; --color-brew-text: #2C1810; --color-brew-text2: #6B5744; --color-brew-text3: #9C8B7A; --color-brew-accent: #8B6914; --color-brew-accent2: #C4941A; --color-brew-border: #E8DFD3; --color-brew-espresso: #5C3317; --color-brew-coldbrew: #2F4F6F; --color-brew-pourover: #8B6914; --color-brew-danger: #B44040; --color-brew-success: #4A7C59; --font-serif: "Playfair Display", serif; --font-sans: "Source Sans 3", sans-serif; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 20px; --shadow-card: 0 1px 3px rgba(44,24,16,0.06), 0 4px 12px rgba(44,24,16,0.04); --shadow-card-lg: 0 4px 16px rgba(44,24,16,0.08), 0 12px 32px rgba(44,24,16,0.06); } @layer base { * { box-sizing: border-box; margin: 0; padding: 0; } html { scrollbar-gutter: stable; font-family: "Source Sans 3", sans-serif; background-color: #F3EDE4; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; transition: background-color 0.2s ease, color 0.2s ease; } html.dark { background-color: #0E0704; } body { margin: 0; background-color: #F3EDE4; transition: background-color 0.2s ease, color 0.2s ease; } html.dark body { background-color: #0E0704; } #root { width: 100%; min-height: 100svh; display: flex; flex-direction: column; box-sizing: border-box; } input, select, textarea { font-family: "Source Sans 3", sans-serif; } button { font-family: "Source Sans 3", sans-serif; } } @layer utilities { .font-serif { font-family: "Playfair Display", serif; } .font-sans-brew { font-family: "Source Sans 3", sans-serif; } /* Sync badge pulse animation */ .animate-sync-pulse { animation: sync-pulse 1.5s infinite; } @keyframes sync-pulse { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; } } /* Modal animations */ .animate-fade-in { animation: fade-in 0.2s ease-out; } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } .animate-slide-up { animation: slide-up 0.3s ease-out; } @keyframes slide-up { from { transform: translateY(100%); } to { transform: translateY(0); } } .animate-page-enter { animation: page-enter 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards; } @keyframes page-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* Brew method bar */ .brew-method-bar { position: absolute; left: 0; top: 12px; bottom: 12px; width: 4px; border-radius: 0 4px 4px 0; } }