  /* ============================================================
     PAGE BONS PLANS
     Feuille de style dédiée à la vue Twig bons_plans.html.twig
     ============================================================ */
  .conteneur {
      max-width: 1200px;
      margin: 0 auto;
      padding: 0 24px;
  }

  .section {
      padding: 88px 0;
  }

  .section-titre {
      margin: 0;
      font-size: clamp(28px, 3.4vw, 40px);
      font-weight: 800;
      letter-spacing: -0.02em;
      color: var(--tm-color-navy);
      line-height: 1.15;
  }

  .entete-section {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      gap: 24px;
      margin-bottom: 44px;
      flex-wrap: wrap;
  }

  .eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      margin-bottom: 14px;
      font-size: 13px;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--tm-color-blue);
  }

  .eyebrow::before {
      content: "";
      width: 22px;
      height: 3px;
      border-radius: 2px;
      background: var(--tm-color-orange);
  }

  .btn {
      border: 0;
      border-radius: 999px;
      padding: 14px 26px;
      font-weight: 700;
      font-size: 15px;
      text-decoration: none;

 
      transition: transform 0.15s, box-shadow 0.15s, background 0.15s, color 0.15s;
  }

  .btn:active {
      transform: scale(0.98);
  }

  .btn-bleu {
      background: var(--tm-color-blue);
      color: #fff;
  }

  .btn-bleu:hover {
      color: #fff;
      box-shadow: 0 10px 24px rgba(30, 73, 199, 0.35);
      transform: translateY(-1px);
  }

  .filtres-inner {
      display: flex;
      align-items: center;
      gap: 14px;
      flex-wrap: wrap;
  }

  /* ============================================================
     HERO BONS PLANS
     ============================================================ */

  .hero-liste {
      position: relative;
      overflow: hidden;
      background: var(--tm-color-navy);
      color: #fff;
  }

  .hero-liste .fond {
      position: absolute;
      inset: 0;
      background-image: url("../../images/worker-bricolage-JJ8VujU.webp");
      background-size: cover;
      background-position: center right;
  }

  .hero-liste .voile {
      position: absolute;
      inset: 0;
      background: linear-gradient(
          90deg,
          var(--tm-color-navy) 32%,
          rgba(10, 22, 51, 0.86) 50%,
          rgba(10, 22, 51, 0.25) 100%
      );
  }

  .hero-liste-inner {
      position: relative;
      z-index: 1;
      max-width: 600px;
      padding: 72px 0 64px;
  }

  .hero-liste h1 {
      margin: 0;
      font-size: clamp(34px, 4.6vw, 52px);
      font-weight: 800;
      letter-spacing: -0.025em;
      line-height: 1.1;
  }

  .hero-liste h1 span {
      color: var(--tm-color-orange);
  }

  .hero-liste p {
      margin: 18px 0 0;
      max-width: 480px;
      font-size: 17.5px;
      color: #c9d3e8;
  }

  .hero-atouts {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      margin-top: 30px;
  }

  .hero-atout {
      display: flex;
      align-items: center;
      gap: 11px;
      padding: 13px 17px;
      border: 1px solid rgba(255, 255, 255, 0.16);
      border-radius: 14px;
      background: rgba(10, 22, 51, 0.55);
      backdrop-filter: blur(6px);
      font-size: 14px;
      font-weight: 600;
      line-height: 1.3;
  }

  .hero-atout .rond {
      width: 38px;
      height: 38px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      border-radius: 11px;
      background: rgba(255, 255, 255, 0.1);
      color: var(--tm-color-orange);
  }

  .hero-liste .pastille-promo {
      position: absolute;
      top: 50%;
      right: 6%;
      z-index: 2;
      padding: 22px 26px;
      border-radius: 18px;
      background: #fff;
      box-shadow: var(--tm-shadow-lg);
      color: var(--tm-color-navy);
      text-align: center;
      transform: translateY(-50%) rotate(6deg);
  }

  .pastille-promo .jusqua {
      font-size: 13.5px;
      font-weight: 600;
      color: var(--tm-color-text-muted);
  }

  .pastille-promo .pourcent {
      font-size: 46px;
      font-weight: 800;
      letter-spacing: -0.03em;
      line-height: 1.05;
      color: var(--tm-color-orange);
  }

  .pastille-promo .sur {
      font-size: 13.5px;
      font-weight: 700;
  }

  .pastille-promo .etincelles {
      position: absolute;
      top: -22px;
      left: -18px;
      color: var(--tm-color-orange);
  }

  /* ============================================================
     RESULTATS / FILTRES
     ============================================================ */

  .resultats {
      background: var(--tm-color-paper);
      padding-top: 48px;
  }

  .resultats .entete-section {
      margin-bottom: 28px;
  }

  .resultats .section-titre {
      font-size: clamp(24px, 2.8vw, 32px);
  }

  .filtres-inner--subcategories {
      padding: 0 0 24px;
  }

  .filtre {
      display: inline-flex;
      align-items: center;
      gap: 9px;
      min-height: 48px;
      padding: 10px 16px;
      border: 1.5px solid var(--tm-color-border);
      border-radius: 999px;
      background: #fff;
      color: var(--tm-color-navy);
      font-size: 14px;
      font-weight: 600;
      cursor: pointer;
      transition: border-color 0.15s, box-shadow 0.15s, color 0.15s, transform 0.15s;
  }

  .filtre:hover {
      border-color: var(--tm-color-blue);
      color: var(--tm-color-blue);
  }

  .filtre svg:first-child {
      flex-shrink: 0;
      color: var(--tm-color-blue);
  }

  .filtre .chevron {
      color: var(--tm-color-text-muted);
  }

  .filtre select {
      border: none;
      background: none;
      font: inherit;
      color: inherit;
      cursor: pointer;
      appearance: none;
      -webkit-appearance: none;
      outline: none;
      min-width: 0;
  }

  .bons-plans-layout {
      display: grid;
      grid-template-columns: 1fr 296px;
      gap: 24px;
      align-items: start;
  }

  .grille-deals {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 22px;
  }

  /* ============================================================
     CARTE DEAL
     ============================================================ */

  .deal {
      display: flex;
      flex-direction: column;
      overflow: hidden;
      border: 1px solid var(--tm-color-border);
      border-radius: 16px;
      background: #fff;
      transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s;
  }

  .deal:hover {
      border-color: var(--tm-color-blue);
      box-shadow: 0 14px 36px rgba(30, 73, 199, 0.18), 0 4px 14px rgba(255, 138, 30, 0.12);
      transform: translateY(-2px);
  }

  .deal .visuel {
      position: relative;
      overflow: visible;
      aspect-ratio: 4 / 3;
  }

  .deal .visuel a {
      display: block;
      width: 100%;
      height: 100%;
  }

  .deal .visuel img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
      border-top-left-radius: 16px;
      border-top-right-radius: 16px;
  }

  .badge-remise {
      position: absolute;
      top: 11px;
      left: 11px;
      display: inline-flex;
      align-items: center;
      border-radius: 999px;
      background: var(--tm-color-orange);
      color: var(--tm-color-navy);
      padding: 5px 12px;
      font-size: 14px;
      font-weight: 800;
  }

  .deal .timer {
      position: absolute;
      top: 13px;
      left: 76px;
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 5px 10px;
      border-radius: 999px;
      background: rgba(10, 22, 51, 0.82);
      color: #fff;
      font-size: 11.5px;
      font-weight: 700;
      backdrop-filter: blur(4px);
  }

  .deal .favori {
      position: absolute;
      top: 10px;
      right: 10px;
      width: 32px;
      height: 32px;
      display: flex;
      align-items: center;
      justify-content: center;
      border: 0;
      border-radius: 50%;
      background: rgba(255, 255, 255, 0.95);
      color: var(--tm-color-navy);
      transition: color 0.15s, transform 0.15s;
  }

  .deal .favori:hover {
      color: #e0245e;
      transform: scale(1.1);
  }

  .deal .icone-cat {
      position: absolute;
      bottom: -19px;
      left: 14px;
      z-index: 3;
      width: 44px;
      height: 44px;
      display: flex;
      align-items: center;
      justify-content: center;
      border: 3px solid #fff;
      border-radius: 50%;
      background: #fff;
      box-shadow: var(--tm-shadow-sm);
      color: var(--tm-color-blue);
      font-size: 16px;
  }

  .icone-cat.c-bleu {
      background: var(--tm-color-blue);
      color: #fff;
  }

  .icone-cat.c-vert {
      background: var(--tm-color-success);
      color: #fff;
  }

  .icone-cat.c-violet {
      background: #7c3aed;
      color: #fff;
  }

  .icone-cat.c-safran {
      background: var(--tm-color-orange);
      color: var(--tm-color-navy);
  }

  .deal .corps {
      position: relative;
      z-index: 1;
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      padding: 30px 20px 20px;
  }

  .deal h3 {
      margin: 0;
      font-size: 17px;
      line-height: 1.35;
      color: var(--tm-color-navy);
  }

  .deal h3 a {
      color: inherit;
      text-decoration: none;
  }

  .deal h3 a:hover {
      color: var(--tm-color-blue);
  }

  .deal .metier {
      margin: 4px 0 0;
      font-size: 13px;
      color: var(--tm-color-text-muted);
  }

  .deal .prix {
      display: flex;
      align-items: baseline;
      gap: 9px;
      margin: 10px 0 0;
  }

  .deal .prix s {
      color: var(--tm-color-text-muted);
      font-size: 13.5px;
  }

  .deal .prix strong {
      font-size: 21px;
      font-weight: 800;
      color: var(--tm-color-blue);
  }

  .deal .ligne {
      display: flex;
      align-items: center;
      gap: 7px;
      margin: 9px 0 0;
      font-size: 13.5px;
      color: var(--tm-color-text-muted);
  }

  .deal .ligne svg {
      flex-shrink: 0;
  }

  .deal .ligne.note {
      color: var(--tm-color-navy);
      font-weight: 700;
  }

  .deal .ligne.note svg {
      color: var(--tm-color-orange);
  }

  .deal .ligne.note span {
      color: var(--tm-color-text-muted);
      font-weight: 500;
  }

  .deal .ligne.lieu svg {
      color: var(--tm-color-blue);
  }

  /* ============================================================
     ENCAT NOTIF
     ============================================================ */

  .encart-notif {
      position: sticky;
      top: 150px;
      padding: 28px 24px;
      border: 1px solid #d4dffa;
      border-radius: 16px;
      background: var(--tm-color-blue-soft);
      text-align: center;
  }

  .encart-notif .cloche {
      width: 60px;
      height: 60px;
      margin: 0 auto 16px;
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 50%;
      background: #fff;
      box-shadow: var(--tm-shadow-sm);
      color: var(--tm-color-blue);
  }

  .encart-notif h3 {
      margin: 0;
      font-size: 19px;
      line-height: 1.25;
      color: var(--tm-color-navy);
  }

  .encart-notif > p {
      margin: 10px 0 0;
      font-size: 13.5px;
      color: var(--tm-color-text-muted);
  }

  .encart-notif .btn {
      width: 100%;
      margin-top: 18px;
      padding: 13px 18px;
      font-size: 14px;
  }

  .encart-notif ul {
      display: grid;
      gap: 10px;
      margin: 20px 0 0;
      padding: 0;
      text-align: left;
      list-style: none;
  }

  .encart-notif li {
      display: flex;
      align-items: center;
      gap: 10px;
      font-size: 13.5px;
      font-weight: 600;
      color: var(--tm-color-navy);
  }

  .encart-notif li svg {
      flex-shrink: 0;
      color: var(--tm-color-blue);
  }

  /* ============================================================
     ETAT VIDE
     ============================================================ */

  .tm-bonsplans-empty {
      grid-column: 1 / -1;
      padding: 48px 24px;
      border: 1px solid var(--tm-color-border);
      border-radius: 16px;
      background: #fff;
      text-align: center;
      box-shadow: var(--tm-shadow-sm);
  }

  .tm-bonsplans-empty__icon {
      font-size: 36px;
      line-height: 1;
  }

  .tm-bonsplans-empty__title {
      margin: 14px 0 0;
      font-size: 24px;
      font-weight: 800;
      color: var(--tm-color-navy);
  }

  .tm-bonsplans-empty__text {
      max-width: 560px;
      margin: 12px auto 0;
      font-size: 15px;
      color: var(--tm-color-text-muted);
  }

  .tm-bonsplans-empty__cta {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      margin-top: 22px;
      padding: 13px 22px;
      border-radius: 999px;
      background: var(--tm-color-blue);
      color: #fff;
      font-weight: 700;
      text-decoration: none;
      transition: box-shadow 0.15s, transform 0.15s, background 0.15s;
  }

  .tm-bonsplans-empty__cta:hover {
      background: #163fb5;
      color: #fff;
      transform: translateY(-1px);
      box-shadow: 0 10px 24px rgba(30, 73, 199, 0.35);
  }

  /* ============================================================
     PAGINATION KNP
     ============================================================ */

  .tm-bonsplans-pagination {
      margin-top: 44px;
  }

  .tm-bonsplans-pagination .pagination {
      display: flex;
      justify-content: center;
      flex-wrap: wrap;
      gap: 8px;
      margin-bottom: 0;
  }

  .tm-bonsplans-pagination .page-item {
      list-style: none;
  }

  .tm-bonsplans-pagination .page-link {
      min-width: 42px;
      height: 42px;
      padding: 0 16px;
      display: flex;
      align-items: center;
      justify-content: center;
      border: 1.5px solid var(--tm-color-border);
      border-radius: 12px;
      background: #fff;
      color: var(--tm-color-navy);
      font-size: 14.5px;
      font-weight: 700;
      transition: border-color 0.15s, background 0.15s, color 0.15s;
  }

  .tm-bonsplans-pagination .page-link:hover {
      border-color: var(--tm-color-blue);
      background: #fff;
      color: var(--tm-color-blue);
  }

  .tm-bonsplans-pagination .page-item.active .page-link {
      border-color: var(--tm-color-blue);
      background: var(--tm-color-blue);
      color: #fff;
  }

  .tm-bonsplans-pagination .page-item.disabled .page-link {
      opacity: 0.55;
      pointer-events: none;
  }

  /* ============================================================
     RESPONSIVE
     ============================================================ */

  @media (max-width: 1200px) {
      .grille-deals {
          grid-template-columns: repeat(3, 1fr);
      }
  }

  @media (max-width: 1024px) {
      .bons-plans-layout {
          grid-template-columns: 1fr;
      }

      .encart-notif {
          position: static;
      }

      .grille-deals {
          grid-template-columns: repeat(2, 1fr);
      }

      .hero-liste .voile {
          background: linear-gradient(
              90deg,
              var(--tm-color-navy) 20%,
              rgba(10, 22, 51, 0.88) 60%,
              rgba(10, 22, 51, 0.55) 100%
          );
      }

      .hero-liste .pastille-promo {
          display: none;
      }
  }

  @media (max-width: 640px) {
      .section {
          padding: 60px 0;
      }

      .conteneur {
          padding: 0 16px;
      }

      .hero-liste-inner {
          padding: 52px 0 48px;
      }

      .grille-deals {
          grid-template-columns: 1fr;
      }

      .filtre {
          width: 100%;
          justify-content: space-between;
      }

      .filtres-inner {
          align-items: stretch;
      }

      .tm-bonsplans-pagination .page-link {
          min-width: 38px;
          height: 38px;
          padding: 0 12px;
      }
  }
