Danilo Alessandro Vinciprova

Danilo Alessandro Vinciprova

AI-Assisted Web Developer · React · Next.js · Claude Code

Aprendí a pensar en construir como en piezas que tienen que encajar entre sí.

Proyecto 04 / 06 · sitio web

Streetlight Studios

Una landing page conceptual para anuncios en vídeo de calidad de cine. Un concepto, no un trabajo para un cliente.

Conceptolanding page · HTML, CSS, JavaScript

Resumen

Capturas de pantalla

Nivel de prueba: Prueba existente

Streetlight Studios: captura de la página de inicio, escritorio (1440 px).
Streetlight Studios: captura de la página de inicio, móvil (375 px).
Escritorio 1440 × 900 y móvil 375 × 812, capturados el 29 de septiembre de 2026 desde el propio archivo fuente de la página (no está en línea).
Ver la prueba
  1. Afirmación

    Streetlight Studios: una landing page conceptual para anuncios en vídeo de calidad de cine. Un concepto, no un trabajo para un cliente.

    Declarado por Danilo

  2. Pruebas

  3. Resultado

    Capturas reales de la página, tomadas de su archivo fuente el 29/09/2026. Que lo construyera Danilo es una declaración suya.

En esta página

  1. 02 Animación desmontada: la apertura, y después sus animaciones CSS desmontadas
  2. 03 Código: el script detrás de la apertura, y las reglas de movimiento reducido

No está en esta página

  • En línea: la página no está en línea; funciona desde su propio archivo fuente.

Animación desmontada

Primero la apertura tal como se reproduce; después cada una de sus animaciones CSS, leídas de la propia hoja de estilos de la página y colocadas en una sola línea de tiempo.

Montada: la apertura tal como se reproduce

Nivel de prueba: Prueba existente

Grabación de pantalla de la apertura de la página de Streetlight Studios (7,6 s, sin sonido). Grabada el 29/09/2026 con Playwright desde el propio archivo fuente de la página, desde el primer fotograma: loader, letterbox, titular.

Desmontada: cada animación de la apertura

Nivel de prueba: Prueba existente

Cada barra empieza en el retardo de la regla y dura lo que su duración, contando desde el momento en que aparece el elemento. Los números se leen de los extractos CSS de abajo al compilar; nada se vuelve a cronometrar. Después, un script oculta la pantalla de carga en cuanto el vídeo principal puede reproducirse, o como mucho a los 2,5 s (ver Código).

Pantalla de carga

  1. .loading-namefade-up · empieza en 0.2 s · dura 0.6 s · ease-out

  2. .loading-subfade-up · empieza en 0.4 s · dura 0.6 s · ease-out

  3. .loading-bar-wrapfade-up · empieza en 0.5 s · dura 0.4 s · ease-out

  4. .loading-bar-fillload-fill · empieza en 0.6 s · dura 1.8 s · ease-out

Barras letterbox

  1. .lb-tlb-t · empieza en 0.15 s · dura 0.95 s · cubic-bezier(.16,1,.3,1)

  2. .lb-blb-b · empieza en 0.15 s · dura 0.95 s · cubic-bezier(.16,1,.3,1)

Trazado del logotipo

  1. nav .logo .logo-svg circle[r="19"]logo-draw · empieza en 0.1 s · dura 1.2 s · cubic-bezier(.16,1,.3,1)

  2. nav .logo .logo-svg circle[r="8"]logo-draw · empieza en 0.5 s · dura 0.9 s · cubic-bezier(.16,1,.3,1)

  3. nav .logo .logo-svg circle:not([r="19"]):not([r="8"])logo-fade · empieza en 0.9 s · dura 0.4 s · ease

Aparición del titular línea a línea

  1. .hero-h1 .line:nth-child(1) spanline-up · empieza en 0.15 s · dura 0.75 s · cubic-bezier(.16,1,.3,1)

  2. .hero-h1 .line:nth-child(2) spanline-up · empieza en 0.3 s · dura 0.75 s · cubic-bezier(.16,1,.3,1)

  3. .hero-h1 .line:nth-child(3) spanline-up · empieza en 0.45 s · dura 0.75 s · cubic-bezier(.16,1,.3,1)

mockup-cinema-ads.html líneas 92–115

Raw: texto de mockup-cinema-ads.html, líneas 92–115
.loading-name{
  font-family:var(--font-d);
  font-size:1.5rem;letter-spacing:.35em;
  text-transform:uppercase;color:var(--accent);
  animation:fade-up .6s ease-out .2s both;
}
.loading-sub{
  font-family:var(--font-m);
  font-size:.44rem;letter-spacing:.32em;
  text-transform:uppercase;color:var(--muted);
  animation:fade-up .6s ease-out .4s both;
}
.loading-bar-wrap{
  width:130px;height:1px;
  background:var(--border);
  position:relative;overflow:hidden;
  animation:fade-up .4s ease-out .5s both;
}
.loading-bar-fill{
  position:absolute;top:0;left:-100%;height:100%;
  background:linear-gradient(90deg,var(--deep),var(--accent));
  animation:load-fill 1.8s ease-out .6s forwards;
}
@keyframes load-fill{to{left:0}}

Nivel de prueba: Prueba existente

Código fuente de Streetlight: pantalla de carga (CSS) · copiado el 29 de septiembre de 2026 · sha256 52ef13a6ef1e…

mockup-cinema-ads.html líneas 137–142

Raw: texto de mockup-cinema-ads.html, líneas 137–142
/* ── Letterbox ── */
.lb{position:fixed;left:0;right:0;height:52px;background:#000;z-index:9998}
.lb-t{top:0;animation:lb-t .95s cubic-bezier(.16,1,.3,1) .15s forwards}
.lb-b{bottom:0;animation:lb-b .95s cubic-bezier(.16,1,.3,1) .15s forwards}
@keyframes lb-t{to{transform:translateY(-100%)}}
@keyframes lb-b{to{transform:translateY(100%)}}

Nivel de prueba: Prueba existente

Código fuente de Streetlight: barras letterbox (CSS) · copiado el 29 de septiembre de 2026 · sha256 0bf140358bfa…

mockup-cinema-ads.html líneas 317–331

Raw: texto de mockup-cinema-ads.html, líneas 317–331
/* ── Logo draw-in stroke animation */
nav .logo .logo-svg circle[r="19"]{
  stroke-dasharray:120;stroke-dashoffset:120;
  animation:logo-draw 1.2s cubic-bezier(.16,1,.3,1) .1s both;
}
nav .logo .logo-svg circle[r="8"]{
  stroke-dasharray:51;stroke-dashoffset:51;
  animation:logo-draw .9s cubic-bezier(.16,1,.3,1) .5s both;
}
nav .logo .logo-svg circle:not([r="19"]):not([r="8"]){
  opacity:0;
  animation:logo-fade .4s ease .9s both;
}
@keyframes logo-draw{ to{ stroke-dashoffset:0; } }
@keyframes logo-fade{ to{ opacity:1; } }

Nivel de prueba: Prueba existente

Código fuente de Streetlight: trazado del logotipo (CSS) · copiado el 29 de septiembre de 2026 · sha256 96c44ffff475…

mockup-cinema-ads.html líneas 443–452

Raw: texto de mockup-cinema-ads.html, líneas 443–452
.hero-h1 .line span{
  display:block;
  animation:line-up .75s cubic-bezier(.16,1,.3,1) both;
}
.hero-h1 .line:nth-child(1) span{animation-delay:.15s}
.hero-h1 .line:nth-child(2) span{animation-delay:.3s}
.hero-h1 .line:nth-child(3) span{animation-delay:.45s}
.hero-h1 em{font-style:italic;color:transparent;-webkit-text-stroke:1.5px var(--accent)}
@keyframes line-up{from{transform:translateY(110%)}to{transform:translateY(0)}}
@keyframes fade-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

Nivel de prueba: Prueba existente

Código fuente de Streetlight: aparición del titular línea a línea (CSS) · copiado el 29 de septiembre de 2026 · sha256 caa51e0e4493…

Código

La pantalla de carga y el efecto de máquina de escribir son scripts pequeños. A quien pide movimiento reducido se le salta la pantalla de carga, y las reglas de abajo desactivan las animaciones de la cabecera y el grano de película.

mockup-cinema-ads.html líneas 2244–2262

Raw: texto de mockup-cinema-ads.html, líneas 2244–2262
/* ══ 1. LOADING OVERLAY ══ */
(function(){
  const overlay = document.getElementById('loading-overlay');
  // Fix #17: instant hide for reduced-motion users
  if(window.matchMedia('(prefers-reduced-motion:reduce)').matches){
    overlay.style.display='none';
    return;
  }
  const heroVid = document.querySelector('#hero video');
  function hideOverlay(){
    overlay.classList.add('hide');
    setTimeout(()=>{ overlay.style.display='none'; },1000);
  }
  if(heroVid){
    heroVid.addEventListener('canplay', hideOverlay, {once:true});
    setTimeout(hideOverlay, 2500); // max wait 2.5s
  } else {
    setTimeout(hideOverlay, 1000);
  }

Nivel de prueba: Prueba existente

Código fuente de Streetlight: cómo se oculta la pantalla de carga (JavaScript) · copiado el 29 de septiembre de 2026 · sha256 7d9ee7a85f0a…

mockup-cinema-ads.html líneas 2486–2510

Raw: texto de mockup-cinema-ads.html, líneas 2486–2510
})();

/* ══ 11. TYPEWRITER HERO BODY ══ */
(function(){
  const el = document.getElementById('hero-body-text');
  if(!el) return;
  const text = el.dataset.text || '';
  el.textContent = '';
  const cur = document.createElement('span');
  cur.className = 'typewriter-cursor';
  el.appendChild(cur);
  let i = 0;
  const delay = 1100; // start after hero headline animates
  setTimeout(()=>{
    const iv = setInterval(()=>{
      if(i<text.length){
        cur.before(document.createTextNode(text[i]));
        i++;
      } else {
        clearInterval(iv);
        setTimeout(()=>cur.remove(),1200);
      }
    }, 22);
  }, delay);
})();

Nivel de prueba: Prueba existente

Código fuente de Streetlight: texto principal con efecto de máquina de escribir (JavaScript) · copiado el 29 de septiembre de 2026 · sha256 a4602fccc1cc…

mockup-cinema-ads.html líneas 351–363

Raw: texto de mockup-cinema-ads.html, líneas 351–363
@media (prefers-reduced-motion: reduce){
  .reveal,.hero-tag,.hero-body,.hero-ctas,.hero-trust{
    opacity:1!important;transform:none!important;animation:none!important;
  }
  .hero-h1 .line span{transform:none!important;animation:none!important;}
  .phone-card{animation:none!important;transform:none!important;}
  .phone-cards{transform:none!important;}
  .guarantee-badge-ring{animation:none!important;}
  body::after{animation:none!important;}
  .films-body,.pricing-desc,.guarantee-body,.cta-body,.hiw-body{
    opacity:1!important;transform:none!important;
  }
}

Nivel de prueba: Prueba existente

Código fuente de Streetlight: reglas de movimiento reducido (CSS) · copiado el 29 de septiembre de 2026 · sha256 3700a4775390…