64 lines
3.7 KiB
HTML
64 lines
3.7 KiB
HTML
<!doctype html>
|
|
<html><head><meta charset="UTF-8"/>
|
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
|
<style>
|
|
body{margin:0;background:#0b0f14;color:#fff;font-family:"Georgia",serif}
|
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden}
|
|
.clip{position:absolute;inset:0;display:grid;place-items:center;background-size:cover;background-position:center}
|
|
.fade-in{opacity:0;animation:fadeIn 2s forwards}
|
|
@keyframes fadeIn{to{opacity:1}}
|
|
.title-text{font-size:72px;text-align:center;letter-spacing:4px;color:#f4e8c1;text-shadow:0 4px 20px rgba(139,90,43,0.8)}
|
|
.sub-text{font-size:32px;margin-top:20px;color:#d4c5a3;opacity:0;animation:fadeIn 3s 1s forwards}
|
|
.quote-box{position:absolute;bottom:120px;left:50%;transform:translateX(-50%);text-align:center;padding:40px;background:rgba(0,0,0,0.7);border-radius:8px;border:1px solid #8b5a2b}
|
|
.quote-text{font-size:28px;line-height:1.6;color:#f4e8c1;font-style:italic}
|
|
.signature{font-size:20px;margin-top:15px;color:#8b5a2b;font-weight:bold}
|
|
</style> <script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
</head>
|
|
<body>
|
|
<div id="root" data-composition-id="main" data-start="0" data-width="1920" data-height="1080" data-duration="30">
|
|
|
|
<!-- AUDIO TRACKS -->
|
|
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
|
|
<audio id="voice-s2" src="audio/s2.wav" data-start="10"></audio>
|
|
<audio id="voice-s3" src="audio/s3.wav" data-start="20"></audio>
|
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.12"></audio>
|
|
|
|
<!-- SCENE 1: THE QUESTION -->
|
|
<section id="s1" class="clip" data-start="0" data-duration="10" data-track-index="1" style="background-image:url('https://images.pexels.com/photos/31755424/pexels-photo-31755424.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940')">
|
|
<div class="title-text fade-in">THE FIRST FIX</div>
|
|
<div class="sub-text">Roseville, 1974</div>
|
|
</section>
|
|
|
|
<!-- SCENE 2: THE HANDS -->
|
|
<section id="s2" class="clip" data-start="10" data-duration="10" data-track-index="1" style="background-image:url('https://images.pexels.com/photos/31567149/pexels-photo-31567149.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940');filter:brightness(0.85)">
|
|
<div class="quote-box">
|
|
<div class="quote-text">That wobbly chair leg wasn't broken.<br/>It was waiting.</div>
|
|
<div class="signature">— Clifton Ellis, age nine</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SCENE 3: THE LEGACY -->
|
|
<section id="s3" class="clip" data-start="20" data-duration="10" data-track-index="1" style="background:linear-gradient(to bottom,#1a1510,#0b0f14)">
|
|
<div class="title-text" style="font-size:56px;">EVERYTHING YOU BREAK<br/>CAN BECOME WHOLE AGAIN</div>
|
|
<div class="sub-text" style="font-size:24px;margin-top:40px;color:#8b5a2b">Tell us your first fix.<br/>We're listening.</div>
|
|
</section>
|
|
|
|
<script>
|
|
window.__timelines = window.__timelines || {};
|
|
const tl = gsap.timeline({ paused: true });
|
|
|
|
// Scene 1: Title fades in, subtitle rises
|
|
tl.to(".#s1 .title-text", { opacity: 1, y: 0, duration: 2.5, ease: "power3.out" }, 0.3);
|
|
tl.to(".#s1 .sub-text", { opacity: 1, y: 0, duration: 3, ease: "power2.out" }, 1.5);
|
|
|
|
// Scene 2: Quote box slides up
|
|
tl.to(".#s2 .quote-box", { opacity: 0, opacity: 1, y: 50, y: 0, duration: 4, ease: "expo.out" }, 10.5);
|
|
|
|
// Scene 3: Final message builds
|
|
tl.to(".#s3 .title-text", { opacity: 0, opacity: 1, scale: 1.02, duration: 4, ease: "power3.inOut" }, 20.2);
|
|
tl.to(".#s3 .sub-text", { opacity: 1, duration: 3, ease: "power2.out" }, 22);
|
|
|
|
window.__timelines["main"] = tl;
|
|
</script>
|
|
</body></html>
|