carmelina-rubio-field-guide/films/against-the-salt/index.html

96 lines
5.4 KiB
HTML
Raw Permalink Normal View History

2026-08-20 20:46:39 +02:00
<!doctype html>
<html><head>
<meta name="description" content="Window glass, brass, the seam of a mirror. It waits where a busy eye skips over."><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,'Times New Roman',serif}
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:#0e1a22}
.clip{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden}
.bg{position:absolute;inset:0;background-size:cover;background-position:center}
.shade{position:absolute;inset:0;background:linear-gradient(135deg,rgba(10,22,30,.82) 0%,rgba(10,22,30,.45) 60%,rgba(10,22,30,.75) 100%)}
.card{position:relative;max-width:1300px;padding:60px 90px;text-align:center}
.kicker{font-family:'Courier New',monospace;letter-spacing:.35em;text-transform:uppercase;font-size:26px;color:#9fc3c9;opacity:0;transform:translateY(14px)}
.title{font-size:118px;font-weight:700;line-height:1.05;margin:18px 0 0;color:#f2efe6;opacity:0;transform:translateY(22px)}
.rule{width:130px;height:3px;background:#d9a441;margin:34px auto 0;opacity:0;transform:scaleX(0)}
.bodytext{max-width:1150px;margin:0 auto}
.bodytext p{font-size:52px;line-height:1.45;color:#eae5d8;opacity:0;transform:translateY(18px)}
.pull{font-style:italic;font-size:64px;line-height:1.35;color:#f6f1e2;opacity:0;transform:translateY(18px)}
.small{font-family:'Courier New',monospace;font-size:30px;color:#9fc3c9;letter-spacing:.15em;text-transform:uppercase;opacity:0}
audio{display:none}
</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="50">
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.14"></audio>
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
<audio id="voice-s2" src="audio/s2.wav" data-start="12"></audio>
<audio id="voice-s3" src="audio/s3.wav" data-start="24"></audio>
<audio id="voice-s4" src="audio/s4.wav" data-start="36"></audio>
<!-- SCENE 1 -->
<section id="s1" class="clip" data-start="0" data-duration="12" data-track-index="1">
<div class="bg" style="background-image:url('https://images.pexels.com/photos/38528109/pexels-photo-38528109.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=1080&w=1920')"></div>
<div class="shade"></div>
<div class="card">
<div class="kicker" id="s1-kick">Monterey · dawn</div>
<div class="title" id="s1-title">The Fog Gives Us Salt</div>
</div>
</section>
<!-- SCENE 2 -->
<section id="s2" class="clip" data-start="12" data-duration="12" data-track-index="1">
<div class="bg" style="background-image:url('https://images.pexels.com/photos/27507152/pexels-photo-27507152.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=1080&w=1920')"></div>
<div class="shade"></div>
<div class="card">
<div class="small" id="s2-small">the quiet enemy</div>
<div class="bodytext"><p id="s2-body">Window glass, brass, the seam of a mirror. It waits where a busy eye skips over.</p></div>
</div>
</section>
<!-- SCENE 3 -->
<section id="s3" class="clip" data-start="24" data-duration="12" data-track-index="1">
<div class="bg" style="background-image:url('https://pixabay.com/get/gb91068babee3b679bc09eded47acf41576481d75924ab226d3ea0ea4f34f87a1331d1ebd39130fd97a2f50417a2ede4de86851ead721c22d3492b6f5f355bf20_1280.jpg')"></div>
<div class="shade"></div>
<div class="card">
<div class="small" id="s3-small">the remedy</div>
<div class="pull" id="s3-pull">"Soft cloth, warm water. Con amor, the salt lets go when you slow down."</div>
</div>
</section>
<!-- SCENE 4 -->
<section id="s4" class="clip" data-start="36" data-duration="14" data-track-index="1">
<div class="bg" style="background-image:url('https://pixabay.com/get/g5718d6563d94a1a26383365315e506fa63cd34885e0b05db5c43a61723514388c2d2ef6a09f024a5ff0769cb90d8ba8f1fbff198201c3ad4d9f606aa060d490f_1280.jpg')"></div>
<div class="shade"></div>
<div class="card">
<div class="small" id="s4-small">the trade of care</div>
<div class="bodytext"><p id="s4-body">You cannot stop the fog. But greet it each morning, wipe it clean, and buy another day for the things you love.</p></div>
<div class="rule" id="s4-rule"></div>
</div>
</section>
</div>
<script>
window.__timelines = window.__timelines || {};
const tl = gsap.timeline({ paused: true });
// scene 1
tl.to("#s1-kick", { opacity: 1, y: 0, duration: 0.7, ease: "power3.out" }, 1.4);
tl.to("#s1-title", { opacity: 1, y: 0, duration: 0.9, ease: "power3.out" }, 2.0);
// scene 2
tl.to("#s2-small", { opacity: 1, duration: 0.6, ease: "power2.out" }, 13.2);
tl.to("#s2-body", { opacity: 1, y: 0, duration: 0.9, ease: "power3.out" }, 13.8);
// scene 3
tl.to("#s3-small", { opacity: 1, duration: 0.6, ease: "power2.out" }, 25.2);
tl.from("#s3-pull", { opacity: 0, y: 26, duration: 1.0, ease: "power3.out" }, 25.8);
// scene 4
tl.to("#s4-small", { opacity: 1, duration: 0.6, ease: "power2.out" }, 37.2);
tl.to("#s4-body", { opacity: 1, y: 0, duration: 1.0, ease: "power3.out" }, 37.8);
tl.to("#s4-rule", { opacity: 1, scaleX: 1, duration: 0.8, ease: "power2.inOut" }, 40.5);
window.__timelines["main"] = tl;
</script>
</body></html>