audrey-zazulia-site/films/warm-check-garden/index.html
2026-08-20 16:47:24 +00:00

85 lines
5.1 KiB
HTML

<!doctype html>
<html><head>
<meta name="description" content="Water on the neck before the Georgia sun makes its point."><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:#1a1208;color:#f5e9d0;font-family:Georgia,'Times New Roman',serif}
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:#241a0d}
.clip{position:absolute;inset:0;display:grid;place-items:center}
.bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0}
.veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,12,4,.15),rgba(20,12,4,.75))}
.title{position:relative;z-index:2;font-size:110px;line-height:1.1;text-align:center;
text-shadow:0 4px 30px rgba(0,0,0,.8);max-width:1500px;padding:0 60px}
.sub{position:relative;z-index:2;font-size:40px;text-align:center;font-style:italic;
text-shadow:0 3px 20px rgba(0,0,0,.8);max-width:1500px;padding:0 80px;margin-top:-30px}
.kicker{position:relative;z-index:2;font-size:30px;letter-spacing:.35em;text-transform:uppercase;
color:#e8c88a;text-shadow:0 2px 12px rgba(0,0,0,.8)}
</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="72">
<section id="s1" class="clip" data-start="0" data-duration="24" data-track-index="1">
<div class="bg" style="background-image:url('https://images.pexels.com/photos/12020221/pexels-photo-12020221.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940')"></div>
<div class="veil"></div>
<div style="display:grid;place-items:center;gap:40px;position:relative;z-index:2">
<div class="kicker" id="s1-kicker">the warm check</div>
<h1 class="title" id="s1-title">Before I moved a single crate,<br/>I checked the valve with my thumb</h1>
<p class="sub" id="s1-sub">and waited for the warmth to come back.</p>
</div>
</section>
<section id="s2" class="clip" data-start="24" data-duration="24" data-track-index="1">
<div class="bg" style="background-image:url('https://images.pexels.com/photos/7728053/pexels-photo-7728053.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940')"></div>
<div class="veil"></div>
<div style="display:grid;place-items:center;gap:40px;position:relative;z-index:2">
<div class="kicker" id="s2-kicker">the protocol</div>
<h1 class="title" id="s2-title">Kneepads before the knees.<br/>Gloves before the trowel.</h1>
<p class="sub" id="s2-sub">Water on the neck before the Georgia sun makes its point.</p>
</div>
</section>
<section id="s3" class="clip" data-start="48" data-duration="24" data-track-index="1">
<div class="bg" style="background-image:url('https://pixabay.com/get/g0cda682121a3ea7fdb60488abf31e48c34bf256af531c9e2aef1fc051403ac76d3a76b37b84ff5aa5a2dcd45d67c21027a1b126475033f65c43c734a7ccb3002_1280.jpg')"></div>
<div class="veil"></div>
<div style="display:grid;place-items:center;gap:40px;position:relative;z-index:2">
<div class="kicker" id="s3-kicker">the reason</div>
<h1 class="title" id="s3-title">Safety was never about fear.</h1>
<p class="sub" id="s3-sub">It was about staying long enough<br/>to see what you planted bloom.</p>
</div>
</section>
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
<audio id="voice-s2" src="audio/s2.wav" data-start="24"></audio>
<audio id="voice-s3" src="audio/s3.wav" data-start="48"></audio>
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.15"></audio>
</div>
<script>
window.__timelines = window.__timelines || {};
const tl = gsap.timeline({ paused: true });
// Scene 1 — warm check
tl.to("#s1 .bg", { opacity: 0.55, duration: 3, ease: "power1.out" }, 0.2);
tl.from("#s1-kicker", { opacity: 0, letterSpacing: ".7em", duration: 1.2, ease: "power2.out" }, 0.8);
tl.from("#s1-title", { opacity: 0, y: 40, duration: 1.4, ease: "power2.out" }, 1.6);
tl.from("#s1-sub", { opacity: 0, y: 24, duration: 1.2, ease: "power2.out" }, 3.0);
tl.to("#s1-title", { opacity: 0, y: -30, duration: 1.2, ease: "power1.in" }, 22.4);
// Scene 2 — protocol
tl.to("#s2 .bg", { opacity: 0.55, duration: 3, ease: "power1.out" }, 24.4);
tl.from("#s2-kicker", { opacity: 0, y: 20, duration: 1.0, ease: "power2.out" }, 25.0);
tl.from("#s2-title", { opacity: 0, y: 40, duration: 1.4, ease: "power2.out" }, 25.8);
tl.from("#s2-sub", { opacity: 0, y: 24, duration: 1.2, ease: "power2.out" }, 27.6);
tl.to("#s2-title", { opacity: 0, y: -30, duration: 1.2, ease: "power1.in" }, 46.4);
// Scene 3 — reason
tl.to("#s3 .bg", { opacity: 0.5, duration: 3, ease: "power1.out" }, 48.4);
tl.from("#s3-kicker", { opacity: 0, y: 20, duration: 1.0, ease: "power2.out" }, 49.0);
tl.from("#s3-title", { opacity: 0, y: 40, duration: 1.4, ease: "power2.out" }, 49.8);
tl.from("#s3-sub", { opacity: 0, y: 24, duration: 1.2, ease: "power2.out" }, 51.6);
tl.to("#s3-sub", { opacity: 0, y: -20, duration: 1.4, ease: "power1.in" }, 69.6);
window.__timelines["main"] = tl;
</script>
</body></html>