bibi-tewari-cleanroom/films/the-sterile-field/index.html

98 lines
5.1 KiB
HTML
Raw Normal View History

2026-08-21 03:02:23 +02:00
<!doctype html>
<html><head>
<meta name="description" content="Nothing stirs the air that isn't already mine."><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:#0a0e12;color:#e8f0f4;font-family:'Georgia','Times New Roman',serif}
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:#0a0e12}
.clip{position:absolute;inset:0;display:grid;place-items:center}
.bg{position:absolute;inset:0}
/* clinical grid backdrop */
.grid{position:absolute;inset:0;background:
linear-gradient(rgba(120,180,200,.06) 1px,transparent 1px),
linear-gradient(90deg,rgba(120,180,200,.06) 1px,transparent 1px);
background-size:80px 80px}
.halo{position:absolute;width:900px;height:900px;border-radius:50%;
background:radial-gradient(circle,rgba(90,180,210,.10),transparent 70%);
top:50%;left:50%;transform:translate(-50%,-50%)}
.label{position:absolute;top:80px;left:90px;font-family:'Courier New',monospace;
font-size:26px;letter-spacing:.35em;color:#5f9db0;text-transform:uppercase}
.kicker{font-family:'Courier New',monospace;font-size:28px;letter-spacing:.3em;
color:#7fc3d4;text-transform:uppercase;margin-bottom:30px}
h1{font-size:120px;font-weight:400;letter-spacing:.02em;margin:0;color:#f2f8fa;line-height:1.05}
.sub{font-family:'Courier New',monospace;font-size:30px;color:#9fd3de;margin-top:34px;letter-spacing:.08em}
.centerbox{text-align:center;max-width:1500px;padding:0 120px}
.big{font-size:96px;line-height:1.12;font-weight:400;color:#eef6f9;margin:0}
.big em{font-style:italic;color:#7fc3d4}
.caps{font-family:'Courier New',monospace;font-size:26px;letter-spacing:.3em;
color:#5f9db0;text-transform:uppercase;margin-bottom:40px}
footer{position:absolute;bottom:80px;left:90px;font-family:'Courier New',monospace;
font-size:22px;color:#3d5a66;letter-spacing:.12em}
</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="68">
<div class="grid"></div>
<div class="halo"></div>
<section id="s1" class="clip" data-start="0" data-duration="19" data-track-index="1">
<div class="centerbox">
<div class="kicker">Scene One — The Field</div>
<h1>The Sterile Field</h1>
<div class="sub">laminar airflow · one direction only · out toward me</div>
</div>
</section>
<section id="s2" class="clip" data-start="19" data-duration="15" data-track-index="1">
<div class="centerbox">
<div class="caps">I am the biggest contaminant in the room</div>
<p class="big">So I <em>buy time.</em></p>
<div class="sub" style="margin-top:30px">wash to the elbow · hair · mask · glove cuff over the sleeve</div>
</div>
</section>
<section id="s3" class="clip" data-start="34" data-duration="15" data-track-index="1">
<div class="centerbox">
<div class="caps">One clean sweep</div>
<p class="big">Nothing stirs the air<br/>that isn't already mine.</p>
</div>
</section>
<section id="s4" class="clip" data-start="49" data-duration="19" data-track-index="1">
<div class="centerbox">
<p class="big">A <em>life</em> I will never meet,<br/>but today I hold it for them.</p>
<div class="sub" style="margin-top:30px">label · dose · beyond-use date · clean incubator silence</div>
</div>
</section>
<div class="label">Bibi Tewari · Pharmacy Technician</div>
<footer>Riverview, Florida — compounding discipline</footer>
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
<audio id="voice-s2" src="audio/s2.wav" data-start="19"></audio>
<audio id="voice-s3" src="audio/s3.wav" data-start="34"></audio>
<audio id="voice-s4" src="audio/s4.wav" data-start="49"></audio>
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.12"></audio>
</div>
<script>
window.__timelines = window.__timelines || {};
const tl = gsap.timeline({ paused: true });
// scene 1
tl.from("#s1 .kicker", { opacity:0, y:20, duration:0.8, ease:"power3.out" }, 0.4);
tl.from("#s1 h1", { opacity:0, y:30, duration:1.0, ease:"power3.out" }, 0.6);
tl.from("#s1 .sub", { opacity:0, duration:1.0, ease:"power2.out" }, 1.4);
// scene 2
tl.from("#s2 .caps", { opacity:0, y:14, duration:0.7, ease:"power2.out" }, 19.6);
tl.from("#s2 .big", { opacity:0, y:26, duration:0.9, ease:"power3.out" }, 20.2);
tl.from("#s2 .sub", { opacity:0, duration:0.8 }, 21.4);
// scene 3
tl.from("#s3 .caps", { opacity:0, y:16, duration:0.7, ease:"power2.out" }, 34.6);
tl.from("#s3 .big", { opacity:0, y:26, duration:0.9, ease:"power3.out" }, 35.2);
// scene 4
tl.from("#s4 .big", { opacity:0, y:26, duration:1.0, ease:"power3.out" }, 49.6);
tl.from("#s4 .sub", { opacity:0, duration:0.9 }, 50.8);
// slow ambient drift on halo across the whole film
tl.to(".halo", { x: 40, y: 20, duration: 68, ease:"sine.inOut" }, 0.5);
window.__timelines["main"] = tl;
</script>
</body></html>