Danilo Alessandro Vinciprova

Danilo Alessandro Vinciprova

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

Ho imparato a pensare al costruire come a parti che devono incastrarsi tra loro.

Progetto 04 / 06 · sito web

Streetlight Studios

Una landing page concept per video ads di qualità cinematografica. Un concept, non un lavoro per un cliente.

Conceptlanding page · HTML, CSS, JavaScript

Panoramica

Screenshot

Livello di prova: Prova esistente

Streetlight Studios: screenshot della home page, desktop (1440 px).
Streetlight Studios: screenshot della home page, mobile (375 px).
Desktop 1440 × 900 e mobile 375 × 812, acquisiti il 29 settembre 2026 dal file sorgente della pagina stessa (non online).
Vedi la prova
  1. Affermazione

    Streetlight Studios: una landing page concept per video ads di qualità cinematografica. Un concept, non un lavoro per un cliente.

    Dichiarato da Danilo

  2. Prove

  3. Risultato

    Screenshot reali della pagina, presi dal suo file sorgente il 29/09/2026. Che l’abbia costruito Danilo è una sua dichiarazione.

In questa pagina

  1. 02 Animazione scomposta: l’apertura, poi le sue animazioni CSS scomposte
  2. 03 Codice: lo script dietro l’apertura, e le regole per il movimento ridotto

Non in questa pagina

  • Online: la pagina non è online; gira dal suo file sorgente.

Animazione scomposta

Prima l’apertura mentre si svolge; poi ognuna delle sue animazioni CSS, lette dal foglio di stile della pagina e disposte su un’unica linea del tempo.

Montata: l’apertura mentre si svolge

Livello di prova: Prova esistente

Registrazione dello schermo dell’apertura della pagina Streetlight Studios (7,6 s, senza audio). Registrata il 29/09/2026 con Playwright dal file sorgente della pagina stessa, dal primo fotogramma: loader, letterbox, titolo.

Scomposta: ogni animazione dell’apertura

Livello di prova: Prova esistente

Ogni barra inizia al ritardo della regola e dura quanto la sua durata, contando dal momento in cui l’elemento appare. I numeri sono letti dagli estratti CSS qui sotto in fase di build; nulla è ricronometrato. La schermata di caricamento viene poi nascosta da uno script appena il video principale può partire, o al massimo dopo 2,5 s (vedi Codice).

Schermata di caricamento

  1. .loading-namefade-up · inizia a 0.2 s · dura 0.6 s · ease-out

  2. .loading-subfade-up · inizia a 0.4 s · dura 0.6 s · ease-out

  3. .loading-bar-wrapfade-up · inizia a 0.5 s · dura 0.4 s · ease-out

  4. .loading-bar-fillload-fill · inizia a 0.6 s · dura 1.8 s · ease-out

Barre letterbox

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

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

Disegno del logo

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

  2. nav .logo .logo-svg circle[r="8"]logo-draw · inizia a 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 · inizia a 0.9 s · dura 0.4 s · ease

Comparsa del titolo riga per riga

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

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

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

mockup-cinema-ads.html righe 92–115

Raw: testo di mockup-cinema-ads.html, righe 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}}

Livello di prova: Prova esistente

Sorgente di Streetlight: schermata di caricamento (CSS) · copiato il 29 settembre 2026 · sha256 52ef13a6ef1e…

mockup-cinema-ads.html righe 137–142

Raw: testo di mockup-cinema-ads.html, righe 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%)}}

Livello di prova: Prova esistente

Sorgente di Streetlight: barre letterbox (CSS) · copiato il 29 settembre 2026 · sha256 0bf140358bfa…

mockup-cinema-ads.html righe 317–331

Raw: testo di mockup-cinema-ads.html, righe 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; } }

Livello di prova: Prova esistente

Sorgente di Streetlight: disegno del logo (CSS) · copiato il 29 settembre 2026 · sha256 96c44ffff475…

mockup-cinema-ads.html righe 443–452

Raw: testo di mockup-cinema-ads.html, righe 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}}

Livello di prova: Prova esistente

Sorgente di Streetlight: comparsa del titolo riga per riga (CSS) · copiato il 29 settembre 2026 · sha256 caa51e0e4493…

Codice

La schermata di caricamento e l’effetto macchina da scrivere sono piccoli script. Per chi chiede il movimento ridotto, la schermata di caricamento viene saltata, e le regole qui sotto spengono le animazioni della sezione principale e la grana della pellicola.

mockup-cinema-ads.html righe 2244–2262

Raw: testo di mockup-cinema-ads.html, righe 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);
  }

Livello di prova: Prova esistente

Sorgente di Streetlight: come si nasconde la schermata di caricamento (JavaScript) · copiato il 29 settembre 2026 · sha256 7d9ee7a85f0a…

mockup-cinema-ads.html righe 2486–2510

Raw: testo di mockup-cinema-ads.html, righe 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);
})();

Livello di prova: Prova esistente

Sorgente di Streetlight: testo principale a macchina da scrivere (JavaScript) · copiato il 29 settembre 2026 · sha256 a4602fccc1cc…

mockup-cinema-ads.html righe 351–363

Raw: testo di mockup-cinema-ads.html, righe 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;
  }
}

Livello di prova: Prova esistente

Sorgente di Streetlight: regole per il movimento ridotto (CSS) · copiato il 29 settembre 2026 · sha256 3700a4775390…