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.
Resumen
Capturas de pantalla
Nivel de prueba: Prueba existente


Ver la prueba
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
Pruebas
- Capturas de la página conceptual de Streetlight Studios (escritorio y móvil) · manual · comprobado el 29 de septiembre de 2026Tomadas el 29/09/2026 del propio archivo fuente de la página, porque no está en línea.
- Grabación de pantalla de la apertura de la página de Streetlight Studios (7,6 s, sin sonido) · manual · comprobado el 29 de septiembre de 2026Grabada el 29/09/2026 con Playwright desde el propio archivo fuente de la página, desde el primer fotograma: loader, letterbox, titular.
- Código fuente de Streetlight: barras letterbox (CSS) (mockup-cinema-ads.html, líneas 137–142) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
- Código fuente de Streetlight: pantalla de carga (CSS) (mockup-cinema-ads.html, líneas 92–115) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
- Código fuente de Streetlight: trazado del logotipo (CSS) (mockup-cinema-ads.html, líneas 317–331) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
- Código fuente de Streetlight: aparición del titular línea a línea (CSS) (mockup-cinema-ads.html, líneas 443–452) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
- Código fuente de Streetlight: reglas de movimiento reducido (CSS) (mockup-cinema-ads.html, líneas 351–363) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
- Código fuente de Streetlight: cómo se oculta la pantalla de carga (JavaScript) (mockup-cinema-ads.html, líneas 2244–2262) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
- Código fuente de Streetlight: texto principal con efecto de máquina de escribir (JavaScript) (mockup-cinema-ads.html, líneas 2486–2510) · manual · comprobado el 29 de septiembre de 2026Copiado literalmente del archivo fuente real el 29/09/2026 (finales de línea normalizados).
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
- 02 Animación desmontada: la apertura, y después sus animaciones CSS desmontadas
- 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
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
.loading-namefade-up · empieza en 0.2 s · dura 0.6 s · ease-out.loading-subfade-up · empieza en 0.4 s · dura 0.6 s · ease-out.loading-bar-wrapfade-up · empieza en 0.5 s · dura 0.4 s · ease-out.loading-bar-fillload-fill · empieza en 0.6 s · dura 1.8 s · ease-out
Barras letterbox
.lb-tlb-t · empieza en 0.15 s · dura 0.95 s · cubic-bezier(.16,1,.3,1).lb-blb-b · empieza en 0.15 s · dura 0.95 s · cubic-bezier(.16,1,.3,1)
Trazado del logotipo
nav .logo .logo-svg circle[r="19"]logo-draw · empieza en 0.1 s · dura 1.2 s · cubic-bezier(.16,1,.3,1)nav .logo .logo-svg circle[r="8"]logo-draw · empieza en 0.5 s · dura 0.9 s · cubic-bezier(.16,1,.3,1)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
.hero-h1 .line:nth-child(1) spanline-up · empieza en 0.15 s · dura 0.75 s · cubic-bezier(.16,1,.3,1).hero-h1 .line:nth-child(2) spanline-up · empieza en 0.3 s · dura 0.75 s · cubic-bezier(.16,1,.3,1).hero-h1 .line:nth-child(3) spanline-up · empieza en 0.45 s · dura 0.75 s · cubic-bezier(.16,1,.3,1)
.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
/* ── 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
/* ── 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
.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
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.
/* ══ 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
})();
/* ══ 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
@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