*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

body {
  margin: 0;
  background: #0e0a3a;
  overflow: hidden;
  min-height: 100vh;
  min-height: 100svh;
}

/* ═══════════════════════════════════════════════
   WRAPPER + STAGE
═══════════════════════════════════════════════ */
#wrapper {
  width: 100vw;
  overflow: hidden;
}

#stage {
  width: 1920px;
  height: 822px;
  position: relative;
  transform-origin: top left;
  -webkit-user-select: none;
  user-select: none;
  touch-action: pan-y;
}

/* ═══════════════════════════════════════════════
   SLIDES — common
═══════════════════════════════════════════════ */
.slide {
  position: absolute;
  top: 0; left: 0;
  width: 1920px;
  height: 822px;
}

/* ═══════════════════════════════════════════════
   SLIDE 1 — Title card (dark purple)
═══════════════════════════════════════════════ */
#slide1 {
  background: radial-gradient(ellipse at 65% 35%, #2d1a8a 0%, #211276 45%, #180d5e 100%);
  z-index: 1;
  transition: opacity .6s ease;
}
#slide1.hide { opacity: 0; pointer-events: none; }

/* ─── Base text (white on dark) ─── */
.T {
  position: absolute;
  font-family: 'Be Vietnam Pro', Arial, sans-serif;
  font-weight: 500;
  color: #fff;
  font-size: 120px;
  line-height: 1;
  white-space: nowrap;
  opacity: 0;
}
.T.vis { opacity: 1; }

/* ─── Play icon (orange Polygon 2.svg, original size) ─── */
#playIcon {
  position: absolute;
  left: 226px; top: 145px;
  width: 79px; height: 90px;
  z-index: 10;
  animation: playAnim 2s ease-in-out infinite;
}

@keyframes playAnim {
  0%, 100% { transform: translateX(0) scale(1); opacity: 0.85; }
  50%      { transform: translateX(5px) scale(1.12); opacity: 1; }
}

/* ─── ROW 1: PNS ▬▬▬ MAASTRICHT ─── */
#tPns        { left: 350px;  top: 130px; }
#tMaastricht { left: 830px;  top: 130px; }

#dashBar {
  position: absolute;
  left: 650px; top: 186px;
  width: 0; height: 18px;
  background: #fff;
  transition: width .5s cubic-bezier(.65,0,.35,1);
}
#dashBar.on { width: 130px; }

/* ─── ROW 2 ─── */
#tDate1  { left: 226px;  top: 255px; }
#tDate2  { left: 580px;  top: 255px; }

#dashBar2 {
  position: absolute;
  left: 360px; top: 311px;
  width: 0; height: 18px;
  background: #fff;
  transition: width .5s cubic-bezier(.65,0,.35,1);
}
#dashBar2.on { width: 200px; }

.nerve-wrap {
  position: absolute;
  left: 1070px; top: 262px;
  width: 140px; height: 102px;
  opacity: 0;
  transform: scale(.2) rotate(-22deg);
  transition: opacity .5s ease, transform .52s cubic-bezier(.34,1.56,.64,1), filter .6s ease;
}
.nerve-wrap.on {
  opacity: 1;
  transform: scale(1) rotate(0deg);
  filter: drop-shadow(0 0 18px rgba(16,218,201,0.45));
}
.nerve-wrap > img { width: 100%; height: 100%; object-fit: contain; position: relative; z-index: 1; }

#nerveCanvas {
  position: absolute;
  top: -18px; left: -18px;
  width: 176px; height: 138px;
  z-index: 2; pointer-events: none;
}

.maa-wrap {
  position: absolute;
  left: 1300px; top: 267px;
  width: 338px; height: 225px;
  border-radius: 8px; overflow: hidden;
  opacity: 0;
  clip-path: inset(0 100% 0 0 round 8px);
  transition: clip-path .9s cubic-bezier(.65,0,.35,1), opacity .05s;
}
.maa-wrap.on { opacity: 1; clip-path: inset(0 0% 0 0 round 8px); }
.maa-wrap > img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ─── ROW 3 ─── */
#t2026   { left: 226px; top: 388px; }
#tDirect { left: 765px; top: 388px; }

#dot {
  position: absolute;
  left: 620px; top: 410px;
  width: 90px; height: 90px;
  opacity: 0;
  transform: scale(0);
  transition: opacity .3s, transform .48s cubic-bezier(.34,1.56,.64,1);
}
#dot.on { opacity: 1; transform: scale(1); }

/* ─── ROW 4: BEST OF + subtitle ─── */
#bestofPill {
  position: absolute;
  left: 216px; top: 540px;
  width: 590px; height: auto;
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .55s ease, transform .55s ease;
}
#bestofPill.on { opacity: 1; transform: translateY(0); }

#bestofTxt {
  position: absolute;
  left: 296px; top: 540px;
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 500;
  font-size: 100px;
  line-height: 1;
  color: #252525;
  white-space: nowrap;
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .55s ease, transform .55s ease;
}
#bestofTxt.on { opacity: 1; transform: translateY(0); }

#subImg {
  position: absolute;
  left: 1000px; top: 554px;
  height: 100px; width: auto;
  max-width: 730px;
  opacity: 0;
  transform: translateX(-14px);
  transition: opacity .52s ease, transform .52s ease;
}
#subImg.on { opacity: 1; transform: translateX(0); }

/* ─── Green triangle next to BEST OF ─── */
#bestofTri {
  position: absolute;
  left: 850px; top: 550px;
  width: 80px; height: 87px;
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .55s ease .15s, transform .55s ease .15s;
}
#bestofTri.on { opacity: 1; transform: translateY(0); }

/* ─── Decorative animated pictos ─── */
.deco {
  position: absolute;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.8s ease;
}

/* Orange triangle (right-pointing) — top right */
.deco-1 {
  left: 1560px; top: 95px;
  width: 32px; height: 36px;
  animation: floatDrift 5s ease-in-out infinite;
}
#slide1.decos .deco-1 { opacity: 0.7; }

/* Teal triangle (left-pointing) — mid right */
.deco-2 {
  left: 1700px; top: 340px;
  width: 26px; height: 30px;
  animation: floatDrift 6.5s ease-in-out infinite 0.8s;
}
#slide1.decos .deco-2 { opacity: 0.6; }

/* Red circle — bottom right */
.deco-3 {
  left: 1620px; top: 580px;
  width: 22px; height: 22px;
  animation: pulseDeco 3.5s ease-in-out infinite 0.3s;
}
#slide1.decos .deco-3 { opacity: 0.55; }

/* Neuron icon — near nerve image */
.deco-4 {
  left: 1550px; top: 160px;
  width: 44px; height: 32px;
  animation: floatY 4.5s ease-in-out infinite 0.5s;
}
#slide1.decos .deco-4 { opacity: 0.35; }

/* Small orange triangle — lower area */
.deco-5 {
  left: 1480px; top: 680px;
  width: 18px; height: 20px;
  animation: floatDrift 5.5s ease-in-out infinite 1.2s;
  transform: rotate(90deg);
}
#slide1.decos .deco-5 { opacity: 0.45; }

/* Tiny red circle — mid area */
.deco-6 {
  left: 1750px; top: 520px;
  width: 14px; height: 14px;
  animation: pulseDeco 4s ease-in-out infinite 1.5s;
}
#slide1.decos .deco-6 { opacity: 0.4; }

/* CSS dot — small white */
.deco-7 {
  left: 1680px; top: 150px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  animation: pulseDeco 3s ease-in-out infinite 0.6s;
}
#slide1.decos .deco-7 { opacity: 1; }

/* CSS cross — subtle white */
.deco-8 {
  left: 1400px; top: 480px;
  width: 16px; height: 16px;
  animation: floatDrift 7s ease-in-out infinite 1s;
}
.deco-8::before, .deco-8::after {
  content: '';
  position: absolute;
  background: rgba(255,255,255,0.35);
  border-radius: 1px;
}
.deco-8::before { width: 2px; height: 16px; left: 7px; top: 0; }
.deco-8::after  { width: 16px; height: 2px; left: 0; top: 7px; }
#slide1.decos .deco-8 { opacity: 1; }

/* ═══════════════════════════════════════════════
   SLIDE 2 — Maastricht fullscreen
═══════════════════════════════════════════════ */
#slide2 {
  background: url('img/maastricht.png') center/cover no-repeat;
  z-index: 10;
  opacity: 0;
  pointer-events: none;
  transition: opacity .8s ease;
  overflow: hidden;
}
#slide2.open {
  opacity: 1;
  pointer-events: auto;
}

/* dark gradient overlay */
#slide2::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(to bottom,
    rgba(0,0,0,.28) 0%,
    rgba(0,0,0,.08) 42%,
    rgba(0,0,0,.50) 100%);
  z-index: 0;
}

/* ─── MAASTRICHT big text ─── */
#s2Maastricht {
  position: absolute;
  left: 0; right: 0; bottom: 185px;
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 700;
  font-size: 250px;
  line-height: 1;
  color: rgba(255,255,255,.88);
  white-space: nowrap;
  letter-spacing: -0.01em;
  text-align: center;
  padding: 0 40px;
  z-index: 1;
  opacity: 0;
  transform: translateY(60px);
  transition: opacity 1s ease 0.3s, transform 1.2s cubic-bezier(.25,.46,.45,.94) 0.3s;
}
#slide2.open #s2Maastricht {
  opacity: 1;
  transform: translateY(0);
}

/* ─── Three columns ─── */
#s2Cols {
  position: absolute;
  left: 1060px; top: 74px;
  display: flex;
  align-items: center;
  z-index: 1;
  opacity: 0;
  transform: translateY(-20px);
  transition: opacity 0.8s ease 0.5s, transform 0.8s ease 0.5s;
}
#slide2.open #s2Cols {
  opacity: 1;
  transform: translateY(0);
}

.s2Col { padding: 0 46px; }
.s2Col:first-child { padding-left: 0; }

.s2Divider {
  width: 1.5px;
  height: 150px;
  background: rgba(255,255,255,.50);
  flex-shrink: 0;
}

.s2Label {
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 500;
  font-size: 25px;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  line-height: 1.55;
  white-space: nowrap;
}

.s2Num {
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 700;
  font-size: 78px;
  color: #fff;
  line-height: 1;
  margin-bottom: 10px;
}

/* ═══════════════════════════════════════════════
   SLIDE 3 — Comité scientifique
═══════════════════════════════════════════════ */
#slide3 {
  background: #211276;
  z-index: 20;
  opacity: 0;
  pointer-events: none;
  transition: opacity .8s ease;
}
#slide3.active {
  opacity: 1;
  pointer-events: auto;
}

/* ─── Play icon (orange triangle, matching slide 1) ─── */
.s3-play {
  position: absolute;
  left: 220px; top: 310px;
  width: 52px; height: 60px;
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity .5s ease, transform .5s ease;
}
#slide3.anim .s3-play {
  opacity: 1;
  transform: translateX(0);
  animation: rPulse 2.4s ease-in-out infinite;
  animation-delay: .5s;
}

@keyframes rPulse {
  0%,100% { transform: scale(1);    opacity: .75; }
  50%      { transform: scale(1.28); opacity: 1;   }
}

/* ─── PNS big text ─── */
.s3-aan {
  position: absolute;
  left: 290px; top: 300px;
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 500;
  font-size: 80px;
  line-height: 1;
  color: #fff;
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity .6s ease .1s, transform .6s ease .1s;
}
#slide3.anim .s3-aan { opacity: 1; transform: translateX(0); }

/* ─── COMITÉ SCIENTIFIQUE pill ─── */
.s3-pill {
  position: absolute;
  left: 220px; top: 400px;
  width: 520px; height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .55s ease .4s, transform .55s ease .4s;
}
#slide3.anim .s3-pill { opacity: 1; transform: translateY(0); }

.s3-pill img {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  object-fit: fill;
}
.s3-pill span {
  position: relative;
  z-index: 1;
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 700;
  font-size: 36px;
  color: #252525;
  white-space: nowrap;
  line-height: 1;
}

/* ─── Photo cards ─── */
.s3-card {
  position: absolute;
  opacity: 0;
  transform: translateY(30px) scale(.9);
  transition: opacity .5s ease calc(var(--i) * .12s + .5s),
              transform .5s cubic-bezier(.34,1.56,.64,1) calc(var(--i) * .12s + .5s);
}
#slide3.anim .s3-card {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.s3-card img {
  display: block;
  border-radius: 16px;
  object-fit: cover;
  transition: transform .3s ease, box-shadow .3s ease;
}
.s3-card:hover img {
  transform: translateY(-8px) scale(1.03);
  box-shadow: 0 16px 40px rgba(0,0,0,.18);
}

.s3-name {
  font-family: 'Be Vietnam Pro', sans-serif;
  font-weight: 700;
  font-size: 22px;
  color: #fff;
  text-align: center;
  margin-top: 10px;
  letter-spacing: 0.02em;
  line-height: 1.2;
}

/* ─── Individual card positions (5 people) ─── */
#s3Yann          { left: 820px;  top: 84px; }
#s3Yann img      { width: 250px; height: 510px; }

#s3JP            { left: 1130px; top: 84px; }
#s3JP img        { width: 210px; height: 210px; }

#s3Laurent       { left: 1420px; top: 84px; }
#s3Laurent img   { width: 210px; height: 210px; }

#s3Tanya         { left: 1130px; top: 380px; }
#s3Tanya img     { width: 210px; height: 210px; }

#s3Marion        { left: 1420px; top: 380px; }
#s3Marion img    { width: 210px; height: 210px; }

/* ═══════════════════════════════════════════════
   KEYFRAMES — decorative animations
═══════════════════════════════════════════════ */
@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-16px); }
}

@keyframes floatDrift {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  25%      { transform: translate(8px, -12px) rotate(6deg); }
  50%      { transform: translate(-5px, -20px) rotate(-4deg); }
  75%      { transform: translate(10px, -7px) rotate(8deg); }
}

@keyframes pulseDeco {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.35); }
}
