/* ============ HERO ============ */
.hero{position:relative;min-height:100vh;display:flex;align-items:flex-end;padding:0 0 7vh;overflow:hidden;
  background:linear-gradient(120deg,var(--blue) 0%,#1a1ab0 52%,var(--navy) 100%)}
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.hero__veil{position:absolute;inset:0;z-index:1;background:linear-gradient(120deg,rgba(50,50,255,.72) 0%,rgba(26,26,176,.66) 52%,rgba(0,0,109,.8) 100%)}
.hero__map{position:absolute;z-index:2;top:50%;right:clamp(1rem,3vw,3.5rem);transform:translateY(-50%);width:min(46%,560px);pointer-events:none;filter:drop-shadow(0 24px 50px rgba(0,0,40,.45))}
.hero__map svg{width:100%;height:auto;overflow:visible}
.vmap-fill{fill:rgba(255,255,255,.07)}
.vmap-out{fill:none;stroke:var(--sky);stroke-width:3;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:vdraw 3.2s var(--ease) .8s forwards}
@keyframes vdraw{to{stroke-dashoffset:0}}
.vmap-dot{fill:var(--orange)}
.vmap-dotMain{fill:#fff;stroke:var(--orange);stroke-width:3}
.vmap-ping{fill:var(--orange);transform-box:fill-box;transform-origin:center;animation:vping 2.6s ease-out infinite}
@keyframes vping{0%{transform:scale(1);opacity:.55}70%,100%{transform:scale(2.6);opacity:0}}
.vmap-label{fill:#fff;font-family:var(--font-display);font-weight:600;font-size:23px}
@media(max-width:900px){.hero__map{display:none}}
.hero__photo{position:absolute;top:0;right:0;width:58%;height:100%;overflow:hidden}
.hero__photo img{width:100%;height:100%;object-fit:cover}
.hero__photo::before{content:'';position:absolute;inset:0;background:linear-gradient(to right,var(--navy),transparent 55%);z-index:1}
.hero__photo::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,var(--navy),transparent 55%);z-index:1}
.hero__inner{position:relative;z-index:5;width:100%;max-width:1280px;margin:0 auto;padding:0 clamp(1.2rem,5vw,4rem);transform:translateX(-40px)}
@media(max-width:600px){.hero__inner{transform:none}}
.hero__eyebrow{font-family:var(--font-serif);font-style:italic;font-size:clamp(1.7rem,3.2vw,2.8rem);color:#fff;margin-left:6px}
.hero__title{font-size:clamp(3.5rem,11vw,10rem);font-weight:900;color:#fff;text-transform:uppercase;letter-spacing:-.02em;position:relative;display:inline-block}
.hero__title .u{display:block;height:.06em;width:100%;background:var(--orange);transform-origin:left;border-radius:2px}
.hero__accent{font-family:var(--font-serif);font-style:italic;font-size:clamp(1.4rem,4vw,3rem);color:var(--sky);margin:.5rem 0 0 6px}
.hero__lead{color:rgba(255,255,255,.88);max-width:44ch;margin:22px 0 0 8px;font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.55}
.hero__cta{display:flex;gap:14px;flex-wrap:wrap;margin:26px 0 0 8px}
.hbtn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:600;font-size:15px;
  padding:14px 30px;border-radius:10px;text-decoration:none;border:1.5px solid transparent;transition:.2s var(--ease)}
.hbtn--orange{background:var(--orange);color:#fff}
.hbtn--orange:hover{background:#ff6b35;transform:translateY(-2px)}
.hbtn--ghost{border-color:rgba(255,255,255,.6);color:#fff}
.hbtn--ghost:hover{background:#fff;color:var(--navy)}
.hero[data-variant="cinetique"] .hero__lead,.hero[data-variant="cinetique"] .hero__cta{opacity:0}
.hero[data-variant="cinetique"].play .hero__lead{animation:fade .7s var(--ease) 1s both}
.hero[data-variant="cinetique"].play .hero__cta{animation:fade .7s var(--ease) 1.15s both}
.hero__aurora{position:absolute;inset:0;z-index:0;opacity:0;transition:opacity .6s;pointer-events:none}
.hero__aurora span{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;mix-blend-mode:screen}
.hero__aurora .a1{width:46vw;height:46vw;left:-8vw;top:-10vw;background:var(--blue);animation:float1 16s ease-in-out infinite}
.hero__aurora .a2{width:38vw;height:38vw;right:-6vw;top:18vw;background:var(--sky);animation:float2 20s ease-in-out infinite}
.hero__aurora .a3{width:30vw;height:30vw;left:24vw;bottom:-10vw;background:var(--orange);opacity:.4;animation:float3 18s ease-in-out infinite}
@keyframes float1{50%{transform:translate(8vw,6vw) scale(1.15)}}
@keyframes float2{50%{transform:translate(-7vw,4vw) scale(1.1)}}
@keyframes float3{50%{transform:translate(5vw,-5vw) scale(1.2)}}

/* -- Variant: cinetique -- */
.hero[data-variant="cinetique"] .hero__title .ltr{display:inline-block;opacity:0;transform:translateY(.4em) rotate(4deg)}
.hero[data-variant="cinetique"].play .hero__title .ltr{animation:rise .7s var(--ease) forwards}
.hero[data-variant="cinetique"].play .hero__eyebrow{animation:fade .6s var(--ease) .05s both}
.hero[data-variant="cinetique"].play .hero__accent{animation:fade .7s var(--ease) .8s both}
.hero[data-variant="cinetique"] .hero__title .u{transform:scaleX(0)}
.hero[data-variant="cinetique"].play .hero__title .u{animation:line .7s var(--ease) .9s forwards}
.hero[data-variant="cinetique"] .hero__photo img{transform:scale(1.06);transition:transform 1.4s var(--ease)}
.hero[data-variant="cinetique"].play .hero__photo img{transform:scale(1)}
@keyframes rise{to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes line{to{transform:scaleX(1)}}

/* -- Variant: aurora -- */
.hero[data-variant="aurora"] .hero__photo{opacity:.18}
.hero[data-variant="aurora"] .hero__aurora{opacity:1}
.hero[data-variant="aurora"] .hero__title .ltr,.hero[data-variant="aurora"] .hero__eyebrow,.hero[data-variant="aurora"] .hero__accent{opacity:1;transform:none}
.hero[data-variant="aurora"].play .hero__inner{animation:fade .9s var(--ease) both}
.hero[data-variant="aurora"] .hero__title .u{transform:scaleX(1)}

/* -- Variant: wipe -- */
.hero[data-variant="wipe"]{align-items:center}
.hero[data-variant="wipe"] .hero__photo{width:62%}
.hero[data-variant="wipe"] .hero__photo img{clip-path:inset(0 100% 0 0)}
.hero[data-variant="wipe"].play .hero__photo img{animation:wipe 1.1s var(--ease) .2s forwards}
.hero[data-variant="wipe"] .hero__title .ltr,.hero[data-variant="wipe"] .hero__eyebrow,.hero[data-variant="wipe"] .hero__accent{opacity:1;transform:none}
.hero[data-variant="wipe"].play .hero__inner{animation:fade 1s var(--ease) .5s both}
.hero[data-variant="wipe"] .hero__title{mix-blend-mode:screen}
.hero[data-variant="wipe"] .hero__title .u{transform:scaleX(1)}
@keyframes wipe{to{clip-path:inset(0 0 0 0)}}

