/* ==========================================================================
   ValoraWeb — feuille de style principale (v2 « Nuit »)
   Partagée par index.html et en/index.html.
   ========================================================================== */

:root{
  --night:      #050914;
  --night-2:    #0A1226;
  --night-3:    #101B36;
  --line:       rgba(142,197,255,.14);
  --line-2:     rgba(142,197,255,.26);
  --text:       #EEF3FB;
  --muted:      #9AA9C3;
  --dim:        #7B89A4;
  --blue:       #2F6BFF;
  --blue-2:     #5B8CFF;
  --sky:        #8EC5FF;
  --navy:       #172B4D;
  --paper:      #F5F7FA;
  --ink:        #0B1324;
  --ok:         #4ADE80;
  --danger:     #FF7A85;

  --font-display:'Bricolage Grotesque', system-ui, sans-serif;
  --font-body:'Instrument Sans', system-ui, sans-serif;
  --font-mono:'JetBrains Mono', ui-monospace, monospace;

  --maxw: 1440px;
  --pad: clamp(16px, 4vw, 56px);
  --r: 18px;
  --ease-out: cubic-bezier(.16,1,.3,1);
  color-scheme: dark;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ overflow-x:clip; -webkit-text-size-adjust:100%; }
html.lenis, html.lenis body{ height:auto; }
.lenis.lenis-smooth{ scroll-behavior:auto !important; }
.lenis.lenis-stopped{ overflow:hidden; }

body{
  margin:0;
  background:var(--night);
  color:var(--text);
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
button{ font:inherit; color:inherit; }
::selection{ background:var(--blue); color:#fff; }

:focus-visible{ outline:2px solid var(--sky); outline-offset:4px; border-radius:6px; }

.vw-skip{
  position:fixed; left:16px; top:-60px; z-index:300;
  background:var(--blue); color:#fff; padding:10px 16px; border-radius:10px;
  text-decoration:none; font-weight:600; transition:top .2s;
}
.vw-skip:focus{ top:16px; }

.vw-wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad); }

.vw-sr{ position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* Grain : texture fixe très légère sur toute la page */
.vw-grain{
  position:fixed; inset:-50%; z-index:90; pointer-events:none; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:vw-grain 1.2s steps(6) infinite;
}
@keyframes vw-grain{
  0%{ transform:translate(0,0); } 20%{ transform:translate(-3%,2%); } 40%{ transform:translate(2%,-3%); }
  60%{ transform:translate(-2%,-1%); } 80%{ transform:translate(3%,3%); } 100%{ transform:translate(0,0); }
}

/* --------------------------------------------------------------------------
   Typographie
   -------------------------------------------------------------------------- */
.vw-eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-mono); font-size:.78rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--sky);
}
.vw-eyebrow::before{
  content:""; width:8px; height:8px; border-radius:50%; background:var(--blue-2);
  box-shadow:0 0 0 4px rgba(91,140,255,.18), 0 0 18px var(--blue-2);
}
.vw-h2{
  font-family:var(--font-display); font-weight:600;
  font-size:clamp(2.1rem, 4.8vw, 4.6rem); line-height:1; letter-spacing:-.04em;
  margin:.35em 0 0; text-wrap:balance;
}
.vw-h2 em, .vw-hero__title em{
  font-style:normal;
  background:linear-gradient(100deg, var(--sky) 10%, var(--blue-2) 55%, #B9A6FF 95%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.vw-lead{ color:var(--muted); font-size:clamp(1.02rem, 1.3vw, 1.2rem); max-width:56ch; margin:1.4em 0 0; }

/* Lignes masquées pour les révélations de titres */
.vw-line{ display:block; overflow:hidden; padding-bottom:.08em; margin-bottom:-.08em; }
.vw-line > span{ display:block; }

/* --------------------------------------------------------------------------
   Boutons
   -------------------------------------------------------------------------- */
.vw-btn{
  --bg:transparent;
  position:relative; display:inline-flex; align-items:center; gap:.7em;
  min-height:52px; padding:.9em 1.6em; border-radius:999px;
  font-weight:600; font-size:1rem; text-decoration:none; cursor:pointer;
  border:1px solid var(--line-2); background:var(--bg); color:var(--text);
  overflow:hidden; isolation:isolate;
  transition:border-color .3s, color .3s;
}
.vw-btn::before{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:var(--text); transform:translateY(101%); transition:transform .5s var(--ease-out);
}
.vw-btn:hover::before{ transform:none; }
.vw-btn:hover{ color:var(--ink); border-color:var(--text); }
.vw-btn--primary{ --bg:var(--blue); border-color:var(--blue); color:#fff; box-shadow:0 10px 40px -12px rgba(47,107,255,.8); }
.vw-btn--primary::before{ background:#fff; }
.vw-btn__arrow{ display:inline-block; transition:transform .4s var(--ease-out); }
.vw-btn:hover .vw-btn__arrow{ transform:translateX(4px) rotate(-45deg); }
.vw-btn > *{ pointer-events:none; }

/* --------------------------------------------------------------------------
   Préchargement
   -------------------------------------------------------------------------- */
.vw-loader{
  position:fixed; inset:0; z-index:200; display:none;
  background:var(--night); color:var(--text);
}
.js .vw-loader{ display:grid; place-items:center; }
.vw-seen .vw-loader{ display:none !important; }
.vw-loader__logo{ width:min(180px, 40vw); }
.vw-loader__logo path{ fill:none; stroke:var(--text); stroke-width:.8; }
.vw-loader__logo path + path{ stroke:var(--blue-2); }
.vw-loader__count{
  position:absolute; right:var(--pad); bottom:calc(var(--pad) * .8);
  font-family:var(--font-display); font-weight:600; font-size:clamp(4rem, 14vw, 12rem);
  line-height:.8; letter-spacing:-.06em; font-variant-numeric:tabular-nums;
}
.vw-loader__tag{
  position:absolute; left:var(--pad); bottom:calc(var(--pad) * .8 + .4em);
  font-family:var(--font-mono); font-size:.78rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
}
.vw-loader__bar{ position:absolute; left:0; bottom:0; height:2px; width:100%; background:var(--blue-2); transform-origin:left; transform:scaleX(0); }

/* --------------------------------------------------------------------------
   Curseur personnalisé (pointeur fin uniquement)
   -------------------------------------------------------------------------- */
.vw-cursor{ display:none; }
@media (hover:hover) and (pointer:fine){
  .js .vw-cursor{
    display:grid; place-items:center;
    position:fixed; left:0; top:0; z-index:150; pointer-events:none;
    width:14px; height:14px; margin:-7px 0 0 -7px; border-radius:50%;
    background:#fff; mix-blend-mode:difference;
    transition:width .35s var(--ease-out), height .35s var(--ease-out), margin .35s var(--ease-out);
  }
  .vw-cursor span{
    font-family:var(--font-mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase;
    color:#000; opacity:0; transition:opacity .2s;
  }
  .vw-cursor.is-hover{ width:56px; height:56px; margin:-28px 0 0 -28px; }
  .vw-cursor.is-label{ width:96px; height:96px; margin:-48px 0 0 -48px; mix-blend-mode:normal; background:var(--sky); }
  .vw-cursor.is-label span{ opacity:1; }
}

/* --------------------------------------------------------------------------
   En-tête
   -------------------------------------------------------------------------- */
.vw-header{
  position:fixed; inset:0 0 auto; z-index:100;
  transition:transform .5s var(--ease-out), background .4s, border-color .4s;
  border-bottom:1px solid transparent;
}
.vw-header.is-scrolled{ background:rgba(5,9,20,.62); backdrop-filter:blur(16px) saturate(1.4); -webkit-backdrop-filter:blur(16px) saturate(1.4); border-color:var(--line); }
.vw-header.is-hidden{ transform:translateY(-100%); }
.vw-header__inner{ display:flex; align-items:center; gap:24px; height:76px; }
.vw-logo{ display:inline-flex; align-items:center; gap:12px; text-decoration:none; color:var(--text); }
.vw-logo svg{ width:40px; height:auto; }
.vw-logo b{ font-family:var(--font-display); font-weight:600; font-size:1.2rem; letter-spacing:-.03em; }
.vw-logo b i{ font-style:normal; color:var(--blue-2); }
.vw-nav{ display:flex; gap:6px; margin-left:auto; }
.vw-nav a{
  position:relative; padding:10px 14px; text-decoration:none; font-size:.95rem; color:var(--muted);
  transition:color .25s;
}
.vw-nav a::after{
  content:""; position:absolute; left:14px; right:14px; bottom:6px; height:1px; background:var(--sky);
  transform:scaleX(0); transform-origin:right; transition:transform .4s var(--ease-out);
}
.vw-nav a:hover, .vw-nav a.is-active{ color:var(--text); }
.vw-nav a:hover::after, .vw-nav a.is-active::after{ transform:scaleX(1); transform-origin:left; }
.vw-lang{ display:flex; gap:2px; font-family:var(--font-mono); font-size:.78rem; }
.vw-lang a{ padding:8px; min-width:32px; min-height:32px; display:inline-grid; place-items:center; text-decoration:none; color:var(--dim); border-radius:8px; }
.vw-lang a[aria-current]{ color:var(--text); }
.vw-header .vw-btn{ min-height:44px; padding:.6em 1.2em; font-size:.92rem; }
.vw-burger{
  display:none; width:44px; height:44px; border-radius:50%; border:1px solid var(--line-2);
  background:none; cursor:pointer; position:relative; margin-left:auto;
}
.vw-burger span{ position:absolute; left:13px; right:13px; height:1.5px; background:var(--text); transition:transform .4s var(--ease-out); }
.vw-burger span:first-child{ top:17px; } .vw-burger span:last-child{ top:25px; }
.vw-burger[aria-expanded="true"] span:first-child{ transform:translateY(4px) rotate(45deg); }
.vw-burger[aria-expanded="true"] span:last-child{ transform:translateY(-4px) rotate(-45deg); }

.vw-menu{
  position:fixed; inset:0; z-index:99; background:var(--night-2);
  padding:110px var(--pad) 40px; display:flex; flex-direction:column; gap:8px;
  clip-path:circle(0% at calc(100% - 44px) 38px); visibility:hidden;
  transition:clip-path .8s var(--ease-out), visibility 0s .8s;
}
.vw-menu.is-open{ clip-path:circle(150% at calc(100% - 44px) 38px); visibility:visible; transition:clip-path .8s var(--ease-out); }
.vw-menu a.vw-menu__link{
  font-family:var(--font-display); font-size:clamp(2.4rem, 11vw, 4rem); font-weight:600; letter-spacing:-.04em;
  text-decoration:none; line-height:1.1; color:var(--text);
}
.vw-menu__foot{ margin-top:auto; display:grid; gap:10px; color:var(--muted); }
.vw-menu__foot a{ text-decoration:none; }

.vw-menu__wa{ display:inline-flex; align-items:center; gap:10px; }
.vw-menu__wa svg{ width:20px; height:20px; color:var(--ok); flex:none; }

@media (max-width:960px){
  .vw-nav, .vw-header .vw-btn{ display:none; }
  .vw-header .vw-lang{ margin-left:auto; }
  .vw-header .vw-lang a{ min-width:40px; min-height:44px; font-size:.82rem; }
  .vw-burger{ display:block; margin-left:0; }
  .vw-header__inner{ gap:8px; }
}

/* --------------------------------------------------------------------------
   Héros
   -------------------------------------------------------------------------- */
.vw-hero{
  position:relative; min-height:100svh; display:flex; flex-direction:column; justify-content:flex-end;
  padding:140px 0 48px; overflow:hidden; isolation:isolate;
}
.vw-hero__gl{
  position:absolute; inset:0; z-index:-2; width:100%; height:100%;
  background:
    radial-gradient(60% 50% at 75% 30%, rgba(47,107,255,.45), transparent 70%),
    radial-gradient(40% 40% at 20% 80%, rgba(142,197,255,.2), transparent 70%),
    var(--night);
}
.vw-hero::after{
  content:""; position:absolute; inset:auto 0 0; height:40%; z-index:-1;
  background:linear-gradient(transparent, var(--night));
}
.vw-hero__grid{
  position:absolute; inset:0; z-index:-1; opacity:.5;
  background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);
  background-size:88px 88px;
  mask-image:radial-gradient(70% 60% at 60% 40%, #000, transparent 75%);
  -webkit-mask-image:radial-gradient(70% 60% at 60% 40%, #000, transparent 75%);
}
.vw-hero__badge{
  display:inline-flex; align-items:center; gap:10px; padding:8px 14px 8px 10px;
  border:1px solid var(--line-2); border-radius:999px; background:rgba(10,18,38,.5); backdrop-filter:blur(8px);
  font-size:.86rem; color:var(--muted);
}
.vw-hero__badge i{ width:8px; height:8px; border-radius:50%; background:var(--ok); box-shadow:0 0 0 0 rgba(74,222,128,.6); animation:vw-pulse 2s infinite; }
@keyframes vw-pulse{ 70%{ box-shadow:0 0 0 10px rgba(74,222,128,0); } 100%{ box-shadow:0 0 0 0 rgba(74,222,128,0); } }
.vw-hero__title{
  font-family:var(--font-display); font-weight:600;
  font-size:clamp(2.8rem, 8vw, 8.5rem); line-height:.92; letter-spacing:-.05em;
  margin:.3em 0 0; max-width:15ch;
}
.vw-hero__foot{
  display:grid; grid-template-columns:minmax(0,1.1fr) auto; gap:32px 48px; align-items:end; margin-top:48px;
}
.vw-hero__foot .vw-lead{ margin:0; }
.vw-hero__ctas{ display:flex; flex-wrap:wrap; gap:12px; }
.vw-hero__stats{
  display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); margin-top:56px;
  border-top:1px solid var(--line);
}
.vw-stat{ padding:22px 20px 0 0; }
.vw-stat + .vw-stat{ padding-left:20px; border-left:1px solid var(--line); }
.vw-stat b{
  display:block; font-family:var(--font-display); font-weight:600; font-size:clamp(1.7rem, 3vw, 2.6rem);
  letter-spacing:-.04em; line-height:1; font-variant-numeric:tabular-nums;
}
.vw-stat > span{ font-size:.95rem; color:var(--text); font-weight:500; }
.vw-hero__scroll{
  position:absolute; right:var(--pad); top:50%; writing-mode:vertical-rl;
  font-family:var(--font-mono); font-size:.76rem; letter-spacing:.2em; text-transform:uppercase; color:var(--dim);
  display:flex; align-items:center; gap:14px;
}
.vw-hero__scroll::after{ content:""; width:1px; height:64px; background:linear-gradient(var(--sky), transparent); animation:vw-drip 2.2s var(--ease-out) infinite; transform-origin:top; }
@keyframes vw-drip{ 0%{ transform:scaleY(0); } 60%{ transform:scaleY(1); opacity:1; } 100%{ transform:scaleY(1); opacity:0; } }

@media (max-width:860px){
  .vw-hero__foot{ grid-template-columns:1fr; }
  .vw-hero__stats{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .vw-stat:nth-child(3){ padding-left:0; border-left:0; }
  .vw-stat:nth-child(n+3){ border-top:1px solid var(--line); margin-top:22px; }
  .vw-hero__scroll{ display:none; }
}

/* --------------------------------------------------------------------------
   Bandeau défilant
   -------------------------------------------------------------------------- */
.vw-marquee{
  position:relative; overflow:hidden; padding:28px 0; border-block:1px solid var(--line);
  background:var(--night-2);
}
.vw-marquee__track{ display:flex; width:max-content; will-change:transform; }
.vw-marquee__item{
  display:inline-flex; align-items:center; gap:28px; padding-right:28px; white-space:nowrap;
  font-family:var(--font-display); font-weight:500; font-size:clamp(1.6rem, 3.4vw, 3rem); letter-spacing:-.03em;
}
.vw-marquee__item svg{ width:.7em; height:.7em; color:var(--blue-2); flex:none; }

/* --------------------------------------------------------------------------
   Sections génériques
   -------------------------------------------------------------------------- */
.vw-section{ position:relative; padding:clamp(88px, 11vw, 160px) 0; }
.vw-section__head{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.7fr); gap:24px 64px; align-items:end; margin-bottom:clamp(48px, 7vw, 96px); }
.vw-section__head .vw-lead{ margin:0; }
@media (max-width:860px){ .vw-section__head{ grid-template-columns:1fr; } }

/* --------------------------------------------------------------------------
   Garantie « 0 CHF » (section épinglée)
   -------------------------------------------------------------------------- */
.vw-guarantee{ position:relative; background:var(--night); }
.vw-guarantee__pin{ min-height:100svh; display:flex; align-items:center; padding:96px 0 40px; }
@media (min-width:961px) and (max-height:820px){ .vw-steps p{ display:none; } }
.vw-guarantee__grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:48px 80px; align-items:center; }
.vw-guarantee .vw-h2{ font-size:clamp(2rem, 3.8vw, 3.6rem); }
.vw-meter{
  position:relative; border:1px solid var(--line-2); border-radius:28px; padding:clamp(24px, 3vw, 40px);
  background:linear-gradient(180deg, rgba(16,27,54,.9), rgba(10,18,38,.6));
  box-shadow:0 40px 120px -40px rgba(47,107,255,.5), inset 0 1px 0 rgba(255,255,255,.06);
  overflow:hidden;
}
.vw-meter::before{
  content:""; position:absolute; inset:-1px; border-radius:inherit; pointer-events:none;
  background:radial-gradient(400px 200px at var(--mx,70%) 0%, rgba(142,197,255,.22), transparent 70%);
}
.vw-meter{ transition:border-color .5s, box-shadow .5s; }
.vw-meter.is-done{ border-color:rgba(74,222,128,.45); box-shadow:0 40px 120px -40px rgba(74,222,128,.35), inset 0 1px 0 rgba(255,255,255,.06); }
.vw-meter.is-done .vw-meter__day{ color:var(--ok); }
.vw-meter__label{ font-family:var(--font-mono); font-size:.76rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.vw-meter__value{
  display:flex; align-items:baseline; gap:.2em; margin:.15em 0 .1em;
  font-family:var(--font-display); font-weight:600; font-size:clamp(4.4rem, min(10vw, 15svh), 9rem); line-height:.9; letter-spacing:-.06em;
}
.vw-meter__value small{ font-size:.3em; letter-spacing:-.02em; color:var(--sky); }
.vw-meter__day{ font-family:var(--font-mono); color:var(--sky); font-size:.9rem; }
.vw-meter__track{ position:relative; height:4px; background:var(--line); border-radius:4px; margin:20px 0 8px; }
.vw-meter__fill{ position:absolute; inset:0; background:linear-gradient(90deg, var(--blue), var(--sky)); border-radius:inherit; transform-origin:left; transform:scaleX(.02); }
.vw-meter__ticks{ display:flex; justify-content:space-between; font-family:var(--font-mono); font-size:.78rem; color:var(--dim); }

.vw-steps{ list-style:none; margin:20px 0 0; padding:0; display:grid; gap:8px; }
.vw-steps li{
  display:grid; grid-template-columns:72px 1fr auto; gap:16px; align-items:center;
  padding:12px 16px; border-radius:14px; border:1px solid var(--line);
  background:rgba(5,9,20,.4); transition:border-color .4s, background .4s, opacity .4s;
}
.js .vw-steps li{ opacity:.38; }
.vw-steps li.is-on{ opacity:1; border-color:var(--line-2); background:rgba(47,107,255,.08); }
.vw-steps__d{ font-family:var(--font-mono); font-size:.76rem; color:var(--sky); }
.vw-steps b{ display:block; font-weight:600; }
.vw-steps p{ margin:2px 0 0; font-size:.88rem; color:var(--muted); line-height:1.5; }
.vw-steps__pay{ font-family:var(--font-mono); font-size:.76rem; color:var(--ok); white-space:nowrap; }
.vw-steps li:last-child .vw-steps__pay{ color:var(--sky); }
.vw-guarantee__note{ margin:28px 0 0; color:var(--muted); font-size:.98rem; max-width:52ch; }
.vw-guarantee__note strong{ color:var(--text); }

@media (max-width:960px){
  .vw-guarantee__grid{ grid-template-columns:1fr; }
  .vw-steps li{ grid-template-columns:58px 1fr; }
  .vw-steps__pay{ grid-column:2; }
}

/* --------------------------------------------------------------------------
   Services : cartes empilées
   -------------------------------------------------------------------------- */
.vw-services{ background:var(--night); }
.vw-cards{ display:grid; gap:24px; }
.vw-card{
  position:sticky; top:calc(110px + var(--i,0) * 22px);
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px 64px;
  min-height:min(520px, 70svh); padding:clamp(28px, 4vw, 56px);
  border-radius:28px; border:1px solid var(--line-2);
  background:linear-gradient(160deg, var(--night-3), var(--night-2) 60%);
  box-shadow:0 -30px 80px -30px rgba(0,0,0,.8);
  overflow:hidden; transform-origin:50% 0;
}
.vw-card::after{
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:inherit;
  background:radial-gradient(500px circle at var(--mx,-999px) var(--my,-999px), rgba(142,197,255,.12), transparent 60%);
}
.vw-card__n{ font-family:var(--font-mono); font-size:.8rem; letter-spacing:.14em; color:var(--sky); }
.vw-card h3{
  font-family:var(--font-display); font-weight:600; font-size:clamp(2.2rem, 4.2vw, 4rem);
  line-height:.95; letter-spacing:-.045em; margin:.3em 0 .35em;
}
.vw-card__kicker{ font-size:clamp(1.1rem, 1.5vw, 1.3rem); color:var(--sky); font-weight:500; margin:0; line-height:1.4; }
.vw-card__ideal{ margin:1.2em 0 0; color:var(--text); font-size:.98rem; }
.vw-card__ideal span{ display:block; font-family:var(--font-mono); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:var(--dim); margin-bottom:4px; }
.vw-card__list{ position:relative; align-self:end; }
.vw-card__lh{ display:block; font-family:var(--font-mono); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:var(--dim); padding-bottom:6px; border-bottom:1px solid var(--line); }
.vw-card__desc{ color:var(--muted); margin:1em 0 0; max-width:44ch; }
.vw-card ul{ list-style:none; margin:0; padding:0; }
.vw-card li{
  display:flex; align-items:center; gap:14px; padding:16px 0; border-bottom:1px solid var(--line);
  font-size:1.02rem;
}
.vw-card li svg{ flex:none; width:20px; height:20px; color:var(--blue-2); }
.vw-card__art{
  position:absolute; right:-6%; top:-12%; width:min(46%, 460px); aspect-ratio:1; pointer-events:none; opacity:.9;
}
.vw-card__art svg{ width:100%; height:100%; }
.vw-card__body{ position:relative; display:flex; flex-direction:column; }
.vw-card__body .vw-btn{ margin-top:auto; align-self:flex-start; }
@media (max-width:860px){
  .vw-card{ grid-template-columns:1fr; position:relative; top:auto; min-height:0; }
  .vw-card__art{ width:60%; right:-20%; top:-10%; opacity:.5; }
  .vw-card__body .vw-btn{ margin-top:24px; }
}

/* --------------------------------------------------------------------------
   Méthode : défilement horizontal
   -------------------------------------------------------------------------- */
.vw-method{ background:var(--paper); color:var(--ink); overflow:hidden; }
.vw-method .vw-eyebrow{ color:var(--blue); }
.vw-method .vw-lead{ color:#4C5D77; }
.vw-method .vw-h2 em{ background:linear-gradient(100deg, var(--blue), #6D4CFF); -webkit-background-clip:text; background-clip:text; }
.vw-method__pin{ padding:clamp(96px, 12vw, 140px) 0 clamp(48px, 6vw, 80px); }
@media (min-width:761px){
  .vw-method__pin{ min-height:100svh; display:flex; flex-direction:column; justify-content:center; padding:92px 0 32px; }
  .vw-method .vw-section__head{ margin-bottom:clamp(24px, 4svh, 56px); }
}
.vw-method__rail{ display:flex; gap:24px; padding-inline:var(--pad); width:max-content; will-change:transform; list-style:none; margin:0; }
.vw-step{
  position:relative; width:min(78vw, 460px); padding:clamp(24px, 2.4vw, 32px);
  border-radius:24px; background:#fff; border:1px solid #DBE3EE;
  display:flex; flex-direction:column;
  box-shadow:0 2px 0 #DBE3EE, 0 30px 60px -40px rgba(23,43,77,.4);
}
.vw-step__n{
  font-family:var(--font-display); font-weight:600; font-size:clamp(3.2rem, 5vw, 4.6rem); line-height:.8; letter-spacing:-.06em;
  color:transparent; -webkit-text-stroke:1.5px var(--blue);
}
.vw-step__top{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; padding-bottom:18px; margin-bottom:18px; border-bottom:1px solid #DBE3EE; }
.vw-step__when{ font-family:var(--font-mono); font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; color:var(--blue); text-align:right; max-width:60%; }
.vw-step:last-child .vw-step__top{ border-color:rgba(255,255,255,.15); }
.vw-step h3{ font-family:var(--font-display); font-weight:600; font-size:clamp(1.5rem, 2vw, 1.9rem); letter-spacing:-.03em; margin:0 0 .4em; line-height:1.05; }
.vw-step p{ margin:0; color:#4C5D77; }
.vw-step:last-child{ background:var(--ink); color:#fff; border-color:var(--ink); }
.vw-step:last-child p{ color:var(--muted); }
.vw-step:last-child .vw-step__n{ -webkit-text-stroke-color:var(--sky); }
.vw-step:last-child .vw-step__when{ color:var(--sky); }
.vw-method__progress{ display:flex; align-items:center; gap:16px; margin-top:40px; font-family:var(--font-mono); font-size:.8rem; color:#4C5D77; }
.vw-method__bar{ flex:1; height:2px; background:#DBE3EE; position:relative; overflow:hidden; border-radius:2px; }
.vw-method__bar i{ position:absolute; inset:0; background:var(--blue); transform-origin:left; transform:scaleX(.2); }
@media (max-width:760px){
  .vw-method__rail{ width:auto; flex-direction:column; }
  .vw-step{ width:100%; min-height:0; }
  .vw-step__when{ max-width:none; }
  .vw-method__progress{ display:none; }
}

/* --------------------------------------------------------------------------
   Réalisations : concepts présentés sur un ordinateur portable
   -------------------------------------------------------------------------- */
.vw-work{ background:var(--night); padding-bottom:clamp(40px, 5vw, 72px); }
.vw-work + .vw-agency{ padding-top:clamp(56px, 7vw, 104px); }
.vw-demo{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr); gap:40px clamp(40px, 6vw, 96px); align-items:center; }
.vw-demo__tag{ font-family:var(--font-mono); font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; color:var(--sky); }
.vw-demo h3{ font-family:var(--font-display); font-weight:600; font-size:clamp(1.9rem, 3.2vw, 3rem); letter-spacing:-.04em; line-height:1.02; margin:.35em 0 .45em; text-wrap:balance; }
.vw-demo p{ color:var(--muted); margin:0; max-width:46ch; }
.vw-demo__chips{ list-style:none; padding:0; margin:24px 0 0; display:flex; flex-wrap:wrap; gap:8px; }
.vw-demo__chips li{ padding:8px 14px; border-radius:999px; border:1px solid var(--line-2); font-size:.88rem; color:var(--text); }
.vw-work__cta{ margin-top:clamp(64px, 8vw, 110px); display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px; padding-top:32px; border-top:1px solid var(--line); }
.vw-work__cta p{ margin:0; font-family:var(--font-display); font-size:clamp(1.4rem, 2.4vw, 2rem); letter-spacing:-.03em; }
@media (max-width:900px){
  .vw-demo{ grid-template-columns:minmax(0,1fr); align-items:start; }
  .vw-demo .vw-mac{ order:-1; }
}

/* Carrousel : un concept à la fois. Sans JavaScript, les concepts s'empilent. */
.vw-carousel__stage{ display:grid; gap:clamp(72px, 10vw, 140px); }
.vw-carousel__nav{ display:none; }
.js .vw-carousel__stage{ gap:0; touch-action:pan-y; }
.js .vw-carousel__stage > .vw-demo{ grid-area:1 / 1; }
.js .vw-carousel__stage > .vw-demo:not(.is-active):not(.is-leaving){ visibility:hidden; pointer-events:none; }
.vw-demo.is-entering .vw-mac__screen{ background:transparent; }
.vw-demo.is-entering .vw-mac{ filter:none; }
.vw-demo.is-entering .vw-mac::before{ display:none; }
.js .vw-carousel__nav{
  display:flex; align-items:center; gap:24px; margin-top:clamp(36px, 5vw, 64px);
  padding-top:24px; border-top:1px solid var(--line);
}
.vw-carousel__count{ display:flex; align-items:baseline; gap:10px; font-family:var(--font-mono); font-size:.85rem; color:var(--dim); min-width:6.5em; }
.vw-carousel__cur{ display:inline-block; overflow:hidden; height:1.15em; line-height:1.15; font-family:var(--font-display); font-size:2rem; font-weight:600; letter-spacing:-.04em; color:var(--text); vertical-align:bottom; }
.vw-carousel__cur b{ display:block; font-weight:inherit; }
.vw-carousel__tabs{ display:flex; gap:6px; flex:1; flex-wrap:wrap; }
.vw-carousel__tabs button{
  position:relative; border:0; background:none; cursor:pointer; padding:10px 16px; border-radius:999px;
  font-size:.95rem; color:var(--muted); transition:color .3s, background .3s;
}
.vw-carousel__tabs button:hover{ color:var(--text); }
.vw-carousel__tabs button[aria-selected="true"]{ color:var(--ink); background:var(--text); }
.vw-carousel__arrows{ display:flex; gap:10px; margin-left:auto; }
.vw-arrow{
  display:grid; place-items:center; width:64px; height:64px; border-radius:50%; cursor:pointer;
  border:1px solid var(--line-2); background:transparent; color:var(--text);
  transition:background .3s, color .3s, border-color .3s, transform .3s var(--ease-out);
}
.vw-arrow svg{ width:24px; height:24px; transition:transform .4s var(--ease-out); }
.vw-arrow:hover{ background:var(--blue); border-color:var(--blue); color:#fff; }
.vw-arrow[data-dir="1"]:hover svg{ transform:translateX(3px); }
.vw-arrow[data-dir="-1"]:hover svg{ transform:translateX(-3px); }
.vw-arrow:active{ transform:scale(.94); }
/* Reflet bleu qui balaie l'écran pendant le changement */
.vw-mac__screen::after{
  content:""; position:absolute; inset:0; z-index:20; pointer-events:none; opacity:0;
  background:linear-gradient(90deg, transparent 0%, rgba(91,140,255,.0) 40%, rgba(142,197,255,.55) 50%, rgba(91,140,255,0) 60%, transparent 100%);
  background-size:250% 100%; background-position:var(--sweep, 120%) 0;
}
.vw-mac.is-sweeping .vw-mac__screen::after{ opacity:1; }
@media (max-width:760px){
  .js .vw-carousel__nav{ gap:12px; flex-wrap:wrap; }
  .vw-carousel__tabs{ order:3; flex-basis:100%; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; }
  .vw-carousel__tabs button{ flex:none; padding:8px 14px; font-size:.9rem; }
  .vw-arrow{ width:54px; height:54px; }
}

/* L'ordinateur */
.vw-mac{ position:relative; width:100%; filter:drop-shadow(0 50px 70px rgba(0,0,0,.55)); }
.vw-mac::before{ content:""; position:absolute; inset:10% 8% -4%; z-index:-1; background:radial-gradient(closest-side, rgba(47,107,255,.35), transparent); filter:blur(30px); }
.vw-mac__lid{ width:86%; margin:0 auto; padding:2.1% 2.1% 2.6%; border-radius:18px 18px 4px 4px; background:linear-gradient(#1A1D24, #0C0E13); border:1px solid #2B303B; position:relative; }
.vw-mac__lid::before{ content:""; position:absolute; top:.9%; left:50%; width:8px; height:8px; margin-left:-4px; border-radius:50%; background:#20242D; box-shadow:inset 0 0 0 2px #15181E; }
.vw-mac__screen{ position:relative; aspect-ratio:16/10; max-width:100%; overflow:hidden; border-radius:4px; background:#000; container-type:inline-size; }
.vw-mac__base{ position:relative; width:100%; aspect-ratio:100/3.2; border-radius:0 0 14px 14px / 0 0 60% 60%; background:linear-gradient(#E3E6EC 0%, #B9BEC8 45%, #8C929E 100%); }
.vw-mac__base::before{ content:""; position:absolute; left:50%; top:0; width:14%; height:38%; margin-left:-7%; border-radius:0 0 10px 10px; background:linear-gradient(#A3A8B3, #C9CDD5); }

/* Mini-sites : toutes les mesures en cqw pour suivre la taille de l'écran */
.ms{ position:absolute; inset:0; overflow:hidden; font-size:1.6cqw; line-height:1.4; }
.ms small{ display:block; font-size:1.25cqw; letter-spacing:.14em; text-transform:uppercase; }
.vw-fake-cursor{ position:absolute; left:0; top:0; z-index:15; width:3.4cqw; height:3.4cqw; pointer-events:none; filter:drop-shadow(0 .3cqw .6cqw rgba(0,0,0,.35)); opacity:0; }
.vw-fake-cursor svg{ width:100%; height:100%; display:block; }
.ms-scroll{ position:absolute; right:1cqw; top:12%; bottom:6%; width:.4cqw; border-radius:1cqw; background:rgba(255,255,255,.08); }
.ms-scroll i{ position:absolute; left:0; right:0; top:0; height:22%; border-radius:inherit; background:rgba(255,255,255,.4); }

/* 1 · Horlogerie */
.ms-watch{ background:radial-gradient(70% 90% at 72% 55%, #1B2131 0%, #07080C 70%); color:#EDE6D6; }
.ms-watch__nav{ position:absolute; inset:0 0 auto; display:flex; align-items:center; gap:3cqw; padding:2.6cqw 4cqw; font-size:1.25cqw; letter-spacing:.12em; text-transform:uppercase; color:#A7A08F; z-index:5; background:linear-gradient(#07080C, rgba(7,8,12,0)); }
.ms-watch__nav b{ margin-right:auto; font-family:'Cormorant Garamond', Georgia, serif; font-size:1.9cqw; letter-spacing:.3em; color:#E8D5A6; font-weight:500; }
.ms-watch__copy{ position:absolute; left:4cqw; top:22%; width:38%; z-index:2; }
.ms-watch__panel{ position:absolute; inset:0 0 auto; opacity:0; }
.ms-watch__panel small{ color:#C8A96A; margin-bottom:1.4cqw; }
.ms-watch__panel strong{ display:block; font-family:'Cormorant Garamond', Georgia, serif; font-weight:500; font-size:4.4cqw; line-height:1.02; letter-spacing:-.01em; }
.ms-watch__panel em{ display:block; font-style:normal; margin-top:1.6cqw; color:#A7A08F; font-size:1.5cqw; }
.ms-watch__cta{ position:absolute; top:28cqw; left:0; padding:1.1cqw 2.2cqw; border:1px solid #C8A96A; color:#E8D5A6; font-size:1.2cqw; letter-spacing:.16em; text-transform:uppercase; }
.ms-watch__gl{ position:absolute; right:0; top:0; width:62%; height:100%; display:block; }

/* 2 · Pizzeria */
.ms-pizza{ background:radial-gradient(70% 90% at 70% 60%, #2A1A12 0%, #0E0907 70%); color:#F3E7D6; }
.ms-pizza__fire{ position:absolute; inset:0; opacity:0; background:radial-gradient(60% 70% at 70% 100%, rgba(255,120,30,.75) 0%, rgba(200,60,10,.35) 40%, transparent 75%); mix-blend-mode:screen; }
.ms-pizza__gl{ position:absolute; right:0; top:0; width:62%; height:100%; display:block; }
.ms-pizza__video{ object-fit:cover; }
.ms-pizza.is-nogl .ms-pizza__gl{
  background:url(../img/concept-pizza.webp) 50% 60% / contain no-repeat;
  -webkit-mask-image:radial-gradient(closest-side, #000 72%, transparent); mask-image:radial-gradient(closest-side, #000 72%, transparent);
}
.ms-pizza__nav{ position:absolute; inset:0 0 auto; z-index:3; display:flex; align-items:center; gap:2.6cqw; padding:2.4cqw 4cqw; font-size:1.2cqw; letter-spacing:.14em; text-transform:uppercase; color:#B8A58E; }
.ms-pizza__nav b{ margin-right:auto; font-family:'Cormorant Garamond', Georgia, serif; font-weight:500; font-size:2.3cqw; letter-spacing:.12em; color:#F3E7D6; }
.ms-pizza__nav b i{ font-style:normal; color:#FF7A1A; margin-left:.5cqw; font-family:var(--font-mono); font-size:1.3cqw; letter-spacing:.05em; vertical-align:super; }
.ms-pizza__btn{ padding:.8cqw 1.8cqw; border:1px solid #FF7A1A; color:#FFB37A; }
.ms-pizza__copy{ position:absolute; left:4cqw; top:17%; width:40%; height:72%; z-index:2; }
.ms-pizza__panel{ position:absolute; inset:0 0 auto; opacity:0; }
.ms-pizza__panel small{ color:#FF7A1A; margin-bottom:1.4cqw; font-weight:600; }
.ms-pizza__panel strong{ display:block; font-family:'Cormorant Garamond', Georgia, serif; font-weight:500; font-size:5cqw; line-height:.98; letter-spacing:-.01em; }
.ms-pizza__panel strong i{ color:#FF9A4A; }
.ms-pizza__panel > em{ display:block; font-style:normal; margin-top:1.6cqw; color:#B8A58E; font-size:1.5cqw; max-width:32ch; }
.ms-pizza__sizes{ display:flex; gap:1cqw; margin-top:2.2cqw; }
.ms-pizza__sizes span{ padding:.8cqw 1.6cqw; border-radius:4cqw; border:1px solid rgba(243,231,214,.25); font-size:1.25cqw; transition:background .3s, color .3s, border-color .3s; }
.ms-pizza__sizes span.is-on{ background:#FF7A1A; border-color:#FF7A1A; color:#1A0E07; font-weight:700; }
.ms-pizza__tops{ display:grid; grid-template-columns:1fr 1fr; gap:.9cqw; margin-top:1.6cqw; }
.ms-pizza__tops span{ display:flex; justify-content:space-between; align-items:center; padding:1cqw 1.3cqw; border-radius:1cqw; background:rgba(243,231,214,.06); border:1px solid rgba(243,231,214,.12); font-size:1.2cqw; transition:background .3s, border-color .3s; }
.ms-pizza__tops span i{ font-style:normal; color:#B8A58E; }
.ms-pizza__tops span.is-on{ background:rgba(255,122,26,.18); border-color:#FF7A1A; }
.ms-pizza__tops span.is-on i{ color:#FFB37A; }
.ms-pizza__total{ display:flex; justify-content:space-between; align-items:baseline; margin-top:1.8cqw; padding-top:1.4cqw; border-top:1px solid rgba(243,231,214,.15); font-size:1.3cqw; color:#B8A58E; }
.ms-pizza__total b{ font-size:2.4cqw; color:#F3E7D6; font-variant-numeric:tabular-nums; }
.ms-pizza__total em, .ms-pizza__order em{ font-style:normal; display:inline-block; }
.ms-pizza__facts{ display:flex; gap:2.6cqw; margin-top:3cqw; }
.ms-pizza__facts span{ font-size:1.15cqw; color:#B8A58E; text-transform:uppercase; letter-spacing:.08em; line-height:1.3; }
.ms-pizza__facts b{ display:block; font-family:var(--font-display); font-size:3.4cqw; letter-spacing:-.04em; color:#FF9A4A; text-transform:none; }
.ms-pizza__order{ display:inline-block; margin-top:3cqw; padding:1.5cqw 3cqw; border-radius:5cqw; background:#FF7A1A; color:#1A0E07; font-weight:700; font-size:1.5cqw; transition:background .3s; }
.ms-pizza__order.is-done{ background:#4ADE80; }
.ms-pizza__alt{ display:block; margin-top:1.4cqw; color:#B8A58E; font-size:1.25cqw; text-decoration:underline; text-underline-offset:.4cqw; }

/* 3 · Électricien */
.ms-elec{ background:#070B18; color:#EEF1F7; }
.ms-elec__gl{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.ms-elec__nav{ position:absolute; inset:0 0 auto; z-index:3; display:flex; align-items:center; gap:2.2cqw; padding:2cqw 3.4cqw; font-size:1.1cqw; letter-spacing:.08em; text-transform:uppercase; color:#AEB6C8; border-bottom:1px solid rgba(255,255,255,.08); background:linear-gradient(rgba(7,11,24,.85), rgba(7,11,24,0)); }
.ms-elec__nav b{ margin-right:auto; display:flex; align-items:center; gap:.9cqw; font-family:var(--font-display); font-weight:800; font-size:1.9cqw; letter-spacing:.06em; color:#fff; text-transform:none; }
.ms-elec__nav b i{ width:1.6cqw; height:2.2cqw; background:#FFC21A; clip-path:polygon(55% 0, 10% 58%, 45% 58%, 35% 100%, 90% 38%, 55% 38%); }
.ms-elec__nav b small{ display:block; font-family:var(--font-mono); font-weight:400; font-size:.85cqw; letter-spacing:.12em; color:#8A93A8; text-transform:uppercase; margin-left:.4cqw; }
.ms-elec__nav span.is-on{ color:#fff; border-bottom:1px solid #FFC21A; padding-bottom:.3cqw; }
.ms-elec__btn{ padding:.7cqw 1.6cqw; background:#FFC21A; color:#111; font-weight:700; border-radius:.3cqw; }
.ms-elec__copy{ position:absolute; left:4cqw; bottom:13cqw; width:44%; height:13cqw; z-index:2; }
.ms-elec__panel{ position:absolute; left:0; right:0; bottom:0; opacity:0; }
.ms-elec__panel small{ display:flex; align-items:center; gap:.8cqw; color:#FFC21A; margin-bottom:1cqw; font-family:var(--font-mono); font-size:1cqw; }
.ms-elec__panel small::before{ content:""; width:.6cqw; height:.6cqw; border-radius:50%; background:#FFC21A; box-shadow:0 0 1cqw #FFC21A; }
.ms-elec__panel strong{ display:block; font-family:var(--font-display); font-weight:800; font-size:5cqw; line-height:.95; letter-spacing:-.045em; text-shadow:0 .4cqw 2cqw rgba(0,0,0,.6); }
.ms-elec__stats{ position:absolute; left:4cqw; right:4cqw; bottom:3.4cqw; z-index:2; display:grid; grid-template-columns:repeat(4,1fr); gap:2cqw; padding-top:1.6cqw; border-top:1px solid rgba(255,255,255,.12); }
.ms-elec__stats b{ display:block; font-family:var(--font-display); font-weight:800; font-size:2.4cqw; letter-spacing:-.03em; color:#FFC21A; line-height:1; }
.ms-elec__stats span{ font-size:1cqw; color:#AEB6C8; }
.ms-elec__scenes{ position:absolute; right:4cqw; bottom:13cqw; z-index:3; width:30%; padding:1.8cqw; border-radius:1.4cqw; background:rgba(12,17,32,.78); border:1px solid rgba(255,255,255,.1); backdrop-filter:blur(8px); opacity:0; }
.ms-elec__scenes small{ font-family:var(--font-mono); font-size:.95cqw; color:#8A93A8; letter-spacing:.12em; text-transform:uppercase; }
.ms-elec__btns{ display:grid; grid-template-columns:repeat(3,1fr); gap:.8cqw; margin-top:1.2cqw; }
.ms-elec__btns span{ display:flex; flex-direction:column; gap:.6cqw; padding:1cqw; border-radius:.9cqw; border:1px solid rgba(255,255,255,.12); font-size:1.1cqw; color:#C9CFDB; transition:background .3s, border-color .3s, color .3s; }
.ms-elec__btns i{ width:1.6cqw; height:2.4cqw; border-radius:.4cqw; border:1px solid currentColor; position:relative; }
.ms-elec__btns i::after{ content:""; position:absolute; left:25%; right:25%; top:20%; height:30%; border-radius:.2cqw; background:currentColor; }
.ms-elec__btns span.is-on{ background:rgba(255,194,26,.14); border-color:#FFC21A; color:#fff; }
.ms-elec__btns span.is-on i{ color:#FFC21A; }
.ms-elec__dim{ display:flex; align-items:center; gap:1cqw; margin-top:1.4cqw; font-size:1cqw; color:#8A93A8; }
.ms-elec__dim em{ flex:1; height:.4cqw; border-radius:1cqw; background:rgba(255,255,255,.12); position:relative; }
.ms-elec__dim em i{ position:absolute; left:0; top:0; bottom:0; width:0; border-radius:inherit; background:#FFC21A; }
.ms-elec__dim b{ color:#fff; min-width:4cqw; text-align:right; font-variant-numeric:tabular-nums; }

/* 4 · Expérience immersive */
.ms-igloo{ background:#05040b; color:#ECE8FF; }
.ms-igloo__gl{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.ms-igloo__brand{ position:absolute; left:3.4cqw; top:3cqw; z-index:2; font-family:var(--font-mono); font-size:1cqw; line-height:1.5; color:#9C95BE; }
.ms-igloo__brand b{ display:block; font-family:var(--font-display); font-weight:800; font-size:2.4cqw; letter-spacing:.1em; color:#fff; margin-bottom:.8cqw; }
.ms-igloo__manifesto{ position:absolute; right:3.4cqw; top:3cqw; z-index:2; width:24%; text-align:right; font-family:var(--font-mono); font-size:1cqw; line-height:1.5; color:#B9B2DC; }
.ms-igloo__manifesto small{ font-size:1cqw; letter-spacing:.1em; margin-bottom:.8cqw; color:#6EE7FF; }
.ms-igloo__manifesto p{ margin:0; }
.ms-igloo__caption{ position:absolute; left:0; right:0; bottom:4cqw; z-index:2; text-align:center; font-family:var(--font-mono); font-size:1.4cqw; letter-spacing:.2em; text-transform:uppercase; color:#fff; text-shadow:0 0 1.6cqw rgba(167,139,250,.8); }
.ms-igloo__caption span{ position:absolute; left:0; right:0; bottom:0; opacity:0; }
.ms-igloo__hint{ position:absolute; left:3.4cqw; bottom:3cqw; z-index:2; font-family:var(--font-mono); font-size:.95cqw; color:#7C75A0; letter-spacing:.1em; text-transform:uppercase; }

/* --------------------------------------------------------------------------
   L'agence
   -------------------------------------------------------------------------- */
.vw-agency{ background:var(--night); }
.vw-manifesto{
  font-family:var(--font-display); font-weight:500; font-size:clamp(1.6rem, 3.2vw, 3rem);
  line-height:1.12; letter-spacing:-.035em; margin:0; max-width:24ch; text-wrap:pretty;
}
.vw-manifesto .w{ display:inline; }
.js .vw-manifesto .w{ opacity:.16; }
.vw-agency__more{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px 64px; margin-top:56px; color:var(--muted); }
.vw-agency__more p{ margin:0; }
.vw-team{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:16px; margin-top:clamp(48px, 6vw, 80px); }
.vw-person{ margin:0; display:flex; gap:20px; align-items:flex-start; padding:22px; border-radius:20px; border:1px solid var(--line); background:var(--night-2); }
.vw-person img{ flex:none; width:76px; height:76px; border-radius:50%; object-fit:cover; object-position:50% 30%; border:2px solid var(--line-2); }
.vw-person figcaption{ min-width:0; }
.vw-person h3{ font-family:var(--font-display); font-weight:600; font-size:1.3rem; letter-spacing:-.025em; margin:0; line-height:1.2; }
.vw-person__role{ font-family:var(--font-mono); font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; color:var(--sky); }
.vw-person blockquote{ margin:10px 0 0; color:var(--muted); font-size:.98rem; line-height:1.55; }
.vw-sectors{ display:flex; flex-wrap:wrap; gap:10px; margin-top:clamp(40px, 5vw, 64px); }
.vw-sectors span{
  padding:12px 20px; border-radius:999px; border:1px solid var(--line-2); font-size:.98rem;
  transition:background .3s, color .3s, border-color .3s;
}
.vw-sectors span:hover{ background:var(--text); color:var(--ink); border-color:var(--text); }
@media (max-width:760px){
  .vw-agency__more{ grid-template-columns:1fr; }
  .vw-team{ grid-template-columns:1fr; }
}

/* --------------------------------------------------------------------------
   FAQ
   -------------------------------------------------------------------------- */
.vw-faq{ background:var(--night); }
.vw-faq__grid{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:48px 80px; }
.vw-faq__intro{ position:sticky; top:120px; align-self:start; }
.vw-faq__intro a{ color:var(--sky); }
.vw-qa{ border-bottom:1px solid var(--line); }
.vw-qa:first-child{ border-top:1px solid var(--line); }
.vw-qa summary{
  list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding:26px 0; font-family:var(--font-display); font-weight:500; font-size:clamp(1.15rem, 1.8vw, 1.5rem); letter-spacing:-.02em;
  transition:color .25s;
}
.vw-qa summary::-webkit-details-marker{ display:none; }
.vw-qa summary:hover{ color:var(--sky); }
.vw-qa__ic{ position:relative; flex:none; width:36px; height:36px; border-radius:50%; border:1px solid var(--line-2); transition:background .3s, transform .5s var(--ease-out); }
.vw-qa__ic::before, .vw-qa__ic::after{ content:""; position:absolute; left:50%; top:50%; width:12px; height:1.5px; margin:-.75px 0 0 -6px; background:currentColor; }
.vw-qa__ic::after{ transform:rotate(90deg); transition:transform .4s var(--ease-out); }
.vw-qa[open] .vw-qa__ic{ background:var(--blue); border-color:var(--blue); transform:rotate(180deg); }
.vw-qa[open] .vw-qa__ic::after{ transform:rotate(0); }
.vw-qa__a{ overflow:hidden; }
.vw-qa__a p{ margin:0; padding:0 56px 28px 0; color:var(--muted); }
@media (max-width:860px){
  .vw-faq__grid{ grid-template-columns:1fr; }
  .vw-faq__intro{ position:static; }
  .vw-qa__a p{ padding-right:0; }
}

/* --------------------------------------------------------------------------
   Contact
   -------------------------------------------------------------------------- */
.vw-contact{ position:relative; background:var(--night); overflow:hidden; isolation:isolate; }
.vw-contact__glow{
  position:absolute; left:50%; top:30%; width:120vw; aspect-ratio:2/1; transform:translate(-50%,-50%); z-index:-1;
  background:radial-gradient(closest-side, rgba(47,107,255,.35), transparent 70%);
  pointer-events:none;
}
.vw-contact__big{
  font-family:var(--font-display); font-weight:600; font-size:clamp(3.4rem, 14vw, 15rem); line-height:.85; letter-spacing:-.065em;
  margin:0 0 clamp(40px, 6vw, 80px); white-space:nowrap;
}
.vw-contact__big span{ display:inline-block; }
.vw-contact__grid{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:48px 80px; align-items:start; }
.vw-contact .vw-h2{ font-size:clamp(1.9rem, 3.2vw, 3rem); margin-top:.3em; }
.vw-promises{ list-style:none; padding:0; margin:32px 0 0; display:grid; gap:14px; }
.vw-promises li{ display:flex; align-items:center; gap:14px; }
.vw-promises svg{ width:22px; height:22px; color:var(--ok); flex:none; }
.vw-direct{ margin-top:40px; padding-top:28px; border-top:1px solid var(--line); display:grid; gap:12px; }
.vw-direct small{ font-family:var(--font-mono); font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; color:var(--dim); }
.vw-direct a{ display:inline-flex; align-items:center; gap:10px; font-family:var(--font-display); font-size:clamp(1.3rem, 2.2vw, 1.8rem); letter-spacing:-.03em; text-decoration:none; width:max-content; max-width:100%; }
.vw-direct a:hover{ color:var(--sky); }
.vw-direct svg{ width:22px; height:22px; color:var(--ok); }

.vw-form{
  position:relative; padding:clamp(24px, 3.4vw, 44px); border-radius:28px;
  border:1px solid var(--line-2); background:rgba(10,18,38,.7); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  box-shadow:0 50px 120px -50px rgba(47,107,255,.6), inset 0 1px 0 rgba(255,255,255,.06);
}
.vw-form__row{ display:grid; grid-template-columns:1fr 1fr; gap:0 20px; }
.vw-field{ position:relative; margin-bottom:18px; }
.vw-field label{ display:block; font-size:.88rem; font-weight:500; color:var(--muted); margin-bottom:8px; }
.vw-field label i{ font-style:normal; color:var(--sky); }
.vw-field input, .vw-field select, .vw-field textarea{
  width:100%; min-height:52px; padding:14px 16px; border-radius:14px; font:inherit; font-size:16px; color:var(--text);
  background:rgba(5,9,20,.6); border:1px solid var(--line-2); outline:none;
  transition:border-color .25s, box-shadow .25s, background .25s;
}
.vw-field select{ appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%239AA9C3' stroke-width='1.6'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 16px center; padding-right:40px; }
.vw-field select option{ background:var(--night-2); }
.vw-field textarea{ min-height:130px; resize:vertical; }
.vw-field input::placeholder, .vw-field textarea::placeholder{ color:var(--dim); }
.vw-field input:focus, .vw-field select:focus, .vw-field textarea:focus{ border-color:var(--blue-2); box-shadow:0 0 0 4px rgba(91,140,255,.2); background:rgba(5,9,20,.85); }
.vw-error{ display:none; margin-top:6px; font-size:.84rem; color:var(--danger); }
.vw-field.has-error input, .vw-field.has-error textarea{ border-color:var(--danger); }
.vw-field.has-error .vw-error{ display:block; }
.vw-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.vw-form__submit{ width:100%; justify-content:center; margin-top:6px; min-height:58px; font-size:1.05rem; }
.vw-form__submit:disabled{ opacity:.7; cursor:progress; }
.vw-form__fine{ margin:14px 0 0; text-align:center; font-size:.84rem; color:var(--dim); }
.vw-form__legal{ margin:12px 0 0; font-size:.82rem; line-height:1.55; color:var(--dim); }
.vw-form__legal a{ color:var(--sky); }
.vw-form__legal i{ font-style:normal; color:var(--sky); }
.vw-sent{ display:none; text-align:center; padding:64px 32px; }
.vw-sent.is-on{ display:block; }
.vw-sent__mark{ width:72px; height:72px; margin:0 auto 20px; border-radius:50%; display:grid; place-items:center; background:rgba(74,222,128,.14); color:var(--ok); }
.vw-sent h3{ font-family:var(--font-display); font-size:2rem; letter-spacing:-.03em; margin:0 0 .3em; }
.vw-sent p{ color:var(--muted); margin:0; }
@media (max-width:960px){ .vw-contact__grid{ grid-template-columns:1fr; } }
@media (max-width:560px){ .vw-form__row{ grid-template-columns:1fr; } }

/* --------------------------------------------------------------------------
   Pied de page
   -------------------------------------------------------------------------- */
.vw-footer{ position:relative; background:var(--night-2); border-top:1px solid var(--line); padding:clamp(64px, 8vw, 110px) 0 28px; overflow:hidden; }
.vw-footer__top{ display:grid; grid-template-columns:minmax(0,1.4fr) repeat(3, minmax(0,1fr)); gap:40px; }
.vw-footer__bl p{ color:var(--muted); max-width:36ch; margin:18px 0 0; font-size:.96rem; }
.vw-footer h2{ font-family:var(--font-mono); font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; color:var(--dim); font-weight:500; margin:0 0 16px; }
.vw-footer ul{ list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.vw-footer ul a{ padding:4px 0; text-decoration:none; color:var(--muted); display:inline-flex; align-items:center; gap:8px; transition:color .2s; }
.vw-footer ul a:hover{ color:var(--text); }
.vw-footer__word{
  font-family:var(--font-display); font-weight:600; font-size:clamp(4rem, 19.5vw, 22rem); line-height:.8; letter-spacing:-.075em;
  margin:clamp(56px, 8vw, 110px) 0 24px; white-space:nowrap; text-align:center;
  color:transparent; -webkit-text-stroke:1px var(--line-2);
  background:linear-gradient(180deg, rgba(142,197,255,.22), transparent 85%); -webkit-background-clip:text; background-clip:text;
}
.vw-footer__bottom{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px; padding-top:24px; border-top:1px solid var(--line); font-size:.86rem; color:var(--dim); }
.vw-legal{ display:flex; flex-wrap:wrap; gap:8px 20px; }
.vw-legal a{ text-decoration:none; color:var(--dim); display:inline-block; padding:6px 0; }
.vw-legal a:hover{ color:var(--text); }
@media (max-width:860px){ .vw-footer__top{ grid-template-columns:1fr 1fr; } .vw-footer__bl{ grid-column:1/-1; } }

/* Pastille flottante vers le formulaire */
.vw-jump{
  position:fixed; right:16px; bottom:16px; z-index:95;
  display:inline-flex; align-items:center; gap:8px; min-height:48px; padding:0 20px; border-radius:999px;
  background:var(--blue); color:#fff; font-weight:600; text-decoration:none;
  box-shadow:0 14px 40px -10px rgba(47,107,255,.9);
  transform:translateY(160%); transition:transform .5s var(--ease-out);
}
.vw-jump.is-on{ transform:none; }

/* Barre de progression de lecture */
.vw-progress{ position:fixed; left:0; top:0; height:2px; width:100%; z-index:101; background:linear-gradient(90deg, var(--blue), var(--sky)); transform-origin:left; transform:scaleX(0); pointer-events:none; }

/* Bandeau cookies : adaptation au thème sombre */
.vw-cc{ background:var(--night-3) !important; color:var(--text) !important; border-color:var(--line-2) !important; box-shadow:0 30px 80px -20px rgba(0,0,0,.8) !important; }
.vw-cc p{ color:var(--muted) !important; }
.vw-cc p a{ color:var(--sky) !important; }
.vw-cc__no, .vw-cc__ok{ background:var(--blue) !important; border-color:var(--blue) !important; color:#fff !important; }

/* --------------------------------------------------------------------------
   Téléphone : garantie animée, carrousel compact, espacements resserrés
   -------------------------------------------------------------------------- */
@media (max-width:960px){
  .vw-guarantee__pin{ padding:88px 0 24px; }
  .vw-meter__value{ font-size:clamp(3.6rem, 18vw, 5rem); }
  .js .vw-steps li{ opacity:1; }
}
@media (max-width:760px){
  /* le choix du concept se fait juste au-dessus de la maquette */
  .js .vw-carousel{ display:flex; flex-direction:column; }
  .js .vw-carousel__stage{ min-width:0; width:100%; grid-template-columns:minmax(0,1fr); }
  .js .vw-carousel__nav{ order:-1; margin:0 0 18px; padding:0 0 14px; border-top:0; border-bottom:1px solid var(--line); gap:10px; }
  .vw-carousel__cur{ font-size:1.5rem; }
  .vw-arrow{ width:46px; height:46px; }
  .vw-arrow svg{ width:20px; height:20px; }
  .vw-carousel__tabs{ gap:2px; }
  .vw-carousel__tabs button{ padding:8px 12px; font-size:.86rem; }
  .vw-demo{ gap:22px; }
  .vw-demo h3{ font-size:1.55rem; margin:.3em 0 .35em; }
  .vw-demo p{ font-size:.95rem; line-height:1.55; }
  .vw-demo__tag{ font-size:.72rem; }
  .vw-demo__chips{ flex-wrap:nowrap; gap:5px; margin-top:16px; overflow-x:auto; scrollbar-width:none; }
  .vw-demo__chips::-webkit-scrollbar{ display:none; }
  .vw-demo__chips li{ flex:none; padding:4px 8px; font-size:.68rem; white-space:nowrap; }
  .vw-work__cta{ margin-top:48px; }

  .vw-section{ padding:72px 0; }
  .vw-agency{ padding-bottom:36px; }
  .vw-faq{ padding-top:48px; padding-bottom:24px; }
  .vw-contact{ padding-top:40px; }
  .vw-contact__big{ margin-bottom:20px; }
  .vw-sectors{ gap:6px; margin-top:32px; }
  .vw-sectors span{ padding:6px 12px; font-size:.82rem; }
}

/* --------------------------------------------------------------------------
   Mouvement réduit : tout est lisible, rien ne bouge
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .vw-grain{ display:none; }
  .js .vw-steps li, .js .vw-manifesto .w{ opacity:1; }
}
