/*
Theme Name: FIX Echafaudages
Theme URI: https://fixechafaudages.ch
Author: Qubitech
Author URI: https://qubitech.ch
Description: Thème FSE sur mesure pour FIX Echafaudages SA (location, installation et démontage d'échafaudages, Genève).
Version: 1.0.0
Requires at least: 6.6
Tested up to: 6.9
Requires PHP: 8.2
License: Proprietary
Text Domain: fix
*/

/* =====================================================================
   SOMMAIRE
   1. Base (typo, liens, focus, marges WordPress)
   2. Sections & conteneur (blocs fix/*)
   3. Titres partagés
   4. Boutons (fix-btn + core/button)
   5. En-tête
   6. Pied de page
   7. E-mail protégé (icône)
   8. Contact Form 7
   9. Pages simples (légales, 404)
   10. Animations (ouverture du site, entrée du hero)
   Design FIX : angles droits partout, Manrope, jaune #FFB400,
   gris foncé #2B2F36, gris clair #EEEFF1. Largeur 1300 px, marges 32 px.
   Les couleurs passent par les presets theme.json.
   ===================================================================== */

/* =====================================================================
   1. BASE
   ===================================================================== */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}

body {
  margin: 0;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

a { text-decoration: none; }
p a:not(.fix-btn):hover, li a:hover { color: var(--wp--preset--color--accent-dark); }

:focus-visible { outline: 2px solid var(--wp--preset--color--accent); outline-offset: 2px; }

img { max-width: 100%; }

/* Les grandes zones et les sections se touchent (pas d'espace « blockGap » entre elles). */
.wp-site-blocks > * { margin-block: 0; }
.fix-page .wp-block-post-content > .alignfull,
.fix-page .wp-block-post-content > .fix-sec { margin-block: 0; }
.fix-header.is-layout-flow > *,
.fix-footer.is-layout-flow > *,
.fix-header .is-layout-flow > *,
.fix-footer .is-layout-flow > * { margin-block: 0; }

/* Conteneurs : 1300 px de contenu + 32 px de marge de chaque côté (comme la maquette). */
.fix-header__inner,
.fix-footer__cols,
.fix-footer__bottom-inner { box-sizing: content-box; }

.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  white-space: nowrap;
}

/* =====================================================================
   2. SECTIONS & CONTENEUR
   Espacements desktop des blocs (--fix-pt / --fix-pb, réglables dans
   l'éditeur), réduits sur mobile jusqu'à 72 px au plus petit (comme les
   clamp(72px, 10vw, …) de la maquette ; --fix-pmin le change par bloc).
   ===================================================================== */
.fix-sec {
  box-sizing: border-box;
  padding-top: clamp(min(var(--fix-pt, 0px), var(--fix-pmin, 72px)), 10vw, var(--fix-pt, 0px));
  padding-bottom: clamp(min(var(--fix-pb, 0px), var(--fix-pmin, 72px)), 10vw, var(--fix-pb, 0px));
  scroll-margin-top: 20px;
}

/* Contenu 1300 px + 32 px de marge de chaque côté (comme la maquette). */
.fix-sec__inner {
  max-width: 1300px;
  margin-inline: auto;
  padding-inline: 32px;
  box-sizing: content-box;
}

/* =====================================================================
   3. TITRES PARTAGÉS
   ===================================================================== */
.fix-page-title {
  margin: 0;
  font-size: clamp(40px, 5vw, 56px);
  font-weight: 500;
  letter-spacing: -1.2px;
  line-height: 1.1;
}

.fix-section-title {
  margin: 0;
  font-size: clamp(32px, 4vw, 42px);
  font-weight: 400;
  letter-spacing: -0.8px;
  line-height: 1.15;
}

.fix-lead {
  font-size: 18px;
  color: var(--wp--preset--color--muted);
}

/* =====================================================================
   4. BOUTONS
   ===================================================================== */
.fix-btn {
  display: inline-flex;
  align-items: center;
  gap: 28px;
  height: 56px;
  padding: 0 8px 0 26px;
  box-sizing: border-box;
  background: var(--wp--preset--color--accent);
  color: var(--wp--preset--color--ink);
  font-size: 15px;
  font-weight: 500;
  line-height: 1.2;
  text-transform: uppercase;
  text-decoration: none;
  transition: filter 0.2s;
}

.fix-btn:hover { filter: brightness(1.06); color: var(--wp--preset--color--ink); }

.fix-btn__arrow {
  width: 40px;
  height: 40px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
}

.fix-btn--plain { height: 48px; padding: 0 28px; }

.fix-btn--dark {
  height: 48px;
  padding: 0 26px;
  background: var(--wp--preset--color--navy);
  color: #fff;
  font-weight: 400;
}

.fix-btn--dark:hover { color: #fff; filter: brightness(1.2); }

/* core/button : mêmes styles (éditables dans l'éditeur). */
.wp-block-button__link { transition: filter 0.2s; }
.wp-block-button__link:hover { filter: brightness(1.06); }

.wp-block-button.is-style-arrow .wp-block-button__link {
  display: inline-flex;
  align-items: center;
  gap: 28px;
  height: 56px;
  padding: 0 8px 0 26px;
}

.wp-block-button.is-style-arrow .wp-block-button__link::after {
  content: "";
  width: 40px;
  height: 40px;
  flex: none;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23101418' stroke-width='1.3'%3E%3Cpath d='M4 12L12 4M5 4h7v7'/%3E%3C/svg%3E") center / 14px no-repeat;
}

.wp-block-button.is-style-dark .wp-block-button__link {
  background: var(--wp--preset--color--navy);
  color: #fff;
  font-weight: 400;
}

/* =====================================================================
   5. EN-TÊTE
   Menu à gauche, logo au centre, e-mail + CONTACT à droite, filet jaune.
   ===================================================================== */
.fix-header {
  background: #fff;
  border-bottom: 4px solid var(--wp--preset--color--accent);
}

.fix-header__inner {
  max-width: 1300px;
  margin: 0 auto;
  padding: 0 32px;
  min-height: 62px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 32px;
  align-items: center;
  justify-content: space-between;
}

.fix-nav {
  flex: 1 1 360px;
  min-height: 44px;
  font-size: 15px;
  line-height: 1.4;
  text-transform: uppercase;
}

.fix-nav .wp-block-navigation__container { gap: 8px 30px; }
.fix-nav .wp-block-navigation-item__content { color: var(--wp--preset--color--ink); }
.fix-nav .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--accent-dark); }

.fix-header__logo { margin: 0; }

.fix-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 32px;
  font-weight: 500;
  letter-spacing: -1px;
  line-height: 1;
  color: var(--wp--preset--color--ink);
  white-space: nowrap;
}

.fix-logo:hover { color: var(--wp--preset--color--ink); }

.fix-logo__mark {
  background: var(--wp--preset--color--accent);
  color: var(--wp--preset--color--ink);
  padding: 4px 8px 5px;
}

.fix-logo__name { font-weight: 400; }

.fix-header__right {
  flex: 1 1 360px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 20px;
}

.fix-header__mail {
  font-size: 15px;
  color: var(--wp--preset--color--ink);
}

/* Le bloc « shortcode » enveloppe l'e-mail dans un <p>. */
.fix-header__right p { margin: 0; line-height: 1.4; display: flex; align-items: center; }

.fix-header__cta {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: nowrap;
}

/* Barre verticale entre l'e-mail et le bouton (masquée sous 700 px). */
.fix-header__cta::before {
  content: "";
  width: 1px;
  height: 38px;
  background: var(--wp--preset--color--border);
}

.fix-header__cta .wp-block-button__link {
  height: 44px;
  padding: 0 26px;
  display: inline-flex;
  align-items: center;
  font-weight: 400;
}

/* ---------- Menu burger (tablette et mobile, comme la MRPS) ----------
   Sous 1180 px, l'en-tête de la maquette passe sur deux lignes : on bascule
   alors sur logo à gauche + burger à droite, menu en plein écran. Le lien
   « Nous contacter » (classe fix-nav__cta) n'existe que dans ce menu. */
.fix-nav .wp-block-navigation__responsive-container-open,
.fix-nav .wp-block-navigation__responsive-container-close { color: var(--wp--preset--color--ink); }
.fix-nav .wp-block-navigation__responsive-container-open svg,
.fix-nav .wp-block-navigation__responsive-container-close svg { width: 30px; height: 30px; }

@media (min-width: 1181px) {
  .fix-nav .fix-nav__cta { display: none !important; }
}

/* Le core bascule à 600 px : on avance la bascule à 1180 px. */
@media (min-width: 600px) and (max-width: 1180px) {
  .fix-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
  .fix-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
}

@media (max-width: 1180px) {
  .fix-header__inner {
    flex-wrap: nowrap;
    min-height: 68px;
    gap: 16px;
  }
  .fix-header__logo { order: -1; }
  .fix-nav { flex: 0 0 auto; min-height: 0; }
  .fix-header__right { display: none; }

  .fix-nav .wp-block-navigation__responsive-container.is-menu-open {
    padding: 20px 32px 32px;
    border-top: 4px solid var(--wp--preset--color--accent);
  }
  .fix-nav .is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 64px !important; }
  .fix-nav .is-menu-open .wp-block-navigation__container {
    gap: 0 !important;
    width: 100%;
    align-items: stretch !important;
  }
  .fix-nav .is-menu-open .wp-block-navigation-item {
    width: 100%;
    border-bottom: 1px solid var(--wp--preset--color--border);
  }
  .fix-nav .is-menu-open .wp-block-navigation-item__content {
    padding: 18px 0 !important;
    font-size: 22px;
    letter-spacing: -0.3px;
  }
  .fix-nav .is-menu-open .current-menu-item > .wp-block-navigation-item__content { color: var(--wp--preset--color--accent-dark); }
  .fix-nav .is-menu-open .fix-nav__cta { border: 0; margin-top: 32px; }
  .fix-nav .is-menu-open .fix-nav__cta > .wp-block-navigation-item__content {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    box-sizing: border-box;
    height: 56px;
    padding: 0 26px !important;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--ink) !important;
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0;
  }
}

@media (max-width: 420px) {
  .fix-logo { font-size: 26px; gap: 8px; }
}

/* =====================================================================
   6. PIED DE PAGE
   ===================================================================== */
.fix-footer {
  background: var(--wp--preset--color--navy);
  color: #fff;
}

.fix-footer a { color: #fff; }
.fix-footer a:hover { color: var(--wp--preset--color--accent); }

.fix-footer__cols {
  max-width: 1300px;
  margin: 0 auto;
  padding: 80px 32px 70px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
  gap: 50px;
}

.fix-footer__brand {
  grid-column: span 2;
  min-width: 0;
  max-width: 520px;
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.fix-footer__logo { margin: 0; line-height: 1.1; }

.fix-footer__logo .fix-logo {
  display: block;
  font-size: clamp(26px, 8vw, 42px);
  letter-spacing: -1.5px;
  line-height: 1.1;
  color: #fff;
  white-space: normal;
}

.fix-footer__logo .fix-logo__mark { padding: 4px 10px 6px; }
.fix-footer__logo .fix-logo__name { font-weight: 500; }
.fix-footer__logo .fix-logo:hover { color: #fff; }

.fix-footer__slogan { margin: 0; font-size: 16px; line-height: 1.7; }

.fix-footer__col {
  display: flex;
  flex-direction: column;
  gap: 14px;
  font-size: 17px;
  line-height: 1.35;
}

.fix-footer .fix-footer__heading {
  margin: 0 0 6px;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1.4;
  text-transform: uppercase;
  color: var(--wp--preset--color--accent);
}

.fix-footer__links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.fix-footer__links li { margin: 0; }
.fix-footer__address, .fix-footer__col > .fix-eml { margin: 0; }

.fix-footer__bottom { border-top: 1px solid rgba(255, 255, 255, 0.18); }

.fix-footer__bottom-inner {
  max-width: 1300px;
  margin: 0 auto;
  padding: 28px 32px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px 30px;
  justify-content: space-between;
  font-size: 15px;
  line-height: 1.4;
}

.fix-footer__copyright { margin: 0; }

.fix-footer__legal {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 24px;
}

.fix-footer__legal li { margin: 0; }

@media (max-width: 560px) {
  .fix-footer__brand { grid-column: 1 / -1; }
}

/* =====================================================================
   7. E-MAIL PROTÉGÉ (icône enveloppe de la maquette)
   ===================================================================== */
.fix-eml { color: inherit; }

.fix-ico-mail {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.fix-ico-mail::before {
  content: "";
  width: 22px;
  height: 22px;
  flex: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23101418' stroke-width='1.4'%3E%3Crect x='3' y='5' width='18' height='14'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.fix-cta__mail.fix-ico-mail { gap: 14px; }

/* =====================================================================
   8. CONTACT FORM 7 (maquette : libellés 15 px, champs 44 px, bouton jaune)
   ===================================================================== */
.wpcf7-form {
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.fix-form__field {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.fix-form__field label,
.fix-form__label { font-size: 15px; line-height: 1.4; }

/* Deux champs sur une ligne (e-mail + téléphone), empilés sur mobile. */
.fix-form__row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 22px 20px;
}

/* « Vous êtes » : boutons radio présentés en sélecteur à deux cases. */
.fix-form__field--choice .wpcf7-radio {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.fix-form__field--choice .wpcf7-list-item { margin: 0; }

.fix-form__field--choice .wpcf7-list-item label {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  box-sizing: border-box;
  padding: 0 12px;
  border: 1px solid #d9d9d9;
  background: #fff;
  font-size: 15px;
  cursor: pointer;
  text-align: center;
  transition: background-color 0.2s, border-color 0.2s;
}

.fix-form__field--choice .wpcf7-list-item label:hover { border-color: var(--wp--preset--color--navy); }

.fix-form__field--choice input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.fix-form__field--choice label:has(input:checked) {
  background: var(--wp--preset--color--accent);
  border-color: var(--wp--preset--color--accent);
}

.fix-form__field--choice label:has(input:focus-visible) {
  outline: 2px solid var(--wp--preset--color--accent);
  outline-offset: 2px;
}

.wpcf7-form-control-wrap { display: block; }

/* Uniquement les champs visibles (pas le champ piège anti-spam). */
.fix-form__field input,
.fix-form__field textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  height: 44px;
  border: 1px solid #d9d9d9;
  border-radius: 0;
  padding: 0 16px;
  font: inherit;
  font-size: 15px;
  color: var(--wp--preset--color--ink);
  background: #fff;
}

.fix-form__field textarea {
  height: 135px;
  padding: 14px 16px;
  line-height: 1.4;
  resize: vertical;
}

.wpcf7-form ::placeholder { color: #8a9099; }

.fix-form__field input:focus,
.fix-form__field textarea:focus {
  outline: 2px solid var(--wp--preset--color--accent);
  outline-offset: 1px;
}

.fix-form__footer {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 10px;
}

.wpcf7-form .wpcf7-submit {
  background: var(--wp--preset--color--accent);
  color: var(--wp--preset--color--ink);
  border: 0;
  border-radius: 0;
  font: inherit;
  font-size: 15px;
  text-transform: uppercase;
  padding: 0 28px;
  height: 48px;
  cursor: pointer;
  transition: filter 0.2s;
}

.wpcf7-form .wpcf7-submit:hover { filter: brightness(1.06); }

.fix-form__legal {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--wp--preset--color--muted);
}

.fix-form__legal a { text-decoration: underline; }

.wpcf7-not-valid-tip { margin-top: 6px; font-size: 14px; color: #b3261e; }
.wpcf7-form input.wpcf7-not-valid, .wpcf7-form textarea.wpcf7-not-valid { border-color: #b3261e; }

.wpcf7 form .wpcf7-response-output {
  margin: 0;
  padding: 14px 16px;
  border: 1px solid var(--wp--preset--color--border);
  font-size: 15px;
}

.wpcf7 form.sent .wpcf7-response-output { border-color: var(--wp--preset--color--accent); background: #fff8e5; }
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output { border-color: #b3261e; }

/* =====================================================================
   9. PAGES SIMPLES (légales, 404)
   ===================================================================== */
.fix-section { padding-top: clamp(48px, 7vw, 64px); padding-bottom: clamp(64px, 9vw, 120px); }

.fix-legal h2 { font-size: 24px; font-weight: 500; margin-top: 2.2em; }
.fix-legal h3 { font-size: 19px; font-weight: 500; margin-top: 1.6em; }
.fix-legal p, .fix-legal li { color: var(--wp--preset--color--muted); }
.fix-legal a { text-decoration: underline; }
.fix-legal table { width: 100%; border-collapse: collapse; font-size: 15px; }
.fix-legal th, .fix-legal td { border: 1px solid var(--wp--preset--color--border); padding: 10px 12px; text-align: left; }

/* =====================================================================
   10. ANIMATIONS
   Ouverture du site (une fois par visite, classe html.fix-intro posée par
   functions.php) : rideau gris foncé, le carré jaune « FIX » apparaît, le
   nom glisse, un trait jaune se dessine, puis le rideau remonte (≈ 1,9 s).
   Entrée du texte du hero à chaque page (décalée après le rideau).
   Rien ne bouge si le visiteur demande moins d'animations.
   ===================================================================== */
.fix-intro-curtain { display: none; }

.fix-intro .fix-intro-curtain {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 28px;
  background: var(--wp--preset--color--navy);
  color: #fff;
  pointer-events: none;
  animation: fix-curtain-up 0.65s cubic-bezier(0.76, 0, 0.24, 1) 1.35s forwards;
}

.fix-intro-curtain__logo {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: clamp(32px, 6vw, 52px);
  font-weight: 500;
  letter-spacing: -1.5px;
  line-height: 1;
}

.fix-intro-curtain__mark {
  background: var(--wp--preset--color--accent);
  color: var(--wp--preset--color--ink);
  padding: 4px 10px 6px;
  transform: scale(0);
  animation: fix-pop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) 0.15s forwards;
}

/* Le masque déborde en haut et en bas pour ne pas couper le « g » (jambage). */
.fix-intro-curtain__name {
  font-weight: 400;
  padding-bottom: 0.12em;
  clip-path: inset(-30% 100% -40% 0);
  animation: fix-unveil 0.55s cubic-bezier(0.65, 0, 0.35, 1) 0.45s forwards;
}

.fix-intro-curtain__bar {
  width: min(320px, 60vw);
  height: 4px;
  background: var(--wp--preset--color--accent);
  transform: scaleX(0);
  transform-origin: left center;
  animation: fix-grow 0.7s cubic-bezier(0.65, 0, 0.35, 1) 0.55s forwards;
}

@keyframes fix-pop { to { transform: scale(1); } }
@keyframes fix-unveil { to { clip-path: inset(-30% -5% -40% 0); } }
@keyframes fix-grow { to { transform: scaleX(1); } }
@keyframes fix-curtain-up { to { transform: translateY(-100%); visibility: hidden; } }

/* Entrée du hero : titre, texte puis bouton, en fondu vers le haut. */
@keyframes fix-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: none; }
}

.fix-hero__title,
.fix-hero__text,
.fix-hero__btn {
  animation: fix-fade-up 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.fix-hero__title { animation-delay: 0.1s; }
.fix-hero__text { animation-delay: 0.25s; }
.fix-hero__btn { animation-delay: 0.4s; }

.fix-intro .fix-hero__title { animation-delay: 1.55s; }
.fix-intro .fix-hero__text { animation-delay: 1.7s; }
.fix-intro .fix-hero__btn { animation-delay: 1.85s; }

@media (prefers-reduced-motion: reduce) {
  .fix-intro .fix-intro-curtain { display: none; }
  .fix-hero__title, .fix-hero__text, .fix-hero__btn { animation: none; }
}
/* Apparition au défilement (assets/js/fix-anim.js pose .fix-reveal puis .is-visible). */
.fix-reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1), transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.2s, box-shadow 0.25s;
}

.fix-reveal.is-visible { opacity: 1; transform: none; }

/* Les images apparaissent avec un léger zoom arrière. */
.fix-media-text__img.fix-reveal,
.fix-photos__img.fix-reveal,
.fix-faq__img.fix-reveal,
.fix-contact__img.fix-reveal { transform: scale(1.04); }

.fix-media-text__img.fix-reveal.is-visible,
.fix-photos__img.fix-reveal.is-visible,
.fix-faq__img.fix-reveal.is-visible,
.fix-contact__img.fix-reveal.is-visible { transform: none; }

/* Survols : cartes qui se soulèvent, flèche des boutons qui avance. */
.fix-cards .fix-card { transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1), transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.2s, box-shadow 0.3s; }
.fix-cards .fix-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 14px 30px rgba(16, 20, 24, 0.08);
}

.fix-card__icon { transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
.fix-card:hover .fix-card__icon { transform: scale(1.06); }

.fix-card__link svg { transition: transform 0.25s ease; }
.fix-card__link:hover svg { transform: translateX(4px); }

.fix-btn__arrow svg { transition: transform 0.25s ease; }
.fix-btn:hover .fix-btn__arrow svg { transform: translate(2px, -2px); }

/* FAQ : la réponse s'ouvre en fondu, le signe tourne. */
.fix-faq__sign { transition: transform 0.25s ease; }
.fix-faq__item[open] .fix-faq__sign { transform: rotate(180deg); }
.fix-faq__item[open] .fix-faq__a { animation: fix-fade-up 0.35s ease both; }

@media (prefers-reduced-motion: reduce) {
  .fix-reveal { opacity: 1; transform: none; transition: none; }
  .fix-cards .fix-card:hover { transform: none; }
}