/* ==========================================================================
   Fidelyxa — page publique
   Chargé en dernier : styles.css et liquid-glass.css ne servent plus qu'aux
   modales et à la démo du tableau de bord. Tout le site public vit ici,
   sous le préfixe .fx-
   ========================================================================== */

:root{
  --fx-green:#0f8f83;          /* vert principal de la marque */
  --fx-green-ui:#0d8378;       /* boutons pleins : même teinte, contraste AA avec le blanc */
  --fx-green-text:#0a6f66;     /* texte vert sur fond clair */
  --fx-deep:#052f2b;
  --fx-deep-2:#031f1c;
  --fx-mint:#e2f3ef;
  --fx-mint-2:#c9e9e2;
  --fx-paper:#f6faf8;
  --fx-white:#ffffff;
  --fx-ink:#0f201d;
  --fx-soft:#44605a;
  --fx-line:rgba(15,32,29,.13);
  --fx-gold:#f4b73f;
  --fx-gold-ink:#5c3d00;

  --fx-display:'Bricolage Grotesque','Avenir Next','Segoe UI',system-ui,sans-serif;
  --fx-text:'Figtree','Segoe UI',system-ui,sans-serif;

  --fx-wrap:min(1200px,calc(100% - 64px));
  --fx-header-h:72px;
  --fx-ease:cubic-bezier(.22,1,.36,1);
}

/* --- Base : on neutralise les anciens décors globaux ------------------- */
html,body.fx{background:var(--fx-paper)!important}
body.fx{margin:0;min-height:100vh;min-height:100svh;overflow-x:clip}
body.fx::before,body.fx::after{display:none!important}
[hidden]{display:none!important}
html{scroll-padding-top:calc(var(--fx-header-h) + 16px)}

.fx-root{
  font-family:var(--fx-text);
  font-size:1.0625rem;
  line-height:1.6;
  letter-spacing:0;
  color:var(--fx-ink);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.fx-root *,.fx-root *::before,.fx-root *::after{box-sizing:border-box}
:where(.fx-root) :where(h1,h2,h3,p,ul,ol,dl,dd){margin:0}
:where(.fx-root) :where(ul,ol){padding:0;list-style:none}
.fx-root button{font-family:inherit}
/* Remove the browser's touch flash; keyboard focus remains visible below. */
body.fx{-webkit-tap-highlight-color:transparent}
.fx-root :focus-visible{outline:3px solid var(--fx-green);outline-offset:3px;border-radius:6px}
.fx-on-dark :focus-visible{outline-color:#fff}

.fx-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.fx-wrap{width:var(--fx-wrap);margin-inline:auto}
.fx-icon{width:1.25em;height:1.25em;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* --- Typographie -------------------------------------------------------- */
.fx-display,.fx-root h1,.fx-root h2,.fx-root h3{font-family:var(--fx-display);font-optical-sizing:auto}
.fx-h1{font-size:clamp(2.6rem,.6rem + 6.4vw,5.4rem);font-weight:800;line-height:.93;letter-spacing:-.045em}
.fx-h2{font-size:clamp(2.15rem,1.25rem + 3.3vw,3.9rem);font-weight:700;line-height:1.02;letter-spacing:-.035em;text-wrap:balance}
.fx-h2--long{font-size:clamp(1.9rem,1.1rem + 2.5vw,3.1rem)}
.fx-h3{font-size:1.3125rem;font-weight:700;line-height:1.2;letter-spacing:-.02em}
.fx-lead{font-size:clamp(1.125rem,1rem + .5vw,1.3125rem);line-height:1.55;color:var(--fx-soft);max-width:34em}
.fx-section-head{display:grid;gap:18px;max-width:46rem}
.fx-section-head p{color:var(--fx-soft);max-width:38em}

/* Les anciennes feuilles (liquid-glass.css) stylent encore #tarifs : l'ancre doit rester invisible. */
a#tarifs.fx-anchor,a#comment-ca-marche.fx-anchor{display:block!important;position:relative!important;width:0!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;overflow:hidden!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.fx-anchor{display:block!important;position:relative!important;width:0!important;height:0!important;margin:0!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;overflow:hidden!important}

/* --- Sections ----------------------------------------------------------- */
.fx-section{padding-block:clamp(72px,10vw,136px)}
.fx-section--flush{padding-bottom:0}
.fx-section--mint{background:var(--fx-mint)}
.fx-section--white{background:var(--fx-white)}
.fx-section--deep{background:var(--fx-deep);color:#fff}
.fx-section--deep .fx-section-head p,.fx-section--deep .fx-lead{color:rgba(255,255,255,.76)}

/* --- Boutons ------------------------------------------------------------ */
.fx-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:48px;padding:0 24px;border:1.5px solid transparent;border-radius:999px;
  font:700 1rem/1 var(--fx-text);letter-spacing:-.005em;text-decoration:none;white-space:nowrap;cursor:pointer;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease,transform .18s var(--fx-ease);
}
.fx-btn .fx-icon{width:1.15em;height:1.15em;transition:transform .2s var(--fx-ease)}
.fx-btn:hover .fx-icon-arrow{transform:translateX(3px)}
.fx-btn:active{transform:scale(.98)}
.fx-btn-lg{min-height:58px;padding:0 32px;font-size:1.0625rem}
.fx-btn-primary{background:var(--fx-green-ui);color:#fff}
.fx-btn-primary:hover{background:#0a6f66}
.fx-btn-line{background:transparent;color:var(--fx-ink);border-color:rgba(15,32,29,.28)}
.fx-btn-line:hover{border-color:var(--fx-ink);background:rgba(255,255,255,.7)}
.fx-btn-light{background:#fff;color:var(--fx-deep)}
.fx-btn-light:hover{background:var(--fx-mint)}
.fx-btn-outline-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.fx-btn-outline-light:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.fx-btn-block{width:100%}

/* --- En-tête ------------------------------------------------------------ */
.fx-header{
  position:sticky;top:0;z-index:60;
  background:rgba(246,250,248,.9);
  -webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid transparent;
  transition:border-color .2s ease;
}
.fx-header.is-scrolled{border-bottom-color:var(--fx-line)}
.fx-header-inner{position:relative;width:var(--fx-wrap);margin-inline:auto;height:var(--fx-header-h);display:flex;align-items:center;gap:32px}
.fx-brand{display:block;flex:none;line-height:0}
.fx-brand img{display:block;height:36px;width:auto}
.fx-nav-content{display:flex;align-items:center;gap:24px;flex:1;min-width:0}
.fx-nav{display:flex;gap:4px;margin-inline:auto}
.fx-nav a{display:block;padding:10px 16px;border-radius:999px;font-weight:600;font-size:.96875rem;color:var(--fx-soft);text-decoration:none;transition:background-color .18s,color .18s}
.fx-nav a:hover{color:var(--fx-ink);background:var(--fx-mint)}
.fx-header-actions{display:flex;align-items:center;gap:8px}
.fx-header-actions .fx-btn{min-height:44px;padding:0 20px;font-size:.96875rem}
.fx-menu-btn{display:none;margin-left:auto;width:48px;height:48px;border:1px solid var(--fx-line);border-radius:50%;background:#fff;color:var(--fx-ink);align-items:center;justify-content:center;cursor:pointer}
.fx-menu-btn .fx-icon-close{display:none}
.fx-menu-btn[aria-expanded="true"] .fx-icon-menu{display:none}
.fx-menu-btn[aria-expanded="true"] .fx-icon-close{display:block}

/* --- Hero --------------------------------------------------------------- */
.fx-hero{position:relative;overflow:hidden;padding-block:clamp(40px,6vw,96px) clamp(72px,9vw,128px)}
.fx-hero-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(40px,6vw,104px);align-items:center}
.fx-hero-copy{display:grid;gap:clamp(24px,3vw,36px);justify-items:start}
.fx-hero-copy .fx-h1 span{display:block;white-space:nowrap}
.fx-cta-row{display:flex;flex-wrap:wrap;gap:12px}
.fx-assure{display:flex;flex-wrap:wrap;gap:10px 28px;font-weight:600;font-size:.96875rem;color:var(--fx-soft)}
.fx-assure li{display:flex;align-items:center;gap:8px}
.fx-assure .fx-icon{color:var(--fx-green-text);width:1.15em;height:1.15em}

.fx-scene{position:relative;display:grid;justify-items:center;gap:22px}
.fx-scene-mark{position:absolute;z-index:0;right:-34%;top:-22%;width:135%;max-width:none;opacity:.2;pointer-events:none;user-select:none}
.fx-stack{position:relative;z-index:1;width:min(430px,100%);padding-top:80px}
.fx-ghost{
  position:absolute;left:0;right:0;height:150px;border-radius:26px;padding:11px 22px;transform-origin:top center;
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  font:800 1.05rem/1.2 var(--fx-display);letter-spacing:-.02em;
}
.fx-ghost small{font:700 .7rem/1 var(--fx-text);letter-spacing:.06em;text-transform:uppercase;opacity:.7;padding-top:4px}
.fx-ghost--a{top:0;transform:scale(.86);background:linear-gradient(150deg,#26343b,#0f1d22);color:#eaf6f4}
.fx-ghost--b{top:34px;transform:scale(.93);background:linear-gradient(150deg,#fff4d6,#f6cf73);color:var(--fx-gold-ink)}
.fx-scene-actions{position:relative;z-index:1;display:grid;justify-items:center;gap:10px;text-align:center}
.fx-scene-actions p{font-size:.9375rem;color:var(--fx-soft);max-width:26em}

/* --- Carte Wallet (composant réutilisé hero + secteurs) ------------------ */
.fx-pass{
  --p-a:#eefbf8;--p-b:#9fe3d5;--p-ink:#06443e;--p-soft:rgba(6,68,62,.7);
  --p-stamp:#0f8f83;--p-line:rgba(15,143,131,.38);--p-gift:rgba(255,255,255,.5);
  position:relative;z-index:2;width:100%;padding:22px 24px 24px;border-radius:26px;color:var(--p-ink);
  background:radial-gradient(120% 90% at 100% 0%,rgba(255,255,255,.72),transparent 55%),linear-gradient(150deg,var(--p-a),var(--p-b));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 34px 60px -30px rgba(5,47,43,.55),0 2px 6px rgba(5,47,43,.14);
  transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .6s var(--fx-ease);
}
.fx-pass-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.fx-pass-brand{display:flex;align-items:center;gap:10px;font:800 1.45rem/1 var(--fx-display);letter-spacing:-.035em}
.fx-pass-brand img{width:38px;height:38px;object-fit:contain}
.fx-pass-brand--sm{font-size:1.2rem;letter-spacing:-.03em}
.fx-initial{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:50%;background:var(--p-stamp);color:var(--p-on,#fff);font:800 1.1rem/1 var(--fx-display)}
.fx-pass-kind,.fx-pass-label{font:700 .7rem/1.2 var(--fx-text);letter-spacing:.07em;text-transform:uppercase;color:var(--p-soft)}
.fx-pass-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-top:26px}
.fx-pass-value{display:block;font:800 2rem/1 var(--fx-display);letter-spacing:-.03em;margin-top:6px}
.fx-pass-value--right{text-align:right}
.fx-pass-reward{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:22px}
.fx-pass-reward strong{display:block;font:600 1.25rem/1.2 var(--fx-text);margin-top:4px}
.fx-gift{flex:none;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;border:2px solid rgba(255,255,255,.9);background:var(--p-gift);color:var(--p-stamp);transition:background-color .3s ease,color .3s ease,transform .5s var(--fx-ease)}
.fx-gift .fx-icon{width:26px;height:26px}
.fx-stamps{display:flex;gap:6px;margin-top:24px}
.fx-stamp{position:relative;flex:1 1 0;max-width:40px;aspect-ratio:1}
.fx-stamp::before{content:"";position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--p-line)}
.fx-stamp i{position:absolute;inset:0;border-radius:50%;display:none;place-items:center;background:var(--p-stamp);color:var(--p-on,#fff)}
.fx-stamp i svg{width:54%;height:54%;fill:currentColor}
.fx-stamp.is-on i{display:grid;animation:fx-stamp .6s cubic-bezier(.2,1.35,.4,1) both;animation-delay:calc(var(--i,0) * 95ms + 420ms)}
.fx-stamp.is-fresh i{animation-delay:0ms}
@keyframes fx-stamp{
  0%{transform:scale(1.9) rotate(-16deg);opacity:0}
  55%{transform:scale(.9) rotate(3deg);opacity:1}
  100%{transform:none;opacity:1}
}
.fx-meter{height:14px;margin-top:24px;border-radius:999px;background:rgba(255,255,255,.5);overflow:hidden}
.fx-meter i{display:block;height:100%;width:var(--w,50%);border-radius:inherit;background:var(--p-stamp)}
.fx-pass.is-complete .fx-gift{background:var(--fx-gold);border-color:#fff;color:var(--fx-gold-ink);transform:rotate(-8deg) scale(1.08)}

/* --- Comment ça marche -------------------------------------------------- */
.fx-steps-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,7vw,112px);align-items:center}
.fx-steps-copy{display:grid;gap:clamp(32px,4vw,52px)}
.fx-steps{counter-reset:step;display:grid}
.fx-steps li{counter-increment:step;position:relative;display:grid;grid-template-columns:52px 1fr;gap:20px;padding-bottom:34px}
.fx-steps li:last-child{padding-bottom:0}
.fx-steps li::before{content:counter(step);display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--fx-green-ui);color:#fff;font:800 1.2rem/1 var(--fx-display)}
.fx-steps li:not(:last-child)::after{content:"";position:absolute;left:25px;top:58px;bottom:6px;width:2px;background:repeating-linear-gradient(to bottom,var(--fx-mint-2) 0 6px,transparent 6px 12px)}
.fx-steps h3{margin-bottom:6px;padding-top:12px}
.fx-steps p{color:var(--fx-soft);max-width:30em}
.fx-phone-panel{position:relative;overflow:hidden;display:grid;place-items:center;min-height:clamp(440px,52vw,640px);border-radius:48px 48px 48px 140px;background:var(--fx-mint)}
.fx-phone-panel::before{display:none}
.fx-story-grid>.fx-phone-panel.fx-video-panel{position:relative;top:auto;align-self:center;padding:0;width:100%;height:auto;min-height:0;aspect-ratio:16/10;border-radius:28px}
.fx-story-video{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;max-height:100%;object-fit:cover;object-position:center;border-radius:inherit;background:var(--fx-mint);pointer-events:none;user-select:none}
/* Mobile: crop the empty sides of the landscape clip, keeping the phone whole. */
@media(max-width:600px){
  .fx-story-grid>.fx-phone-panel.fx-video-panel{aspect-ratio:20/21;max-height:483px}
  .fx-video-panel>.fx-story-video{position:absolute;inset:0;object-fit:cover;object-position:center;border-radius:0}
}
.fx-phone-panel img{position:relative;width:min(400px,78%);height:auto;margin-block:-34px}

/* --- Avantages ---------------------------------------------------------- */
.fx-benefits{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,120px);margin-top:clamp(40px,6vw,80px)}
.fx-benefit-col>h3{font:800 clamp(1.6rem,1.2rem + 1.4vw,2.25rem)/1.05 var(--fx-display);letter-spacing:-.035em;padding-bottom:22px;border-bottom:2px solid var(--fx-ink)}
.fx-benefit-col li{display:grid;grid-template-columns:40px 1fr;gap:16px;padding:22px 0;border-bottom:1px solid var(--fx-line)}
.fx-benefit-col li>.fx-icon{width:28px;height:28px;color:var(--fx-green-text);margin-top:2px}
.fx-benefit-col strong{display:block;font-weight:700;font-size:1.125rem;line-height:1.3}
.fx-benefit-col li p{color:var(--fx-soft);margin-top:4px;max-width:30em}

/* --- Visuel de marque --------------------------------------------------- */
.fx-brand-story{padding-block:clamp(72px,9vw,124px);background:var(--fx-white)}
.fx-brand-story-grid{display:grid;grid-template-columns:minmax(0,4.5fr) minmax(0,5.5fr);gap:clamp(48px,8vw,120px);align-items:center}
.fx-brand-story-copy{display:grid;gap:28px;align-content:center}
.fx-brand-story-copy .fx-h2{max-width:10.5em}
.fx-brand-story-copy>p{max-width:34em;color:var(--fx-soft);font-size:1.125rem;line-height:1.65}
.fx-brand-story-copy ul{display:grid;gap:12px;padding-top:8px}
.fx-brand-story-copy li{display:flex;align-items:center;gap:11px;font-weight:700}
.fx-brand-story-copy li .fx-icon{width:20px;height:20px;color:var(--fx-green-text)}
.fx-brand-story-media{position:relative;margin:0;overflow:hidden;border-radius:48px 48px 48px 140px;background:var(--fx-mint)}
.fx-brand-story-media img{display:block;width:100%;height:min(720px,70vw);object-fit:contain;object-position:center bottom;background:transparent}
.fx-brand-story-media figcaption{position:absolute;right:22px;bottom:22px;max-width:230px;padding:12px 16px;border-radius:999px;background:rgba(246,250,248,.96);color:var(--fx-deep);font-size:.82rem;font-weight:700}
.fx-compare-grid{display:grid !important;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr) !important;grid-template-areas:'copy visual' !important;gap:clamp(42px,7vw,100px);align-items:center}
.fx-compare-grid>.fx-section-head{grid-area:copy !important;grid-column:auto !important;position:static !important}
.fx-compare-visual{grid-area:visual !important;grid-column:auto !important;grid-row:auto !important;margin:0;position:relative;min-height:520px;border-radius:44px;background:var(--fx-mint);display:grid;place-items:center;overflow:hidden}
.fx-compare-visual img{display:block;width:100%;height:100%;max-height:620px;object-fit:contain}
.fx-compare-visual figcaption{position:absolute;right:22px;bottom:22px;max-width:260px;padding:12px 16px;border-radius:999px;background:rgba(246,250,248,.96);color:var(--fx-deep);font-size:.82rem;font-weight:700}
.fx-compare-visual::before{content:'';position:absolute;width:72%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(15,143,131,.24),rgba(15,143,131,0) 68%);animation:fx-wallet-pulse 5s ease-in-out infinite}
.fx-compare-visual img{position:relative;z-index:2;filter:drop-shadow(0 26px 24px rgba(3,31,28,.18));animation:fx-wallet-float 6s ease-in-out infinite}
.fx-compare-orbit{position:absolute;border:1px solid rgba(15,143,131,.18);border-radius:50%;pointer-events:none}
.fx-compare-orbit--one{width:72%;aspect-ratio:1;transform:rotate(-24deg) scaleY(.28);}
.fx-compare-orbit--two{width:58%;aspect-ratio:1;transform:rotate(28deg) scaleY(.22);}
.fx-compare-float{position:absolute;z-index:3;display:flex;align-items:center;gap:10px;padding:12px 15px;border:1px solid rgba(15,32,29,.08);border-radius:16px;background:rgba(255,255,255,.96);box-shadow:0 14px 28px rgba(3,31,28,.12);color:var(--fx-deep);animation:fx-wallet-float 5s ease-in-out infinite}
.fx-compare-float .fx-icon{width:20px;height:20px;padding:5px;border-radius:8px;background:var(--fx-mint);color:var(--fx-green-text)}
.fx-compare-float span{display:grid;gap:2px}.fx-compare-float strong{font-size:.76rem}.fx-compare-float small{font-size:.65rem;color:var(--fx-soft)}
.fx-compare-float--top{top:15%;left:5%}.fx-compare-float--bottom{right:5%;bottom:19%;animation-delay:-2.2s}.fx-compare-float--bottom .fx-icon{color:#fff;background:var(--fx-green)}
@keyframes fx-wallet-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes fx-wallet-pulse{0%,100%{opacity:.7;transform:scale(.94)}50%{opacity:1;transform:scale(1.04)}}
@media(prefers-reduced-motion:reduce){.fx-compare-visual img,.fx-compare-float,.fx-compare-visual::before{animation:none}}

.fx-compare-table{display:none}
.fx-compare-benefits{display:grid;gap:16px;margin:8px 0 0;padding:0;list-style:none}
.fx-compare-benefits li{display:flex;align-items:flex-start;gap:12px}
.fx-compare-benefits .fx-icon{flex:0 0 22px;width:22px;height:22px;padding:4px;border-radius:50%;background:var(--fx-mint);color:var(--fx-green-text)}
.fx-compare-benefits span{display:grid;gap:3px}
.fx-compare-benefits strong{font-size:.96rem;line-height:1.3}
.fx-compare-benefits small{color:var(--fx-soft);font-size:.84rem;line-height:1.45}
.fx-compare-grid .fx-compare-visual{display:grid !important;visibility:visible !important;opacity:1 !important}
@media(max-width:800px){.fx-compare-grid{grid-template-columns:1fr !important;grid-template-areas:'copy' 'visual' !important;gap:32px}.fx-compare-grid>.fx-section-head{grid-area:copy !important}.fx-compare-visual{grid-area:visual !important;min-height:360px;border-radius:30px}.fx-compare-visual figcaption{right:14px;bottom:14px}.fx-compare-float--top{top:8%;left:3%}.fx-compare-float--bottom{right:3%;bottom:18%}}

/* --- Tableau de bord ---------------------------------------------------- */
.fx-dash-grid{display:grid;grid-template-columns:minmax(0,4.6fr) minmax(0,7.4fr);gap:clamp(40px,6vw,96px);align-items:end}
.fx-dash-copy{display:grid;gap:26px;align-self:center;padding-bottom:clamp(48px,7vw,96px);justify-items:start}
.fx-checks{display:grid;gap:12px;font-weight:600}
.fx-checks li{display:flex;gap:12px;align-items:center}
.fx-checks .fx-icon{color:#7fe3d3}
.fx-demo-note{font-size:.9375rem;color:rgba(255,255,255,.66)}

/* La maquette du tableau de bord est stylée en fin de fichier (« Maquette du tableau de bord »). */

.fx-anim .fx-bars i{transform:scaleY(.04);transition:transform .9s var(--fx-ease);transition-delay:calc(var(--k,0) * 70ms)}
.fx-anim .fx-dash.is-in .fx-bars i{transform:none}

/* --- Secteurs ----------------------------------------------------------- */
.fx-sectors{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,7vw,112px);align-items:center}
.fx-sectors-copy{display:grid;gap:clamp(28px,4vw,44px)}
.fx-tablist{display:flex;flex-direction:column;border-top:1px solid var(--fx-line)}
.fx-tab{
  display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;
  padding:18px 2px;border:0;border-bottom:1px solid var(--fx-line);background:none;cursor:pointer;text-align:left;
  font:700 clamp(1.5rem,1.05rem + 1.5vw,2.125rem)/1.1 var(--fx-display);letter-spacing:-.035em;color:#5d746e;
  transition:color .2s ease,padding-left .3s var(--fx-ease);
}
.fx-tab .fx-icon{opacity:0;transform:translateX(-8px);transition:opacity .2s,transform .3s var(--fx-ease);color:var(--fx-green-text)}
.fx-tab:hover{color:var(--fx-ink)}
.fx-tab[aria-selected="true"]{color:var(--fx-ink);padding-left:10px}
.fx-tab[aria-selected="true"] .fx-icon{opacity:1;transform:none}
.fx-stage{display:grid;gap:26px;padding:clamp(24px,4vw,48px);border-radius:140px 48px 48px 48px;background:var(--fx-mint);transition:background-color .4s ease}
.fx-stage .fx-pass{max-width:430px;justify-self:center}
.fx-stage-text{display:grid;gap:8px;max-width:30em;justify-self:center;width:100%}
.fx-stage-text h3{font-size:1.5rem}
.fx-stage-text p{color:var(--fx-soft)}
.fx-stage-rule{font-weight:700;color:var(--fx-green-text)}
.fx-stage-note{font-size:.875rem;color:var(--fx-soft)}

/* --- Comparatif --------------------------------------------------------- */
.fx-compare-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7.5fr);gap:clamp(40px,6vw,96px);align-items:start}
.fx-compare-grid .fx-section-head{position:sticky;top:calc(var(--fx-header-h) + 32px)}
.fx-table{width:100%;border-collapse:separate;border-spacing:0;font-size:1rem}
.fx-table th,.fx-table td{padding:20px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--fx-line)}
.fx-table thead th{padding-top:0;border-bottom:2px solid var(--fx-ink);font:800 1.125rem/1.2 var(--fx-display);letter-spacing:-.02em;vertical-align:bottom}
.fx-table tbody th{font-weight:700;width:30%}
.fx-table .fx-col-fx{background:var(--fx-mint)}
.fx-table thead .fx-col-fx{background:var(--fx-deep);color:#fff;border-radius:22px 22px 0 0;border-bottom-color:var(--fx-deep);padding-top:20px}
.fx-table tbody tr:last-child .fx-col-fx{border-radius:0 0 22px 22px;border-bottom-color:transparent}
.fx-cell{display:flex;gap:10px;align-items:flex-start}
.fx-cell .fx-icon{width:1.15em;height:1.15em;margin-top:.22em}
.fx-cell--no .fx-icon{color:#b3402f}
.fx-cell--no{color:var(--fx-soft)}
.fx-cell--yes .fx-icon{color:var(--fx-green-text)}
.fx-cell--yes{font-weight:600}

/* --- Tarifs ------------------------------------------------------------- */
.fx-pricing-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:28px}
.fx-billing-wrap{display:grid;gap:10px;justify-items:end}
.fx-billing{display:inline-flex;padding:5px;border-radius:999px;background:var(--fx-mint);gap:4px}
.fx-billing button{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 22px;border:0;border-radius:999px;background:transparent;color:var(--fx-soft);font:700 .96875rem/1 var(--fx-text);cursor:pointer;transition:background-color .2s,color .2s}
.fx-billing button span{padding:3px 8px;border-radius:999px;background:var(--fx-gold);color:var(--fx-gold-ink);font-size:.75rem}
.fx-billing button.active{background:var(--fx-ink);color:#fff}
.fx-billing-note{font-size:.9375rem;color:var(--fx-soft);text-align:right}
.fx-plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:20px;row-gap:18px;margin-top:clamp(36px,5vw,56px);align-items:stretch}
.fx-plan{position:relative;display:grid;grid-template-rows:subgrid;grid-row:span 6;row-gap:18px;align-content:start;padding:clamp(26px,3vw,38px);border-radius:30px;background:var(--fx-paper);border:1px solid var(--fx-line)}
.fx-plan--pro{background:var(--fx-deep);color:#fff;border-color:var(--fx-deep);border-radius:30px 30px 30px 80px}
.fx-plan-tag{position:absolute;top:-14px;left:32px;padding:6px 14px;border-radius:999px;background:var(--fx-gold);color:var(--fx-gold-ink);font-weight:800;font-size:.8125rem}
.fx-plan-name{font:800 1.5rem/1 var(--fx-display);letter-spacing:-.03em}
.fx-plan-for{color:var(--fx-soft)}
.fx-plan--pro .fx-plan-for{color:rgba(255,255,255,.75)}
.fx-price{font:800 clamp(2.5rem,2rem + 1.6vw,3.4rem)/1 var(--fx-display);letter-spacing:-.045em}
.fx-price small{font:600 1rem/1 var(--fx-text);letter-spacing:0;color:var(--fx-soft);margin-left:4px}
.fx-price em{display:block;margin-top:8px;font:600 .9375rem/1.2 var(--fx-text);font-style:normal;letter-spacing:0;color:var(--fx-green-text)}
.fx-plan--pro .fx-price small{color:rgba(255,255,255,.7)}
.fx-plan--pro .fx-price em{color:#7fe3d3}
.fx-price--quote small:first-child{display:block;margin:0 0 8px;font-size:.9375rem}
.fx-price--quote span{font-size:clamp(2.25rem,1.9rem + 1.3vw,3rem)}
.fx-plan-fee{font-size:.9375rem;color:var(--fx-soft)}
.fx-plan--pro .fx-plan-fee{color:rgba(255,255,255,.72)}
.fx-plan-fee strong{color:inherit;font-weight:700}
.fx-plan ul{display:grid;gap:11px;align-content:start;padding-top:18px;border-top:1px solid var(--fx-line)}
.fx-plan--pro ul{border-top-color:rgba(255,255,255,.2)}
.fx-plan li{position:relative;padding-left:30px}
.fx-plan li::before{
  content:"";position:absolute;left:0;top:.28em;width:18px;height:18px;background:var(--fx-green);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
}
.fx-plan--pro li::before{background:#7fe3d3}
.fx-setup{display:grid;grid-template-columns:minmax(0,3.6fr) minmax(0,8.4fr);column-gap:clamp(20px,4vw,56px);row-gap:16px;align-items:start;margin-top:20px;padding:clamp(24px,3vw,36px) clamp(24px,4vw,44px);border-radius:28px;background:var(--fx-mint)}
.fx-setup-title span{display:block;font-weight:600;color:var(--fx-soft)}
.fx-setup-title strong{display:block;font:800 clamp(1.5rem,1.2rem + 1vw,2rem)/1.1 var(--fx-display);letter-spacing:-.03em;margin-top:4px}
.fx-setup ul{display:grid;grid-template-columns:1fr 1fr;gap:8px 28px}
.fx-setup li{display:flex;gap:10px;align-items:flex-start;font-weight:500}
.fx-setup li .fx-icon{color:var(--fx-green-text);margin-top:.2em;width:1.1em;height:1.1em}
.fx-setup-note{grid-column:1/-1;font-size:.9375rem;color:var(--fx-soft)}

/* --- FAQ ---------------------------------------------------------------- */
.fx-faq-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(40px,7vw,112px);align-items:start}
.fx-faq-grid .fx-section-head{position:sticky;top:calc(var(--fx-header-h) + 32px)}
.fx-faq-aside{margin-top:12px;font-size:1rem;color:var(--fx-soft)}
.fx-faq-aside a{color:var(--fx-green-text);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.fx-faq-item{border-bottom:1px solid var(--fx-line)}
.fx-faq-item:first-child{border-top:1px solid var(--fx-line)}
.fx-faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 0;cursor:pointer;list-style:none;font:700 1.1875rem/1.3 var(--fx-display);letter-spacing:-.02em}
.fx-faq-item summary::-webkit-details-marker{display:none}
.fx-faq-item summary:hover{color:var(--fx-green-text)}
.fx-faq-mark{position:relative;flex:none;width:32px;height:32px;border-radius:50%;background:var(--fx-mint);transition:background-color .2s,transform .3s var(--fx-ease)}
.fx-faq-mark::before,.fx-faq-mark::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:2px;margin:-1px 0 0 -6px;background:var(--fx-ink);border-radius:2px;transition:transform .3s var(--fx-ease)}
.fx-faq-mark::after{transform:rotate(90deg)}
.fx-faq-item[open] .fx-faq-mark{background:var(--fx-green-ui)}
.fx-faq-item[open] .fx-faq-mark::before,.fx-faq-item[open] .fx-faq-mark::after{background:#fff}
.fx-faq-item[open] .fx-faq-mark::after{transform:rotate(0)}
.fx-faq-item p{padding:0 56px 26px 0;max-width:40em;color:var(--fx-soft)}

/* --- Appel final -------------------------------------------------------- */
.fx-final{padding-block:0 clamp(72px,10vw,136px)}
.fx-final-card{
  position:relative;overflow:hidden;display:grid;gap:30px;justify-items:start;
  padding:clamp(40px,7vw,96px);border-radius:56px 56px 56px 160px;background:var(--fx-deep);color:#fff;
}
.fx-final-card::after{content:"";position:absolute;right:-10%;bottom:-30%;width:min(640px,70%);aspect-ratio:1;background:url("assets/optimized/LEF.webp") center/contain no-repeat;opacity:.16;pointer-events:none}
.fx-final-card>*{position:relative;z-index:1}
.fx-final-card p{color:rgba(255,255,255,.78);max-width:32em;font-size:1.1875rem}
.fx-final-card .fx-h2{max-width:13em}

/* --- Pied de page ------------------------------------------------------- */
.fx-footer{background:var(--fx-deep-2);color:rgba(255,255,255,.72);padding-block:clamp(56px,7vw,88px) 32px}
.fx-footer-grid{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));gap:clamp(28px,5vw,64px)}
.fx-footer-brand img{height:40px;width:auto;display:block}
.fx-footer-brand p{margin-top:18px;max-width:22em;font-size:.96875rem}
.fx-footer h2{font:700 .9375rem/1 var(--fx-text);letter-spacing:0;color:#fff;margin-bottom:18px}
.fx-footer nav{display:grid;gap:12px;align-content:start}
.fx-footer nav a{font-size:.96875rem;color:rgba(255,255,255,.72);text-decoration:none;width:fit-content}
.fx-footer nav a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}
.fx-footer-bottom{margin-top:clamp(40px,6vw,72px);padding-top:24px;border-top:1px solid rgba(255,255,255,.14);font-size:.875rem;color:rgba(255,255,255,.6)}

/* --- WhatsApp ----------------------------------------------------------- */
.fx-wa{position:fixed;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));z-index:55;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#14803f;color:#fff;box-shadow:0 10px 26px -8px rgba(5,47,43,.5);transition:transform .2s var(--fx-ease),background-color .2s}
.fx-wa:hover{transform:scale(1.06);background:#0f6b34}
.fx-wa svg{width:28px;height:28px}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:1080px){
  .fx-plans{grid-template-columns:1fr;max-width:560px;row-gap:20px}
  .fx-plan{display:flex;flex-direction:column;grid-row:auto;gap:18px}
  .fx-plan ul{margin-top:auto}
  .fx-plan--pro{order:0}
  .fx-pricing-head{align-items:start}
  .fx-billing-wrap{justify-items:start}
  .fx-billing-note{text-align:left}
  .fx-dash-grid{grid-template-columns:1fr;align-items:start}
  .fx-dash-copy{padding-bottom:0}
  .fx-compare-grid,.fx-faq-grid{grid-template-columns:1fr}
  .fx-compare-grid .fx-section-head,.fx-faq-grid .fx-section-head{position:static}
  .fx-footer-grid{grid-template-columns:1fr 1fr}
  .fx-footer-brand{grid-column:1/-1}
}

@media (max-width:900px){
  :root{--fx-header-h:64px}
  .fx-menu-btn{display:inline-flex}
  .fx-header-inner{gap:16px}
  .fx-nav-content{
    display:none;position:absolute;left:12px;right:12px;top:calc(100% + 4px);z-index:70;
    flex-direction:column;align-items:stretch;gap:12px;padding:12px;
    border-radius:24px;background:#fff;border:1px solid var(--fx-line);box-shadow:0 24px 60px -20px rgba(5,47,43,.35);
  }
  .fx-header.open .fx-nav-content{display:flex}
  .fx-nav{flex-direction:column;margin:0;gap:0}
  .fx-nav a{padding:16px 14px;border-radius:14px;font-size:1.0625rem}
  .fx-header-actions{flex-direction:column;align-items:stretch;padding-top:12px;border-top:1px solid var(--fx-line)}
  .fx-header-actions .fx-btn{min-height:52px}
  .fx-hero-grid,.fx-steps-grid,.fx-sectors{grid-template-columns:1fr}
  .fx-scene{margin-top:12px}
  .fx-scene-mark{right:-40%;top:-10%;width:150%}
  .fx-benefits{grid-template-columns:1fr}
  .fx-brand-story-grid{grid-template-columns:1fr}
  .fx-brand-story-copy .fx-h2{max-width:14em}
  .fx-brand-story-media{border-radius:36px 36px 36px 96px}
  .fx-brand-story-media img{height:min(760px,105vw)}
  .fx-phone-panel{border-radius:36px 36px 36px 96px}
  .fx-stage{border-radius:96px 36px 36px 36px}
  .fx-final-card{border-radius:40px 40px 40px 100px}
}

@media (max-width:720px){
  .fx-tablist{flex-direction:row;flex-wrap:wrap;gap:8px;border-top:0}
  .fx-tab{width:auto;padding:12px 18px;border:1.5px solid var(--fx-line);border-radius:999px;font:700 1rem/1 var(--fx-text);letter-spacing:0}
  .fx-tab .fx-icon{display:none}
  .fx-tab[aria-selected="true"]{padding-left:18px;background:var(--fx-ink);border-color:var(--fx-ink);color:#fff}
  .fx-setup{grid-template-columns:1fr}
  .fx-setup ul{grid-template-columns:1fr}
  .fx-faq-item p{padding-right:0}

  /* tableau comparatif → lignes empilées */
  .fx-table,.fx-table tbody,.fx-table tr,.fx-table th,.fx-table td{display:block}
  .fx-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .fx-table tbody tr{margin-bottom:14px;border:1px solid var(--fx-line);border-radius:22px;overflow:hidden;background:#fff}
  .fx-table tbody th{width:auto;padding:16px 18px 6px;border:0;font:800 1.125rem/1.2 var(--fx-display)}
  .fx-table td{padding:10px 18px;border:0}
  .fx-table td::before{content:attr(data-label);display:block;margin-bottom:2px;font-size:.8125rem;font-weight:700;color:var(--fx-soft)}
  .fx-table .fx-col-fx{border-radius:0!important}
  .fx-table tbody tr:last-child .fx-col-fx{border-radius:0!important}
}

@media (max-width:600px){
  :root{--fx-wrap:calc(100% - 40px)}
  .fx-hero-grid,.fx-hero-copy,.fx-cta-row{min-width:0;max-width:100%}
  .fx-hero-copy .fx-h1 span{white-space:normal;overflow-wrap:anywhere}
  .fx-ghost{font-size:.95rem;white-space:nowrap}
  .fx-ghost small{display:none}
  .fx-kpis small{font-size:.6875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fx-kpis div{padding:10px}
  .fx-kpis strong{font-size:1.1rem}
  .fx-brand img{height:32px}
  .fx-cta-row{width:100%}
  .fx-cta-row .fx-btn{width:100%;min-width:0;flex:1 1 100%;white-space:normal}
  .fx-billing button{padding:0 16px}
  .fx-pass{padding:18px 18px 20px;border-radius:22px}
  .fx-pass-value{font-size:1.6rem}
  .fx-pass-brand{font-size:1.25rem}
  .fx-stamps{gap:4px}
  .fx-footer-grid{grid-template-columns:1fr 1fr}
  .fx-final-card .fx-btn{width:100%}
  .fx-final-card .fx-cta-row{width:100%}
  .fx-brand-story{padding-block:72px}
  .fx-brand-story-grid{gap:38px}
  .fx-brand-story-media{border-radius:28px 28px 28px 70px}
  .fx-brand-story-media img{height:125vw;max-height:620px}
  .fx-brand-story-media figcaption{right:14px;bottom:14px;max-width:205px;padding:10px 14px}

  /* Keep the Wallet stack inside the iPhone 13 viewport; the fixed contact
     action must not sit on top of the card. */
  .fx-stack{width:min(350px,100%);padding-top:58px}
  .fx-ghost{height:122px;padding:10px 17px;font-size:.9rem;border-radius:22px}
  .fx-pass{padding:16px 17px 18px}
  .fx-wa{width:50px;height:50px;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));}
  .fx-wa svg{width:24px;height:24px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  .fx-root *,.fx-root *::before,.fx-root *::after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important}
  .fx-anim .fx-bars i{transform:none}
}

/* Les fenêtres (inscription, connexion, démo…) sont stylées dans fx-modals.css. */


/* ==========================================================================
   Animations
   Principe : chaque mouvement montre quelque chose du produit (un tampon qui
   s'imprime, une notification Wallet, un dashboard qui vit). Les états
   « masqués » dépendent de classes ajoutées par fidelyxa-site.js (.fx-anim,
   .fx-split) : sans JavaScript, ou avec « réduire les animations », tout reste
   visible et immobile.
   ========================================================================== */

/* --- Barre de progression de lecture ------------------------------------ */
.fx-progress{position:absolute;left:0;right:0;bottom:-1px;height:3px;background:linear-gradient(90deg,var(--fx-green),#7fe3d3);transform:scaleX(0);transform-origin:left;pointer-events:none;will-change:transform}

/* --- Boutons : reflet au survol ----------------------------------------- */
.fx-btn{position:relative;overflow:hidden;isolation:isolate}
.fx-btn-primary::after,.fx-btn-light::after{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.38) 50%,transparent 65%);
  transform:translateX(-120%);
}
.fx-btn-light::after{background:linear-gradient(105deg,transparent 35%,rgba(15,143,131,.18) 50%,transparent 65%)}
.fx-btn-primary:hover::after,.fx-btn-light:hover::after{transform:translateX(120%);transition:transform .8s var(--fx-ease)}

/* --- Carte : reflet qui suit le curseur ---------------------------------- */
.fx-pass::after{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .35s ease;
  background:radial-gradient(circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.55),transparent 58%);
}
.fx-pass.is-tilt{transition:transform .12s linear}
.fx-pass.is-tilt::after{opacity:.4}

/* --- Tampon : onde de choc + confettis ----------------------------------- */
.fx-stamp.is-fresh::after{
  content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--p-stamp);pointer-events:none;
  animation:fx-ring .8s ease-out both;
}
@keyframes fx-ring{from{transform:scale(1);opacity:.9}to{transform:scale(2.7);opacity:0}}
.fx-confetti{position:absolute;z-index:6;width:8px;height:12px;border-radius:2px;pointer-events:none}

/* --- Notification Wallet ------------------------------------------------- */
.fx-notif{
  position:absolute;z-index:6;left:50%;top:-18px;width:min(390px,96%);
  display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:22px;
  background:rgba(255,255,255,.97);
  box-shadow:0 22px 44px -18px rgba(5,47,43,.5),0 0 0 1px rgba(15,32,29,.06);
  transform:translate(-50%,-170%);opacity:0;pointer-events:none;
  transition:transform .8s cubic-bezier(.2,1.25,.3,1),opacity .3s ease;
}
.fx-notif.is-show{transform:translate(-50%,0);opacity:1}
.fx-notif img{flex:none;width:40px;height:40px;padding:6px;border-radius:11px;background:var(--fx-mint);object-fit:contain}
.fx-notif div{display:grid;gap:1px;min-width:0}
.fx-notif small{font-size:.75rem;color:var(--fx-soft);font-weight:600}
.fx-notif b{font:800 1rem/1.2 var(--fx-display);letter-spacing:-.02em;color:var(--fx-ink)}
.fx-notif-text{font-size:.875rem;line-height:1.3;color:var(--fx-soft)}

/* --- Titres : les mots montent un par un -------------------------------- */
.fx-split .fx-h2 .fx-w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.14em;margin-bottom:-.14em}
.fx-split .fx-h2 .fx-w>span{display:inline-block;transform:translateY(108%);transition:transform .9s var(--fx-ease);transition-delay:calc(var(--n,0) * 42ms)}
.fx-split .fx-h2.is-in .fx-w>span{transform:none}

/* --- Étapes : le fil se remplit au fil du scroll ------------------------- */
@property --fillh{syntax:'<percentage>';inherits:false;initial-value:0%}
.fx-anim .fx-steps li::before{transition:background-color .4s ease,color .4s ease}
.fx-anim .fx-steps li:not(.is-lit)::before{background:var(--fx-mint);color:var(--fx-soft)}
.fx-anim .fx-steps li.is-lit::before{animation:fx-pop .6s var(--fx-ease)}
@keyframes fx-pop{0%{transform:scale(.8)}55%{transform:scale(1.14)}100%{transform:none}}
.fx-anim .fx-steps li:not(.is-lit) h3,.fx-anim .fx-steps li:not(.is-lit) p{opacity:.45}
.fx-steps li h3,.fx-steps li p{transition:opacity .5s ease}
.fx-steps li:not(:last-child)::after{
  background:
    linear-gradient(var(--fx-green-ui),var(--fx-green-ui)) 0 0 / 100% var(--fillh) no-repeat,
    repeating-linear-gradient(to bottom,var(--fx-mint-2) 0 6px,transparent 6px 12px);
  transition:--fillh .8s var(--fx-ease);
}
.fx-steps li.is-through::after{--fillh:100%}
.fx-phone-panel img{will-change:transform}

/* --- Tableau de bord ----------------------------------------------------- */
.fx-anim .fx-activity li{opacity:0;transform:translateX(16px);transition:opacity .6s ease,transform .7s var(--fx-ease)}
.fx-anim .fx-dash.is-in .fx-activity li{opacity:1;transform:none}
.fx-anim .fx-dash.is-in .fx-activity li:nth-child(1){transition-delay:.9s}
.fx-anim .fx-dash.is-in .fx-activity li:nth-child(2){transition-delay:1.1s}
.fx-anim .fx-dash.is-in .fx-activity li:nth-child(3){transition-delay:1.3s}
.fx-activity li.is-new{animation:fx-feed-in .7s var(--fx-ease) both;transition:none!important;transform:none!important;opacity:1!important}
@keyframes fx-feed-in{
  from{opacity:0;max-height:0;padding-block:0;transform:translateY(-8px)}
  to{opacity:1;max-height:64px;padding-block:9px;transform:none}
}
.fx-kpis strong.fx-bump{animation:fx-bump .6s var(--fx-ease)}
@keyframes fx-bump{0%{transform:none;color:var(--fx-ink)}35%{transform:translateY(-3px) scale(1.07);color:var(--fx-green-text)}100%{transform:none;color:var(--fx-ink)}}

/* --- Comparatif : coches et croix se dessinent --------------------------- */
.fx-anim .fx-cell .fx-icon{stroke-dasharray:24;stroke-dashoffset:24}
.fx-anim .fx-table.is-in .fx-cell .fx-icon{animation:fx-draw .55s ease forwards;animation-delay:calc(var(--r,0) * 130ms + 250ms)}
.fx-table tbody tr:nth-child(1){--r:0}.fx-table tbody tr:nth-child(2){--r:1}.fx-table tbody tr:nth-child(3){--r:2}
.fx-table tbody tr:nth-child(4){--r:3}.fx-table tbody tr:nth-child(5){--r:4}
.fx-table tbody td:last-child{--o:1}
.fx-anim .fx-table.is-in .fx-col-fx .fx-icon{animation-delay:calc(var(--r,0) * 130ms + 450ms)}
@keyframes fx-draw{to{stroke-dashoffset:0}}

/* --- Tarifs : le prix « roule » quand on change de période --------------- */
.fx-price.fx-roll{animation:fx-roll .55s var(--fx-ease)}
@keyframes fx-roll{from{opacity:0;transform:translateY(.4em)}to{opacity:1;transform:none}}

/* --- Secteurs : jauge qui se remplit ------------------------------------- */
.fx-meter i{animation:fx-meter .9s var(--fx-ease) .25s backwards}
@keyframes fx-meter{from{width:0}}

/* --- Entrée du hero : une seule séquence, au chargement ------------------ */
@media (prefers-reduced-motion:no-preference){
  .fx-h1 .fx-line{overflow:hidden;padding-bottom:.14em;margin-bottom:-.14em}
  .fx-h1 .fx-line>span{animation:fx-rise 1s var(--fx-ease) both}
  .fx-h1 .fx-line:nth-child(2)>span{animation-delay:.12s}
  @keyframes fx-rise{from{transform:translateY(112%)}}
  .fx-hero-copy .fx-lead{animation:fx-soft-in .9s var(--fx-ease) .4s both}
  .fx-hero-copy .fx-cta-row{animation:fx-soft-in .9s var(--fx-ease) .52s both}
  .fx-hero-copy .fx-assure{animation:fx-soft-in .9s var(--fx-ease) .64s both}
  @keyframes fx-soft-in{from{opacity:0;transform:translateY(14px)}}

  .fx-ghost--a{animation:fx-ghost-a 1.1s var(--fx-ease) .55s backwards}
  .fx-ghost--b{animation:fx-ghost-b 1.1s var(--fx-ease) .4s backwards}
  @keyframes fx-ghost-a{from{transform:translateY(90px) scale(.7);opacity:0}}
  @keyframes fx-ghost-b{from{transform:translateY(90px) scale(.8);opacity:0}}
  #heroPass{animation:fx-pass-in 1.15s var(--fx-ease) .2s backwards}
  @keyframes fx-pass-in{from{transform:perspective(1000px) translateY(70px) rotateX(18deg) rotate(-3deg) scale(.94);opacity:0}}
  #heroPass .fx-stamp.is-on i{animation-delay:calc(var(--i,0) * 90ms + 1300ms)}
  #heroPass .fx-stamp.is-fresh i{animation-delay:0ms}
  .fx-scene-actions{animation:fx-soft-in .9s var(--fx-ease) 1.5s both}

  /* mouvements d'ambiance, très lents */
  .fx-scene-mark{animation:fx-drift 24s ease-in-out infinite alternate}
  .fx-final-card::after{animation:fx-drift 20s ease-in-out infinite alternate}
  @keyframes fx-drift{from{transform:translate3d(0,0,0) rotate(0deg)}to{transform:translate3d(-2.5%,3%,0) rotate(5deg)}}

  /* le cadeau respire quand une récompense est prête */
  .fx-pass.is-complete .fx-gift{animation:fx-gift 1.6s ease-in-out infinite}
  @keyframes fx-gift{0%,100%{transform:rotate(-8deg) scale(1.08)}50%{transform:rotate(6deg) scale(1.16)}}
}

/* The public site can be revealed after the demo has been open for a while. */
body.fx-returned-home .fx-hero-copy,
body.fx-returned-home .fx-hero-copy .fx-lead,
body.fx-returned-home .fx-hero-copy .fx-cta-row,
body.fx-returned-home .fx-hero-copy .fx-assure,
body.fx-returned-home .fx-scene-actions { opacity: 1; transform: none; }
body.fx-returned-home .fx-h1 .fx-line > span { transform: none; }

@media (max-width:600px){
  .fx-notif{top:-14px;padding:10px 14px;gap:10px}
  .fx-notif img{width:34px;height:34px}
}


/* ==========================================================================
   Interactif : téléphone du parcours, bandeau, créateur de carte
   ========================================================================== */

/* --- Parcours : le téléphone reste en place pendant que les étapes défilent --- */
.fx-story-grid{
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  grid-template-areas:"head phone" "steps phone";
  column-gap:clamp(40px,7vw,112px);row-gap:clamp(28px,4vw,48px);align-items:start;
}
.fx-story-grid>.fx-section-head{grid-area:head}
.fx-story-grid>.fx-steps{grid-area:steps}
.fx-story-grid>.fx-phone-panel{
  grid-area:phone;align-self:start;position:sticky;top:calc(var(--fx-header-h) + 24px);
  height:min(720px,calc(100vh - var(--fx-header-h) - 48px));min-height:0;
}
.fx-story .fx-steps li{min-height:max(46vh,260px);padding-bottom:0;cursor:pointer}
.fx-story .fx-steps li:last-child{min-height:max(36vh,220px)}
.fx-story .fx-steps li:hover h3{color:var(--fx-green-text)}

@media (min-width:901px){
  .fx-story{padding-block:clamp(72px,7vw,96px)}
  .fx-story-grid{row-gap:32px}
  .fx-story-grid>.fx-phone-panel{
    height:min(560px,calc(100vh - var(--fx-header-h) - 64px));
  }
  .fx-story .fx-steps li{min-height:168px}
  .fx-story .fx-steps li:last-child{min-height:140px}
}

.fx-phone{
  position:relative;height:calc(100% - 56px);aspect-ratio:300/620;max-width:88%;padding:3.4%;
  border-radius:15% / 7.2%;background:linear-gradient(145deg,#46544f,#0c1514 55%,#2a3a37);
  box-shadow:0 50px 90px -34px rgba(5,47,43,.7),inset 0 0 0 1.5px rgba(255,255,255,.14);
}
.fx-phone::before{content:"";position:absolute;z-index:8;top:2.5%;left:50%;width:27%;height:3.5%;transform:translateX(-50%);border-radius:99px;background:#000}
.fx-phone-screen{position:relative;width:100%;height:100%;overflow:hidden;border-radius:11.7% / 5.65%;background:#000;container-type:inline-size}

.fx-phone--asset{
  position:absolute;left:50%;top:50%;height:calc(100% - 24px);aspect-ratio:1;max-width:100%;padding:0;border-radius:0;
  transform:translate(-50%,-50%);
  background:url("assets/white-smartphone-mockup-blank-screen-isolated-on-transparent-background-smartphone-mockup-frame-free-png.webp") center/contain no-repeat;
  box-shadow:none;
}
.fx-phone--asset::before{display:none}
.fx-phone--asset .fx-phone-screen{
  position:absolute;inset:8.5% 30.8% 8.6%;display:block;width:auto;height:auto;
  border-radius:15.5% / 7.2%;background:#061714;
}

.fx-screen{position:absolute;inset:0;overflow:hidden;opacity:0;transform:scale(1.04);pointer-events:none;color:#fff;transition:opacity .55s ease,transform .8s var(--fx-ease)}
.fx-screen.is-on{opacity:1;transform:none}
.fx-status{position:absolute;top:4.6cqw;left:9cqw;z-index:3;font:700 3.7cqw/1 var(--fx-text)}

/* écran 1 — scan */
.fx-screen--scan{background:radial-gradient(120% 70% at 50% 0%,#3a5a55,transparent 62%),linear-gradient(170deg,#1b2b29,#091211)}
.fx-scan-title{position:absolute;top:19cqw;left:0;right:0;text-align:center;font:700 4.4cqw/1.2 var(--fx-text);color:rgba(255,255,255,.88)}
.fx-vf{position:absolute;left:50%;top:48%;width:62cqw;aspect-ratio:1;transform:translate(-50%,-50%)}
.fx-vf>i{position:absolute;width:9cqw;height:9cqw;border:.9cqw solid #fff;border-radius:2.4cqw}
.fx-vf>i:nth-child(1){top:0;left:0;border-right:0;border-bottom:0}
.fx-vf>i:nth-child(2){top:0;right:0;border-left:0;border-bottom:0}
.fx-vf>i:nth-child(3){bottom:0;left:0;border-right:0;border-top:0}
.fx-vf>i:nth-child(4){bottom:0;right:0;border-left:0;border-top:0}
.fx-qr{position:absolute;inset:8%;width:84%;height:84%;padding:4.5%;box-sizing:border-box;background:#fff;border-radius:3.5cqw;fill:#052f2b}
.fx-scanline{position:absolute;left:4%;right:4%;top:8%;height:.9cqw;border-radius:9px;opacity:0;background:linear-gradient(90deg,transparent,#7fe3d3,transparent);box-shadow:0 0 5cqw 1.2cqw rgba(127,227,211,.55)}
.fx-screen.is-on .fx-scanline{animation:fx-scan 2.4s ease-in-out infinite}
@keyframes fx-scan{0%{top:8%;opacity:0}12%{opacity:1}50%{top:88%}88%{opacity:1}100%{top:8%;opacity:0}}
.fx-scan-banner{position:absolute;left:6cqw;right:6cqw;bottom:8cqw;display:flex;align-items:center;gap:3cqw;padding:3.6cqw 4cqw;border-radius:6cqw;color:var(--fx-ink);background:rgba(255,255,255,.95);box-shadow:0 3cqw 8cqw rgba(0,0,0,.35);transform:translateY(170%)}
.fx-scan-banner img{flex:none;width:11cqw;height:11cqw;padding:1.6cqw;border-radius:3cqw;background:var(--fx-mint);object-fit:contain}
.fx-scan-banner div{display:grid;flex:1;min-width:0}
.fx-scan-banner b{font:800 4.4cqw/1.2 var(--fx-display);letter-spacing:-.02em}
.fx-scan-banner small{font-size:3.3cqw;color:var(--fx-soft)}
.fx-scan-banner .fx-icon{width:5cqw;height:5cqw;color:var(--fx-green-text)}
.fx-screen.is-on .fx-scan-banner{animation:fx-banner .9s var(--fx-ease) 1.5s both}
@keyframes fx-banner{from{transform:translateY(170%)}to{transform:none}}

/* écran 2 — ajout au Wallet */
.fx-screen--add{background:#f1f4f3;color:var(--fx-ink)}
.fx-screen--add .fx-status{color:#111}
.fx-add-bar{position:absolute;top:17cqw;left:6cqw;right:6cqw;display:flex;justify-content:space-between;font:600 4.2cqw/1 var(--fx-text);color:#1d6fdc}
.fx-add-bar b{font-weight:700}
.fx-screen--add .fx-pass{position:absolute;left:6cqw;right:6cqw;top:30cqw;width:auto}
.fx-screen.is-on .fx-pass--add{animation:fx-card-up 1s var(--fx-ease) .2s both}
@keyframes fx-card-up{from{transform:perspective(1000px) translateY(42cqw) rotate(-5deg);opacity:0}to{transform:perspective(1000px);opacity:1}}
.fx-add-btn{position:absolute;left:6cqw;right:6cqw;bottom:11cqw;height:14cqw;display:flex;align-items:center;justify-content:center;gap:2.6cqw;border-radius:99px;background:#0b0b0b;color:#fff;font:700 4.2cqw/1 var(--fx-text)}
.fx-add-btn .fx-icon{width:5.4cqw;height:5.4cqw}
.fx-screen.is-on .fx-add-btn{animation:fx-press .6s ease 1.7s both}
@keyframes fx-press{0%{transform:none}40%{transform:scale(.93)}100%{transform:none;background:#4a4f4e}}
.fx-added{position:absolute;left:50%;bottom:30cqw;display:flex;align-items:center;gap:2cqw;padding:2.8cqw 4.8cqw;border-radius:99px;background:#fff;color:var(--fx-green-text);font:700 3.8cqw/1 var(--fx-text);white-space:nowrap;box-shadow:0 2cqw 7cqw rgba(0,0,0,.16);opacity:0;transform:translateX(-50%) scale(.8)}
.fx-added .fx-icon{width:4.6cqw;height:4.6cqw}
.fx-screen.is-on .fx-added{animation:fx-added .6s var(--fx-ease) 2.2s both}
@keyframes fx-added{from{opacity:0;transform:translateX(-50%) scale(.8)}to{opacity:1;transform:translateX(-50%)}}

/* écran 3 — créditer */
.fx-screen--credit{background:#06100f}
.fx-wallet-title{position:absolute;top:18cqw;left:7cqw;font:800 8cqw/1 var(--fx-display);letter-spacing:-.03em}
.fx-screen--credit .fx-pass{position:absolute;left:6cqw;right:6cqw;top:34cqw;width:auto}
.fx-nfc{position:absolute;left:50%;bottom:25cqw;width:20cqw;height:20cqw;transform:translateX(-50%);display:grid;place-items:center}
.fx-nfc span{position:absolute;inset:0;border-radius:50%;border:.7cqw solid #2f7bff;opacity:0}
.fx-screen.is-on .fx-nfc span{animation:fx-wave 2.4s ease-out infinite}
.fx-nfc span:nth-child(2){animation-delay:.8s!important}
.fx-nfc span:nth-child(3){animation-delay:1.6s!important}
@keyframes fx-wave{0%{transform:scale(.5);opacity:.9}100%{transform:scale(1.8);opacity:0}}
.fx-nfc .fx-icon{width:9cqw;height:9cqw;color:#2f7bff}
.fx-nfc-text{position:absolute;bottom:13cqw;left:0;right:0;text-align:center;font:500 4cqw/1 var(--fx-text);color:rgba(255,255,255,.55)}
.fx-notif-mini{position:absolute;z-index:4;left:5cqw;right:5cqw;top:10cqw;display:flex;align-items:center;gap:3cqw;padding:3cqw 3.6cqw;border-radius:5cqw;color:var(--fx-ink);background:rgba(255,255,255,.95);box-shadow:0 3cqw 8cqw rgba(0,0,0,.4);transform:translateY(-230%)}
.fx-notif-mini img{flex:none;width:9.5cqw;height:9.5cqw;padding:1.4cqw;border-radius:2.6cqw;background:var(--fx-mint);object-fit:contain}
.fx-notif-mini div{display:grid}
.fx-notif-mini small{font-size:3cqw;color:var(--fx-soft)}
.fx-notif-mini b{font:800 4.3cqw/1.2 var(--fx-display)}
.fx-screen.is-on .fx-notif-mini{animation:fx-mini-notif 4.2s cubic-bezier(.2,1.2,.3,1) 1.1s both}
@keyframes fx-mini-notif{0%{transform:translateY(-230%)}14%{transform:none}82%{transform:none}100%{transform:translateY(-230%)}}

/* carte miniature (dans le téléphone) */
.fx-pass--mini{overflow:hidden;padding:5cqw 5.5cqw 5.6cqw;border-radius:7cqw}
.fx-pass--mini .fx-pass-kind{display:none}
.fx-pass--mini .fx-pass-brand{gap:2.4cqw;font-size:5.8cqw}
.fx-pass--mini .fx-initial{width:9cqw;height:9cqw;font-size:4.4cqw}
.fx-pass--mini .fx-pass-label{font-size:3cqw}
.fx-pass--mini .fx-pass-row{margin-top:5.5cqw}
.fx-pass--mini .fx-pass-value{font-size:7cqw;margin-top:1cqw}
.fx-pass--mini .fx-pass-reward{margin-top:5cqw}
.fx-pass--mini .fx-pass-reward strong{font-size:5cqw;margin-top:1cqw}
.fx-pass--mini .fx-gift{width:14cqw;height:14cqw;border-width:.6cqw}
.fx-pass--mini .fx-gift .fx-icon{width:6.8cqw;height:6.8cqw}
.fx-pass--mini .fx-stamps{gap:1cqw;margin-top:5.5cqw}
.fx-pass--mini .fx-stamp{max-width:7.6cqw}
.fx-pass--mini .fx-stamp::before{border-width:.5cqw}
.fx-screen.is-on .fx-stamp.is-on i{animation-name:fx-stamp-b;animation-delay:calc(var(--i,0) * 70ms + 250ms)}
.fx-stamp.late i{display:none}
.fx-screen.is-on .fx-stamp.late i{display:grid;animation:fx-stamp-c .6s cubic-bezier(.2,1.35,.4,1) 1.5s both}
.fx-stamp.late::after{content:"";position:absolute;inset:0;border-radius:50%;border:.6cqw solid var(--p-stamp);opacity:0;pointer-events:none}
.fx-screen.is-on .fx-stamp.late::after{animation:fx-ring .8s ease-out 1.5s forwards}
@keyframes fx-stamp-b{0%{transform:scale(1.9) rotate(-16deg);opacity:0}55%{transform:scale(.9) rotate(3deg);opacity:1}100%{transform:none;opacity:1}}
@keyframes fx-stamp-c{0%{transform:scale(1.9) rotate(-16deg);opacity:0}55%{transform:scale(.9) rotate(3deg);opacity:1}100%{transform:none;opacity:1}}
.fx-cnt{display:grid;justify-items:end}
.fx-cnt>span{grid-area:1/1}
.fx-cnt .b{opacity:0}
.fx-screen.is-on .fx-cnt .a{animation:fx-cnt-out .3s ease 1.55s forwards}
.fx-screen.is-on .fx-cnt .b{animation:fx-cnt-in .3s ease 1.55s forwards}
@keyframes fx-cnt-out{to{opacity:0;transform:translateY(-35%)}}
@keyframes fx-cnt-in{from{opacity:0;transform:translateY(35%)}to{opacity:1;transform:none}}

/* --- Bandeau défilant qui réagit au scroll ------------------------------- */
.fx-marquee{overflow:hidden;background:var(--fx-deep);color:#fff;padding-block:clamp(18px,3vw,34px);user-select:none}
.fx-marquee-track{display:flex;width:max-content;will-change:transform}
.fx-marquee-set{display:flex;align-items:center;flex:none}
.fx-marquee-set span{padding-inline:clamp(16px,3vw,40px);font:800 clamp(2.2rem,5.6vw,4.8rem)/1 var(--fx-display);letter-spacing:-.04em;white-space:nowrap}
.fx-marquee-set span:nth-of-type(even){color:transparent;-webkit-text-stroke:1.5px rgba(255,255,255,.6)}
.fx-marquee-set svg{flex:none;width:clamp(22px,3vw,38px);height:auto;fill:#7fe3d3}
@media (prefers-reduced-motion:reduce){.fx-marquee{display:none}}

/* --- Effets de survol ---------------------------------------------------- */
.fx-plan{overflow:hidden}
.fx-plan::before{display:none}
.fx-plan-tag{z-index:1}
.fx-plan--pro{padding-top:64px}
.fx-plan--pro .fx-plan-tag{top:18px}
@media (prefers-reduced-motion:no-preference){
  .fx-scene-mark{translate:calc(var(--px,0) * -28px) calc(var(--py,0) * -20px);transition:translate .6s ease-out}
  .fx-ghost--a{translate:calc(var(--px,0) * 12px) calc(var(--py,0) * 7px);transition:translate .6s ease-out}
  .fx-ghost--b{translate:calc(var(--px,0) * 7px) calc(var(--py,0) * 4px);transition:translate .6s ease-out}
}

/* --- Créateur de carte --------------------------------------------------- */
.fx-builder{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(20px,3vw,40px);margin-top:clamp(36px,5vw,64px);align-items:stretch}
.fx-builder-panel{display:grid;gap:24px;align-content:start;padding:clamp(22px,3vw,36px);border-radius:32px;background:#fff;box-shadow:0 30px 60px -42px rgba(5,47,43,.45)}
.fx-builder fieldset{border:0;margin:0;padding:0;min-width:0}
.fx-field{display:grid;gap:10px}
.fx-field>label,.fx-field>legend{display:flex;justify-content:space-between;align-items:baseline;gap:12px;width:100%;margin:0;padding:0;font:700 .9375rem/1.2 var(--fx-text);color:var(--fx-ink)}
.fx-field output{font-weight:600;color:var(--fx-green-text)}
.fx-field input[type=text]{width:100%;height:52px;margin:0;padding:0 16px;border:1.5px solid var(--fx-line);border-radius:14px;background:var(--fx-paper);box-shadow:none;font:500 1rem var(--fx-text);color:var(--fx-ink);transition:border-color .2s,box-shadow .2s}
.fx-field input[type=text]:focus{outline:none;border-color:var(--fx-green);box-shadow:0 0 0 4px rgba(15,143,131,.16)}
.fx-chips{display:flex;flex-wrap:wrap;gap:8px}
.fx-chip{min-height:42px;padding:0 16px;border:1.5px solid var(--fx-line);border-radius:999px;background:transparent;color:var(--fx-ink);font:600 .9375rem/1 var(--fx-text);cursor:pointer;transition:background-color .2s,color .2s,border-color .2s,transform .2s var(--fx-ease)}
.fx-chip:hover{border-color:var(--fx-ink)}
.fx-chip:active{transform:scale(.96)}
.fx-chip.is-on{background:var(--fx-ink);border-color:var(--fx-ink);color:#fff}
.fx-swatches{display:flex;flex-wrap:wrap;gap:12px}
.fx-swatch{position:relative;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--c);cursor:pointer;box-shadow:inset 0 0 0 1px rgba(15,32,29,.18);transition:transform .25s var(--fx-ease)}
.fx-swatch:hover{transform:scale(1.1)}
.fx-swatch::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2.5px solid var(--fx-ink);opacity:0;transform:scale(.85);transition:opacity .2s,transform .3s var(--fx-ease)}
.fx-swatch[aria-checked="true"]::after{opacity:1;transform:none}
.fx-seg{display:inline-flex;width:fit-content;padding:4px;border-radius:999px;background:var(--fx-mint);gap:4px}
.fx-seg button{min-height:42px;padding:0 22px;border:0;border-radius:999px;background:transparent;color:var(--fx-soft);font:700 .9375rem/1 var(--fx-text);cursor:pointer;transition:background-color .2s,color .2s}
.fx-seg button.is-on{background:var(--fx-ink);color:#fff}
.fx-field input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:28px;margin:0;padding:0;background:transparent;cursor:pointer;--pct:50%}
.fx-field input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:99px;background:linear-gradient(90deg,var(--fx-green-ui) var(--pct),var(--fx-mint-2) var(--pct))}
.fx-field input[type=range]::-moz-range-track{height:6px;border-radius:99px;background:var(--fx-mint-2)}
.fx-field input[type=range]::-moz-range-progress{height:6px;border-radius:99px;background:var(--fx-green-ui)}
.fx-field input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-10px;border:4px solid #fff;border-radius:50%;background:var(--fx-green-ui);box-shadow:0 2px 8px rgba(5,47,43,.4)}
.fx-field input[type=range]::-moz-range-thumb{width:18px;height:18px;border:4px solid #fff;border-radius:50%;background:var(--fx-green-ui);box-shadow:0 2px 8px rgba(5,47,43,.4)}
.fx-builder-stage{display:grid;align-content:center;justify-items:center;gap:22px;padding:clamp(28px,5vw,64px) clamp(18px,4vw,48px);border-radius:48px 140px 48px 48px;background:var(--stage,#cfe9e3);transition:background-color .5s ease}
.fx-builder-stage .fx-pass{max-width:430px;width:100%}
.fx-builder-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}
.fx-builder-note{font-size:.9375rem;color:var(--fx-ink);opacity:.7;text-align:center}
.fx-pass [hidden]{display:none!important}
.fx-meter i{transition:width .6s var(--fx-ease)}

/* --- Responsive du parcours et du créateur ------------------------------- */
@media (max-width:900px){
  .fx-story-grid{grid-template-columns:1fr;grid-template-areas:"head" "phone" "steps"}
  .fx-story-grid>.fx-phone-panel{position:relative;top:auto;height:min(560px,calc(100svh - 150px));min-height:440px}
  .fx-story .fx-steps li,.fx-story .fx-steps li:last-child{min-height:0;padding-bottom:30px}
  .fx-story .fx-steps li:last-child{padding-bottom:0}
  .fx-builder{grid-template-columns:1fr}
  .fx-builder-stage{border-radius:36px 96px 36px 36px}
}
@media (max-width:600px){
  .fx-chip{padding:0 14px}
  .fx-builder-actions .fx-btn{flex:1 1 100%}
}

/* --- Menu : jamais de retour à la ligne ---------------------------------- */
.fx-nav a{white-space:nowrap}
@media (max-width:1180px) and (min-width:901px){
  .fx-header-inner{gap:16px}
  .fx-nav-content{gap:12px}
  .fx-nav a{padding:10px 10px;font-size:.9rem}
  .fx-header-actions .fx-btn{padding:0 15px;font-size:.9rem}
}
@media (max-width:600px){
  .fx-swatches{gap:9px}
  .fx-swatch{width:40px;height:40px}
}

/* Avoid nested focus frames and costly background animation under dialogs. */
#loginModal .auth-input input,
#loginModal .auth-input input:focus,
#loginModal .auth-input input:focus-visible{
 flex:1;min-width:0!important;width:100%!important;margin:0!important;padding:0!important;
 border:0!important;border-radius:0!important;background:transparent!important;
 outline:none!important;box-shadow:none!important;filter:none!important;
}
body.fx-modal-open #siteMain *,body.fx-modal-open #siteMain *::before,
body.fx-modal-open #siteMain *::after{animation-play-state:paused!important}
body.fx .modal{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}

/* Video-driven timeline, using small opacity/transform transitions only. */
.fx-story .fx-steps li.fx-video-step{cursor:default}
.fx-steps li.fx-video-step::after{display:none}
.fx-step-trail{position:absolute;left:23px;top:60px;bottom:8px;width:6px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;pointer-events:none}
.fx-step-trail i{display:block;width:4px;height:6px;border-radius:3px;background:var(--fx-green-ui);opacity:.2;transition:opacity .2s,transform .2s}
.fx-step-trail i.is-filled{opacity:.65}
.fx-step-trail i.is-spark{opacity:1;transform:scale(1.6);background:var(--fx-green-text)}
.fx-anim .fx-steps li.fx-video-step:not(.is-lit) h3,.fx-anim .fx-steps li.fx-video-step:not(.is-lit) p{opacity:.8}
.fx-steps li.fx-video-step.is-active::before{box-shadow:0 0 0 5px var(--fx-mint)}
@media(prefers-reduced-motion:reduce){.fx-step-trail i{transition:none;opacity:.65}.fx-step-trail i.is-spark{transform:none}}

/* ==========================================================================
   Maquette du tableau de bord (page d'accueil)
   Reprend la structure du vrai espace commerçant (templates/merchant/scanner.html.twig) :
   menu latéral foncé, barre du haut, bandeau « Bonjour », 4 compteurs,
   « Aujourd'hui » et « Derniers passages », aux couleurs de la marque.
   ========================================================================== */
.fx-dash{
  display:grid;grid-template-columns:164px minmax(0,1fr);min-height:540px;
  border-radius:28px 28px 0 0;overflow:hidden;background:#f3f7f5;color:var(--fx-ink);
  box-shadow:0 -24px 90px -30px rgba(0,0,0,.55);font:500 .8125rem/1.4 var(--fx-text);
}
.fx-dash .fx-icon{width:15px;height:15px}
.fx-dash-side{display:flex;flex-direction:column;gap:6px;padding:20px 12px 16px;color:rgba(255,255,255,.72);
  background:radial-gradient(120% 60% at 0% 100%,rgba(15,143,131,.35),transparent 60%),var(--fx-deep-2)}
.fx-dash-side img{width:104px;height:34px;object-fit:contain;object-position:left center;margin:0 0 18px 6px}
.fx-dash-side>small{padding:0 10px 4px;font-weight:700;font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.42)}
.fx-dash-side ul{display:grid;gap:2px;margin:0;padding:0;list-style:none}
.fx-dash-side li{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:10px;font-size:.72rem;white-space:nowrap}
.fx-dash-side li.is-active{background:rgba(127,227,211,.14);color:#fff;font-weight:700;box-shadow:inset 0 0 0 1px rgba(127,227,211,.18)}
.fx-dash-side li.is-active .fx-icon{color:#7fe3d3}
.fx-dash-quit{display:flex;align-items:center;gap:9px;margin-top:auto;padding:8px 10px;font-size:.72rem}

.fx-dash-main{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;min-width:0}
.fx-dash-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;background:#fff;border-bottom:1px solid var(--fx-line)}
.fx-dash-top small{display:block;font-weight:700;font-size:.56rem;letter-spacing:.12em;text-transform:uppercase;color:var(--fx-soft)}
.fx-dash-top strong{display:block;font-weight:700;font-size:.8rem}
.fx-dash-chip{display:flex;align-items:center;gap:7px;padding:5px 10px 5px 5px;border:1px solid var(--fx-line);border-radius:12px;font-weight:700;font-size:.68rem;white-space:nowrap}
.fx-dash-chip i{display:grid;place-items:center;width:22px;height:22px;border-radius:7px;background:var(--fx-green-ui);color:#fff;font:800 .62rem/1 var(--fx-display);font-style:normal}
.fx-dash-body{display:grid;gap:12px;padding:16px 18px 0;min-width:0}

.fx-dash-hero{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;border-radius:20px;color:#fff;
  background:radial-gradient(70% 140% at 100% 0%,rgba(19,168,153,.55),transparent 62%),var(--fx-deep)}
.fx-dash-hero::after{content:"";position:absolute;z-index:-1;right:-40px;top:-60px;width:200px;height:200px;border-radius:50%;border:26px solid rgba(255,255,255,.05)}
.fx-dash-hello{min-width:0}
.fx-dash-hello small{display:block;font-weight:700;font-size:.54rem;letter-spacing:.14em;color:#8fe0d2}
.fx-dash-hello strong{display:block;margin:5px 0 5px;font:800 1.45rem/1.05 var(--fx-display);letter-spacing:-.04em;white-space:nowrap}
.fx-dash-hello p{margin:0;max-width:34ch;font-size:.68rem;line-height:1.45;color:rgba(255,255,255,.75)}
.fx-dash-actions{display:flex;flex:none;gap:7px}
.fx-dash-actions span{display:inline-flex;align-items:center;min-height:30px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,255,255,.3);font-weight:700;font-size:.64rem;white-space:nowrap}
.fx-dash-actions span:last-child{background:#fff;border-color:#fff;color:var(--fx-deep)}

.fx-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.fx-kpis>div{display:grid;gap:3px;min-width:0;padding:11px 12px;border-radius:16px;background:#fff;border:1px solid var(--fx-line)}
.fx-kpis>div>.fx-icon{width:28px;height:28px;margin-bottom:5px;padding:7px;border-radius:10px;background:var(--fx-mint);color:var(--fx-green-text);box-sizing:border-box}
.fx-kpis small{display:block;min-height:2.5em;font-weight:600;font-size:.62rem;line-height:1.25;color:var(--fx-soft)}
.fx-kpis strong{display:block;font:800 1.25rem/1.1 var(--fx-display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}

.fx-dash-head small{display:block;font-weight:700;font-size:.54rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fx-green-text)}
.fx-dash-head strong{display:block;margin-top:2px;font:800 1.15rem/1.1 var(--fx-display);letter-spacing:-.035em}
.fx-dash-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:10px}
.fx-today,.fx-activity{padding:14px 15px 4px;border-radius:18px 18px 0 0;background:#fff;border:1px solid var(--fx-line);border-bottom:0}
.fx-today>strong,.fx-activity>strong{display:block;margin-bottom:4px;font:700 .85rem/1.2 var(--fx-display);letter-spacing:-.02em}
.fx-today p{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:11px 0;border-bottom:1px solid var(--fx-line);font-size:.7rem;color:var(--fx-soft)}
.fx-today p:last-child{border-bottom:0}
.fx-today p b{font:800 1.1rem/1 var(--fx-display);color:var(--fx-green-text);font-variant-numeric:tabular-nums}
.fx-activity ul{margin:0;padding:0;list-style:none}
.fx-activity li{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:8px;font-size:.72rem;white-space:nowrap;align-items:center;padding:8px 0;border-bottom:1px solid var(--fx-line);overflow:hidden}
.fx-activity li:last-child{border-bottom:0}
.fx-avatar{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--fx-mint);color:var(--fx-green-text);font-weight:800;font-size:.62rem}
.fx-activity b{font-weight:700;overflow:hidden;text-overflow:ellipsis}
.fx-activity small{color:var(--fx-soft);font-size:.64rem}

@media (max-width:1240px) and (min-width:1081px){
  .fx-dash{grid-template-columns:minmax(0,1fr)}
  .fx-dash-side{display:none}
}
@media (max-width:720px){
  .fx-dash{grid-template-columns:minmax(0,1fr);min-height:0;border-radius:22px 22px 0 0}
  .fx-dash-side{display:none}
  .fx-dash-top{padding:10px 12px}
  .fx-dash-body{padding:12px 12px 0;gap:10px}
  .fx-dash-hero{flex-direction:column;align-items:flex-start;padding:16px}
  .fx-dash-hello strong{font-size:1.25rem}
  .fx-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fx-dash-cols{grid-template-columns:minmax(0,1fr)}
  .fx-today{display:none}
}
@media (max-width:420px){
  .fx-dash-actions span:first-child{display:none}
  .fx-kpis>div{padding:10px}
  .fx-kpis>div>.fx-icon{width:26px;height:26px;padding:6px}
}
