:root{--ink:#f6eddb;--muted:#b8cac7;--gold:#dcc59b;--rose:#e4adaf;--ease:cubic-bezier(.22,1,.36,1);--mx:0px;--my:0px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#122f3b;color:var(--ink);font-family:Arial,Helvetica,sans-serif}body{height:100dvh;min-height:620px;overflow:hidden;transition:background 2s}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #e8bca9;outline-offset:6px}button{border:0}button:disabled{opacity:.3;cursor:default}button[hidden],[hidden]{display:none!important}.defs{position:absolute;width:0;height:0;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden}header{height:96px;position:absolute;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:0 6%;z-index:30}.wordmark{font:italic 45px Georgia,serif;text-decoration:none;color:var(--ink)}.wordmark span{font-size:25px;color:var(--gold)}.dedication{font-size:10px;letter-spacing:.26em;color:#c2cec8}.icon-button{background:transparent;min-width:44px;min-height:44px;font-size:24px;border-radius:50%;transition:background .25s,transform .25s}.icon-button:hover{background:#ffffff14;transform:translateY(-2px)}#sound{font-size:22px;padding:8px 12px;border:1px solid #ffffff26;border-radius:28px}#sound span{font-size:11px;letter-spacing:.03em;margin-left:4px}#sound[aria-pressed=true]{border-color:var(--gold);color:var(--gold)}#theater{position:absolute;inset:0;isolation:isolate;overflow:hidden}#atmosphere{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:22}.world{position:absolute;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 70% 38%,#527a7845,transparent 55%),linear-gradient(#122b38,#1c4148);transition:background 2.5s}.aurora{position:absolute;width:90%;height:60%;top:5%;left:15%;background:radial-gradient(ellipse,#7ea8a426,transparent 65%);filter:blur(35px);animation:aurora 14s ease-in-out infinite}.sun{position:absolute;width:130px;height:130px;background:#f4e6b9;border-radius:50%;top:28%;left:72%;box-shadow:0 0 110px #edcf9d55;opacity:0;transition:opacity 2s,transform 2s}.moon{position:absolute;width:135px;height:135px;border-radius:50%;background:#ead9b6;box-shadow:0 0 100px #d9c7a52b;top:22%;left:76%;transform:translate(var(--mx),var(--my));transition:opacity 2s}.moon:after{content:'';position:absolute;width:125px;height:125px;border-radius:50%;background:#1a3742;left:-18px;top:-12px}.moon span{position:absolute;inset:-18px;border:1px solid #ead9b620;border-radius:50%}.clouds{position:absolute;width:140%;height:34%;top:22%;left:-10%;opacity:.17;animation:cloudDrift 38s ease-in-out infinite alternate;transition:opacity 2s}.landscape{position:absolute;bottom:0;width:110%;left:-5%;height:54%;transform:translate(calc(var(--mx)*-.4),calc(var(--my)*-.4));transition:filter 2s}.near{height:30%;transform:translate(calc(var(--mx)*-.8),calc(var(--my)*-.5));bottom:-2%}.river{stroke-dasharray:8 4;animation:riverFlow 7s linear infinite}.tree{position:absolute;height:89%;bottom:-8%;width:28%;transform-origin:center bottom;animation:treeSway 13s ease-in-out infinite alternate;transition:opacity 2s}.tree-left{left:-12%}.tree-right{right:-11%;animation-delay:-5s}.garden{position:absolute;bottom:-20px;left:0;width:100%;height:20%;pointer-events:auto;z-index:6}.flower-button{position:absolute;bottom:0;background:none;padding:0;width:70px;height:140px;transform-origin:center bottom;animation:flowerSway var(--sway,5s) ease-in-out infinite alternate;transition:filter 1s}.flower-button svg{width:100%;height:100%;overflow:visible}.flower-button:hover{filter:brightness(1.3)}.flower-button.bloomed svg{animation:bloom 1s var(--ease);filter:drop-shadow(0 0 14px #efd2ab)}.butterfly-guide{position:absolute;top:46%;left:72%;width:66px;z-index:10;animation:butterflyFlight 17s ease-in-out infinite;filter:drop-shadow(0 0 12px #f9d2b533)}.butterfly-guide svg{overflow:visible}.wing{transform-box:fill-box;transform-origin:right center;animation:wingFlap .42s ease-in-out infinite alternate}.rightwing{transform-origin:left center;animation-delay:-.1s}.scene{position:absolute;inset:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .9s,visibility .9s;z-index:12}.scene.active{opacity:1;visibility:visible;pointer-events:auto}.scene:not(.active) *{animation-play-state:paused!important}.cover{display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:110px 10% 100px;gap:5%}.cover-copy{position:relative;z-index:3}.eyebrow{font-size:10px;letter-spacing:.24em;font-weight:500;margin:0 0 24px;color:var(--gold)}h1,h2{font-family:Georgia,'Times New Roman',serif;font-weight:400;letter-spacing:-.05em;line-height:1.04;margin:0}h1{font-size:clamp(58px,7.6vw,112px)}h1 em,h2 em{font-weight:400;color:var(--rose)}.intro{color:var(--muted);line-height:1.75;font-size:15px;margin:26px 0 28px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:32px;border-radius:32px;background:var(--ink);color:#25414a;padding:17px 25px;font-size:13px;box-shadow:0 6px 40px #0002;transition:transform .3s,box-shadow .3s}.primary:hover{transform:translateY(-3px);box-shadow:0 8px 45px #e1c5a222}.primary span{font-size:21px;line-height:12px}.small-note{font-size:10px;color:#afc0ba;letter-spacing:.03em;margin:19px 0}.cover-art{position:relative;height: min(57vh,530px);width:100%;display:flex;align-items:flex-end;justify-content:center;transform:translate(calc(var(--mx)*.5),calc(var(--my)*.5))}.cover-character{height:92%;width:auto;z-index:2;overflow:visible;animation:girlFloat 7s ease-in-out infinite}.halo{position:absolute;width:95%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#acc2af25,transparent 67%);top:-10%;left:2%}.orbital{position:absolute;width:100%;aspect-ratio:1;border:1px solid #d8c49f2b;border-radius:50%;top:-9%;transform:rotate(-20deg) scaleY(.87)}.orbital-two{width:110%;top:-14%;left:-5%;border-style:dashed;opacity:.5;animation:orbit 90s linear infinite}.art-star{position:absolute;color:var(--gold);animation:starPulse 4s ease-in-out infinite}.art-star.a{font-size:48px;top:10%;left:9%}.art-star.b{font-size:21px;top:28%;right:1%;animation-delay:-1s}.art-star.c{font-size:38px;bottom:14%;left:2%;animation-delay:-3s}.handwritten{position:absolute;bottom:-26px;right:0;transform:rotate(-8deg);font:italic 19px Georgia,serif;color:#dbc7a9}.rose-mini{position:absolute;left:20%;bottom:6%;font-size:55px;color:var(--rose);animation:flowerSway 4s infinite alternate}.cover-bottom{position:absolute;bottom:40px;left:6%;right:6%;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.16em;color:#bbcab9}.cover-bottom span:last-child{font:italic 17px Georgia;letter-spacing:0}.girl-head{transform-origin:130px 160px;animation:headTilt 6s ease-in-out infinite}.eyes{transform-origin:center;transform-box:fill-box;animation:blink 5.7s infinite}.hair-back{transform-origin:130px 45px;animation:hairSway 4.5s ease-in-out infinite alternate}.arm-right{transform-origin:165px 192px;animation:wave 4s ease-in-out infinite}.arm-left{transform-origin:94px 189px;animation:armSway 4s ease-in-out infinite alternate}.scene-heading{position:absolute;top:17%;left:15%;right:15%;text-align:center;z-index:6}.scene-heading .eyebrow{margin-bottom:17px}h2{font-size:clamp(42px,4.5vw,65px)}.scene-heading>p:last-child{color:#c8d4c8;font-size:13px;line-height:1.7;margin:18px 0 0}.active .scene-heading{animation:headingReveal 1.5s var(--ease) both .45s}.scene-subtitle{position:absolute;bottom:115px;width:100%;left:0;text-align:center;padding:0 25px;font:italic 17px/1.5 Georgia,serif;color:#dfd5bd;z-index:15}.active .scene-subtitle{animation:headingReveal 1.5s var(--ease) both 3s}.memory-portal{position:absolute;z-index:4;filter:drop-shadow(0 14px 35px #0b253455);transform:translate(var(--mx),var(--my))}.photo-button{display:block;background:#efe5d0;padding:7px;width:100%;height:100%;border-radius:inherit;box-shadow:0 0 0 1px #e5d2af55;overflow:hidden}.photo-button img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit;transition:transform 5s ease;pointer-events:none}.photo-button:hover img{transform:scale(1.08)}.photo-caption{position:absolute;bottom:-32px;left:-20%;width:140%;text-align:center;font:italic 16px Georgia;color:#f3ddc4}.childhood-memory{height:31vh;max-height:280px;width:36vh;max-width:325px;top:43%;left:54%;border-radius:48% 48% 5px 5px;transform:rotate(4deg)}.childhood-memory img{object-position:35% 55%}.portal-ring{position:absolute;inset:-18px;border:1px solid #eed4a15e;border-radius:inherit;pointer-events:none}.walking-child{position:absolute;bottom:19%;left:26%;width: min(25vw,240px);height:35vh;z-index:7}.walking-child svg{width:100%;height:100%;overflow:visible}.active .walking-child{animation:childWalk 19s linear both}.walking-child .leg-a{transform-origin:110px 310px;animation:walkLeg .8s infinite alternate}.walking-child .leg-b{transform-origin:146px 310px;animation:walkLeg .8s infinite alternate-reverse}.flag{transform-origin:220px 80px;animation:flagWave 2s infinite alternate}.active .childhood-memory{animation:portalOpen 2s var(--ease) both 1.6s,memoryFloat 7s ease-in-out infinite 3.6s}.paper-birds{position:absolute;top:43%;left:10%;width:25%;display:flex;gap:30px;font-size:35px;color:#ecddb7;animation:birdFlight 20s linear infinite}.paper-birds span:nth-child(2){transform:translateY(-25px)}.growing-character{position:absolute;left:29%;bottom:20%;height:35vh;width:23vw}.growing-character svg{position:absolute;height:100%;width:100%;overflow:visible}.past-character{opacity:0}.active .past-character{animation:growPast 6s var(--ease) both}.now-character{opacity:0}.active .now-character{animation:growNow 6s var(--ease) both}.growth-glow{position:absolute;inset:-30%;border-radius:50%;background:radial-gradient(#f5dfb455,transparent 65%);animation:starPulse 5s infinite}.dress-memory{height:32vh;max-height:310px;aspect-ratio:.8;top:43%;right:29%;border-radius:100px 100px 5px 5px}.dress-memory img{object-position:center 31%}.active .dress-memory{animation:portalOpen 2s var(--ease) both 3.2s,memoryFloat 7s ease-in-out infinite 5.2s}.bloom-message{position:absolute;bottom:158px;width:100%;text-align:center;color:#aebea9;font-size:10px;letter-spacing:.06em}.blue-bouquet{position:absolute;left:24%;bottom:24%;width:22vw;height:32vh;animation:bouquetSway 5s infinite alternate}.blue-bouquet svg{width:100%;height:100%;overflow:visible}.rose-head{transform-origin:120px 130px;animation:flowerSway 6s infinite alternate}.blue-memory{height:31vh;max-height:300px;aspect-ratio:.85;top:43%;right:27%;border-radius:5px;transform:rotate(5deg)}.active .blue-memory{animation:portalOpen 2s var(--ease) both 1.8s,memoryFloat 7s ease-in-out infinite 3.8s}.road{position:absolute;bottom:18%;height:13%;width:100%;opacity:.65}.car{position:absolute;bottom:20%;width:135px;left:-150px;z-index:8;animation:drive 18s linear infinite}.car svg{width:100%;overflow:visible;animation:carBounce .8s infinite alternate}.car-heart{position:absolute;top:-27px;right:38px;font-size:25px;color:#eab1b5;animation:carBounce 1s infinite alternate}.hanging-memory{position:absolute;top:43%;height:29vh;max-height:290px;width:23vh;max-width:220px;padding:0 0 23px;background:#eee2cc;transform-origin:50% -130%;box-shadow:0 12px 40px #041c2b44;animation:hangSway 6s infinite alternate}.hanging-memory .photo-button{padding:7px;box-shadow:none}.hanging-memory .photo-caption{color:#5e6a66;bottom:4px;font-size:12px}.hang-one{left:32%;animation-delay:-2s}.hang-two{right:30%;top:46%}.thread{position:absolute;bottom:100%;left:50%;height:55vh;width:1px;background:linear-gradient(transparent,#b4ae9877)}.lanterns{position:absolute;inset:20% 0 15%;pointer-events:none;z-index:2}.lantern{position:absolute;width:17px;height:23px;background:linear-gradient(#ecb978,#f8dc9c);border-radius:3px 3px 8px 8px;box-shadow:0 0 22px #f6be6577;animation:lanternRise var(--duration) linear infinite;animation-delay:var(--delay)}.lantern:after{content:'';position:absolute;inset:2px 5px;border-left:1px solid #af8a57;border-right:1px solid #af8a57;opacity:.5}.constellation{position:absolute;top:37%;left:18%;width:65%;height:38%;stroke-dashoffset:0}.active .constellation path{stroke-dasharray:800;stroke-dashoffset:800;animation:drawLine 8s ease forwards 1s}.portrait-star{position:absolute;border-radius:50%;width:21vh;height:21vh;max-width:200px;max-height:200px;animation:portraitFloat 7s ease-in-out infinite}.portrait-star .photo-button{border-radius:50%;padding:5px}.portrait-star:before{content:'';position:absolute;inset:-13px;border:1px solid #dec9a54d;border-radius:50%;pointer-events:none}.portrait-star span{position:absolute;width:180%;left:-40%;bottom:-40px;text-align:center;font:italic 17px Georgia;color:#decbb0}.portrait-a{left:21%;top:48%}.portrait-b{left:43%;top:43%;animation-delay:-2s}.portrait-c{right:17%;top:50%;animation-delay:-4s}.portrait-c img{object-position:center 23%}.finale .scene-heading{top:20%}.envelope{position:absolute;top:49%;left:calc(50% - 130px);width:260px;height:160px;isolation:isolate;background:none;perspective:1000px;animation:envelopeFloat 6s ease-in-out infinite;filter:drop-shadow(0 15px 25px #061c2f66)}.envelope-back{position:absolute;inset:0;background:#d5b89e;border-radius:4px}.letter-peek{position:absolute;inset:10px 13px;background:#fff4df;color:#696458;padding-top:20px;font:italic 20px Georgia;transition:transform .8s}.envelope-front{position:absolute;inset:0;background:#e8ccb0;clip-path:polygon(0 0,50% 60%,100% 0,100% 100%,0 100%);z-index:4}.envelope-flap{position:absolute;inset:0;background:#f1d8b8;clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top center;transition:transform .8s;z-index:5}.seal{position:absolute;top:67px;left:calc(50% - 19px);width:38px;height:38px;display:grid;place-items:center;background:#bd7c85;border:3px double #ddadad;border-radius:50%;z-index:6;font:italic 18px Georgia;transition:opacity .4s}.envelope.opening .envelope-flap{transform:rotateX(180deg);z-index:1}.envelope.opening .letter-peek{transform:translateY(-70px)}.envelope.opening .seal{opacity:0}.envelope-hint{position:absolute;top:calc(49% + 187px);text-align:center;width:100%;font:italic 16px Georgia;color:var(--gold);animation:starPulse 3s infinite}.final-character{position:absolute;height:30vh;width:19vw;bottom:21%;left:14%;animation:girlFloat 6s infinite}.final-character svg{height:100%;width:100%;overflow:visible}.transition-veil{position:absolute;inset:0;z-index:25;pointer-events:none;display:grid;place-items:center;background:radial-gradient(ellipse,#ede0bd, #c2cdbc);opacity:0;clip-path:circle(0 at 70% 45%)}.transition-veil span{color:#66847e;font-size:80px}.transition-veil.sweeping{animation:sceneWipe 1.35s var(--ease)}.player{position:absolute;bottom:max(15px,env(safe-area-inset-bottom));height:66px;left:50%;transform:translateX(-50%);width:min(680px,92%);z-index:35;display:flex;align-items:center;gap:7px;background:#102c38ad;backdrop-filter:blur(15px);border:1px solid #ded7b81f;padding:8px 15px;border-radius:40px}.timeline{flex:1;min-width:0;padding:0 7px}.chapter-nav{display:flex;justify-content:space-between;margin-bottom:5px}.chapter-dot{height:16px;min-width:30px;display:flex;align-items:center;justify-content:center;padding:0;background:none}.chapter-dot:before{content:'';width:5px;height:5px;border-radius:50%;background:#82989b;transition:background .5s,transform .5s}.chapter-dot[aria-current=true]:before{background:#f0d8b0;transform:scale(1.6)}.progress-track{height:2px;background:#79959b40;overflow:hidden;border-radius:4px}#progress{height:100%;width:0%;background:#debd98}.timeline-label{display:flex;justify-content:space-between;font-size:9px;margin-top:7px;color:#c1c9bb}.player .icon-button{font-size:22px;min-width:36px;min-height:40px}dialog{color:#3d504f;border:0;position:fixed;border-radius:6px;padding:0;box-shadow:0 25px 100px #0009;max-height:86dvh;max-width:90vw}dialog::backdrop{background:#061d2deb;backdrop-filter:blur(10px)}dialog[open]{animation:dialogReveal .6s var(--ease)}.dialog-close{position:absolute;right:10px;top:10px;border-radius:50%;width:42px;height:42px;background:#142e38bd;color:#fff;font-size:27px;z-index:4}.letter-paper{width:540px;max-width:90vw;padding:42px 48px;background:#f5efdf;background-image:repeating-linear-gradient(0deg,transparent,transparent 30px,#bcb29812 31px);overflow:auto}.letter-top{display:block;text-transform:uppercase;font-size:9px;letter-spacing:.15em;color:#8a8574;margin:0 35px 30px 0}.letter-paper h2{font:italic 34px Georgia;color:#52716b;letter-spacing:-.03em}.letter-paper p{font:15px/1.85 Georgia;margin:18px 0}.letter-paper .letter-sign{color:#98636a;font-size:20px;font-style:italic;margin-top:27px}.letter-sign span{font-size:14px}.letter-paper .primary{background:#315950;color:#f4eddc;font-size:11px;padding:13px 19px;margin-top:8px}#photo-modal{background:#f5eddd;padding:10px;max-width:90vw}#photo-modal img{display:block;width:auto;max-width:83vw;max-height:70dvh;object-fit:contain;border-radius:3px}#photo-modal p{font:italic 16px Georgia;text-align:center;margin:15px 6px}.paused *,.paused *:before,.paused *:after{animation-play-state:paused!important}.paused dialog,.paused dialog *,.paused dialog::backdrop{animation-play-state:running!important}body[data-scene="1"] .world,body[data-scene="2"] .world{background:radial-gradient(ellipse at 55% 35%,#eedbb078,transparent 70%),linear-gradient(#688b8b,#abc1a6)}body[data-scene="1"] .sun,body[data-scene="2"] .sun{opacity:.8;transform:translateY(-20px)}body[data-scene="1"] .moon,body[data-scene="2"] .moon{opacity:0}body[data-scene="1"] .landscape,body[data-scene="2"] .landscape{filter:brightness(1.5) saturate(.7)}body[data-scene="1"] .clouds,body[data-scene="2"] .clouds{opacity:.6}body[data-scene="1"] .scene-heading,body[data-scene="2"] .scene-heading{text-shadow:0 2px 25px #20484366}body[data-scene="3"] .world{background:radial-gradient(ellipse at 50% 50%,#82a7be33,transparent 65%),linear-gradient(#1c3e52,#3f6472)}body[data-scene="4"] .world{background:radial-gradient(ellipse at 48% 80%,#b88d6545,transparent 65%),linear-gradient(#25303d,#544d51)}body[data-scene="5"] .world,body[data-scene="6"] .world{background:radial-gradient(ellipse at 50% 35%,#59727644,transparent 65%),linear-gradient(#142a3b,#223c4b)}body[data-scene="5"] .tree{opacity:.4}.particle-burst{position:fixed;z-index:45;pointer-events:none;color:#e5b1b2;animation:burstRise 1.7s ease-out forwards;font:18px Georgia}.active .cover-copy{animation:headingReveal 1.3s var(--ease) both}.active .cover-art{animation:headingReveal 2s var(--ease) both .2s}
@keyframes headingReveal{from{opacity:0;transform:translateY(25px);filter:blur(5px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes girlFloat{50%{transform:translateY(-9px) rotate(1deg)}}@keyframes headTilt{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes blink{0%,42%,45%,100%{transform:scaleY(1)}43%,44%{transform:scaleY(.08)}}@keyframes hairSway{to{transform:rotate(2deg)}}@keyframes wave{0%,30%,100%{transform:rotate(0)}40%,60%{transform:rotate(-17deg)}50%,70%{transform:rotate(-5deg)}}@keyframes armSway{to{transform:rotate(5deg)}}@keyframes starPulse{50%{opacity:.45;transform:scale(.86)}}@keyframes orbit{to{transform:rotate(340deg) scaleY(.87)}}@keyframes aurora{50%{transform:translate(-8%,8%) rotate(15deg);opacity:.5}}@keyframes treeSway{to{transform:rotate(1.5deg)}}@keyframes flowerSway{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}@keyframes wingFlap{to{transform:scaleX(.35)}}@keyframes butterflyFlight{0%,100%{transform:translate(0,0) rotate(-12deg)}25%{transform:translate(-190px,-90px) rotate(15deg)}50%{transform:translate(20px,70px) rotate(-8deg)}75%{transform:translate(150px,-50px) rotate(8deg)}}@keyframes cloudDrift{to{transform:translateX(12%)}}@keyframes riverFlow{to{stroke-dashoffset:-80}}@keyframes childWalk{0%{transform:translateX(-95px) scale(.9)}45%,100%{transform:translateX(15px) scale(1)}}@keyframes walkLeg{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}@keyframes flagWave{to{transform:skewY(6deg) scaleX(.94)}}@keyframes portalOpen{from{opacity:0;clip-path:circle(0 at 50% 50%);transform:translateY(30px) rotate(-5deg) scale(.85)}to{opacity:1;clip-path:circle(100% at 50% 50%);transform:translateY(0) rotate(3deg) scale(1)}}@keyframes memoryFloat{0%,100%{transform:translateY(0) rotate(3deg)}50%{transform:translateY(-10px) rotate(1deg)}}@keyframes birdFlight{from{transform:translate(-200px,40px)}to{transform:translate(900px,-80px)}}@keyframes growPast{0%,50%{opacity:1;transform:scale(.75) translateY(35px)}100%{opacity:0;transform:scale(1) translateY(0)}}@keyframes growNow{0%,45%{opacity:0;transform:scale(.8) translateY(30px)}100%{opacity:1;transform:scale(1) translateY(0)}}@keyframes bouquetSway{to{transform:rotate(4deg) translateY(-7px)}}@keyframes drive{0%{transform:translateX(-10vw) translateY(0)}25%{transform:translateX(33vw) translateY(-15px)}50%{transform:translateX(65vw) translateY(12px)}100%{transform:translateX(125vw) translateY(-7px)}}@keyframes carBounce{to{transform:translateY(-3px)}}@keyframes hangSway{from{transform:rotate(-3deg)}to{transform:rotate(3deg)}}@keyframes lanternRise{from{transform:translate(0,55vh);opacity:0}10%,70%{opacity:.7}to{transform:translate(50px,-30vh);opacity:0}}@keyframes portraitFloat{50%{transform:translateY(-12px)}}@keyframes drawLine{to{stroke-dashoffset:0}}@keyframes envelopeFloat{50%{transform:translateY(-10px) rotate(-2deg)}}@keyframes sceneWipe{0%{opacity:0;clip-path:circle(0 at 70% 45%)}40%,55%{opacity:.95;clip-path:circle(130% at 70% 45%)}100%{opacity:0;clip-path:circle(130% at 70% 45%)}}@keyframes dialogReveal{from{opacity:0;transform:translateY(25px) scale(.96)}to{opacity:1;transform:none}}@keyframes bloom{0%{transform:scale(.6)}50%{transform:scale(1.25)}100%{transform:scale(1)}}@keyframes burstRise{to{transform:translate(var(--dx),-100px) rotate(35deg);opacity:0}}
@media(min-width:1500px){.cover{padding-left:15%;padding-right:15%}.childhood-memory{left:55%}.walking-child{left:30%}}@media(max-height:720px) and (min-width:701px){header{height:75px}.cover{padding-top:90px;padding-bottom:80px}h1{font-size:76px}.scene-heading{top:14%}h2{font-size:43px}.scene-heading>p:last-child{margin-top:12px}.eyebrow{margin-bottom:15px}.scene-subtitle{bottom:100px;font-size:15px}.bloom-message{bottom:138px}.envelope{top:48%;transform:scale(.85)}.envelope-hint{top:76%}.cover-bottom{bottom:25px}}
@media(max-width:700px){body{min-height:580px}header{height:70px;padding:0 6%}.wordmark{font-size:34px}.wordmark span{font-size:20px}.dedication{font-size:8px;letter-spacing:.13em}#sound{padding:5px 8px;min-width:40px;min-height:36px}#sound span{display:none}.cover{display:block;padding:96px 8% 75px}.cover-copy{text-align:center}h1{font-size:clamp(47px,12.5vw,65px);line-height:1.03}.cover .eyebrow{font-size:8px;margin-bottom:17px;letter-spacing:.17em}.intro{font-size:12px;line-height:1.65;margin:16px 0 19px}.primary{font-size:12px;padding:14px 22px;gap:22px}.small-note{font-size:9px;margin-top:13px}.cover-art{position:absolute;bottom:54px;left:25%;height:29vh;min-height:145px;width:50%;pointer-events:none}.cover-character{height:100%}.orbital{width:125%;left:-12%;top:-10%}.orbital-two{width:139%;left:-19%;top:-16%}.handwritten{bottom:0;right:-27%;font-size:13px;transform:rotate(-10deg)}.art-star.a{font-size:30px;top:12%;left:-18%}.art-star.b{right:-14%;font-size:15px}.art-star.c{font-size:22px;left:-12%;bottom:15%}.rose-mini{font-size:32px;left:-7%;bottom:5%}.cover-bottom{bottom:19px;left:6%;right:6%}.cover-bottom span{font-size:6px;letter-spacing:.08em}.cover-bottom span:last-child{font-size:12px}.tree{width:55%;height:72%;bottom:-4%}.tree-left{left:-33%}.tree-right{right:-33%}.landscape{height:40%;width:145%;left:-22%}.near{height:22%}.moon{width:90px;height:90px;left:78%;top:29%}.moon:after{width:86px;height:86px;left:-14px;top:-8px}.sun{width:90px;height:90px;left:78%;top:36%}.butterfly-guide{width:42px;left:72%;top:44%;animation-name:butterflyMobile}.garden{height:16%}.flower-button{width:50px;height:100px}.scene-heading{top:15%;left:6%;right:6%}.scene-heading .eyebrow{font-size:8px;letter-spacing:.18em;margin-bottom:15px}h2{font-size:clamp(35px,9vw,48px);line-height:1.07}.scene-heading>p:last-child{font-size:11px;margin-top:14px;max-width:320px;margin-left:auto;margin-right:auto}.scene-subtitle{bottom:112px;font-size:14px;padding:0 25px}.childhood-memory{height:24vh;width:27vh;max-width:240px;left:auto;right:10%;top:44%}.walking-child{left:4%;bottom:25%;width:33vw;height:26vh}.photo-caption{font-size:13px;bottom:-26px}.growing-character{left:3%;height:28vh;width:39vw;bottom:27%}.dress-memory{right:12%;height:26vh;top:43%;max-height:250px}.bloom-message{bottom:157px;font-size:9px}.blue-memory{right:10%;height:25vh;top:44%}.blue-bouquet{left:2%;width:40vw;height:28vh;bottom:29%}.road{bottom:26%;height:8%}.car{width:85px;bottom:26%}.car-heart{font-size:17px;top:-14px}.hang-one{left:10%;top:43%}.hang-two{right:9%;top:46%}.hanging-memory{width:36vw;height:26vh;max-height:250px}.photo-caption{white-space:normal}.hanging-memory .photo-caption{font-size:10px}.portrait-star{width:27vw;height:27vw}.portrait-a{left:7%;top:49%}.portrait-b{left:39%;top:44%}.portrait-c{right:5%;top:61%;width:24vw;height:24vw}.portrait-star span{font-size:12px;bottom:-27px}.portrait-star:before{inset:-8px}.constellation{left:5%;width:92%;top:40%;height:37%}.finale .scene-heading{top:18%}.envelope{left:calc(50% - 105px);width:210px;height:136px;top:46%}.seal{top:54px}.envelope-hint{top:calc(46% + 156px);font-size:14px}.final-character{height:20vh;width:30vw;bottom:22%;left:0}.player{width:94%;padding:8px 9px;gap:1px}.player .icon-button{font-size:20px;min-width:33px}.timeline{padding:0 4px}.chapter-dot{min-width:22px}.letter-paper{padding:35px 27px}.letter-paper p{font-size:14px;line-height:1.8}.letter-paper h2{font-size:30px}.letter-top{font-size:8px;margin-bottom:26px}.paper-birds{font-size:25px;top:42%}.transition-veil span{font-size:55px}}@media(max-width:700px) and (max-height:700px){.cover{padding-top:80px}.cover-art{height:23vh;bottom:42px}h1{font-size:45px}.intro{margin:13px 0 14px;font-size:11px}.small-note{margin:10px 0}.scene-heading{top:14%}h2{font-size:34px}.scene-heading>p:last-child{font-size:10px;margin-top:10px}.scene-subtitle{bottom:97px;font-size:12px}.bloom-message{bottom:135px}.portrait-c{top:59%}.envelope-hint{top:calc(46% + 145px)}.photo-caption{font-size:11px}}
@keyframes butterflyMobile{0%,100%{transform:translate(0,0) rotate(-10deg)}25%{transform:translate(-120px,-60px) rotate(15deg)}50%{transform:translate(20px,80px) rotate(-10deg)}75%{transform:translate(-60px,10px) rotate(10deg)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.now-character{opacity:1}.past-character{display:none}.walking-child{transform:none}.car{left:12%}.constellation path{stroke-dashoffset:0!important}.memory-portal{clip-path:none!important}.butterfly-guide{transform:none}}
/* Leave the garden reachable behind the cinematic layer. */
.scene.active{pointer-events:none}.scene.active button,.scene.active a{pointer-events:auto}

/* A simple initial and her heart, without chapter labels. */
.wordmark{font-style:normal;display:flex;align-items:center;gap:7px}.wordmark span{font-family:Georgia,serif;font-size:26px;color:var(--rose)}
.cover-copy{padding-bottom:22px}.chapter-nav{margin-bottom:7px}.timeline{padding-bottom:5px}.letter-paper h2{padding-right:20px;margin-top:5px;margin-bottom:25px}
@media(max-width:700px){.wordmark span{font-size:21px}.letter-paper h2{font-size:27px;line-height:1.15}.cover{padding-top:115px}.cover-art{height:32vh}.cover-copy{padding-bottom:0}}
@media(max-width:700px) and (max-height:700px){.cover{padding-top:100px}.cover-art{height:28vh}}

.future-memory{position:absolute;top:41%;left:50%;transform:translateX(-50%);height:min(32vh,311px);width:min(18vh,175px);z-index:5}
.future-photo{height:100%;border-radius:3px;position:relative;animation:portraitFloat 7s ease-in-out infinite}
.future-photo:before{content:'';position:absolute;inset:-11px;border:1px solid #dec9a54d;border-radius:3px;pointer-events:none}
.future-photo img{object-fit:contain;background:#efe5d0}
.stars-scene .portrait-a{left:23%;top:49%}.stars-scene .portrait-c{right:23%;top:49%}
.stars-scene .portrait-c img{object-position:center 40%}
@media(max-width:700px){.future-memory{top:42%;width:min(34vw,19vh);height:min(60.4vw,33.8vh)}.stars-scene .portrait-a,.stars-scene .portrait-c{top:52%;width:21vw;height:21vw}.stars-scene .portrait-a{left:5%}.stars-scene .portrait-c{right:5%}.stars-scene .portrait-star span{font-size:11px}.future-photo:before{inset:-7px}}

/* Their shared future is the focal point of the constellation. */
.stars-scene .scene-heading{top:13%}
.future-memory{top:36%;height:min(42vh,420px);width:min(23.625vh,236.25px);z-index:10;isolation:isolate}
.future-memory:before{content:'';position:absolute;inset:-18% -60%;background:radial-gradient(ellipse,#ecd6b030 0%,#eadab312 40%,transparent 70%);z-index:-1;pointer-events:none}
.future-photo{border-radius:6px;box-shadow:0 18px 55px #061a2bbf,0 0 32px #ead1a64d}
.future-photo .photo-button{padding:9px;background:#f6e8ca;border-radius:6px;box-shadow:0 0 0 1px #ffe8b2}
.future-photo:before{inset:-9px;border:1px solid #f3d6a5cc;border-radius:10px;box-shadow:0 0 20px #ead1a630;animation:futureGlow 5s ease-in-out infinite}
.future-photo .photo-button:hover img{transform:none}
.stars-scene .portrait-a,.stars-scene .portrait-c{width:13vh;height:13vh;max-width:140px;max-height:140px;top:51%;opacity:.48;filter:saturate(.6);transition:opacity .4s,filter .4s}
.stars-scene .portrait-a{left:25%}.stars-scene .portrait-c{right:25%}
.stars-scene .portrait-star:hover,.stars-scene .portrait-star:focus-within{opacity:.9;filter:saturate(1)}
.stars-scene .portrait-star span{font-size:12px;color:#c3c1b1}
.stars-scene .constellation{opacity:.5}
@keyframes futureGlow{50%{box-shadow:0 0 32px #ead1a66b;border-color:#ffefd3}}
@media(max-width:700px){.stars-scene .scene-heading{top:13%}.stars-scene .scene-heading h2{font-size:clamp(32px,8.3vw,42px)}.future-memory{top:37%;height:40vh;width:22.5vh;max-height:none;max-width:54vw}.future-photo .photo-button{padding:7px}.future-photo:before{inset:-7px}.stars-scene .portrait-a,.stars-scene .portrait-c{top:54%;width:15vw;height:15vw}.stars-scene .portrait-a{left:5%}.stars-scene .portrait-c{right:5%}.stars-scene .portrait-star span{font-size:9px;line-height:1.4;width:140%;left:-20%;bottom:-35px}}
@media(max-width:700px) and (max-height:700px){.stars-scene .scene-heading{top:13%}.stars-scene .scene-heading h2{font-size:30px}.future-memory{top:38%;height:38vh;width:21.375vh}.stars-scene .scene-subtitle{font-size:11px;bottom:96px}}

#letter-modal{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#letter-modal .letter-paper{overflow:visible}

.music-panel{position:fixed;top:82px;right:5%;width:min(360px,calc(100vw - 32px));z-index:40;padding:12px;background:#15333eee;border:1px solid #dbc7a944;border-radius:18px;box-shadow:0 16px 50px #0006;backdrop-filter:blur(18px);opacity:0;transform:translateY(-12px);pointer-events:none;transition:opacity .25s,transform .25s}
.music-panel.is-open{opacity:1;transform:translateY(0);pointer-events:auto}
.music-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px;color:#ead8be;font:italic 15px Georgia,serif}
.music-panel-heading button{background:transparent;border-radius:50%;width:40px;height:36px;font:25px Arial;color:#f6eddb}
.music-panel iframe{display:block;border:0;border-radius:12px;background:#202020}
.music-panel>a{display:block;width:max-content;color:#c6d7ca;font-size:10px;margin:10px 4px 2px;text-decoration:none}
#sound[aria-expanded=true]{border-color:var(--gold);color:var(--gold)}
@media(max-width:700px){.music-panel{top:73px;right:16px}#sound span{display:inline;font-size:10px}#sound{padding:5px 10px}}
