@font-face{font-family:Satoshi;src:url('assets/fonts/Satoshi-Regular.woff2') format('woff2');font-weight:400;font-display:optional}@font-face{font-family:Satoshi;src:url('assets/fonts/Satoshi-Medium.woff2') format('woff2');font-weight:500 800;font-display:optional}
:root{--ink:#30483e;--cream:#f5f0e3;--ease:cubic-bezier(.22,.68,0,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:0}body{margin:0;background:var(--cream);color:var(--ink);font-family:Satoshi,Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.65}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #b47a48;outline-offset:6px}button{border:0}h1,h2,p{margin:0}h1,h2{font-weight:400;letter-spacing:-.065em;line-height:.98}h1{font-size:clamp(76px,8.8vw,150px)}h2{font-size:clamp(80px,10vw,164px)}em{font-family:Georgia,serif;font-weight:400;letter-spacing:-.06em}button[hidden],[hidden]{display:none!important}.skip{position:fixed;top:-100px;z-index:100;background:var(--cream);padding:20px}.skip:focus{top:10px}.nav{position:absolute;inset:12px 4.4vw auto;display:flex;align-items:center;justify-content:space-between;z-index:8}.brand{display:flex;align-items:center;width:128px;height:75px}.brand img{width:100%;height:auto}.nav-link{display:flex;gap:22px;align-items:center;font-size:15px;font-weight:500;padding:16px 0}.nav-link span{font-size:22px}.scene{height:135svh;min-height:800px;position:relative}.hero{height:115svh;min-height:780px}.scene-frame{height:100svh;min-height:660px;position:sticky;top:0;overflow:hidden;isolation:isolate;background:var(--cream);--travel:0;--reveal:1}.world,.world img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.world{transform:scale(calc(1.025 + var(--travel)*.045));transform-origin:50% 70%;will-change:transform}.hero-shade,.river-shade,.night-shade,.sanctuary-shade{position:absolute;inset:0;pointer-events:none}.hero-shade{background:linear-gradient(90deg,#f6f0ddd9 0%,#f6f0ddaa 24%,#f6f0dd00 63%),linear-gradient(180deg,#f9f4e778,transparent 28%)}.scene-copy{position:absolute;z-index:3;transform:translateY(calc(var(--travel)*-65px));will-change:transform}.hero-copy{left:7.5%;top:24%;}.eyebrow{font-size:13px;letter-spacing:.16em;font-weight:500;margin-bottom:26px}.primary{display:inline-flex;gap:18px;align-items:center;justify-content:center;border-radius:100px;background:var(--ink);color:#fff9ec;padding:21px 30px;font-size:17px;font-weight:500;margin-top:35px;box-shadow:0 9px 28px #18362618;transition:transform .3s,background .3s}.primary svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.character{position:absolute;pointer-events:none;z-index:2}.character canvas,.fallback{width:100%;height:100%;object-fit:contain;display:block}.hero-character{width:min(43vw,640px);height:min(82vh,820px);left:55%;bottom:8%;transform:translateY(calc(var(--travel)*-25px))}.hello{position:absolute;z-index:4;right:13%;bottom:6%;display:flex;gap:10px;align-items:center;background:#f8f5e7e8;color:var(--ink);border:1px solid #fff7;padding:13px 20px;border-radius:40px;font-size:15px;box-shadow:0 3px 18px #173a2415}.sound-bars{height:16px;display:flex;align-items:center;gap:3px}.sound-bars i{height:8px;width:2px;border-radius:2px;background:currentColor}.sound-bars i:nth-child(2){height:15px}.hello.playing i{animation:speaking .7s ease-in-out infinite alternate}.hello.playing i:nth-child(2){animation-delay:-.2s}.hello.playing i:nth-child(3){animation-delay:-.4s}@keyframes speaking{to{transform:scaleY(.35)}}.foreground{position:absolute;pointer-events:none;z-index:5;width:30vw;mix-blend-mode:multiply;filter:blur(1px);transform-origin:90% 80%;animation:leafSway 12s ease-in-out infinite alternate}.leaf-one{left:-16%;bottom:-12%;rotate:-18deg}.sunlight{position:absolute;inset:-30%;pointer-events:none;mix-blend-mode:screen;opacity:.22;background:conic-gradient(from 175deg at 35% 10%,transparent 0deg,#fff5b8 8deg,transparent 19deg,#fffbd0 28deg,transparent 34deg);animation:lightShift 18s ease-in-out infinite alternate}@keyframes lightShift{to{transform:rotate(4deg);opacity:.36}}@keyframes leafSway{to{transform:rotate(5deg) translateY(-10px)}}.scroll-invite{position:absolute;left:7.5%;bottom:5%;font-size:14px;display:flex;gap:20px;align-items:center;z-index:6}.down{font-size:24px;animation:down 2.5s ease-in-out infinite}@keyframes down{50%{transform:translateY(7px)}}
.river .scene-frame{background:#243c2c;color:#fff4d9}.river-media{position:absolute;inset:0 0 0 35%;overflow:hidden}.river-media video{position:absolute;width:100%;height:100%;object-fit:cover;object-position:50% 51%;transform:scale(calc(1.02 + var(--travel)*.06))}.river-wash{position:absolute;inset:-10%;width:120%;height:120%;object-fit:cover;filter:blur(30px);opacity:.65}.river-shade{background:linear-gradient(90deg,#243c2c 22%,#243c2ce6 37%,#243c2c00 72%),linear-gradient(0deg,#122a2899,transparent 35%)}.river-copy{left:7.5%;top:26%}.river-copy .eyebrow{max-width:240px;line-height:1.5}.scene-whisper{position:absolute;bottom:7%;right:8%;font-size:20px;z-index:3}.night .scene-frame{background:#102529;color:#fff4df}.night-shade{background:linear-gradient(90deg,#102529a8,transparent 68%)}.night-copy{left:7.5%;top:27%}.quiet-cta{font-size:18px;color:inherit;background:transparent;padding:14px 0;border-bottom:1px solid currentColor}.night-copy .quiet-cta{margin-top:30px}.quiet-cta span{padding-left:28px}.night-character{width:32vw;max-width:500px;height:63vh;right:10%;bottom:12%;filter:brightness(.76) sepia(.13);transform:translateY(calc(var(--travel)*-18px))}.lantern-glow{position:absolute;width:15vw;height:15vw;background:#ffca6633;filter:blur(40px);border-radius:50%;left:77%;top:19%;animation:lantern 7s ease-in-out infinite alternate;pointer-events:none}@keyframes lantern{to{opacity:.45;transform:scale(1.2)}}.sanctuary{height:130svh}.sanctuary-shade{background:linear-gradient(90deg,#f6e7c875,#f6e7c811 65%)}.space-copy{top:26%;left:7.5%}.space-copy h2{font-size:clamp(70px,8.3vw,136px)}.coming{font-size:20px;margin-top:30px}.phone-stage{position:absolute;left:64%;top:12%;width:min(25vw,350px);height:76%;transform:translateY(calc(25px - var(--travel)*65px)) rotate(calc(-5deg + var(--travel)*7deg));will-change:transform}.phone{position:relative;z-index:2;aspect-ratio:402/874;border:7px solid #32392f;border-radius:46px;overflow:hidden;background:#f5f4ec;box-shadow:14px 30px 55px #453f2b3d,0 0 0 2px #8f8e7d;max-height:100%;width:100%}.phone img{width:100%;height:100%;object-fit:cover;display:block}.phone-shadow{position:absolute;bottom:-4%;left:-15%;height:45px;width:120%;border-radius:50%;background:#4f4f362b;filter:blur(15px)}footer{display:flex;gap:34px;align-items:center;min-height:135px;padding:24px 5%;font-size:14px}footer .brand{width:100px}footer p{font-size:18px;margin-right:auto}footer button{background:none;color:inherit;padding:15px 0}
.breathing{border:0;margin:0;padding:0;width:100vw;height:100dvh;max-width:none;max-height:none;background:#f4efdf;color:var(--ink);overflow:hidden}.breathing::backdrop{background:#14241c99}.breath-world{position:absolute;inset:0;background:linear-gradient(#f7f2e8a8,#f7f2e888),url('assets/worlds/clearing-wide.webp') center/cover}.breathing.evening{color:#fff5e4}.evening .breath-world{background:linear-gradient(#0d252c40,#0d252c30),url('assets/worlds/night-wide.webp') center/cover}.close{position:absolute;z-index:6;right:28px;top:22px;font-size:32px;width:50px;height:50px;background:#f8f3e6dd;color:var(--ink);border-radius:50%;line-height:1}.sound-control{position:absolute;z-index:6;left:28px;top:26px;border:1px solid currentColor;border-radius:30px;font-size:14px;color:inherit;background:transparent;padding:12px 18px}.breath-heading{position:absolute;top:11%;left:5%;right:5%;text-align:center;z-index:4}.breath-heading h2{font-size:clamp(44px,5.2vw,82px);letter-spacing:-.055em;line-height:1.05}.breath-heading .eyebrow{margin-bottom:15px}.breath-heading p:last-child{margin-top:15px;font-size:16px}.breathing canvas{position:absolute;left:50%;transform:translateX(-50%);height:72%;width:auto;aspect-ratio:760/1000;bottom:8%;z-index:2;max-width:95vw}.breath-controls{position:absolute;bottom:7%;display:flex;gap:42px;justify-content:center;left:5%;right:5%;z-index:5}.breath-controls .quiet-cta{font-size:16px;padding:8px 0}.preview-note{position:absolute;bottom:2.5%;left:0;right:0;text-align:center;font-size:12px;opacity:.65}.privacy{border:0;border-radius:28px;background:var(--cream);color:var(--ink);padding:60px 45px 40px;max-width:570px;width:calc(100% - 32px)}.privacy::backdrop{background:#18352c88;backdrop-filter:blur(8px)}.privacy h2{font-size:50px;margin-bottom:28px}.privacy p{font-size:16px;line-height:1.65;margin:18px 0}.privacy .close{top:12px;right:12px}.noscript{padding:30px;text-align:center}
@media(min-width:1600px){.hero-character{left:55%;bottom:6%;height:85vh;width:43vw;max-width:820px}.hero-copy{top:26%}}
@media(max-width:900px) and (min-width:701px){h1{font-size:77px}h2{font-size:90px}.hero-copy,.river-copy,.night-copy,.space-copy{left:6%}.hero-character{left:53%;width:48vw}.eyebrow{font-size:11px}.phone-stage{left:64%;width:29vw}.space-copy h2{font-size:70px}.coming{font-size:17px}.nav{inset:10px 6% auto}}
@media(max-width:700px){.nav{inset:4px 23px auto}.brand{width:104px;height:70px}.nav-link{font-size:13px;gap:10px}.nav-link span{font-size:18px}.scene{height:125svh;min-height:0}.hero{height:112svh}.scene-frame{height:100svh;min-height:640px}.hero-shade{background:linear-gradient(180deg,#f6f0dde6 0%,#f6f0dd8c 22%,#f6f0dd00 54%)}.hero-copy{left:0;right:0;top:15%;text-align:center}.eyebrow{font-size:10px;letter-spacing:.17em;margin-bottom:18px}h1{font-size:clamp(62px,13.8vw,94px);line-height:.99}h2{font-size:clamp(72px,17vw,106px)}.primary{font-size:15px;padding:17px 24px;gap:13px;margin-top:23px}.primary svg{width:21px;height:21px}.hero-character{width:94vw;height:57svh;max-height:540px;left:3%;bottom:7%;}.hello{right:50%;transform:translateX(50%);bottom:5.5%;font-size:13px;padding:11px 17px;white-space:nowrap}.scroll-invite{bottom:1.2%;left:0;right:0;justify-content:center;font-size:11px;gap:10px}.scroll-invite .down{font-size:18px}.foreground{width:55vw}.leaf-one{bottom:-5%;left:-30%}.sunlight{opacity:.14}.river-media{inset:0}.river-media video{object-position:center 48%}.river-shade{background:linear-gradient(180deg,#16351fc9 0%,#16351f25 40%,#16351f00 65%,#10281d50 100%)}.river-copy{left:8%;top:10%;}.river-copy .eyebrow{max-width:none}.river-copy h2{font-size:24vw;line-height:.87}.scene-whisper{right:8%;bottom:5%;font-size:17px}.night-copy{left:8%;top:10%}.night-shade{background:linear-gradient(#0e252cc2,transparent 62%)}.night-copy .eyebrow{font-size:10px}.night-copy .quiet-cta{font-size:16px;margin-top:24px}.night-character{left:15%;right:auto;width:70vw;height:47svh;bottom:20%;max-height:460px}.lantern-glow{left:69%;top:30%;width:23vw;height:23vw;filter:blur(25px)}.space-copy{left:0;right:0;top:10%;text-align:center}.space-copy h2{font-size:14vw}.space-copy .eyebrow{font-size:10px}.coming{font-size:16px;margin-top:15px}.space-copy .primary{display:none}.sanctuary-shade{background:linear-gradient(#f8ead999,transparent 55%)}.phone-stage{width:49vw;max-width:220px;left:25.5%;top:42%;height:52%;transform:translateY(calc(12px - var(--travel)*25px)) rotate(calc(-5deg + var(--travel)*7deg))}.phone{border-width:5px;border-radius:30px}.phone-shadow{bottom:-3%;height:22px}footer{padding:22px 7%;min-height:120px;gap:12px;flex-wrap:wrap}footer .brand{width:83px;height:45px}footer p{font-size:14px;margin:0 0 0 auto}footer button{margin-left:auto;font-size:12px;padding:0}footer>span{font-size:12px}footer>button:before{content:'';display:block}.breath-world{background:linear-gradient(#f7f2e8ac,#f7f2e866),url('assets/worlds/clearing-portrait.webp') center/cover}.evening .breath-world{background:linear-gradient(#0d252c44,#0d252c10),url('assets/worlds/night-portrait.webp') center/cover}.breath-heading{top:15%}.breath-heading h2{font-size:45px}.breath-heading p:last-child{font-size:14px;max-width:270px;margin:15px auto}.breathing canvas{height:62%;bottom:13%;max-width:100vw;width:100vw}.breath-controls{bottom:9%}.preview-note{bottom:3.5%}.close{right:17px;top:17px}.sound-control{left:22px;top:23px}.privacy{padding:65px 28px 25px}.privacy h2{font-size:46px}}
@media(max-width:700px) and (max-height:730px){.hero-copy{top:13%}h1{font-size:13vw}.hero-character{height:53svh;bottom:8%}.eyebrow{margin-bottom:14px}.scene-frame{min-height:570px}.hero-copy .primary{margin-top:17px;padding:14px 22px}.phone-stage{top:46%;height:48%;width:43vw;left:28.5%}.night-copy{top:10%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.scene{height:100svh}.scene-frame{position:relative}.world,.scene-copy,.hero-character,.night-character,.phone-stage{transform:none!important}.foreground,.sunlight,.lantern-glow,.down,.sound-bars i{animation:none!important}.primary{transition:none}.hero-character{transform:none}.phone-stage{rotate:0deg}}

@media(max-width:700px){.hero-copy .eyebrow,.space-copy .eyebrow{font-size:12px}.scroll-invite{color:#fff5df;bottom:1.5%;text-shadow:0 1px 8px #132615}.scroll-invite .down{font-size:26px}}

/* Scene boundaries are real viewport boundaries. Native snapping preserves
   touch, wheel, keyboard and browser history without trapping scroll events. */
html{scroll-snap-type:y mandatory}
.scene,.hero,.sanctuary{height:100svh;min-height:660px;scroll-snap-align:start;scroll-snap-stop:always}
.scene-frame{position:relative;height:100%;min-height:0}
footer{scroll-snap-align:end;scroll-snap-stop:always}
/* One square-pixel drawing scale with room for the full arm sweep. Width and
   height are never independently stretched to fill an arbitrary rectangle. */
.character canvas{position:absolute;left:50%;bottom:0;width:auto;height:100%;max-width:none;aspect-ratio:1100/1000;transform:translateX(-50%);object-fit:contain}
.breathing canvas{width:auto;height:min(72dvh,86.36vw);max-width:none;aspect-ratio:1100/1000;object-fit:contain}
.phone-stage{width:auto;height:min(76svh,54vw);aspect-ratio:402/874;left:64%;top:12%}
.phone{width:100%;height:100%;max-height:none;aspect-ratio:402/874;border-radius:clamp(24px,3vw,46px);border-width:clamp(4px,.5vw,7px)}
.phone img{width:100%;height:auto;object-fit:contain}
@media(max-width:900px) and (min-width:701px){.phone-stage{left:66%;height:min(67svh,62vw);top:18%}.space-copy{left:6%;top:29%}.space-copy h2{font-size:clamp(58px,8vw,75px)}}
@media(max-width:700px){
 .scene,.hero,.sanctuary{height:100svh;min-height:560px}
 .hero-copy{top:14%}.hero-character{height:min(57svh,118vw);width:100%;left:0}
 .night-character{width:100%;left:0;height:min(47svh,100vw)}
 .breathing canvas{width:auto;height:min(62dvh,100vw);max-width:none;bottom:14%}
 .space-copy{top:8%}.space-copy h2{font-size:clamp(44px,10.8vw,68px);line-height:1.02}
 .space-copy .eyebrow{font-size:11px;margin-bottom:16px;letter-spacing:.12em}.coming{margin-top:14px}
 .phone-stage{height:min(60svh,140vw);width:auto;max-width:none;top:auto;bottom:4%;left:50%;transform:translateX(-50%) rotate(calc(-5deg + var(--travel)*7deg));aspect-ratio:402/874}
 .phone{border-radius:clamp(25px,6vw,38px);border-width:5px}.phone img{height:auto}
}
@media(max-width:700px) and (max-height:730px){
 .scene,.hero,.sanctuary{min-height:540px}.space-copy{top:6%}.space-copy h2{font-size:clamp(40px,9vw,60px)}
 .space-copy .eyebrow{font-size:10px;margin-bottom:10px}.coming{font-size:14px;margin-top:10px}
 .phone-stage{height:58svh;top:auto;bottom:3%;width:auto;left:50%}
 .breathing canvas{height:min(60dvh,95vw);bottom:14%}
}
@media(max-height:540px) and (min-width:701px){.scene,.hero,.sanctuary{min-height:540px}.phone-stage{height:390px;top:12%}}
@media(prefers-reduced-motion:reduce){html{scroll-snap-type:y proximity}.phone-stage{transform:translateX(0)!important}@media(max-width:700px){.phone-stage{transform:translateX(-50%)!important}}}

/* The first frame and live rig use exactly the same art, coordinates and scale. */
.hero-character .miro-poster{position:absolute;left:50%;bottom:0;width:auto;height:100%;max-width:none;aspect-ratio:1100/1000;transform:translateX(-50%);object-fit:contain}
.hero-character canvas{visibility:hidden}
.hero-character.rig-ready canvas{visibility:visible}
.hero-character.rig-ready .miro-poster{visibility:hidden}
