/*
 * ═══════════════════════════════════════════════════════
 *   PHANOS KOSMOS — responsive.css
 *   Breakpoints : 360px · 480px · 768px · 1024px · 1280px
 *   Couvre : index · shop · checkout · confirmation · admin
 * ═══════════════════════════════════════════════════════
 */

/* ─────────────────────────────────────────────────────
   1. RESET & BASE MOBILE-FIRST
───────────────────────────────────────────────────── */
:root {
  --nav-h: 60px;           /* hauteur navbar mobile  */
  --nav-h-desk: 68px;      /* hauteur navbar desktop */
  --side-pad: 1rem;        /* padding latéral mobile */
  --side-pad-md: 1.5rem;
  --side-pad-lg: clamp(1.5rem, 5vw, 5rem);
}

html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

img, video, svg { max-width: 100%; height: auto; }

/* Empêche tout débordement horizontal */
body { overflow-x: hidden; }

/* Tous les liens, boutons : zone de tap ≥ 44px */
a, button, [role="button"] { min-height: 44px; display: inline-flex; align-items: center; }

/* ─────────────────────────────────────────────────────
   2. NAVIGATION — tous les fichiers
───────────────────────────────────────────────────── */
nav {
  height: var(--nav-h-desk);
  padding: 0 var(--side-pad-lg);
}

/* Texte logo plus petit sur mobile */
@media (max-width: 480px) {
  nav { height: var(--nav-h); padding: 0 var(--side-pad); }
  .nav-logo span { font-size: 1rem !important; }
  .nav-logo img  { height: 32px !important; }
}

/* Menu hamburger */
@media (max-width: 768px) {
  .nav-links:not(.open) { display: none !important; }
  .hamburger            { display: flex !important; align-items: center; }

  /* Drawer plein écran sur mobile */
  .nav-links.open {
    display: flex !important;
    flex-direction: column;
    position: fixed;
    top: var(--nav-h);
    left: 0; right: 0; bottom: 0;
    background: var(--bg2);
    border-top: 1px solid var(--border);
    padding: 2rem var(--side-pad-md);
    gap: 0;
    overflow-y: auto;
    z-index: 998;
    animation: slideDown .25s ease;
  }
  @keyframes slideDown {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .nav-links.open li {
    border-bottom: 1px solid var(--border);
  }
  .nav-links.open a {
    display: flex !important;
    align-items: center;
    padding: 1rem 0;
    font-size: 1.05rem !important;
    color: var(--text) !important;
    width: 100%;
    min-height: 52px;
  }
  .nav-links.open .nav-cta {
    margin-top: 1rem;
    justify-content: center;
    border-radius: var(--radius-sm) !important;
    width: 100%;
  }
}

/* Panier dans la nav : label caché sous 480px */
@media (max-width: 480px) {
  .nav-cart-label { display: none; }
  .nav-cart {
    padding: 8px 12px !important;
    border-radius: 50% !important;
    width: 40px; height: 40px;
    justify-content: center;
  }
}

/* ─────────────────────────────────────────────────────
   3. HERO — index.html
───────────────────────────────────────────────────── */
.hero {
  padding-top: calc(var(--nav-h-desk) + 3rem);
  padding-bottom: 3rem;
  min-height: auto;
}

@media (max-width: 768px) {
  .hero {
    padding-top: calc(var(--nav-h) + 2.5rem);
    padding-left: var(--side-pad-md);
    padding-right: var(--side-pad-md);
    min-height: auto;
    text-align: center;
  }
  .hero-content { max-width: 100%; }
  .hero-badge   { margin-left: auto; margin-right: auto; }

  .hero h1 {
    font-size: clamp(2rem, 8vw, 3rem) !important;
    line-height: 1.1;
  }
  .hero p { font-size: .97rem !important; }

  .hero-actions {
    justify-content: center;
    flex-direction: column;
    align-items: stretch;
    gap: .75rem !important;
  }
  .hero-actions a {
    justify-content: center;
    width: 100%;
  }

  .hero-stats {
    justify-content: center;
    gap: 1.5rem !important;
    margin-top: 2.5rem !important;
  }
}

@media (max-width: 480px) {
  .hero { padding-left: var(--side-pad); padding-right: var(--side-pad); }
  .hero h1 { font-size: clamp(1.75rem, 9vw, 2.4rem) !important; }
  .stat-num { font-size: 1.5rem !important; }
}

/* ─────────────────────────────────────────────────────
   4. TRUST BAR
───────────────────────────────────────────────────── */
.trust-bar {
  padding: 1.2rem var(--side-pad-md) !important;
  gap: 1rem !important;
  justify-content: flex-start;
  overflow-x: auto;
  flex-wrap: nowrap;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.trust-bar::-webkit-scrollbar { display: none; }
.trust-item { flex-shrink: 0; white-space: nowrap; font-size: .8rem !important; }

@media (min-width: 768px) {
  .trust-bar { flex-wrap: wrap; justify-content: center; overflow-x: visible; }
}

/* ─────────────────────────────────────────────────────
   5. SECTIONS GÉNÉRIQUES — padding latéral
───────────────────────────────────────────────────── */
section {
  padding-left: var(--side-pad-md) !important;
  padding-right: var(--side-pad-md) !important;
}

@media (max-width: 480px) {
  section {
    padding-left: var(--side-pad) !important;
    padding-right: var(--side-pad) !important;
    padding-top: 2.5rem !important;
    padding-bottom: 2.5rem !important;
  }
  .section-title  { font-size: clamp(1.5rem, 6vw, 2rem) !important; }
  .section-sub    { font-size: .92rem !important; margin-bottom: 1.8rem !important; }
}

/* ─────────────────────────────────────────────────────
   6. GRILLES CATÉGORIES — index.html
───────────────────────────────────────────────────── */
/* Les breakpoints sont gérés directement dans index.html
   pour les cat-card. On garde seulement les ajustements
   de padding sur très petits écrans. */
@media (max-width: 540px) {
  .cat-card  { padding: 1.3rem !important; }
  .cat-icon  { width: 44px !important; height: 44px !important; font-size: 1.2rem !important; margin-bottom: .9rem !important; }
  .cat-name  { font-size: .95rem !important; }
  .cat-desc  { font-size: .8rem !important; }
  .cat-count { font-size: .73rem !important; margin-top: .8rem !important; }
}

/* ─────────────────────────────────────────────────────
   7. GRILLES PRODUITS — index.html & shop.html
───────────────────────────────────────────────────── */
.products-grid {
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.2rem;
}

@media (max-width: 768px) {
  .products-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
  }
  .product-thumb { height: 150px !important; }
  .product-thumb iconify-icon { font-size: 3.5rem !important; }
  .product-body  { padding: 1rem !important; }
  .product-name  { font-size: .9rem !important; }
  .product-desc  { font-size: .78rem !important; }
  .product-price { font-size: 1.1rem !important; }
  .btn-add       { padding: 7px 10px !important; font-size: .78rem !important; }
  .btn-add iconify-icon { display: none; } /* icône masquée, gain de place */
}

@media (max-width: 480px) {
  .products-grid { grid-template-columns: 1fr; }
  .product-thumb { height: 130px !important; }
}

/* ─────────────────────────────────────────────────────
   8. "COMMENT ÇA MARCHE" — index.html
───────────────────────────────────────────────────── */
.steps-grid {
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1.5rem;
}

@media (max-width: 600px) {
  .steps-grid {
    grid-template-columns: 1fr 1fr;
    gap: 1.2rem;
  }
  .step { padding: .75rem !important; }
  .step-num  { width: 42px !important; height: 42px !important; font-size: 1rem !important; }
  .step h3   { font-size: .88rem !important; }
  .step p    { font-size: .78rem !important; }
}

@media (max-width: 380px) {
  .steps-grid { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────
   9. PAIEMENTS — index.html
───────────────────────────────────────────────────── */
.payment-cards {
  gap: .8rem;
  flex-wrap: wrap;
}
.pay-card {
  flex: 1 1 180px;
  min-width: 0 !important;
  padding: 1.2rem 1.4rem !important;
}

@media (max-width: 480px) {
  .pay-card { padding: 1rem !important; gap: .75rem !important; }
  .pay-icon { width: 38px !important; height: 38px !important; font-size: 1.1rem !important; }
  .pay-name { font-size: .85rem !important; }
  .pay-desc { font-size: .72rem !important; }
}

/* ─────────────────────────────────────────────────────
   10. CONTACT / MAP — index.html
───────────────────────────────────────────────────── */
.contact-grid {
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  align-items: start;
}

@media (max-width: 768px) {
  .contact-grid { grid-template-columns: 1fr; gap: 1.5rem; }
}

.contact-item { gap: .8rem; }
.contact-icon { width: 38px !important; height: 38px !important; font-size: 1rem !important; flex-shrink: 0; }
.contact-val  { font-size: .9rem !important; }

.map-container { height: 280px; }
@media (max-width: 480px) { .map-container { height: 220px; } }

/* ─────────────────────────────────────────────────────
   11. FOOTER — index.html
───────────────────────────────────────────────────── */
.footer-top {
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 2rem;
}

@media (max-width: 900px) { .footer-top { grid-template-columns: 1fr 1fr; } }

@media (max-width: 600px) {
  .footer-top {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  .footer-brand p { max-width: 100%; font-size: .82rem; }
}

@media (max-width: 480px) {
  footer { padding: 2rem var(--side-pad) 1.5rem; }
  .footer-bottom {
    flex-direction: column;
    text-align: center;
    gap: .6rem;
    font-size: .75rem;
  }
}

/* ─────────────────────────────────────────────────────
   12. CART DRAWER
───────────────────────────────────────────────────── */
.cart-drawer {
  width: min(420px, 96vw) !important;
}

@media (max-width: 480px) {
  .cart-drawer  { width: 100vw !important; }
  .cart-header  { padding: 1rem !important; }
  .cart-items   { padding: .8rem 1rem !important; }
  .cart-footer  { padding: 1rem !important; }
  .cart-title   { font-size: 1rem !important; }
  .cart-item    { gap: .7rem; padding: .7rem 0; }
  .cart-item-icon { width: 42px !important; height: 42px !important; }
}

/* ─────────────────────────────────────────────────────
   13. SHOP — sidebar + layout
───────────────────────────────────────────────────── */
.shop-layout {
  grid-template-columns: 260px 1fr;
  min-height: calc(100vh - var(--nav-h-desk));
  margin-top: var(--nav-h-desk);
}

@media (max-width: 900px) {
  .shop-layout {
    grid-template-columns: 1fr;
    margin-top: var(--nav-h);
  }
  /* Sidebar devient une barre de filtres horizontale */
  .sidebar {
    position: static !important;
    height: auto !important;
    border-right: none !important;
    border-bottom: 1px solid var(--border);
    padding: 1rem var(--side-pad-md) !important;
  }
  .sidebar-title { display: none; }

  /* Filtres en scroll horizontal */
  .cat-filter {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    gap: .5rem !important;
    padding-bottom: .5rem;
    scrollbar-width: none;
  }
  .cat-filter::-webkit-scrollbar { display: none; }
  .cat-btn {
    flex-shrink: 0 !important;
    width: auto !important;
    padding: .5rem .9rem !important;
    font-size: .8rem !important;
    white-space: nowrap;
  }

  /* Prix en ligne */
  .filter-group:not(:first-child) { display: flex; align-items: center; gap: 1rem; }
  .price-inputs { flex-wrap: nowrap; }
  .btn-reset { display: none; } /* masqué sur mobile — les filtres se voient */
}

@media (max-width: 480px) {
  .sidebar { padding: .8rem var(--side-pad) !important; }
  .shop-main { padding: 1.2rem var(--side-pad) !important; }
  .shop-title { font-size: 1.3rem !important; }

  /* Barre de recherche pleine largeur */
  .shop-header {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: .8rem !important;
  }
  .search-bar { max-width: 100% !important; }
}

/* ─────────────────────────────────────────────────────
   14. SHOP — produits grille
───────────────────────────────────────────────────── */
@media (max-width: 768px) {
  /* shop.html utilise .products-grid — déjà couvert §7 */
  .shop-main .products-grid { grid-template-columns: repeat(2, 1fr); gap: .9rem; }
}
@media (max-width: 420px) {
  .shop-main .products-grid { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────
   15. CHECKOUT — layout
───────────────────────────────────────────────────── */
.checkout-layout {
  grid-template-columns: 1fr 400px;
  gap: 2rem;
  align-items: start;
}

@media (max-width: 900px) {
  .checkout-layout { grid-template-columns: 1fr; }
  .order-summary   {
    order: -1;         /* récap en PREMIER sur mobile */
    position: static !important;
  }
}

/* Steps bar plus compacte sur mobile */
@media (max-width: 480px) {
  .steps-bar {
    padding: .8rem 1rem !important;
    gap: 0 !important;
  }
  .step-label   { font-size: .72rem !important; }
  .step-num     { width: 24px !important; height: 24px !important; font-size: .68rem !important; }
  .step-sep     { margin: 0 .4rem !important; max-width: 30px !important; }
}

/* Formulaire */
@media (max-width: 560px) {
  .form-row  { grid-template-columns: 1fr !important; }
  .form-section { padding: 1.3rem !important; }
  .section-head { margin-bottom: 1.2rem !important; }
  input, select { padding: .7rem .85rem !important; font-size: .88rem !important; }
}

/* Options de paiement */
@media (max-width: 480px) {
  .pay-option { padding: 1rem !important; }
  .pay-icon-box { width: 38px !important; height: 38px !important; font-size: 1.1rem !important; }
  .pay-name  { font-size: .88rem !important; }
  .pay-logos { gap: .3rem !important; }
  .pay-logo-tag { font-size: .65rem !important; padding: 2px 6px !important; }
}

/* Infos bancaires */
@media (max-width: 480px) {
  .bank-info    { padding: .9rem !important; }
  .bank-row     { font-size: .78rem !important; flex-wrap: wrap; }
  .bank-warning { font-size: .76rem !important; }
}

/* Récap commande */
@media (max-width: 480px) {
  .order-summary  { padding: 1.2rem !important; }
  .summary-title  { font-size: .95rem !important; margin-bottom: 1.1rem !important; }
  .summary-item-name  { font-size: .8rem !important; }
  .summary-total      { font-size: 1.05rem !important; }
  .summary-badge      { font-size: .75rem !important; }
  .summary-badges     { gap: .4rem !important; }
}

/* Bouton payer */
.btn-pay { font-size: .95rem !important; padding: 14px 20px !important; }

/* ─────────────────────────────────────────────────────
   16. CONFIRMATION — page
───────────────────────────────────────────────────── */
.page { padding: 2rem var(--side-pad-md) !important; }

@media (max-width: 600px) {
  .page { padding: 1.5rem var(--side-pad) !important; }

  .success-header h1,
  .pending-header h1 { font-size: 1.5rem !important; }
  .success-anim,
  .pending-anim { width: 80px !important; height: 80px !important; font-size: 2.2rem !important; }

  .order-card   { padding: 1.3rem !important; }
  .order-id     { flex-direction: column; align-items: flex-start; gap: .5rem; }
  .order-id-val { font-size: .95rem !important; }
  .order-meta   { grid-template-columns: 1fr !important; gap: .7rem !important; }
  .order-item   { padding: .7rem !important; gap: .6rem; }
  .order-item-icon { width: 36px !important; height: 36px !important; font-size: 1rem !important; }
  .order-item-name  { font-size: .82rem !important; }
  .order-item-price { font-size: .82rem !important; }
  .order-total-val  { font-size: 1.1rem !important; }

  .download-section { padding: 1.3rem !important; }
  .download-item    { flex-wrap: wrap; gap: .7rem !important; padding: .8rem !important; }
  .btn-download     { width: 100%; justify-content: center; }

  .bank-pending { padding: 1.3rem !important; }
  .bank-step    { font-size: .82rem !important; }

  .actions      { flex-direction: column !important; }
  .btn-action   { justify-content: center; width: 100%; }

  .email-notice { padding: 1rem !important; gap: .7rem !important; }
  .email-notice-text { font-size: .82rem !important; }
}

/* ─────────────────────────────────────────────────────
   17. ADMIN — login
───────────────────────────────────────────────────── */
@media (max-width: 480px) {
  .login-box    { padding: 2rem 1.4rem !important; }
  .login-logo span { font-size: 1.1rem !important; }
  .login-title  { font-size: 1.2rem !important; }
}

/* ─────────────────────────────────────────────────────
   18. ADMIN — layout sidebar + main
───────────────────────────────────────────────────── */
.admin-layout {
  grid-template-columns: var(--sidebar) 1fr;
  min-height: 100vh;
}

@media (max-width: 900px) {
  .admin-layout { grid-template-columns: 1fr; }

  /* Sidebar en drawer sur mobile */
  .sidebar {
    position: fixed !important;
    inset: 0 auto 0 0 !important;
    z-index: 500;
    width: var(--sidebar);
    transform: translateX(-100%);
    transition: transform .3s cubic-bezier(.4,0,.2,1);
    height: 100vh !important;
  }
  .sidebar.open { transform: translateX(0); }
  .menu-toggle  { display: flex !important; }
}

/* ─────────────────────────────────────────────────────
   19. ADMIN — topbar
───────────────────────────────────────────────────── */
@media (max-width: 600px) {
  .admin-topbar { padding: .7rem 1rem !important; }
  .page-title   { font-size: .95rem !important; }
  .topbar-btn span { display: none; } /* masque le texte, garde l'icône */
  .topbar-btn   { padding: .5rem .7rem !important; min-width: 36px; justify-content: center; }
}

/* ─────────────────────────────────────────────────────
   20. ADMIN — stat cards
───────────────────────────────────────────────────── */
.stats-grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }

@media (max-width: 768px) {
  .stats-grid { grid-template-columns: 1fr 1fr; gap: .9rem; }
  .stat-card  { padding: 1.1rem !important; }
  .stat-val   { font-size: 1.4rem !important; }
  .stat-icon  { width: 36px !important; height: 36px !important; font-size: 1.1rem !important; margin-bottom: .75rem !important; }
  .stat-label { font-size: .68rem !important; }
  .stat-change{ font-size: .68rem !important; }
}

@media (max-width: 420px) {
  .stats-grid { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────
   21. ADMIN — charts
───────────────────────────────────────────────────── */
.charts-grid { grid-template-columns: 2fr 1fr; gap: 1.2rem; }

@media (max-width: 900px) {
  .charts-grid { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
  .chart-card   { padding: 1.1rem !important; }
  .chart-title  { font-size: .85rem !important; }
  .bar-chart    { height: 90px !important; }
  .bar-label    { font-size: .58rem !important; }
  .donut-wrap   { flex-direction: column; gap: 1rem !important; }
  .legend-item  { font-size: .72rem !important; }
}

/* ─────────────────────────────────────────────────────
   22. ADMIN — tableaux
───────────────────────────────────────────────────── */

/* Scroll horizontal natif sur petits écrans */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.tbl        { min-width: 600px; } /* force le scroll plutôt que l'écrasement */

@media (max-width: 768px) {
  .tbl th, .tbl td { padding: .6rem .8rem !important; font-size: .78rem !important; }
  .table-toolbar  { padding: .7rem .8rem !important; gap: .4rem !important; }
  .table-toolbar input { min-width: 120px !important; }
  .section-header { gap: .5rem !important; }
  .table-actions  { flex-wrap: wrap; gap: .4rem !important; }
  .btn-sm         { font-size: .75rem !important; padding: .38rem .7rem !important; }

  /* Masque colonnes secondaires sur très petits écrans */
  .col-hide-sm { display: none !important; }
}

@media (max-width: 480px) {
  .admin-content  { padding: 1rem !important; }
  .tbl            { min-width: 520px; }
  .row-actions    { gap: .2rem !important; }
  .icon-btn       { padding: 4px 6px !important; font-size: .85rem !important; }
}

/* ─────────────────────────────────────────────────────
   23. ADMIN — grille produits
───────────────────────────────────────────────────── */
.product-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }

@media (max-width: 768px) {
  .product-grid { grid-template-columns: repeat(2, 1fr); gap: .8rem; }
  .prod-thumb   { height: 80px !important; }
  .prod-body    { padding: .8rem !important; }
  .prod-name    { font-size: .82rem !important; }
  .prod-price   { font-size: .85rem !important; }
  .prod-actions { gap: .3rem !important; }
}

@media (max-width: 420px) {
  .product-grid { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────
   24. ADMIN — settings
───────────────────────────────────────────────────── */
.settings-grid { grid-template-columns: 1fr 1fr; gap: 1.5rem; }

@media (max-width: 768px) {
  .settings-grid { grid-template-columns: 1fr; gap: 1rem; }
  .settings-card { padding: 1.4rem !important; }
  .settings-card h3 { font-size: .92rem !important; }
}

/* ─────────────────────────────────────────────────────
   25. MODAL — tous les fichiers
───────────────────────────────────────────────────── */
.modal {
  padding: 1.6rem !important;
  max-height: 92vh;
  overflow-y: auto;
  border-radius: var(--radius) var(--radius) 0 0; /* coins ronds seulement en haut */
}

/* Sur mobile : modal ancrée en bas (bottom sheet) */
@media (max-width: 600px) {
  .modal-overlay {
    align-items: flex-end !important;
    padding: 0 !important;
  }
  .modal {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 88vh !important;
    border-radius: var(--radius) var(--radius) 0 0 !important;
    padding: 1.4rem 1.2rem 2rem !important;
  }
  .modal-head h3 { font-size: 1rem !important; }
  .modal-row     { grid-template-columns: 1fr !important; }
  .modal-actions { flex-direction: column !important; }
  .btn-save, .btn-modal-save, .btn-modal-cancel {
    width: 100%;
    justify-content: center;
  }
}

/* ─────────────────────────────────────────────────────
   26. TOAST — position mobile
───────────────────────────────────────────────────── */
.toast-container {
  bottom: 1.2rem !important;
  right: 1rem !important;
  left: 1rem;
  align-items: stretch;
}
.toast {
  min-width: 0 !important;
  max-width: 100% !important;
  font-size: .83rem !important;
}

@media (min-width: 600px) {
  .toast-container { left: auto; right: 1.5rem !important; }
  .toast { min-width: 240px !important; max-width: 320px !important; }
}

/* ─────────────────────────────────────────────────────
   27. PWA BANNER
───────────────────────────────────────────────────── */
.pwa-banner {
  padding: .9rem 1rem !important;
  gap: .8rem !important;
  flex-wrap: nowrap;
}
.pwa-banner p    { font-size: .82rem !important; min-width: 0; }
.pwa-banner .btn-primary { padding: 9px 14px !important; font-size: .82rem !important; flex-shrink: 0; }

@media (max-width: 380px) {
  .pwa-banner { flex-wrap: wrap !important; }
  .pwa-banner .btn-primary { width: 100%; justify-content: center; }
}

/* ─────────────────────────────────────────────────────
   28. 404 PAGE
───────────────────────────────────────────────────── */
@media (max-width: 480px) {
  .code  { font-size: 5rem !important; }
  h1     { font-size: 1.3rem !important; }
  .actions { flex-direction: column; width: 100%; }
  .actions a { width: 100%; justify-content: center; }
}

/* ─────────────────────────────────────────────────────
   29. ACCESSIBILITÉ & FOCUS
───────────────────────────────────────────────────── */
:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Réduction des animations si l'utilisateur le préfère */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
}

/* ─────────────────────────────────────────────────────
   30. UTILITIES RESPONSIVE
───────────────────────────────────────────────────── */
/* Classes utilitaires légères */
.hide-mobile  { }
.hide-tablet  { }
.hide-desktop { }

@media (max-width: 768px) {
  .hide-mobile  { display: none !important; }
}
@media (min-width: 769px) and (max-width: 1024px) {
  .hide-tablet  { display: none !important; }
}
@media (min-width: 1025px) {
  .hide-desktop { display: none !important; }
}

/* Texte tronqué sur 1 ou 2 lignes */
.truncate-1 { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.truncate-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
