/* =========================================================
   SENSORAMA — sistema de diseño
   Color: ink (fondo oscuro cine), purple-700 (marca), purple-500 (acento),
          lilac-200 (acento sobre oscuro), paper (fondo claro), ash (texto), mist (bordes)
   Tipografía: Anton (display, condensada, mayúsculas) + Manrope (cuerpo) + IBM Plex Mono (utilitaria)
   Firma: "El visor" — esquinas de encuadre tipo cámara + punto REC pulsante
   ========================================================= */
@import url('https://fonts.googleapis.com/css2?family=Anton&family=Manrope:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  --ink:#0B0710;
  --ink-soft:#150C22;
  --purple-900:#1D1033;
  --purple-700:#4D2D81;
  --purple-600:#5F3A9C;
  --purple-500:#8560B7;
  --lilac-200:#CBBFE6;
  --lilac-100:#E4DCF2;
  --paper:#F7F5FA;
  --paper-2:#EFEAF6;
  --white:#FFFFFF;
  --ash:#4B4253;
  --ash-soft:#79708C;
  --mist:#E2DCEE;
  --rec:#B7326E;

  --container:1200px;
  --radius:16px;
  --radius-sm:10px;
  --ease:cubic-bezier(.16,.84,.44,1);
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:'Manrope',system-ui,sans-serif;
  background:var(--paper);
  color:var(--ash);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
ul{margin:0; padding:0; list-style:none;}
button{font-family:inherit; cursor:pointer;}

h1,h2,h3,h4{
  font-family:'Anton',sans-serif;
  text-transform:uppercase;
  letter-spacing:.01em;
  line-height:1.02;
  margin:0;
  font-weight:400;
  color:var(--purple-900);
}
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4{color:var(--white);}

.eyebrow{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--purple-600);
  display:inline-flex;
  align-items:center;
  gap:9px;
  font-weight:600;
}
.on-dark .eyebrow{color:var(--lilac-200);}
.eyebrow .dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--rec);
  box-shadow:0 0 0 0 rgba(183,50,110,.6);
  animation:pulse 2.1s infinite;
  flex-shrink:0;
}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(183,50,110,.55);}
  70%{box-shadow:0 0 0 9px rgba(183,50,110,0);}
  100%{box-shadow:0 0 0 0 rgba(183,50,110,0);}
}

.container{max-width:var(--container); margin:0 auto; padding:0 28px;}
section{padding:96px 0;}
@media(max-width:720px){ section{padding:64px 0;} }

.on-dark{background:var(--ink); color:var(--lilac-100);}
.on-paper2{background:var(--paper-2);}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:9px;
  padding:14px 26px; border-radius:100px; font-weight:700; font-size:14px;
  border:1.5px solid transparent; transition:transform .2s var(--ease), filter .2s, background .2s, color .2s, border-color .2s;
}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--purple-700); color:#fff;}
.btn-primary:hover{filter:brightness(1.12); transform:translateY(-2px);}
.btn-outline{border-color:currentColor; color:var(--purple-900);}
.on-dark .btn-outline{color:#fff;}
.btn-outline:hover{background:rgba(133,96,183,.12); transform:translateY(-2px);}
.btn-wa{background:#25D366; color:#fff;}
.btn-wa:hover{filter:brightness(1.08); transform:translateY(-2px);}
.btn-sm{padding:10px 18px; font-size:12.5px;}

/* ---------- Nav ---------- */
.site-nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  padding:18px 0;
  transition:background .35s var(--ease), padding .35s var(--ease), box-shadow .35s;
}
.site-nav .container{display:flex; align-items:center; justify-content:space-between;}
.site-nav.scrolled{
  background:rgba(11,7,16,.86); backdrop-filter:blur(10px);
  padding:11px 0; box-shadow:0 8px 30px -14px rgba(0,0,0,.5);
}
.nav-logo img{height:36px;}
.nav-links{display:flex; align-items:center; gap:6px;}
.nav-links a{
  font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:.06em; text-transform:uppercase;
  color:rgba(255,255,255,.72); padding:9px 14px; border-radius:100px; transition:background .2s, color .2s;
}
.nav-links a:hover, .nav-links a.active{background:rgba(255,255,255,.09); color:#fff;}
.nav-cta{display:flex; align-items:center; gap:10px;}
.nav-burger{display:none; flex-direction:column; gap:5px; background:none; border:none; padding:6px;}
.nav-burger span{width:22px; height:2px; background:#fff; border-radius:2px;}

@media(max-width:900px){
  .nav-links{
    position:fixed; inset:0 0 0 auto; top:0; height:100vh; width:78%; max-width:340px;
    background:var(--ink-soft); flex-direction:column; align-items:flex-start; gap:2px;
    padding:100px 26px 26px 26px; transform:translateX(100%); transition:transform .4s var(--ease);
  }
  .nav-links.open{transform:translateX(0);}
  .nav-links a{width:100%; padding:14px 10px; font-size:13px;}
  .nav-burger{display:flex;}
  .nav-cta .btn-outline{display:none;}
}

/* ---------- Hero (visor / viewfinder signature) ---------- */
.hero{
  position:relative; min-height:80vh; display:flex; align-items:center;
  background:radial-gradient(ellipse 120% 80% at 50% -10%, #241338 0%, var(--ink) 55%);
  overflow:hidden;
}
.hero::before{ /* film grain / vignette */
  content:''; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(ellipse 90% 70% at 50% 45%, transparent 40%, rgba(0,0,0,.55) 100%);
}
.hero-inner{position:relative; z-index:2; width:100%; padding-top:90px;}
.viewfinder{
  position:relative; padding:52px 6px;
}
.viewfinder::before,.viewfinder::after,
.viewfinder .vf-br,.viewfinder .vf-bl{
  content:''; position:absolute; width:34px; height:34px; border-color:var(--purple-500);
  border-style:solid; opacity:.85;
}
.viewfinder::before{top:0; left:0; border-width:2.5px 0 0 2.5px;}
.viewfinder::after{top:0; right:0; border-width:2.5px 2.5px 0 0;}
.viewfinder .vf-bl{bottom:0; left:0; border-width:0 0 2.5px 2.5px;}
.viewfinder .vf-br{bottom:0; right:0; border-width:0 2.5px 2.5px 0;}

.hero h1{
  font-size:clamp(46px, 8.4vw, 108px);
  color:#fff;
  max-width:15ch;
}
.hero-bg-video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; opacity:.45; -webkit-box-reflect: below 0px}
.hero h1 em{font-style:normal; color:var(--purple-500);}
.hero-lede{
  font-size:18px; color:rgba(255,255,255,.72); max-width:46ch; margin-top:22px; line-height:1.6;
}
.hero-cta{display:flex; gap:14px; margin-top:34px; flex-wrap:wrap;}
.hero-services{
  display:flex; gap:26px; flex-wrap:wrap; margin-top:64px;
  font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase;
  color:rgba(255,255,255,.5);
}
.hero-services span{display:flex; align-items:center; gap:7px;}
.scroll-cue{
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px;
  font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.14em; color:rgba(255,255,255,.45);
  z-index:2;
}
.scroll-cue .line{width:1px; height:34px; background:linear-gradient(rgba(255,255,255,.6),transparent); animation:scrolldrop 1.8s infinite;}
@keyframes scrolldrop{0%{transform:scaleY(0); transform-origin:top;} 50%{transform:scaleY(1); transform-origin:top;} 51%{transform-origin:bottom;} 100%{transform:scaleY(0); transform-origin:bottom;}}

/* ---------- Section headers ---------- */
.sec-head{max-width:640px; margin-bottom:52px;}
.sec-head h2{font-size:clamp(30px,4.4vw,46px); margin-top:14px;}
.sec-head p{font-size:16px; margin-top:14px; color:var(--ash-soft); line-height:1.65;}
.sec-head.center{margin-left:auto; margin-right:auto; text-align:center;}

/* ---------- Reveal on scroll ---------- */
.reveal{opacity:0; transform:translateY(28px); transition:opacity .75s var(--ease), transform .75s var(--ease);}
.reveal.in{opacity:1; transform:none;}
.reveal-stagger > *{opacity:0; transform:translateY(24px); transition:opacity .6s var(--ease), transform .6s var(--ease);}
.reveal-stagger.in > *{opacity:1; transform:none;}
.reveal-stagger.in > *:nth-child(1){transition-delay:.02s;}
.reveal-stagger.in > *:nth-child(2){transition-delay:.09s;}
.reveal-stagger.in > *:nth-child(3){transition-delay:.16s;}
.reveal-stagger.in > *:nth-child(4){transition-delay:.23s;}
.reveal-stagger.in > *:nth-child(5){transition-delay:.30s;}
.reveal-stagger.in > *:nth-child(6){transition-delay:.37s;}
.reveal-stagger.in > *:nth-child(7){transition-delay:.44s;}

/* ---------- Service cards ---------- */
.grid-services{display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:22px;}
.svc-card{
  background:var(--white); border:1px solid var(--mist); border-radius:var(--radius);
  padding:30px 26px; position:relative; overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;
}
.svc-card:hover{transform:translateY(-6px); box-shadow:0 24px 44px -22px rgba(29,16,51,.3); border-color:var(--purple-500);}
.svc-card .ic{font-size:26px;}
.svc-card h3{font-size:19px; margin-top:16px; color:var(--purple-900);}
.svc-card p{font-size:13.5px; color:var(--ash-soft); margin-top:10px; line-height:1.55;}
.svc-card .go{
  margin-top:16px; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.06em;
  color:var(--purple-600); display:inline-flex; align-items:center; gap:6px; text-transform:uppercase;
  opacity:0; transform:translateX(-6px); transition:opacity .25s, transform .25s;
}
.svc-card:hover .go{opacity:1; transform:none;}

/* ---------- Process timeline ---------- */
.process{counter-reset:step;}
.process-row{
  display:grid; grid-template-columns:64px 1fr; gap:22px; padding:26px 0;
  border-top:1px solid var(--mist);
}
.on-dark .process-row{border-top-color:rgba(255,255,255,.12);}
.process-row:last-child{border-bottom:1px solid var(--mist);}
.on-dark .process-row:last-child{border-bottom-color:rgba(255,255,255,.12);}
.process-num{
  font-family:'IBM Plex Mono',monospace; font-size:13px; color:var(--purple-500); padding-top:3px;
}
.process-row h4{font-size:20px; color:var(--purple-900);}
.on-dark .process-row h4{color:#fff;}
.process-row p{font-size:14px; color:var(--ash-soft); margin-top:6px; max-width:56ch;}
.on-dark .process-row p{color:rgba(255,255,255,.6);}

/* ---------- Viewfinder frame on media (signature reused) ---------- */
.framed{position:relative;}
.framed::before,.framed::after,.framed .fr-bl,.framed .fr-br{
  content:''; position:absolute; width:26px; height:26px; border-color:var(--purple-500);
  border-style:solid; z-index:3; opacity:0; transition:opacity .3s var(--ease), width .3s, height .3s;
}
.framed::before{top:-9px; left:-9px; border-width:2px 0 0 2px;}
.framed::after{top:-9px; right:-9px; border-width:2px 2px 0 0;}
.framed .fr-bl{bottom:-9px; left:-9px; border-width:0 0 2px 2px;}
.framed .fr-br{bottom:-9px; right:-9px; border-width:0 2px 2px 0;}
.framed:hover::before,.framed:hover::after,.framed:hover .fr-bl,.framed:hover .fr-br{opacity:1; width:32px; height:32px;}

/* ---------- Video embed (YouTube facade / video local) ---------- */
.video-embed{
  position:relative; aspect-ratio:16/9; border-radius:var(--radius); overflow:hidden;
  background:linear-gradient(135deg,#241338,#0B0710); border:1px solid rgba(255,255,255,.08);
  background-size:cover; background-position:center;
}
.video-embed iframe{position:absolute; inset:0; width:100%; height:100%; border:0;}
.video-embed .thumb{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;}
.video-facade{
  position:absolute; inset:0; z-index:1; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:12px;
  cursor:pointer; color:rgba(255,255,255,.85);
  background:linear-gradient(to top, rgba(11,7,16,.8), rgba(11,7,16,.15) 45%, rgba(11,7,16,.55));
  transition:background .3s;
}
.video-embed.has-thumb:hover .video-facade{ background:linear-gradient(to top, rgba(11,7,16,.7), rgba(11,7,16,.05) 45%, rgba(11,7,16,.4)); }
.video-facade .play{
  width:64px; height:64px; border-radius:50%; background:rgba(255,255,255,.14); border:1.5px solid rgba(255,255,255,.55);
  backdrop-filter:blur(2px);
  display:flex; align-items:center; justify-content:center; font-size:20px; transition:transform .25s var(--ease), background .25s;
}
.video-embed:hover .video-facade .play{transform:scale(1.08); background:var(--purple-700); border-color:var(--purple-700);}
.video-facade .lbl{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.8); text-align:center; padding:0 20px; text-shadow:0 1px 6px rgba(0,0,0,.6);}

/* ---------- Portfolio ---------- */
.filters{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:34px;}
.filter-btn{
  padding:9px 17px; border-radius:100px; border:1.5px solid var(--mist); background:#fff;
  font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.04em; text-transform:uppercase;
  color:var(--ash-soft); transition:all .2s;
}
.filter-btn:hover{border-color:var(--purple-500); color:var(--purple-700);}
.filter-btn.active{background:var(--purple-700); border-color:var(--purple-700); color:#fff;}
.grid-portfolio{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:22px;}
.port-item{transition:opacity .35s, transform .35s;}
.port-item.hidden{display:none;}
.port-media{border-radius:var(--radius); overflow:hidden; position:relative; aspect-ratio:4/3;}
.port-media.photo-ph{
  background:linear-gradient(135deg,var(--purple-900),var(--ink)); display:flex; align-items:center; justify-content:center;
  flex-direction:column; gap:8px; color:rgba(255,255,255,.55); text-align:center; padding:20px;
}
.port-media.photo-ph .ic{font-size:26px;}
.port-media.photo-ph .lbl{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.05em;}
.port-item .cap{margin-top:12px;}
.port-item .cap h4{font-family:'Manrope',sans-serif; font-weight:700; font-size:15px; color:var(--purple-900); text-transform:none;}
.port-item .cap span{font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--ash-soft); text-transform:uppercase; letter-spacing:.04em;}

/* ---------- Stats / equip ---------- */
.grid-equip{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:18px;}
.equip-card{background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); border-radius:var(--radius-sm); padding:20px;}
.equip-card h4{font-family:'Manrope',sans-serif; text-transform:none; font-weight:700; font-size:15px; color:#fff;}
.equip-card p{font-size:12.5px; color:rgba(255,255,255,.55); margin-top:6px;}

/* ---------- Quote / testimonial style block ---------- */
.pull-quote{
  font-family:'Anton',sans-serif; text-transform:none; font-size:clamp(22px,3vw,32px);
  line-height:1.3; color:var(--purple-900); border-left:3px solid var(--purple-500); padding-left:26px;
}
.on-dark .pull-quote{color:#fff;}

/* ---------- Forms ---------- */
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.form-grid .full{grid-column:1/-1;}
@media(max-width:720px){.form-grid{grid-template-columns:1fr;}}
.field label{
  font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ash-soft); display:block; margin-bottom:8px;
}
.field input,.field select,.field textarea{
  width:100%; padding:13px 15px; border-radius:var(--radius-sm); border:1.5px solid var(--mist);
  font-family:'Manrope',sans-serif; font-size:14.5px; color:var(--purple-900); background:#fff;
  transition:border-color .2s, box-shadow .2s;
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--purple-500); box-shadow:0 0 0 4px rgba(133,96,183,.15);
}
.field textarea{min-height:130px; resize:vertical;}
.form-note{font-size:12.5px; color:var(--ash-soft); margin-top:14px;}
.form-success{
  display:none; background:var(--paper-2); border:1px solid var(--purple-500); border-radius:var(--radius-sm);
  padding:18px 20px; margin-top:18px; color:var(--purple-900); font-weight:600; font-size:14px;
}

/* ---------- Contact cards ---------- */
.contact-grid{display:grid; grid-template-columns:1.1fr .9fr; gap:56px; align-items:start;}
@media(max-width:900px){.contact-grid{grid-template-columns:1fr;}}
.contact-card{
  background:var(--ink); color:#fff; border-radius:var(--radius); padding:32px;
  background-image:radial-gradient(circle at 100% 0%, rgba(133,96,183,.35), transparent 55%);
}
.contact-line{display:flex; gap:12px; padding:12px 0; border-bottom:1px solid rgba(255,255,255,.1); font-size:14px;}
.contact-line:last-child{border-bottom:none;}
.contact-line b{color:rgba(255,255,255,.5); font-weight:500; min-width:110px; font-family:'IBM Plex Mono',monospace; font-size:11px; text-transform:uppercase; letter-spacing:.05em; padding-top:2px;}
.map-embed{border-radius:var(--radius); overflow:hidden; margin-top:20px; border:1px solid rgba(255,255,255,.12);}
.map-embed iframe{width:100%; height:220px; border:0; filter:grayscale(.3) invert(.92) contrast(.9);}

/* ---------- CTA banner ---------- */
.cta-band{
  background:linear-gradient(120deg,var(--purple-900),var(--ink) 70%);
  border-radius:28px; padding:64px 48px; text-align:center; position:relative; overflow:hidden;
}
.cta-band::after{
  content:''; position:absolute; width:340px; height:340px; border-radius:50%;
  background:radial-gradient(circle, rgba(133,96,183,.35), transparent 70%);
  top:-140px; right:-100px;
}
.cta-band h2{color:#fff; font-size:clamp(28px,4.6vw,46px);}
.cta-band p{color:rgba(255,255,255,.65); margin-top:14px; font-size:16px;}
.cta-band .hero-cta{justify-content:center;}

/* ---------- Footer ---------- */
footer{background:var(--ink); color:rgba(255,255,255,.55); padding:64px 0 28px 0;}
.footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px;}
@media(max-width:820px){.footer-grid{grid-template-columns:1fr 1fr;}}
.footer-grid h5{
  font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  color:rgba(255,255,255,.4); margin-bottom:14px;
}
.footer-grid li{padding:5px 0; font-size:13.5px;}
.footer-grid a:hover{color:#fff;}
.footer-logo img{height:26px; margin-bottom:14px;}
.footer-grid p{font-size:13px; line-height:1.6; max-width:32ch;}
.footer-social{display:flex; gap:10px; margin-top:18px;}
.footer-social a{
  width:36px; height:36px; border-radius:50%; border:1px solid rgba(255,255,255,.18);
  display:flex; align-items:center; justify-content:center; font-size:14px; transition:background .2s, border-color .2s;
}
.footer-social a:hover{background:var(--purple-700); border-color:var(--purple-700);}
.footer-bottom{
  margin-top:52px; padding-top:22px; border-top:1px solid rgba(255,255,255,.1);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:12px;
}

/* ---------- Page hero (subpáginas) ---------- */
.page-hero{
  background:var(--ink); padding:168px 0 84px 0; position:relative; overflow:hidden;
}
.page-hero::before{
  content:''; position:absolute; inset:0;
  background:radial-gradient(ellipse 80% 60% at 20% 0%, rgba(133,96,183,.28), transparent 60%);
}
.page-hero .container{position:relative; z-index:1;}
.page-hero h1{color:#fff; font-size:clamp(38px,6vw,64px); margin-top:16px; max-width:18ch;}
.page-hero p{color:rgba(255,255,255,.65); font-size:16px; margin-top:16px; max-width:56ch;}

/* ---------- Utilities ---------- */
.mt-lg{margin-top:64px;}
.two-col{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center;}
@media(max-width:860px){.two-col{grid-template-columns:1fr; gap:32px;}}
.tag-row{display:flex; flex-wrap:wrap; gap:10px; margin-top:18px;}
.tag{
  font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.04em; text-transform:uppercase;
  border:1px solid var(--mist); border-radius:100px; padding:7px 13px; color:var(--ash-soft);
}
.on-dark .tag{border-color:rgba(255,255,255,.18); color:rgba(255,255,255,.6);}
.check-list li{position:relative; padding:7px 0 7px 24px; font-size:14.5px; color:var(--ash);}
.on-dark .check-list li{color:rgba(255,255,255,.75);}
.check-list li::before{content:'●'; position:absolute; left:0; top:9px; font-size:6px; color:var(--purple-500);}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important;}
}

:focus-visible{outline:2.5px solid var(--purple-500); outline-offset:2px;}

/* =========================================================
   SET DE RODAJE — cuenta regresiva, claqueta, luces, spotlight,
   cinta perforada, transición iris de cámara, marquesina.
   ========================================================= */

/* ---------- Intro: cuenta regresiva de cine "3·2·1·ACCIÓN" ---------- */
#introCountdown{
  position:fixed; inset:0; z-index:999; background:#000;
  display:flex; align-items:center; justify-content:center;
  transition:opacity .6s var(--ease), visibility .6s;
}
#introCountdown.hide{opacity:0; visibility:hidden; pointer-events:none;}
#introCountdown .leader{
  position:relative; width:200px; height:200px; border-radius:50%;
  border:1.5px solid rgba(255,255,255,.25);
}
#introCountdown .leader::before{
  content:''; position:absolute; inset:-1.5px; border-radius:50%;
  background:conic-gradient(from -90deg, var(--purple-500) 0deg, transparent 0deg);
  animation:leaderSweep 1s linear infinite;
  -webkit-mask:radial-gradient(closest-side, transparent 76%, #000 77%);
          mask:radial-gradient(closest-side, transparent 76%, #000 77%);
}
#introCountdown .leader::after{ /* cross-hairs like an academy leader */
  content:''; position:absolute; inset:0;
  background:
    linear-gradient(rgba(255,255,255,.18), rgba(255,255,255,.18)) center/100% 1px no-repeat,
    linear-gradient(90deg, rgba(255,255,255,.18), rgba(255,255,255,.18)) center/1px 100% no-repeat;
}
@keyframes leaderSweep{ to{ transform:rotate(360deg); } }
#introCountdown .num{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:'Anton',sans-serif; font-size:64px; color:#fff;
}
#introCountdown .action{
  position:absolute; inset:0; display:none; align-items:center; justify-content:center;
  font-family:'Anton',sans-serif; font-size:clamp(40px,8vw,88px); color:var(--purple-500);
  letter-spacing:.04em;
}
#introCountdown.action .leader{display:none;}
#introCountdown.action .action{display:flex; animation:actionPop .5s var(--ease);}
@keyframes actionPop{from{transform:scale(.7); opacity:0;} to{transform:scale(1); opacity:1;}}
#introCountdown .skip{
  position:absolute; bottom:34px; left:50%; transform:translateX(-50%);
  font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:rgba(255,255,255,.35); border:1px solid rgba(255,255,255,.2); border-radius:100px; padding:8px 16px;
  background:none;
}
#introCountdown .skip:hover{color:#fff; border-color:rgba(255,255,255,.5);}

/* ---------- Claqueta (clapperboard) ---------- */
.clapper{width:38px; height:30px; flex-shrink:0;}
.clapper .stick{ transform-origin:10% 85%; transition:transform .4s var(--ease); }
.clapper.clap .stick{ animation:clapDown .35s var(--ease); }
@keyframes clapDown{ 0%{transform:rotate(-18deg);} 55%{transform:rotate(2deg);} 100%{transform:rotate(0deg);} }
.clapper-hero{
  position:absolute; top:36px; right:36px; z-index:2; opacity:.9;
}
@media(max-width:720px){ .clapper-hero{display:none;} }

/* ---------- Luces de escenario (stage lights) ---------- */
.stage-lights{position:absolute; inset:0; overflow:hidden; z-index:0; pointer-events:none;}
.stage-lights span{
  position:absolute; top:-20%; width:46vw; max-width:640px; height:150%;
  background:conic-gradient(from 180deg at 50% 0%, transparent 0deg, rgba(133,96,183,.16) 12deg, transparent 26deg);
  transform-origin:top center;
  animation:beamSway 9s ease-in-out infinite;
}
.stage-lights span:nth-child(1){left:-8%; animation-delay:0s;}
.stage-lights span:nth-child(2){left:28%; background:conic-gradient(from 180deg at 50% 0%, transparent 0deg, rgba(183,50,110,.13) 12deg, transparent 28deg); animation-delay:-3s; animation-duration:11s;}
.stage-lights span:nth-child(3){left:60%; animation-delay:-6s; animation-duration:10s;}
@keyframes beamSway{
  0%,100%{ transform:rotate(-9deg); }
  50%{ transform:rotate(9deg); }
}

/* ---------- Bokeh de cámara (canvas, liviano) + parallax de scroll ---------- */
.hero-bokeh{ position:absolute; inset:0; z-index:0; }
.hero-inner{ will-change:transform; }
.hero .cursor-spot{
  position:absolute; inset:0; z-index:1; pointer-events:none; opacity:0; transition:opacity .4s;
  background:radial-gradient(320px circle at var(--mx,50%) var(--my,30%), rgba(133,96,183,.16), transparent 70%);
}
.hero.spot-on .cursor-spot{opacity:1;}

/* ---------- Cinta de película perforada (filmstrip) ---------- */
.filmstrip{
  height:22px; width:100%;
  background:
    repeating-linear-gradient(90deg, #000 0 14px, transparent 14px 28px) top/100% 8px no-repeat,
    repeating-linear-gradient(90deg, #000 0 14px, transparent 14px 28px) bottom/100% 8px no-repeat,
    var(--ink);
  position:relative;
}
.filmstrip::before{
  content:''; position:absolute; inset:8px 0; background:
    repeating-linear-gradient(90deg, rgba(0,0,0,.35) 0 2px, transparent 2px 28px);
}

/* ---------- Marquesina (marquee) ---------- */
.marquee{
  background:var(--purple-700); overflow:hidden; white-space:nowrap; padding:13px 0;
  border-top:1px solid rgba(255,255,255,.15); border-bottom:1px solid rgba(255,255,255,.15);
}
.marquee-track{display:inline-flex; gap:36px; animation:marqueeScroll 26s linear infinite;}
.marquee:hover .marquee-track{animation-play-state:paused;}
.marquee span{
  font-family:'IBM Plex Mono',monospace; font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; color:#fff;
  display:inline-flex; align-items:center; gap:10px;
}
.marquee span::after{content:'●'; color:var(--lilac-200); font-size:6px; margin-left:26px;}
@keyframes marqueeScroll{ from{transform:translateX(0);} to{transform:translateX(-50%);} }

/* ---------- Escena / Toma (reemplaza numeración genérica) ---------- */
.scene-tag{
  font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.08em; color:var(--purple-500);
  display:flex; align-items:center; gap:8px; text-transform:uppercase;
}
.on-dark .scene-tag{color:var(--lilac-200);}

/* ---------- Iris reveal (transición tipo diafragma de cámara) ---------- */
.iris-reveal{
  clip-path:circle(0% at 50% 50%);
  transition:clip-path .9s var(--ease);
}
/* Se revela cuando el contenedor que SÍ se detecta bien (reveal / reveal-stagger) recibe "in".
   No se observa el propio elemento con IntersectionObserver: un clip-path en 0% hace que el
   navegador lo trate como "sin área visible" y nunca dispararía la detección por sí solo. */
.reveal.in .iris-reveal,
.reveal-stagger.in .iris-reveal{ clip-path:circle(75% at 50% 50%); }

/* ---------- Rec/on-air chip reused in nav ---------- */
.onair{
  display:inline-flex; align-items:center; gap:7px; font-family:'IBM Plex Mono',monospace;
  font-size:10.5px; letter-spacing:.1em; color:rgba(255,255,255,.5); text-transform:uppercase;
}
.onair .dot{width:6px; height:6px; border-radius:50%; background:var(--rec); animation:pulse 2.1s infinite;}

/* ---------- "Despegue" de cámara — asciende en diagonal con el scroll, estela de luz ---------- */
.cam-launch{
  position:absolute; left:8%; bottom:6%; z-index:1; width:78px; height:78px;
  will-change:transform, opacity;
  filter:drop-shadow(0 10px 24px rgba(133,96,183,.45));
}
.cam-launch svg{width:100%; height:100%;}
.cam-flash-dot{ animation:flashBlink 2.6s ease-in-out infinite; transform-origin:48px 27px; }
@keyframes flashBlink{
  0%, 78%, 100%{ opacity:.25; }
  82%{ opacity:1; filter:drop-shadow(0 0 6px #fff); }
  88%{ opacity:.25; }
}
.cam-trail{
  position:absolute; left:8%; bottom:6%; z-index:0; width:3px; height:0;
  background:linear-gradient(to top, rgba(133,96,183,.75), rgba(203,191,230,.5) 55%, transparent);
  border-radius:6px; transform-origin:bottom center; transform:rotate(28deg) translateX(38px);
  filter:blur(.5px);
}
.cam-spark{
  position:absolute; left:8%; bottom:6%; z-index:1; width:6px; height:6px; border-radius:50%;
  background:radial-gradient(circle, #fff, var(--lilac-200) 60%, transparent 72%);
  opacity:0;
}
@media(max-width:720px){ .cam-launch, .cam-trail{ transform:scale(.7); } }

/* ---------- Escena de partículas: Cámara → Claqueta → Isotipo SENSORAMA ---------- */
.particle-scene{ position:relative; height:280vh; background:var(--ink); }
.particle-scene-inner{
  position:sticky; top:0; height:100vh; overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:22px;
}
.particle-scene canvas{ width:min(560px,88vw); height:min(560px,52vh); display:block; }
.particle-caption{ text-align:center; }
.particle-caption h3{
  color:#fff; font-size:clamp(26px,4.4vw,42px); letter-spacing:.02em; transition:opacity .3s;
}
.particle-caption p{
  color:rgba(255,255,255,.5); font-size:14px; margin-top:8px; max-width:44ch;
  font-family:'IBM Plex Mono',monospace; letter-spacing:.02em;
}
.particle-progress{
  position:absolute; right:26px; top:50%; transform:translateY(-50%);
  display:flex; flex-direction:column; gap:10px; z-index:2;
}
.particle-progress span{
  width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,.18); transition:background .3s, transform .3s;
}
.particle-progress span.on{ background:var(--purple-500); transform:scale(1.35); }
@media(max-width:720px){ .particle-progress{ display:none; } }

@media (prefers-reduced-motion: reduce){
  #introCountdown{display:none !important;}
  .stage-lights span, .marquee-track{animation:none !important;}
  .cam-launch, .cam-trail, .cam-spark{display:none !important;}
}
