/* ============================================================
   Forfaits imprimés (2026-10-16) : page « forfaits-imprimes ».
   Chargé seulement sur cette page (functions.php). Reprend les classes du site
   (hero, services-grid, service-card, steps, big-cta) et ajoute les grilles de prix.
   ============================================================ */

/* Cartes des forfaits : 3 par rangée, prix en bas. */
.pm-imp-forfaits .pm-imp-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pm-imp-card { display: flex; flex-direction: column; }
.pm-imp-card h3 { font-size: clamp(1.3rem, 1.6vw, 1.5rem); }
.pm-imp-card .pm-imp-card__spec { margin-top: 0.4rem; font-size: 0.95rem; color: var(--ink-500); }
.pm-imp-card .pm-imp-card__price { margin-top: auto; padding-top: 1.5rem; font-size: 0.95rem; color: var(--ink-500); }
.pm-imp-card .pm-imp-card__price strong { font-size: 1.75rem; font-weight: 600; color: var(--ink-700); letter-spacing: -0.01em; }
.pm-imp-card .wp-block-buttons { margin-top: 1.25rem; }
.pm-imp-note { margin-top: 2rem; max-width: 760px; font-size: 0.9rem; line-height: 1.6; color: var(--ink-500); }

/* Comment ça fonctionne : 3 étapes. */
.pm-imp-steps .steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* Grille de prix : texte à gauche, tableau à droite. */
.pm-imp-prix { background: var(--paper); }
.pm-imp-row {
  display: grid;
  grid-template-columns: minmax(0, 300px) minmax(0, 1fr);
  gap: 56px;
  align-items: start;
  padding: 56px 0;
  border-top: 1px solid var(--line-light);
  scroll-margin-top: 120px;
}
.pm-imp-row__info h3 { margin: 0.6rem 0 1rem; font-size: clamp(1.9rem, 2.6vw, 2.5rem); font-weight: 300; line-height: 1.1; letter-spacing: -0.02em; color: var(--ink-700); }
.pm-imp-row__info p:not(.eyebrow) { font-size: 1rem; line-height: 1.6; color: var(--ink-600); }
.pm-imp-checks { margin: 1.25rem 0 0; padding: 0; list-style: none; }
.pm-imp-checks li { position: relative; margin: 0 0 0.45rem; padding-left: 1.5rem; font-size: 0.92rem; line-height: 1.5; color: var(--ink-600); }
.pm-imp-checks li::before { content: "✔"; position: absolute; left: 0; color: var(--brand-green-2); }

/* Tableaux de prix. */
.wp-block-table.pm-imp-table { margin: 0; overflow-x: auto; }
.pm-imp-table table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.wp-block-table.pm-imp-table thead { border-bottom: 2px solid var(--ink-700); }
.wp-block-table.pm-imp-table th,
.wp-block-table.pm-imp-table td { border: 0; padding: 14px 12px; text-align: right; white-space: nowrap; }
.wp-block-table.pm-imp-table th { padding-top: 0; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-700); }
.wp-block-table.pm-imp-table td { border-bottom: 1px solid var(--line-light); vertical-align: middle; line-height: 1.35; }
.wp-block-table.pm-imp-table th:first-child,
.wp-block-table.pm-imp-table td:first-child { padding-left: 4px; text-align: left; }
.wp-block-table.pm-imp-table td:first-child { font-size: 1.05rem; color: var(--ink-700); }
.wp-block-table.pm-imp-table td strong { font-size: 1.05rem; font-weight: 600; color: var(--ink-800); }
.wp-block-table.pm-imp-table td em { font-style: normal; font-size: 0.78rem; color: var(--ink-500); }
.pm-imp-row--large .wp-block-table.pm-imp-table th,
.pm-imp-row--large .wp-block-table.pm-imp-table td { padding-left: 8px; padding-right: 8px; }
.pm-imp-row--large .wp-block-table.pm-imp-table td strong { font-size: 0.98rem; }

/* Infographie et montage. */
.pm-imp-infog { background: var(--bone); }
.pm-imp-infog__grid { display: grid; grid-template-columns: minmax(0, 360px) minmax(0, 1fr); gap: 64px; align-items: start; }
.pm-imp-rate { padding: 36px 36px 40px; background: var(--paper); border: 1px solid var(--line-light); border-radius: var(--r-lg, 22px); }
.pm-imp-rate .pm-imp-rate__price { margin: 1rem 0 1.25rem; font-size: 1.1rem; color: var(--ink-500); }
.pm-imp-rate .pm-imp-rate__price strong { font-size: clamp(3rem, 5vw, 4.25rem); font-weight: 300; line-height: 1; letter-spacing: -0.03em; color: var(--ink-700); }
.pm-imp-rate p:last-child { font-size: 1rem; line-height: 1.6; color: var(--ink-600); }
.pm-imp-times > .eyebrow { margin-bottom: 1.25rem; }
.wp-block-table.pm-imp-table--temps td:first-child { font-size: 1rem; white-space: normal; }

/* Sur soumission : pastilles et « Bon à savoir ». */
.pm-imp-plus { background: var(--paper); }
.pm-imp-plus .lead { max-width: 760px; }
.pm-imp-chips { display: flex; flex-wrap: wrap; gap: 10px; margin: 2rem 0 0; padding: 0; list-style: none; }
.pm-imp-chips li { margin: 0; padding: 9px 18px; font-size: 0.95rem; color: var(--ink-700); border: 1px solid var(--ink-700); border-radius: 999px; }
.pm-imp-chips li:has(strong) { color: #fff; background: var(--brand-green-2); border-color: var(--brand-green-2); }
.pm-imp-chips li strong { font-weight: 600; }
.pm-imp-bon { margin-top: 64px; padding-top: 40px; border-top: 1px solid var(--line-light); }
.pm-imp-bon__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 48px; margin: 1.25rem 0 0; padding: 0; list-style: none; }
.pm-imp-bon__list li { margin: 0; font-size: 0.95rem; line-height: 1.55; color: var(--ink-600); }

/* Appel à l'action « sur mesure » entre les accroche-portes et les affiches (2026-10-16). */
.pm-imp-promo {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: 48px;
  align-items: center;
  margin: 8px 0 56px;
  padding: 56px;
  color: #fff;
  background: var(--brand-slate);
  border-radius: 28px;
  scroll-margin-top: 120px;
}
.pm-imp-promo::before,
.pm-imp-promo::after {
  content: "";
  position: absolute;
  z-index: -1;
  border-radius: 50%;
  filter: blur(8px);
  pointer-events: none;
}
.pm-imp-promo::before {
  top: -140px;
  right: -120px;
  width: 420px;
  height: 420px;
  background: radial-gradient(circle, rgba(153, 191, 56, 0.35) 0%, rgba(153, 191, 56, 0) 70%);
  animation: pmImpFloat 9s ease-in-out infinite alternate;
}
.pm-imp-promo::after {
  bottom: -160px;
  left: -100px;
  width: 360px;
  height: 360px;
  background: radial-gradient(circle, rgba(153, 191, 56, 0.18) 0%, rgba(153, 191, 56, 0) 70%);
  animation: pmImpFloat 11s ease-in-out infinite alternate-reverse;
}
.pm-imp-promo .eyebrow { color: var(--brand-green); }
.pm-imp-promo h3 { margin: 0.75rem 0 1rem; font-size: clamp(1.9rem, 2.8vw, 2.6rem); font-weight: 300; line-height: 1.1; letter-spacing: -0.02em; color: #fff; }
.pm-imp-promo h3 em { font-family: "Cormorant Garamond", Georgia, serif; font-size: 1.12em; color: var(--brand-green); }
.pm-imp-promo__text > p:not(.eyebrow) { font-size: 1.02rem; line-height: 1.65; color: rgba(255, 255, 255, 0.78); }
.pm-imp-promo .pm-imp-promo__actions { margin-top: 1.75rem; gap: 12px; }
.pm-imp-promo .pm-imp-promo__call .wp-block-button__link { position: relative; }
.pm-imp-promo .pm-imp-promo__call .wp-block-button__link::after {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: 999px;
  box-shadow: 0 0 0 0 rgba(153, 191, 56, 0.55);
  animation: pmImpPulse 2.4s ease-out infinite;
}
.pm-imp-promo .pm-imp-promo__form .wp-block-button__link {
  padding: 15.2px 25.6px;
  font-size: 16.8px;
  font-weight: 600;
  color: #fff;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 999px;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}
.pm-imp-promo .pm-imp-promo__form .wp-block-button__link:hover { background: rgba(255, 255, 255, 0.08); border-color: #fff; }

/* Catégories du catalogue : les pastilles s'allument tour à tour. */
.pm-imp-promo__cats > .eyebrow { margin-bottom: 1rem; color: rgba(255, 255, 255, 0.6); }
.pm-imp-cats { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.pm-imp-cats li {
  margin: 0;
  padding: 10px 18px;
  font-size: 0.95rem;
  line-height: 1.3;
  color: rgba(255, 255, 255, 0.9);
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 999px;
  animation: pmImpGlow 8s ease-in-out infinite;
}
.pm-imp-cats li:nth-child(2) { animation-delay: 1s; }
.pm-imp-cats li:nth-child(3) { animation-delay: 2s; }
.pm-imp-cats li:nth-child(4) { animation-delay: 3s; }
.pm-imp-cats li:nth-child(5) { animation-delay: 4s; }
.pm-imp-cats li:nth-child(6) { animation-delay: 5s; }
.pm-imp-cats li:nth-child(7) { animation-delay: 6s; }
.pm-imp-cats li:nth-child(8) { animation-delay: 7s; }
@keyframes pmImpGlow {
  0%, 16%, 100% { color: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.16); transform: translateY(0); }
  6% { color: var(--brand-slate); background: var(--brand-green); border-color: var(--brand-green); transform: translateY(-3px); }
}
@keyframes pmImpPulse {
  0% { box-shadow: 0 0 0 0 rgba(153, 191, 56, 0.55); }
  70%, 100% { box-shadow: 0 0 0 14px rgba(153, 191, 56, 0); }
}
@keyframes pmImpFloat {
  from { transform: translate(0, 0) scale(1); }
  to { transform: translate(-60px, 40px) scale(1.15); }
}
@media (prefers-reduced-motion: reduce) {
  .pm-imp-promo::before,
  .pm-imp-promo::after,
  .pm-imp-cats li,
  .pm-imp-promo .pm-imp-promo__call .wp-block-button__link::after { animation: none; }
}

/* Tablette et mobile. */
@media (max-width: 1024px) {
  .pm-imp-forfaits .pm-imp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pm-imp-row,
  .pm-imp-infog__grid,
  .pm-imp-promo { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}
@media (max-width: 680px) {
  .pm-imp-forfaits .pm-imp-grid,
  .pm-imp-steps .steps,
  .pm-imp-bon__list { grid-template-columns: minmax(0, 1fr); }
  .pm-imp-row { padding: 40px 0; }
  .pm-imp-promo { padding: 36px 24px; border-radius: 22px; }
  .wp-block-table.pm-imp-table th,
  .wp-block-table.pm-imp-table td { padding-left: 8px; padding-right: 8px; }
}
