/* B3 tâche 016 — la grille tarifaire.
 *
 * Portée de `app/views/mockups/recruiter/plans.html.erb` (bloc <style>, l.163-316),
 * mêmes classes et mêmes valeurs. Servie par `/recruiter/plans` ET par la page
 * publique `/tarifs-recruteurs` : une seule feuille, comme il n'y a qu'une
 * source de valeurs (R3-DEC.16).
 *
 * Trois écarts avec la source, tous volontaires :
 *
 *   · les dorés passent par les jetons (`--gold-*`) au lieu des hexadécimaux de
 *     la maquette : le doré sombre des noms Maison et Palace est exactement
 *     `--gold-800` pour le premier, et le second s'y replie (seize unités
 *     d'écart, invisible à l'œil). C'est la règle du design system, payée par
 *     neuf dorés en circulation (`test/assets/design_system_test.rb`) ;
 *   · `--amber`, `--red` et `--violet` ne sont plus redéfinis localement : les
 *     jetons existent ;
 *   · le tunnel de changement de formule (`.ov`, `.tun`, `.imp-*`, `.pay-*`,
 *     `.cf-*`) et la carte d'argumentaire Founding Member (`.fm-card`) ne sont
 *     pas repris. Le premier appartient à la tâche 020, la seconde est retirée
 *     par la décision du 18/09 (« sur la page Plans, seul le badge apparaît, le
 *     programme n'est pas vendu dans la grille »).
 */

.page-recruiter-plans {
  /* On CONSOMME les tokens partagés (:root). Compléments locaux uniquement. */
  --shadow-sm:0 1px 2px rgba(44,44,44,.04),0 1px 3px rgba(163,133,67,.05);
  --shadow-md:0 4px 12px rgba(44,44,44,.07),0 2px 6px rgba(163,133,67,.04);
  --shadow-lg:0 12px 32px rgba(44,44,44,.09),0 4px 12px rgba(163,133,67,.08);
  --shadow-gold:0 16px 40px rgba(163,133,67,.18);
  /* B3 tâche 017 — le violet des encarts « paiement sécurisé », repris de la
   * maquette (`mockups/recruiter/plans.html.erb:62`). Il n'existe pas dans
   * `design_tokens.css` : cette famille ne sert qu'aux deux encarts de
   * redirection vers Stripe, et la promouvoir en jeton partagé pour deux
   * blocs n'aurait rien réglé. Déclaré ici, comme la source. */
  --violet:#6F5A8E; --violet-50:#F2EEF7; --violet-200:#DCD1E8;
  min-height:100vh; color:var(--n-900); font-family:'Geist',system-ui,sans-serif;
  font-variant-numeric:tabular-nums; box-sizing:border-box;
}
.page-recruiter-plans *, .page-recruiter-plans *::before, .page-recruiter-plans *::after { box-sizing:border-box; }
.page-recruiter-plans .wrap { max-width:1180px; margin:0 auto; }

/* ── En-tête ── */
.page-recruiter-plans .back { display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:600; color:var(--gold-700); text-decoration:none; }
.page-recruiter-plans .back svg { width:15px; height:15px; }
.page-recruiter-plans .topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:22px; }
.page-recruiter-plans .crumb { font-size:12px; color:var(--n-400); }
.page-recruiter-plans .crumb a { color:var(--n-500); text-decoration:none; }
.page-recruiter-plans .crumb .here { color:var(--n-700); font-weight:600; }
.page-recruiter-plans .hero-row { display:grid; grid-template-columns:1fr 1fr; align-items:end; gap:32px; }
.page-recruiter-plans h1 { font-size:30px; font-weight:700; letter-spacing:-.02em; line-height:1.25; margin:0; }
.page-recruiter-plans h1 em { font-style:italic; font-weight:700; display:inline-block; padding-right:.14em; margin-right:-.14em; background:var(--gold-text-grad); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent; }
.page-recruiter-plans .lead { font-size:15px; color:var(--n-500); margin-top:7px; max-width:640px; line-height:1.5; }

/* ── Carte « Votre abonnement » ── */
.page-recruiter-plans .cur-card { display:flex; align-items:center; gap:16px; padding:15px 20px; background:linear-gradient(135deg,#FFFDF7,#F8F0DC); border:1px solid var(--gold-200); border-radius:15px; box-shadow:var(--shadow-gold); position:relative; overflow:hidden; max-width:504px; }
.page-recruiter-plans .hero-row .cur-card { width:90%; max-width:none; margin-left:auto; }
.page-recruiter-plans .fm-badge-img { height:22px; width:auto; margin-top:9px; display:block; }
.page-recruiter-plans .cur-card::before { content:''; position:absolute; top:0; left:0; bottom:0; width:4px; background:var(--gold-fill-deep); }
.page-recruiter-plans .cur-emblem { width:36px; height:36px; border-radius:10px; background:linear-gradient(135deg,var(--gold-100),var(--gold-200)); border:1px solid var(--gold-300); display:grid; place-items:center; flex-shrink:0; box-shadow:0 2px 6px rgba(163,133,67,.15); }
.page-recruiter-plans .cur-emblem svg { width:18px; height:18px; color:var(--gold-700); }
.page-recruiter-plans .cur-main { flex:1; min-width:0; }
.page-recruiter-plans .cur-label { font-size:10px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--n-400); }
.page-recruiter-plans .cur-value { font-size:13.5px; color:var(--n-700); margin-top:3px; }
.page-recruiter-plans .cur-value b { color:var(--n-900); font-weight:700; }
.page-recruiter-plans .cur-welcome { font-size:12.5px; color:var(--gold-700, var(--n-700)); font-weight:600; margin-top:4px; } /* #4412 */
.page-recruiter-plans .fm-pill { display:inline-flex; align-items:center; gap:6px; margin-top:9px; font-size:10.5px; font-weight:700; letter-spacing:.03em; padding:4px 10px; border-radius:999px; background:var(--gold-fill-deep); color:var(--on-gold); text-shadow:var(--on-gold-shadow); }
.page-recruiter-plans .fm-pill svg { width:12px; height:12px; }
.page-recruiter-plans .cur-meta { text-align:right; padding-left:18px; border-left:1px solid var(--n-100); flex-shrink:0; }
.page-recruiter-plans .cur-meta-l { font-size:10px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--n-400); }
.page-recruiter-plans .cur-meta-v { font-size:12.5px; font-weight:600; color:var(--n-700); margin-top:3px; }
@media(max-width:820px){ .page-recruiter-plans .hero-row { grid-template-columns:1fr; } }
@media(max-width:560px){ .page-recruiter-plans .cur-card { flex-wrap:wrap; } .page-recruiter-plans .cur-meta { border-left:none; padding-left:0; text-align:left; width:100%; border-top:1px solid var(--n-100); padding-top:12px; } }

/* ── En-tête comparaison + bascule ── */
.page-recruiter-plans .compare-head { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; flex-wrap:wrap; margin-top:64px; }
.page-recruiter-plans .compare-eyebrow { display:inline-flex; align-items:center; gap:9px; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-600); margin-bottom:12px; }
.page-recruiter-plans .compare-num { background:var(--gold-fill-deep); color:var(--on-gold); text-shadow:var(--on-gold-shadow); padding:3px 8px; border-radius:6px; font-size:10px; letter-spacing:.05em; }
.page-recruiter-plans .compare-title { font-size:30px; font-weight:700; letter-spacing:-.02em; }
.page-recruiter-plans .compare-title .dot { color:var(--gold-500); }
.page-recruiter-plans .compare-sub { font-size:14px; color:var(--n-500); margin-top:8px; max-width:560px; line-height:1.5; }
.page-recruiter-plans .period { display:inline-flex; align-items:center; gap:3px; padding:4px; background:var(--n-100); border-radius:999px; flex-shrink:0; }
.page-recruiter-plans .period a { border:none; background:none; font-family:inherit; font-size:13px; font-weight:600; color:var(--n-500); padding:8px 16px; border-radius:999px; cursor:pointer; transition:all var(--t); text-decoration:none; display:inline-flex; align-items:center; gap:4px; }
.page-recruiter-plans .period a.on { background:var(--n-0); color:var(--n-900); box-shadow:0 1px 3px rgba(44,44,44,.1); }
.page-recruiter-plans .period .save { font-size:11px; color:var(--green); font-weight:700; margin-left:2px; }

/* ── Grille des plans ── */
.page-recruiter-plans .plans-wrap { position:relative; }
.page-recruiter-plans .plans { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; align-items:stretch; margin-top:18px; }
.page-recruiter-plans .plan { position:relative; border:1px solid var(--n-200); border-radius:20px; background:var(--n-0); padding:30px 24px; display:flex; flex-direction:column; transition:all var(--t); box-shadow:var(--shadow-sm); }
.page-recruiter-plans .plan:hover { border-color:var(--gold-300); box-shadow:var(--shadow-lg); }
.page-recruiter-plans .plan.rp-current { border:1.5px solid var(--gold-500); box-shadow:var(--shadow-gold); }
/* teintes de plan, gradation douce dans la charte */
.page-recruiter-plans .tint-signature { background:linear-gradient(180deg,#FFFFFF 0%,#FDFBF6 100%); }
.page-recruiter-plans .tint-maison { background:linear-gradient(180deg,#FFFEFB 0%,#FBF5E9 100%); }
.page-recruiter-plans .tint-prestige { background:linear-gradient(180deg,#FFFDF7 0%,#F6ECD6 100%); }
.page-recruiter-plans .tint-palace { background:linear-gradient(180deg,#FBF6EC 0%,#EFE2C4 100%); }
.page-recruiter-plans .plan-flag { position:absolute; top:0; left:50%; transform:translateX(-50%) translateY(-55%); background:linear-gradient(135deg,#2A1E0E 0%,var(--gold-800) 100%); color:var(--n-0); font-size:10.5px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; padding:7px 18px; border-radius:999px; white-space:nowrap; box-shadow:0 6px 18px rgba(42,30,14,.35); }
.page-recruiter-plans .plan-nm { font-size:20px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.page-recruiter-plans .tint-signature .plan-nm { color:var(--n-900); }
.page-recruiter-plans .tint-maison .plan-nm { color:var(--gold-800); }
.page-recruiter-plans .tint-prestige .plan-nm { color:var(--gold-700); }
.page-recruiter-plans .tint-palace .plan-nm { color:var(--gold-800); }
.page-recruiter-plans .plan-desc { font-size:12.5px; font-style:italic; color:var(--n-500); line-height:1.5; margin-top:9px; min-height:54px; }
.page-recruiter-plans .plan-apd { font-size:12.5px; color:var(--n-400); margin-top:20px; }
.page-recruiter-plans .plan-pr { display:flex; align-items:baseline; gap:4px; margin-top:2px; white-space:nowrap; flex-wrap:nowrap; }
.page-recruiter-plans .plan-pr .amt { font-family:'Geist Mono',monospace; font-size:34px; font-weight:600; letter-spacing:-.03em; line-height:1; white-space:nowrap; }
.page-recruiter-plans .plan-pr .cur { font-size:20px; font-weight:600; color:var(--n-500); }
.page-recruiter-plans .plan-per { font-size:11.5px; color:var(--n-400); margin-top:9px; }
.page-recruiter-plans .plan-tel { margin-top:22px; font-family:'Geist Mono',monospace; font-size:15px; font-weight:600; color:var(--gold-700); letter-spacing:-.01em; }
.page-recruiter-plans .plan-tel-sub { font-size:11.5px; color:var(--n-400); margin-top:4px; }
.page-recruiter-plans .plan-sep { height:1px; background:var(--n-200); margin:22px 0; }
.page-recruiter-plans .plan-feats { list-style:none; display:flex; flex-direction:column; gap:13px; flex:1; padding:0; margin:0; }
.page-recruiter-plans .plan-feats li { display:flex; gap:10px; font-size:13px; line-height:1.4; color:var(--n-700); align-items:flex-start; }
.page-recruiter-plans .plan-feats li.heritage > span:last-child { font-weight:700; color:var(--n-900); }
.page-recruiter-plans .tick { width:19px; height:19px; border-radius:50%; background:linear-gradient(135deg,var(--gold-100),var(--gold-200)); border:1px solid var(--gold-300); display:grid; place-items:center; flex-shrink:0; margin-top:1px; }
.page-recruiter-plans .tick svg { width:11px; height:11px; color:var(--gold-700); }
.page-recruiter-plans .plan-markers { margin-top:16px; padding-top:14px; border-top:1px solid var(--n-100); display:flex; flex-direction:column; gap:8px; }
.page-recruiter-plans .pm-row { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.page-recruiter-plans .pm-tag { display:inline-flex; align-items:center; font-size:10.5px; font-weight:700; padding:3px 10px; border-radius:999px; }
.page-recruiter-plans .pm-tag.vedette { background:var(--gold-100); color:var(--gold-700); }
.page-recruiter-plans .pm-row.is-later { opacity:.6; }
.page-recruiter-plans .pm-brick { display:inline-block; font-size:9.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; background:var(--n-100); color:#77706A; border:1px solid var(--n-200); border-radius:5px; padding:1px 6px; white-space:nowrap; vertical-align:middle; }
.page-recruiter-plans .pm-tag.urgent { background:var(--red-50); color:var(--red); }
.page-recruiter-plans .pm-q { font-size:11px; color:var(--n-700); font-weight:600; text-align:right; }
.page-recruiter-plans .plan-cta { margin-top:auto; padding-top:24px; }
.page-recruiter-plans .plan-cta .btn { width:100%; text-align:center; padding:13px 20px; font-size:14px; }
.page-recruiter-plans .plan-tag { margin-top:auto; font-size:13.5px; font-weight:600; color:var(--gold-700); text-align:center; padding:13px 20px; border:1.5px solid var(--gold-300); border-radius:999px; background:rgba(255,255,255,.5); }
/* État honnête quand la souscription en ligne n'est pas encore ouverte : une
   phrase, jamais un bouton qui n'irait nulle part. */
.page-recruiter-plans .plan-note { margin-top:auto; font-size:12px; line-height:1.45; color:var(--n-500); text-align:center; padding:13px 16px; border:1px dashed var(--n-300); border-radius:14px; }
@media(max-width:980px){ .page-recruiter-plans .plans { grid-template-columns:repeat(2,1fr); } }
@media(max-width:560px){ .page-recruiter-plans .plans { grid-template-columns:1fr; } .page-recruiter-plans .plan-desc { min-height:0; } }

/* Référentiel vide : aucune formule proposable au régime affiché. */
.page-recruiter-plans .plans-empty { margin-top:18px; padding:28px 26px; border:1px dashed var(--gold-200); border-radius:18px; background:var(--gold-50); font-size:14px; line-height:1.55; color:var(--n-700); }

/* ── Boutons ── */
.page-recruiter-plans .btn { font-family:inherit; font-size:13.5px; font-weight:700; border-radius:999px; padding:12px 20px; cursor:pointer; border:1px solid transparent; transition:all var(--t); white-space:nowrap; display:inline-flex; align-items:center; justify-content:center; gap:7px; text-decoration:none; }
.page-recruiter-plans .btn-gold { background:var(--gold-fill-deep); color:var(--on-gold); text-shadow:var(--on-gold-shadow); box-shadow:0 3px 10px rgba(163,133,67,.28); }
.page-recruiter-plans .btn-gold:hover { filter:brightness(1.05); }
.page-recruiter-plans .btn-ghost { background:var(--n-0); border-color:var(--gold-200); color:var(--gold-700); }
.page-recruiter-plans .btn-ghost:hover { border-color:var(--gold-400); }

/* ── Encarts Vedette / Urgent ── */
.page-recruiter-plans .mark-explain { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:26px; }
.page-recruiter-plans .mark-x { display:flex; gap:12px; align-items:flex-start; padding:16px 20px; border:1px solid var(--gold-100); border-radius:14px; background:linear-gradient(135deg,#FFFDF9,#FDF9F0); }
.page-recruiter-plans .mark-x .txt { font-size:12.5px; line-height:1.5; color:var(--n-700); }
.page-recruiter-plans .mark-pill { display:inline-flex; align-items:center; gap:6px; font-size:11.5px; font-weight:700; padding:5px 11px; border-radius:999px; white-space:nowrap; flex-shrink:0; }
.page-recruiter-plans .mark-pill svg { width:12px; height:12px; }
.page-recruiter-plans .mark-pill.vedette { background:var(--gold-100); color:var(--gold-700); }
.page-recruiter-plans .mark-pill.urgent { background:var(--red-50); color:var(--red); }
@media(max-width:760px){ .page-recruiter-plans .mark-explain { grid-template-columns:1fr; } }

/* ── Recharge Tellers ── */
.page-recruiter-plans .topup { display:flex; align-items:center; gap:20px; margin-top:24px; padding:22px 26px; border:1px solid var(--gold-200); border-radius:18px; background:linear-gradient(135deg,#FFFDF7,#F8F0DC); box-shadow:var(--shadow-sm); }
.page-recruiter-plans .topup-ic { width:46px; height:46px; border-radius:13px; background:var(--gold-fill-deep); color:var(--on-gold); display:grid; place-items:center; flex-shrink:0; }
.page-recruiter-plans .topup-ic svg { width:22px; height:22px; }
.page-recruiter-plans .topup-main { flex:1; min-width:0; }
.page-recruiter-plans .topup-t { font-size:15.5px; font-weight:700; color:var(--n-900); }
.page-recruiter-plans .topup-s { font-size:12.5px; color:var(--n-700); line-height:1.5; margin-top:5px; }
.page-recruiter-plans .topup-price { display:flex; flex-direction:column; align-items:flex-end; gap:9px; flex-shrink:0; }
.page-recruiter-plans .topup-amt { font-size:24px; font-weight:700; color:var(--gold-700); letter-spacing:-.02em; }
.page-recruiter-plans .topup-amt span { font-size:13px; font-weight:500; color:var(--n-500); }
/* Review passe 1, A7 — l'unite du prix unitaire de recharge, rendue avec le
   montant reel et seulement quand le bareme en porte un. */
.page-recruiter-plans .topup-unit { font-size:12px; font-weight:500; color:var(--n-500); }
@media(max-width:640px){ .page-recruiter-plans .topup { flex-wrap:wrap; gap:14px; } .page-recruiter-plans .topup-price { width:100%; flex-direction:row; justify-content:space-between; align-items:center; } }

/* ── Bandeaux de confiance ── */
.page-recruiter-plans .trust-row { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:34px; }
.page-recruiter-plans .trust-i { display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px; padding:26px 20px; border:1px solid var(--n-200); border-radius:16px; background:var(--n-0); box-shadow:var(--shadow-sm); }
.page-recruiter-plans .trust-ic { width:48px; height:48px; border-radius:14px; background:linear-gradient(135deg,var(--gold-100),var(--gold-200)); border:1px solid var(--gold-200); display:grid; place-items:center; margin-bottom:6px; }
.page-recruiter-plans .trust-ic svg { width:24px; height:24px; color:var(--gold-700); }
.page-recruiter-plans .trust-i b { font-size:14px; font-weight:700; color:var(--n-900); }
.page-recruiter-plans .trust-i span { font-size:12.5px; color:var(--n-500); line-height:1.45; }
@media(max-width:760px){ .page-recruiter-plans .trust-row { grid-template-columns:1fr; } }

/* ── FAQ ── */
.page-recruiter-plans .faq-section { margin-top:52px; background:linear-gradient(160deg,#FFFDF9 0%,#FBF4E9 100%); border:1px solid var(--gold-100); border-radius:24px; padding:44px 40px; position:relative; overflow:hidden; }
.page-recruiter-plans .faq-section::before { content:''; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(to right,transparent,var(--gold-300),transparent); }
.page-recruiter-plans .faq-eyebrow { display:inline-flex; align-items:center; gap:9px; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-600); margin-bottom:14px; }
.page-recruiter-plans .faq-num { background:var(--gold-fill-deep); color:var(--on-gold); text-shadow:var(--on-gold-shadow); padding:3px 8px; border-radius:6px; font-size:10px; letter-spacing:.05em; }
.page-recruiter-plans .faq-title { font-size:34px; font-weight:700; letter-spacing:-.02em; margin-bottom:32px; }
.page-recruiter-plans .faq-title .dot { color:var(--gold-500); }
.page-recruiter-plans .faq { max-width:820px; }
.page-recruiter-plans .faq-item { background:var(--n-0); border:1px solid var(--n-200); border-radius:14px; margin-bottom:12px; overflow:hidden; transition:border-color var(--t),box-shadow var(--t); }
.page-recruiter-plans .faq-item[open] { border-color:var(--gold-500); box-shadow:var(--shadow-md); }
.page-recruiter-plans .faq-q { width:100%; background:transparent; border:none; padding:22px 26px; display:flex; align-items:center; justify-content:space-between; gap:22px; cursor:pointer; font-family:inherit; font-size:16px; font-weight:600; color:var(--n-900); text-align:left; line-height:1.3; list-style:none; }
.page-recruiter-plans .faq-q::-webkit-details-marker { display:none; }
.page-recruiter-plans .faq-q-icon { width:28px; height:28px; border-radius:50%; border:1px solid var(--n-300); position:relative; flex-shrink:0; transition:all .3s ease; }
.page-recruiter-plans .faq-q-icon::before, .page-recruiter-plans .faq-q-icon::after { content:''; position:absolute; background:var(--gold-600); top:50%; left:50%; transform:translate(-50%,-50%); transition:transform .3s ease; }
.page-recruiter-plans .faq-q-icon::before { width:12px; height:1.5px; }
.page-recruiter-plans .faq-q-icon::after { width:1.5px; height:12px; }
.page-recruiter-plans .faq-item[open] .faq-q-icon { background:var(--gold-500); border-color:var(--gold-500); }
.page-recruiter-plans .faq-item[open] .faq-q-icon::before, .page-recruiter-plans .faq-item[open] .faq-q-icon::after { background:var(--n-0); }
.page-recruiter-plans .faq-item[open] .faq-q-icon::after { transform:translate(-50%,-50%) rotate(90deg); }
.page-recruiter-plans .faq-a { padding:0 26px 24px; font-size:14.5px; color:var(--n-700); line-height:1.65; }
.page-recruiter-plans .faq-a strong { color:var(--n-900); font-weight:600; }

/* Page publique : la même grille, dans la coque publique (pas de barre
   d'espace au-dessus, donc son propre rythme vertical). */
.page-recruiter-plans.is-public .wrap { padding:48px 20px 64px; }
.page-recruiter-plans.is-public .hero-row { grid-template-columns:1fr; }

/* ── B3 tâche 017 — Confirmation avant paiement, et retour de paiement ───────
 *
 * Portées de `app/views/mockups/recruiter/plans.html.erb` (bloc <style>,
 * « écran paiement » l.282-308 et « écran confirmation » l.310-315), mêmes
 * classes et mêmes valeurs.
 *
 * Deux familles de la source ne sont PAS reprises, et c'est la décision du
 * 18/09 : `.pay-f`, `.pay-in`, `.pay-in-wrap`, `.pay-brands`, `.brand` et
 * `.pay-cols` habillaient une saisie de carte CHEZ NOUS. Le paiement est porté
 * par Stripe Checkout, il n'y a donc aucun champ de carte à habiller. Une
 * feuille qui les garderait inviterait le prochain à en redessiner un.
 *
 * `.tun` et `.ov` (la modale) ne sont pas reprises non plus : la confirmation
 * est une PAGE, servie et calculée côté serveur, pas une modale JavaScript qui
 * recopierait les prix. `.pay-panel` est sa coque, et c'est le seul ajout. */
.page-recruiter-plans .pay-panel { max-width:560px; margin:0 auto; background:var(--n-0); border:1px solid var(--n-200); border-radius:20px; padding:30px 30px 26px; box-shadow:var(--shadow-md); }
.page-recruiter-plans .pay-panel-h { font-size:19px; font-weight:700; letter-spacing:-.01em; }
.page-recruiter-plans .pay-panel-s { font-size:13px; color:var(--n-500); line-height:1.55; margin:7px 0 20px; }
.page-recruiter-plans .pay-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:22px; flex-wrap:wrap; }
.page-recruiter-plans .pay-actions .btn { flex:1 1 auto; }
.page-recruiter-plans .pay-note { display:flex; gap:8px; padding:11px 13px; border-radius:11px; background:var(--violet-50); border:1px solid var(--violet-200); font-size:11.5px; line-height:1.5; color:#4A3B63; margin-bottom:18px; }
.page-recruiter-plans .pay-note svg { width:15px; height:15px; color:var(--violet); flex-shrink:0; margin-top:1px; }
.page-recruiter-plans .pay-note b { color:#3A2D52; }
.page-recruiter-plans .pay-recap { border:1px solid var(--n-200); border-radius:12px; overflow:hidden; margin-bottom:18px; }
.page-recruiter-plans .pay-row { display:flex; justify-content:space-between; gap:16px; padding:11px 14px; font-size:13px; border-bottom:1px solid var(--n-100); }
.page-recruiter-plans .pay-row:last-child { border-bottom:none; }
.page-recruiter-plans .pay-row span { color:var(--n-500); }
.page-recruiter-plans .pay-row b { font-weight:600; text-align:right; }
.page-recruiter-plans .pay-row-sub { padding-top:2px; padding-bottom:11px; }
.page-recruiter-plans .pay-row-sub span:first-child { color:var(--n-400); font-size:12px; }
.page-recruiter-plans .pay-sub-v { color:var(--n-400); font-size:12px; font-weight:500; }
.page-recruiter-plans .pay-row.total { background:var(--n-50); }
.page-recruiter-plans .pay-row.total b { font-size:15px; }
.page-recruiter-plans .pay-3ds { display:flex; gap:8px; align-items:flex-start; margin-top:14px; padding:11px 13px; border-radius:10px; background:var(--violet-50); border:1px solid var(--violet-200); font-size:11.5px; line-height:1.5; color:#4A3B63; }
.page-recruiter-plans .pay-3ds svg { width:15px; height:15px; color:var(--violet); flex-shrink:0; margin-top:1px; }
.page-recruiter-plans .pay-3ds b { color:#3A2D52; }
.page-recruiter-plans .pay-trust { display:flex; gap:8px; align-items:flex-start; margin-top:10px; font-size:11px; color:var(--n-500); line-height:1.4; }
.page-recruiter-plans .pay-trust svg { width:14px; height:14px; color:var(--green); flex-shrink:0; margin-top:1px; }

/* Refus motivé : la souscription n'est pas ouverte, et l'écran DIT pourquoi
   (formule sans prix, territoire sans règle de TVA, facturation non
   configurée). Jamais un bouton qui échouerait après le clic. */
.page-recruiter-plans .pay-blocked { display:flex; gap:10px; align-items:flex-start; padding:16px 18px; border-radius:12px; background:var(--gold-50); border:1px solid var(--gold-200); font-size:13px; line-height:1.55; color:var(--n-700); }
.page-recruiter-plans .pay-blocked svg { width:18px; height:18px; color:var(--gold-700); flex-shrink:0; margin-top:1px; }

/* ── Écran de retour, après le paiement ── */
.page-recruiter-plans .cf { text-align:center; padding:14px 0 8px; }
.page-recruiter-plans .cf-ic { width:60px; height:60px; border-radius:50%; background:var(--green-50); border:1px solid var(--green-200); display:grid; place-items:center; margin:0 auto 18px; }
.page-recruiter-plans .cf-ic svg { width:30px; height:30px; color:var(--green); }
.page-recruiter-plans .cf-ic.is-waiting { background:var(--gold-50); border-color:var(--gold-200); }
.page-recruiter-plans .cf-ic.is-waiting svg { color:var(--gold-700); }
.page-recruiter-plans .cf-t { font-size:20px; font-weight:700; }
.page-recruiter-plans .cf-s { font-size:13.5px; color:var(--n-500); line-height:1.55; max-width:380px; margin:8px auto 0; }

@media(max-width:560px){
  .page-recruiter-plans .pay-panel { padding:22px 18px 20px; border-radius:16px; }
  .page-recruiter-plans .pay-actions .btn { width:100%; }
}

/* ── B3 tâche 017 — Profil de facturation (AC28.5) ──────────────────────────
 *
 * Aucune maquette client : le « Modifier » de la maquette de facturation était
 * inerte. On reste dans le vocabulaire de la page (`pay-panel`, `btn`), avec le
 * strict nécessaire pour un formulaire lisible à 390 px. */
.page-recruiter-plans .bp-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.page-recruiter-plans .bp-f { display:flex; flex-direction:column; gap:6px; }
.page-recruiter-plans .bp-f.full { grid-column:1 / -1; }
.page-recruiter-plans .bp-f label { font-size:11.5px; font-weight:600; color:var(--n-700); }
.page-recruiter-plans .bp-f input, .page-recruiter-plans .bp-f select { width:100%; border:1px solid var(--n-300); border-radius:10px; padding:11px 13px; font-family:inherit; font-size:14px; background:var(--n-0); color:var(--n-900); }
.page-recruiter-plans .bp-f input:focus, .page-recruiter-plans .bp-f select:focus { outline:2px solid var(--gold-400); outline-offset:1px; }
.page-recruiter-plans .bp-hint { font-size:11.5px; color:var(--n-500); line-height:1.45; }
.page-recruiter-plans .bp-ro { font-size:14px; color:var(--n-700); padding:11px 13px; border:1px solid var(--n-200); border-radius:10px; background:var(--n-50); }
.page-recruiter-plans .bp-lock { display:inline-block; font-size:9.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; background:var(--n-100); color:var(--n-500); border:1px solid var(--n-200); border-radius:5px; padding:1px 6px; margin-left:6px; vertical-align:middle; }
.page-recruiter-plans .bp-errors { margin:0 0 16px; padding:12px 14px; border-radius:11px; background:var(--red-50); border:1px solid var(--red-200); font-size:12.5px; line-height:1.5; color:#7A2E1F; }
.page-recruiter-plans .bp-errors ul { margin:0; padding-left:18px; }
@media(max-width:560px){ .page-recruiter-plans .bp-grid { grid-template-columns:1fr; } }

/* ── B3 tâche 020 — Aperçu d'un changement de formule, et résiliation ────────
 *
 * Portées de `app/views/mockups/recruiter/plans.html.erb` (bloc <style>,
 * « écran impact » l.247-281), mêmes classes et mêmes valeurs. `.tun` et `.ov`
 * (la modale) ne sont toujours pas reprises : la confirmation est une PAGE,
 * servie et calculée côté serveur, comme celle de la souscription (tâche 017).
 *
 * Deux écarts sur les valeurs, tous deux dus aux jetons :
 *
 *   · `--amber-700` de la source n'existe pas dans le design system : le doré
 *     sombre de la formule visée en descente est `--amber-strong`, son voisin
 *     immédiat (même règle que les neuf dorés de la tâche 016) ;
 *   · `.up-opt` est un LIEN, pas un `<label>` autour d'un `input` : la bascule
 *     « dès maintenant / au renouvellement » passe par l'URL, parce qu'elle
 *     change un montant et qu'un montant se recalcule au serveur. L'état
 *     sélectionné s'écrit donc `.on` au lieu de `:has(input:checked)`, avec les
 *     mêmes valeurs. */
.page-recruiter-plans .imp-move { display:flex; align-items:center; gap:14px; padding:16px; border-radius:14px; background:var(--n-50); border:1px solid var(--n-200); margin-bottom:18px; }
.page-recruiter-plans .imp-move.move-up { background:var(--green-50); border-color:var(--green-200); }
.page-recruiter-plans .imp-move.move-down { background:var(--amber-50); border-color:var(--amber-200); }
.page-recruiter-plans .imp-plan { text-align:center; flex:1; min-width:0; }
.page-recruiter-plans .imp-plan .n { font-size:15px; font-weight:700; }
.page-recruiter-plans .imp-plan .p { font-size:12px; color:var(--n-500); margin-top:2px; }
.page-recruiter-plans .imp-plan .imp-per { display:block; font-size:11px; color:var(--n-400); }
.page-recruiter-plans .move-up .imp-plan:last-child .n { color:var(--green); }
.page-recruiter-plans .move-down .imp-plan:last-child .n { color:var(--amber-strong); }
.page-recruiter-plans .imp-arr { flex-shrink:0; }
.page-recruiter-plans .imp-arr svg { width:22px; height:22px; }
.page-recruiter-plans .imp-arr.up { color:var(--green); }
.page-recruiter-plans .imp-arr.down { color:var(--amber); transform:rotate(90deg); }
.page-recruiter-plans .imp-l { font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--n-500); margin:0 0 11px; }
.page-recruiter-plans .imp-l.timing-l { margin-top:20px; }
.page-recruiter-plans .imp-list { display:flex; flex-direction:column; gap:10px; }
.page-recruiter-plans .imp-i { display:flex; gap:10px; font-size:13px; line-height:1.45; color:var(--n-700); }
.page-recruiter-plans .imp-i svg { width:16px; height:16px; flex-shrink:0; margin-top:1px; }
.page-recruiter-plans .imp-i.imp-i-sub { padding-left:26px; }
.page-recruiter-plans .imp-i.up svg { color:var(--green); }
.page-recruiter-plans .imp-i.info svg { color:var(--gold-600); }
.page-recruiter-plans .imp-i.warn svg { color:var(--amber); }
.page-recruiter-plans .imp-i b { color:var(--n-900); font-weight:600; }
.page-recruiter-plans .imp-lead b { font-weight:600; color:var(--n-900); }
.page-recruiter-plans .up-choice { display:flex; flex-direction:column; gap:10px; margin-top:12px; }
.page-recruiter-plans .up-opt { display:flex; gap:11px; align-items:flex-start; padding:14px 16px; border:1px solid var(--n-200); border-radius:12px; cursor:pointer; transition:all var(--t); text-decoration:none; color:inherit; }
.page-recruiter-plans .up-opt.on, .page-recruiter-plans .up-opt:has(input:checked) { border-color:var(--gold-400); background:var(--gold-50); }
.page-recruiter-plans .up-opt input { margin-top:2px; accent-color:var(--gold-500); flex-shrink:0; }
.page-recruiter-plans .up-opt b { font-size:13.5px; color:var(--n-900); display:block; }
.page-recruiter-plans .up-opt small { font-size:12px; color:var(--n-500); line-height:1.45; display:block; margin-top:3px; }
.page-recruiter-plans .fm-warn { display:flex; gap:11px; align-items:flex-start; margin-bottom:16px; padding:16px 18px; border-radius:12px; background:var(--red-50); border:1px solid var(--red-200); font-size:13px; line-height:1.55; color:#7A2E1F; }
.page-recruiter-plans .fm-warn svg { width:19px; height:19px; color:var(--red); flex-shrink:0; margin-top:1px; }
.page-recruiter-plans .fm-warn b { color:var(--red); font-weight:700; }
.page-recruiter-plans .imp-when { margin:16px 0; padding:12px 14px; border-radius:11px; background:var(--gold-50); border:1px solid var(--gold-200); font-size:12.5px; line-height:1.5; color:var(--n-700); }
.page-recruiter-plans .imp-when b { color:var(--gold-700); }

/* Le commentaire libre de la résiliation. Aucune maquette : on emprunte le
   vocabulaire du formulaire de profil de facturation (tâche 017). */
.page-recruiter-plans .cx-comment { margin-top:16px; display:flex; flex-direction:column; gap:6px; }
.page-recruiter-plans .cx-comment label { font-size:11.5px; font-weight:600; color:var(--n-700); }
.page-recruiter-plans .cx-comment textarea { width:100%; border:1px solid var(--n-300); border-radius:10px; padding:11px 13px; font-family:inherit; font-size:14px; background:var(--n-0); color:var(--n-900); resize:vertical; }
.page-recruiter-plans .cx-comment textarea:focus { outline:2px solid var(--gold-400); outline-offset:1px; }
