/* Base styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: #f9fafb; color: #111827; line-height: 1.5; } /* Layout */ .viewport { width: 100%; max-width: 1024px; margin: 3rem auto; padding: 0 1rem; } /* Navigation */ nav { background-color: white; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); border-radius: 0.5rem; margin-bottom: 1.5rem; } nav > div { padding: 1rem 1.5rem; } nav .flex { display: flex; align-items: center; justify-content: space-between; } nav a { text-decoration: none; color: #4b5563; transition: color 0.2s; } nav a:hover { color: #111827; } nav a.font-semibold { font-weight: 600; color: #111827; } /* Main content */ main { background-color: white; border-radius: 0.5rem; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); padding: 1.5rem; } /* Typography */ h1 { font-size: 1.5rem; font-weight: bold; margin-bottom: 1.5rem; } h2 { font-size: 1.125rem; font-weight: 600; margin-bottom: 0.75rem; } h3 { font-size: 1.125rem; font-weight: 500; margin-bottom: 0.5rem; } /* Forms */ input[type="text"], input[type="number"] { padding: 0.5rem; border: 1px solid #d1d5db; border-radius: 0.375rem; outline: none; } input[type="text"]:focus, input[type="number"]:focus { border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } .search-input { width: 16rem; padding: 0.5rem 1rem; } /* Buttons */ button, .btn-primary, .btn-secondary { padding: 0.5rem 1rem; border-radius: 0.375rem; font-weight: 500; cursor: pointer; transition: all 0.2s; border: none; display: inline-block; } .btn-primary { background-color: #3b82f6; color: white; } .btn-primary:hover { background-color: #2563eb; } .btn-secondary { background-color: #e5e7eb; color: #374151; } .btn-secondary:hover { background-color: #d1d5db; } /* Cards */ .recipe-card { background-color: white; border-radius: 0.5rem; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); padding: 1rem; margin-bottom: 1rem; transition: box-shadow 0.2s; text-decoration: none; color: inherit; display: block; } .recipe-card:hover { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); background-color: #f9fafb; } .recipe-step { margin-bottom: 1rem; padding: 0.75rem; background-color: #f9fafb; border-radius: 0.375rem; } /* Ingredients and tags */ .ingredient, .cookware, .timer { display: inline-block; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.875rem; margin-right: 0.5rem; margin-bottom: 0.5rem; } .ingredient { background-color: #dbeafe; color: #1e40af; } .cookware { background-color: #d1fae5; color: #065f46; } .timer { background-color: #fef3c7; color: #92400e; } /* Search results dropdown */ .search-results { position: absolute; top: 100%; margin-top: 0.5rem; width: 100%; background-color: white; border: 1px solid #e5e7eb; border-radius: 0.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); max-height: 300px; overflow-y: auto; } .search-results a { display: block; padding: 0.5rem 0.75rem; text-decoration: none; color: #111827; } .search-results a:hover { background-color: #f9fafb; } /* Utility classes */ .hidden { display: none; } .flex { display: flex; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .space-x-2 > * + * { margin-left: 0.5rem; } .space-x-3 > * + * { margin-left: 0.75rem; } .space-x-6 > * + * { margin-left: 1.5rem; } .space-y-1 > * + * { margin-top: 0.25rem; } .space-y-2 > * + * { margin-top: 0.5rem; } .space-y-4 > * + * { margin-top: 1rem; } .mb-2 { margin-bottom: 0.5rem; } .mb-3 { margin-bottom: 0.75rem; } .mb-4 { margin-bottom: 1rem; } .mb-6 { margin-bottom: 1.5rem; } .ml-2 { margin-left: 0.5rem; } .mr-2 { margin-right: 0.5rem; } .mr-4 { margin-right: 1rem; } .mx-2 { margin-left: 0.5rem; margin-right: 0.5rem; } .p-3 { padding: 0.75rem; } .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; } .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; } .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .text-sm { font-size: 0.875rem; } .text-lg { font-size: 1.125rem; } .text-xl { font-size: 1.25rem; } .text-2xl { font-size: 1.5rem; } .text-3xl { font-size: 1.875rem; } .font-medium { font-weight: 500; } .font-semibold { font-weight: 600; } .font-bold { font-weight: 700; } .text-gray-400 { color: #9ca3af; } .text-gray-500 { color: #6b7280; } .text-gray-600 { color: #4b5563; } .text-gray-700 { color: #374151; } .text-gray-800 { color: #1f2937; } .text-gray-900 { color: #111827; } .text-red-600 { color: #dc2626; } .text-red-800 { color: #991b1b; } .bg-gray-50 { background-color: #f9fafb; } .bg-white { background-color: white; } .rounded { border-radius: 0.25rem; } .rounded-lg { border-radius: 0.5rem; } .shadow-sm { box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); } .shadow-lg { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); } .border { border-width: 1px; } .border-gray-200 { border-color: #e5e7eb; } .border-gray-300 { border-color: #d1d5db; } .hover\:text-gray-900:hover { color: #111827; } .hover\:text-red-800:hover { color: #991b1b; } .hover\:bg-gray-50:hover { background-color: #f9fafb; } .hover\:shadow-lg:hover { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); } /* Breadcrumbs */ ol.flex { display: flex; align-items: center; } /* Grid */ .grid { display: grid; grid-template-columns: 1fr; gap: 1rem; } @media (min-width: 768px) { .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .md\:col-span-1 { grid-column: span 1 / span 1; } .md\:col-span-2 { grid-column: span 2 / span 2; } }