/* Utilitaires légers */ /* Centrer un bloc dans son conteneur et limiter la largeur */ .container--narrow { max-width: 820px; margin-inline: auto; } /* Centrage */ .u-center { display: grid; place-items: center; } .u-text-center { text-align: center; } .u-muted { color: var(--color-muted, #6b7280); } /* Rythme vertical: ajoute un espace entre les éléments frères */ .flow > * + * { margin-top: var(--space-4, 1rem); } /* Ombre au survol */ .shadow-hover { transition: box-shadow 0.2s ease, transform 0.15s ease; } .shadow-hover:hover { transform: translateY(-2px); box-shadow: var(--shadow-md, 0 2px 10px rgba(0,0,0,0.08)); } /* Visually hidden pour l’accessibilité */ .visually-hidden, .sr-only { position: absolute !important; height: 1px; width: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; border: 0; padding: 0; margin: -1px; } /* Flexbox utilitaires */ .flex { display: flex; } .flex-col { display: flex; flex-direction: column; } .flex-row { display: flex; flex-direction: row; } .items-center { align-items: center; } .items-start { align-items: flex-start; } .items-end { align-items: flex-end; } .justify-between { justify-content: space-between; } .justify-center { justify-content: center; } .gap-2 { gap: var(--space-2, 0.5rem); } .gap-4 { gap: var(--space-4, 1rem); } .gap-6 { gap: var(--space-6, 1.5rem); } /* Grilles rapides */ .grid-2 { display: grid; gap: var(--space-6, 1.5rem); grid-template-columns: repeat(2, 1fr); } .grid-3 { display: grid; gap: var(--space-6, 1.5rem); grid-template-columns: repeat(3, 1fr); } .grid-4 { display: grid; gap: var(--space-6, 1.5rem); grid-template-columns: repeat(4, 1fr); } @media (max-width: 900px) { .grid-3 { grid-template-columns: repeat(2, 1fr); } .grid-4 { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 640px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } } /* Piles verticales */ .stack > * + * { margin-top: var(--space-4, 1rem); } .stack-sm > * + * { margin-top: var(--space-3, 0.75rem); } .stack-lg > * + * { margin-top: var(--space-6, 1.5rem); } /* Espacements rapides */ .mt-0 { margin-top: 0 !important; } .mt-4 { margin-top: var(--space-4, 1rem) !important; } .mt-8 { margin-top: var(--space-8, 2rem) !important; } .mb-0 { margin-bottom: 0 !important; } .mb-4 { margin-bottom: var(--space-4, 1rem) !important; } .mb-8 { margin-bottom: var(--space-8, 2rem) !important; } /* Largeurs utiles */ .max-w-prose { max-width: 65ch; } .max-w-wide { max-width: var(--container-max, 1100px); } .w-full { width: 100%; } /* Groupes de boutons */ .btn-group { display: inline-flex; gap: 0.5rem; flex-wrap: wrap; } /* Grilles rapides */ .grid-2 { display: grid; gap: var(--space-6, 1.5rem); grid-template-columns: repeat(2, 1fr); } .grid-3 { display: grid; gap: var(--space-6, 1.5rem); grid-template-columns: repeat(3, 1fr); } .grid-4 { display: grid; gap: var(--space-6, 1.5rem); grid-template-columns: repeat(4, 1fr); } @media (max-width: 900px) { .grid-3 { grid-template-columns: repeat(2, 1fr); } .grid-4 { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 640px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } } /* Piles verticales */ .stack > * + * { margin-top: var(--space-4, 1rem); } .stack-sm > * + * { margin-top: var(--space-3, 0.75rem); } .stack-lg > * + * { margin-top: var(--space-6, 1.5rem); } /* Espacements rapides */ .mt-0 { margin-top: 0 !important; } .mt-4 { margin-top: var(--space-4, 1rem) !important; } .mt-8 { margin-top: var(--space-8, 2rem) !important; } .mb-0 { margin-bottom: 0 !important; } .mb-4 { margin-bottom: var(--space-4, 1rem) !important; } .mb-8 { margin-bottom: var(--space-8, 2rem) !important; } /* Largeurs utiles */ .max-w-prose { max-width: 65ch; } .max-w-wide { max-width: var(--container-max, 1100px); } .w-full { width: 100%; } /* Groupes de boutons */ .btn-group { display: inline-flex; gap: 0.5rem; flex-wrap: wrap; }