/* Contest Inventive Lumière — feuille de style commune */

@font-face{
  font-family:"Montserrat";
  src:url("/assets/fonts/montserrat-var.woff2") format("woff2");
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}

:root{
  --bg:#07070a;
  --bg-soft:#0c0c11;
  --ink:#f4f1ea;
  --ink-dim:rgba(244,241,234,.72);
  --ink-mid:rgba(244,241,234,.55);
  --ink-faint:rgba(244,241,234,.38); /* décoratif uniquement */
  --hairline:rgba(244,241,234,.12);
  --warm:#ffd9a0;
  --warm-deep:#f5b95c;
  --stage:#f5871f;
  --archi:#28a7f0;
  --dyna1:#7a3ff2;
  --dyna2:#e0345c;
  --commercial:#f0503c;
  --font:"Montserrat",system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
@media (prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth}
}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  font-weight:400;
  line-height:1.65;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--warm);color:#161006}
:is(a,button,summary):focus-visible{
  outline:2px solid var(--warm);outline-offset:3px;border-radius:4px;
}
.sr-only{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
}
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--warm);color:#161006;font-weight:700;font-size:.85rem;
  padding:.7rem 1.2rem;border-radius:0 0 8px 0;text-decoration:none;
}
.skip-link:focus{left:0}

/* ---------- grain + spotlight ---------- */
.grain{
  position:fixed;inset:-50%;width:200%;height:200%;
  pointer-events:none;z-index:60;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 7s steps(8) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}25%{transform:translate(-2%,3%)}
  50%{transform:translate(3%,-2%)}75%{transform:translate(-3%,-3%)}
}
/* halo déplacé en transform (compositor-only), jamais de repaint */
.spotlight{
  position:fixed;left:-560px;top:-560px;width:1120px;height:1120px;
  pointer-events:none;z-index:1;border-radius:50%;
  background:radial-gradient(circle,rgba(255,217,160,.07),rgba(255,217,160,.025) 42%,transparent 68%);
  transform:translate3d(68vw,32vh,0);
  will-change:transform;
}
@media (hover:none),(prefers-reduced-motion:reduce){.spotlight{display:none}}

/* ---------- header ---------- */
header{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.3rem clamp(1.2rem,4vw,3.5rem);
  background:linear-gradient(to bottom,rgba(7,7,10,.92),rgba(7,7,10,.55) 65%,transparent);
  transition:background .35s,padding .35s;
}
header.scrolled{
  background:rgba(7,7,10,.9);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--hairline);
  padding-top:.85rem;padding-bottom:.85rem;
}
.brand{display:inline-flex;align-items:center;flex:none}
.brand img{display:block;width:auto;height:38px}

/* Sélecteur de langues — desktop : rail souligné */
.langs{display:flex;align-items:center;gap:.15rem}
.langs a{
  position:relative;display:inline-grid;place-items:center;
  min-width:44px;min-height:44px;padding:0 .35rem;
  color:var(--ink-mid);text-decoration:none;
  font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  transition:color .25s;
}
.langs a::after{
  content:"";position:absolute;left:50%;bottom:9px;transform:translateX(-50%) scaleX(0);
  width:1.15em;height:2px;border-radius:2px;background:var(--warm);
  box-shadow:0 0 8px rgba(255,217,160,.7);
  transition:transform .3s cubic-bezier(.22,1,.36,1);transform-origin:center;
}
.langs a:hover{color:var(--ink)}
.langs a:hover::after{transform:translateX(-50%) scaleX(.6)}
.langs a[aria-current]{color:var(--warm)}
.langs a[aria-current]::after{transform:translateX(-50%) scaleX(1)}

/* Sélecteur de langues — mobile : menu déroulant natif */
.lang-menu{display:none;position:relative}
.lang-menu summary{
  list-style:none;cursor:pointer;user-select:none;-webkit-user-select:none;
  display:inline-flex;align-items:center;gap:.5rem;
  min-height:44px;padding:.35rem .9rem;
  font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink);border:1px solid var(--hairline);border-radius:10px;
  background:rgba(12,12,17,.72);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.lang-menu summary::-webkit-details-marker{display:none}
.lang-menu summary::after{
  content:"";width:7px;height:7px;flex:none;margin-top:-3px;
  border-right:1.5px solid var(--warm);border-bottom:1.5px solid var(--warm);
  transform:rotate(45deg);transition:transform .25s;
}
.lang-menu[open] summary::after{transform:rotate(-135deg);margin-top:3px}
.lang-menu ul{
  list-style:none;position:absolute;right:0;top:calc(100% + 8px);min-width:190px;
  background:rgba(12,12,17,.96);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border:1px solid var(--hairline);border-radius:12px;padding:.4rem;
  box-shadow:0 18px 50px rgba(0,0,0,.55);
}
.lang-menu ul a{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.6rem .8rem;border-radius:8px;text-decoration:none;
  color:var(--ink-dim);font-size:.85rem;font-weight:500;
}
.lang-menu ul a small{
  font-size:.62rem;font-weight:600;letter-spacing:.16em;color:var(--ink-mid);
}
.lang-menu ul a:hover{background:rgba(244,241,234,.06);color:var(--ink)}
.lang-menu ul a[aria-current]{color:var(--warm)}
.lang-menu ul a[aria-current]::before{content:"●";font-size:.5rem;order:2;color:var(--warm)}

/* ---------- hero ---------- */
.hero{
  min-height:100svh;position:relative;z-index:2;
  display:flex;flex-direction:column;justify-content:center;
  padding:7.5rem clamp(1.2rem,4vw,3.5rem) 4rem;
}
.hero-beams{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.beam{
  position:absolute;top:-12%;width:200px;height:130%;
  background:linear-gradient(to bottom,var(--c),transparent 72%);
  opacity:0;filter:blur(34px);
  transform:rotate(var(--r)) scaleY(.6);transform-origin:top center;
  animation:beam-on 2.6s cubic-bezier(.22,1,.36,1) forwards var(--d),
            beam-sway 11s ease-in-out infinite calc(var(--d) + 2.6s);
}
@keyframes beam-on{from{opacity:0;transform:rotate(var(--r)) scaleY(.2)}to{opacity:var(--o);transform:rotate(var(--r)) scaleY(1)}}
@keyframes beam-sway{
  0%,100%{transform:rotate(var(--r)) scaleY(1)}
  50%{transform:rotate(calc(var(--r) + 3.5deg)) scaleY(1.04)}
}
.b1{left:6%;--c:rgba(245,135,31,.16);--r:14deg;--d:.3s;--o:1}
.b2{left:30%;--c:rgba(40,167,240,.13);--r:-9deg;--d:.75s;--o:1}
.b3{left:56%;--c:rgba(122,63,242,.14);--r:8deg;--d:.55s;--o:1}
.b4{left:78%;--c:rgba(224,52,92,.12);--r:-13deg;--d:1s;--o:1}

.eyebrow{
  display:inline-flex;align-items:center;flex-wrap:wrap;gap:.9rem;
  font-size:.76rem;font-weight:600;letter-spacing:.26em;text-transform:uppercase;
  color:var(--warm);margin-bottom:1.8rem;
  opacity:0;animation:rise 1s cubic-bezier(.22,1,.36,1) .15s forwards;
}
/* filet aux 4 couleurs d'univers — teaser de marque */
.eyebrow::before{
  content:"";width:3rem;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--stage),var(--archi),var(--dyna1),var(--commercial));
}
.eyebrow .was{color:var(--ink-mid);font-weight:500}

h1{
  line-height:1;letter-spacing:-.02em;
  font-size:clamp(2.4rem,6.4vw,5.8rem);
  max-width:16ch;
}
h1 span{display:block;opacity:0;animation:rise 1.1s cubic-bezier(.22,1,.36,1) forwards}
h1 .sr-only{display:inline;animation:none}
h1 .l1{font-weight:800;letter-spacing:-.03em;animation-delay:.3s}
h1 .l2{
  font-weight:800;letter-spacing:-.03em;
  color:transparent;-webkit-text-stroke:1.5px rgba(244,241,234,.55);
  animation-delay:.45s;margin-left:clamp(0px,6vw,5.5rem);
}
@supports not (-webkit-text-stroke:1px black){
  h1 .l2{color:var(--ink-dim)}
}
h1 .l3{
  font-weight:800;letter-spacing:-.03em;animation-delay:.6s;
  background:linear-gradient(100deg,#fff3dd 0%,var(--warm) 45%,var(--warm-deep) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 24px rgba(255,217,160,.32));
}
@keyframes rise{from{opacity:0;transform:translateY(38px)}to{opacity:1;transform:translateY(0)}}

.hero-foot{
  margin-top:2.8rem;display:flex;flex-wrap:wrap;align-items:flex-end;gap:2.2rem;
  justify-content:space-between;
  opacity:0;animation:rise 1s cubic-bezier(.22,1,.36,1) .85s forwards;
}
.hero-intro{max-width:46ch;color:var(--ink-dim);font-size:1rem;font-weight:400}
.hero-intro strong{color:var(--ink);font-weight:600}
.hero-meta{
  display:flex;flex-wrap:wrap;gap:.9rem 2.2rem;font-size:.68rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-mid);font-weight:600;
}
.hero-meta div{white-space:nowrap}
.hero-meta div span{
  display:block;color:var(--ink);font-size:1.55rem;letter-spacing:.02em;font-weight:300;
}
/* ---------- la Poursuite : lyre asservie, moitié droite du hero ---------- */
/* Règle anti-kitsch : s'il faut « plus de lumière », élargir le cône — JAMAIS monter les opacités (fill ≤ .85, core ≤ .55). */
.hero-rig{
  --pan:-14deg;--gel:#ffd9a0;--gel2:#ffd9a0;
  --ig-u:.9;--ig-s:.25;--igw0:0;--igw1:0;--igw2:0;--igw3:0;
  position:absolute;top:0;right:0;width:50vw;height:100svh;
  display:none;pointer-events:none;z-index:1;overflow:hidden;
  contain:layout style;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 14%);
          mask-image:linear-gradient(to right,transparent,#000 14%);
}
.hero-rig[data-gel="stage"]{--gel:var(--stage);--gel2:#ffb35c}
.hero-rig[data-gel="archi"]{--gel:var(--archi);--gel2:#7fd0ff}
.hero-rig[data-gel="dyna"]{--gel:var(--dyna1);--gel2:var(--dyna2)}
.hero-rig[data-gel="commercial"]{--gel:var(--commercial);--gel2:#ff9a5c}

.rig-truss{position:absolute;top:64px;left:3%;width:94%;height:44px;opacity:.9}
.rig-fixture{position:absolute;top:100px;left:calc(52% - 26px);width:52px;height:64px}
.rig-fixture svg{display:block;width:100%;height:100%;overflow:visible}
.rig-head{transform:rotate(var(--pan));transform-box:view-box;transform-origin:26px 14px;will-change:transform}
.rig-lens{fill:var(--gel);transition:fill .45s}

.rig-cone{
  /* pivote autour du MÊME axe que la tête de la lyre (fourche, y=114px) ;
     le clip démarre 32px plus bas = pile sur la lentille, qui suit le même arc */
  position:absolute;top:114px;left:52%;width:min(38vw,640px);height:130svh;
  transform:translateX(-50%) rotate(var(--pan));transform-origin:50% 0;
  clip-path:polygon(calc(50% - 10px) 32px,calc(50% + 10px) 32px,100% 100%,0 100%);
  opacity:.95;will-change:transform;
}
.rig-cone-fill,.rig-cone-core,.rig-dust{position:absolute;inset:0}
.rig-cone-fill{
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--gel) 52%,transparent) 0%,
    color-mix(in srgb,var(--gel2) 20%,transparent) 42%,
    transparent 80%);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 16%,#000 84%,transparent);
  opacity:.85;transition:background .45s;
}
.rig-cone-core{
  left:38%;right:38%;filter:blur(7px);opacity:.55;
  background:linear-gradient(180deg,color-mix(in srgb,var(--gel) 80%,#fff) 0%,transparent 58%);
  transition:background .45s;
}
.rig-dust{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cg fill='white' fill-opacity='.55'%3E%3Ccircle cx='21' cy='34' r='1.1'/%3E%3Ccircle cx='84' cy='12' r='.7'/%3E%3Ccircle cx='140' cy='58' r='1.4'/%3E%3Ccircle cx='201' cy='30' r='.8'/%3E%3Ccircle cx='245' cy='96' r='1.1'/%3E%3Ccircle cx='36' cy='120' r='.9'/%3E%3Ccircle cx='104' cy='150' r='1.3'/%3E%3Ccircle cx='176' cy='128' r='.6'/%3E%3Ccircle cx='226' cy='182' r='1'/%3E%3Ccircle cx='58' cy='204' r='1.2'/%3E%3Ccircle cx='130' cy='236' r='.8'/%3E%3Ccircle cx='190' cy='214' r='1.4'/%3E%3Ccircle cx='12' cy='250' r='.7'/%3E%3Ccircle cx='250' cy='246' r='.9'/%3E%3C/g%3E%3C/svg%3E");
  background-size:260px;opacity:.10;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 18%,#000 82%,transparent);
  animation:rigDust 13s linear infinite;
}
@keyframes rigDust{to{transform:translate3d(0,-260px,0)}}

.rig-pool{
  position:absolute;bottom:3svh;left:calc(52% - 17vw);width:34vw;height:8svh;
  border-radius:50%;opacity:.45;filter:blur(3px);
  background:radial-gradient(closest-side,color-mix(in srgb,var(--gel) 36%,transparent),transparent 70%);
  transform:translate3d(var(--pool-x,-120px),0,0) scaleX(var(--pool-sx,1.3));
  will-change:transform;transition:background .45s;
}

/* métriques monumentales — vrai texte, embrasées par le faisceau */
.rig-metric{position:absolute;pointer-events:none}
.rig-metric--u{left:4%;top:26svh}
.rig-metric--s{right:6%;top:56svh;text-align:right}
.rig-num{
  position:relative;display:inline-block;
  font-weight:800;line-height:.84;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;
  color:rgba(244,241,234,.03);
  -webkit-text-stroke:1px rgba(244,241,234,.15);
}
.rig-metric--u .rig-num{font-size:clamp(8rem,12vw,19rem)}
.rig-metric--s .rig-num{font-size:clamp(5.5rem,8.6vw,13.5rem)}
.rig-num-lit{
  position:absolute;inset:0;-webkit-text-stroke:0;
  color:color-mix(in srgb,var(--gel) 86%,#fff);
  text-shadow:0 0 26px color-mix(in srgb,var(--gel) 55%,transparent),
              0 0 90px color-mix(in srgb,var(--gel) 28%,transparent);
  transition:color .45s,text-shadow .45s;
}
.rig-metric--u .rig-num-lit{opacity:var(--ig-u)}
.rig-metric--s .rig-num-lit{opacity:var(--ig-s)}
.rig-reflect{
  display:block;transform:scaleY(-1) translateY(-.16em);filter:blur(4px);opacity:.14;
  color:color-mix(in srgb,var(--gel) 70%,#fff);
  font-weight:800;line-height:.84;letter-spacing:-.02em;font-variant-numeric:tabular-nums;
  font-size:clamp(5.5rem,8.6vw,13.5rem);
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 55%);
          mask-image:linear-gradient(to bottom,#000,transparent 55%);
}
.rig-label{
  display:flex;align-items:center;gap:.8rem;margin-top:1.2rem;
  font-size:.78rem;font-weight:300;letter-spacing:.4em;text-transform:uppercase;
  color:var(--ink-mid);white-space:nowrap;
}
.rig-metric--s .rig-label{justify-content:flex-end;margin-top:0;margin-bottom:1.1rem}
.rig-ticks{display:inline-flex;gap:.4rem}
.rig-ticks i{width:7px;height:7px;border-radius:2px}
.rig-ticks i:nth-child(1){background:var(--stage)}
.rig-ticks i:nth-child(2){background:var(--archi)}
.rig-ticks i:nth-child(3){background:var(--dyna1)}
.rig-ticks i:nth-child(4){background:var(--commercial)}

/* logos des univers en masques CSS le long du bord droit —
   couleur 100 % unifiée avec la typo : gravé par défaut, gel au passage du faisceau */
.rig-words{
  list-style:none;position:absolute;right:4%;top:17svh;
  display:flex;flex-direction:column;gap:2.6rem;align-items:flex-end;
}
.rig-words li{
  width:clamp(110px,9vw,160px);aspect-ratio:499/198;
  background-color:color-mix(in srgb,var(--gel) calc(var(--igw,0)*100%),rgba(244,241,234,.18));
  -webkit-mask:var(--m) no-repeat center/contain;
          mask:var(--m) no-repeat center/contain;
  transition:background-color .3s;
}
.rig-words .w-stage{--m:url("/assets/logo-contestage.webp");--igw:var(--igw0)}
.rig-words .w-archi{--m:url("/assets/logo-architectural.webp");--igw:var(--igw1)}
.rig-words .w-dyna{--m:url("/assets/logo-dynamic.webp");--igw:var(--igw2)}
.rig-words .w-comm{--m:url("/assets/logo-commercial.webp");--igw:var(--igw3)}

/* bouton gel */
.rig-gel{
  position:absolute;bottom:4svh;right:5%;pointer-events:auto;cursor:pointer;
  display:inline-flex;align-items:center;gap:.6rem;min-height:44px;
  padding:.6rem 1.1rem;background:rgba(12,12,17,.5);
  border:1px solid var(--hairline);border-radius:99px;
  color:var(--ink-dim);font-family:var(--font);
  font-size:.68rem;font-weight:600;letter-spacing:.24em;
  transition:border-color .3s,color .3s;
}
.rig-gel:hover{border-color:color-mix(in srgb,var(--gel) 60%,transparent);color:var(--ink)}
.rig-gel-dot{
  width:10px;height:10px;border-radius:50%;flex:none;
  background:linear-gradient(120deg,var(--gel),var(--gel2));
  box-shadow:0 0 10px color-mix(in srgb,var(--gel) 70%,transparent);
  transition:background .45s,box-shadow .45s;
}

/* séquences */
.hero-rig.is-armed .rig-cone{opacity:0}
.hero-rig.is-live .rig-cone{animation:rigStrike 1.1s linear forwards}
@keyframes rigStrike{
  0%{opacity:0}6%{opacity:.9}9%{opacity:.06}
  18%{opacity:.65}22%{opacity:.1}34%{opacity:.9}
  42%{opacity:.5}100%{opacity:.95}
}
.rig-cone.is-blink{animation:rigBlink .18s linear}
@keyframes rigBlink{0%,100%{opacity:.95}45%{opacity:.12}}
.hero-rig.is-paused .rig-dust{animation-play-state:paused}

@media (min-width:1000px){
  .hero-rig{display:block}
  .hero-meta{display:none}
}
/* bande étroite : écarter « 04 » de la colonne texte */
@media (min-width:1000px) and (max-width:1199px){
  .rig-metric--u{left:13%}
}
@media (max-width:1279px){
  .rig-words{display:none}
}

.scroll-cue{
  position:absolute;bottom:2.2rem;left:50%;transform:translateX(-50%);
  width:1px;height:64px;overflow:hidden;
}
.scroll-cue::after{
  content:"";position:absolute;left:0;top:-40%;width:1px;height:40%;
  background:linear-gradient(to bottom,transparent,var(--warm));
  animation:drop 2.2s cubic-bezier(.65,0,.35,1) infinite;
}
@keyframes drop{to{top:110%}}

/* ---------- ticker ---------- */
.ticker{
  position:relative;z-index:2;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);
  overflow:hidden;padding:1.05rem 0;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);
}
/* 2 copies identiques, largeur = 2 copies pile → -50% boucle sans couture */
.ticker-track{display:flex;width:max-content;animation:tick 32s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker span{
  font-size:.72rem;font-weight:600;letter-spacing:.34em;text-transform:uppercase;
  color:var(--ink-mid);display:flex;align-items:center;gap:3.4rem;white-space:nowrap;
  padding-right:3.4rem;
}
.ticker i{font-style:normal;color:var(--warm);font-size:.58rem}
@keyframes tick{to{transform:translateX(-50%)}}

/* ---------- univers ---------- */
.univers-section{position:relative;z-index:2;padding:clamp(4.5rem,9vw,8rem) 0 0}
.section-head{
  padding:0 clamp(1.2rem,4vw,3.5rem);margin-bottom:clamp(2.6rem,5vw,4.5rem);
  display:flex;flex-wrap:wrap;align-items:baseline;gap:1.4rem;justify-content:space-between;
}
.section-head h2{
  font-weight:800;font-size:clamp(1.9rem,4.4vw,3.6rem);
  line-height:1.08;letter-spacing:-.02em;
}
.section-head p{max-width:40ch;color:var(--ink-dim);font-size:.95rem}

.row{
  --c1:var(--warm);--c2:var(--warm);
  display:grid;grid-template-columns:minmax(3.2rem,7rem) minmax(150px,220px) 1fr auto;
  align-items:center;gap:clamp(1.2rem,3.5vw,3rem);
  padding:clamp(1.8rem,3.5vw,2.8rem) clamp(1.2rem,4vw,3.5rem);
  border-top:1px solid var(--hairline);
  text-decoration:none;color:inherit;position:relative;overflow:hidden;
  transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1);
}
/* l'état masqué n'existe que si le JS tourne (classe posée par site.js) */
.js-anim .row{opacity:0;transform:translateY(34px)}
.js-anim .row.in{opacity:1;transform:none}
.row:last-of-type{border-bottom:1px solid var(--hairline)}
.row::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(120% 190% at 0% 50%,color-mix(in srgb,var(--c1) 16%,transparent),transparent 52%),
    radial-gradient(90% 160% at 92% 50%,color-mix(in srgb,var(--c2) 10%,transparent),transparent 46%);
  opacity:0;transition:opacity .55s ease;
}
.row::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(to bottom,var(--c1),var(--c2));
  transform:scaleY(0);transform-origin:center;transition:transform .5s cubic-bezier(.22,1,.36,1);
}
.row:hover::before,.row:focus-visible::before{opacity:1}
.row:hover::after,.row:focus-visible::after{transform:scaleY(1)}
.row:focus-visible{
  outline:2px solid var(--c1);
  outline-color:color-mix(in srgb,var(--c1) 75%,white);
  outline-offset:-2px;border-radius:0;
}

.row-num{
  font-weight:300;font-size:clamp(1.5rem,2.8vw,2.2rem);letter-spacing:.04em;
  color:var(--ink-faint);transition:color .45s;
}
.row:hover .row-num{color:var(--c1)}
.row-logo img{
  display:block;width:100%;max-width:210px;height:auto;
  filter:grayscale(1) brightness(1.6) opacity(.85);
  transition:filter .5s ease,transform .5s cubic-bezier(.22,1,.36,1);
}
.row:hover .row-logo img,.row:focus-visible .row-logo img{
  filter:none;transform:translateY(-2px);
}
.row-body h3{
  font-size:clamp(1.15rem,2vw,1.55rem);font-weight:700;letter-spacing:-.01em;
  margin-bottom:.45rem;display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;
}
.row-body h3 .badge{
  font-size:.6rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--c-badge,var(--c1));
  border:1px solid color-mix(in srgb,var(--c-badge,var(--c1)) 45%,transparent);
  padding:.3rem .6rem;border-radius:99px;
}
.row-body p{color:var(--ink-dim);font-size:.93rem;max-width:62ch}
.row-cta{
  display:flex;align-items:center;gap:.8rem;white-space:nowrap;
  font-size:.76rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-mid);transition:color .4s;
}
.row:hover .row-cta{color:var(--ink)}
.row-cta i{
  width:48px;height:48px;border-radius:50%;border:1px solid var(--hairline);
  display:grid;place-items:center;font-style:normal;font-size:1.05rem;flex:none;
  transition:border-color .4s,background .4s,transform .4s cubic-bezier(.22,1,.36,1),color .4s;
}
.row:hover .row-cta i,.row:focus-visible .row-cta i{
  border-color:transparent;color:#0a0a0c;transform:translateX(6px);
  background:linear-gradient(120deg,var(--c1),var(--c2));
}
.r-stage{--c1:var(--stage);--c2:#ffb35c}
.r-archi{--c1:var(--archi);--c2:#7fd0ff}
.r-dyna{--c1:var(--dyna1);--c2:var(--dyna2);--c-badge:#a37bff}
.r-comm{--c1:var(--commercial);--c2:#ff9a5c;--c-badge:#ff8a72}

/* Univers allumés en permanence — le survol ne fait qu'intensifier */
.row::after{transform:scaleY(1)}
.row::before{opacity:.55}
.row-logo img{filter:none}
.row-num{color:var(--c1)}
.finale-links a{border-color:color-mix(in srgb,var(--h) 45%,transparent);color:var(--ink)}

/* ---------- finale ---------- */
.finale{
  position:relative;z-index:2;text-align:center;
  padding:clamp(6rem,13vw,10rem) clamp(1.2rem,4vw,3.5rem);
  overflow:hidden;
}
.finale::before{
  content:"";position:absolute;left:50%;top:-40%;transform:translateX(-50%);
  width:min(900px,120vw);height:120%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,217,160,.11),transparent 70%);
}
.finale h2{
  font-weight:800;line-height:1.14;letter-spacing:-.02em;
  font-size:clamp(1.8rem,4.6vw,3.9rem);max-width:24ch;margin:0 auto 1.6rem;
}
.finale h2 .shine{
  background:linear-gradient(100deg,#fff3dd,var(--warm) 55%,var(--warm-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 20px rgba(255,217,160,.4));
}
.finale>p{color:var(--ink-dim);max-width:56ch;margin:0 auto 3rem;font-size:1rem}
.finale-links{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center}
.finale-links a{
  color:var(--ink-dim);text-decoration:none;font-size:.76rem;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;
  border:1px solid var(--hairline);border-radius:99px;padding:.85rem 1.5rem;
  transition:color .35s,border-color .35s,box-shadow .35s,transform .35s;
}
.finale-links a:hover{
  color:var(--ink);
  border-color:var(--h);
  border-color:color-mix(in srgb,var(--h) 65%,transparent);
  box-shadow:0 0 24px color-mix(in srgb,var(--h) 28%,transparent);
  transform:translateY(-2px);
}
.f-stage{--h:var(--stage)}
.f-archi{--h:var(--archi)}
.f-dyna{--h:var(--dyna2)}
.f-comm{--h:var(--commercial)}

/* ---------- footer ---------- */
footer{
  position:relative;z-index:2;border-top:1px solid var(--hairline);
  padding:2.2rem clamp(1.2rem,4vw,3.5rem);
  display:flex;flex-wrap:wrap;gap:1.2rem 2rem;align-items:center;justify-content:space-between;
  font-size:.78rem;color:var(--ink-mid);
}
footer a{color:var(--ink-dim);text-decoration:none;transition:color .3s}
footer a:hover{color:var(--warm)}
.foot-langs{display:flex;flex-wrap:wrap;gap:1rem}
.foot-langs a[aria-current]{color:var(--warm)}

/* ---------- page mentions légales ---------- */
.legal{
  position:relative;z-index:2;max-width:760px;margin:0 auto;
  padding:9rem clamp(1.2rem,4vw,2rem) 5rem;
}
.legal h1{font-size:clamp(1.9rem,4.5vw,3rem);font-weight:800;letter-spacing:-.02em;margin-bottom:2.5rem}
.legal h2{font-size:1.05rem;font-weight:700;letter-spacing:.04em;color:var(--warm);margin:2.4rem 0 .7rem}
.legal p{color:var(--ink-dim);font-size:.95rem;margin-bottom:.8rem}
.legal a{color:var(--warm)}
.back-home{
  display:inline-flex;align-items:center;gap:.6rem;margin-top:3rem;
  color:var(--ink);text-decoration:none;font-size:.78rem;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;
  border:1px solid var(--hairline);border-radius:99px;padding:.8rem 1.4rem;
  transition:border-color .3s,box-shadow .3s;
}
.back-home:hover{border-color:rgba(255,217,160,.5);box-shadow:0 0 20px rgba(255,217,160,.18)}

/* ---------- 404 ---------- */
.notfound{
  min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;position:relative;z-index:2;padding:2rem;
}
.notfound .code{
  font-weight:300;font-size:clamp(5rem,18vw,11rem);line-height:1;
  color:transparent;-webkit-text-stroke:1px rgba(244,241,234,.4);
}
@supports not (-webkit-text-stroke:1px black){
  .notfound .code{color:var(--ink-mid)}
}
.notfound h1{font-size:clamp(1.3rem,3.5vw,2rem);font-weight:700;margin:.8rem 0 2.2rem}

/* ---------- responsive ---------- */
@media (max-width:940px){
  .row{grid-template-columns:3rem 1fr auto;grid-template-areas:"num logo cta" "num body body"}
  .row-num{grid-area:num;align-self:start}
  .row-logo{grid-area:logo}
  .row-body{grid-area:body}
  .row-cta{grid-area:cta}
  .row-cta span{display:none}
}
@media (max-width:640px){
  .langs{display:none}
  .lang-menu{display:block}
  .hero{padding-top:6.5rem}
  .row{grid-template-columns:1fr auto;grid-template-areas:"logo cta" "body body";gap:1.1rem}
  .row-num{display:none}
  .row-logo img{max-width:150px}
  .brand img{height:32px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .js-anim .row{opacity:1;transform:none}
  .scroll-cue::after{animation:none;top:30%;height:40%}
}
