110 lines
5.2 KiB
HTML
110 lines
5.2 KiB
HTML
|
|
<!doctype html>
|
|||
|
|
<html><head><meta charset="UTF-8"/>
|
|||
|
|
<title>Breath Protocol: 10-Second Coherence</title>
|
|||
|
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
|||
|
|
<style>
|
|||
|
|
body{margin:0;background:#0a0a0a;color:#e0d4c0;font-family:'Georgia',serif}
|
|||
|
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden}
|
|||
|
|
.clip{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
|
|||
|
|
.waveform{
|
|||
|
|
position:absolute;left:0;right:0;bottom:120px;
|
|||
|
|
height:200px;border-radius:40px 40px 0 0;
|
|||
|
|
background:linear-gradient(to top,#1a1a1a,#2a2a2a,#0a0a0a);
|
|||
|
|
opacity:0.3;filter:blur(20px)
|
|||
|
|
}
|
|||
|
|
.peak{
|
|||
|
|
position:absolute;left:50%;top:20%;transform:translate(-50%,0);
|
|||
|
|
width:4px;height:0;background:#d4a574;opacity:0.6
|
|||
|
|
}
|
|||
|
|
.label{
|
|||
|
|
position:absolute;bottom:60px;left:50%;transform:translateX(-50%);
|
|||
|
|
font-size:28px;letter-spacing:4px;color:#d4a574;opacity:0
|
|||
|
|
}
|
|||
|
|
.breath-meter{
|
|||
|
|
position:absolute;right:60px;top:60px;
|
|||
|
|
width:60px;height:60px;border:2px solid #8b8680;border-radius:50%;
|
|||
|
|
display:grid;place-items:center;font-size:14px;opacity:0
|
|||
|
|
}
|
|||
|
|
.meter-fill{
|
|||
|
|
position:absolute;width:100%;height:100%;border-radius:50%;
|
|||
|
|
background:rgba(212,165,116,0.1);transition:background 0.3s
|
|||
|
|
}
|
|||
|
|
.caption-box{
|
|||
|
|
position:absolute;bottom:40px;left:0;right:0;
|
|||
|
|
text-align:center;font-size:24px;letter-spacing:2px;
|
|||
|
|
color:#e0d4c0;opacity:0;mix-blend-mode:screen
|
|||
|
|
}
|
|||
|
|
</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: Inhale (0–10s) -->
|
|||
|
|
<section id="s1" class="clip" data-start="0" data-duration="10" data-track-index="1">
|
|||
|
|
<div class="waveform" id="w1"></div>
|
|||
|
|
<div class="peak" id="p1"></div>
|
|||
|
|
<div class="label" id="l1">INHALE</div>
|
|||
|
|
<div class="breath-meter"><div class="meter-fill"></div><span id="bm1">0%</span></div>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<!-- Scene 2: Hold (10–20s) -->
|
|||
|
|
<section id="s2" class="clip" data-start="10" data-duration="10" data-track-index="1">
|
|||
|
|
<div class="waveform" id="w2"></div>
|
|||
|
|
<div class="peak" id="p2"></div>
|
|||
|
|
<div class="label" id="l2">COHERENCE</div>
|
|||
|
|
<div class="breath-meter"><div class="meter-fill"></div><span id="bm2">∞</span></div>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<!-- Scene 3: Exhale (20–30s) -->
|
|||
|
|
<section id="s3" class="clip" data-start="20" data-duration="10" data-track-index="1">
|
|||
|
|
<div class="waveform" id="w3"></div>
|
|||
|
|
<div class="peak" id="p3"></div>
|
|||
|
|
<div class="label" id="l3">EXHALE</div>
|
|||
|
|
<div class="breath-meter"><div class="meter-fill"></div><span id="bm3">0%</span></div>
|
|||
|
|
</section>
|
|||
|
|
|
|||
|
|
<!-- Captions -->
|
|||
|
|
<div id="cap-s1" class="caption-box" data-start="0">Five seconds in, the vagus nerve wakes</div>
|
|||
|
|
<div id="cap-s2" class="caption-box" data-start="10">At the apex, heart and mind align</div>
|
|||
|
|
<div id="cap-s3" class="caption-box" data-start="20">Five seconds out, the system resets</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<script>
|
|||
|
|
window.__timelines = window.__timelines || {};
|
|||
|
|
const tl = gsap.timeline({ paused: true });
|
|||
|
|
|
|||
|
|
// Scene 1: Inhale
|
|||
|
|
tl.to("#w1", { scaleY: 1.8, opacity: 0.8, duration: 8, ease: "expo.inOut" }, 0.5);
|
|||
|
|
tl.to("#p1", { height: 400, opacity: 1, duration: 9, ease: "power2.out" }, 0.2);
|
|||
|
|
tl.to("#l1", { opacity: 1, y: 0, duration: 1.5, ease: "power2.out" }, 1.0);
|
|||
|
|
tl.to("#bm1 span", { innerText: "100%", duration: 8, ease: "none" }, 0.5);
|
|||
|
|
tl.to("#cap-s1", { opacity: 1, duration: 1.5, ease: "power2.out" }, 0.5);
|
|||
|
|
tl.to("#cap-s1", { opacity: 0, duration: 1.5, ease: "power2.in" }, 8.5);
|
|||
|
|
|
|||
|
|
// Scene 2: Hold
|
|||
|
|
tl.to("#w2", { scaleY: 1.8, opacity: 0.9, duration: 0.5, ease: "none" }, 10);
|
|||
|
|
tl.to("#p2", { height: 600, opacity: 1, duration: 2, ease: "power2.out" }, 10.2);
|
|||
|
|
tl.to("#l2", { opacity: 1, y: 0, duration: 1.5, ease: "power2.out" }, 11.0);
|
|||
|
|
tl.to("#bm2 .meter-fill", { backgroundColor: "rgba(212,165,116,0.6)", duration: 8, ease: "none" }, 10.5);
|
|||
|
|
tl.to("#cap-s2", { opacity: 1, duration: 1.5, ease: "power2.out" }, 10.5);
|
|||
|
|
tl.to("#cap-s2", { opacity: 0, duration: 1.5, ease: "power2.in" }, 18.5);
|
|||
|
|
|
|||
|
|
// Scene 3: Exhale
|
|||
|
|
tl.to("#w3", { scaleY: 1.8, opacity: 0.8, duration: 0.5, ease: "none" }, 20);
|
|||
|
|
tl.to("#p3", { height: 400, opacity: 1, duration: 1, ease: "power2.out" }, 20.2);
|
|||
|
|
tl.to("#l3", { opacity: 1, y: 0, duration: 1.5, ease: "power2.out" }, 21.0);
|
|||
|
|
tl.to("#bm3 span", { innerText: "0%", duration: 8, ease: "none" }, 20.5);
|
|||
|
|
tl.to("#w3", { scaleY: 0.2, opacity: 0.2, duration: 8, ease: "expo.inOut" }, 20.5);
|
|||
|
|
tl.to("#cap-s3", { opacity: 1, duration: 1.5, ease: "power2.out" }, 20.5);
|
|||
|
|
tl.to("#cap-s3", { opacity: 0, duration: 1.5, ease: "power2.in" }, 28.5);
|
|||
|
|
|
|||
|
|
window.__timelines["main"] = tl;
|
|||
|
|
</script>
|
|||
|
|
</body></html>
|