/* Motion des menus (business) - voir index.html
   Pages : marche, boutique, finance, projets, clubs, business, actions, obligations, etf, soutien, params.
   Regles :
   - les animations d'ENTREE ne jouent que sous body.vue-entree (1,6 s a l'arrivee sur la page),
     sinon elles rejoueraient a chaque rafraichissement silencieux ;
   - tout est scoppe par body[data-vue], jamais en vie privee (mode-perso), jamais avec anim-off ;
   - seulement transform et opacity (plus un reflet de texte joue une fois) ;
   - le relief 3D au survol n'existe qu'a la souris (hover + pointeur fin), pilote par motion-business.js
     via les variables --mb-rx / --mb-ry (inclinaison) et --mb-mx / --mb-my (position du reflet). */

@media (prefers-reduced-motion: no-preference) {

/* ---------- Images cles communes ---------- */
@keyframes mbMonte { from { opacity: 0; transform: translateY(14px) } to { opacity: 1; transform: none } }
@keyframes mbDonne { from { opacity: 0; transform: perspective(900px) rotateX(16deg) translateY(24px) scale(.96) } to { opacity: 1; transform: none } }
@keyframes mbGlisse { from { opacity: 0; transform: translateX(-12px) } to { opacity: 1; transform: none } }
@keyframes mbPop { 0% { opacity: 0; transform: scale(.4) } 60% { opacity: 1; transform: scale(1.14) } 100% { opacity: 1; transform: scale(1) } }
@keyframes mbJauge { from { transform: scaleX(0) } to { transform: scaleX(1) } }
@keyframes mbDezoom { from { transform: scale(1.12) } to { transform: scale(1) } }
@keyframes mbBalaye { from { transform: translateX(-130%) skewX(-18deg) } to { transform: translateX(330%) skewX(-18deg) } }
@keyframes mbTexteReflet { from { background-position: 100% 0 } to { background-position: 0% 0 } }
@keyframes mbTrace { to { stroke-dashoffset: 0 } }
@keyframes mbCarte { from { opacity: 0; transform: perspective(1000px) rotateX(-10deg) translateY(18px) scale(.97) } to { opacity: 1; transform: none } }

/* ---------- Jauges : une barre de progression se remplit depuis la gauche a l'arrivee ----------
   (fair-play financier du marche, prestige des grands projets) */
body.vue-entree:is([data-vue="marche"],[data-vue="projets"]):not(.mode-perso):not(.anim-off) .content .card [style*="overflow:hidden"] > [style*="height:100%"] {
  transform-origin: left center; animation: mbJauge 1s cubic-bezier(.2,.8,.2,1) .25s both;
}

/* Cascade generique des cartes de premier niveau (toutes les pages du groupe) */
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) .content > .card {
  animation: mbMonte .5s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) .content > .card:nth-child(2) { animation-delay: .06s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) .content > .card:nth-child(3) { animation-delay: .12s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) .content > .card:nth-child(4) { animation-delay: .18s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) .content > .card:nth-child(n+5) { animation-delay: .24s }

/* =====================================================================
   MARCHE DES TRANSFERTS : les fiches joueurs sont "distribuees" comme des cartes,
   la note surgit, et au survol la fiche s'incline vers la souris avec un reflet.
   ===================================================================== */
body.vue-entree[data-vue="marche"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc {
  animation: mbDonne .6s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="marche"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc .note-b {
  animation: mbPop .5s cubic-bezier(.3,1.4,.5,1) .35s both;
}

/* =====================================================================
   MARCHE DES CLUBS : les ecussons arrivent en vague, les offres de rachat en cartes.
   ===================================================================== */
body.vue-entree[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .mo-cl > .mo-club {
  animation: mbDonne .5s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc {
  animation: mbDonne .6s cubic-bezier(.2,.8,.2,1) both;
}

/* Decalages de la cascade (cartes joueurs, clubs, instruments, projets) */
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(2) { animation-delay: .04s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(3) { animation-delay: .08s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(4) { animation-delay: .12s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(5) { animation-delay: .16s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(6) { animation-delay: .2s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(7) { animation-delay: .24s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(8) { animation-delay: .28s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(9) { animation-delay: .32s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(10) { animation-delay: .36s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(11) { animation-delay: .4s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(12) { animation-delay: .44s }
body.vue-entree:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="params"]):not(.mode-perso):not(.anim-off) :is(.grid > .pc, .mo-cl > .mo-club, .grid > .instr, .bq-rayons > .bq-art):nth-child(n+13) { animation-delay: .48s }

/* =====================================================================
   BOUTIQUE : la vitrine se devoile (photo qui recule, un reflet balaie l'enseigne),
   les produits arrivent en rayon, et la photo du produit s'avance au survol.
   ===================================================================== */
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-hero > img {
  animation: mbDezoom 1.5s cubic-bezier(.2,.7,.2,1) both;
}
body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-hero::after {
  content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 34%; z-index: 1; pointer-events: none;
  background: linear-gradient(90deg, transparent, #ffe9a84d 40%, #fff6d880 50%, #ffe9a84d 60%, transparent);
  transform: translateX(-130%) skewX(-18deg); opacity: 0;
}
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-hero::after {
  opacity: 1; animation: mbBalaye 1.1s ease-in-out .25s both;
}
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-hero .kpi {
  animation: mbMonte .5s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-hero .kpi:nth-child(2) { animation-delay: .07s }
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-hero .kpi:nth-child(3) { animation-delay: .14s }
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-rayons > .bq-art {
  animation: mbDonne .55s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-rupt {
  animation: mbPop .45s cubic-bezier(.3,1.4,.5,1) .5s both;
}
body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-art > .bq-img img {
  transition: transform .45s cubic-bezier(.2,.8,.2,1);
}

/* =====================================================================
   FINANCES : le grand livre s'imprime ligne a ligne ; les montants defilent (JS).
   ===================================================================== */
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr {
  animation: mbGlisse .4s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(2) { animation-delay: .04s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(3) { animation-delay: .08s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(4) { animation-delay: .12s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(5) { animation-delay: .16s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(6) { animation-delay: .2s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(7) { animation-delay: .24s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(8) { animation-delay: .28s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(9) { animation-delay: .32s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card table tr:nth-child(n+10) { animation-delay: .36s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content .card .ico-dot {
  display: inline-block; animation: mbPop .4s cubic-bezier(.3,1.4,.5,1) .3s both;
}
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content > .grid > .card:nth-child(2) { animation-delay: .08s }
body.vue-entree[data-vue="finance"]:not(.mode-perso):not(.anim-off) .content > .grid > .card {
  animation: mbMonte .5s cubic-bezier(.2,.8,.2,1) both;
}

/* =====================================================================
   GRANDS PROJETS : les chantiers se devoilent comme des maquettes (legere bascule),
   le prix en or recoit un reflet, et au survol la carte s'incline et la photo glisse
   en sens inverse (effet de profondeur).
   ===================================================================== */
body.vue-entree[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr {
  animation: mbCarte .6s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr > img {
  animation: mbDezoom 1.4s cubic-bezier(.2,.7,.2,1) both;
}
body.vue-entree[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .instr b[style*="--gold"] {
  background: linear-gradient(100deg, currentColor 44%, #fff8dc 50%, currentColor 56%) 0 0 / 250% 100% no-repeat;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  animation: mbTexteReflet 1.2s ease-in-out .45s both;
}
body[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .instr > img {
  transition: transform .5s cubic-bezier(.2,.8,.2,1);
}

/* =====================================================================
   ACTIONS / OBLIGATIONS / ETF : les instruments arrivent en cascade et leur courbe
   se dessine de gauche a droite (trace pose par le JS) ; legere levee au survol.
   Pas d'inclinaison 3D ici : chaque carte porte un curseur a faire glisser.
   ===================================================================== */
body.vue-entree:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]):not(.mode-perso):not(.anim-off) .content > .grid > .instr {
  animation: mbMonte .5s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]):not(.mode-perso):not(.anim-off) .instr .hd .rb {
  animation: mbPop .45s cubic-bezier(.3,1.4,.5,1) .3s both;
}
body:not(.mode-perso):not(.anim-off) polyline.mb-trace {
  stroke-dasharray: var(--mb-len); stroke-dashoffset: var(--mb-len);
  animation: mbTrace 1.1s cubic-bezier(.4,0,.2,1) .2s forwards;
}

/* =====================================================================
   BUSINESS : les montants defilent (JS), les contrats glissent en place.
   ===================================================================== */
body.vue-entree[data-vue="business"]:not(.mode-perso):not(.anim-off) .content > .card > .rowb {
  animation: mbGlisse .45s cubic-bezier(.2,.8,.2,1) .15s both;
}
body.vue-entree[data-vue="business"]:not(.mode-perso):not(.anim-off) .content > .card > .rowb + .rowb { animation-delay: .22s }
body.vue-entree[data-vue="business"]:not(.mode-perso):not(.anim-off) .content > .card > .rowb + .rowb + .rowb { animation-delay: .29s }
body.vue-entree[data-vue="business"]:not(.mode-perso):not(.anim-off) .content > .card > .rowb + .rowb + .rowb + .rowb { animation-delay: .36s }

/* =====================================================================
   SOUTIEN : la carte se pose, le titre recoit un seul reflet.
   (Rien sur les boutons de don ni sur le passage vers le paiement.)
   ===================================================================== */
body.vue-entree[data-vue="soutien"]:not(.mode-perso):not(.anim-off) .content > .card {
  animation: mbCarte .7s cubic-bezier(.2,.8,.2,1) both;
}
body.vue-entree[data-vue="soutien"]:not(.mode-perso):not(.anim-off) .content > .card > div:first-child > div:first-child {
  background: linear-gradient(100deg, currentColor 44%, #ffffff 50%, currentColor 56%) 0 0 / 250% 100% no-repeat;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  animation: mbTexteReflet 1.3s ease-in-out .35s both;
}

/* =====================================================================
   RELIEF 3D AU SURVOL (souris uniquement)
   ===================================================================== */
@media (hover: hover) and (pointer: fine) {
  body[data-vue="marche"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc,
  body[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc,
  body[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .mo-cl > .mo-club,
  body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-rayons > .bq-art,
  body[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr {
    position: relative;
    transition: transform .18s ease-out, border-color .15s, box-shadow .25s;
  }
  body[data-vue="marche"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc:hover,
  body[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc:hover,
  body[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .mo-cl > .mo-club:hover,
  body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-rayons > .bq-art:hover:not(:focus-within),
  body[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr:hover {
    transform: perspective(900px) rotateX(var(--mb-rx, 0deg)) rotateY(var(--mb-ry, 0deg)) translateY(-3px);
    box-shadow: 0 18px 36px -14px #000c;
  }
  /* reflet qui suit la souris : une tache de lumiere douce, visible au survol seulement */
  body[data-vue="marche"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc::after,
  body[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc::after,
  body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-rayons > .bq-art::after,
  body[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr::after {
    content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 2;
    background: radial-gradient(circle at var(--mb-mx, 50%) var(--mb-my, 0%), #ffffff1c, #ffffff06 35%, transparent 60%);
    opacity: 0; transition: opacity .25s;
  }
  body[data-vue="marche"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc:hover::after,
  body[data-vue="clubs"]:not(.mode-perso):not(.anim-off) .content > .grid > .pc:hover::after,
  body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-rayons > .bq-art:hover:not(:focus-within)::after,
  body[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr:hover::after {
    opacity: 1;
  }
  /* profondeur : la photo du projet glisse a l'oppose de l'inclinaison */
  body[data-vue="projets"]:not(.mode-perso):not(.anim-off) .content .card > .grid > .instr:hover > img {
    transform: scale(1.08) translate(calc(var(--mb-fx, 0) * -14px), calc(var(--mb-fy, 0) * -10px));
  }
  /* la photo du produit s'avance */
  body[data-vue="boutique"]:not(.mode-perso):not(.anim-off) .bq-art:hover > .bq-img img { transform: scale(1.07) }
  /* instruments financiers : simple levee (curseurs a l'interieur) */
  body:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]):not(.mode-perso):not(.anim-off) .content > .grid > .instr {
    transition: transform .2s ease-out, border-color .2s;
  }
  body:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]):not(.mode-perso):not(.anim-off) .content > .grid > .instr:hover:not(:focus-within) {
    transform: translateY(-3px); border-color: #ffffff2e;
  }
}

} /* fin prefers-reduced-motion: no-preference */

/* =====================================================================
   THEMES DES MENUS (30/09/2026) - groupe ARGENT & AFFAIRES
   Le socle (index.html, « THEMES DES MENUS ») pose body.menu-theme, l'en-tete et le decor ;
   ici : le reteint des composants peints en dur.
   On garde les couleurs qui ont un SENS (hausse/baisse, benefice/perte, jauges d'etat).
   ===================================================================== */

/* Palettes par menu retirees le 30/09 (consigne du proprietaire) : un seul theme pour
   tous les menus, celui de l'accueil, impose par le socle. Ici on n'utilise plus que ses
   variables (--card, --vp-carte-bas, --line, --vp-accent, --muted, --vp-bas). */

/* ---------- Reteint commun aux 11 menus du groupe ---------- */
/* derives de l'accent : bouton « or » de theme.css, lueurs, alertes */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]){
  --accent-deep:color-mix(in srgb,var(--vp-accent) 62%,#000);--accent-glow:color-mix(in srgb,var(--vp-accent) 33%,transparent);
  --mb-teinte:color-mix(in srgb,var(--vp-bas) 72%,var(--card));
}
/* theme.css peint .card en bleu marine avec !important : le socle ne suffit pas, on reprend la main */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content .card{
  background:linear-gradient(180deg,var(--card),var(--vp-carte-bas))!important;border-color:var(--line)!important;
  box-shadow:inset 0 1px 0 #ffffff0a,0 12px 30px -12px #000000b0!important}
/* une bordure coloree posee en ligne sur une carte garde son sens (alerte, rachat en cours) */
body.menu-theme:is([data-vue="marche"],[data-vue="clubs"],[data-vue="projets"],[data-vue="boutique"]) .content .card[style*="border-color:var(--green)"]{border-color:color-mix(in srgb,var(--green) 55%,var(--line))!important}
body.menu-theme:is([data-vue="marche"],[data-vue="clubs"],[data-vue="projets"],[data-vue="business"]) .content .card[style*="border-color:var(--gold)"]{border-color:color-mix(in srgb,var(--vp-accent) 55%,var(--line))!important}
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content :is(.instr,.pc,.jrow){
  background:linear-gradient(180deg,color-mix(in srgb,var(--card) 88%,#fff 3%),var(--vp-carte-bas))!important;border-color:var(--line)}
/* boutons neutres : plus de bleu marine, un bouton teinte par l'ambiance */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content .btn:not(.green):not(.red):not(.gold):not(.play):not(.watch):not(.bq-verrou):not(.primary):not(.lux-btn-or):not([style*="background:"]){
  background:linear-gradient(180deg,color-mix(in srgb,var(--card) 78%,var(--vp-accent) 14%),color-mix(in srgb,var(--vp-carte-bas) 88%,var(--vp-accent) 8%))!important;
  border-color:color-mix(in srgb,var(--vp-accent) 26%,transparent)!important;color:#fff8ef}
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content .btn.bq-verrou{
  background:color-mix(in srgb,var(--vp-bas) 70%,var(--card))!important;color:var(--muted)!important;border-color:var(--line)!important}
/* bouton de validation : l'accent du menu au lieu du vert fluo (hors Bourse, ou vert = acheter) */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="soutien"],[data-vue="params"]) .content .btn.green{
  background:linear-gradient(180deg,color-mix(in srgb,var(--vp-accent) 86%,#fff),color-mix(in srgb,var(--vp-accent) 72%,#000))!important;
  color:#17120b!important;border:0!important;box-shadow:inset 0 1px 0 #ffffff80,0 6px 16px -4px var(--accent-glow)!important}
/* refus / vente : on garde le rouge (il dit « non »), mais moins criard */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="soutien"],[data-vue="params"]) .content .btn.red{
  background:linear-gradient(180deg,#c9606c,#8f3441)!important;color:#fff4f2!important;box-shadow:inset 0 1px 0 #ffffff40,0 6px 16px -6px #8f344199!important}
body.menu-theme:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]) .content .btn.green{background:linear-gradient(180deg,#5fcf98,#2f9368)!important;box-shadow:inset 0 1px 0 #ffffff60,0 5px 14px -5px #2f936899!important}
body.menu-theme:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]) .content .btn.red{background:linear-gradient(180deg,#cf6875,#96394a)!important;box-shadow:inset 0 1px 0 #ffffff40,0 5px 14px -5px #96394a99!important}
/* pastilles, lignes de caracteristiques, champs : fond de l'ambiance au lieu du bleu nuit */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content :is(.chip,.car){background:var(--mb-teinte)}
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content .kpi{background:color-mix(in srgb,var(--vp-bas) 45%,transparent);border-color:var(--line)}
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content .mo-club{background:color-mix(in srgb,var(--card) 70%,transparent);border-color:var(--line)}
/* piste des jauges (fair-play, prestige) */
body.menu-theme:is([data-vue="marche"],[data-vue="projets"],[data-vue="boutique"],[data-vue="finance"]) .content [style*="background:#0b1024"]{background:var(--mb-teinte)!important}
/* consigne du proprietaire : l'empattement seulement sur le grand titre de scene ;
   les titres de section gardent la police d'origine du jeu */
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) h3.sec{
  font-family:var(--font-disp);font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase}
body.menu-theme:is([data-vue="marche"],[data-vue="boutique"],[data-vue="finance"],[data-vue="projets"],[data-vue="clubs"],[data-vue="business"],[data-vue="actions"],[data-vue="obligations"],[data-vue="etf"],[data-vue="soutien"],[data-vue="params"]) .content .card > h3:not(.sec){color:#fff8ef}

/* ---------- Boutique : vitrine aux couleurs de l'accueil ---------- */
body.menu-theme[data-vue="boutique"] .bq-hero{border-color:color-mix(in srgb,var(--vp-accent) 35%,transparent)!important}
body.menu-theme[data-vue="boutique"] .bq-hero::before{background:linear-gradient(90deg,color-mix(in srgb,var(--vp-bas) 95%,transparent) 0%,color-mix(in srgb,var(--vp-bas) 80%,transparent) 50%,color-mix(in srgb,var(--vp-bas) 45%,transparent) 100%)}
body.menu-theme[data-vue="boutique"] .bq-hero .kpi{background:color-mix(in srgb,var(--vp-bas) 72%,transparent);border-color:color-mix(in srgb,var(--vp-accent) 16%,transparent)}
body.menu-theme[data-vue="boutique"] .bq-kick{color:var(--vp-accent)}
body.menu-theme[data-vue="boutique"] .bq-tabs{background:var(--mb-teinte);border-color:var(--line)}
body.menu-theme[data-vue="boutique"] .bq-tab{color:var(--muted)}
body.menu-theme[data-vue="boutique"] .bq-tab:hover{color:#fff8ef;background:color-mix(in srgb,var(--vp-accent) 8%,transparent)}
body.menu-theme[data-vue="boutique"] .bq-tab.on{background:linear-gradient(135deg,color-mix(in srgb,var(--vp-accent) 88%,#fff),color-mix(in srgb,var(--vp-accent) 70%,#000));color:#1a1408;box-shadow:0 4px 14px var(--accent-glow)}
body.menu-theme[data-vue="boutique"] .bq-art{background:linear-gradient(135deg,var(--card),var(--vp-carte-bas));border-color:var(--line)}
body.menu-theme[data-vue="boutique"] .bq-art > .bq-img{background:var(--vp-bas)}

/* ---------- Grands projets : plan d'architecte (quadrillage tres discret) ---------- */
body.menu-theme[data-vue="projets"] .content{background-image:linear-gradient(color-mix(in srgb,var(--muted) 5%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--muted) 5%,transparent) 1px,transparent 1px);background-size:32px 32px}
body.menu-theme[data-vue="projets"] .content .instr [style*="rgba(11,16,32"]{background:linear-gradient(100deg,color-mix(in srgb,var(--vp-bas) 93%,transparent) 0%,color-mix(in srgb,var(--vp-bas) 72%,transparent) 42%,color-mix(in srgb,var(--vp-bas) 32%,transparent) 100%)!important}

/* ---------- Marche des clubs ---------- */
body.menu-theme[data-vue="clubs"] .content .card[style*="border-color:var(--green)"]{border-color:color-mix(in srgb,var(--vp-accent) 40%,var(--line))!important}
body.menu-theme[data-vue="clubs"] .content [style*="background:#4db8ff22"]{background:color-mix(in srgb,var(--vp-accent) 12%,transparent)!important;border-color:color-mix(in srgb,var(--vp-accent) 33%,transparent)!important}
body.menu-theme[data-vue="clubs"] .content .mo-club:hover{border-color:color-mix(in srgb,var(--vp-accent) 40%,var(--line))}

/* ---------- Bourse : piste neutre du curseur au fond de l'accueil (vendre rouge / investir vert gardes) ---------- */
body.menu-theme:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]) .content .crj-bar{background:linear-gradient(90deg,#b9364a 0%,#7d2a35 44%,var(--line) 49%,#e8edf7 50%,var(--line) 51%,#1f6d3f 56%,#22c55e 100%)}
body.menu-theme:is([data-vue="actions"],[data-vue="obligations"],[data-vue="etf"]) .content .crj-bar[data-achatseul]{background:linear-gradient(90deg,var(--mb-teinte) 0%,var(--mb-teinte) 49%,#e8edf7 50%,var(--line) 51%,#1f6d3f 56%,#22c55e 100%)}
/* taux d'une obligation : une etiquette a l'accent, ce n'est pas une hausse */
body.menu-theme[data-vue="obligations"] .content .instr .rb:not([style]){background:color-mix(in srgb,var(--vp-accent) 15%,transparent);color:var(--vp-accent);border:1px solid color-mix(in srgb,var(--vp-accent) 33%,transparent)}

/* ---------- Soutien (on ne touche qu'aux couleurs, pas au passage vers le paiement) ---------- */
body.menu-theme[data-vue="soutien"] .content .card > div:first-child > div:first-child{color:var(--vp-accent)!important}
body.menu-theme[data-vue="soutien"] .content [style*="color:#cfe0ff"]{color:#fff8ef!important}
body.menu-theme[data-vue="soutien"] .content :is([style*="color:#b9c4e0"],[style*="color:#93a3c4"]){color:var(--muted)!important}
body.menu-theme[data-vue="soutien"] .content [style*="background:rgba(255,255,255,.05)"]{background:color-mix(in srgb,var(--vp-accent) 5%,transparent)!important;border-color:color-mix(in srgb,var(--vp-accent) 20%,transparent)!important}
body.menu-theme[data-vue="soutien"] .content .btn.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--vp-accent) 88%,#fff),color-mix(in srgb,var(--vp-accent) 70%,#000))!important;color:#1a1408!important;border:0!important}

/* ---------- Parametres ---------- */
body.menu-theme[data-vue="params"] .content .card[style*="#16224a"]{border-color:color-mix(in srgb,var(--vp-accent) 35%,var(--line))!important}
body.menu-theme[data-vue="params"] .content .btn[style*="background:var(--ciel)"]{color:#1a1408!important}

/* ---------- Photos de decor : etalonnees vers le bleu nuit et or de l'accueil ----------
   Filtre fort sur les photos de decor (vitrine, chantiers), leger sur les produits. */
body.menu-theme[data-vue="boutique"] .bq-hero > img{filter:saturate(.6) sepia(.25) hue-rotate(185deg) brightness(.75)}
body.menu-theme[data-vue="boutique"] .bq-art > .bq-img img{filter:saturate(.95) brightness(.97)}
body.menu-theme[data-vue="projets"] .content .instr > img{filter:saturate(.6) sepia(.25) hue-rotate(185deg) brightness(.75)}

/* =====================================================================================
   GRANDS PROJETS : TOUT L'ECRAN EN NOIR ET OR (02/10/2026, Ju : « la decoration doit prendre
   tout l'ecran quand on est dans grands projets, comme dans le Ballon d'Or »). Meme palette
   que la galerie des collections de la vie privee ; plus specifique que le theme unique des
   menus (body.menu-theme, index.html), donc il passe devant. La galerie perd son cadre : c'est
   la page entiere qui devient la salle d'exposition.
   ===================================================================================== */
body.menu-theme[data-vue="projets"]{--vp-haut:#2a2110!important;--vp-milieu:#15110a!important;--vp-bas:#07070a!important;--card:#1b1710!important;--card2:#1b171080!important;--vp-carte-bas:#0e0c09!important;--bg:#07070a!important;--bg2:#15110a!important;--line:#4a3c20!important;--muted:#c9b78f!important;--ciel:#e9cf8f!important;--vp-accent:#e9cf8f!important;--blue:#e9cf8f!important;--vp-l1:rgba(212,175,95,.22)!important;--vp-l2:rgba(160,120,60,.14)!important;--vp-top1:#1a140a!important;--vp-top2:#07070af2!important;--txt:#f4ead2!important;--gold:#e9cf8f!important}
body.menu-theme[data-vue="projets"]{background:linear-gradient(180deg,#2a2110 0%,#15110a 35%,#07070a 100%) fixed}
body.menu-theme[data-vue="projets"] .topbar{background:linear-gradient(90deg,#1a140a,#07070a)!important;border-bottom-color:#4a3c20!important}
body.menu-theme[data-vue="projets"] #content .lux-page{background:transparent;border-color:transparent;margin:0;padding-left:0;padding-right:0}
