|
| 1 | +# Instrucciones de Estilo y CSS |
| 2 | + |
| 3 | +## Paleta de Colores del Proyecto |
| 4 | + |
| 5 | +### Colores Principales |
| 6 | +- **Azul primario**: `#3498db` - Botones principales, elementos interactivos |
| 7 | +- **Azul oscuro**: `#2c3e50` - Header, footer, títulos |
| 8 | +- **Azul hover**: `#2980b9` - Estado hover de botones primarios |
| 9 | +- **Gris secundario**: `#95a5a6` - Botones secundarios |
| 10 | +- **Gris texto**: `#7f8c8d` - Texto secundario, descripciones |
| 11 | +- **Rojo peligro**: `#e74c3c` - Botones de eliminar, mensajes de error |
| 12 | +- **Fondo claro**: `#f8f9fa` - Fondo de la página |
| 13 | +- **Blanco**: `#ffffff` - Tarjetas, formularios, contenido |
| 14 | + |
| 15 | +### Colores de Soporte |
| 16 | +- **Gris borde**: `#ddd` - Bordes de inputs |
| 17 | +- **Gris claro**: `#ecf0f1` - Separadores, bordes sutiles |
| 18 | +- **Hover secundario**: `#7f8c8d` - Hover de botones secundarios |
| 19 | +- **Hover peligro**: `#c0392b` - Hover de botones de eliminar |
| 20 | +- **Hover navegación**: `#34495e` - Hover de links en navegación |
| 21 | + |
| 22 | +## Estructura de Layout |
| 23 | + |
| 24 | +### Contenedor Principal |
| 25 | +- Ancho máximo: `1200px` |
| 26 | +- Centrado con `margin: 0 auto` |
| 27 | +- Padding lateral: `2rem` (1rem en móvil) |
| 28 | + |
| 29 | +### Espaciado |
| 30 | +- Margen entre secciones: `2rem` |
| 31 | +- Padding de tarjetas: `2rem` (1.5rem en cards pequeños) |
| 32 | +- Gap entre elementos flex/grid: `1rem` - `2rem` |
| 33 | + |
| 34 | +## Componentes de UI |
| 35 | + |
| 36 | +### Botones (`.btn`) |
| 37 | +```css |
| 38 | +padding: 0.5rem 1rem |
| 39 | +border-radius: 4px |
| 40 | +font-size: 1rem |
| 41 | +transition: background-color 0.3s |
| 42 | +``` |
| 43 | + |
| 44 | +**Variantes disponibles:** |
| 45 | +- `.btn-primary` - Azul (`#3498db`) |
| 46 | +- `.btn-secondary` - Gris (`#95a5a6`) |
| 47 | +- `.btn-danger` - Rojo (`#e74c3c`) |
| 48 | +- `.btn-sm` - Versión pequeña con padding reducido |
| 49 | + |
| 50 | +### Tarjetas (`.recipe-card`) |
| 51 | +```css |
| 52 | +background: white |
| 53 | +padding: 1.5rem |
| 54 | +border-radius: 8px |
| 55 | +box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) |
| 56 | +transition: transform 0.2s |
| 57 | +``` |
| 58 | + |
| 59 | +- Hover: `transform: translateY(-2px)` |
| 60 | + |
| 61 | +### Formularios |
| 62 | + |
| 63 | +**Grupos de formulario (`.form-group`):** |
| 64 | +- Margen inferior: `1rem` |
| 65 | +- Labels en negrita, color `#2c3e50` |
| 66 | +- Inputs con border `1px solid #ddd` |
| 67 | +- Border radius: `4px` |
| 68 | +- Padding: `0.5rem` |
| 69 | + |
| 70 | +**Acciones de formulario (`.form-actions`):** |
| 71 | +- Display flex con gap de `1rem` |
| 72 | +- Se usa para agrupar botones de envío y cancelación |
| 73 | + |
| 74 | +### Navegación |
| 75 | + |
| 76 | +**Header:** |
| 77 | +- Background: `#2c3e50` |
| 78 | +- Color texto: `white` |
| 79 | +- Box shadow: `0 2px 4px rgba(0, 0, 0, 0.1)` |
| 80 | +- Padding vertical: `1rem` |
| 81 | + |
| 82 | +**Links de navegación:** |
| 83 | +- Color: `white` |
| 84 | +- Hover: background `#34495e` |
| 85 | +- Padding: `0.5rem 1rem` |
| 86 | +- Border radius: `4px` |
| 87 | + |
| 88 | +## Sistema de Grid |
| 89 | + |
| 90 | +### Grid de Recetas (`.recipes-grid`) |
| 91 | +```css |
| 92 | +display: grid |
| 93 | +grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) |
| 94 | +gap: 1.5rem |
| 95 | +``` |
| 96 | + |
| 97 | +### Grid de Features (`.home-features`) |
| 98 | +```css |
| 99 | +display: grid |
| 100 | +grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)) |
| 101 | +gap: 2rem |
| 102 | +``` |
| 103 | + |
| 104 | +## Elementos Específicos |
| 105 | + |
| 106 | +### Pasos de Instrucciones (`.instruction-step`) |
| 107 | +- Display flex con step number circular |
| 108 | +- Step number: círculo azul (`#3498db`) de `1.5rem` |
| 109 | +- Margen derecho del número: `1rem` |
| 110 | + |
| 111 | +### Ingredientes (`.ingredient`) |
| 112 | +- Padding vertical: `0.5rem` |
| 113 | +- Border bottom: `1px solid #ecf0f1` |
| 114 | +- Último elemento sin borde |
| 115 | + |
| 116 | +### Secciones de Receta (`.recipe-section`) |
| 117 | +- Margen inferior: `2rem` |
| 118 | +- Títulos h2 con borde inferior de `2px solid #ecf0f1` |
| 119 | + |
| 120 | +## Responsive Design |
| 121 | + |
| 122 | +### Breakpoint Principal: `768px` |
| 123 | + |
| 124 | +**Cambios en móvil:** |
| 125 | +- Navegación: `flex-direction: column` |
| 126 | +- Header de receta: elementos en columna |
| 127 | +- Padding principal: `0 1rem` (reducido) |
| 128 | +- Título home: `2rem` (reducido de 3rem) |
| 129 | + |
| 130 | +## Tipografía |
| 131 | + |
| 132 | +### Fuente Principal |
| 133 | +```css |
| 134 | +font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif |
| 135 | +line-height: 1.6 |
| 136 | +``` |
| 137 | + |
| 138 | +### Tamaños de Fuente |
| 139 | +- Título principal (home): `3rem` (2rem en móvil) |
| 140 | +- H1: heredado con color `#2c3e50` |
| 141 | +- Navegación título: `1.5rem` |
| 142 | +- Texto descripción: `1.2rem` |
| 143 | +- Texto normal: `1rem` |
| 144 | +- Texto pequeño (preview): `0.9rem` |
| 145 | +- Step number: `0.8rem` |
| 146 | + |
| 147 | +## Efectos y Transiciones |
| 148 | + |
| 149 | +### Transiciones Estándar |
| 150 | +- Botones: `background-color 0.3s` |
| 151 | +- Tarjetas: `transform 0.2s` |
| 152 | + |
| 153 | +### Sombras |
| 154 | +- Tarjetas/contenido: `0 2px 4px rgba(0, 0, 0, 0.1)` |
| 155 | +- Header: `0 2px 4px rgba(0, 0, 0, 0.1)` |
| 156 | + |
| 157 | +### Hover Effects |
| 158 | +- Botones: cambio de color de fondo |
| 159 | +- Tarjetas: elevación con `translateY(-2px)` |
| 160 | +- Links de navegación: cambio de background |
| 161 | + |
| 162 | +## Convenciones de Nombres de Clase |
| 163 | + |
| 164 | +### Patrón BEM Simplificado |
| 165 | +- **Contenedores**: `.home-container`, `.recipes-container`, `.recipe-container` |
| 166 | +- **Headers**: `.home-header`, `.recipes-header`, `.recipe-header` |
| 167 | +- **Acciones**: `.home-actions`, `.recipe-actions`, `.form-actions` |
| 168 | +- **Elementos específicos**: `.recipe-card`, `.recipe-section`, `.ingredient`, etc. |
| 169 | + |
| 170 | +### Modificadores |
| 171 | +- Tamaño: `.btn-sm` |
| 172 | +- Variante: `.btn-primary`, `.btn-secondary`, `.btn-danger` |
| 173 | +- Estado: se maneja con pseudo-clases (`:hover`) |
| 174 | + |
| 175 | +## Buenas Prácticas |
| 176 | + |
| 177 | +1. **Consistencia**: Usar las clases existentes antes de crear nuevas |
| 178 | +2. **Espaciado**: Mantener el sistema de espaciado basado en `rem` |
| 179 | +3. **Colores**: Usar siempre la paleta definida |
| 180 | +4. **Responsive**: Probar en breakpoint de 768px |
| 181 | +5. **Accesibilidad**: Mantener contraste adecuado para texto |
| 182 | +6. **Semántica**: Usar etiquetas HTML apropiadas antes de depender solo de CSS |
| 183 | + |
| 184 | +## Integración con Handlebars |
| 185 | + |
| 186 | +Al agregar nuevos elementos en las vistas `.hbs`, seguir estos patrones: |
| 187 | + |
| 188 | +```handlebars |
| 189 | +<!-- Contenedor principal --> |
| 190 | +<div class="nombre-container"> |
| 191 | + <!-- Header de sección --> |
| 192 | + <div class="nombre-header"> |
| 193 | + <h1>Título</h1> |
| 194 | + <div class="nombre-actions"> |
| 195 | + <button class="btn btn-primary">Acción</button> |
| 196 | + </div> |
| 197 | + </div> |
| 198 | + |
| 199 | + <!-- Contenido --> |
| 200 | + <div class="nombre-content"> |
| 201 | + <!-- Contenido aquí --> |
| 202 | + </div> |
| 203 | +</div> |
| 204 | +``` |
| 205 | + |
| 206 | +## Clases de Utilidad Disponibles |
| 207 | + |
| 208 | +No hay clases de utilidad tipo Tailwind. El proyecto usa CSS tradicional con clases semánticas. Si necesitas agregar estilos nuevos, agrega una clase semántica en `public/style.css`. |
0 commit comments