91 lines
4.9 KiB
HTML
91 lines
4.9 KiB
HTML
<!doctype html>
|
|
<html><head><meta charset="UTF-8"/>
|
|
<title>The Billet's Journey</title>
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:title" content="The Billet's Journey">
|
|
<meta property="og:description" content="RAW STOCK Cold aluminum. Waiting. THE CUT 12,000 RPM. Coolant meets fire. THE FINISH 0.0005 inches. No gold. Just truth.">
|
|
<meta property="og:url" content="https://chadwick-warner.4ort.net/">
|
|
<meta name="twitter:card" content="summary">
|
|
<meta name="description" content="RAW STOCK Cold aluminum. Waiting. THE CUT 12,000 RPM. Coolant meets fire. THE FINISH 0.0005 inches. No gold. Just truth.">
|
|
<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:"JetBrains Mono",monospace}
|
|
#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}
|
|
.overlay{position:absolute;bottom:120px;left:80px;right:80px;z-index:10;font-size:28px;line-height:1.4;text-shadow:2px 2px 8px #000}
|
|
.title{font-size:72px;font-weight:700;margin-bottom:20px;letter-spacing:-1px}
|
|
.sub{font-size:32px;opacity:0.85}
|
|
.fade-in{opacity:0;transform:translateY(40px)}
|
|
.burn-edge{position:absolute;inset:0;pointer-events:none}
|
|
.burn-top{background:linear-gradient(to bottom,#0b0f14 0%,transparent 15%);top:0}
|
|
.burn-bottom{background:linear-gradient(to top,#0b0f14 0%,transparent 15%);bottom:0}
|
|
</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="45">
|
|
|
|
<!-- AUDIO TRACKS -->
|
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.18"></audio>
|
|
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
|
|
<audio id="voice-s2" src="audio/s2.wav" data-start="15"></audio>
|
|
<audio id="voice-s3" src="audio/s3.wav" data-start="30"></audio>
|
|
|
|
<!-- SCENE 1: RAW STOCK (0-15s) -->
|
|
<section id="s1" class="clip" data-start="0" data-duration="15" data-track-index="1"
|
|
style="background-image:url('https://images.pexels.com/photos/15508177/pexels-photo-15508177.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940')">
|
|
<div class="burn-edge burn-top"></div>
|
|
<div class="burn-edge burn-bottom"></div>
|
|
<div class="overlay fade-in">
|
|
<div class="title" id="s1-title">RAW STOCK</div>
|
|
<div class="sub" id="s1-sub">Cold aluminum. Waiting.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SCENE 2: THE CUT (15-30s) -->
|
|
<section id="s2" class="clip" data-start="15" data-duration="15" data-track-index="1"
|
|
style="background-image:url('https://images.pexels.com/photos/8956313/pexels-photo-8956313.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940')">
|
|
<div class="burn-edge burn-top"></div>
|
|
<div class="burn-edge burn-bottom"></div>
|
|
<div class="overlay fade-in">
|
|
<div class="title" id="s2-title">THE CUT</div>
|
|
<div class="sub" id="s2-sub">12,000 RPM. Coolant meets fire.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- SCENE 3: THE FINISH (30-45s) -->
|
|
<section id="s3" class="clip" data-start="30" data-duration="15" data-track-index="1"
|
|
style="background-image:url('https://images.pexels.com/photos/28752153/pexels-photo-28752153.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940')">
|
|
<div class="burn-edge burn-top"></div>
|
|
<div class="burn-edge burn-bottom"></div>
|
|
<div class="overlay fade-in">
|
|
<div class="title" id="s3-title">THE FINISH</div>
|
|
<div class="sub" id="s3-sub">0.0005 inches. No gold. Just truth.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<script>
|
|
window.__timelines = window.__timelines || {};
|
|
const tl = gsap.timeline({ paused: true });
|
|
|
|
// SCENE 1
|
|
tl.to("#s1-title", { opacity: 1, y: 0, duration: 1.2, ease: "expo.out" }, 0.5);
|
|
tl.to("#s1-sub", { opacity: 1, y: 0, duration: 1.2, ease: "expo.out" }, 1.8);
|
|
tl.to("#s1", { filter: "brightness(1.1)", duration: 2, ease: "power1.inOut" }, 4);
|
|
|
|
// SCENE 2
|
|
tl.to("#s2", { opacity: 1, duration: 0.8, ease: "power2.in" }, 14.5);
|
|
tl.to("#s2-title", { opacity: 1, y: 0, duration: 1.4, ease: "expo.out" }, 15.5);
|
|
tl.to("#s2-sub", { opacity: 1, y: 0, duration: 1.4, ease: "expo.out" }, 16.8);
|
|
tl.to("#s2", { filter: "contrast(1.3) saturate(1.4)", duration: 3, ease: "power1.inOut" }, 18);
|
|
|
|
// SCENE 3
|
|
tl.to("#s3", { opacity: 1, duration: 0.8, ease: "power2.in" }, 29.5);
|
|
tl.to("#s3-title", { opacity: 1, y: 0, duration: 1.4, ease: "expo.out" }, 30.5);
|
|
tl.to("#s3-sub", { opacity: 1, y: 0, duration: 1.4, ease: "expo.out" }, 31.8);
|
|
tl.to("#s3", { filter: "brightness(1.15)", duration: 4, ease: "power1.inOut" }, 34);
|
|
|
|
window.__timelines["main"] = tl;
|
|
</script>
|
|
</div>
|
|
</body></html>
|