/* ============================================================
   HOTELLA — Site web · Accueil  ·  PROPOSITION 2
   Page CLAIRE, comme le site live. Structure des sections
   reprise de test.hotella.io ; seul l'habillage change.
   Deux panneaux sombres seulement (bandeau de marque + CTA),
   exactement comme sur le site actuel. Contenu identique.
   ============================================================ */

:root{
  /* --- surfaces claires --- */
  --paper:#FFFFFF; --ivory:#F4F8FD; --ivory-2:#EAF1FA;
  --line:#E3EBF5; --line-strong:#CEDCEC;

  /* --- fonds sombres (bandeau + CTA + pied de page) --- */
  --abyss:#04050F; --navy-900:#070B1C; --navy-800:#0B1226; --navy-700:#111C3A; --navy-600:#16244A;

  /* --- accent de marque --- */
  --teal:#0574A0; --electric:#0BA9EE; --cyan:#35D6FF; --cyan-200:#9BE4FF; --water:#C9F5F4;
  --azure:#116BC7;    /* bleu profond pour le texte : 5,3:1 sur blanc, là où --electric ne donne que 2,7:1 */
  --grad:linear-gradient(118deg,var(--teal) 0%,var(--electric) 48%,var(--cyan) 100%);
  /* Variante pour le TEXTE sur fond clair. Le --grad de marque finit sur
     du cyan à 1,7:1 sur blanc : illisible. Celle-ci reste entre 5,2 et
     3,2:1 d'un bout à l'autre, donc toujours au-dessus du seuil des
     grands titres. Sur fond sombre on reprend --grad, bien plus vif. */
  --grad-ink:linear-gradient(104deg,var(--teal) 0%,#0787C4 46%,#0999D7 100%);
  /* Et l'inverse pour le TEXTE sur fond sombre : là c'est le teal du
     --grad qui s'éteint (1,66:1). On part donc du bleu vif. */
  --grad-lite:linear-gradient(104deg,#2FB7F2 0%,var(--cyan) 55%,#7FE0FF 100%);

  /* --- encres (contrastes mesurés sur blanc) --- */
  --ink:#0B1B33;      /* 17,2:1 */
  --body:#41506A;     /*  8,1:1 */
  --muted:#5B6B85;    /*  6,0:1 */
  /* --- encres sur fond sombre --- */
  --ink-d:#F4FAFF; --body-d:rgba(226,240,255,.82); --muted-d:rgba(203,224,255,.62);
  --line-d:rgba(173,205,255,.16); --line-d-strong:rgba(173,205,255,.28);
  --glass-d:rgba(146,186,255,.09);

  --r-md:16px; --r-lg:24px; --r-xl:32px; --r-slab:30px; --r-big:48px; --r-pill:100px;
  --sh-sm:0 2px 10px rgba(11,27,51,.05);
  --sh-md:0 16px 44px -20px rgba(11,27,51,.26);
  --sh-lg:0 34px 80px -34px rgba(11,27,51,.34);
  --ease:cubic-bezier(.22,.8,.26,1); --ease-out:cubic-bezier(.16,1,.3,1);
  --sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --gut:clamp(20px,5vw,72px); --maxw:1320px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--body);font-family:var(--sans);
  font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:rgba(53,214,255,.26)}
:focus-visible{outline:2px solid var(--electric);outline-offset:3px;border-radius:8px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}
.wrap--wide{max-width:1560px}
section{position:relative}

/* ---------- typographie ---------- */
h1,h2,h3,h4,h5{color:var(--ink);margin:0;font-weight:700;letter-spacing:-.025em;line-height:1.12}
.h-hero{font-size:clamp(40px,6.2vw,96px);line-height:1;letter-spacing:-.04em;font-weight:700}
.h-sec{font-size:clamp(28px,3.6vw,52px);letter-spacing:-.032em}
/* un cran sous .h-sec, pour les titres internes à une section */
.h-sub{font-size:clamp(21px,2.1vw,30px);letter-spacing:-.026em;line-height:1.2;
  color:var(--ink);margin-bottom:14px}
.on-dark .h-sub{color:var(--ink-d)}
.h-card{font-size:19px;letter-spacing:-.014em;line-height:1.3}
.lede{font-size:clamp(15.5px,1.2vw,18px);line-height:1.62;color:var(--body);margin:0}
/* Un lien au fil du texte doit se distinguer autrement que par la
   couleur seule. Sans cette règle il héritait de `--body` et n'était pas
   même d'une autre teinte : rien ne le signalait. Teal + soulignement,
   5,23:1 sur blanc. (Un seul lien de ce type sur le site aujourd'hui.) */
.lede a{color:var(--teal);text-decoration:underline;text-underline-offset:3px;
  text-decoration-thickness:1px}
.lede a:hover{color:var(--azure)}
.grad-text{background:var(--grad-ink);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent}
/* sur fond sombre, on repart du bleu vif vers le cyan */
.hero .grad-text,.on-dark .grad-text{background:var(--grad-lite);
  -webkit-background-clip:text;background-clip:text}
/* variante sur fond sombre */
.on-dark{color:var(--body-d)}
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4{color:var(--ink-d)}
.on-dark .lede{color:var(--body-d)}

/* ============================================================
   VERRE LIQUIDE
   Recette du gabarit Asme : un liseré en dégradé posé sur le bord,
   clair en haut et en bas, transparent au milieu. C'est lui qui
   donne l'épaisseur ; le flou ne fait que le reste.
   `.lg` sur fond sombre, `.lg--ink` sur fond clair.
   ============================================================ */
.lg{position:relative;isolation:isolate;
  -webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.12)}
.lg::before{content:"";position:absolute;inset:0;z-index:3;
  border-radius:inherit;padding:1.4px;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.5),rgba(255,255,255,.16),
    rgba(255,255,255,0) 38%,rgba(255,255,255,0) 62%,
    rgba(255,255,255,.16),rgba(255,255,255,.5));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
          mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude}
/* même liseré, encré, pour les surfaces claires */
.lg--ink{box-shadow:inset 0 1px 1px rgba(255,255,255,.9)}
.lg--ink::before{background:linear-gradient(rgba(11,27,51,.26),rgba(11,27,51,.1),
  rgba(11,27,51,0) 38%,rgba(11,27,51,0) 62%,rgba(11,27,51,.1),rgba(11,27,51,.26))}

/* ---------- boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;
  border-radius:var(--r-pill);border:0;cursor:pointer;font-family:var(--sans);font-size:15.5px;font-weight:600;
  transition:transform .22s var(--ease),box-shadow .3s var(--ease),background .3s,border-color .3s,color .3s}
.btn:active{transform:scale(.976)}
.btn svg{width:17px;height:17px;flex:none;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;transition:transform .28s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.btn--primary{background:var(--grad);color:#042033;box-shadow:0 14px 32px -14px rgba(11,169,238,.75)}
.btn--primary:hover{box-shadow:0 20px 44px -14px rgba(11,169,238,.9)}
.btn--ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line-strong)}
.btn--ghost:hover{border-color:var(--electric);color:var(--teal)}
.on-dark .btn--ghost{color:var(--ink-d);border-color:var(--line-d-strong);background:var(--glass-d);
  backdrop-filter:blur(14px)}
.on-dark .btn--ghost:hover{border-color:var(--cyan);color:#fff;background:rgba(146,186,255,.16)}
.btn--glass{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.3);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.btn--glass:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.5)}
.btns{display:flex;flex-wrap:wrap;gap:14px}

/* Le liseré de verre sur les boutons. Clair sur les fonds colorés
   ou sombres, encré sur le bouton clair. */
.btn--primary,.btn--glass,.btn--ghost{position:relative;isolation:isolate}
.btn--primary::before,.btn--glass::before,.btn--ghost::before{
  content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;
  padding:1.4px;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.62),rgba(255,255,255,.2),
    rgba(255,255,255,0) 44%,rgba(255,255,255,0) 56%,
    rgba(255,255,255,.2),rgba(255,255,255,.55));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
          mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude}
/* le bouton clair reçoit un liseré encré, sinon il serait invisible */
.btn--ghost::before{background:linear-gradient(rgba(11,27,51,.3),rgba(11,27,51,.12),
  rgba(11,27,51,0) 44%,rgba(11,27,51,0) 56%,rgba(11,27,51,.12),rgba(11,27,51,.3))}
.on-dark .btn--ghost::before{background:linear-gradient(rgba(255,255,255,.55),rgba(255,255,255,.18),
  rgba(255,255,255,0) 44%,rgba(255,255,255,0) 56%,rgba(255,255,255,.18),rgba(255,255,255,.55))}

/* ---------- navigation (la nôtre, inchangée) ---------- */
.nav{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:80;display:flex;align-items:center;
  gap:8px;padding:8px 8px 8px 20px;border-radius:var(--r-pill);background:rgba(7,11,28,.52);
  border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(22px) saturate(1.5);
  -webkit-backdrop-filter:blur(22px) saturate(1.5);box-shadow:0 18px 50px -26px rgba(0,5,20,.8);
  transition:background .35s,border-color .35s,box-shadow .35s;max-width:calc(100vw - 32px);
  isolation:isolate}
/* le liseré de verre de la barre : clair en haut et en bas, absent au milieu */
.nav::before{content:"";position:absolute;inset:0;z-index:3;border-radius:inherit;
  padding:1.4px;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.58),rgba(255,255,255,.18),
    rgba(255,255,255,0) 42%,rgba(255,255,255,0) 58%,
    rgba(255,255,255,.18),rgba(255,255,255,.5));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
          mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  transition:background .35s}
/* une fois sur fond clair, le liseré s'encre */
.nav.is-stuck::before{background:linear-gradient(rgba(11,27,51,.22),rgba(11,27,51,.08),
  rgba(11,27,51,0) 42%,rgba(11,27,51,0) 58%,rgba(11,27,51,.08),rgba(11,27,51,.22))}
.nav__brand{display:flex;align-items:center;flex:none;margin-right:12px}
.nav__brand img{height:22px;width:auto}
.nav__links{display:flex;align-items:center;gap:4px}
.nav__links a{padding:9px 14px;border-radius:var(--r-pill);font-size:14px;font-weight:500;
  color:rgba(233,243,255,.78);white-space:nowrap;transition:color .25s,background .25s}
.nav__links a:hover{color:#fff;background:rgba(255,255,255,.1)}
.nav .btn{min-height:44px;padding:0 20px;font-size:14px;white-space:nowrap}  /* plancher tactile 44 px */
/* une fois sorti du héros, la pastille passe en clair */
.nav.is-stuck{background:rgba(255,255,255,.86);border-color:var(--line);
  box-shadow:0 14px 40px -24px rgba(11,27,51,.5)}
.nav.is-stuck .nav__brand img{filter:brightness(0) saturate(100%) invert(9%) sepia(28%) saturate(1800%) hue-rotate(185deg)}
.nav.is-stuck .nav__links a{color:var(--body)}
.nav.is-stuck .nav__links a:hover{color:var(--teal);background:var(--ivory)}
.nav__burger{display:none;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.28);
  background:rgba(255,255,255,.12);cursor:pointer;align-items:center;justify-content:center}
.nav__burger span{display:block;width:16px;height:1.5px;background:#fff;position:relative}
.nav__burger span::before,.nav__burger span::after{content:"";position:absolute;left:0;width:16px;height:1.5px;background:#fff}
.nav__burger span::before{top:-5px}.nav__burger span::after{top:5px}
.nav.is-stuck .nav__burger{border-color:var(--line-strong);background:var(--ivory)}
.nav.is-stuck .nav__burger span,.nav.is-stuck .nav__burger span::before,.nav.is-stuck .nav__burger span::after{background:var(--ink)}
/* ---------- le menu « Solutions » ----------
   D'après le panneau de Hoteza : panneau absolu, `opacity:0` +
   `translateY(-.5rem)` au repos, et surtout `pointer-events:none` tant
   qu'il est fermé — sans ça il intercepterait les clics de la page.
   Mêmes ressorts ici, calés sur la pastille au lieu d'un bandeau. */
.nav__trigger{display:inline-flex;align-items:center;gap:6px}
.nav__chev{width:11px;height:11px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round;transition:transform .32s var(--ease)}
.nav.mega-open .nav__chev{transform:rotate(180deg)}

/* `fixed` et non `absolute` : le panneau est sorti de <nav> pour que son
   flou voie la page (voir le commentaire dans le HTML). La barre fait
   18 px de haut d'écart + 62 px de haut, d'où les 92 px. Elle est centrée
   dans la fenêtre, donc centrer le panneau dans la fenêtre le centre
   aussi sur elle. */
.mega{position:fixed;top:92px;left:50%;z-index:79;
  width:min(748px,calc(100vw - 28px));
  opacity:0;pointer-events:none;transform:translate(-50%,-8px);
  transition:opacity .34s var(--ease),transform .34s var(--ease)}
.mega.is-open{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
/* passerelle invisible : sans elle, traverser les 12 px entre la pastille
   et le panneau ferait sortir la souris des deux et refermerait */
.mega::before{content:"";position:absolute;left:0;right:0;top:-14px;height:14px}

/* ESSAI — le panneau en verre plutôt qu'en blanc plein. Il porte `lg
   lg--ink` pour le liseré encré ; le fond et le flou sont redéfinis ici
   (plus de flou que le `.lg` générique : le panneau est grand et la
   vidéo du héros passe derrière). */
.mega__inner{display:grid;grid-template-columns:minmax(0,1fr) 284px;gap:28px;padding:26px;
  background:rgba(255,255,255,.84);
  -webkit-backdrop-filter:blur(30px) saturate(1.6);backdrop-filter:blur(30px) saturate(1.6);
  border:1px solid rgba(255,255,255,.55);border-radius:26px;
  box-shadow:0 32px 72px -34px rgba(11,27,51,.5),inset 0 1px 1px rgba(255,255,255,.9)}
/* le filet entre les deux colonnes doit tenir sur verre comme sur blanc */
.mega__side{border-left-color:rgba(11,27,51,.12)}
/* ESSAI VERRE — l'intertitre et le lien ont été assombris : derrière le
   panneau il peut y avoir le ciel de nuit du film du héros, dont la
   moyenne locale tombe à rgb(7,7,1). Sur ce fond, à .84 d'opacité, le
   `--muted` de marque ne tenait que 3,76:1 et le `--teal` 3,65:1.
   On revient à `--muted` et `--teal` si le fond blanc est rétabli. */
.mega__label{margin:0 0 14px;font-size:11.5px;font-weight:600;letter-spacing:.17em;
  text-transform:uppercase;color:var(--body)}

/* Hoteza range ses douze produits sur deux colonnes ; à quatre, deux
   colonnes laissaient la moitié gauche du panneau vide sous la liste.
   Une seule colonne équilibre les deux côtés — et c'est d'ailleurs la
   disposition du menu déroulant du site live. */
.mega__list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.mega .mega__link{display:flex;align-items:center;gap:14px;padding:10px;border-radius:16px;
  background:transparent;transition:background .3s var(--ease)}
.mega .mega__link:hover{background:var(--ivory)}
/* Hoteza inverse la pastille au survol : la ligne se teinte, la pastille
   passe au blanc. Repris tel quel, en cyan de marque. */
.mega__ic{flex:none;display:grid;place-items:center;width:46px;height:46px;border-radius:13px;
  background:rgba(11,169,238,.1);transition:background .3s var(--ease),box-shadow .3s var(--ease)}
.mega .mega__link:hover .mega__ic{background:var(--paper);box-shadow:0 0 0 1px var(--line)}
.mega__ic svg{width:21px;height:21px;fill:none;stroke:var(--teal);stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.mega__name{display:block;font-size:14.5px;font-weight:600;color:var(--ink)}
.mega__desc{display:block;margin-top:2px;font-size:12.5px;line-height:1.38;color:var(--body)}

.mega__side{border-left:1px solid var(--line);padding-left:28px}
.mega .mega__card{display:block;padding:0;border-radius:0;background:transparent}
.mega__img{display:block;height:148px;margin-bottom:16px;border-radius:14px;overflow:hidden;
  background:var(--ivory)}
.mega__img img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s var(--ease)}
.mega .mega__card:hover .mega__img img{transform:scale(1.05)}
.mega__card-title{display:block;font-size:17px;font-weight:700;letter-spacing:-.018em;
  color:var(--ink);margin-bottom:7px}
.mega__card-text{display:block;font-size:12.5px;line-height:1.45;color:var(--body);margin-bottom:12px}
/* le soulignement qui se déroule depuis la gauche, repris de Hoteza */
.mega__card-link{position:relative;display:inline-block;font-size:12.5px;font-weight:600;color:#055D80}
.mega__card-link::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left center;
  transition:transform .4s var(--ease)}
.mega .mega__card:hover .mega__card-link::after{transform:scaleX(1)}

/* Sous 1180 px la barre passe au menu compact : le panneau n'a plus de
   place, et « Solutions » redevient un lien vers la section. */
@media (max-width:1180px){.mega,.nav__chev{display:none}}
@media (prefers-reduced-motion:reduce){.mega,.mega__img img{transition:none}}

.progress{position:fixed;top:0;left:0;height:2px;z-index:90;width:0;background:var(--grad);
  box-shadow:0 0 14px rgba(53,214,255,.7);transition:width .1s linear}

/* ---------- 00 · HÉROS (film, texte minimal) ---------- */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;background:var(--abyss);
  text-align:center;padding:150px 0 110px}
.hero__video{position:absolute;inset:0;z-index:0}
.hero__video video,.hero__video img{width:100%;height:100%;object-fit:cover}
.hero__video img{position:absolute;inset:0;transition:opacity .9s var(--ease)}
.hero__video.is-playing img{opacity:0}
/* Voile : dégradé vertical + vignette centrée derrière le texte.
   La vignette garantit le contraste du titre même sur les images
   les plus claires du film (écrans blancs, lampes) sans ternir
   les bords de l'image. */
.hero__scrim{position:absolute;inset:0;z-index:1;
  background:
    radial-gradient(62% 48% at 50% 52%,rgba(2,6,20,.66) 0%,rgba(2,6,20,.42) 48%,transparent 74%),
    linear-gradient(180deg,rgba(0,5,27,.56) 0%,rgba(0,5,27,.34) 36%,rgba(0,5,27,.60) 72%,rgba(4,5,15,.92) 100%)}
.hero .wrap{position:relative;z-index:2}
.hero__eyebrow{display:block;font-size:clamp(14px,1.15vw,17px);font-weight:600;color:var(--cyan-200);margin-bottom:20px}
.hero h1{color:#fff;max-width:15ch;margin-inline:auto}
.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line>span{display:block;transform:translateY(106%);animation:riseIn 1.05s var(--ease-out) forwards}
.hero h1 .line:nth-child(2)>span{animation-delay:.1s}
@keyframes riseIn{to{transform:none}}
.hero .btns{justify-content:center;margin-top:38px}
.btn--watch{background:#fff;color:#06101F;min-height:56px;padding:0 30px 0 22px;gap:12px}
.btn--watch:hover{background:#fff;box-shadow:0 16px 40px -18px rgba(0,0,0,.6)}
.btn--watch .ic{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--grad)}
.btn--watch .ic svg{width:14px;height:14px;fill:#042033;stroke:none;transition:none}
.hero__cue{position:absolute;left:0;right:0;bottom:36px;z-index:2;display:flex;flex-direction:column;
  align-items:center;gap:10px;font-size:14px;font-weight:500;color:rgba(233,243,255,.76)}
.hero__cue i{display:block;width:1px;height:34px;background:linear-gradient(var(--cyan),transparent);
  animation:cue 2.4s var(--ease) infinite}
@keyframes cue{0%,100%{opacity:.25;transform:scaleY(.55)}50%{opacity:1;transform:scaleY(1)}}

/* ---------- rythme ---------- */
.sec{padding:clamp(74px,8vw,124px) 0}
.sec--ivory{background:var(--ivory)}
.sec__head{max-width:720px;margin-bottom:clamp(36px,4.4vw,58px)}
.sec__head.is-center{margin-inline:auto;text-align:center}
.sec__head .lede{margin-top:18px}
.sec__head .btns{margin-top:28px}
.head-split{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;
  margin-bottom:clamp(36px,4.4vw,58px);flex-wrap:wrap}
.head-split .sec__head{margin-bottom:0}
/* En-tete en deux colonnes, d'apres hoteza.com/products/platform : chez elle
   .title-description__inner est une grille 569,8 / 585 px sur 1185 avec
   30 px d'ecart, soit deux parts egales, le titre a gauche et le chapo a
   droite, tous deux cales en haut. Repris tel quel ; seuls les corps de
   texte sont les notres. */
.sec__head--row{max-width:none;display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(18px,2.4vw,34px);align-items:start}
.sec__head--row .lede{margin-top:0;max-width:46ch}
@media (max-width:860px){
  .sec__head--row{grid-template-columns:minmax(0,1fr);gap:16px}
}

/* ---------- 01 · L'AVANTAGE (volets qui s'ouvrent) ---------- */
.adv-head{display:flex;flex-direction:column;gap:26px;margin-bottom:clamp(34px,4vw,50px)}
.adv-head__right{color:var(--muted);max-width:380px;font-size:15.5px;line-height:1.62;margin:0}
@media (min-width:860px){
  .adv-head{flex-direction:row;justify-content:space-between;align-items:flex-end}
  .adv-head__left{max-width:640px}
}

/* le plateau qui contient les quatre volets */
.canvas{background:var(--ivory);padding:12px;border-radius:32px;display:flex;flex-direction:column;
  gap:12px;align-items:stretch;min-height:420px}
@media (min-width:1024px){ .canvas{flex-direction:row;align-items:center;padding:14px} }

/* un volet */
.fcard{position:relative;overflow:hidden;cursor:pointer;background:rgba(255,255,255,.72);
  border:2px solid transparent;border-radius:24px;padding:clamp(22px,2.4vw,32px);
  display:flex;flex-direction:column;height:148px;width:100%;
  transition:height .6s cubic-bezier(.4,0,.2,1),flex-grow .6s cubic-bezier(.4,0,.2,1),
             background .4s,border-color .4s,box-shadow .4s}
.fcard.is-open{height:470px;background:#fff;border-color:#fff;box-shadow:0 14px 36px -14px rgba(11,27,51,.22)}
.fcard:focus-visible{outline:2px solid var(--electric);outline-offset:3px}

@media (min-width:1024px){
  .fcard{flex-direction:row;align-items:center;gap:clamp(20px,2.2vw,32px);padding:26px 22px;
    height:430px;width:auto;flex:1 1 0;min-width:156px}
  .fcard.is-open{padding:clamp(26px,2.4vw,34px)}
  .fcard.is-open{height:430px;flex-grow:3.3}
}

.fcard__text{flex:1 1 0;display:flex;flex-direction:column;justify-content:space-between;height:100%;min-width:0;overflow-wrap:break-word}
.fcard__num{font-size:19px;font-weight:700;letter-spacing:.02em;color:var(--teal)}
.fcard.is-open .fcard__num{color:var(--ink)}   /* 17,2:1 — le volet ouvert est aussi le plus lisible */
.fcard__body{margin-top:auto;display:flex;flex-direction:column;gap:12px}
.fcard__title{font-size:clamp(18px,1.55vw,22px);font-weight:700;letter-spacing:-.03em;line-height:1.14;color:var(--ink)}
.fcard__desc{margin:0;font-size:14px;line-height:1.6;color:var(--muted);
  opacity:0;max-height:0;overflow:hidden;transition:opacity .45s var(--ease) .12s,max-height .55s var(--ease)}
.fcard.is-open .fcard__desc{opacity:1;max-height:200px}
.fcard.is-open .fcard__title{font-size:clamp(22px,2.2vw,30px)}

/* la photo, visible seulement quand le volet est ouvert */
.fcard__imgs{flex:1 1 0;position:relative;height:240px;margin-top:22px;display:none}
@media (min-width:1024px){ .fcard__imgs{height:100%;margin-top:0} }
.fcard.is-open .fcard__imgs{display:block}
.fcard__img{position:absolute;inset:0;border-radius:16px;overflow:hidden;z-index:2;
  transform:translateY(12px);box-shadow:-6px 10px 28px rgba(11,27,51,.22)}
.fcard__img img{width:100%;height:100%;object-fit:cover}

/* ---------- 02 · EXPÉRIENCE PREMIUM — l'ambassadrice et les chiffres ---------- */
.amb-sec{background:
  radial-gradient(70% 60% at 78% 34%,rgba(11,169,238,.09),transparent 64%),
  linear-gradient(180deg,var(--paper),var(--ivory))}
.amb{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);
  gap:clamp(30px,5vw,70px);align-items:center;margin-bottom:clamp(44px,5vw,72px)}
.amb__title{text-transform:uppercase;letter-spacing:-.022em;line-height:1.08;
  font-size:clamp(26px,3.3vw,46px);max-width:14ch}
.amb__copy .lede{margin-top:22px;max-width:560px}

/* l'ambassadrice : son disque, ses cercles d'écoute, sa pastille sonore */
.amb__figure{margin:0;position:relative;justify-self:center;display:grid;place-items:center;
  width:min(100%,clamp(300px,32vw,420px));aspect-ratio:1}

/* les cercles d'écoute, en retrait */
.amb__ring{position:absolute;border-radius:50%;opacity:0;transform:scale(.84);
  border:1px solid rgba(11,169,238,.22);pointer-events:none}
.amb__ring--1{inset:1%}
.amb__ring--2{inset:-9%;border-color:rgba(11,169,238,.13)}

/* le disque */
.amb__disc{position:relative;width:82%;aspect-ratio:1;border-radius:50%;overflow:hidden;
  background:radial-gradient(118% 112% at 36% 20%,#14305A,#070B1C 70%);
  box-shadow:0 38px 72px -30px rgba(7,11,28,.52);
  opacity:0;transform:translateY(26px) scale(.94)}
.amb__disc img{position:absolute;left:50%;top:6%;width:104%;height:auto;transform:translateX(-50%)}

/* la pastille sonore */
.amb__badge{position:absolute;top:7%;right:3%;width:clamp(52px,5.6vw,74px);aspect-ratio:1;
  border-radius:50%;display:grid;place-items:center;color:#fff;
  background:linear-gradient(145deg,var(--cyan),var(--electric) 46%,var(--azure));
  box-shadow:0 16px 32px -12px rgba(11,169,238,.62),0 0 0 7px rgba(255,255,255,.7);
  opacity:0;transform:scale(.4)}
.amb__badge svg{width:46%;height:auto}

/* l'entrée, au défilement */
.amb-in .amb__disc{opacity:1;transform:none;
  transition:opacity 1s var(--ease),transform 1.2s var(--ease-out)}
.amb-in .amb__ring{opacity:1;transform:none;
  transition:opacity .9s var(--ease),transform 1.1s var(--ease-out)}
.amb-in .amb__ring--1{transition-delay:.26s;animation:ambPulse 5.2s var(--ease) 2s infinite}
.amb-in .amb__ring--2{transition-delay:.42s;animation:ambPulse 5.2s var(--ease) 2.4s infinite}
.amb-in .amb__badge{opacity:1;transform:none;
  transition:opacity .5s var(--ease) .74s,transform .7s cubic-bezier(.34,1.56,.64,1) .74s}
@keyframes ambPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.045);opacity:.5}}

/* halo qui respire derrière elle */
.amb__figure::before{content:"";position:absolute;z-index:-1;left:50%;top:50%;transform:translate(-50%,-50%);
  width:86%;aspect-ratio:1;border-radius:50%;filter:blur(70px);opacity:0;
  background:radial-gradient(circle,rgba(11,169,238,.28),transparent 66%)}
.amb-in.amb__figure::before{opacity:1;transition:opacity 1.6s var(--ease) .3s;
  animation:ambGlow 5.4s var(--ease) 1.8s infinite}
@keyframes ambGlow{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.09)}}

/* les quatre chiffres */
/* Le bandeau de chiffres, d'après *Aegis Console*. Chez elle : section
   pleine largeur sur `--ink`, grille de quatre, texte centré, filets
   `rgba(255,255,255,.12)` en `::after` sur tous sauf le dernier, nombres
   en `clamp(34px,4.6vw,52px)` à la couleur d'accent, libellés à 13,5 px.
   Ici l'accent est le cyan de marque et le fond l'abysse.
   Le bandeau est enfant direct de la section, pas de `.wrap` : il est
   donc pleine largeur sans bricolage en `100vw` — lequel aurait dépassé
   de la largeur de la barre de défilement. */
/* ESSAI — le dégradé bleu en fond plutôt que l'abysse plein.
   L'abysse reste dessous : si l'image ne charge pas, rien ne bouge. */
.band{position:relative;isolation:isolate;overflow:hidden;
  margin-top:clamp(52px,6vw,86px);background:var(--abyss);
  padding:clamp(50px,5.5vw,74px) 0}
.band::before{content:"";position:absolute;inset:0;z-index:0;
  background:url(../images/sections/band-bg.webp) center/cover no-repeat}
/* Le halo turquoise de l'image monte à rgb(2,186,212) : sans voile, le
   nombre cyan n'y tient que 1,37:1 et le libellé 1,38:1 — du cyan sur du
   cyan. À .48 le halo reste nettement visible et tout repasse au-dessus
   des seuils (voir le README). */
.band::after{content:"";position:absolute;inset:0;z-index:1;background:rgba(4,5,15,.48)}
.band__grid{position:relative;z-index:2}
.sec.amb-sec{padding-bottom:0}   /* le bandeau descend jusqu'au bord */
.band__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center}
.band__item{position:relative;display:flex;flex-direction:column;gap:12px}
.band__item:not(:last-child)::after{content:"";position:absolute;right:-12px;top:14%;
  height:72%;width:1px;background:rgba(255,255,255,.14)}
.band__num{font-size:clamp(34px,4.3vw,52px);font-weight:800;line-height:1;
  letter-spacing:-.045em;color:var(--cyan)}
.band__num b{font-weight:inherit}
/* ESSAI VERRE/IMAGE — le libellé passe du bleu-gris `--muted-d` au blanc
   à 82 % : sur une image il ne tenait 4,5:1 qu'avec un voile à .75, qui
   écrasait le dégradé. En blanc, .48 suffit. On revient à `--muted-d` si
   le fond uni est rétabli. */
.band__lab{font-size:13.5px;line-height:1.5;font-weight:500;color:rgba(255,255,255,.82)}

@media (max-width:900px){
  .band__grid{grid-template-columns:1fr 1fr;gap:38px 24px}
  .band__item:nth-child(2)::after{display:none}
}
@media (max-width:540px){
  .band__grid{grid-template-columns:1fr;gap:34px}
  .band__item::after{display:none}
}

.quote{margin-top:4px;padding:13px 15px;border-radius:13px;background:var(--paper);
  border-left:2px solid var(--water);font-size:13.5px;line-height:1.5;color:var(--body);font-style:italic}

/* ============================================================
   04 · UNE SEULE PLATEFORME — quatre tuiles produit
   D'après la grille produits de Hoteza : tuile claire, le texte en
   haut, la photo du produit en bas, à fleur du bord. Les photos
   fournies sont sur un fond à rgb(250,250,250) ; la tuile prend la
   même valeur, donc les appareils ont l'air posés dessus et aucune
   couture n'apparaît entre la photo et la carte.
   ============================================================ */
.plats{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(18px,2.2vw,32px)}
.plat-card{position:relative;display:flex;flex-direction:column;overflow:hidden;
  border-radius:var(--r-big);background:#FAFAFA;border:1px solid var(--line);
  box-shadow:var(--sh-sm);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .5s}
.plat-card:hover{transform:translateY(-5px);box-shadow:var(--sh-lg);border-color:var(--line-strong)}

/* Titre et texte centrés, sans intertitre ni flèche : la tuile se lit
   d'un coup, comme chez Hoteza. */
.plat-card__body{padding:clamp(26px,2.6vw,36px) clamp(24px,2.5vw,34px) 0;text-align:center}
.plat-card__body h3{font-size:clamp(19px,1.7vw,24px);font-weight:700;letter-spacing:-.022em;
  color:var(--ink);margin-bottom:10px}
.plat-card__body p{margin:0 auto;max-width:42ch;
  font-size:14.5px;line-height:1.56;color:var(--body)}

/* La photo va d'un bord à l'autre et touche le bas de la tuile. */
.plat-card__media{margin:clamp(20px,2.2vw,30px) 0 0;position:relative;aspect-ratio:16/9;overflow:hidden}
.plat-card__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .8s var(--ease)}
.plat-card:hover .plat-card__media img{transform:scale(1.04)}

@media (max-width:760px){
  .plats{grid-template-columns:1fr}
}

/* Titre réservé aux lecteurs d'écran : la section de chiffres n'affiche
   pas de titre, le plan du document ne doit pas sauter de niveau pour
   autant. */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

/* ESSAI — fond animé derrière les trois chiffres.
   Le poster s'affiche tout de suite ; la boucle prend le relais une
   fois la page prête, et se met en pause hors de l'écran. Les fiches
   restent blanches et opaques : leur lisibilité ne dépend pas du film. */
.chif{position:relative;overflow:hidden;background:var(--navy-900)}
.chif__bg{position:absolute;inset:0;z-index:0}
.chif__bg img,.chif__bg video{position:absolute;inset:0;
  width:100%;height:100%;object-fit:cover}
.chif__bg video{opacity:0;transition:opacity .9s var(--ease)}
.chif__bg video.is-on{opacity:1}
.chif__scrim{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(4,5,15,.52),rgba(4,5,15,.3) 48%,rgba(4,5,15,.58))}
.chif>.wrap{position:relative;z-index:2}

/* ---------- 05 · LES LEVIERS DE REVENU ----------
   Trois fiches claires : un qualificatif discret, l'affirmation en
   grand, puis le détail. Le nombre est seul à porter la couleur. */
.levs{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,28px)}
.lev{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-xl);
  padding:clamp(26px,2.8vw,40px);display:flex;flex-direction:column;
  box-shadow:var(--sh-sm);transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.lev:hover{transform:translateY(-4px);box-shadow:var(--sh-md)}
.lev__pre{margin:0 0 clamp(16px,1.8vw,26px);font-size:12px;font-weight:600;
  text-transform:uppercase;letter-spacing:.16em;color:var(--teal)}
.lev__claim{margin:0;font-size:clamp(27px,2.9vw,42px);font-weight:700;
  letter-spacing:-.035em;line-height:1.08;color:var(--ink)}
/* Dégradé volontairement resserré : le --grad de marque finit sur du
   cyan à 1,7:1 sur blanc, illisible à cette taille. Teal → azure tient
   les deux extrémités au-dessus de 5:1. */
.lev__claim b{font-weight:700;color:var(--teal);
  background:linear-gradient(100deg,var(--teal),var(--azure));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent}
.lev__txt{margin:clamp(18px,2vw,26px) 0 0;font-size:15px;line-height:1.6;color:var(--body)}
.lev__txt b{font-weight:600;color:var(--ink)}
.lev__src{margin:clamp(26px,3vw,40px) 0 0;font-size:12.5px;line-height:1.6;
  color:var(--muted);max-width:980px}

@media (max-width:900px){
  .levs{grid-template-columns:1fr}
}

/* ---------- 08 · BÉNÉFICES ---------- */
.bene{display:grid;grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);gap:clamp(32px,5vw,64px);align-items:center}
/* La colonne de gauche a rétréci pour agrandir le tableau de bord, et le
   titre s'y coupait en « … / guests. / … » — une ligne orpheline de
   177 px contre 453. `balance` répartit : 373 / 258 / 312 / 285. Les
   navigateurs qui ne le connaissent pas coupent comme avant. */
.bene .h-sec{text-wrap:balance}
.bene ul{list-style:none;margin:28px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.bene li{display:flex;align-items:flex-start;gap:13px;font-size:16px;line-height:1.5;color:var(--body)}
.bene li svg{width:21px;height:21px;flex:none;margin-top:2px;stroke:var(--electric);fill:none;stroke-width:2.1;
  stroke-linecap:round;stroke-linejoin:round}
/* Le tableau de bord animé, découpé dans le film.
   Le cadre est à l'exact rapport de la zone retenue (1212 × 686 px sur
   une image 1920 × 1080) ; la vidéo est agrandie et décalée pour que
   seul l'écran apparaisse — son fond ne rentre jamais dans le cadre.
     largeur  = 1920 / 1212 = 158,42 %
     gauche   = −354 / 1212 = −29,21 %
     haut     = −(300/1080 × hauteur vidéo) ramené à la hauteur du cadre
                = −43,76 %                                              */
.dash{margin:0;position:relative;z-index:1;overflow:hidden;aspect-ratio:1212/686;
  border-radius:var(--r-lg);box-shadow:var(--sh-lg);background:var(--navy-900)}
.dash video{position:absolute;width:158.42%;height:auto;left:-29.21%;top:-43.76%;
  display:block;max-width:none}   /* sinon la règle img,video{max-width:100%} l'écrase */

/* Les halos, repris d'Aegis Console. Chez elle : deux disques en
   `filter:blur(70px)` posés derrière le panneau et qui débordent de ses
   coins — un à la couleur d'accent (.55), un neutre très faible (.06).
   Ici l'accent est le cyan de marque et le neutre devient le teal, parce
   que sur l'ivoire un gris ne se verrait pas. Décoratifs et inertes. */
.dash-wrap{position:relative}
.dash-glow{position:absolute;z-index:0;border-radius:50%;filter:blur(62px);pointer-events:none}
.dash-glow--cyan{top:-58px;right:-56px;width:clamp(190px,21vw,260px);aspect-ratio:1;
  background:rgba(11,169,238,.62)}
.dash-glow--teal{bottom:-70px;left:-64px;width:clamp(210px,25vw,300px);aspect-ratio:1;
  background:rgba(5,116,160,.4)}

/* Les deux flottants, à droite comme chez Aegis : en débord du panneau,
   vers la marge de page. Même balancement `bob`, deux durées
   différentes pour qu'ils ne montent pas ensemble. Le débord est en
   `clamp()` : la marge disponible à droite du conteneur va de ~66 px
   vers 1020 à ~140 px à 1440, donc il grandit avec l'écran. */
.dash-pill,.dash-stat{position:absolute;z-index:3;pointer-events:none;
  background:var(--paper);border:1px solid var(--line);
  box-shadow:0 18px 40px -18px rgba(11,27,51,.34);
  opacity:0;transition:opacity .7s var(--ease) .45s}
.dash-wrap.is-in .dash-pill,.dash-wrap.is-in .dash-stat{opacity:1}

.dash-pill{right:clamp(-56px,-3.1vw,-28px);bottom:9%;display:flex;align-items:center;gap:10px;
  border-radius:var(--r-pill);padding:10px 16px;white-space:nowrap;
  font-size:12.5px;font-weight:700;color:var(--ink);
  animation:dash-bob 6s var(--ease) infinite}
.dash-dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--electric);
  animation:dash-pulse 2s infinite}
@keyframes dash-pulse{
  0%{box-shadow:0 0 0 0 rgba(11,169,238,.55)}
  70%{box-shadow:0 0 0 7px rgba(11,169,238,0)}
  100%{box-shadow:0 0 0 0 rgba(11,169,238,0)}}

/* La fiche à l'anneau passe en haut, la pastille en bas — l'inverse de
   la référence. Posée en bas à droite, elle tombait juste sous l'anneau
   « 87 % occupées » du tableau de bord : deux anneaux identiques l'un
   au-dessus de l'autre, qui se lisaient comme un défaut d'affichage. */
.dash-stat{right:clamp(-66px,-3.7vw,-34px);top:12%;display:flex;align-items:center;gap:11px;
  border-radius:var(--r-md);padding:11px 16px 11px 12px;
  animation:dash-bob 7.4s var(--ease) .9s infinite}
.dash-ring{width:40px;height:40px;flex:none;transform:rotate(-90deg)}
.dash-ring circle{fill:none;stroke-width:4.4;stroke-linecap:round}
.dash-ring__bg{stroke:var(--line)}
/* circonférence = 2π × 18 = 113,1 ; 87 % en laisse 14,7 */
.dash-ring__fg{stroke:var(--electric);stroke-dasharray:113.1;stroke-dashoffset:113.1;
  transition:stroke-dashoffset 1.4s var(--ease) .5s}
.dash-wrap.is-in .dash-ring__fg{stroke-dashoffset:14.7}
.dash-stat__txt{display:flex;flex-direction:column;font-size:11.5px;line-height:1.35;color:var(--body)}
.dash-stat__txt b{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.02em}

@keyframes dash-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}

/* Sous 980 px la gouttière disparaît : les flottants aussi, comme chez
   la référence qui masque sa pastille sous 920 px.
   Et on referme le cadre : le halo cyan déborde de 30 px à droite, ce qui
   à 375 px poussait la page à 411 px de large et créait une barre de
   défilement horizontale. Plus rien n'a besoin de dépasser ici. */
@media (max-width:980px){
  .dash-pill,.dash-stat{display:none}
  .dash-wrap{overflow:hidden}
}
/* Mouvement réduit : on coupe le balancement et la pulsation, pas les
   halos — ils ne bougent pas, ce sont des aplats. */
@media (prefers-reduced-motion:reduce){
  .dash-pill,.dash-stat,.dash-dot{animation:none}
  .dash-ring__fg{transition:none}}

/* ---------- 09 · À VOTRE CHARTE ----------
   Un grand panneau sur le film des maquettes déclinées. Plus large que
   le panneau « démo » (marge de page seulement) pour qu'il tienne la
   pleine largeur sur grand écran, comme demandé. */
.charte__panel{position:relative;isolation:isolate;overflow:hidden;
  margin:0 clamp(12px,2vw,28px);border-radius:var(--r-big);background:var(--navy-900);
  aspect-ratio:16/9;min-height:clamp(360px,46vw,640px);
  display:grid;place-items:center;text-align:center;
  padding:clamp(40px,6vw,80px) clamp(22px,4vw,64px)}
.charte__media{position:absolute;inset:0;z-index:0}
.charte__media video{width:100%;height:100%;object-fit:cover;display:block;
  opacity:0;transition:opacity .9s var(--ease)}
.charte__media video.is-on{opacity:1}
/* Mesuré image par image sur la bande du titre : le film va du blanc pur
   (rgb 255) au noir des écrans (rgb 11). Aucune couleur de texte ne tient
   les deux. D'où le même partage que le panneau « démo » : une mare
   sombre sous le texte, un voile léger ailleurs pour que les couleurs des
   maquettes restent lisibles sur les bords — c'est tout le sujet. */
.charte__scrim{position:absolute;inset:0;z-index:1;
  background:radial-gradient(48% 62% at 50% 50%,rgba(4,5,15,.78),rgba(4,5,15,0) 78%),
             linear-gradient(180deg,rgba(4,5,15,.28),rgba(4,5,15,.36))}
.charte__in{position:relative;z-index:2;max-width:760px;margin-inline:auto}
.charte__in .lede{margin-top:18px}
.charte__in .btns{justify-content:center;margin-top:30px}

@media (max-width:760px){
  /* en portrait, le 16/9 ne laisse pas la place au texte */
  .charte__panel{aspect-ratio:auto;min-height:520px}
}

/* ---------- 10 · CTA (panneau sombre, comme le live) ---------- */
.cta{padding:0 0 clamp(70px,8vw,110px)}
.cta__panel{margin:0 clamp(12px,2vw,28px);border-radius:var(--r-big);overflow:hidden;position:relative;
  padding:clamp(58px,7vw,104px) clamp(22px,4vw,64px);text-align:center}
.cta__media{position:absolute;inset:0;z-index:0}
.cta__media img,.cta__media video{width:100%;height:100%;object-fit:cover;
  object-position:50% 46%;display:block}

/* LE LISERÉ FLOU — la trouvaille du panneau de Hoteza.
   Un masque fait de quatre dégradés : opaque sur chaque bord, transparent
   dès qu'on rentre dans l'image. Le flou et la teinte ne mordent donc que
   les bords, et le centre du film reste net. Couleurs HOTELLA. */
.cta__rim{--edge:clamp(40px,7vw,120px);
  position:absolute;inset:0;z-index:1;pointer-events:none;
  -webkit-backdrop-filter:blur(26px) saturate(1.15);
          backdrop-filter:blur(26px) saturate(1.15);
  background:linear-gradient(125deg,rgba(5,116,160,.5),rgba(11,169,238,.24) 45%,
    rgba(53,214,255,.46));
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent var(--edge)),
    linear-gradient(to top,#000,transparent var(--edge)),
    linear-gradient(to right,#000,transparent calc(var(--edge) * 1.3)),
    linear-gradient(to left,#000,transparent calc(var(--edge) * 1.3));
          mask-image:linear-gradient(to bottom,#000,transparent var(--edge)),
    linear-gradient(to top,#000,transparent var(--edge)),
    linear-gradient(to right,#000,transparent calc(var(--edge) * 1.3)),
    linear-gradient(to left,#000,transparent calc(var(--edge) * 1.3))}

/* Le voile n'est plus uniforme. Le film passe à près de blanc derrière
   le texte (la colonne éclairée du hall) : impossible de l'éclaircir
   partout sans perdre la ligne téléphone. On sépare donc les deux rôles —
   un lavis très léger sur toute la surface, pour que le film se voie,
   et un assombrissement local sous le bloc de texte, pour qu'il reste
   lisible. Total : 30 % sur les bords, 80 % derrière le texte. */
/* Deux stops ne suffisaient pas : entre le centre et 78 % la vignette
   retombait linéairement, si bien que le bloc de texte baignait dans
   0,39 à 0,56 d'opacité au lieu des 80 % annoncés. Sur la colonne
   éclairée (le film monte à rgb(208) à t≈0,7 s et t≈12 s) le titre
   dégradé tombait à 2,59:1 et la ligne téléphone à 3,37:1.
   Un stop intermédiaire tient l'opacité à 0,52 jusqu'à mi-rayon — donc
   sur toute la hauteur du texte — avant de relâcher vers les bords.
   Mesuré : 0,74 derrière le texte, 0,31 sur les bords.
   Le rayon horizontal ne peut pas être un simple pourcentage : à 375 px
   il ne valait que 190 px pour une colonne de texte large de 307, et les
   bouts de ligne sortaient du plateau. Il faut donc max(54%,800px) — mais
   ni max() ni calc() ne sont acceptés dans la taille d'un dégradé (vérifié :
   la règle entière est rejetée, backgroundImage passe à « none »). Une
   var() est, elle, substituée avant l'analyse : on pose donc le plancher
   de 800 px et on repasse au pourcentage par media query, au-delà de
   1481 px de panneau, là où 54 % dépasse enfin 800 px. */
.cta__scrim{position:absolute;inset:0;z-index:2;--rx:800px;
  background:radial-gradient(var(--rx) 82% at 50% 50%,rgba(4,5,15,.78),
               rgba(4,5,15,.52) 52%,rgba(4,5,15,0) 94%),
             linear-gradient(180deg,rgba(4,5,15,.26),rgba(4,5,15,.34))}
@media (min-width:1540px){.cta__scrim{--rx:54%}}
.cta__in{position:relative;z-index:3;max-width:720px;margin-inline:auto}
.cta__in .btns{justify-content:center;margin-top:32px}
/* Dernière ligne du bloc, donc la plus loin du cœur de la vignette :
   même avec la vignette corrigée, --muted-d n'y donne que 4,29:1, sous
   le seuil de 4,5 exigé à 15 px. On passe à --body-d (le même gris que
   le chapô). Le numéro garde --cyan, qui tient largement. */
.cta__phone{margin-top:26px;font-size:15px;color:var(--body-d)}
.cta__phone a{color:var(--cyan);font-weight:600}
/* La note de bas de panneau, héritée de l'encart plat. Elle y était en
   `--muted-d` à 13,5 px ; sur le film c'est exactement la combinaison
   qui échouait pour la ligne téléphone. Même traitement qu'elle :
   `--body-d`, et 14 px plutôt que 13,5. */
.cta__note{margin-top:24px;font-size:14px;color:var(--body-d)}

/* ---------- pied de page (sombre, comme le live) ---------- */
.foot{position:relative;isolation:isolate;background:var(--abyss);
  padding:clamp(56px,6vw,84px) 0 32px;color:var(--muted-d);overflow:hidden}
.foot__bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.foot__bg video{width:100%;height:100%;object-fit:cover;display:block;
  opacity:0;transition:opacity 1s var(--ease)}
.foot__bg video.is-on{opacity:1}
/* Le voile garde le pied de page lisible : le film de verre monte jusqu'à
   rgb(146,251,250) — mesuré à l'échelle d'un glyphe, pas sur un pixel
   isolé — et le texte en bleu pâle y disparaîtrait. Il est dégradé :
   plus léger en haut, où il n'y a que le logo et une ligne, plus dense
   en bas où se trouvent les mentions en petit corps.
   Sur ce pire bloc : intertitres 12,8:1 · liens et texte 4,9:1 ·
   mentions légales 5,6:1. Tout tient le 4,5:1 du petit corps. */
.foot__scrim{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(4,5,15,.82),rgba(4,5,15,.9))}
.foot>.wrap{position:relative;z-index:1}
.foot__top{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:clamp(26px,4vw,54px);
  padding-bottom:40px;border-bottom:1px solid var(--line-d)}
.foot img{height:24px;width:auto;margin-bottom:18px}
.foot h4{font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-d);margin-bottom:16px}
.foot ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.foot a{font-size:14.5px;color:var(--muted-d);transition:color .25s}
.foot a:hover{color:var(--cyan)}
.foot p{font-size:14.5px;line-height:1.6;margin:0;color:var(--muted-d)}
.foot__bottom{padding-top:24px;display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;
  font-size:13.5px;color:var(--muted-d)}   /* .42 ne tenait que 3,2:1 sur le film */

/* ---------- la fenêtre vidéo ----------
   Le film de la bannière, montré nu : pas de voile, pas de titre, pas de
   recadrage en `cover`. Le panneau garde le rapport 16/9 et se contente
   de la place disponible, donc la vidéo n'est jamais rognée. */
.lb{--pad:clamp(16px,4vw,48px);
  position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:var(--pad)}
.lb[hidden]{display:none}
.lb__back{position:absolute;inset:0;background:rgba(4,5,15,.86);
  backdrop-filter:blur(8px);opacity:0;transition:opacity .35s var(--ease)}
/* Le panneau se règle sur la plus contraignante des trois : la largeur
   disponible, 1180 px, ou ce que la hauteur permet en 16/9. Sans le
   troisième terme, sur un écran bas (1280 × 480) le panneau restait à
   1180 de large, `max-height` l'écrasait à 384, et la vidéo se
   retrouvait en 3:1 avec deux bandes noires sur les côtés.
   La première déclaration sert de secours aux navigateurs sans `dvh`. */
.lb__panel{position:relative;aspect-ratio:16/9;max-height:100%;
  width:min(100%,1180px);
  width:min(100%,1180px,calc((100dvh - 2 * var(--pad)) * 16 / 9));
  border-radius:var(--r-lg);overflow:hidden;background:#000;
  box-shadow:0 50px 110px -40px rgba(0,0,0,.8);
  opacity:0;transform:scale(.97);
  transition:opacity .35s var(--ease),transform .35s var(--ease)}
.lb.is-open .lb__back{opacity:1}
.lb.is-open .lb__panel{opacity:1;transform:none}
.lb__frame,.lb__frame video{width:100%;height:100%;display:block}
.lb__frame video{object-fit:contain;background:#000}

/* Le bouton de fermeture flotte sur la vidéo : il lui faut son propre
   fond, l'image derrière pouvant être claire comme sombre. */
.lb__close{position:absolute;top:12px;right:12px;z-index:2;
  width:42px;height:42px;border:0;border-radius:50%;cursor:pointer;
  display:grid;place-items:center;
  background:rgba(7,11,28,.62);backdrop-filter:blur(10px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.22);
  transition:background .25s var(--ease),transform .25s var(--ease)}
.lb__close:hover{background:rgba(7,11,28,.86);transform:scale(1.06)}
.lb__close svg{width:18px;height:18px;fill:none;stroke:#fff;stroke-width:2.1;stroke-linecap:round}
.lb__close:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

/* La page ne défile plus derrière la fenêtre. */
body.lb-open{overflow:hidden}

@media (prefers-reduced-motion:reduce){
  .lb__back,.lb__panel{transition:none}
  .lb__panel{transform:none}}

/* ---------- révélations ---------- */
.rv{opacity:0;transform:translateY(28px);transition:opacity .85s var(--ease),transform .85s var(--ease)}
.rv.is-in{opacity:1;transform:none}
.rv-d1{transition-delay:.08s}.rv-d2{transition-delay:.16s}.rv-d3{transition-delay:.24s}
.rv-d4{transition-delay:.32s}.rv-d5{transition-delay:.4s}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  .nav__links{display:none}
  .nav__burger{display:flex}
  .nav{padding:8px 8px 8px 16px}
}
@media (max-width:980px){
  .amb{grid-template-columns:1fr;gap:34px}
  .amb__title{max-width:100%}
  .slabs{grid-template-columns:1fr}
  .slab-card figure{aspect-ratio:16/10}
  .bene{grid-template-columns:1fr}
}
@media (max-width:640px){
  body{font-size:16px}
  .nav .btn{display:none}
  .nav{padding:8px 10px}
  .hero{min-height:94svh;padding:120px 0 96px}
  .hero h1{max-width:100%}
  .foot__top{grid-template-columns:1fr}
  .btn{width:100%}
  .btns{flex-direction:column;align-items:stretch}
  .head-split{flex-direction:column;align-items:stretch}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
  .hero h1 .line>span{transform:none;animation:none}
}

/* ============================================================
   06 · LE FILM HOTELLA
   Pleine largeur, rien autour : ni voile, ni ombre, ni texte.
   ============================================================ */
.reel{display:block;background:var(--abyss);line-height:0}
.reel video{display:block;width:100%;height:auto}

/* ============================================================
   11 · AVIS — un jeu de cartes que l'on fait défiler
   ============================================================ */
.testi{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(34px,5vw,72px);align-items:center}
.testi__note{margin-top:22px;font-size:13px;color:var(--muted);
  padding:10px 14px;border-radius:12px;background:var(--paper);border:1px dashed var(--line-strong);display:inline-block}
.deck{position:relative;min-height:clamp(290px,30vw,340px);perspective:1200px}
.qcard{position:absolute;inset:0;border-radius:26px;padding:clamp(26px,2.8vw,38px);cursor:pointer;
  display:flex;flex-direction:column;justify-content:space-between;color:#fff;
  box-shadow:0 26px 60px -28px rgba(11,27,51,.55);
  transition:transform .6s var(--ease),opacity .5s var(--ease),box-shadow .5s var(--ease)}
.qcard--1{background:linear-gradient(140deg,var(--teal),var(--electric))}
.qcard--2{background:linear-gradient(140deg,#0E2E52,#13467F)}
.qcard--3{background:linear-gradient(140deg,#0A1A33,#16325C)}
.qcard[data-pos="0"]{transform:translate(0,0) scale(1) rotate(0);z-index:3;opacity:1}
.qcard[data-pos="1"]{transform:translate(16px,16px) scale(.965) rotate(1.1deg);z-index:2;opacity:.85}
.qcard[data-pos="2"]{transform:translate(32px,32px) scale(.93) rotate(2.2deg);z-index:1;opacity:.65}
.qcard:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.qcard__mark{font-size:52px;line-height:.6;opacity:.5;font-family:Georgia,serif}
.qcard p{margin:18px 0 0;font-size:clamp(16px,1.35vw,19px);line-height:1.52;font-weight:500}
.qcard__who{display:flex;align-items:center;gap:13px;margin-top:26px}
.qcard__ava{width:42px;height:42px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.35);font-size:13px;font-weight:700}
.qcard__who h4{font-size:15px;color:#fff;margin:0}
.qcard__who span{font-size:13px;color:rgba(255,255,255,.76)}
.deck__hint{position:absolute;left:0;bottom:-34px;font-size:12px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted)}

/* ============================================================
   12 · QUESTIONS FRÉQUENTES
   ============================================================ */
.faq{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(30px,5vw,70px);align-items:start}
.faq__side .h-sec{line-height:1.08}
.faq__card{margin-top:34px;padding:clamp(22px,2.4vw,30px);border-radius:22px;
  background:var(--ivory);border:1px solid var(--line)}
.faq__icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;
  background:var(--paper);border:1px solid var(--line);color:var(--teal);margin-bottom:16px}
.faq__icon svg{width:22px;height:22px}
.faq__card h4{font-size:17px;margin-bottom:8px}
.faq__card p{margin:0 0 20px;font-size:14.5px;line-height:1.55;color:var(--muted)}

.faq__list{display:flex;flex-direction:column;gap:12px}
.faq__item{border:1px solid var(--line);border-radius:18px;background:var(--ivory);overflow:hidden;
  transition:background .3s,border-color .3s,box-shadow .3s}
.faq__item.is-open{background:var(--paper);border-color:var(--line-strong);box-shadow:var(--sh-sm)}
.faq__q{width:100%;display:flex;align-items:center;gap:18px;justify-content:space-between;
  padding:clamp(18px,1.9vw,24px) clamp(18px,2vw,26px);background:none;border:0;cursor:pointer;
  font-family:var(--sans);text-align:left}
.faq__q h3{font-size:clamp(15.5px,1.3vw,18px);line-height:1.35;margin:0;color:var(--ink)}
.faq__ic{position:relative;width:34px;height:34px;flex:none;border-radius:50%;background:var(--ink);
  transition:transform .4s var(--ease),background .3s}
.faq__ic::before,.faq__ic::after{content:"";position:absolute;left:50%;top:50%;background:#fff;border-radius:2px;
  transform:translate(-50%,-50%);transition:opacity .3s,transform .4s var(--ease)}
.faq__ic::before{width:13px;height:1.8px}
.faq__ic::after{width:1.8px;height:13px}
.faq__item.is-open .faq__ic{background:var(--electric);transform:rotate(90deg)}
.faq__item.is-open .faq__ic::after{opacity:0}
.faq__a{max-height:0;overflow:hidden;transition:max-height .5s var(--ease)}
.faq__a p{margin:0;padding:0 clamp(18px,2vw,26px) clamp(20px,2vw,26px);
  font-size:14.5px;line-height:1.65;color:var(--muted);max-width:70ch}

/* ============================================================
/* ============================================================
   LE LOGO AVANT LE PIED DE PAGE
   Mecanique du gabarit Almond Hours : un exemplaire pale pose a
   plat, et un second exemplaire colore qui n'apparait que dans
   un rond de lumiere suivant le curseur. Memes dimensions que la
   reference : min-height 32vh, 48 px de respiration haut et bas.
   Le masque est recadre au plus juste sur l'encre du logo, pour
   que le centrage soit exact et non approximatif.
   ============================================================ */
.wordmark{--logo-mask:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAErCAYAAABkXut9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAF+zSURBVHhe7d0HuDRVmfX9FwQBgQ+R5KCOAQOYs2JijKiIOaAY5jVjVsw6Dmb0U5wxJ9RX0c+AGMeMGEBFwfCpKCoGQFFUQEnqqOu9lr3PcLh7Pw8n7K66q+q/rut3zTwl8Oyq7tOne/Wuvf+XpP8FAAAAAAAAABieuQMAAAAAAAAAgGGYO4DB20PSbSXdTdJ9i3tKuqOk60varPLvAAAAAAAAABiguQMYlJ0kXVfS8yQdXvxeG84Zko6Q9GFJ7y7l73UkbVn5bwMAAAAAAABIbu4A0ttc0o1KqXuUpD/EFncV+bukMyW9XdKzJF1F0haVvxMAAAAAAABAQnMHkJaXVri1pDdL+k1sahvlp5I+KGlfil4AAAAAAAAgv7kDSOdikm4h6R2Sfhsb2QXlfEkfk3RXlm8AAAAAAAAA8po7gFR2kfRsSWfFBraj/HeZMeyN2+LYAAAAAAAAAPRs7gDS8HIMR0v6S2xde8iJkh7Gsg0AAAAAAABALnMH0LvtJO0n6XuxZe05Z0g6rGzEFscMAAAAAAAAoAdzB9CrnSS9VtJfY7uaKJ+TdOPK2AEAAAAAAAB0bO4AerOrpDfGNjVpvlQ2fovnAAAAAAAAAKBDcwfQi38qm5kNKS5596qcCwAAAAAAAICOzB1A53aQ9IbYng4kX2QmLwAAAAAAANCfuQPo1JaSXhVb04HlKEnXrZwbAAAAAAAAgAWbO4BOPSG2pQPNpyRdtnJ+AAAAAAAAABZo7gA68y+Svh+b0gHn38uM5HieAAAAAAAAABZk7gA6cTVJ344N6cDza0n3qZwrAAAAAAAAgAWZO4CF20rSwbEdHUk+LWm3yjkDAAAAAAAAWIC5A1i4+0o6NzajI8nfJb1S0iaV8wYAAAAAAADQ2NwBLNROko6KrejIcrKkm1fOHQAAAAAAAEBjcwewUA+R9OfYiI4wr2PDNQAAAAAAAGDx5g5gYXaW9LnYhI40P2cWLwAAAAAAALB4cwewMPvFFnTkOaRsKBevAwAAAAAAAIBG5g5gITaV9JnYgI48p0q6RuVaAAAAAAAAAGhk7gAW4tqSTogN6MjzN0kvqlwLAAAAAAAAAI3MHcBCPDe2nxPJR1mmAQAAAAAAAFicuQNozpur/Sg2nxPJnyTtVbkmAAAAAAAAABqYO4DmLivpl7H5nFDuUrkmAAAAAAAAABqYO4DmHiHpvNh6TiR/l/TWsslcvC4AAAAAAAAA1mnuAJp7Y2w9J5avsw4vAAAAAAAAsBhzB9Dcq2LjObF8WdLWlesCAAAAAAAAYJ3mDqCpzSW9JzaeE8tZkvasXBsAAAAAAAAA6zR3AE1dRdI5sfGcYParXBsAAAAAAAAA6zR3AE1dZ8IbrC3PwyvXBgAAAAAAAMA6zR1AUzeS9KfYdk4wj61cGwAAAAAAAADrNHcATd2YgvcfeWLl2gAAAAAAAABYp7kDaIqCdxYKXgAAAAAAAGAB5g6gKQreWSh4gW5tK+lgSW+W9KZk3irpSZUxIyevJX9o5XHM4O2Sbl8ZMwAAmJ5/TfSeJdP73Yckui5vk3S/yhgBNDB3AE1R8M5CwQt0aztJP4k/iIlyRGXMyOm28cFLlkdWxgwAAKbnffFNQs/5UGWMfXh1HFjPeXFljAAamDuApih4Z6HgBbr1/0j6/+MPYqK8pzJm5PQvkv47PoCJ8r8rYwYAANPzf+KbhJ7z/1XG2If/Nw6s5/x7ZYwAGpg7gKYoeGeh4AW6RcGLVih4AQDAEFDw1lHwAhMxdwBNUfDOQsELdIuCF61Q8AIAgCGg4K2j4AUmYu4AmqLgnYWCF+gWBS9aoeAFAABDQMFbR8ELTMTcATRFwTsLBS/QLQpetELBCwAAhoCCt46CF5iIuQNoioJ3FgpeoFsUvGiFghcAAAwBBW8dBS8wEXMH0BQF7ywUvEC3KHjRCgUvAAAYAgreOgpeYCLmDqApCt5ZKHiBblHwohUKXgAAMAQUvHUUvMBEzB1AUxS8s1DwAt2i4EUrFLwAAGAIKHjrKHiBiZg7gKYoeGeh4AW6RcGLVih4AQDAEFDw1lHwAhMxdwBNUfDO8oTKtQGwOBS8aIWCFwAADAEFbx0FLzARcwfQFAXvLBS8QLcoeNEKBS8AABgCCt46Cl5gIuYOoCkK3lkoeIFuUfCiFQpeAAAwBBS8dRS8wETMHUBTFLyzUPAC3aLgRSsUvAAAYAgoeOsoeIGJmDuApih4Z6HgBbpFwYtWKHgBrNVWki4lafsEPI6tK2MEMB4UvHUUvMBEzB1AUzeSdH58RZtgKHiBblHwohUKXgBrcTFJb5B0sqRfJOBxPK0yTgDjQcFbR8ELTMTcATRFwTsLBS/QLQpetELBC2AtXPAeH39ge87BlXECGA8K3joKXmAi5g6gKQreWSh4gW5R8KIVCl4Aa+GC95j4A9tzXlgZJ4DxoOCto+AFJmLuAJqi4J2FghfoFgUvWqHgBbAWFLwAukbBW0fBC0zE3AE0RcE7CwUv0C0KXrRCwQtgLSh4AXSNgreOgheYiLkDaIqCdxYKXqBbFLxohYIXwFpQ8ALoGgVvHQUvMBFzB9AUBe8sFLxAtyh40QoFL4C1oOAF0DUK3joKXmAi5g6gKQreWSh4gW5R8KIVCl4Aa0HBC6BrFLx1FLzARMwdQFMUvLNQ8ALdouBFKxS8ANaCghdA1yh46yh4gYmYO4CmKHhnoeAFukXBi1YoeAGsBQUvgK5R8NZR8AITMXcATVHwzkLBC3SLghetUPACWAsKXgBdo+Cto+AFJmLuAJqi4J3l8ZVrA2BxKHjRCgUvgLWg4AXQNQreOgpeYCLmDqApCt5ZKHiBblHwohUKXgBrQcELoGsUvHUUvMBEzB1AUxS8s1DwAt2i4EUrFLwA1oKCF0DXKHjrKHiBiZg7gKYoeGeh4AW6RcGLVih4AawFBS+ArlHw1lHwAhMxdwBNUfDOQsELdIuCF61Q8AJYCwpeAF2j4K2j4AUmYu4AmqLgnYWCF+gWBS9aoeAFsBYUvAC6RsFbR8ELTMTcATRFwTvL4yrXBsDiUPCiFQpeAGtBwQugaxS8dRS8wETMHUBTFLyzTKng3VTStsWlJd1S0m2LvSTtUf637SRtXvn3gRYoeNEKBS+AtaDgBdA1Ct46Cl5gIuYOoKkbS/pTfEWbYMZe8O4m6a6SDpD0CUnHFd+LF0LSGZK+Iembko6U9ARJ95J0zcp/F1grCl60QsELYC0oeAF0jYK3joIXmIi5A2iKgneWMRa8V5S0v6TDJJ0QT3gN+aGk90t6eJnlG/8+YDUoeNEKBS+AtaDgBdA1Ct46Cl5gIuYOoKmbUPD+I2MpeDcpy268QtIpkv4cT7RB/N88TdLrJd2KZRywRhS8aIWCF8BaUPAC6BoFbx0FLzARcwfQFAXvLI+pXJuhub6k10n6VTy5BebXkg6VdPPKeICNoeBFKxS8ANaCghdA1yh46yh4gYmYO4CmKHhnGXLB643SHi/p1HhSHcZF79Mk/XNlfEANBS9aoeAFsBYUvAC6RsFbR8ELTMTcATTFGryzDLXg3VPSJxe0FMNq44LlqFK2xHECEQUvWqHgBbAWFLwAukbBW0fBC0zE3AE0RcE7y9AK3i3LrN1fxBNJkF+W2bxbV8YNLKHgRSsUvADWgoIXQNcoeOsoeIGJmDuApih4ZxlSwbu9pOdLOjeeRKKcX35R71gZP2AUvGiFghfAWlDwAugaBW8dBS8wEXMH0BQF7yxDKXh3kHSwpHPiCSTMeZL+k5IXG0DBi1YoeAGsBQUvgK5R8NZR8AITMXcATVHwzjKEgncnSS9PPnM3xiXvqyXtXDkfTBsFL1qh4AWwFhS8ALpGwVtHwQtMxNwBNEXBO0v2gnc7SS8dyMzdGJe8/yHpkpXzwnRR8KIVCl4Aa0HBC6BrFLx1FLzARMwdQFMUvLNkLng3k/QsSWfHQQ8oLnkPKh+m4vlhmih40QoFL4C1oOAF0DUK3joKXmAi5g6gqRuVDbGmngMq1yaLfQY6czfGS0vctXJ+mCYKXrRCwQtgLSh4AXSNgreOgheYiLkDaIoZvLNkLXivLunzcbADjj9IXatynpgeCl60QsELYC0oeAF0jYK3joIXmIi5A2iKgneWjAXvVpLeGwc6ghwu6RKV88W0UPCiFQpeAGtBwQugaxS8dRS8wETMHUBTFLyzZCx47zeSpRlivB7vAyrni2mh4EUrFLwA1oKCF0DXKHjrKHiBiZg7gKYoeGfJVvBeWtKn4iBHlCMl7Vo5b0wHBS9aoeAFsBYUvAC6RsFbR8ELTMTcATRFwTtLtoL3wSPf/M7PuYdVzhvTQcGLVih4AawFBS+ArlHw1lHwAhMxd6Ahv7HzWqAXl3RvSU+V9CxJzymeJumukraQtK2kzSr/jaGj4J0lU8G7fZm9+/c4yBHF5+bN43asnD+mgYIXrVDwAlgLCl4AXaPgraPgBSZi7kAD15C0j6QPSvqupG/Hn+hlcRH1HUnfl/TuUvjuXvlvDhUF7yyPrlybvtxnpGvvxngt3gdWzh/TQMGLVih4AawFBS+ArlHw1lHwAhMxd2CNtpF0d0nvlXRi/AleZb5XyuG7Sbpk5e8akhuNfCmAlSZLwbulpA/FwY04n5S0VeU6YPwoeNEKBS9a8R1d/p20Uv6d7ZIw/ncwDBS8GILNK689F2WMd52OBQVvHQUvMBFzB1bJyyvcU9JHJf01/uSuM/7vfaQs7+ClHuLfPQQUvLNkKXivJOmncXAjzsllRn28Dhg/Cl60QsGL1fDv2duUO7LuUpbmeoekD0v6gqRvrNBxko6V9GlJ75f0Bkn/Wv6bvkvsppJ2rvz9yIOCFxm4kL2WpDuU16V9JT2vvC550oeXNPt6ec2Jr0PR0uvSZyUdLumtZdlB/zf9376tpKtRAPeKgreOgheYiLkDK7Rp+UXmN96L/uDnJQ48E9Ezev33xrFkxhINs2QpeJ88scfjz+WNZ7wOGD8KXrRCwYsar2d/9VKa+IOj7+B6n6SfSPpLfJAWEC+19KNS/r6z7Otwg1KueOZvHC/6cXR84HrOCypjxDj4CwV/wXRdSY+R9JZSrvmLpTMWMBGpFr/2nS7pqPI+53WS7lUmW1y2Mma0R8FbR8ELTMTcgRXyN+Bdx+v1+sXAt/jF8WRFwTtLhoJ3kzIDaGrxB1/PXojXA+NGwYtWKHhh3gz3KpKeJOk/y+vL75PdpXRWKVc8u87vUx8h6XL8DuyN33dlm8HrmZtxnBn4WsVj2Dh/kbND2VvDxb2LvV9K+kN80HuOJ1ucKelnkt5WnoN3KssQsgRNexS8dRS8wETMHbgILizfFX9CO45fKH1rXhxbRhS8s2QoeP2t/q/iwCYQfwBnmYbpoeBFKxS807WTpHuUsvRbkk6KF38AcalyZJnR56Udtq6cJ2a8FunzJX2gzMheD7/G+xZ2z5zMlG9KOqwy3j55FrrvMIuPB+Z56QMvAeOf589J+sFAN04+t2ww/rHyRZQ/L8ZzxdpQ8NZR8CLyF4v+EnzPcqfBg8oG7Q+Q9OwyMc53Qng5G/9O911a8fcXVs6/6/2FZHwcmps7sBF+8H8efzp7im/Lu1lljNlQ8M6SoeC9dpndM7WcPaAvRNAOBS9aoeCdln8uyy4cKumr8WIPPL4T7GuSXiPplpK2q5z/lHm/i8y/N8Ycf/CLjwdmPNPVn6c8S9dLA3riwtjyW0mfkPRMSdcb2N2q2VDw1lHwTpd/t3vpGvcBfs/s93d+vflMmfx2XnxwyMLyosrj09zcgQ3wE+KUOMKe43Xebl4ZayZssjbLAZVr07W9E9621UVczPhbuHg9MG4UvGiFgnf8PKv1VuUD4Hcm8sW0z9Gz53y79B4D3ONhEbyUxVfihSKdxKVUfDymzEsX7C7p38o+LFMqIPxZxZuMP1LSLpVrg42j4K2j4J2OS5WNJQ8sS2r5NdST3Oik+o9/p8XHq7m5AxUuKX8RR5ckP01e8lLwzpKh4H11HNSE4tst4/XAuFHwohUK3vHyRmm+Hc9Fp+/2mGpOlfRaSfuWZQridZoKCt7+QsE7458/b6rtW4OnuKza8vjzoyczvarcccCXUCtDwVtHwTtuVyjvh72klj//TfGu5SEkRcHrtTuzLMuwoXw58ZpqFLyzZCh4XShNNR+uXA+MGwUvWqHgHR/PjHtuWYJhCrN1VxpvhuRbFl16T3HmHAVvf5l6wbtreS3/vKS/xotD/lF2ew+cO5bbreP1wwUoeOsoeMfHdx95vVx/zs/e15FZei94vfCyF1bOHheo/rYi4y7JFLyzZCh4vb7ZVMMM3umh4EUrFLzjcRVJLy53P5ENx2v1evKAb5HesXIdx4qCt79MteC9tKQnjXC970XlL2VzuftL2rZyPUHBuyEUvOOws6S7SnqnpF/Hi0rSp/eC97GS/hZHlTR+M56hRIwoeGfJ8Nh458epxrsMez2eeE0wXhS8aIWCd/iuVordrMttZY3LFBe9Dy2vqfG6jg0Fb3+ZWsG7Q/mceRwzdtcUf+79Qil6t6hc3ymj4K2j4B22q0t6jqTvSjonXkwymPRa8F5R0vfjiJLHT3jfdhjPpU/e9ZXbHyl4+84fJV2+ck0wXhS8aIWCd7i8zIA32fQ6jmTtcQHlMuU+I1+jl4K3v0yl4HUZ6SVQmLHbLr5D8daVaz1VFLx1FLzDdIuyDvfP4gUkg0yvBa937xxiXOLFc+kTBe8sFLz9xgutX7lyTTBeFLxohYJ3eFzUPaiUkqRdfFfbuyXdsHLNx4CCt79MoeC9maQjyuxT0ja/KxvTeU3OeN2nhoK3joJ3OLyh4h3KZ6WT44Ujg05vBe/tB7yb8h8k3bZyTn2h4J0lQ8H73jioCYWCd3ooeNEKBe+wXK/M6GJ5qMXll5JeIGmnyvUfMgre/jLmgtc/JwdJ+k08adI83yyfuaa8ERsFbx0Fb36+Q2gvSW+SdEa8YGQU6a3gfUocycByYKJb6Ch4Z6Hg7TcUvNNDwYtWKHiHYWtJT2UDtU7zJUl3qjwWQ0XB21/GWvB6M6Cj+SzUafz7+pOSblp5PKaAgreOgje3m5Ri91fxQpFRpZeCd3tJJ8SRDCzfKTsMxnPrAwXvLI+uXJuuHRYHNaFQ8E4PBS9aoeDNz+81Pijp3HhxyMLjzU5eWjaNio/L0FDw9pexFbyetfty7iToNT8vk7a2qTw+Y0bBW0fBm5P3yPF7CP+8kvGnl4L3SSPYzdS7Hj8+nmhPKHhn6bvg9aYOn4qDmlAoeKeHghetUPDmdXFJj5T0g3hRSOc5RtKtKo/RkFDw9pcxFbze8OsT8QRJb3mnpN0qj9NYUfDWUfDmsqWkh/D+bXLpvODdTNJb4ygGGi80f7F4sj24Ed9e/yN9F7zXnPjjcObE3tyBghftUPDmdOnyXscbf5Ec8fIYj5K0SeXxGgIK3v4yloL34WwKlDJ+P+jlMuLjNUYUvHUUvHlcV9IHuOtqkum84HUJNpYnmguta8ST7QEF7ywPrVybLu098Q/BFLzTQ8GLVih48/Hail8YwR1XY83rJf1T5XHLjoK3vwy94PWSDP/JxkCpc7qkJ0ratPL4jQkFbx0Fb//8O9Z3y58YLwaZTDoveHcfUQnmUpWCN09eWLk2XbpzHNDEQsE7PRS8aIWCN5f7s5HaIPKR8r46Pn6ZUfD2lyEXvH6efzieEEkZF/Au4r3nTnwcx4KCt46Ct19Xl/RueqHJp/OC92BJf4+jGGg8qyXDCwdr8M7yw1I4xevTlVfHAU0sFLzTQ8GLVih48ziAHZYHFa+td9vK45gVBW9/GWrBe71yNwEZVlzIX7XyeI4BBW8dBW9/9k3+mYx0l84L3iPjCAaej8eT7QEF7yzeGfJKlevThc0lHRsHNLG44L1i5dpgvCh40QoFb/+2lvQKbn8eZH4taf/KY5oRBW9/GWLBewdJJ8QTIYPJUaWgj4/r0FHw1lHwdm87SS+QdFo8eTLZdF7wuhAdUz4UT7YHFLyzuBx4WuX6dMGPwUlxQBOLC96+Cnb0g4IXrVDw9utSkt4ST5oMKr+T9NgBrH1Jwdtfhlbw3kvSb+NJkMHFP+9e0z0+vkNGwVtHwdutyyR8LpL+Q8G7zhwRT7YHFLwX5PDyTVa8RovknayfHgcywbjgvXLl+mC8KHjRCgVvf7xRlz8ckuHHs68PlHSxyuOcBQVvfxlSwXu/8r6SjCNfk7Rn5XEeqmylGgVvPWMueK8v6RMjWvqUtAsF7zrDDN5cOVfSPSrXaJG8vtQxcSATzB8l7VG5PhgvCl60QsHbD5e7740nSwYdl2LPlLRZ5fHOgIK3vwyl4N2PpWJGma+PaCYvBW8dBW83vHTNj+PJElJCwbvOMIM3V/wt1sc63LnVt0JOfXO1pbjgvUblGmG8KHjRCgVv93ai3B1tziolr/cHiI973yh4+8sQCt67leVGyDjjmbw3qTzuQ0PBW0fBu3j3l3RKPFFCloWCd53JUPDeSNL5cWATjmfxerHxLmavPEDS7+MAJppzJF23co0wXhS8aIWCt1vbSnpXPEkyqngm71MTrslLwdtfshe8t2HN3Unk6BF8XqDgraPgXSy/F/1VPElCQih41xkK3pzx9XhC5Vq1dC1J34p/8YTjgneMO+Viwyh40QoFb3dc+L0+niAZZfwF9OMqz4E+UfD2l8wFr9eTzPx+grTNkZKuUHkeDAUFbx0F7+I8UtJp8QQJqYSCd53JsAYvBW89f5F0QOV6teAi00tBsLD5BaHgnR4KXrRCwdsd3+FCphPPiPQtnfF50BcK3v6SteDdXdIX4mDJ6OONsbepPB+GgIK3joJ3MR4u6Tfx5AjZQCh415kPx5PtAQXvhvPXcoviJSrXbS088+k+kj4b/yJCwTtBFLxohYK3Gw8t67OSaeVUSbesPB/6QMHbXzIWvJcqk2XINHNw0rXCLwoFbx0Fb3sPZlkGsspQ8K4zGQpeNlnbeDyT95AG5eOVJB0k6Q/xLyD/CAXv9FDwopW9KHgXbh9JJ8cTI5PJlyXtUXledI2Ct79kK3g3kfTyOEgyqXgZmcdUnhvZUfDWUfC2dc/yBS0hqwkF7zqTYYkGCt6V5ceSXrKGEvJqkg5MXmRlyJgLXn8gvaKkqxa7VP6ZKcpe8Gb7MIsN850o/jIua4Ze8F5F0g/jSZFJ5W+SPiJp58rzo0sUvP0l2+/ER7CpGinrit628vzIjIK3joK3Hd918/N4QoSsIBS86wwF7/DyM0lvlvTKcu12k3Tl4OqSnifpDckLrExxwXudyvNzaLych4vqB5Vd5j1L/3hJZ5Rbm+3Ecvyjkl4rae+yhlz8b41d9oLXj5tnhnjtKm9OgJxcnvrniBm8i7GjpPfGEyKTzWsqz5EuUfD2l0wF700l/SIOkEw235B0ucrzJCsK3joK3jY8meiEeDKErDAUvOvMEfFke3ATCt415/Syrk3ELpWrj5eucDEen59D4d18ny7pg2tYo9LF1CmS3lTWStq+8t8fo+wFLyGtMuSC1x+4PHuTEOfM8gVmfJ50hYK3v2QpeH0X1Ffj4Mik499Rb5N0scrzJSMK3joK3vW7TJlARMhaQ8G7zlDwEjKLC94M6/utlpfg8K7yJ8UTWmP+LulYSQdI2qny940JBS+ZSoZa8N6f9wekkp9K2rPyfOkCBW9/yVLwvqJsgkzI8rjkfVTl+ZIRBW8dBe/6bFnuMub1kawnFLzrDAUvIbMMreDdtsxiWmRB6Q+x+w1oRsJqUfCSqWSIBe81JH0/ngghJR+TdKnK82bRKHj7S4aCd19J58aBEVLiL5+uVXneZEPBW0fBuz7e84c7rsh6Q8G7zlDwEjKLb/v0+sXx+ZnRlcqtYF383Jwt6fUDW1tspSh4yVQytILXs0AOiycx4Zxf1on36zGZ5c+Snl957iwaBW9/6bvg3bWstUpmJbedt4xfo4h0ePkdFp8/mVDw1lHwrt0dJP0yngAha0jnBe9/xREMPGyyRsgsLnhdnMbnZzbe2KOPtY2OKTuixvEMGQUvmUqGVvB6iZgpzZLz759Pl1mp75d0iKRnl00W95d0M0k3lHQDSXeS9FBJTy7L87yl/E7wxpnfTr7ZX+uc3MPvJQre/tJ3wXtwHNCI4y+Vvr7steWNkg6S9HhJ9yuf3Wq8rM6TJL2oTETwv+/PzqdO6LZtl90PrDx/MqHgraPgXRtPAuLLL9IqFLzrDAUvIbMMoeD1t6P+QNtXviNpn8q4hoqCl0wlQyp4va74D+MJjCh+v/NdSZ+S9GhJ9y7F7RaVa7Fa/yTpdpLuK+nlpaD5WRzAyPJ5SdtVrsWiUPD2lz4L3n+RdEYc0Ijy4/Kz9Izy+uEvTlougfLPkvYuy365/HUZ9JM4iBHFr72Z7wqk4K2j4F29pXV3CWkVCt51hoKXkFl+n3wZgltJ+kUcdA9xMXGXyviGiIKXTCVDKXg3l/TOstnjmOIZXX7tfImke5biZLPK+be2dSnMn1g+QJ8WBzaC+P2j1/2L574oLng9U5p0n/dVHo8u+OfIX8iMKd534vhyF8ADJO0o6eKVc18UX9PdJD2uzPT1rd1je933nRhZ97Cg4K2j4F0931HE8iykZV5YeZ41t/wPFLztUfCSDPldmf0Un58Z7J5sRptL0dtXxjk0FLxkKhlKwevy07cGjyU/KEso+M6HXSrn26VNJV1F0tPLUhBj+kDm4vralXNeBM+09izHN5X16dfjdeXW91/HE+o5R0l6TWW8ffIMMZeB8fHowkPKms9jyCnlOecZyX2/Ji3nO+i8JI3Xr/WEizHEP9feZyaeawYUvHUUvKvjL5C/Fwc98vyl/Gz7jgfvFeHn7rslvb28tvr3evz9hZXzeyt/FojPteaW/2FsBW+GTdYoeEmGuOD1Bhrx+dm3ncuslWy7kvr2uj0q4x0SCl4ylQyh4N1e0pFx4AONZ+s+p8PScbW2kXTn8sHEyxONIYdWznMojo0n03OeVxnjVLkE/XK8QAOMn2NPKIVMPMdMfGfDrcvP89DvOPCM5Pd0dLfGalHw1lHwrpxnp2d7HrWO1w3/ZvnS88XlDtbblOVXsm+kiIuw/A8UvO1R8JIMyVrw+pberPHMtEtUxjwUFLxkKhlCweuNebJ9kbXa+E6LZ0m6YuX8MtqkrIvpD9dnxZMZWE4v69THc8zOM4KzbU7Tye2RA/HMAS8d4NdTP7c8MzbTbN2VukVZvmHoM3rvVjm3vmUr5ih468lc8HqW5dDfN9Tiu8hOKJ+/vWb4Dkm/pME6Lf8DBW97vn2Fgpf0nYxLNHiTC+88nDX+xT6E4mhDKHjJVJL959SFqDf5GWq8PvrBkq5aObch8Nqb9yhLNww5nytr5Mbzy8yzgCh4c/LGYCfFizOQ+D2tN6rJOHFhNVys3Kks3TDUZTJ8Z0q22X4UvHUUvCuzk6RvxcEOPH4P6iUC/Hrj84vnjJFZ/gcK3vYoeEmGZCt4PTP2M3GQCePb/jJdt9Wg4CVTSfaCN/OdChuLb9/7hKTbVs5piLxMhtfoHeru9i6APOMmnldmFLx5uSAdWs6W9AFJN62cz5D5/ZpfmzLtR7HSeEZgJ2tKrgIFbx0F78r4Z3Hod1wtxZ8DfefV0JcdxCot/wMFb3sUvCRDshW89x7Iz4VvXTygMv4hoOAlU0nmgtezXn8eBzyAeNf3g0opGs9p6G4o6eMD+R0U84WyxnA8p6woeHPyzNehzd71UgZPG/jSWRflRgOZ/BDz6WR3F1Dw1lHwXjSv4z3kO66W8n1JT0722R8dWv6HsRW8H4on2wPW4CUZkqng9ZtzzwobSr4iaevKeWRHwUumkswFr5c2GNpMkOMk3b5yLmPiktQzGM+NJ588nlX9gMr5ZEXBm5PX3h1SvBHcHSvnMUa+ffoVA9sg8i/J1uKl4K2j4L1oL4+DHFg8ocDX9TKVc8OELP8DBW97FLwkQzIVvJ7VPqS1xvzze/fKeWRHwUumkqwF7+6STo6DTZ5PTexWvvtL+k68CMnzxfL6Hs8lIwrefPxe8EvxoiSO186+euU8xuxikp5Q3rsPJS4xPe54Ln2g4K2j4N246wx4CSd/+ftOSdeunBcmaPkfKHjbo+AlGZKp4H1B+UU0pLyoch7ZUfCSqSRrwevXjaHkHEmHlB2V43mMndfz9AzBIcWbxsXzyIiCNx/PAB/Ke7DDRrCR2nr4sfpNvChJ42V9PIEjnkMfKHjrKHg3zF9ODHX27omS/rVsKBvPCxO1/A8UvO1R8JIMyVLwbiLp83FwA4jXaxxa8UHBS6aSjAXv5Qe0jps3LnrpQJeiaeWakj4XL0zieJkj/z6N55ENBW8um0n6ZLwgSfM2SZesnMPU7CPpV/HiJM0rK+PvAwVvHQXvht1M0ulxgMnjL+reI+m6lfPBxC3/w5DWxVxJMhS8bLJGMuS3ki5deX52zbe/eKOMocUFyNBue6HgJVNJxoL3wDjIpPFr24slbVE5h6nxkhreLGgI8Wy5W1TOIRsK3lxuN5B1p98hadvK+KdqKCXvTyXtVhl/1yh46yh46zx79zVxcMnjda99l9hQlmtCx5b/YWwzeD8cT7YHFLwkQ7IUvA+KAxtI/iBpr8r5ZEbBS6aSbAWvN/D6dhxkwrjcfdnId6VfLa8/PJSZvP5AumnlHDKh4M3DJYZ/3rPng2WjsTj+qdtvIMs1PKYy9q5R8NZR8NZ5je+T4uASx1+kPLJyHsD/WP4HCt72KHhJhmQpeB8SBzaQ/D3RG5GVouAlU0m2gvc+A9kB/XXMkqvy3RpHx4uVMKeWpUDi+DOh4M3Da9lm30DIX65kmAGa1eMknRUvWrK4S+h7uR8K3joK3jrvDePPeUPI9yXdsXIOwIUs/wMFb3vevIOCl/SdLAXvM+LABpRDK+eTGQUvmUoyFbze5OL9cYAJ47XQM/xOyGpPSd+NFy1Z/IHUS4HEsWdCwZvHoyT9d7wYieIlCG5YGTcu4FnYr4oXLll8Z4hfP+PYu0TBW0fBO++Kkk6IA0saf6bzMjvxHIA5y/9AwdseBS/JkCwFr9fFHmpc2sTzyYyCl0wlmQpe3+KfefauS8HvUKSsyP3L8jyZ4w2zMi+xQcGbw+aSDosXIlH8mvmIyrgxb7uyVnjmGYdeCiSOu0sUvHUUvPO8pMgQ4i+cb18ZP1C1/A+fis+mgSfDJms3puAlCZKl4P1oHNiAckTlfDKj4CVTSaaC99mS/hwHmCje5NIb9sRxY57Xtz1I0vnxIiaKx+alwOLYs6DgzeEq5X1g1rxa0laVcaPOX9D9Il7ERPESN5esjLsrFLx1FLwX5i++jomDShjPMN67Mn5gg5b/gYK3PQpekiFZCt6PxIENKBS8hORMloLXBcXH4+ASxcXzIZVxY8O8RrFny2WNZ/E9qzLuLCh4c/AGt951PWNOLAV0HDM2zsuznBcvZpL8tdzBGsfcFQreOgreC7v1ADYuPFfSfStjBzZq+R8oeNtjkzWSIVkK3rfEgQ0o766cT2YUvGQqyVLw3jL5BjhfZnf6NXFR8bN4MRPlS2VtzjjuDCh4c8i6Lrg/Hz22Ml5cNG9klvkLxT5/zih46yh4L+yVcUDJ4i/l/q0ybuAiLf/D2AreDGvwUvCSDMlS8LqIGWp8C2E8n8woeMlUkqXgfXwcWKJ4A6O7VsaMlXluvKCJcrqkW1TGnAEFb/+8idCP40VIEi/b5fcqccxYGW+4dE68qElyZGW8XaHgraPgvYC/7D4pDihRPAv+rZK2qYwduEjL/5D5NrS1hIKXkFkoeNcX39qcpURaKQpeMpVk+Nn0DMovxoElyd8kvaYyZqzczpKOjxc2UR5XGXMGFLz9u3u8AElytqS7VMaL1XlHvLBJ4vLs2pXxdoGCt46C9wJ+7cm8vr4/v12uMm5gRZb/YWwFr9f7nDvhjvnWPgpe0neyFLyebZD5FuYN5Y+Srls5n8woeMlUkqHgvWbi2/h/XsYXx4zVuUfi31+eCekNY+KY+0bB2z+v0Zwx3tfgEpXxYnWuJ+mMeHGTxGs/x/F2gYK3joL3Am+Mg0kUb4br9xtxzMCKLf8DBW97FLwkQ1zw7lJ5fnbNb+Y/Gwc3gHgmwhUq55MZBS+ZSjIUvI+Jg0oSb8I1tUJrUVxWfjBe4CT5RZllHMfcNwrefl1c0rHxAiSI35N6ZnEcL1ZvE0lvjhc4SV5XxhfHvGgUvHUUvDM7Svp2HEyieGmGOGZgVZb/gYK3PQpekiFZCl7z5odDy9DW3zUKXjKV9F3w+gPsm+KgkuRHkq5UGTPWZp+ks+X+kPR2dwrefl1G0g/jBUiQr0raojJerI0/a2Z8XfpBT2ssU/DWUfDO7BUHkignS9q9MmZgVZb/gYK3PQpekiGZCt77SfrvOMDE8RpND6mcR3YUvGQq6bvg9WyQrJt1sANzW5uVW8u9rnG2+MN7HG/fKHj79cCyE3u2PKEyVqydv2R8X7zICeLfi/6SIY530Sh46yh4Z7JuiOvX6qzr6WNglv+Bgrc9Cl6SIVnW4LWrSvplHGDiHFcKnHge2VHwkqmk74J3j6Szp34s6WqV8WJ9sm5a5VKjj9uhN4aCt18Z1989gdelhcj4unSepP0rY100Ct46Ct7Z78gj40CSxHc2ZJmMNRZbSXpm6Tgz8DJf+1bG2dzyP/gvHlO86cTcCXeMgpdkSKYZvHZIHGDSeP3KAyVtWjmH7Ch4yVTSd8Hr2WjZ4pkgL6+MFevnL/yOjxc8QU5JuFY8BW9//L7lsHjyPcfvqd5dGSvWz69L34wXPEFeXBnrolHw1lHwSjtI+lYcSIL4y5BHVsaL9dk64eP9oso4m1v+Bwre9ih4SYZkK3ivL+m0OMiE8Yf4oa5fScFLppK+C943xAEliD8s3LgyVrTxvITv7TyebI85BW9/di2b72XKOZL2rowVbbw0XvAEeVcPdxZQ8NZR8M5mumdctsazd10+x/Fifby5+1fixe45nSydtvwPFLzt7ZnwQwCZXrIVvH6zd/AAfjaeVBn7UFDwkqmkz4LXs+Q+EAeUIB+XtE1lvGjj6pJ+Hy96z/mzpHtWxtonCt7+eDmsbEvH/FHSSyQ9RdLT0NSTk/4u+omknSvPz0Wi4K2j4J2tcZsxT6yMFevngveYeLF7TucF76fiCAYef8CZO+GOUfCSDMlW8JpnlxwdB5oon5V0ycq4hyJ7wfsjSV+U9GWk55kFnhGaNX0WvJcrt8ZnijcA85pjcaxoZ9syiSBbXlcZa58oePvj2dxnxpMnpOOcJelalefnIlHw1k294PXkorfHQSSI77TwXg5xvFg/Ct4RFrz/FU+2BzcrsyoI6TMZC167n6RfxcEmiNfr8c9uHO+QZC94fdvexcqu9MjtX5L/Huuz4L15wi9xf1NmmMaxoq2nxgufIBne9y5HwdsfPz+95i0hfcbLcnhZtvj8XCQK3rqpF7xep9qbz2bL+ypjRRsUvBS8C0HBSzIka8Hrgs+LjWeKf14fVBnr0GQveNloZThuKem/4wOYKH0WvLeR9Nc4oJ7zhfKmNo4Vbd2hlBeZ8slkm4JS8PbnrfHECekhvqPk4ZXn5yJR8NZNveD1naOnxkEkyD0qY0UbFLwUvAtBwbv2nFtuC/YtZl7rzmuJLR1jVsLqkrXgNX8AzPJmzCWWX3i73hBiEbIXvO+pjBk5eQYvBW+d1+nO9vvowMo40Z7XOM62O/PPJO1WGWtfKHj747tkCMmQQyrPz0XK8pliKRS89XRd8F6v3OGUKV6e4QqVsaINCl4K3oWg4F1dXOJ67eRnSbppuX6+1fQqkq4m6SblmL8N/kjSb+IyJnPBa5eS9M446I7jn9MXSNqqMr4houBFKxS8G/aWOJgEuX9lnGjPM2U/Fi9+z/Fs8ltXxtoXCt5++Etql0qEZEjXBScFb93UC15v7pgtfq7GcaIdCl5Jn44jGHhc8PY9E4+Cd2X5XVn43Le7bl65jhtyI0mPL5t1nR//o+R/4oK3611sV2t7SW/qadfn0yQ9R9LFK+MaKgpetELBW+f3F36fkSnfKRu/xbFiMfxlc7Z4bfs4zr5Q8PZjJ0knxhMnpKccUXmOLhIFb93UC97XxgH0HO/f8NjKONEOBS8F70J4AxYK3o3Hv/i8lp3XY43Xb6X8gdZv2l1kkvkMoeA1b+jkD8y+ZaWrHCdpn2TrFrZAwYtWKHjr/Jrh9W4z5csjfC3LbN/4ACTI/pVx9oWCtx/XKsubEZIhvkO4y99LFLx1Uy94XxMH0HNOl3TVyjjRDgUvBe9CUPBuPK8qu1rG67YWvrX+dpK+FP8SMpiCd4kfR78eLfJn5w9loy+vyRT//jGg4EUrFLx1vtvEhWqmfDjB+54p2bPMwsmUh1XG2RcK3n7steD3T4SsJqd0/BmEgrduygVvxjuuvGZ+5uUTx4CCl4J3ISh4N5wXLeiWeK/dm21WVd8ZWsFrLv4fUQr71juVf1vSAyVtUfl7x4KCF61Q8NZ5R2bPwMgSb/b2jMo4sTg7lGUxMsWzlOI4+0LB2487xpMmpMf4M4j3UonP00Wh4K2bcsHrz5Q/iQPoOYcl6KnGjoKXgnchbkHBOxd/CH1p5Vq15M3Yvphwd/O+MsSCd4lLlEeXW7zWM1PKM3b9JutxZb3f+PeMDQUvWqHgrbvmAr58Wk/+VpY7iuPEYr0vPhA9x3emxDH2hYK3HxS8JFP+KOkGlefpolDw1k254N1d0m/iAHrOUyvjRFsUvBS8C3FLSX+JA5twfC1eL2mbyrVqzR90z44DmGiGXPAuubSkO5fN+Hwbsjfmu6j8SNIHylIgntm9beW/O1YUvGiFgrfOX+Cu50un1vEXmi524jixWIfHB6LnfLzj9S43hoK3H7ePJ01Ij/FEp1tXnqeLQsFbN+WC15uyZ/pC3vGEozhOtEXBS8G7EBS8F87nJV2mcp0WwZu2HSTp/DiICWYMBe9yXtrDhe29JN1d0gGS3lB2SPUGM/eUdDdJe1T+3amg4EUrFLx13pwx010iLpu99mYcJxbrnfGB6Dle1sjFahxnHyh4+/GgeNKE9BxvSBmfp4tCwVs35YI34x3V/vwax4m2KHgpeBfiVhS8/xNfh3+tXKNFurykr8WBTDBjK3hx0Sh40QoFb52/YMqUMyVdtzJOLNZ/xAei5xwraevKOPtAwduPZ8eTJqTn3LvyPF0UCt46Ct488XvqLpctmSoKXgrehaDgvSBeQ7XrktGzeJ8TBzLBUPBODwUvWqHgrdsvDqTnnCbpSpVxYrFeEB+InvPNRMsRUfD2g/e9JFsoePtHwZsnJ5ZNWuM40RYFLwXvQlDwzuLbWLt8IV/uNpJOiQOaWCh4p4eCF61Q8NY9OA6k55wq6XKVcWKxnhUfiJ7zXUnbVcbZBwrefjw/njQhPYeCt39TLnhvlqzg9Z02W1TGibYoeCl4F4KCdxYXrFevXJ8u+AV06ss0UPBODwUvWqHgrXtYHEjP+bmkXSrjxGJ5J+xM+YGk7Svj7AMFbz9eEk+akJ5Dwdu/KRe8XgM60/vY4yRtVRkn2qLgpeBdCAreWX7S44wS7yZ9WLLNcLoOBe/0UPCiFQreuofHgfQcCt5+HBgfiJ7zQwrejWYKBW+2IocQCt7+ZXtd6LLgfXT8y3sOBW83KHgpeBeCgncWb0ISr02X7jbxgvd0STtVrgvGi4IXrVDw1j0kDqTn+E6Zy1bGicViiYYNo+Dtx4vjSRPScyh4+zflgvdx8S/vORS83fCGs1+NF7/nUPCuMxS8eeJbWeO16dJd4oAmFgre6aHgRSsUvHXZNln7laQrVsaJxcq23imbrG08Uyh4sz0nCblP5Xm6KBS8dVMueB8T//KeQ8HbDX/ZfXy8+D2HgnedoeDNk8dWrk2XvNFa5oJi0aHgnR4KXrRCwVt3rziQnnOGpGtXxonFOiQ+ED3Hm7d41kocZx8oePvhD5CEZInvoPQaqPF5uigUvHVTLnj3l/S3OIAeQ8HbjR0Sfham4F1nKHjz5IDKtenS9SSdHwc1oVDwTg8FL1qh4K3bJ9nSP/4dd8vKOLFY74gPRM85uhSrcZx9oODtx1PiSRPSY/4kaa/K83RRKHjrplzw+r3Rn+MAeox/L2b5PT1mu5Z9oDKl84L3M3EEA88nKHjT5BGVa9OlK0k6Ow5qQqHgnR4KXrRCwVt3i2QfGFw2710ZJxbr8PhA9BxPbvDmsnGcfaDg7Ye/fCIkS86UtEflebooFLx1Uy54b57s/ZqXDdimMk605WXLTosXv+d0XvAeFUcw8Hw0nmwPKHhn6bvg9Tc4FLzz1wXjRcGLVih4664h6Zw4mB7jgvcOlXFisd4fH4ie8+7KGPtCwdsPf9FDSJZ8p+Myi4K3bsoFb7Yv5P8oaffKONHW5cv+FJnSecH7oGTrk6wn/iG+fzzZHlDwztJ3wXvxEc5QX00oeKeHghetUPDWXTrZG0cXvM+ojBOLs72kE+ID0XPeVBlnXyh4+3GneNKE9JgjKs/RRaLgrZtywZttiQbnjpVxoq1rSvptvPA9p/OC98ZxBAPPTeLJ9oCCd5ZHVq5N17L9wu8yFLzTQ8GLVih46zaT9IU4mJ7j5QLiOLE4ft98XnwQeo7XX43j7AsFbz88k38sE3bI8POuynN0kbJ93qPgrafLgnfPhHvxPKoyTrT14HjRE6TzgtfrlH4vjmKg+VZZd2PuhDtGwTtLhoLXhdJUQ8E7PRS8aIWCt+5ikr4YB9NzvlTGFceKxbhLfAASJMPda0soePvhLx4yLUvmuwtOlHRseT5gOr4paf/Kc3SRKHjrplzwXkvS7+MAes6BlXGirZfHi54gnRe89ro4ioHmVfFEe+JdQyl4KXj7DgXv9FDwohUK3jpv4vqxOJie8/2y5nwcKxbDy09ly36VcfbFs9y/EgfYc6ZQ8F5B0m/iifcYF7yPkbS1pG0xKdv1sOE5BW/dlAvey0r6RRxAzzmkMk605SWrsqWXgvfukv4URzKweNOTfeOJ9oSCdxYK3n5DwTs9FLxohYJ3w94YB5Mg962ME+1tKunD8eL3HL/fvHVlrH3xNTo6DrLnTKHg9czpz8UT7zmHVsYJLAIFb92UC17vxeM7CDLlB5IuVRkr2vAXTMfEi54gvRS8/nb1I3EkA4vfcPsbw3hufaDgnYWCt99Q8E4PBS9aoeDdMK+hlm2ty0xrsI7ZFpKOixe/55wh6SqVsfYp2zrVUyh47R3xxHuOy4xLVsYJtEbBWzflgteyfSHvzb8yLCc6VjdIuO6y00vBa4+NIxlYHt3D7SAbQsE7S4aFxKde8O5YuSYYLwpetELBu2GeLZmt4HWhtlVlrGjLG/lmu+XTj72XRYhj7RMFbz+8sVWm+H3o1SrjBFqj4K2besGbbRnSv0p6WGWcaGPvpJ9deit4/QvYC6MPMR53ptkLFLyzUPD2Gwre6aHgRSsUvBt2U0nnxQH1nFMl/XNlrGjryfHCJ4jXhI7j7Nub4yB7zkGVMY5Rxs1lnlgZJ9AaBW/d1AveF8QBJIhnFcdxog2vv5ttAobTW8Fr+yS9KBuLi1SvIRzPpU8UvLN4VnW8Nl2besHLEg3TQsGLVih4N+zSkk6KA+o5Zyf5nTtmniGdbYM95zWVsfbtpXGQPeewyhjHyJ+Hsn355Bl0cZxAaxS8dVMveD2j849xED3n+PI+Mo4V67NNwjWXl9JrweuFiT8eR5Q8frO9feVc+kTBO0uGD5sUvPPXBONFwYtWKHg3LuPvFr8f8kZLcaxoYw9Jv48Xved4g+S7Vsbat2wzSf2BegpLmPhuzGzP0R9LukxlrEBLFLx1Uy94LyvplDiIBLl9ZaxYn7tI+nO80EnSa8Fr/lDnW/2GEK+Dlmnn4CUUvLMcULk2Xcv4IbyrnEnBOzkUvGiFgnfjPGsyWzxz74aVsaKN5yZ8b+eC90aVsfYtW8H784ksYXLl8uV+pvg5evPKWIGWKHjrpl7weqbsz+Iges7fWaahOe/Dle19x/L0XvDaHSWdFUeWLN6F8B6VsWdAwTtLhoLXv2CnmiMlXbxyTTBeFLxohYJ34/z+I9ttf15i6+DKWLF+vlPsk/GCJ4g/uGYsLp8TB9pz/JnGM7DjOMfmEpKOiSffc/x75JWVsQItUfDWTb3g3VzSJ+IgEsSf1bizoZ1LSToxXuRESVHwugV/exxZsngDh4tVxp5B9g/GXeUxlWvTtXfGQU0o/hmJ1wPjRsGLVrL/Huu74L18+aI5W34q6YqV8WJ99i0zEbPl0MpYM/DPZ6a44J3K7PYXxZNPkBMk7VIZK9AKBW/d1Atee1ocRIL4C/kMm9GPxUOST05NUfCa1+PNOvvx3ZK2q4w5i+wfjLtKhoL31XFQE8o7KtcD40bBi1ay/x7ru+D1bIGvx0ElyWPLF/VxzFibTSUdHi9ykviWxDjeDPz6kWmzr79KemZlnGP0lHjySfKAyliBVih46yh4pQfGQSTJ0RNZG37R3Fl+Ol7cZElT8NolJb0vjrDnuNzdsTLWTLJ/MO4q/pAZr03X9im7i08xb6lcD4wbBS9ayf57rO+C154XB5UgXtvtK5J2rowXa3M7SX+IFzpBvJmWxxbHm4HXPfTmWpniO7riOMfoxpJ+FU8+QT6S+M5LDB8Fbx0F7+yuppPiQBLEG4LdpzJerI43ms26udpSUhW85pmyGTaq8jpjXltuh8oYs8n+wbirPK5ybbrmNdeyrZPYRVxqM1tieih40Ur232MZCt5st6Ev5RxJB1bGi9Xz+n1ZZ+9647CsEx48rmwfqI9NfvdfK1tL+l48+QTxlyT+vRLHC7RAwVtHwTv7YsmzZTPm/eU1O44ZK7OFpI/Hi5ow6Qpe86L9+0k6LY62o/yitPNxXFll/2DcVTIUvN585Pg4sAnEa0N6N+V4PTBuFLxoJfvvsQwF72UTb+pwsqSrVsaM1fF7z6xfEvsOu80qY87AH1izvffymoe3qox1bLykSNb9J3wXZtbnLIaNgreOgnfmJXEgSXKupPtVxouV8YbH2WfvOikL3iU3lfS6OOIF5w2SblEZS2bZPxh3lcdXrk3XvA7hC+PAJpDvS7pc5Xpg3Ch40Ur232MZCl4XKZ8qyyJkjNegZy3etfNsz8zruj26MuZMMpaMGZYO64Lv4MoY310whZId3aPgraPgnbl9HEii+O4S7+sQx4yN89q7R8aLmTQHVcbf3NyBVdimzMw8Lo68cb5RCkL/fXEM2WX/YNxVnlC5Nn3wraqeuTGluNR2+RCvBcaNghetZP89lqHgtYfGgSXK7yTtXRkzVubhks6PFzVJTpF0/cqYM3EBnS1HTeRLD5eonhmWMR8st9XGMQPrQcFbR8E7c3lJ34qDSZSnVsaMjXNPmGkz143lZZXxNzd3YA12Ld+Eu4htmaVi1z+I8e8ciuwfjLtKloL3SpJ+Ggc34njjlf0r1wHjR8GLVrL/HstS8HpDo76Wr1pJjkm8Tmtm1y6bhGWdnf25ypizybhzuTcfu1llrGPjAjXrzCY2FsIiUPDWUfBe4NA4mEQ5VdJ1KmNG3TXKF91DyWsq59Dc3IF12EXSPSW9SdIPyqYPq4k3T/ObaJ+41/kdw87P2T8Yd5UsBe9QFuBuFRd821euA8aPghetZP89lqXg9XqSH4qDSxQ/hv6AF8eNDbukpHfFC5ksGfY4uCieYexZ5NnitfCmMIv3lYnvXvsi71PRGAVvHQXvBdxXeZmYrPF7ya0q48aFXVzSW+PFSx4vORvPo7m5Aw14p2GvV3ZNSS+Q9NxyMn5zd4akM8v/Pb2Uuc8v9iizS/zvx//mUN06+QfjrpKl4LV7SfpLHOBIc0jZMTReA4wfBS9aoeBdOf+u+1McYKJ493pvRBHHjbrnDeDxzL48g/nLDy+JkC2+TfcylfGOzc0TP489rpdWxowN84bnvnP2OZKemYw/83tJmz7LKQreOgreC/h1f7UTEbuM7xh6RmXcuLBHSTorXrzkeXvlPJqbO7BA/yTpCpJ2K//30pV/ZmwoeGfJVPB6psBn4wBHGN+usGfl/DENFLxohYJ35fz+xl9eZ47vsLpuZey4sLuUCQmZc0SZwRLHntGH4+ATxOXikypjHZudJH0tnnyinM0XT6vyyOQTVTyjrs+9Pyh46yh4L+DJT958NnO8jJDfh8SxY+amZTmLoeWHXSyXNncATVHwzpKp4LWHJH9ztN78VdLrmL07aRS8aIWCd+X8mutv57Pn05J2qIwfM7eU9N3E6+46vuXeRU8ce1YPSvq+y7N4h7zXx0q9OJ54svj9ite7juPGhd0k+Vrvnk23V2XcXaLgraPgvbD7Jt48dSnfl7R7ZexT5z2VvP/AEONNTxd+59XcATRFwTtLtoLXs8ezbjrRIv5Gi9m700bBi1YoeFdn36TrjS6PNzfyLCtK3nkumb4eL1jC/GRgd8K5mPKXz9niotxLccTxjo03lMs+I/0TZd3rOHbMXFbS5+NFS5ZvlmUa49i7RMFbR8F7YX6efiMOKmGOLnfBx/FPld+3vi/5F/Abiz9P3a1yXk3NHUBTFLyzZLwFbn9J58WBjiT/0fP6V+gfBS9aoeBdHb/2DqEgdMn7WgqVC/FMGX+YGkJe1vNt0KvlD6hZlwnwsip+vx7HPCZbSvpoPPGEeUUZaxz/1Hnd3ffGi5Uwz66MvWsUvHUUvPOeEgeVMP4S8t2Sdq2Mf2r8/vqN8QINMH6NiufW1NwBNEXBO0vGgncbSf8VBzqCfIX1FUHBi4YoeFfvcXGQSeOS91Xl9SKew9R4Y+AvxQuUNCdLulHlHLJ7fTyRRPnMBD5A+7Uye/5YNt7eojL+qfI62/5CJ3u8PMMNKuPvGgVvHQXvvOsNYN8Ex+/BXfLuUjmHqdi8TGAbQ05Y9GM5dwBNUfDOkrHgNRehx8bBDjj+sP4ASZtUzhXTQsGLVih4V887NH8vDjRplmbyXqpyHlPhzTqyzi6txRuWxXMYAv+sZn4tefPI3z/5Fn9v8JI9f5B0UPlAH89hajYrRVj25TWcD1XG3wcK3joK3rpD48CSxksc+bnk95fxHMbOM3ezb4q32ng/qHiezcwdQFMUvLNkLXj9Rv6e5QPuGHJIgrWvkAMFL1qh4F0br+s5lHjzK3/IGdKarq3sLenb8YIkjj/k3bVyHkPgGbK/jieUKP458Oz7OO4xeWE86aTxTF6P1bNX4zlMxbaSDh5IuevXpXtVzqEPFLx1FLx1tyqvN0OIf84+KOlalfMYK78v9Z4RY4s3O/bSO/F8m5g7gKYoeGfJWvCavxV6edLdnVeT70xkJ2isDAUvWqHgXZurSjopDjZx/EWndyX2bNZ4LmPkW8C9AezP4oVIns+W4ieezxC4rPtAPKFkOU3SwytjH4vrSDolnnTSnC3p7ZJ2rpzH2F2ubCQ0lByVaNNOCt46Ct66oaxvvTy+xf9OlXMZmytLOiKe/EhyjqQHVs65ibkDaIqCd5bMBa/5zeNrBlzyfl/SjSvnhemi4EUrFLxr94Iy42JI+ZGk/SRdrHI+Y+GZpL7dz5uXDCn+Obx/5XyG5MGSzo0nliwueR9ZGfsY+OfaS7Jkfk2P8frI16+cy1jdRNLn40VInmdWzqMvFLx1FLwbtq+kM+IAk+fU8ntqrJuq31nSMfGkRxaf3xUq575ucwfQFAXvLNkLXvPaZEMsef0t3u0r54Npo+BFKxS8a7ebpJ/EAQ8gXgPzdWUWWTynofOsl69L+ns86QHEs+QuWTmnIdkx+e+mpXgpiWePdLMvb9A3tDLjm+WLpzGvkewZ7geU4mZI+WmydUEpeOsoeDdsy4HOFPUs0MMkXa1yTkPlwvpASb+LJzvS+AvX5r/X5g6gKQreWZ5cuTYZLZW8Q1mT1+XuHSrnAVDwohUK3vXxjvBDzTck3VfSppXzGhovYfSqgeyYXct5ZRPVeF5D9KZ4conzTklXrJzDkHnjrsPjiQ4gfyq7qF+pck5D502fXz+gzx/L499x8Xz6RMFbR8G7cZ4x+vs4yIHEm/r6vfDQN6bcU9JHS3E9lfjL1sdXrsW6zB1AU7dJ/sG4qzylcm2y8rfQLnmzP25elsHFSxw/YBS8aIWCd31cDv0gDnpA8Qeet0m6YeXchsAbj/o2xq/GExtYfJv6wjbk6NhtBzaD2s+dey9ilk2P/LqefamMDcV7TvjLjqGuRb3cTpKeIenH8SQHkp+XdTLjefWJgreOgnfj/MWXNzAbanznlWfz3qxybtn5bjE/H4Z2Z0mr+I6hpmv/zx1AU34Tm/mDcVfxVPt4bTLzjo3eeC1jvITEO8otdnHcwBIKXrRCwbt+T42DHmB+JemQAe3e7Nv8fEu3i9GhLb0U4/HvUznHoXJR/cV4kslzVlm2xDMt4/kMkcvqN8STHFA8o/0jku5Wbq+O55edv3h6lKTj44kNLAdVzq1vFLx1FLwX7XalKB1yflv2GLh25fyy8caMjytL8Ew9LnkfW7lGazJ3AE1R8M4ytILX/AHEO2x/O55Mj/EtC960J8tOtciLghetUPCun1+zj40DH2hOLh8UvRFQPM8Mti8bkX1qoLc71/KWynkO3aMHuAGh4+f/SyVdp3JOQ+OJAkNb7zXGZYxn3d1rIDPcvaGOb8c9Lp7IAHNi0nXaKXjrKHgvmmfxHhoHOtD4S3kvS+VlD+J59s1LYrrM9DJg5IIs7X/h6xOv2arMHUBTFLyzDLHgXeKde/3mse9v9I4sM3i8CUMcIxBR8KIVCt42vEvz2XHwA46LIX8Q8iafu1TOt2su3B4j6eiBFocbyikDmYmzWrtK+m482QHFG0t5Oa9bld+38fyGwLN4XzGw5TI2FL+2elb40yXdoHKuffLzw8+Tl5Tl1cYQf3nW9Jbihih46yh4V8Z3afjLi7HktHLn795lSZh4vl25mKSbSnpOsslzGeMJIfdbz5rKcwfQFAXvLEMueG3r8oPm28F8m16X8bpcfjFc97c5mBQKXrRCwduG39x6LdsxlY+OP+i7VPVMkVt2uJu6Z+t5NpzX1/UHes9WGdu1dfz7P577WHjt0aEvn+GNvz4n6WBJNy7FdTzPzHaTdFI8qYHHEzKOkPQsSdfoodRwce737L7d27dKf6I8T8aUoyRdqnLuGVDw1lHwrox/fr2sVub3vWuJf9d+pSy1dYuOflf5NWIPSc8sG3v6tXkMXyh2EX9p+V5J91nL77C5A2iKgneWoRe8S7w27wMlfXjBb9b8gdnf8j+3vPmO4wAuCgUvWqHgbce7vw951uJFxRtkeGbjmyU9UdIdymuR18ON12I1fNukC11vWPevpbjxbL1fjrTUXYqLw6wlSgu+vdu7f48l3pDwJ5JeX973en1Yz273c9fP4Xj+WXi5jLHuWv47SSdIeqWkJ0u6U1kyx4+Jv3SL12K1tiiTQC5flobxlxZvLJuPjWWJmBi/zt+zci2yoOCto+BduZ1HsDHrxuKi1a+LXm7Iv6tuXTatXM97Na+F7tdCz4D28gsvLDN1T49/OVlV/ibpa6UTukdZv92/d+L1v5C5A2iKgneWsRS8S/zC79tt3994HS1Pyf9A+W9n25UWw0LBi1YoeNt6RA93gvQVb4TkTYT8u82zN15W1sp08WV3Lu+TblO4EL6rpLuX34MunlwWf7as1TbUnebXEpeFngEYnz9j47J+zPFz1j8DLuvfLun5ku5dCjL/LPi5bp5RFa9NV/yh3rNMp5IflvfuXqfbry/e7MyPgR8T82vQHctrk1+T7lL+dz9eS/+MH0e/j/ly2SDI/82p5D9XUjD0iIK3joJ3dfwexL+HpxC/V3MZu9RD+L3afZe93i29LvqaLP3ZZaM3svXzys9xzw727zp/8U4WF38pfoykN0l6QHkc/LvJvATGpn7+xicz2qLgnWVsBe8S/xD5W/sHS3p5mXXrdXtWsl7vmeWf/UH5dx9SZieteb0VYBkKXrRCwduWZ/K56CGzW/V826BnutmYZ+OuNtk//LbiWbzfiSc/wfRdAnmN2D/GQU04njXl1yZeky4cf2Gxe+X5kwkFbx0F7+r4M76XniJkKPHSOf+4MyU+mdEWBe8sYy14I9/25dvxvLu4d8l9XvkWzL9Uzf+/f6E9ofwz/mdXva4KsAIUvGiFgre9a5ZZX4TU8vlyG1583oyV3xNNPe+sXJeu/VscFCHL4i/hvJFlfN5kQ8FbR8G7ev4C0rMlCRlCfEcJBW8HfHsd3/5Op+AFsqDgRSsUvIvhjROYMUdifKv3npXny5htP/L1DlcSl1LxunTNkxS+EAdGSInft3nt4vi8yYaCt46Cd21uX9adJiR7/PubgrcDFLyzUPAC3aLgRSsUvIvh2/+8wcUiN+wkw4qfC0N9Pq+X12OeynqHtWQoeM1r+E1prWuysviLp6tWni8ZUfDWUfCundeKPz+eACHJQsHbEQreWSh4gW5R8KIVCt7F2UbSR+IJkUnGa35686J/bJAxQT7vt8WLMqFkKXjt4Xx2IcviL168gU98nmRFwVtHwbt23ojyvfEECEkWCt6OUPDOQsELdIuCF61Q8C7WNcruxWTa8YfHHSvPjym5yoRnj2YqeF22v75sgkjISyrPkcwoeOsoeNdnN0nHxZMgJFEoeDtCwTsLBS/QLQpetELBu3h7S/pJPDEymfi1+vKV58UUPUjS7+IFmkAyFby2a7m7wDPLyTTjx/4DA9zwkYK3joJ3/W4r6UfxRAhJEgrejlDwzkLBC3SLghetUPB248HJrzNZTE6SdKvK82GqNpP06niRJpBsBa95zdUT40DJZPIlSbtXnhfZUfDWUfC2sb+kP8eTISRBKHg7QsE7CwUv0C0KXrRCwdsdb+RBppNfSrpP5XkwdVco5dKUkrHgNW9+5+cpmVb8mN+i8nwYAgreOgredp7N3Q0kYSh4O0LBOwsFL9AtCl60QsHbnc0lvYIPDpPIr0b23G3N5dJv40UbcbIWvPZQSafHAZPRxj939688D4aCgreOgredLSQdkvy9MZleKHg7QsE7y1Mr1wbA4lDwohUK3m5tK+mNbHA06pwm6ZGVxx4X9jBJ58SLN9JkLnjtCRNdG3lqOUPS4yqP/5BQ8NZR8LZ1SUlv5gt5kigUvB3xYtyZPxh3ladVrg2AxaHgRSsUvN3bXtKbKHlHmV9LOqDymGOeP6g8X9K58SKOMNkLXj8Wfi//+zhwMpqcKenpZR3s+PgPCQVvHQVveztKejslL0kSCt6OUPDOQsELdIuCF61Q8PbDJS8zeccVL8vw6MpjjQ3bRtKrJP0lXsyRJXvBa/7g+AxK3lHmrLKuqJcJio/70FDw1lHwLsbO5TnHHduk71DwdoSCdxYKXqBbFLxohYK3Py55X0vJO4qcWtYyjY8xLppL3g/GCzqyDKHgtU3KLE9K3vHEM3dd7g595u4SCt46Ct7Fccn7NmbyDjp/knS0pG8P+D03BW9HKHhnoeAFukXBi1YoePu1laSXxpMmg8rPJe1XeWyxcv6y4xPxwo4oQyl4zR8gvXkya/IOP0vLMvyjFBgJCt46Ct7F2kHSGwZcDk4550t6TXm/vbukk+M/MJBQ8HaEgncWCl6gWxS8aIWCt39Lhcop8eRJ+vxQ0t6VxxSr5w/QYy15h1Tw2qaSHiPpN/FEyGDiWdhPHNHM3SUUvHUUvIvnTXL9hTwzeYeT8yS9snxuXnoc9y8bTg4tFLwdoeCdhYIX6BYFL1qh4M3j3pJOjBeApIw/4H1R0rUrjyPWzpvafKDcTjmmDK3gXfIAvngaZE6T9MDK4zkGFLx1FLzd8Jdf/kLeP2Mkd7yBq5+HlwiPoUvS50g6O/4LyUPB2xEK3lkoeIFuUfCiFQreXG4j6bh4EUiquNx9s6RdKo8f1m9rSf9RZt6MJUMteG2v5O83yIVzQvl8Gh/HsaDgraPg7da+5WeN5MyvJT28rCsfHzvbQtLB8V9KHgrejlDwzkLBC3SLghetUPDmc6XyodHrhpFcOUfSs0oJGR83tOMZNy8Y4AybDWXIBa/5Nem98aRIuhwh6SqVx29MKHjrKHi7dzNJX44nTnrPMZJuVXm8Ir/PeH/8lxOHgrcjFLyzUPAC3aLgRSsUvDn5jedzJf0xXhDSWzyzep/KY4XF8NqhB5S1RIeeoRe85jWSPeOJW5Pz5XRJr5rIXQUUvHUUvP24jKRDRnbHyZBzuKSrVR6nDdmuLAs1hFDwdoSCdxYKXqBbFLxohYI3tzuX2Qikv3gdtzdK2qPy+GDxbifp6PigDCxjKHiX3F3S9+MJkt7yI0n7VR6nsaLgraPg7c/Sl5Enx4tAOos3BPWkiLje7kq45PVM3uxr/1PwdoSCdxYKXqBbFLxohYI3vytKes1IZjIOLaeWD24Xrzwu6M5VS5Hy1/gADSRjKnjt6pIOG8AH4jHHPwueeXb9yuMzZhS8dRS8/buhpI+XdfpJd/m8pLtWHo/V2KrcoZJ5WSgK3o5Q8M5CwQt0i4IXrVDwDodnaR0bLxBZSFymv0vStSqPA/rhD2CPHegsqbEVvLZleTzYaKj7/FjSgZK2qTwuY0fBW0fBm4OXsnlK+XKYLDa/LBuy7lp5HNbC7zH+LfHSaBS8HaHgnYWCF+gWBS9aoeAdlstJeoWk38YLRZrl25L2l7Rp5fqjfzcZ4IZfYyx4l1xD0juTz3waS7zxpteYvEHlcZgKCt46Ct5c9izPDdI+vnvhi5LuULnu67VJ+dzhJR+yhYK3IxS8s1DwAt2i4EUrFLzD5PcfLrn+Ei8YWXNOLB9K/7lyvZGL19nz7NHvSfp7fCATZswFr/nLkHtL+lQ8cdIs/nD/EEmbV67/lFDw1lHw5uMZoQ+VdHy8OGTN8SafT5e0feV6t3QzSZ+Lf3nPoeDtCAXvLBS8QLcoeNEKBe9w+cPDAyV9NV40sqp45qGXY5jyrLih2k3SSyX9IT6oyTL2gnfJ0u3JP4wXgKw5P5P0vIa3IQ8dBW8dBW9el5H0HDanXFd+J+nNHS+bdWlJr5T06ziYnkLB2xEK3lkoeIFuUfCiFQre4dupbATGLJHV5axyu/Pe5ba8eF0xHH4d84x2P6YZM5WCd8mVJB1U1oola4vXmnZpd+3K9Z0yCt46Ct78/LP8onK3EFlZvByZf8ZuU7meXblbmUjR991CFLwdoeCdhYIX6BYFL1qh4B0PF72Pk3RcvIjkQjlH0gfLm/aLV64jhmkzSfuW0t6PcaZMreBd4qLXs09/FC8I2WBc7Hqd9etWricoeDeEgnc49pD06rLO69/ihSP/yJmS3i3pzpK2qFzDru1SvrTsc21eCt6OUPDOQsELdIuCF61Q8I6Pbyt7WHkz6M0oyCxnSDqsbMyxdeW6YRy8Pq9nZfv3UJYZvVMteJd4XetnlzUN/xwvDvlHfiDpBZKuWrl+uAAFbx0F7/DsLun5ZWNXMosLVC+Z5fdpW1auWd+8lNeh5f1k16Hg7QgF7ywUvEC3KHjRCgXveHmN3juVN8u/jBd2QvFGXG+QdNPKNcK43VLSG8tzoM9MveBd4o1xvBnbh8sMrannj5I+WdZSv3zlemEeBW8dBe9wXVnSEyUdm2AZgL7yc0n/UTY3i9cnI3928ntrLyHRVSh4O0LBOwsFL9AtCl60QsE7fn5DeH1JT5V0tKQ/xYs8wnhDjqMkPabMHozXBNPi54CXL/lieW50HQreC/NyGnuV5Rv8XqaP2VB9xcX2d8vMvduxTMyqUfDWUfAO3zaS9pP0pkQbey0yp0v6bPnd7OV84vXIbtPyGu7N37pYuoGCtyMUvLNQ8ALdouBFKxS807KjpLtIel3Z0XlMSzi4uP6MpJdJulH5sBTPH9Pm351+bvg54g+WXX3ZQcG7YV5Sxrfj+jXpS5L+Ei/eCOJzOqac4x3LOcfrgJWh4K2j4B0Pb/rqwtNfynu/gDHd7eDXwm9IermkG5bfyfH8h8aP1zXKBnqeWLCoZYgoeDtCwTsLBS/QLQpetELBO12e1eiywbewfy3582BD8awJr+v5XEm3KLeAx/MEai5VnjNLa8MucsYUBe/K/FOZ2esC/vMd3/7aOp6V7A/7Ly3ndJnK+WL1KHjrKHjHyxsuPkrSxwe6ie4pko6U9MryWjjm92meROHPVa8pd2q0DAVvRyh4Z6HgBbpFwYtWKHhh3qXYt5o9svz8nljWRMsW7zDvN83+MPuvZekJz56I5wOshp9D15H0YEkvlPRNSb+IT751hIJ39Xz7q3++/XP+irIR0Ull3dpsOaeMzWNcem3y7DSfQzwvrA8Fbx0F7zTsXNYx/7ey5JZfd7LN8P2ZpBMkHSzpoZKuN9H3af4S+T7lS+TjJf10nbN7KXg7QsE7CwUv0C0XvN5xOWveXxkzcrp1fPCS5WGVMWPxdpK0W1kbzR8c3yfpx6VccZmxyI1AzpV0Xlkr1UWbb2v2jD6Xb96IaMyzP5DDdmU26V3LWqkuGD9avmA4uzw/V5N3V/4OrM4lJe0i6c6SXlwek/+SdGp5TTo/XvQFxI+9X588I+0TZQwvKHdCeGweYxw32nKhmikfqIyxD4fEgfUc/1zEMaKtS5TXHc+KXfo99ZGyqe7S+6hFxe8B/brr92meVewZq152YX9Jl5O0Q2W8U+b3rb6LY+kLy8PKl8h+nHwdV5KvUPB2g4J3FgpeoFsueL9abgHMxt8kv60yZuR0q/IGLT6OGfi59KDKmNEPrxvpmRg3kHSP8gHOs6k+VnyozFI4rWyesfS8+oOks8r/71uuvayCC5JPlw8jS/+ui9wDJd2yrJPqNc3GsD4bxsGbYV2hzCq9SZmZdJCktyx7HrsE9v/1lyH+kL30s/D6yn8P6+fHxGtV+jXpppIeUdZBjK9LXvPRRbAfD7/++HVo6feMHx/z/+a7Fj4ZXpcOLYXy/cpj75m5VywbxcXxYPH8M+f3BvH9Qh88jrdXxtgHP0czXZdnVcaIxdu8fDnv1ym/Jh5Qitf3ltc0v7b5Nc6vdb8qSxP59e/3hf9/H/P/5tnBXhZi6ffa4aXIde+zd3nd9fs0fyEax4GL5gkLfpz8fuKxkl5bfucs/e45tryP8OPh31l+7Ch4O0DBOwsFL9Atf7DYXdLVJe2RjH/ZD3E31KnyG7NrVh7HDK5VbkeLY0ZeW0u6bClArlpeD1wK+/Z3P6b+4OGSzI/rP96oAiPk11V/IeIZO/59uGvln0F3XHr4rgQ/Dv5Q7dehpd8zfnz8euXHyrOspngr8ZB4jUu/N4jvF/qQ6f2uZ01meS/ncbDmdG7+8tx3qfh549c/f6Y0P5+9P4P/N+6W6teWZYa231NfefnPVPwH0RYF7ywUvAAAAAAAAMACzB1AU96Q5K+x7Zxgnl65NgAAAAAAAADWae4AmqLgnYWCFwAAAAAAAFiAuQNoyrsW/iW2nRPMkyrXBgAAAAAAAMA6zR1AUzem4P1HHl65NgAAAAAAAADWae4AmvIurKfHtnOCuWfl2gAAAAAAAABYp7kDaGpTSe+JbefE8mtJV6tcGwAAAAAAAADrNHcAzb0rNp4Ty/GStqlcFwAAAAAAAADrNHcAzb0lNp4Ty9ckbVm5LgAAAAAAAADWae4Amru7pHNj6zmh/HvlmgAAAAAAAABoYO4AmvNGa7+LreeEcrfKNQEAAAAAAADQwNwBNLe1pENj6zmReHmGK1SuCQAAAAAAAIAG5g5gIZ4o6b9j+zny/E3SOyvXAgAAAAAAAEAjcwewEFeS9KPYgI4850m6S+VaAAAAAAAAAGhk7gAWYjNJh8cGdOT5nqRdK9cCAAAAAAAAQCNzB7Awd5R0fmxBR5q/Snpm5RoAAAAAAAAAaGjuABZmS0kfjk3oSPPDsixFvAYAAAAAAAAAGpo7gIXaZyKbrf27pE0q5w8AAAAAAACgobkDWKgtJP2fkZe8nr171cq5AwAAAAAAAGhs7gAWbndJP46t6EjyJ0nPqJwzAAAAAAAAgAWYO4BOPFrSmbEdHUGOkLRD5XwBAAAAAAAALMDcAXTCG64dFtvRgeckSbetnCsAAAAAAACABZk7gM7sJumo2JIONL+R9BBJm1bOEwAAAAAAAMCCzB1Ap24s6cuxLR1g/pNyFwAAAAAAAOje3AF0bi9JP4uN6YDyfyRtXzkvAAAAAAAAAAs2dwC9OEDS32JzOoC8S9I/Vc4HAAAAAAAAQAfmDqA3j5D07digJs6bJe1YOQ8AAAAAAAAAHZk7gF79i6RjYpOaLD+V9ERJ21TGDwAAAAAAAKBDcwfQu+tL+pSk82Kz2nO8hMTxkvatjBkAAAAAAABAD+YOIIUdJD1Z0q9jy9pTzpb0UkmXr4wVAAAAAAAAQE/mDiCNTSTdXNLbJf0yNq4d5SxJh0u6XRlPHCMAAAAAAACAHs0dQDoXl3RnSW+R9JvYwC4oLnbfI+mu5e+PYwIAAAAAAACQwNwBpHUJSTeV9ApJn5N0fmxl15k/S/q6pP+QtJekrSpjAAAAAAAAAJDI3AEMwuUk3VLSCyV9WtI3Ylu7wngjty9Ker2k20varfJ3AQAAAAAAAEhq7gAGZ7Oy+dkDJP1vSc+R9BlJX5V0nKTvSPqWpGMlHSnpZZIeVv7Zm0jaovLfBAAAAAAAADAAcwcwGl5iYVtJ20varizxwEZpAAAAAAAAwIjMHQAAAAAAAAAADMP/BREd8oDxRrUyAAAAAElFTkSuQmCC);
  --x:-100%; --y:-100%; --lens:380px;
  position:relative;display:flex;align-items:center;justify-content:center;
  min-height:32vh;padding:48px 0;overflow:hidden;background:var(--paper);
  cursor:crosshair;
  /* La section « Demandez une démo » qui précède porte déjà son propre
     bas de page (.cta → clamp(70px,8vw,110px)). Sans ce rattrapage on
     se retrouvait avec 158 px de blanc au-dessus du logo contre 48 en
     dessous. On annule ce bas de page, à l'identique, pour retomber
     sur 48 / 48 à toutes les largeurs. */
  margin-top:calc(-1 * clamp(70px,8vw,110px))}

/* sur petit ecran la lentille serait plus large que l'ecran lui-meme */
@media (max-width:760px){ .wordmark{--lens:210px} }

.wm-base,.wm-reveal{display:block;width:min(92vw,1240px);aspect-ratio:1400/299;
  -webkit-mask:var(--logo-mask) center / contain no-repeat;
          mask:var(--logo-mask) center / contain no-repeat}

/* l'exemplaire du dessous : toujours la, a peine marque. Eclairci en
   trois fois a votre demande — .28 (#BBBFC6, 1,80:1 sur blanc), .17
   (#D6D8DC, 1,43:1), .11 (#E4E6E9, 1,25:1), .08 (#ECEDEF, 1,17:1).
   La section est `aria-hidden` et purement decorative, donc aucun seuil
   de contraste ne s'applique ; c'est le rond de lumiere qui porte le
   logo, celui-ci ne fait plus qu'en marquer la place. */
.wm-base{background:rgba(11,27,51,.08)}

/* le rond de lumiere : c'est lui qui decoupe l'exemplaire colore */
.wm-spot{position:absolute;inset:0;z-index:2;pointer-events:none;
  display:flex;align-items:center;justify-content:center;
  -webkit-mask-image:radial-gradient(circle calc(var(--lens)/2) at var(--x) var(--y),
    #000 0%,#000 46%,transparent 100%);
          mask-image:radial-gradient(circle calc(var(--lens)/2) at var(--x) var(--y),
    #000 0%,#000 46%,transparent 100%)}

/* les couleurs du disque fourni : #067BAB -> #0BA9EE -> #33D4FF */
.wm-reveal{background:linear-gradient(96deg,#067BAB 0%,#0999D7 32%,#0BA9EE 52%,
    #24C4F9 76%,#33D4FF 100%)}

/* LA LENTILLE — le verre lui-meme, pose au-dessus du logo :
   il desature a peine ce qu'il y a dessous, porte un halo cyan et
   un lisere clair en haut, comme une loupe de verre teinte. */
.wm-lens{position:absolute;z-index:3;pointer-events:none;
  left:var(--x);top:var(--y);width:var(--lens);height:var(--lens);
  margin:calc(var(--lens)/-2) 0 0 calc(var(--lens)/-2);
  border-radius:50%;
  -webkit-backdrop-filter:saturate(1.35) brightness(1.04);
          backdrop-filter:saturate(1.35) brightness(1.04);
  background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.4) 0%,
    rgba(255,255,255,.1) 32%,transparent 62%),
    radial-gradient(circle,transparent 62%,rgba(11,169,238,.14) 86%,transparent 100%);
  box-shadow:inset 0 2px 1px rgba(255,255,255,.55),
    inset 0 -2px 2px rgba(6,123,171,.22),
    0 0 46px rgba(11,169,238,.3)}

@media (max-width:980px){
  .rail__copy{grid-template-columns:1fr;gap:26px}
  .testi{grid-template-columns:1fr;gap:46px}
  .faq{grid-template-columns:1fr}
  .deck{min-height:330px}
}
@media (prefers-reduced-motion:reduce){
  .rail__track{animation:none}
  /* Figé au plus lisible : le dégradé posé, sans balayage. */
  /* Ni rond ni lentille : le logo reste en gris doux. */
  .wm-spot,.wm-lens{display:none}
  .amb__disc,.amb__ring,.amb__badge{opacity:1;transform:none;animation:none}
  .amb__figure::before{opacity:1;animation:none}
}

/* ============================================================
   PAGES INTÉRIEURES
   Mêmes jetons, mêmes composants que l'accueil : le verre `.lg`,
   les boutons, les cartes claires, les voiles mesurés. Rien ici
   n'introduit de couleur ni de rayon hors charte.
   ============================================================ */

/* ---------- la bannière de page ----------
   L'accueil a son film plein écran ; les pages intérieures ont ce
   panneau sombre, plus court, avec les deux halos de marque. La barre
   de navigation est claire sur fond sombre, donc elle garde son état
   « verre » le temps de la bannière. */
.phero{position:relative;isolation:isolate;overflow:hidden;background:var(--abyss);
  padding:clamp(148px,15vw,208px) 0 clamp(64px,7vw,104px)}
.phero::before,.phero::after{content:"";position:absolute;z-index:0;border-radius:50%;
  filter:blur(80px);pointer-events:none}
.phero::before{top:-120px;right:-80px;width:clamp(280px,34vw,520px);aspect-ratio:1;
  background:rgba(11,169,238,.3)}
.phero::after{bottom:-180px;left:-120px;width:clamp(300px,38vw,560px);aspect-ratio:1;
  background:rgba(5,116,160,.26)}
.phero>.wrap{position:relative;z-index:1}
/* Plus petit que le héros de l'accueil : celui-ci porte deux lignes
   courtes, les titres de pages intérieures sont des phrases. */
.phero h1{color:#fff;max-width:19ch;font-size:clamp(34px,4.4vw,62px);letter-spacing:-.035em;
  line-height:1.06}
.phero .lede{color:var(--body-d);max-width:62ch;margin-top:20px}
.phero .btns{margin-top:34px}
.phero--center{text-align:center}
.phero--center h1{max-width:24ch}
.phero--center h1,.phero--center .lede{margin-inline:auto}
.phero--center .btns{justify-content:center}
/* variante avec visuel : texte à gauche, image à droite */
.phero__grid{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
  gap:clamp(32px,5vw,64px);align-items:center}
.phero__media{margin:0;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-lg);
  border:1px solid rgba(173,205,255,.2)}
.phero__media img{width:100%;height:auto;display:block}

/* variante sur film — la bannière de l'accueil, en plus court.
   Les halos ::before/::after n'ont plus lieu d'être : le film occupe
   déjà toute la surface. La hauteur reste en deçà de l'écran plein,
   une page intérieure n'ayant pas à se faire désirer autant que
   l'accueil. Le film et le voile sont pilotés par le script commun,
   d'où les identifiants heroVideo / heroLoop réutilisés tels quels. */
.phero--film{display:grid;place-items:center;text-align:center;
  min-height:100svh;padding:150px 0 110px}
.phero--film::before,.phero--film::after{display:none}
.phero__film{position:absolute;inset:0;z-index:0}
.phero__film video,.phero__film img{width:100%;height:100%;object-fit:cover}
.phero__film img{position:absolute;inset:0;transition:opacity .9s var(--ease)}
.phero__film.is-playing img{opacity:0}
/* Voile mesuré sur ce film-ci : vignette centrée sous le bloc de texte,
   puis dégradé vertical qui rattache le bas de la bannière à la section
   suivante. Valeurs vérifiées plus bas, dans le README. */
.phero__veil{position:absolute;inset:0;z-index:1;--vx:560px;
  background:
    radial-gradient(var(--vx) 52% at 50% 50%,rgba(2,6,20,.70) 0%,rgba(2,6,20,.46) 50%,transparent 76%),
    linear-gradient(180deg,rgba(0,5,27,.58) 0%,rgba(0,5,27,.34) 38%,rgba(0,5,27,.58) 74%,rgba(4,5,15,.92) 100%)}
/* Même piège que sur le panneau d'appel : à 375 px, 64 % ne font que
   240 px de rayon pour un titre large de 340, et les bouts de la ligne
   dégradée sortaient de la vignette (2,86:1 pour un seuil de 3). On
   pose un plancher en pixels, et le pourcentage reprend au-dessus de
   875 px, là où il le dépasse. max() n'est pas accepté ici, var() si. */
@media (min-width:900px){.phero__veil{--vx:64%}}
.phero--film>.wrap{z-index:2}
.phero__eyebrow{display:block;font-size:clamp(14.5px,1.25vw,19px);font-weight:600;
  color:var(--cyan-200);letter-spacing:.01em;margin-bottom:20px}
/* Variante tablette (page Hotella Tab). L'appareil est en paysage : il
   lui faut une colonne plus large, et il ne se cale pas sur la hauteur
   de la rangée comme le téléphone — il se centre. Les colonnes ne
   portent ici que deux fonctions chacune, donc l'équilibre tient. */
.feat--tab{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr);
  align-items:center}
.feat--tab .feat__visual img{width:100%;height:auto}

/* ---------- la vitre qui s'anime ----------
   La maquette reste une image fixe ; seul l'écran change. Quatre captures
   se relaient en fondu dans la fenêtre relevée sur la maquette.

   Les quatre maquettes sources ne sont PAS superposables : la tablette y
   est à une position et une échelle différentes (châssis de 1240 à
   1360 px de large). Les captures ont donc été normalisées à l'export —
   vitre déduite du châssis par un encart proportionnel, puis ramenée à
   1100 × 790 — faute de quoi l'appareil semblerait respirer à chaque
   fondu.

   Pas de film, donc rien de lourd à charger, et pas une ligne de script :
   quatre `animation-delay` décalés suffisent. */
.tabshot{position:relative}
.tabshot__cadre{display:block;width:100%;height:auto}
/* Une ombre au sol sous la tablette. Pas un `drop-shadow` : la maquette
   est un JPEG sur gris plat, sans transparence, donc le filtre ombrerait
   le rectangle entier au lieu de la silhouette. On dessine donc une
   ellipse, calée sur le bas du châssis relevé sur la maquette — 93,2 %
   de la hauteur — et centrée sur son axe. */
.tabshot::after{content:"";position:absolute;left:50%;top:91%;
  width:66%;height:8%;transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(50% 50% at 50% 50%,
    rgba(2,6,20,.20),rgba(2,6,20,.07) 55%,rgba(2,6,20,0) 72%)}
.tabshot__vitre{position:absolute;left:11.26%;top:9.45%;width:77.55%;height:79.87%;
  overflow:hidden;border-radius:1.5%/2.1%}
.tabshot__vitre img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;opacity:0;animation:vitre 16s infinite}
.tabshot__vitre img:nth-child(2){animation-delay:4s}
.tabshot__vitre img:nth-child(3){animation-delay:8s}
.tabshot__vitre img:nth-child(4){animation-delay:12s}
@keyframes vitre{
  0%{opacity:0} 3%{opacity:1} 25%{opacity:1} 28%{opacity:0} 100%{opacity:0}
}
/* Sans animation, on laisse le premier écran affiché : la vitre ne doit
   jamais rester vide. */
@media (prefers-reduced-motion:reduce){
  .tabshot__vitre img{animation:none}
  .tabshot__vitre img:first-child{opacity:1}
}
@media (max-width:1060px){
  .feat--tab .feat__visual{max-width:620px}
}

/* `.phero h1` est plus spécifique que `.h-hero` et plafonnait le titre à
   62 px : il faut donc redonner la taille ici, explicitement. On passe un
   cran au-dessus de la bannière d'accueil (96 px) — le titre ne fait que
   cinq mots, il peut porter plus haut.
   Le plancher est à 44 px et non 46 : au-delà, « dans leur poche » se
   coupe en deux à 375 px, et l'accroche perd son souffle. */
.phero--film h1{max-width:15ch;margin-inline:auto;line-height:1;
  font-size:clamp(44px,6.9vw,106px)}
.phero--film .lede{max-width:48ch;margin-inline:auto;margin-top:26px;text-wrap:balance;
  font-size:clamp(17px,1.5vw,22px)}
.phero__cue{position:absolute;left:0;right:0;bottom:30px;z-index:2;display:flex;
  flex-direction:column;align-items:center;gap:10px;
  font-size:14px;font-weight:500;color:rgba(233,243,255,.76)}
.phero__cue i{display:block;width:1px;height:32px;
  background:linear-gradient(var(--cyan),transparent);
  animation:cue 2.4s var(--ease) infinite}
@media (max-width:620px){.phero__cue{display:none}}

/* ---------- la grille d'écrans, d'après Hoteza ----------
   Leur trouvaille tient en une chose : l'écran n'est pas *dans* un cadre,
   il est posé sur un fond clair et **rogné par le bas**. Le téléphone
   déborde donc de la tuile, ce qui donne la profondeur sans ombre portée
   ni perspective. Le rognage se fait en CSS et non à l'export : on garde
   la liberté de remonter ou descendre l'écran sans retoucher les fichiers.
   La carte elle-même est celle des tuiles produit de l'accueil
   (`.plat-card`) : même fond, même bordure, même ombre, même survol,
   texte centré en haut et visuel qui touche le bas. Les écrans sont
   d'ailleurs exportés sur ce gris-là (#FAFAFA), pour que la maquette se
   fonde dans la carte sans liseré. */
.appgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(18px,2.2vw,32px)}
.appcard{position:relative;display:flex;flex-direction:column;overflow:hidden;
  border-radius:var(--r-big);background:#FAFAFA;border:1px solid var(--line);
  box-shadow:var(--sh-sm);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .5s}
.appcard:hover{transform:translateY(-5px);box-shadow:var(--sh-lg);
  border-color:var(--line-strong)}
.appcard__body{padding:clamp(26px,2.6vw,36px) clamp(24px,2.5vw,34px) 0;text-align:center}
.appcard__body h3{font-size:clamp(19px,1.7vw,24px);font-weight:700;letter-spacing:-.022em;
  color:var(--ink);margin-bottom:10px}
.appcard__body p{margin:0 auto;max-width:42ch;
  font-size:14.5px;line-height:1.56;color:var(--body)}
/* L'écran touche le bas de la tuile et s'y fait rogner. */
.appcard__media{margin:clamp(20px,2.2vw,30px) 0 0;position:relative;aspect-ratio:16/10;
  overflow:hidden;display:flex;justify-content:center;align-items:flex-start}
.appcard__media img{width:clamp(150px,43%,248px);height:auto;display:block;
  transition:transform .8s var(--ease)}
.appcard:hover .appcard__media img{transform:translateY(-10px)}
@media (prefers-reduced-motion:reduce){
  .appcard:hover{transform:none}
  .appcard:hover .appcard__media img{transform:none}
}
/* Variante tablette (page Hotella Tab) : l'appareil est en paysage, pas
   debout. Il remplit donc presque la largeur de la tuile, et c'est le
   visuel qu'on raccourcit pour obtenir le même débord par le bas —
   l'inverse du réglage téléphone juste en dessous. */
.appgrid--tab .appcard__media{aspect-ratio:16/9}
.appgrid--tab .appcard__media img{width:min(98%,520px)}
@media (max-width:1060px){
  .appgrid--tab .appcard__media img{width:min(100%,460px)}
}

/* Le 16/10 des tuiles produit suppose un visuel paysage. Le nôtre est un
   téléphone debout : dès que la tuile rétrécit, soit l'écran devient
   minuscule, soit le rognage lui mange la moitié. On creuse donc le
   visuel à mesure que la tuile se resserre, pour garder partout le même
   rapport — environ 70 % du téléphone visible. */
@media (min-width:761px) and (max-width:1023px){
  .appcard__media{aspect-ratio:4/3}
  .appcard__media img{width:clamp(150px,50%,220px)}
}
/* Même bascule que `.plats` sur l'accueil : la structure est désormais
   identique, autant que le pliage le soit aussi. La colonne unique est
   bornée, sinon la tuile s'étire et le téléphone s'y perd. */
@media (max-width:760px){
  .appgrid{grid-template-columns:minmax(0,1fr);max-width:520px;margin-inline:auto}
  .appcard__media{aspect-ratio:4/3}
  .appcard__media img{width:clamp(160px,52%,264px)}
}

/* Le voile de l'accueil ne suffit pas ici. Là-bas, le texte est bas dans
   la section et en petits caractères gras ; ici le bloc de titre est
   haut, là où le voile linéaire ne fait que 0,38 — et le film de verre
   y vire au cyan clair (rgb(121,233,243) relevé sur la boucle). Mesuré
   avec le voile partagé : chapô 2,57:1, titre dégradé 2,62:1.
   On ajoute donc une vignette locale, centrée sur le bloc de texte, sans
   toucher à `.chif__scrim` que l'accueil partage : le film reste visible
   sur les bords et sous la photo, et le texte a son creux. */
/* Le rembourrage par défaut d'une `.sec` (jusqu'à 124 px) s'ajoutait au
   cadre du visuel, déjà haut : on le resserre en haut, et surtout **on
   le supprime en bas**. Sinon il reste une bande de film vide sous le
   poignet, alors que la main doit se couper sur le bord même de la
   section. */
.chif--qr{padding-block:clamp(48px,5vw,80px) 0}
/* L'en-tête porte déjà une marge basse et le visuel une marge haute :
   les deux s'additionnaient. On garde celle du visuel. */
.chif--qr .sec__head{margin-bottom:0}
.chif--qr .chif__scrim{
  background:
    radial-gradient(760px 46% at 50% 26%,rgba(4,5,15,.76),
      rgba(4,5,15,.52) 54%,rgba(4,5,15,0) 94%),
    linear-gradient(180deg,rgba(4,5,15,.46),rgba(4,5,15,.30) 55%,rgba(4,5,15,.54))}

/* ---------- la main et le QR, sur le film de verre ----------
   Deux visuels posés séparément, et non aplatis dans une seule image :
   la main garde son WebP d'origine (228 Ko ; le rogner demandait un
   ré-encodage, et WIC ne sachant pas écrire le WebP, le PNG qui en
   sortait pesait 1,26 Mo).

   Les valeurs ci-dessous sont **relevées sur la référence fournie**
   (2000 × 967), pas estimées. L'échelle se déduit du **contenu blanc de
   l'écran**, et non du châssis : sur la référence le fond est bleu
   sombre, et un critère « sombre et neutre » y attrape aussi le fond,
   ce qui donnait une échelle fausse de 1,0214 — le téléphone sortait
   1,62× trop grand. Les pixels quasi blancs, eux, n'existent que sur
   l'écran. Bloc blanc : 382 de large sur la référence, 606 sur notre
   visuel, soit **0,6304**.
   Contrôles : 14,18 % × 2000 + 448 × 0,6304 = 566 (bord gauche du bloc
   blanc, référence : 566) et 18,52 % × 967 + 68 × 0,6304 = 222
   (référence : 222). Le châssis retombe alors à x=613 sur 295 de large,
   conforme au visuel. Carte relevée directement : x=1222 y=272 en
   338 × 410, rapport 0,824 contre 0,826 pour notre fichier.

   La figure est **hors du conteneur**, donc pleine largeur : c'est ce
   cadrage-là qui laisse l'air autour des sujets. L'avant-bras court
   jusqu'au bord bas et s'y coupe net, comme sur la référence — pas de
   fondu, qui était une sur-interprétation de ma part.

   Le haut du cadre a été rogné de 197 des 967 de la référence : elle
   réservait 22,6 % de hauteur avant le premier pixel de sujet (haut du
   châssis à y=220), ce qui faisait un grand vide sous le chapô. Il reste
   24 px d'air au-dessus du téléphone, à l'échelle de la référence. Les
   valeurs verticales sont décalées d'autant ; les horizontales, en
   pourcentage d'une largeur inchangée, ne bougent pas. */
.qr-shot{position:relative;aspect-ratio:2000/770;overflow:hidden;
  margin:clamp(8px,1.2vw,18px) 0 0}
/* `max-width:100%` de la règle générale écrêtait ces deux images dès que
   leur largeur dépassait le cadre — ce qui arrive sur mobile, où le
   canevas de la main doit déborder pour que le téléphone soit lisible. */
.qr-shot img{position:absolute;height:auto;display:block;max-width:none;
  filter:drop-shadow(0 16px 26px rgba(2,6,20,.5))
         drop-shadow(0 44px 72px rgba(2,6,20,.38))}
.qr-shot__main{left:14.18%;top:-2.32%;width:37.98%}
.qr-shot__carte{left:61.10%;top:9.74%;width:16.90%}
/* Le cadrage de la référence est très large (2,07) : à 375 px il ne
   laisse au téléphone que 90 px, où l'écran n'est plus lisible — or
   c'est l'écran qu'on vient montrer. On resserre donc le cadre et on
   grossit les deux sujets. Le calage de la main tient compte de ce que
   le téléphone occupe la partie droite de son canevas (x 522 sur 1205),
   d'où le fort décalage négatif. */
@media (max-width:760px){
  .qr-shot{aspect-ratio:1000/1240}
  .qr-shot__main{left:-54.8%;top:1%;width:140%}
  .qr-shot__carte{left:62%;top:50%;width:34%}
}

/* ---------- les huit fonctions, photo au centre ----------
   Reprise de la section retirée de l'accueil. Les barrettes en dégradé
   de la proposition 1 laissent la place à des icônes au trait, pour
   rester dans le vocabulaire du reste du site. */
/* Le gris du film de démarrage, relevé sur ses quatre coins et stable sur
   toute la boucle : la section le reprend, le téléphone paraît flotter.
   Mais sur ce gris le dégradé des titres tombe à 2,67:1 — il ne passait
   déjà que de justesse sur blanc (3,21:1), et son arrêt le plus clair,
   #0999D7, ne tient plus. On redéfinit donc `--grad-ink` pour cette
   section seule : même famille, deux crans plus profonds. Mesuré à
   3,59:1, pour un seuil de 3. */
.sec--splash{background:#EAEAEA;
  --grad-ink:linear-gradient(104deg,var(--teal) 0%,#06789F 46%,#0A82B4 100%)}

/* La colonne du milieu est plus large que les deux autres : c'est elle qui
   porte le film, et il doit monter à la hauteur du texte. À 1 440 px les
   listes font 711 px de haut, ce qui demande 400 px de large pour un
   9/16 — d'où le 1,2fr contre 1fr. */
.feat{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.28fr) minmax(0,1fr);
  gap:clamp(28px,4vw,64px);align-items:stretch}
.feat__col{display:grid;gap:clamp(24px,2.8vw,40px);align-content:center}
.feat__visual{margin:0}
.feat__visual img{width:100%;height:auto;display:block}
/* Le film ne se dimensionne pas sur sa largeur mais sur la **hauteur de la
   rangée** : il monte donc exactement à la hauteur des deux listes, à
   n'importe quelle largeur d'écran. Le `max-width` le rattrape quand la
   colonne devient trop étroite pour sa hauteur — il rapetisse alors au
   lieu de déborder. Pas d'`aspect-ratio` à réserver : la hauteur vient
   du texte, donc rien ne saute avant le chargement. */
.feat__film{margin:0;display:flex;align-items:center;justify-content:center}
.feat__film video{height:100%;width:auto;max-width:100%;
  object-fit:contain;display:block}
/* --electric ne mesure que 2,20:1 sur le gris du film (et 2,65:1 même sur
   blanc). Ces icônes sont décoratives — `aria-hidden`, doublées par le
   titre juste à côté — donc hors du seuil de 3:1, mais elles s'effaçaient.
   Un bleu deux crans plus profond, le même que le dégradé de la section :
   3,59:1. */
.feat__ic{display:block;width:26px;height:26px;margin-bottom:13px;color:#0A82B4}
.feat__ic svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.feat__item h3{margin:0;font-size:16.5px;line-height:1.35;letter-spacing:-.015em;
  color:var(--ink)}
.feat__item p{margin:8px 0 0;font-size:14.5px;line-height:1.55;color:var(--body)}

/* La photo au centre ne tient plus dès que les colonnes se resserrent :
   elle passe au-dessus, et les deux colonnes de texte restent côte à
   côte tant que la place le permet. */
@media (max-width:1060px){
  .feat{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,4vw,48px)}
  .feat__visual,.feat__film{grid-column:1 / -1;order:-1;max-width:300px;margin-inline:auto}
  /* Empilé, le film est seul sur sa rangée : plus de hauteur à épouser,
     il reprend donc son rapport d'image. */
  .feat__film{aspect-ratio:720/1280}
  .feat__film video{height:100%;width:100%}
}
@media (max-width:640px){
  .feat{grid-template-columns:minmax(0,1fr)}
}
/* Sous prefers-reduced-motion le script ne charge jamais le film : sans
   image d'attente, il ne resterait qu'un trou gris de 330 × 587. On retire
   la colonne du milieu et les deux listes se rejoignent. */
@media (prefers-reduced-motion:reduce){
  .feat{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,4vw,56px)}
  .feat__film{display:none}
}

/* ---------- les déclinaisons de charte, d'après Hoteza ----------
   Leur visuel est une photo pleine largeur sous l'en-tête. Le nôtre est
   une maquette dont le fond est un dégradé gris → cyan : posé nu sur le
   blanc de la page, il ferait un bord franc. On le cadre donc en carte,
   avec le même rayon et le même filet que les tuiles produit. */
.brandshot{margin:0;border-radius:var(--r-big);overflow:hidden;
  box-shadow:var(--sh-sm);border:1px solid var(--line)}
.brandshot img{width:100%;height:auto;display:block}

/* ---------- le tableur de l'import ----------
   Le visuel est un SVG, donc il porte lui-meme son cadre ; la figure ne
   fournit que l'ombre et le rayon, comme les autres visuels de .split. */
.xlsshot{margin:0;filter:drop-shadow(0 24px 48px rgba(11,27,51,.14))}
.xlsshot svg{width:100%;height:auto;display:block}
/* Sur telephone, la largeur tombe a 350 px : le texte du tableur, pose sur
   une vue de 1200 unites, ne ferait plus que 5,8 px. On resserre donc le
   cadre en 3/4 et, grace a preserveAspectRatio="slice", le tableur est
   rogne par la droite au lieu d'etre reduit -- il reste lisible et il se
   lit comme une feuille qui continue hors du cadre. */
@media (max-width:760px){
  .xlsshot svg{aspect-ratio:3/4;height:auto}
}

/* ---------- le panneau multilingue ----------
   D'après la maquette : pastille, titre, chapô, puis six cartes sur deux
   colonnes. Le fond de la maquette est un dégradé fixe ; ici c'est le
   film de verre, d'où un texte clair et non sombre — c'est le seul écart
   imposé par le fond animé. Le film est piloté par le bloc commun via
   l'identifiant `charteVideo`, libre sur cette page. */
.langpanel{position:relative;isolation:isolate;overflow:hidden;
  border-radius:clamp(22px,2.4vw,34px);background:var(--navy-900);
  padding:clamp(34px,4.4vw,64px) clamp(20px,3.4vw,54px) clamp(40px,5vw,72px)}
.langpanel__bg{position:absolute;inset:0;z-index:0}
.langpanel__bg video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity .9s var(--ease)}
.langpanel__bg video.is-on{opacity:1}
/* Le voile. Un simple dégradé vertical ne suffisait pas : le film monte
   en clair au milieu du panneau, là où se place le chapô, qui tombait à
   **2,82:1** pour un seuil de 4,5. On ajoute donc une vignette centrée
   sur le bloc de texte — les cartes, elles, sont sur fond blanc et ne
   dépendent pas du film. Rayon en pixels et non en pourcentage, pour la
   même raison qu'ailleurs : à 375 px un pourcentage ne couvrirait plus
   la largeur du texte. */
.langpanel__scrim{position:absolute;inset:0;
  background:
    radial-gradient(760px 46% at 50% 26%,rgba(4,5,15,.74),
      rgba(4,5,15,.50) 54%,rgba(4,5,15,0) 92%),
    linear-gradient(180deg,rgba(4,5,15,.46),rgba(4,5,15,.34) 50%,rgba(4,5,15,.52))}
.langpanel__in{position:relative;z-index:1;text-align:center}
.langpanel__pill{display:inline-block;margin-bottom:clamp(16px,1.8vw,24px);
  padding:7px 16px;border-radius:var(--r-pill);
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.26);
  font-size:13.5px;font-weight:600;color:#fff}
.langpanel__in .lede{max-width:62ch;margin:16px auto 0}

.langgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(14px,1.6vw,22px);margin-top:clamp(30px,3.6vw,52px);text-align:left}
.langcard{display:flex;align-items:center;gap:clamp(13px,1.3vw,18px);
  padding:clamp(14px,1.5vw,20px) clamp(16px,1.7vw,24px);
  border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--sh-sm);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.langcard:hover{transform:translateY(-3px);box-shadow:var(--sh-md)}
.langcard img{flex:none;width:clamp(38px,3.4vw,46px);height:auto;display:block}
.langcard h3{margin:0;font-size:clamp(16px,1.3vw,18.5px);font-weight:700;
  letter-spacing:-.018em;color:var(--ink)}
.langcard p{margin:3px 0 0;font-size:14.5px;line-height:1.4;color:var(--muted)}
@media (max-width:640px){
  .langgrid{grid-template-columns:minmax(0,1fr)}
}

/* ---------- grilles ---------- */
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(18px,2.4vw,32px)}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,30px)}
.g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2vw,26px)}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(32px,5vw,70px);align-items:center}
.split figure{margin:0;border-radius:var(--r-slab);overflow:hidden;box-shadow:var(--sh-md)}
.split figure img{width:100%;height:auto;display:block}

/* ---------- carte à pastille d'icône ----------
   Même pastille que le menu déroulant : cyan à 10 %, qui passe au
   blanc cerclé au survol. */
.icard{display:flex;gap:16px;padding:clamp(20px,2vw,26px);border-radius:var(--r-lg);
  background:var(--paper);border:1px solid var(--line);box-shadow:var(--sh-sm);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.icard:hover{transform:translateY(-4px);box-shadow:var(--sh-md);border-color:var(--line-strong)}
.icard__ic{flex:none;display:grid;place-items:center;width:46px;height:46px;border-radius:13px;
  background:rgba(11,169,238,.1);transition:background .3s var(--ease),box-shadow .3s var(--ease)}
.icard:hover .icard__ic{background:var(--paper);box-shadow:0 0 0 1px var(--line)}
.icard__ic svg{width:21px;height:21px;fill:none;stroke:var(--teal);stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.icard h3{font-size:16.5px;font-weight:700;letter-spacing:-.015em;color:var(--ink);margin-bottom:7px}
.icard p{margin:0;font-size:14px;line-height:1.55;color:var(--body)}

/* ---------- carte visuel + texte (parcours, articles) ---------- */
.vcard{display:block;border-radius:var(--r-lg);overflow:hidden;background:var(--paper);
  border:1px solid var(--line);box-shadow:var(--sh-sm);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.vcard:hover{transform:translateY(-5px);box-shadow:var(--sh-lg);border-color:var(--line-strong)}
.vcard figure{margin:0;aspect-ratio:16/10;overflow:hidden}
.vcard figure img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .8s var(--ease)}
.vcard:hover figure img{transform:scale(1.05)}
.vcard__body{padding:clamp(18px,1.8vw,24px)}
.vcard h3{font-size:16.5px;font-weight:700;letter-spacing:-.015em;color:var(--ink);margin-bottom:7px}
.vcard p{margin:0;font-size:14px;line-height:1.55;color:var(--body)}
.vcard__meta{display:block;margin-bottom:9px;font-size:11.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}

/* ---------- les langues ---------- */
.langs{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:34px}
.lang{display:flex;align-items:center;gap:10px;padding:10px 18px 10px 12px;
  border-radius:var(--r-pill);background:var(--paper);border:1px solid var(--line);
  box-shadow:var(--sh-sm)}
.lang img{width:26px;height:26px;border-radius:50%;object-fit:cover;display:block}
.lang span{font-size:14.5px;font-weight:600;color:var(--ink)}
.on-dark .lang{background:rgba(255,255,255,.08);border-color:rgba(173,205,255,.24);box-shadow:none}
.on-dark .lang span{color:#fff}

/* ---------- liste à coches (reprise de la section Bénéfices) ---------- */
.ticks{list-style:none;margin:26px 0 0;padding:0;display:flex;flex-direction:column;gap:13px}
.ticks li{display:flex;align-items:flex-start;gap:13px;font-size:15.5px;line-height:1.5;color:var(--body)}
.ticks svg{width:21px;height:21px;flex:none;margin-top:2px;stroke:var(--electric);fill:none;
  stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.on-dark .ticks li{color:var(--body-d)}

/* ---------- le fil des étapes ---------- */
.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.steps li{position:relative;padding:0 0 26px 44px}
.steps li:last-child{padding-bottom:0}
.steps li::before{content:"";position:absolute;left:13px;top:26px;bottom:0;width:1px;
  background:var(--line-strong)}
.steps li:last-child::before{display:none}
.steps li>b{position:absolute;left:0;top:0;width:27px;height:27px;border-radius:50%;
  display:grid;place-items:center;font-size:12.5px;font-weight:700;
  background:rgba(11,169,238,.12);color:var(--teal)}
.steps li>span{display:block;font-size:15px;line-height:1.55;color:var(--body)}

/* ---------- les onglets ---------- */
.tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:clamp(28px,3.4vw,44px)}
.tab{padding:11px 20px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--paper);font-size:14.5px;font-weight:600;color:var(--body);cursor:pointer;
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}

/* Variante pleine largeur, pour les cas d'usage. Relevé sur la maquette :
   quatre pastilles de largeur égale et **jointives** — bords mesurés à
   27, 348, 670, 991 et 1312, soit 321 px chacune sans aucun espacement.
   Les rayons pleins de deux pastilles voisines dessinent alors la couture
   que l'on voit entre elles. Hauteur relevée : 60 px.
   La pastille active y est en `rgb(4,5,15)` — c'est exactement notre
   `--abyss`, donc rien à transposer.
   Cantonnée à cette page : la FAQ de la page contact garde ses pastilles
   centrées, qui n'avaient pas lieu de changer. */
.tabs--large{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:0;margin-bottom:clamp(18px,2.2vw,30px)}
.tabs--large .tab{padding:clamp(15px,1.6vw,20px) 14px;box-shadow:none;
  font-size:clamp(13.5px,1vw,15.5px);color:var(--muted)}
.tabs--large .tab:hover{color:var(--ink)}
.tabs--large .tab[aria-selected="true"]{background:var(--abyss);border-color:var(--abyss);
  color:#fff}
.tab:hover{border-color:var(--line-strong);color:var(--ink)}
.tab[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.tab:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
/* `.panel[hidden]` l'emporte sur `.caspanel` (deux sélecteurs contre un),
   donc le basculement des onglets continue de fonctionner. */
.panel[hidden]{display:none}

/* ---------- le panneau d'un cas d'usage ----------
   Une seule carte : la photo vient à fleur du bord gauche et monte sur
   toute la hauteur, le texte occupe la moitié droite. Le rayon est porté
   par la carte, pas par la photo — d'où l'`overflow:hidden`. */
.caspanel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  align-items:stretch;overflow:hidden;border-radius:var(--r-big);
  background:var(--ivory);border:1px solid var(--line)}
.caspanel__media{margin:0;min-height:100%}
.caspanel__media img{width:100%;height:100%;object-fit:cover;display:block}
.caspanel__body{padding:clamp(28px,3.2vw,52px);align-self:center}
.caspanel__body h3{margin:0;font-size:clamp(25px,2.5vw,36px);font-weight:700;
  letter-spacing:-.028em;line-height:1.1;color:var(--ink)}
.caspanel__lede{margin:14px 0 0;font-size:clamp(15px,1.15vw,17px);line-height:1.6;
  color:var(--body)}
/* Les deux moments de la journée : plus de pastille numérotée ni de fil,
   l'heure en gras suffit à les séquencer. */
.moments{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:11px}
.moments li{font-size:15px;line-height:1.55;color:var(--muted)}
.moments strong{color:var(--ink);font-weight:600}
.cas-note{margin:16px 0 0;font-size:15px;line-height:1.55;color:var(--body)}
.cas-note strong{color:var(--ink);font-weight:700}
.caspanel__cta{margin-top:clamp(22px,2.4vw,32px)}

@media (max-width:900px){
  .tabs--large{grid-template-columns:repeat(2,minmax(0,1fr))}
  .caspanel{grid-template-columns:minmax(0,1fr)}
  .caspanel__media{aspect-ratio:16/10}
}

/* ---------- les niveaux de prix ----------
   Modele : la grille de tarifs de la reference (pixels71 / pricing). Sa
   mecanique reelle, relevee dans son code : trois colonnes centrees
   verticalement (items-center), les deux cartes laterales plus courtes,
   posees a plat sur un fond creme, sans ombre ni filet, et le niveau mis
   en avant plus haut, enferme dans un cadre colore. Ce cadre n'est pas une
   ombre : c'est un conteneur a fond image avec 10 px de remplissage autour
   d'une carte blanche au rayon plus court. On garde la mecanique et on
   remplace l'image par notre degrade de marque. Ordre dans la carte :
   titre, phrase, montant, bouton, puis la liste.
   Ecarts assumes : rayons pris dans nos jetons (24 / 16 px au lieu de
   20 / 12), pastilles de liste pleines a notre electrique, et aucune
   bascule mensuel/annuel ni montant puisque nos trois niveaux sont sur
   devis. */
.pricing{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(18px,2.2vw,32px);align-items:center}
.price{display:flex;flex-direction:column;padding:clamp(26px,2.6vw,34px);
  border-radius:var(--r-lg);background:var(--ivory);
  transition:transform .4s var(--ease)}
.price:hover{transform:translateY(-4px)}
/* le niveau mis en avant : la carte blanche dans son cadre degrade */
.price-hl{padding:10px;border-radius:var(--r-lg);background:var(--grad);
  box-shadow:0 28px 64px -34px rgba(11,169,238,.5);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.price-hl:hover{transform:translateY(-5px);box-shadow:0 34px 72px -32px rgba(11,169,238,.58)}
.price-hl .price{background:var(--paper);border-radius:var(--r-md);
  padding:clamp(28px,2.8vw,36px) clamp(26px,2.6vw,34px) clamp(32px,3.2vw,40px)}
.price-hl .price:hover{transform:none}
.price__flag{align-self:flex-start;margin-bottom:14px;padding:6px 13px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  background:rgba(11,169,238,.12);color:var(--teal)}
.price h3{font-size:clamp(19px,1.6vw,23px);font-weight:700;letter-spacing:-.02em;
  color:var(--ink);margin-bottom:9px}
.price>p:not(.price__fee){margin:0;font-size:14.5px;line-height:1.55;color:var(--body)}
.price__fee{margin:clamp(16px,1.8vw,22px) 0 0;font-size:clamp(22px,2vw,28px);font-weight:800;
  letter-spacing:-.03em;color:var(--ink)}
.price .btn{width:100%;margin-top:clamp(15px,1.7vw,20px)}
.price .ticks{margin-top:clamp(22px,2.4vw,28px);gap:11px}
.price .ticks li{align-items:center;gap:10px;font-size:14.5px}
.price .ticks svg{width:20px;height:20px;margin-top:0}
.price .ticks svg circle{fill:var(--electric);stroke:none}
.price .ticks svg path{fill:none;stroke:#fff;stroke-width:2.3;
  stroke-linecap:round;stroke-linejoin:round}
@media (max-width:1023px){
  .pricing{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
}
@media (max-width:700px){
  .pricing{grid-template-columns:minmax(0,1fr);max-width:460px;margin-inline:auto}
}

/* ---------- la carte « panneau + titre a gauche, texte a droite » ----------
   Modele : le bloc .two-features-horizontal-text de hoteza.com/products/platform,
   mecanique relevee dans son code. Chez elle : grille de deux colonnes egales
   (576,4 px chacune) avec 48 px entre les rangees et 32 px entre les colonnes ;
   chaque carte est une colonne flex de 32 px d'ecart ; le panneau fait
   576 x 493 (rapport 1,169) au rayon 12, le visuel pose dedans en cover ;
   dessous, une grille 233,4 / 313 px avec 30 px d'ecart, donc le titre a
   gauche sur 42 % et le paragraphe a droite sur 58 %.
   Ecarts assumes : le rayon passe a notre --r-md (16 px, le 12 n'est pas un
   jeton), le panneau est blanc sur fond creme la ou la reference le met en
   gris sur blanc -- le rapport de clarte est le meme, dans notre sens --, et
   les titres gardent notre graisse 700. */
.ocards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(30px,3.6vw,48px) clamp(20px,2.4vw,32px)}
.ocard{display:flex;flex-direction:column;gap:clamp(20px,2.4vw,32px)}
.ocard__panel{margin:0;position:relative;overflow:hidden;border-radius:var(--r-md);
  background:var(--paper);border:1px solid var(--line);
  aspect-ratio:576/493;display:grid;place-items:center}
.ocard__panel>img{display:block;width:100%;height:100%;object-fit:cover}
/* Variante « capture posee » : le visuel flotte au centre du panneau, comme
   chez la reference. La capture du tableau de bord est tres large (1896 x 904,
   soit 2,097) ; laissee entiere elle ne remplissait que 48 % de la hauteur du
   panneau. On la recadre donc en 4/3 par la gauche : on garde le menu, les
   compteurs du jour et le graphique, et elle occupe 76 % de la hauteur. */
.ocard__panel--shot{padding:clamp(22px,2.6vw,38px)}
.ocard__panel--shot>img{width:100%;height:auto;aspect-ratio:4/3;
  object-fit:cover;object-position:left top;
  border-radius:10px;box-shadow:0 18px 44px -20px rgba(2,6,20,.5)}
.ocard__panel>svg{width:100%;height:100%;display:block}
.ocard__txt{display:grid;grid-template-columns:minmax(0,.42fr) minmax(0,.58fr);
  gap:clamp(16px,2vw,30px);align-items:start}
.ocard__txt h3{font-size:clamp(19px,1.7vw,25px);font-weight:700;letter-spacing:-.02em;
  line-height:1.2;color:var(--ink)}
.ocard__txt p{margin:0;font-size:clamp(15px,1.15vw,17px);line-height:1.6;color:var(--body)}
.ocard__note{margin:clamp(26px,3vw,40px) 0 0;max-width:86ch;
  font-size:15px;line-height:1.6;color:var(--body)}
@media (max-width:860px){
  .ocards{grid-template-columns:minmax(0,1fr)}
  .ocard__txt{grid-template-columns:minmax(0,1fr);gap:10px}
}

/* ---------- les cartes de contact ----------
   Modele : la section contact de test.hotella.io, mecanique relevee dans
   son code et non estimee sur la capture. Chez elle : une rangee en flex
   a align-items:flex-start et 40 px d'ecart ; une colonne de gauche large
   de 371 px, ecart 32 ; trois cartes rayon 20, remplissage 44, texte
   centre, fond rgb(4,5,15) -- c'est exactement notre --abyss, rien a
   transposer ; chaque carte cache un PNG de halo bleu pose en absolu,
   tourne et decale differemment d'une carte a l'autre ; a droite une
   carte blanche rayon 32, remplissage 44, sans ombre.
   Ici le PNG de halo est remplace par le film de verre deja au projet :
   meme role, meme place, mais anime. Chaque carte le cadre autrement
   (--op) pour que la lumiere ne tombe pas au meme endroit, comme la
   reference tourne son PNG d'une carte a l'autre. */
/* Le formulaire porte maintenant les memes champs que la reference, donc il
   est plus haut que la colonne des cartes et le rattrapage de hauteur qui
   etirait la zone de message n'a plus lieu d'etre : on revient au
   align-items:flex-start de la reference. */
.contact-row{display:grid;grid-template-columns:371px minmax(0,1fr);
  gap:clamp(26px,3.2vw,44px);align-items:start}
.contact-col{display:flex;flex-direction:column;gap:clamp(18px,2vw,28px)}
.contact-form{display:flex;flex-direction:column;
  background:var(--paper);border-radius:var(--r-xl);
  padding:clamp(24px,3.2vw,44px)}
.contact-form .form .btn{width:100%;justify-self:stretch;margin-top:4px}

.ccard{position:relative;isolation:isolate;overflow:hidden;text-align:center;
  padding:clamp(30px,3.2vw,44px) clamp(24px,2.6vw,34px);
  border-radius:var(--r-lg);background:var(--abyss)}
/* Les enfants remontent au-dessus du film. Cette regle vient AVANT
   .ccard__film : a specificite egale, c'est la derniere qui gagne, et le
   film doit rester absolu sous peine de pousser la carte en hauteur. */
.ccard>*{position:relative;z-index:1}
.ccard__film{position:absolute;inset:0;z-index:0;pointer-events:none}
.ccard__film video{width:100%;height:100%;object-fit:cover;display:block;
  object-position:var(--op,50% 50%);opacity:0;transition:opacity .9s var(--ease)}
.ccard__film video.is-on{opacity:1}
.ccard__scrim{position:absolute;inset:0;
  background:radial-gradient(118% 86% at 50% 50%,rgba(4,5,15,.66),
    rgba(4,5,15,.78) 58%,rgba(4,5,15,.9) 100%)}
.ccard__ic{display:grid;place-items:center;width:40px;height:40px;margin:0 auto 22px}
.ccard__ic svg{width:34px;height:34px;fill:none;stroke:#fff;stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round}
.ccard h3{font-size:19px;font-weight:600;letter-spacing:-.01em;text-transform:none;
  color:#FCFCFC;margin-bottom:10px}
.ccard p,.ccard a{font-size:15.5px;line-height:1.5;font-weight:400;color:var(--body-d)}
.ccard a:hover{color:var(--cyan)}
/* Chez la reference : colonne, puis rangee de trois a partir de md
   (md:flex-row), puis de nouveau colonne a partir de lg. Repris tel quel. */
@media (max-width:1080px){
  .contact-row{grid-template-columns:minmax(0,1fr)}
  .contact-col{flex-direction:row}
  .contact-col .ccard{flex:1 1 0;min-width:0}
}
@media (max-width:760px){
  .contact-col{flex-direction:column;max-width:520px;margin-inline:auto;width:100%}
  /* en colonne, flex:1 1 0 porterait sur la HAUTEUR et ecraserait
     les cartes : on rend la base a leur contenu. */
  .contact-col .ccard{flex:0 0 auto}
}

/* ---------- le formulaire ---------- */
.form{display:grid;gap:16px}
.form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:13px;font-weight:600;color:var(--body)}
.field input,.field select,.field textarea{
  font:inherit;font-size:15px;color:var(--ink);padding:13px 15px;border-radius:var(--r-md);
  background:var(--paper);border:1px solid var(--line-strong);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease)}
.field textarea{min-height:128px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--electric);box-shadow:0 0 0 3px rgba(11,169,238,.16)}
.form .btn{justify-self:start}
/* La case de consentement, d'apres la maquette : pastille a gauche, phrase
   a droite, le lien souligne. La coche est dessinee en CSS (deux bords
   tournes a 45 degres), donc pas d'image ni de police a charger. */
.check{display:flex;align-items:flex-start;gap:11px;cursor:pointer;
  margin-top:4px;font-size:14px;line-height:1.5;color:var(--body)}
.check input{appearance:none;-webkit-appearance:none;flex:none;
  width:19px;height:19px;margin:1px 0 0;border-radius:6px;
  border:1.5px solid var(--line-strong);background:var(--paper);cursor:pointer;
  display:grid;place-items:center;
  transition:background .22s var(--ease),border-color .22s var(--ease)}
.check input::after{content:"";width:5px;height:9px;margin-top:-2px;
  border:solid #fff;border-width:0 2px 2px 0;
  transform:rotate(45deg) scale(0);transition:transform .18s var(--ease)}
.check input:checked{background:var(--teal);border-color:var(--teal)}
.check input:checked::after{transform:rotate(45deg) scale(1)}
.check input:focus-visible{outline:none;border-color:var(--electric);
  box-shadow:0 0 0 3px rgba(11,169,238,.22)}
.check a{color:var(--teal);text-decoration:underline;text-underline-offset:3px;
  text-decoration-thickness:1px}
.check a:hover{color:var(--azure)}

/* ---------- la carte de l'adresse ----------
   Chargement au clic : le cadre reste un panneau de marque tant que
   personne n'a demande la carte, donc aucune requete ne part chez Google
   et aucun cookie n'est depose. Une fois acceptee, l'iframe remplit le
   panneau et le voile de demande disparait. */
.mapbox{position:relative;isolation:isolate;overflow:hidden;
  border-radius:var(--r-lg);background:var(--navy-900);
  aspect-ratio:16/7;display:grid;place-items:center}
.mapbox::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(58% 80% at 18% 12%,rgba(11,169,238,.3),transparent 62%),
             radial-gradient(52% 74% at 86% 92%,rgba(5,116,160,.34),transparent 64%)}
.mapbox__ask{position:relative;z-index:1;display:flex;flex-direction:column;
  align-items:center;text-align:center;gap:16px;
  padding:clamp(24px,3vw,40px);max-width:520px}
.mapbox__pin{display:grid;place-items:center;width:54px;height:54px;
  border-radius:16px;background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.26)}
.mapbox__pin svg{width:26px;height:26px;fill:none;stroke:#fff;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.mapbox__txt{margin:0;font-size:14.5px;line-height:1.6;color:var(--body-d)}
.mapbox iframe{position:absolute;inset:0;z-index:2;width:100%;height:100%;border:0}
.mapbox.is-on .mapbox__ask,.mapbox.is-on::before{display:none}
.mapbox__link{margin:16px 0 0;font-size:14.5px}
.mapbox__link a{color:var(--teal);text-decoration:underline;text-underline-offset:3px;
  text-decoration-thickness:1px}
.mapbox__link a:hover{color:var(--azure)}
@media (max-width:760px){.mapbox{aspect-ratio:4/3}}

/* ---------- l'encart d'appel de bas de page ----------
   Le panneau « démo » de l'accueil est sur film ; celui des pages
   intérieures est le même objet, en aplat de marque. */
.endcta{margin:0 clamp(12px,2vw,28px);padding:clamp(52px,6vw,88px) clamp(22px,4vw,56px);
  border-radius:var(--r-big);text-align:center;position:relative;isolation:isolate;
  overflow:hidden;background:var(--navy-900)}
.endcta::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(58% 80% at 18% 12%,rgba(11,169,238,.3),transparent 62%),
             radial-gradient(52% 74% at 86% 92%,rgba(5,116,160,.34),transparent 64%)}
.endcta>*{position:relative;z-index:1}
.endcta .lede{max-width:56ch;margin:18px auto 0}
.endcta .btns{justify-content:center;margin-top:32px}
.endcta__note{margin-top:22px;font-size:13.5px;color:var(--muted-d)}

/* Quatre colonnes ne respirent qu'au-delà de 1200 px : en dessous, la
   fiche fait moins de 170 px et le texte se hache. */
@media (max-width:1200px){
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:980px){
  .phero__grid{grid-template-columns:1fr;gap:34px}
  .g3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .split{grid-template-columns:1fr;gap:34px}
}
@media (max-width:760px){
  .g2,.g3,.g4{grid-template-columns:1fr}
  .form__row{grid-template-columns:1fr}
  .phero h1{max-width:100%}
}
