/* ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   ACTUALISATION DE L'ÉDITION (2026-09-30, lot 3a des tarifs) — préfixe actu-.
   Confirmation d'un déblocage (Shared/ActualisationConfirmHost), verrou et bandeau d'une taille (Shared/ActualisationVerrou),
   badge d'édition (Shared/ActualisationBadge), bandeau du hub (Shared/ActualisationBandeau). Jetons de l'application
   (--bg1, --bd1, --tx1, --tx2, --mut2, --brand, --brand-strong, --brand-contrast, --color-warning…), clair et sombre.
   ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── */

/* ── Confirmation (modale unique, au-dessus de tout, comme la fiche de manque) ── */
.actu-back{position:fixed;inset:0;z-index:100001;background:var(--bd62,rgba(3,12,18,.62));backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px;animation:actuIn .14s ease}
.actu-card{width:min(440px,96vw);max-height:92vh;max-height:92svh;overflow:auto;background:var(--bg1,#121a22);border:1px solid var(--bd1,#243240);border-radius:16px;padding:20px 20px 16px;box-shadow:0 24px 70px rgba(0,0,0,.45);color:var(--tx1,#e8eef2);display:flex;flex-direction:column;gap:10px;font-family:var(--font-family)}
.actu-eyebrow{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:.02em;padding:4px 10px;border-radius:999px;color:var(--brand-strong,var(--brand,#00B1CF));background:color-mix(in srgb,var(--brand,#00B1CF) 13%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 32%,transparent)}
.actu-title{margin:0;font-size:19px;font-weight:800;line-height:1.2;letter-spacing:-.01em}
.actu-quoi{margin:0;font-size:13px;line-height:1.5;color:var(--tx2,#c2cdd6)}
.actu-lignes{margin:4px 0 0;display:flex;flex-direction:column;border:1px solid var(--bd1,#243240);border-radius:12px;overflow:hidden}
.actu-ligne{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 12px;font-size:13px}
.actu-ligne + .actu-ligne{border-top:1px solid var(--bd1,#243240)}
.actu-ligne dt{color:var(--tx2,#c2cdd6);font-weight:600}
.actu-ligne dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.actu-ligne dd b{font-weight:800;color:var(--tx1,#e8eef2)}
.actu-ligne dd small{display:block;font-size:11px;color:var(--mut2,#8a97a2);font-weight:600}
.actu-fleche{color:var(--mut2,#8a97a2);margin:0 4px}
.actu-note{margin:0;font-size:12px;line-height:1.45;color:var(--mut2,#8a97a2)}
.actu-note.is-plafond{color:var(--brand-strong,var(--brand,#00B1CF));font-weight:700}
.actu-faible{margin:0;display:flex;gap:8px;align-items:flex-start;font-size:12px;line-height:1.45;padding:9px 11px;border-radius:10px;color:var(--tx2,#c2cdd6);background:color-mix(in srgb,var(--color-warning,#f0a020) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-warning,#f0a020) 35%,transparent)}
.actu-faible .iku-ico{flex:0 0 auto;margin-top:2px;color:var(--color-warning,#f0a020)}
.actu-actions{display:flex;gap:9px;margin-top:6px}
.actu-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 14px;border-radius:10px;font-size:13.5px;font-weight:700;cursor:pointer;border:1px solid transparent;font-family:var(--font-family);transition:filter .12s,background .12s}
.actu-btn:disabled{opacity:.45;cursor:not-allowed}
/* Lot 3d : « Parler à un conseil » est un lien (Calendly) posé comme un bouton : ni soulignement, centré comme les autres. */
a.actu-btn{text-decoration:none;text-align:center}
.actu-go{flex:2;background:var(--brand,#00B1CF);color:var(--brand-contrast,#04222a)}
.actu-go:hover:not(:disabled){filter:brightness(1.07)}
.actu-ghost{background:transparent;border-color:var(--bd1,#2a3a48);color:var(--tx2,#c2cdd6)}
.actu-ghost:hover{background:color-mix(in srgb,var(--tx1,#e8eef2) 7%,transparent)}
@keyframes actuIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.actu-back{animation:none}}
@media(max-width:560px){
  .actu-back{padding:0;align-items:flex-end}
  .actu-card{width:100%;max-height:min(94svh,100%);border-radius:16px 16px 0 0;border-left:0;border-right:0;border-bottom:0;padding-bottom:max(16px,env(safe-area-inset-bottom))}
}

/* ── Verrou d'une taille : panneau (vue entière), bandeau (en tête d'une vue), carte (hub) ── */
.actu-verrou{display:flex;flex-direction:column;gap:10px;font-family:var(--font-family);color:var(--tx1,#e8eef2)}
.actu-verrou-ic{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:21px;color:var(--brand-strong,var(--brand,#00B1CF));background:color-mix(in srgb,var(--brand,#00B1CF) 14%,transparent)}
.actu-verrou-t{margin:0;font-size:17px;font-weight:800;line-height:1.25}
.actu-verrou-d{margin:0;font-size:13px;line-height:1.5;color:var(--tx2,#c2cdd6);max-width:62ch}
.actu-verrou-d b{color:var(--tx1,#e8eef2)}
.actu-verrou-s{margin:0;font-size:12px;line-height:1.45;color:var(--mut2,#8a97a2);max-width:62ch}
.actu-verrou-act{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.actu-verrou-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:10px;font-size:13px;font-weight:700;cursor:pointer;border:1px solid transparent;font-family:var(--font-family);background:var(--brand,#00B1CF);color:var(--brand-contrast,#04222a);transition:filter .12s}
.actu-verrou-btn:hover:not(:disabled){filter:brightness(1.07)}
.actu-verrou-btn:disabled{opacity:.5;cursor:wait}
.actu-verrou-btn.is-offert{background:color-mix(in srgb,var(--brand,#00B1CF) 10%,transparent);border-color:color-mix(in srgb,var(--brand,#00B1CF) 50%,transparent);color:var(--brand-strong,var(--brand,#00B1CF))}
.actu-verrou-btn .actu-prix{font-weight:800;opacity:.92}
.actu-verrou-attente{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--mut2,#8a97a2)}

/* Panneau : à la place d'une vue du prévisionnel (simulateur, cockpit) */
.actu-verrou.v-panneau{align-items:center;text-align:center;justify-content:center;padding:44px 22px;min-height:320px}
.actu-verrou.v-panneau .actu-verrou-d,.actu-verrou.v-panneau .actu-verrou-s{margin-left:auto;margin-right:auto}
.actu-verrou.v-panneau .actu-verrou-act{justify-content:center}

/* Bandeau : en tête d'une vue (noms masqués, prévisionnel daté) */
.actu-verrou.v-bandeau{flex-direction:row;align-items:center;gap:12px;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--brand,#00B1CF) 7%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 26%,transparent)}
.actu-verrou.v-bandeau .actu-verrou-ic{width:32px;height:32px;border-radius:10px;font-size:16px;flex:0 0 auto}
.actu-verrou.v-bandeau .actu-verrou-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.actu-verrou.v-bandeau .actu-verrou-t{font-size:13.5px}
.actu-verrou.v-bandeau .actu-verrou-d{font-size:12.5px}
.actu-verrou.v-bandeau .actu-verrou-act{flex:0 0 auto}
.actu-verrou.v-bandeau.is-date{background:color-mix(in srgb,var(--color-warning,#f0a020) 8%,transparent);border-color:color-mix(in srgb,var(--color-warning,#f0a020) 34%,transparent)}
.actu-verrou.v-bandeau.is-date .actu-verrou-ic{color:var(--color-warning,#f0a020);background:color-mix(in srgb,var(--color-warning,#f0a020) 14%,transparent)}
@media(max-width:720px){
  .actu-verrou.v-bandeau{flex-direction:column;align-items:flex-start}
  .actu-verrou.v-bandeau .actu-verrou-act{width:100%}
}

/* Carte : dans une carte du hub (« Simuler mes décisions ») */
.actu-verrou.v-carte{gap:8px;padding:6px 0 2px}
.actu-verrou.v-carte .actu-verrou-t{font-size:15px}
.actu-verrou.v-carte .actu-verrou-d{font-size:12.5px}
.actu-verrou.v-carte .actu-verrou-ic{width:36px;height:36px;border-radius:11px;font-size:17px}

/* Badge dans l'en-tête d'une carte du hub : calé à droite du titre */
.actu-carte-badge{margin-left:auto;display:inline-flex;align-items:center;min-width:0}
.actu-carte-badge:empty{display:none}
/* Cartes latérales (portefeuille, valorisation ; lot 3b) : trop étroites pour le titre et le badge daté sur une ligne, le badge
   passe dessous au lieu de déborder de la carte (il y était coupé : « au 31/01 · à actu… »). */
.intent-card-side .intent-card-header{flex-wrap:wrap;row-gap:8px}
.intent-card-side .intent-card-header>.intent-card-title{flex:1 1 0;min-width:0}
.intent-card-side .actu-carte-badge{flex:0 0 100%;margin-left:0}

/* Emplacements : l'écran de résultat d'une mise à jour du provisoire, le ruban du simulateur, le volet du pilotage */
.actu-dans-maj{margin-top:14px}
.actu-dans-popup{margin:0 16px 10px}
.actu-dans-volet{margin:4px 0 12px}

/* Explication « identité faible » et service indisponible, dans un verrou */
.actu-verrou-faible{display:flex;gap:7px;align-items:flex-start;font-size:12px;line-height:1.45;color:var(--tx2,#c2cdd6);max-width:62ch}
.actu-verrou-faible .iku-ico{flex:0 0 auto;margin-top:2px;color:var(--color-warning,#f0a020)}

/* ── Badge d'édition (« Actualisé · au 31/01 », « au 31/01 · à actualiser ») ── */
.actu-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;line-height:1;padding:4px 9px;border-radius:999px;white-space:nowrap;font-family:var(--font-family);border:1px solid transparent;vertical-align:middle}
.actu-badge.is-frais{color:var(--color-success,#22c55e);background:color-mix(in srgb,var(--color-success,#22c55e) 11%,transparent);border-color:color-mix(in srgb,var(--color-success,#22c55e) 30%,transparent)}
.actu-badge.is-offert{color:var(--brand-strong,var(--brand,#00B1CF));background:color-mix(in srgb,var(--brand,#00B1CF) 11%,transparent);border-color:color-mix(in srgb,var(--brand,#00B1CF) 32%,transparent)}
.actu-badge.is-date{color:var(--color-warning,#f0a020);background:color-mix(in srgb,var(--color-warning,#f0a020) 11%,transparent);border-color:color-mix(in srgb,var(--color-warning,#f0a020) 34%,transparent)}
button.actu-badge{cursor:pointer}
button.actu-badge:hover{filter:brightness(1.08)}

/* ── Bandeau du hub : plafond atteint, identité faible, service indisponible, première analyse offerte ── */
.actu-bandeau{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:9px 14px;border-radius:12px;font-size:12.5px;line-height:1.45;font-family:var(--font-family);color:var(--tx2,#c2cdd6);background:color-mix(in srgb,var(--brand,#00B1CF) 7%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 24%,transparent)}
.actu-bandeau .iku-ico{flex:0 0 auto;color:var(--brand-strong,var(--brand,#00B1CF))}
.actu-bandeau b{color:var(--tx1,#e8eef2)}
.actu-bandeau-txt{flex:1 1 280px;min-width:0}
.actu-bandeau-ed{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.actu-bandeau.is-plafond{background:color-mix(in srgb,var(--color-success,#22c55e) 8%,transparent);border-color:color-mix(in srgb,var(--color-success,#22c55e) 30%,transparent)}
.actu-bandeau.is-plafond .iku-ico{color:var(--color-success,#22c55e)}
.actu-bandeau.is-alerte{background:color-mix(in srgb,var(--color-warning,#f0a020) 8%,transparent);border-color:color-mix(in srgb,var(--color-warning,#f0a020) 34%,transparent)}
.actu-bandeau.is-alerte .iku-ico{color:var(--color-warning,#f0a020)}
.actu-bandeau-lien{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--brand-strong,var(--brand,#00B1CF));cursor:pointer;text-decoration:underline;text-underline-offset:2px}

/* ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   LOT 3b (2026-09-30) : « Tout actualiser ce mois-ci », enveloppe automatique, porte et instantané daté du financement et de
   la stratégie, budget de l'exercice figé.
   ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── */

/* « Tout actualiser ce mois-ci » dans le bandeau du hub */
.actu-bandeau-tout{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:9px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 50%,transparent);background:color-mix(in srgb,var(--brand,#00B1CF) 12%,transparent);color:var(--brand-strong,var(--brand,#00B1CF));white-space:nowrap}
.actu-bandeau-tout:hover:not(:disabled){filter:brightness(1.07)}
.actu-bandeau-tout:disabled{opacity:.55;cursor:wait}
.actu-bandeau-tout .iku-ico{color:inherit}

/* Réglage de l'enveloppe automatique (sous le bandeau) et case de la confirmation */
.actu-env{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:-4px 0 12px;padding:10px 14px;border-radius:12px;font-family:var(--font-family);font-size:12.5px;color:var(--tx2,#c2cdd6);background:var(--bg1,#121a22);border:1px solid var(--bd1,#243240)}
.actu-env-t{margin:0;font-weight:700;color:var(--tx1,#e8eef2)}
.actu-env-d{margin:0;flex:1 1 100%;font-size:12px;line-height:1.45;color:var(--mut2,#8a97a2)}
.actu-env-a{display:flex;align-items:center;gap:14px;margin-left:auto}
.actu-auto{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:9px 11px;border-radius:10px;font-size:12.5px;color:var(--tx2,#c2cdd6);background:color-mix(in srgb,var(--brand,#00B1CF) 6%,transparent);border:1px dashed color-mix(in srgb,var(--brand,#00B1CF) 32%,transparent)}
.actu-auto-c{display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.actu-auto-c input{accent-color:var(--brand,#00B1CF);width:15px;height:15px}
.actu-auto-m{display:inline-flex;align-items:center;gap:6px}
.actu-auto-m input{width:84px;padding:5px 7px;border-radius:7px;border:1px solid var(--bd1,#2a3a48);background:var(--bg0,var(--bg1,#0e151c));color:var(--tx1,#e8eef2);font:inherit;font-variant-numeric:tabular-nums;text-align:right}
.actu-auto-m i{font-style:normal;color:var(--mut2,#8a97a2)}
.actu-ligne.is-total{background:color-mix(in srgb,var(--brand,#00B1CF) 6%,transparent)}
.actu-ligne.is-total dt{color:var(--tx1,#e8eef2);font-weight:800}

/* Porte d'une vue du financement ou de la stratégie : daté (bandeau + instantané) ou verrouillé (panneau) */
.actu-porte{display:flex;flex-direction:column;gap:12px;font-family:var(--font-family);color:var(--tx1,#e8eef2);width:min(1100px,100%);margin:0 auto;padding:14px 16px;box-sizing:border-box}
.actu-porte .actu-verrou.v-panneau{border-radius:16px;background:color-mix(in srgb,var(--brand,#00B1CF) 4%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 16%,transparent)}

/* Instantané daté : chiffres clés et hypothèses, en lecture seule */
.actu-inst{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:14px;background:var(--bg1,#121a22);border:1px solid var(--bd1,#243240)}
.actu-inst-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px}
.actu-inst-h h3{margin:0;font-size:16px;font-weight:800;letter-spacing:-.01em}
.actu-inst-s{font-size:12.5px;color:var(--mut2,#8a97a2)}
.actu-inst-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.actu-inst-kpi{display:flex;flex-direction:column;gap:3px;padding:11px 12px;border-radius:11px;border:1px solid var(--bd1,#243240);background:color-mix(in srgb,var(--tx1,#e8eef2) 2%,transparent);min-width:0}
.actu-inst-kpi.is-cle{border-color:color-mix(in srgb,var(--brand,#00B1CF) 40%,transparent);background:color-mix(in srgb,var(--brand,#00B1CF) 7%,transparent)}
.actu-inst-kpi-l{font-size:11.5px;font-weight:700;color:var(--tx2,#c2cdd6)}
.actu-inst-kpi-v{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--tx1,#e8eef2);overflow-wrap:anywhere}
.actu-inst-kpi-s{font-size:11.5px;line-height:1.4;color:var(--mut2,#8a97a2)}
.actu-inst-hyp{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 18px;border-top:1px solid var(--bd1,#243240);padding-top:8px}
.actu-inst-hyp-l{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed color-mix(in srgb,var(--bd1,#243240) 80%,transparent);font-size:12.5px}
.actu-inst-hyp-l dt{color:var(--tx2,#c2cdd6)}
.actu-inst-hyp-l dd{margin:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;color:var(--tx1,#e8eef2)}
.actu-inst-vide{margin:0;display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.45;color:var(--tx2,#c2cdd6)}
.actu-inst-vide .iku-ico{flex:0 0 auto;margin-top:2px;color:var(--mut2,#8a97a2)}
.actu-inst-pied{margin:0;display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--mut2,#8a97a2)}
@media(max-width:560px){
  .actu-inst{padding:12px}
  .actu-inst-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .actu-inst-kpi-v{font-size:16px}
  .actu-env-a{margin-left:0}
}

/* Cartes du hub en état daté (valeur, portefeuille) : le chiffre figé, la ligne « au 31/01 » */
.actu-carte-datee{display:flex;flex-direction:column;gap:4px}
.actu-carte-datee-v{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.actu-carte-datee-s{font-size:12px;color:var(--mut2,#8a97a2)}

/* Budget de l'exercice figé lors d'un mois comptable précédent (atelier en lecture seule) */
.actu-budget-note{margin:0 0 12px;display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.45;color:var(--tx2,#c2cdd6);background:color-mix(in srgb,var(--color-warning,#f0a020) 8%,transparent);border:1px solid color-mix(in srgb,var(--color-warning,#f0a020) 30%,transparent)}
.actu-budget-note .iku-ico{flex:0 0 auto;margin-top:2px;color:var(--color-warning,#f0a020)}

/* Écran de résultat d'une mise à jour du provisoire : la trésorerie projetée, prête derrière l'actualisation du prévisionnel */
.actu-teaser{display:flex;flex-direction:column;gap:8px}
.actu-teaser-t{margin:0;font-size:14px;font-weight:800;color:var(--tx1,#e8eef2)}
.actu-teaser-d{margin:0;font-size:12.5px;line-height:1.5;color:var(--tx2,#c2cdd6)}
/* Le geste seul (variante « action ») : sous un texte de l'hôte qui dit déjà pourquoi. */
.actu-verrou.v-action{flex-direction:row;gap:0;margin-top:2px}

/* ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   LOT 7b-1 (2026-09-30) : forfait et missions du dossier (Shared/ForfaitDossier, actu-fd-), choix d'une mission (confirmation,
   actu-choix-), paiement intégré (Shared/PaiementIntegre, actu-pay-), relevé du mois du cabinet (Shared/ReleveCabinet, rel-).
   ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── */

/* Forfait et missions du dossier ouvert, sous le bandeau du hub */
.actu-fd{display:flex;flex-direction:column;gap:12px;margin:0 0 12px;padding:14px 16px;border-radius:14px;font-family:var(--font-family);color:var(--tx1,#e8eef2);background:var(--bg1,#121a22);border:1px solid var(--bd1,#243240)}
.actu-fd-h{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px}
.actu-fd-h h3{margin:0;font-size:15px;font-weight:800;letter-spacing:-.01em}
.actu-fd-code{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--tx2,#c2cdd6);border:1px solid var(--bd1,#243240)}
.actu-fd-x{margin-left:auto;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;border:1px solid transparent;background:none;color:var(--tx2,#c2cdd6);cursor:pointer}
.actu-fd-x:hover{background:color-mix(in srgb,var(--tx1,#e8eef2) 8%,transparent)}
.actu-fd-bloc{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--bd1,#243240)}
.actu-fd-t{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;font-size:13.5px}
.actu-fd-t .iku-ico{color:var(--brand-strong,var(--brand,#00B1CF))}
.actu-fd-t span{font-size:12.5px;color:var(--tx2,#c2cdd6)}
.actu-fd-p{margin:0;font-size:12.5px;line-height:1.5;color:var(--tx2,#c2cdd6);max-width:78ch}
.actu-fd-alerte{margin:0;display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.45;padding:8px 10px;border-radius:10px;color:var(--tx2,#c2cdd6);background:color-mix(in srgb,var(--color-warning,#f0a020) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-warning,#f0a020) 35%,transparent)}
.actu-fd-alerte .iku-ico{flex:0 0 auto;margin-top:2px;color:var(--color-warning,#f0a020)}
.actu-fd-a{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.actu-fd-a .actu-bandeau-lien:disabled{opacity:.5;cursor:wait}
.actu-fd-conv{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--brand,#00B1CF) 6%,transparent);border:1px dashed color-mix(in srgb,var(--brand,#00B1CF) 34%,transparent)}
.actu-fd-conv p{margin:0;font-size:12.5px;line-height:1.5;color:var(--tx2,#c2cdd6)}
.actu-fd-offres{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.actu-fd-offre{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;padding:12px;border-radius:12px;border:1px solid var(--bd1,#243240);background:color-mix(in srgb,var(--tx1,#e8eef2) 2%,transparent)}
.actu-fd-offre b{font-size:13.5px;font-weight:800}
.actu-fd-offre small{font-size:11.5px;line-height:1.4;color:var(--tx2,#c2cdd6)}
.actu-fd-offre .actu-verrou-btn{margin-top:4px}
.actu-fd-prix{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.actu-fd-l{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--tx2,#c2cdd6)}
/* Lot « changements de formule » : l'actualisé du mois repris par une offre de forfait, la baisse notée pour l'échéance */
.actu-fd-reprise{display:flex;gap:6px;align-items:flex-start;font-size:11.5px;line-height:1.4;font-weight:700;color:var(--tx1,#e8eef2)}
.actu-fd-reprise .iku-ico{flex:0 0 auto;margin-top:1px;color:var(--brand-strong,var(--brand,#00B1CF))}
.actu-fd-suivant{margin:0;font-size:12.5px;line-height:1.5;color:var(--tx1,#e8eef2);font-weight:600}
@media(max-width:560px){
  .actu-fd{padding:12px}
  .actu-fd-offres{grid-template-columns:minmax(0,1fr)}
}

/* 2026-10-02 : le PANNEAU DU CLIENT sous le bandeau du hub (ActualisationBandeau) : « Forfait et missions » et « Actualisation
   automatique » en deux onglets d'une même carte centrée, un seul ouvert à la fois, à la LARGEUR DE LA CARTE DU FORFAIT (580 px :
   son contenu mesure 560 px de large, celui de l'enveloppe 539 ; posés dans .intent-zone, colonne flex centrée, ils prenaient
   la largeur de leur contenu, et la ligne de l'enveloppe, qui s'enroulait, toute la largeur). Centrée et bornée : à 1440 et à 1024 px, ses
   boutons restent loin de la pile des boutons flottants de droite ; « Enregistrer » est à gauche de sa ligne. Le forfait et
   l'enveloppe y perdent leur propre cadre (la carte le porte). Largeur et ouverture : voir actu-pan-pli plus bas (colonne des tuiles). */
.actu-pan{position:relative;display:flex;flex-direction:column;gap:12px;width:100%;margin:0;box-sizing:border-box;padding:12px 16px 16px;border-radius:14px;font-family:var(--font-family);color:var(--tx1,#e8eef2);background:var(--bg1,#121a22);border:1px solid var(--bd1,#243240)}
.actu-pan-tabs{display:flex;align-items:flex-end;flex-wrap:wrap;gap:2px 4px;padding-right:34px;border-bottom:1px solid var(--bd1,#243240)}
.actu-pan-tab{margin-bottom:-1px;padding:8px 12px;font:inherit;font-size:13px;font-weight:700;color:var(--tx2,#c2cdd6);background:none;border:0;border-bottom:2px solid transparent;cursor:pointer}
.actu-pan-tab:hover{color:var(--tx1,#e8eef2)}
.actu-pan-tab.on{color:var(--tx1,#e8eef2);border-bottom-color:var(--brand,#00B1CF)}
.actu-pan-tab:focus-visible{outline:2px solid var(--brand,#00B1CF);outline-offset:2px;border-radius:6px}
.actu-pan-tabs .actu-fd-x{position:absolute;top:10px;right:10px;margin:0}   /* en haut à droite, même quand les onglets passent à la ligne (téléphone) */
.actu-pan .actu-fd{margin:0;padding:0;border:0;border-radius:0;background:none}
.actu-pan .actu-env{flex-direction:column;align-items:flex-start;flex-wrap:nowrap;gap:10px;margin:0;padding:0;border:0;border-radius:0;background:none}
.actu-env-titre{margin:0;font-size:15px;font-weight:800;letter-spacing:-.01em;color:var(--tx1,#e8eef2)}
.actu-env-forfait{margin:0;max-width:78ch;padding:8px 10px;border-radius:10px;font-size:12.5px;line-height:1.5;color:var(--tx1,#e8eef2);background:color-mix(in srgb,var(--brand,#00B1CF) 7%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 24%,transparent)}
.actu-env-ligne{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.actu-pan .actu-env-d{flex:none;max-width:78ch}
.actu-pan .actu-env-a{flex-wrap:wrap;gap:10px 16px;margin-left:0}
/* 2026-10-02 (« clean UX », Arthur) : les deux liens du bandeau répétaient les deux onglets. UNE entrée (« Forfait et actualisation »,
   chevron) ouvre et ferme la carte ; le bandeau et la carte prennent la COLONNE DES TUILES du hub (1 100 px, comme le bandeau de
   l'enregistrement au-dessus et les cartes en dessous : une pile alignée) ; la carte s'ouvre en glissant, collée sous son bandeau,
   au lieu de repousser d'un coup le contenu (grille 0fr → 1fr, rien sous prefers-reduced-motion). */
.intent-zone > .actu-bandeau{width:min(1100px,100%);box-sizing:border-box}
.actu-bandeau-gerer{display:inline-flex;align-items:center;gap:6px;padding:6px 10px 6px 12px;border-radius:9px;font:inherit;font-size:12.5px;font-weight:700;white-space:nowrap;cursor:pointer;color:var(--tx1,#e8eef2);background:transparent;border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 40%,var(--bd1,#243240))}
.actu-bandeau-gerer:hover{background:color-mix(in srgb,var(--brand,#00B1CF) 9%,transparent)}
.actu-bandeau-gerer[aria-expanded="true"]{background:color-mix(in srgb,var(--brand,#00B1CF) 12%,transparent);border-color:color-mix(in srgb,var(--brand,#00B1CF) 60%,transparent)}
.actu-bandeau-gerer .iku-ico{color:var(--brand-strong,var(--brand,#00B1CF));transition:transform .2s ease}
.actu-bandeau-gerer[aria-expanded="true"] .iku-ico{transform:rotate(180deg)}
.actu-bandeau-gerer:focus-visible{outline:2px solid var(--brand,#00B1CF);outline-offset:2px}
.actu-pan-pli{display:grid;grid-template-rows:1fr;width:min(1100px,100%);margin:-20px auto 12px;animation:actuPanOuvre .24s ease-out}
.actu-pan-pli > .actu-pan{width:100%;min-height:0;margin:0;overflow:hidden}
@keyframes actuPanOuvre{from{grid-template-rows:0fr;opacity:0}to{grid-template-rows:1fr;opacity:1}}
@media(prefers-reduced-motion:reduce){
  .actu-pan-pli{animation:none}
  .actu-bandeau-gerer .iku-ico{transition:none}
}
@media(max-width:560px){
  .actu-pan{padding:10px 12px 14px}
  .actu-pan-tabs{padding-right:30px}
  .actu-pan-tab{padding:8px 6px;font-size:12px}   /* les deux onglets tiennent sur une ligne à 390 px ; plus étroit, ils passent à la ligne */
}

/* Choix d'une mission dans la confirmation */
.actu-choix{display:flex;flex-direction:column;gap:8px}
.actu-choix-l{position:relative;display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:11px;cursor:pointer;border:1px solid var(--bd1,#243240);transition:border-color .12s,background .12s}
.actu-choix-l:hover{border-color:color-mix(in srgb,var(--brand,#00B1CF) 45%,var(--bd1,#243240))}
.actu-choix-l.is-on{border-color:var(--brand,#00B1CF);background:color-mix(in srgb,var(--brand,#00B1CF) 8%,transparent)}
.actu-choix-l input{flex:0 0 auto;margin:3px 0 0;accent-color:var(--brand,#00B1CF);width:15px;height:15px}
.actu-choix-l:has(input:focus-visible){outline:2px solid var(--brand-strong,var(--brand,#00B1CF));outline-offset:2px}
.actu-choix-t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.actu-choix-t b{font-size:13.5px;font-weight:800;color:var(--tx1,#e8eef2)}
.actu-choix-t small{font-size:12px;line-height:1.45;color:var(--tx2,#c2cdd6)}
.actu-choix-p{flex:0 0 auto;font-size:13.5px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tx1,#e8eef2)}

/* Paiement intégré (Stripe Checkout, Shared/PaiementIntegre), au-dessus de la confirmation et des modales. Refait le 2026-10-02 (recette
   Stripe d'Arthur, « qu'il se fonde davantage dans l'app ») sur le gabarit des fenêtres de l'application : surface des modales
   (--modal-surf, suit thème et palette), bordure et ombre des fenêtres, rayon 16, voile flouté ; en-tête à pastille, sous-titre (objet,
   montant HT, TVA en sus). Gabarit ÉTROIT, une colonne (500 px) : la mise en page de Stripe pour les petites largeurs, identique à toutes
   les largeurs d'écran ; les deux colonnes de Stripe demandent un cadre d'environ 1 000 px, et entre deux seuils elles retombent en une
   colonne centrée, bordée de bandes vides. Hauteur : celle de la page de Stripe (l'iframe se dimensionne à son contenu), plafonnée à
   l'écran ; un seul défilement, celui du corps ; aucune bande vide sous la page. Téléphone : plein écran. */
@keyframes actuPayFond{from{opacity:0}to{opacity:1}}
@keyframes actuPayCarte{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@keyframes actuPayTourne{to{transform:rotate(360deg)}}
.actu-pay-back{position:fixed;inset:0;z-index:100002;display:flex;align-items:center;justify-content:center;padding:max(16px,3vh) 16px;
  background:var(--bd62,rgba(3,12,18,.62));backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:actuPayFond .16s ease}
/* COULEURS FIGÉES (05/10/2026, Arthur : le vert de la palette Forêt à côté du sarcelle de Stripe « fait bizarre ») : la fenêtre ne suit
   plus ni la palette ni le thème (clair compris : Stripe garde sa bande sombre). Ces jetons reprennent le réglage « Image de marque →
   Checkout » du TABLEAU DE BORD STRIPE (fond #0A3B4B, bouton #087F96, police Inter, formes arrondies) : ils doivent changer avec lui.
   --pay-accent-clair : le bouton éclairci (65 % + blanc), pour le cadenas et les repères sur le fond sombre (#087F96 n'y fait que
   2,6:1). Bordures et halos : blanc à faible opacité, aucune couleur de palette. */
.actu-pay-card{--pay-fond:#0A3B4B;--pay-accent:#087F96;--pay-accent-clair:#5EACBB;--pay-encre:#ffffff;
  --pay-encre-2:rgba(255,255,255,.84);--pay-encre-3:rgba(255,255,255,.72);--pay-trait:rgba(255,255,255,.12);--pay-trait-2:rgba(255,255,255,.22);
  color-scheme:dark;width:min(500px,100%);max-height:92vh;max-height:min(92svh,100%);display:flex;flex-direction:column;overflow:hidden;
  background:var(--pay-fond);border:1px solid var(--pay-trait);border-radius:16px;
  box-shadow:0 30px 80px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.04);font-family:var(--font-family);color:var(--pay-encre);
  animation:actuPayCarte .2s cubic-bezier(.2,.8,.3,1)}
.actu-pay-head{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:14px 14px 14px 16px;background:var(--pay-fond);border-bottom:1px solid rgba(255,255,255,.08)}
.actu-pay-ico{flex:0 0 auto;display:grid;place-items:center;width:36px;height:36px;border-radius:11px;color:var(--pay-accent-clair);
  background:color-mix(in srgb,var(--pay-accent) 22%,transparent);border:1px solid color-mix(in srgb,var(--pay-accent) 50%,transparent)}
.actu-pay-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.actu-pay-t{font-size:15px;font-weight:800;line-height:1.2;letter-spacing:-.01em;color:var(--pay-encre)}
.actu-pay-s{font-size:12.5px;line-height:1.4;color:var(--pay-encre-3);overflow-wrap:anywhere}
.actu-pay-s b{font-weight:700;color:var(--pay-encre-2)}
.actu-pay-sep{margin:0 .4em}
.actu-pay-m{white-space:nowrap;font-variant-numeric:tabular-nums}
.actu-pay-x{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;border-radius:9px;cursor:pointer;color:var(--pay-encre-2);
  background:transparent;border:1px solid var(--pay-trait-2);transition:background .12s,border-color .12s}
.actu-pay-x:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.32)}
.actu-pay-x:focus-visible{outline:2px solid var(--pay-accent-clair);outline-offset:2px}
.actu-pay-note{flex:0 0 auto;margin:0;padding:10px 16px;font-size:12.5px;line-height:1.45;color:var(--pay-encre-2);border-bottom:1px solid var(--pay-trait);
  background:color-mix(in srgb,var(--pay-accent) 16%,var(--pay-fond))}
.actu-pay-err{flex:0 0 auto;margin:12px 16px;display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.45;padding:9px 11px;border-radius:10px;color:var(--pay-encre-2);background:rgba(240,160,32,.12);border:1px solid rgba(240,160,32,.45)}
.actu-pay-err .iku-ico{flex:0 0 auto;margin-top:2px;color:#F5B544}
/* Le corps défile, seul (overscroll contenu : la page derrière ne bouge pas). La page de Stripe (iframe) y prend toute la largeur et
   la hauteur de son contenu. Tant qu'elle n'a pas peint (data-pret posé par stripeEmbedded.mount, js/app.js), un repère tourne.
   Barre de défilement dans les tons de Stripe (pouce blanc translucide sur le fond de la page de paiement). */
.actu-pay-corps{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  background:var(--pay-fond);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) var(--pay-fond)}
.actu-pay-corps:not(:has(> [data-pret])){min-height:min(440px,60vh);min-height:min(440px,60svh)}
.actu-pay-corps:not(:has(> [data-pret]))::before{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;box-sizing:border-box;border-radius:50%;
  border:2.5px solid color-mix(in srgb,var(--pay-accent-clair) 25%,transparent);border-top-color:var(--pay-accent-clair);animation:actuPayTourne .8s linear infinite}
.actu-pay-stripe{position:relative}
.actu-pay-stripe iframe{display:block;width:100%;border:0}
@media(max-width:560px){
  .actu-pay-back{padding:0;align-items:stretch}
  .actu-pay-card{width:100%;height:100%;max-height:none;border-radius:0;border:0;box-shadow:none;padding-bottom:env(safe-area-inset-bottom);animation:actuPayFond .16s ease}
  .actu-pay-head{padding:12px 12px 12px 14px}
}
@media(prefers-reduced-motion:reduce){.actu-pay-back,.actu-pay-card{animation:none}.actu-pay-corps::before{animation:none}}
/* Lot « changements de formule » (recette à 375 px) : ouverte DEPUIS le hub (« Forfait et missions », sous .fec-overlay), la page de
   paiement avait pour bloc conteneur le verre du hub (backdrop-filter) : hub défilé, sa fenêtre fixe défilait avec lui, à moitié hors
   de l'écran. Elle couvre tout le hub : ce verre est retiré le temps du paiement (même remède que la liseuse, .fec-overlay.tour-open).
   Les boutons flottants (piles du hub, Copilote), peints hors du chargeur, ne passent plus sur la page de Stripe. */
.fec-overlay:has(.actu-pay-back){backdrop-filter:none;-webkit-backdrop-filter:none}
body:has(.actu-pay-back) .fab-stack-r,body:has(.actu-pay-back) .fab-stack-l,body:has(.actu-pay-back) .cop-fab{display:none}

/* Relevé du mois du cabinet (espace pro) */
.rel{display:flex;flex-direction:column;gap:10px;font-family:var(--font-family);color:var(--tx1,#e8eef2)}
.rel-h{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px}
.rel-h h3{margin:0;font-size:16px;font-weight:800;letter-spacing:-.01em}
.rel-mois{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:auto}
.rel-m{padding:5px 11px;border-radius:999px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--tx2,#c2cdd6);background:transparent;border:1px solid var(--bd1,#243240)}
.rel-m:hover{border-color:color-mix(in srgb,var(--brand,#00B1CF) 45%,var(--bd1,#243240))}
.rel-m.is-on{color:var(--brand-contrast,#04222a);background:var(--brand,#00B1CF);border-color:transparent}
.rel-p{margin:0;font-size:12.5px;line-height:1.5;color:var(--tx2,#c2cdd6);max-width:80ch}
.rel-tot{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;padding:10px 12px;border-radius:11px;font-size:13px;color:var(--tx2,#c2cdd6);background:color-mix(in srgb,var(--brand,#00B1CF) 7%,transparent);border:1px solid color-mix(in srgb,var(--brand,#00B1CF) 24%,transparent)}
.rel-tot .rel-num{font-size:17px;color:var(--tx1,#e8eef2)}
.rel-fac{font-size:12px;color:var(--tx2,#c2cdd6)}
.rel-num{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.rel-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid var(--bd1,#243240);border-radius:12px;overflow:hidden}
.rel-c + .rel-c{border-top:1px solid var(--bd1,#243240)}
.rel-c-h{width:100%;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;align-items:baseline;gap:4px 12px;padding:10px 12px;font:inherit;font-size:13px;text-align:left;color:var(--tx1,#e8eef2);background:none;border:0}
button.rel-c-h{cursor:pointer}
button.rel-c-h:hover{background:color-mix(in srgb,var(--tx1,#e8eef2) 4%,transparent)}
.rel-nom{font-weight:700;min-width:0;overflow-wrap:anywhere}
.rel-det{font-size:12px;color:var(--tx2,#c2cdd6);min-width:0}
.rel-lignes{list-style:none;margin:0;padding:4px 12px 10px;display:flex;flex-direction:column;gap:2px}
.rel-lignes li{display:grid;grid-template-columns:52px minmax(0,1fr) auto auto;gap:4px 12px;font-size:12px;color:var(--tx2,#c2cdd6)}
.rel-lignes .rel-num{color:var(--tx1,#e8eef2);font-weight:700}
.rel-lignes li.rel-repris .rel-num{text-decoration:line-through;font-weight:600;color:var(--tx2,#c2cdd6)}
.rel-h4{margin:6px 0 0;font-size:14px;font-weight:800}
.rel-a{display:flex;flex-wrap:wrap;gap:6px 16px;padding:0 12px 10px}
.rel-f .actu-fd-conv{margin:0 12px 10px}
@media(max-width:560px){
  .rel-mois{margin-left:0}
  .rel-c-h{grid-template-columns:minmax(0,1fr) auto}
  .rel-det{grid-column:1 / -1;grid-row:2}
  .rel-lignes li{grid-template-columns:44px minmax(0,1fr) auto}
  .rel-lignes li>span:nth-child(3){display:none}
}

/* ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   VITRINE DES FORMULES (2026-10-02) — préfixe vit-. Démonstration et vrai dossier sans payeur : « Voir avec la formule :
   Reporting · Pilotage · Stratégique » restreint l'AFFICHAGE du hub (Services/VitrineFormule.cs, Shared/VitrineSelecteur.razor).
   Aucune règle :has() (elle ferait restyler toute la page à chaque insertion de nœud) : les états sont des classes posées par le code.
   ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── */

/* ── La barre du sélecteur (2026-10-03, retours d'Arthur sur la barre collée) : TROIS ZONES, le libellé à gauche, les trois segments
   au centre, la phrase de la formule choisie à droite (l'objectif du client, nom en gras, comme les bulles). Même composition collée
   ou non ; l'aide ne s'y ajoute plus (elle doublerait la phrase).
   • .vit-barre est l'élément COLLÉ (position: sticky, top 0 : au BORD HAUT du vrai scrolleur .fec-overlay, aucun espace au-dessus) et
     le conteneur de la requête d'état de défilement (container-type: scroll-state, Chromium 133+). Il prend toute la largeur de la
     colonne, qui est celle de l'en-tête du hub (.recap-bar : mêmes marges). Transparent et sans clic : seule sa peau reçoit le
     pointeur (sans requête d'état, elle reste à 1 100 px et les côtés laissent passer les clics vers le hub).
   • .vit-in est la PEAU (un conteneur ne se style pas par sa propre requête : elle est son enfant). Non collée : 1 100 px, la colonne
     des tuiles. Collée : la largeur de l'en-tête, coins du haut carrés, ombre portée. Hauteur identique dans les deux états.
   • FOND : un DÉGRADÉ des couleurs 1 et 6 de la PALETTE de l'utilisateur (--pal-1 → --pal-6, les six couleurs brutes posées par
     ikuBrand.set et le démarrage d'index.html, jamais par la teinte d'un client piloté ni par la marque blanche ; repli --brand,
     --brand2), opaque (rien ne se lit au travers, image d'ambiance ou non), liseré clair en haut. Interpolé en oklch : la teinte
     tourne au lieu de passer par le gris (Ambre : ambre → bleu, terne en oklab).
   • ENCRE (libellé, phrase, segments) : blanche ou noire selon la luminance du MILIEU des deux couleurs pures (seuil 0,179, celui de
     --brand-contrast), calculée en CSS (couleur relative). Puis les deux bouts s'ÉLOIGNENT de l'encre, de la même quantité pour
     toutes les palettes (--vit-pousse, 25 %) : vers le sombre si elle est blanche (#06141d, la base de --surf-1, en sombre ; #0b1215
     en clair), vers le blanc si elle est noire. 25 % est le minimum où les huit palettes intégrées passent 4,5:1 aux deux bouts, en
     sombre et en clair (calcul : scratchpad vitrine-collee/poussee.js ; la plus juste : Sobre, à droite, 4,6:1).
   • Segments : une piste translucide de la contre-encre ; le choix en pastille d'encre, écrite de la couleur du début du dégradé.
   • La colonne de gauche ne descend jamais sous son libellé (minmax(max-content, 1fr)) : les segments sont centrés dès que la place le
     permet ; la phrase passe sur deux lignes équilibrées, puis s'abrège.
   (Le verre flouté du 03/10 matin est RETIRÉ : sous le scrolleur, qui porte lui-même un backdrop-filter, Chrome ne floutait pas le
   contenu qui défile ; mesuré.) ── */
/* Les JETONS du fond et de l'encre valent aussi pour la barre d'ancres de la page des offres (05/10/2026, offre-fraicheur.css :
   .ofr-ancres, sa peau .ofr-ancres-in) : la même barre, sans rien recopier. */
.vit-barre,.ofr-ancres{--vit-pousse:25%;
  --vit-liser:rgba(255,255,255,.22);--vit-ombre:0 14px 30px -14px rgba(0,0,0,.6),0 3px 8px -3px rgba(0,0,0,.25)}
html[data-theme="light"] .vit-barre,html[data-theme="light"] .ofr-ancres{--vit-ombre:0 12px 26px -12px rgba(15,30,45,.35),0 2px 6px -2px rgba(15,30,45,.12)}
.vit-barre{position:sticky;top:0;z-index:40;container-type:scroll-state;width:100%;box-sizing:border-box;min-width:0;margin:0 0 12px;
  pointer-events:none;font-family:var(--font-family);font-size:12.5px;line-height:1.45}
.vit-in,.ofr-ancres-in{--vit-p1:var(--pal-1,var(--brand));--vit-p6:var(--pal-6,var(--brand2));
  --vit-milieu:color-mix(in oklab,var(--vit-p1),var(--vit-p6));
  --vit-encre:var(--brand-contrast);--vit-contre:var(--brand);--vit-vers:var(--surf-1);
  --vit-g1:color-mix(in oklab,var(--vit-vers) var(--vit-pousse),var(--vit-p1));
  --vit-g2:color-mix(in oklab,var(--vit-vers) var(--vit-pousse),var(--vit-p6))}
.vit-in{position:relative;display:grid;grid-template-columns:minmax(max-content,1fr) auto minmax(0,1fr);align-items:center;column-gap:16px;
  width:min(1100px,100%);box-sizing:border-box;min-width:0;margin:0 auto;padding:5px 14px;border-radius:14px;pointer-events:auto;
  color:var(--vit-encre);background:linear-gradient(90deg in oklch,var(--vit-g1),var(--vit-g2));
  border:1px solid color-mix(in srgb,var(--vit-encre) 14%,transparent);box-shadow:inset 0 1px 0 var(--vit-liser);transition:box-shadow .18s ease}
/* L'encre : blanc si la luminance du milieu est sous 0,179, noir au-dessus ; la contre-encre, l'inverse ; le but de la poussée : le
   blanc quand l'encre est noire, le sombre du thème quand elle est blanche. */
@supports (color: color(from red srgb-linear r g b)){
  .vit-in,.ofr-ancres-in{
    --vit-encre:color(from var(--vit-milieu) srgb-linear clamp(0,(0.179 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000,1) clamp(0,(0.179 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000,1) clamp(0,(0.179 - (0.2126 * r + 0.7152 * g + 0.0722 * b)) * 100000,1));
    --vit-contre:color(from var(--vit-milieu) srgb-linear clamp(0,((0.2126 * r + 0.7152 * g + 0.0722 * b) - 0.179) * 100000,1) clamp(0,((0.2126 * r + 0.7152 * g + 0.0722 * b) - 0.179) * 100000,1) clamp(0,((0.2126 * r + 0.7152 * g + 0.0722 * b) - 0.179) * 100000,1));
    --vit-vers:color(from var(--vit-contre) srgb calc(r + (1 - r) * 0.0235) calc(g + (1 - g) * 0.0784) calc(b + (1 - b) * 0.1137))}
  html[data-theme="light"] .vit-in,html[data-theme="light"] .ofr-ancres-in{--vit-vers:color(from var(--vit-contre) srgb calc(r + (1 - r) * 0.0431) calc(g + (1 - g) * 0.0706) calc(b + (1 - b) * 0.0824))}
}
@container scroll-state(stuck: top){
  .vit-in{width:100%;border-radius:0 0 14px 14px;border-top-color:transparent;box-shadow:inset 0 1px 0 var(--vit-liser),var(--vit-ombre)}
}
/* Vrai dossier sans payeur : la barre suit le bandeau d'actualisation, rattachée à lui (la colonne pose 20 px, le bandeau 12). */
.actu-bandeau + .vit-barre{margin-top:-26px}
.vit-tete{display:inline-flex;align-items:center;gap:8px 10px;justify-self:start;min-width:0;white-space:nowrap}
.vit-barre-ic{display:inline-flex;flex:0 0 auto;color:var(--vit-encre)}
.vit-demo-t{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;white-space:nowrap;color:var(--vit-encre)}
.vit-demo-sep{color:var(--vit-encre)}
.vit-sel-l{flex:0 0 auto;font-weight:700;color:var(--vit-encre);white-space:nowrap}
.vit-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* La phrase de la formule choisie : à droite, deux lignes au plus (équilibrées), fondu court à chaque choix (nouvel élément, @key). */
.vit-phrase{display:flex;justify-content:flex-end;flex:1 1 auto;min-width:0;text-align:right}
.vit-phrase-t{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-width:0;max-width:100%;
  font-size:12.5px;font-weight:500;line-height:1.3;color:var(--vit-encre);text-wrap:balance;animation:vitPhraseIn .2s ease-out}
.vit-phrase-t b{font-weight:800;color:var(--vit-encre)}
@keyframes vitPhraseIn{from{opacity:0}to{opacity:1}}

/* La zone de droite (05/10) : la phrase, puis « Choisir <formule> », bouton cerné de l'encre (le segment allumé, lui, est plein :
   les deux ne se confondent pas) ; au survol, plein d'encre, écrit de la couleur de la fin du dégradé (même contraste). */
.vit-droite{display:flex;align-items:center;justify-content:flex-end;gap:12px;justify-self:stretch;min-width:0}
.vit-choisir{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:6px 12px;border-radius:9px;font-size:12.5px;font-weight:700;
  line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer;color:var(--vit-encre);background:transparent;
  border:1.5px solid color-mix(in srgb,var(--vit-encre) 70%,transparent);transition:background .15s ease,color .15s ease}
.vit-choisir:hover{color:var(--vit-g2);background:var(--vit-encre);text-decoration:none}
.vit-choisir:focus-visible{outline:2px solid var(--vit-encre);outline-offset:2px}
.vit-choisir .iku-ico{flex:0 0 auto}
.vit-choisir-c{display:none}

/* Le groupe radio : une piste translucide de la contre-encre, trois segments de même largeur, cibles confortables ; le choix en
   pastille d'encre, écrit de la couleur du début du dégradé (même contraste que l'encre sur la barre). */
.vit-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;justify-self:center;gap:2px;padding:3px;border-radius:11px;
  background:color-mix(in srgb,var(--vit-contre) 22%,transparent);border:1px solid color-mix(in srgb,var(--vit-encre) 18%,transparent)}
.vit-seg-b{position:relative;min-width:96px;padding:7px 16px;border-radius:8px;border:0;background:none;font:inherit;font-size:13px;font-weight:700;line-height:1.2;
  white-space:nowrap;cursor:pointer;color:var(--vit-encre);transition:background .15s ease,color .15s ease}
.vit-seg-b:hover{background:color-mix(in srgb,var(--vit-encre) 14%,transparent)}
.vit-seg-b.on{color:var(--vit-g1);background:var(--vit-encre)}
.vit-seg-b:focus-visible{outline:2px solid var(--vit-encre);outline-offset:2px}

/* Bulles : l'objectif du client (segments : un vrai élément, pour le nom en gras), « Comprise dans la formule … » (étiquettes, texte
   généré). Survol (pointeur fin) et focus clavier. */
.vit-bulle,.vit-etiq::after{position:absolute;top:calc(100% + 7px);left:50%;z-index:6;width:max-content;max-width:min(260px,80vw);
  padding:6px 9px;border-radius:8px;font-family:var(--font-family);font-size:11.5px;font-weight:600;line-height:1.35;letter-spacing:0;text-align:left;white-space:normal;
  color:var(--tx1,#e8eef2);background:var(--modal-surf,var(--bg1,#121a22));border:1px solid var(--bd1,#243240);box-shadow:0 10px 24px -12px rgba(0,0,0,.5);
  opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,-3px);transition:opacity .14s ease,transform .14s ease,visibility 0s linear .14s}
.vit-etiq::after{content:attr(data-desc)}
.vit-bulle{font-weight:500}
.vit-bulle b{font-weight:800}
.vit-seg-b:first-child .vit-bulle{left:0;transform:translate(0,-3px)}
.vit-seg-b:last-child .vit-bulle{left:auto;right:0;transform:translate(0,-3px)}
@media(hover:hover){
  .vit-seg-b:hover .vit-bulle,.vit-etiq:hover::after{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
  .vit-seg-b:first-child:hover .vit-bulle,.vit-seg-b:last-child:hover .vit-bulle,.vit-etiq:hover::after{transform:none}
}
.vit-seg-b:focus-visible .vit-bulle,.vit-etiq:focus-visible::after{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
.vit-seg-b:first-child:focus-visible .vit-bulle,.vit-seg-b:last-child:focus-visible .vit-bulle,.vit-etiq:focus-visible::after{transform:none}
/* La phrase de droite dit déjà l'objectif de la formule choisie : pas de bulle sur son segment tant qu'elle est là. */
@media(min-width:901px){ .vit-seg-b.on .vit-bulle{display:none} }

/* La légende (900 px et moins) : « Démonstration » et l'aide, sous la barre ; elle défile, la barre colle. */
.vit-legende{display:none;margin:-20px 0 4px;width:min(1100px,100%);box-sizing:border-box;padding:0 4px;font-family:var(--font-family);
  font-size:12px;line-height:1.4;color:var(--mut2,#8a97a2);text-align:center}
.vit-legende b{color:var(--tx1,#e8eef2)}
.vit-legende .vit-demo-sep{margin:0 6px}
@media(max-width:900px){ .vit-phrase{display:none} .vit-legende{display:block} .vit-barre-demo .vit-demo-t{display:none} .vit-in:not(.vit-avec-choix) > .vit-droite{display:none} }
@media(max-width:560px){
  .vit-in{grid-template-columns:auto minmax(0,1fr);column-gap:8px;padding:5px 6px 5px 10px}
  .vit-sel-l{display:none}
  .vit-seg{justify-self:stretch;grid-auto-columns:minmax(0,1fr);min-width:0}
  .vit-seg-b{min-width:0;padding:7px 4px;font-size:12px;text-overflow:ellipsis;overflow:hidden}
  .vit-bulle{display:none}   /* sur téléphone : la légende dit ce que fait la barre ; pas de bulle qui couvre le hub après un toucher */
}
/* « Choisir <formule> » (05/10) : la phrase et le bouton ne tiennent ensemble qu'au-delà de 1 120 px (en dessous, la phrase serait
   tronquée) : le bouton seul. À 800 px et moins, le libellé s'efface (la légende, dessous, dit ce que fait la barre), le bouton passe
   en troisième colonne et ne dit plus que « Choisir » (le segment allumé dit la formule ; le nom complet reste dans l'aria-label).
   Mesuré : à 640 px, le bouton entier chevauchait les segments ; à 390 px, « Stratégique » tient (73 px sur 74). */
@media(max-width:1120px){ .vit-avec-choix .vit-phrase{display:none} }
@media(max-width:800px){
  .vit-in.vit-avec-choix{grid-template-columns:auto minmax(0,1fr) auto;column-gap:8px}
  .vit-avec-choix .vit-sel-l{display:none}
  .vit-avec-choix .vit-choisir{gap:4px;padding:6px 9px;font-size:12px}
  .vit-avec-choix .vit-choisir-l{display:none}
  .vit-avec-choix .vit-choisir-c{display:inline}
}

/* ── Les cartes VERROUILLÉES hors formule : elles gardent leur place. La carte n'est pas cliquable (garde du clic, hors de l'ordre de
   Tab, aria-disabled) et son contenu est INERTE (enveloppe .vit-corps en display: contents, inert : ni clic, ni Tab, ni survol) ;
   contenu adouci (titre lisible, au moins 3:1), voile léger vers le bas, liseré de la marque ; l'étiquette (« Pilotage »,
   « Stratégique ») pend du bord haut, nette : c'est un petit bouton qui bascule le sélecteur sur sa formule. ── */
.vit-corps{display:contents}
/* La carte elle-même ne réagit plus au pointeur (ni survol ni clic) ; seule son étiquette le reprend. */
.vit-verrou{cursor:default}
.intent-card.vit-verrou{pointer-events:none;border-color:color-mix(in srgb,var(--brand,#00B1CF) 24%,var(--o8,rgba(255,255,255,.08)))}
.intent-card.vit-verrou::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,transparent 0,transparent 34%,color-mix(in srgb,var(--bg1,#121a22) 38%,transparent) 100%)}
.vit-verrou .vit-corps > *{opacity:.4;filter:grayscale(.7)}
.vit-verrou .vit-corps > .intent-card-header{opacity:.78;filter:grayscale(.5)}
.intent-card-banner.vit-verrou > *{opacity:.5;filter:grayscale(.6)}
.intent-card-banner.vit-verrou .intent-card-banner-body{padding-top:24px}
/* Fondu de l'état (≈ 200 ms) quand la vitrine est là : rien ne bouge de place, l'opacité seule. */
.vit-corps > *,.intent-card-banner > *{transition:opacity .2s ease,filter .2s ease}

/* L'étiquette-bouton : 40 px de haut au toucher, la languette visible en fait 20 ; au-dessus du voile. */
.vit-etiq{position:absolute;top:0;right:12px;z-index:5;pointer-events:auto;display:flex;align-items:flex-start;justify-content:flex-end;min-width:44px;height:40px;
  margin:0;padding:0;border:0;background:none;cursor:pointer;font:inherit;-webkit-tap-highlight-color:transparent;animation:vitEtiqIn .2s ease-out}
.vit-etiq-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px 4px;border-radius:0 0 8px 8px;font-family:var(--font-family);font-size:10.5px;
  font-weight:800;letter-spacing:.02em;line-height:1.25;white-space:nowrap;color:var(--brand-contrast,#04222a);background:var(--brand,#00B1CF);
  box-shadow:0 4px 12px -6px color-mix(in srgb,var(--brand,#00B1CF) 70%,transparent);transition:filter .14s ease,padding .14s ease}
.vit-etiq-pill .iku-ico{color:inherit}
.vit-etiq:hover .vit-etiq-pill{filter:brightness(1.08);padding-bottom:6px}
.vit-etiq:focus-visible{outline:none}
.vit-etiq:focus-visible .vit-etiq-pill{outline:2px solid var(--brand-strong,var(--brand,#00B1CF));outline-offset:2px}
.vit-etiq::after{left:auto;right:0;transform:translate(0,-3px)}
/* Étiquette de la bannière « Cash à relancer » : posée dans la rangée, en haut à droite (la bannière y est seule). */
.intent-banners-row.vit-souple{position:relative}
.vit-etiq-rangee{right:14px}
@keyframes vitEtiqIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* ── Aucun trou : une rangée dont un élément est masqué partage sa largeur entre ceux qui restent (modèle du mode rendez-vous). ── */
.intent-banners-row.vit-souple{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
@media(max-width:768px){.intent-banners-row.vit-souple{grid-auto-flow:row}}
.intent-allviews .intent-analyses-row.vit-souple{display:flex;flex-wrap:wrap}
.intent-allviews .intent-analyses-row.vit-souple > .intent-analyses-btn{flex:1 1 calc(25% - 8px);min-width:0}
@media(max-width:1100px){.intent-allviews .intent-analyses-row.vit-souple > .intent-analyses-btn{flex-basis:calc(50% - 5px)}}
@media(max-width:640px){.intent-allviews .intent-analyses-row.vit-souple > .intent-analyses-btn{flex-basis:100%}}

/* ── Reporting : à la place de « Que voulez-vous explorer ? », une ligne sobre sur ce qu'ouvrent Pilotage et Stratégique. ── */
.vit-explorer{margin:0;max-width:780px;text-align:center;font-family:var(--font-family);font-size:13.5px;line-height:1.55;color:var(--tx2,#c2cdd6);
  text-wrap:pretty;animation:vitEtiqIn .2s ease-out}
.vit-explorer b{color:var(--tx1,#e8eef2)}

/* ── Le changement de formule : un fondu court de la vue (js/app.js, ikuVitrine.basculer : transition de vue, classe vit-vt). ── */
html.vit-vt::view-transition-old(root),html.vit-vt::view-transition-new(root){animation-duration:.2s;animation-timing-function:ease}

@media(prefers-reduced-motion:reduce){
  .vit-in,.vit-seg-b,.vit-bulle,.vit-etiq::after,.vit-etiq-pill,.vit-corps > *,.intent-card-banner > *{transition:none}
  .vit-etiq,.vit-explorer,.vit-phrase-t{animation:none}
}
