/* ============================================================
   RIDE UP — sections-b.css
   Lot B : #comparatif (.compa-), #app (.app-), #rejoindre (.steps-)
   Desktop-first (design ≥ 1200px) ; breakpoints ≤ 1023px, ≤ 767px,
   contrôle 375px. Couleurs / ombres / rayons / espacements / typo :
   uniquement var(--…) de base.css (hex autorisés seulement dans
   les attributs SVG, y compris data-URI, palette da.json).
   ============================================================ */

/* ------------------------------------------------------------
   SOULIGNEMENT MARQUEUR — un mot-clé par H2 (DA : trait dessiné
   main ~6px, stroke #E8590C, round caps, sous la baseline)
   ------------------------------------------------------------ */
.compa-hl,
.app-hl,
.steps-hl {
  padding-bottom: var(--sp-2);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 10' preserveAspectRatio='none'%3E%3Cpath d='M3 7C28 3.6 62 8.2 117 4.4' fill='none' stroke='%23E8590C' stroke-width='5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat left bottom / 100% 8px;
}

/* ============================================================
   §4 COMPARATIF — bande ambrée pleine largeur, 3 cartes claires,
   la « Recommandé » mise en avant par la lumière (halo + double
   cadre gradient + sceau demi-soleil + scale 1.03)
   ============================================================ */
.compa-section {
  background: var(--surface-warm);
}

.compa-head {
  max-width: 860px;
  margin-inline: auto;
  text-align: center;
}

.compa-sub {
  max-width: 700px;
  margin: var(--gap-stack-sub) auto 0;
}

/* Grille : rangées partagées entre cartes (subgrid) pour un
   alignement parfait label / nom / montant / bonus / description /
   lignes ✓✗ / CTA d'une carte à l'autre. */
.compa-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(7, auto);
  column-gap: var(--gap-grid-lg);
  align-items: stretch;
  margin-top: var(--sp-9);
}

.compa-card {
  grid-row: 1 / 8;
  display: grid;
  grid-template-rows: subgrid;
  row-gap: 0; /* le rythme vertical vient des marges internes */
  padding: var(--sp-6);
}

@supports not (grid-template-rows: subgrid) {
  .compa-card {
    display: flex;
    flex-direction: column;
  }
}

.compa-label {
  grid-row: 1;
  justify-self: start;
  align-self: start;
  margin-bottom: var(--sp-4);
}

.compa-name {
  grid-row: 2;
  margin-bottom: var(--sp-4);
}

.compa-amount {
  grid-row: 3;
  color: var(--heading);
  margin-bottom: var(--sp-2);
}

.compa-amount-val {
  display: block;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: var(--fs-h2);
  line-height: 1.05;
  letter-spacing: -0.02em;
}

.compa-amount-suffix {
  display: block;
  margin-top: var(--sp-1);
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--muted);
}

.compa-bonus {
  grid-row: 4;
  justify-self: start;
  align-self: start;
  margin-bottom: var(--sp-4);
  line-height: 1.3;
}

.compa-desc {
  grid-row: 5;
  font-size: var(--fs-ui-nav);
  line-height: 1.6;
  margin-bottom: var(--sp-5);
}

.compa-lines {
  grid-row: 6;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  border-top: 1px solid var(--border);
  padding-top: var(--sp-5);
}

.compa-line {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-3);
  font-size: var(--fs-ui-nav);
  line-height: 1.5;
}

.compa-line svg {
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: calc(var(--sp-1) / 2);
}

.compa-cta {
  grid-row: 7;
  align-self: end;
  width: 100%;
  margin-top: var(--sp-5);
}

/* --- Carte « Recommandé » : version CLAIRE mise en avant --- */
.compa-card--reco {
  position: relative;
  z-index: 1;
  transform: scale(1.03);
  box-shadow: var(--halo-reco);
}

.compa-card--reco:hover {
  transform: scale(1.03) translateY(-4px);
  box-shadow: var(--halo-reco);
}

/* Cadre externe 2px en gradient signature (or → orange), posé à
   6px du bord ; le cadre interne 1px est la bordure de .card. */
.compa-card--reco::before {
  content: "";
  position: absolute;
  inset: calc(-1 * var(--sp-1) - 2px);
  border-radius: calc(var(--r-card) + var(--sp-1) + 2px);
  padding: 2px;
  background: var(--grad-signature);
  -webkit-mask: linear-gradient(var(--surface) 0 0) content-box, linear-gradient(var(--surface) 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(var(--surface) 0 0) content-box, linear-gradient(var(--surface) 0 0);
  mask-composite: exclude;
  pointer-events: none;
}

/* Montant héros : géant gradient-clippé or → orange (plafonné
   pour tenir dans la largeur de carte) */
.compa-card--reco .compa-amount-val {
  /* fluide entre 1024 et ~1200px : 72px fixes débordaient de la
     colonne (~240px utiles) avant l'empilement à 1023px */
  font-size: min(var(--fs-num-giant), clamp(48px, 6vw, 72px));
  line-height: 1;
  background: var(--grad-signature-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

/* Sceau demi-soleil « Recommandé », à cheval sur le bord haut */
.compa-seal {
  position: absolute;
  top: calc(-1 * var(--sp-6) + var(--sp-1));
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: calc(var(--sp-1) / 2);
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--chip-bg);
  box-shadow: 0 0 0 2px var(--surface), var(--shadow-sm);
  text-align: center;
}

.compa-seal-sun {
  width: 20px;
  height: 10px;
  border-radius: var(--r-pill) var(--r-pill) 0 0;
  background: var(--grad-signature);
}

.compa-seal-label {
  font-size: calc(var(--fs-kicker) - 4px);
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1;
  color: var(--chip-text);
}

.compa-mention {
  max-width: 680px;
  margin: var(--sp-8) auto 0;
  text-align: center;
  font-size: var(--fs-small);
  /* var(--text) : --muted tombait à 4,35:1 sur la bande #FFF2E3 */
  color: var(--text);
}

@media (max-width: 1023px) {
  .compa-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    row-gap: var(--sp-7);
    max-width: 480px;
    margin-inline: auto;
    margin-top: var(--sp-8);
  }

  .compa-card {
    grid-row: auto;
    display: flex;
    flex-direction: column;
  }

  /* « Recommandé » passe EN PREMIER une fois les cartes empilées */
  .compa-card--reco {
    order: -1;
    transform: none;
    margin-top: var(--sp-5); /* place pour le sceau qui déborde */
  }

  .compa-card--reco:hover {
    transform: translateY(-4px);
  }
}

/* ============================================================
   §5 APP — texte à gauche, mockup téléphone 100 % HTML/CSS posé
   sur un décor soleil/horizon discret (halo doré qui respire déjà
   dans --sun-halo, ligne bleu nuit, demi-soleil)
   ============================================================ */
.app-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  column-gap: var(--sp-8);
}

.app-title {
  margin-bottom: var(--gap-stack-sub);
}

.app-text {
  max-width: 540px;
  margin-bottom: var(--gap-stack-cta);
}

.app-scene {
  position: relative;
  display: flex;
  justify-content: center;
  padding-block: var(--sp-6);
}

.app-scene::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(460px, 100%);
  aspect-ratio: 1;
  transform: translate(-50%, -50%);
  background: var(--sun-halo-gold); /* da.json §5 : halo DORÉ rgba(242,184,75,.18) */
  pointer-events: none;
}

.app-decor {
  position: absolute;
  left: 0;
  right: 0;
  bottom: var(--sp-5);
  width: 100%;
  height: auto;
  pointer-events: none;
}

/* Châssis : bleu nuit, radius 36px, « bordure » 6px (padding) */
.app-phone {
  position: relative;
  z-index: 1;
  width: min(320px, 100%);
  padding: 6px;
  background: var(--heading);
  border-radius: var(--r-phone);
  box-shadow: var(--shadow-card-hover);
}

.app-notch {
  position: absolute;
  top: 6px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  width: 88px;
  height: 20px;
  background: var(--heading);
  border-radius: 0 0 var(--r-input) var(--r-input);
}

.app-screen {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  min-height: 540px;
  padding: var(--sp-7) var(--sp-4) var(--sp-4);
  background: var(--bg);
  border-radius: calc(var(--r-phone) - 6px);
  overflow: hidden;
}

.app-notif {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-input);
  box-shadow: var(--shadow-sm);
}

.app-notif-icon {
  --horizon-w: 20px;
}

.app-notif-text {
  font-size: var(--fs-small);
  font-weight: 500;
  line-height: 1.35;
  color: var(--heading);
}

.app-card {
  padding: var(--sp-4);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-input);
  box-shadow: var(--shadow-sm);
}

.app-card-label {
  font-size: var(--fs-small);
  color: var(--muted);
}

.app-card-value {
  margin-top: var(--sp-1);
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: var(--fs-h3);
  line-height: 1.1;
  color: var(--heading);
}

/* Montant vedette (salaire dispo) : gradient-clippé or → orange */
.app-card-value--grad {
  font-size: var(--fs-h2);
  background: var(--grad-signature-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

.app-curve {
  width: 100%;
  height: 56px;
  margin-top: var(--sp-3);
}

.app-platform-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin-top: var(--sp-3);
}

.app-homebar {
  flex: none;
  width: 96px;
  height: 4px;
  margin-block-start: auto;
  margin-inline: auto;
  border-radius: var(--r-pill);
  background: var(--border);
}

@media (max-width: 1023px) {
  .app-inner {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--sp-7);
  }

  .app-copy {
    max-width: 620px;
  }

  /* mobile : le téléphone vient APRÈS le CTA (ordre du flux) */
  .app-scene {
    padding-block: var(--sp-5);
  }
}

@media (max-width: 767px) {
  .app-phone {
    width: min(300px, 100%);
  }

  .app-screen {
    min-height: 500px;
  }
}

/* ============================================================
   §6 TROIS ÉTAPES — bande blanche, ligne d'horizon pleine largeur,
   bornes kilométriques 01/02/03, demi-soleil qui progresse au
   scroll via --steps-progress (0 | 1 | 2, posé par script.js sur
   [data-steps]) ; sans JS le soleil reste levé sur la borne 01.
   ============================================================ */
.steps-section {
  background: var(--surface);
}

.steps-head {
  max-width: 760px;
  margin: 0 auto var(--sp-9);
  text-align: center;
}

.steps-road {
  position: relative;
  --steps-borne-h: 128px;
}

/* Ligne d'horizon : traverse toute la section (pleine largeur),
   passe derrière les bornes, à hauteur de leur socle */
.steps-track {
  position: absolute;
  top: calc(var(--steps-borne-h) - 4px);
  left: 50%;
  width: 100vw;
  height: 2px;
  transform: translateX(-50%);
  background: var(--heading);
}

/* Couloir du soleil : à la largeur du contenu, pour que les
   pourcentages tombent sur les centres des 3 colonnes */
.steps-sunlane {
  position: absolute;
  top: calc(var(--steps-borne-h) - 4px);
  left: 0;
  right: 0;
  height: 0;
}

.steps-sun {
  position: absolute;
  bottom: 2px;
  /* arrive au pied de la borne active (léger décalage à gauche
     pour ne pas recouvrir son inscription) */
  left: calc((100% - 2 * var(--gap-grid-lg)) / 6 - 72px + var(--steps-progress, 0) * ((100% - 2 * var(--gap-grid-lg)) / 3 + var(--gap-grid-lg)));
  width: 32px;
  height: 16px;
  transform: translateX(-50%);
  border-radius: var(--r-pill) var(--r-pill) 0 0;
  background: var(--grad-signature);
  transition: left var(--dur-entry) var(--ease-out);
}

.steps-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: var(--gap-grid-lg);
}

.steps-item {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.steps-borne {
  flex: none;
  width: 96px;
  height: var(--steps-borne-h);
  margin-bottom: var(--sp-6);
}

.steps-borne-num {
  font-family: var(--font-heading);
  font-weight: 800; /* da.json : grands chiffres 01/02/03 en Bricolage 800 */
  font-variant-numeric: tabular-nums;
}

.steps-borne-brand {
  font-family: var(--font-body);
  font-weight: 600;
  letter-spacing: 0.12em;
}

.steps-item-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.steps-item-title {
  margin-bottom: var(--sp-3);
}

.steps-item-text {
  max-width: 340px;
}

@media (max-width: 1023px) {
  .steps-item-text {
    font-size: var(--fs-ui-nav);
  }
}

@media (max-width: 767px) {
  .steps-track,
  .steps-sunlane {
    display: none;
  }

  .steps-head {
    margin-bottom: var(--sp-7);
  }

  .steps-grid {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--sp-6);
    max-width: 480px;
    margin-inline: auto;
  }

  .steps-item {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--sp-4);
  }

  .steps-borne {
    width: 64px;
    height: auto;
    margin-bottom: 0;
  }

  .steps-item-body {
    align-items: flex-start;
    text-align: left;
  }

  .steps-item-title {
    margin-top: var(--sp-1);
  }

  .steps-item-text {
    max-width: none;
  }
}
