/* One living garden: a continuous path, objects that remember, a quiet guiding light. */
:root{--garden-burgundy:#79374f;--garden-sage:#809276;--garden-lavender:#b8abc5;--garden-cream:#f6efe5;--garden-night:#111724}
main{overflow:clip}.scene{scroll-margin-top:24px}.scene.active{animation:none}.scene:not(.night){--paper:#f6efe5;--ink:#3a4540;--muted:#7b7a6d;--rose:#914b60;--gold:#a18454;--line:#4a564023;color:var(--ink)}.scene.night{--paper:#111724;--ink:#eee6dd;--muted:#b1afba;--rose:#d7adba;--gold:#d1b784;--line:#d2c4b92b;color:var(--ink);padding-top:125px;padding-bottom:135px}.scene:before{content:'';position:absolute;z-index:-3;left:calc(50% - 50vw);width:100vw;top:0;bottom:0;background:var(--paper);pointer-events:none}.scene.night:before{background:linear-gradient(#f6efe5 0,#28314380 75px,transparent 140px,transparent calc(100% - 85px),#f6efe5 100%)}.scene:not(.night){padding-top:85px;padding-bottom:120px}.invitation.active{padding-top:20px}.scene.letters{padding-top:90px;padding-bottom:140px}.scene.finale{padding-top:120px;min-height:110svh}.scene.finale:before{background:linear-gradient(#f6efe5,transparent 160px,#11172433 100%)}.masthead{--ink:#3a4540;--line:#4a564023;color:#3a4540;background:#f6efe5}.cover-art{z-index:-1}.invitation:before{z-index:-2}.living-vine{position:absolute;left:1.2%;top:80vh;bottom:15vh;width:48px;pointer-events:none;opacity:.32;z-index:5;background-repeat:repeat-y;background-size:48px 530px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 530'%3E%3Cpath d='M24 0C-5 100 52 150 24 265S0 420 24 530' fill='none' stroke='%23979b78' stroke-width='.8'/%3E%3Cg fill='%238f9c74' fill-opacity='.45'%3E%3Cpath d='M21 112Q-4 77 3 114q5 12 18-2M25 218q29-34 19 3-8 12-19-3M18 342q-24-30-15 3 6 9 15-3M27 441q24-27 17 5-6 8-17-5'/%3E%3C/g%3E%3C/svg%3E")}.garden-guide{position:fixed;left:77%;top:30%;width:8px;height:8px;border-radius:50%;background:#f7d99b;box-shadow:0 0 9px #ffe2a5,0 0 26px #efc57e66;z-index:19;pointer-events:none;transition:left 1.6s var(--ease),top 1.6s var(--ease),box-shadow 1s;animation:guide-breathe 4s ease-in-out infinite}.garden-guide>i{position:absolute;inset:-9px;border:1px solid #dbb36e44;border-radius:50%;animation:guide-ring 4s ease-out infinite}.garden-guide.settled{width:6px;height:6px;box-shadow:0 0 11px #ffe2a5,0 0 35px #efc57e99}.garden-gate{position:absolute;inset:5% 4% 0;width:92%;height:95%;z-index:3;overflow:visible;perspective:700px;pointer-events:none;opacity:.75}.garden-gate .gate-leaf{fill:#f8edda11;stroke:#607a65;stroke-width:2;filter:drop-shadow(0 1px 2px #fdf2d7);transition:transform 1.7s var(--ease),opacity 1.7s;transform-box:view-box}.gate-left{transform-origin:105px 320px}.gate-right{transform-origin:495px 320px}.gate-open .gate-left{transform:perspective(700px) rotateY(-107deg);opacity:.12}.gate-open .gate-right{transform:perspective(700px) rotateY(107deg);opacity:.12}.garden-path-line{stroke:#e8d0a0;stroke-width:9;fill:none;opacity:.7;stroke-linecap:round;stroke-dasharray:900;stroke-dashoffset:900;transition:stroke-dashoffset 2.4s .4s var(--ease)}.gate-open .garden-path-line{stroke-dashoffset:0}.cover-date{z-index:4;pointer-events:none}.sound-choice{border:1px solid #a18b6a44;background:none;border-radius:30px;display:flex;gap:10px;align-items:center;padding:7px 12px;font-size:8px;color:#80705f;min-height:44px}.sound-choice>span{font-size:18px}.sound-choice[aria-pressed=true]{background:#e4dbc65c;color:#61715d}.masthead-centre{margin-left:auto;margin-right:auto}.map-trigger{white-space:nowrap}.footer-sound{border:0;background:none;min-width:44px;min-height:44px;color:var(--gold);font-size:20px}.footer-sound[aria-pressed=false]{opacity:.5}.journey-footer .journey-progress{flex:1;max-width:340px}.journey-footer{gap:18px}
.museum-frame{touch-action:pan-y}.photo-rotator{aspect-ratio:16/9}.photo-rotator img{width:56.25%;height:177.7778%;object-fit:contain;filter:saturate(.92)}.photo-loading{position:absolute;inset:0;display:grid;place-items:center;font-size:7px;letter-spacing:1.5px;color:#8b7a66;z-index:1;background:#ebe3d3}.photo-loading[hidden]{display:none}.museum-frame[data-photo="1"]{transform:rotate(2deg);background:#f4eee0}.museum-frame[data-photo="1"] .photo-mat{padding:30px 17px;background:#e3e6d7}.museum-frame[data-photo="2"]{transform:rotate(-1deg);border-left:5px solid #cbb992}.museum-frame[data-photo="2"] .photo-mat{padding:17px;background:#efe2d6}.museum-frame[data-photo="3"]{transform:rotate(3deg);background:#f7e9df}.museum-frame[data-photo="3"] .photo-mat{padding:30px 24px;background:#dcd6dc}.photo-miniatures button{width:44px;height:44px;min-height:44px;border-bottom:0;position:relative;padding:0}.photo-miniatures button:after{content:'';position:absolute;left:5px;right:5px;top:21px;height:2px;background:#aa92783d}.photo-miniatures button[aria-pressed=true]:after{background:#8f5b6a}.photo-miniatures button[aria-pressed=true]{border:0}.museum-frame:focus-visible{outline:2px solid #b49264;outline-offset:12px}
.paper-star{perspective:600px;animation-duration:9s}.paper-star svg{transform-origin:50% 55%;transition:transform .8s var(--ease),filter .8s}.paper-star.unfolding svg{animation:origami-open .95s var(--ease) both}.paper-star.unfolded:not(.unfolding) svg{transform:scale(.79);filter:drop-shadow(0 0 12px #f6d69577)}.paper-star.unfolded:after{content:'✧';font-size:12px;bottom:-4px;right:-4px}.paper-star.unfolded:before{content:'';position:absolute;width:5px;height:5px;left:50%;top:50%;border-radius:50%;background:#fff0bd;box-shadow:0 0 20px #f6d695}.wish-reading{min-height:130px}.wish-stars{isolation:isolate}.wish-threads{opacity:.8}.wishes-bottom{margin-top:10px}.wishes{background:radial-gradient(ellipse at 50% 50%,#32344833,transparent 65%)}
.grown-flower{animation-duration:1.7s;animation-delay:.25s}.grown-stem{animation-duration:1.2s}.bouquet-stage .grown-flower>path,.bouquet-stage .grown-flower>ellipse{transition:opacity .8s}.bouquet-stage:hover .grown-flower{filter:drop-shadow(0 3px 4px #78334b13)}.reset-dialog{width:min(480px,calc(100% - 30px));border:1px solid #d5bfa6;background:#fbf1e4;padding:35px;border-radius:6px;color:#5e4748}.reset-dialog h3{font:500 34px var(--serif);margin-bottom:15px}.reset-dialog p{font-size:12px;color:#8c706b}.reset-dialog>div{display:flex;gap:12px;margin-top:23px;flex-wrap:wrap}.reset-dialog .button{font-size:10px;padding:12px 16px}
.cinema-screen{aspect-ratio:960/620;overflow:visible;margin-bottom:56px}.cinema-picture{overflow:hidden}.cinema-screen[data-film="1"] .cinema-picture{overflow:hidden}.cinema-screen.has-film .cinema-picture{opacity:0}.cinema-projector{pointer-events:none;opacity:.18}.cinema-screen.has-film .cinema-projector{opacity:.08}#storyCanvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;background:#151b2b}.has-film #storyCanvas{opacity:1}.cinema-caption{bottom:18px;left:5%;right:5%;font-size:21px;line-height:1.3;background:linear-gradient(transparent,#0d10219c);padding:16px 14px 7px;color:#fff1dc;text-shadow:0 1px 4px #000;min-height:60px}.cinema-reel-label{z-index:3;font-size:5px}.has-film .cinema-reel-label{opacity:0}.movie-controls{position:absolute;left:-9px;right:-9px;bottom:-55px;height:50px;display:flex;align-items:center;gap:8px;padding:0 10px;background:#151a28;border:1px solid #d6bd9533;border-top:0;color:#dec6ad;z-index:6}.movie-controls button{border:0;background:none;min-width:38px;min-height:44px;font:18px var(--serif);padding:0}.movie-controls input{min-width:20px;flex:1;accent-color:#c1a47c;height:44px;cursor:pointer}.movie-controls>span{font-size:6px;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:.3px}.film-choices button[data-viewed=true]>b:after{content:'·';margin-left:7px;color:#baa373}.cinema-play{z-index:5}.cinema-screen{background:#101725;outline-color:#bba47b55}.cinema-layout{align-items:start}.cinema-sidebar{padding-top:0}
.letter-envelope{perspective:800px;isolation:isolate;overflow:visible}.letter-envelope:before{content:'';position:absolute;left:11%;right:11%;top:7%;height:70%;background:#fcf4e6;z-index:-1;border:1px solid #cbb89e;transform:translateY(0);transition:transform .7s var(--ease)}.letter-envelope.letter-opened:before{transform:translateY(-38%)}.letter-envelope-flap{transform-origin:50% 0%;transition:transform .65s var(--ease),opacity .65s;backface-visibility:hidden}.letter-envelope.letter-opened .letter-envelope-flap{transform:rotateX(160deg);opacity:.5}.letter-envelope[data-opened=true]>small:after{content:' · kept close';font-size:5px;letter-spacing:.5px}.letter-dialog{line-height:1.6;max-height:86svh}.letter-dialog p{max-width:48ch}.letter-dialog[open]{animation:paper-arrival .5s var(--ease)}.letter-envelope:nth-child(1) .wax-seal{background:#87445e}.letter-envelope:nth-child(2) .wax-seal{background:#78866d;border-color:#a9ad87}.letter-envelope:nth-child(3) .wax-seal{background:#a66e77;border-color:#d2a1a3}
.ending-garden{position:absolute;left:0;right:0;bottom:0;width:100%;height:auto;max-height:300px;z-index:2;pointer-events:none;opacity:.65;filter:saturate(.72)}.ending-garden .grown-flower{animation:none}.finale-after{padding-bottom:100px}.finale-before{padding-bottom:100px}.finale.released .ending-garden{opacity:.7}.finale-garden{inset:0;opacity:.5}.finale.released .finale-garden{opacity:.13}.lanterns{bottom:70px}.petal-rain{opacity:.65}.finale-blessing{position:relative;z-index:4}.finale-after .finale-signature{margin-top:18px}.finale-after .birthday-name{position:relative;display:inline-block}.finale{overflow:hidden}.finale-after .eyebrow{margin-bottom:5px}.scene.finale .finale-garden{z-index:-2}.journey-footer .footer-map{padding-right:0}
@keyframes guide-breathe{50%{opacity:.65;transform:scale(.8)}}@keyframes guide-ring{to{transform:scale(1.7);opacity:0}}@keyframes origami-open{0%{transform:rotateY(0) scale(.9)}30%{transform:rotateY(83deg) scaleX(.55) scaleY(1.15)}65%{transform:rotateY(-25deg) scale(1.14)}100%{transform:rotateY(0) scale(.79)}}@keyframes paper-arrival{from{opacity:0;transform:translateY(16px) rotate(-1deg)}to{opacity:1;transform:none}}
@media(min-width:1500px){.scene:not(.night){padding-top:110px;padding-bottom:150px}.invitation.active{padding-top:25px}.scene.night{padding-top:145px;padding-bottom:160px}.living-vine{left:3%}}
@media(max-width:1050px){.masthead-centre{display:none}.masthead{gap:14px}.sound-choice{margin-left:auto}.scene:not(.night){padding-top:65px}.invitation.active{padding-top:20px}.movie-controls{gap:4px}.movie-controls button{min-width:34px}.movie-controls>span{font-size:5px}.cinema-caption{font-size:20px}.ending-garden{max-height:245px}}
@media(max-width:700px){.masthead{height:80px;gap:8px}.date-mark small{max-width:80px;letter-spacing:.4px}.sound-choice{font-size:7px;padding:6px 8px;gap:6px}.sound-choice>span{font-size:16px}.map-trigger{font-size:7px;padding:6px 9px;gap:7px}.map-trigger>span{font-size:19px}.scene:not(.night){padding-top:55px;padding-bottom:85px}.invitation.active{padding-top:0;padding-bottom:80px}.scene.night{padding-top:110px;padding-bottom:125px}.scene.letters{padding-top:65px;padding-bottom:100px}.scene.finale{min-height:105svh;padding-top:110px;padding-bottom:90px}.scene.night:before{background:linear-gradient(#f6efe5,transparent 100px,transparent calc(100% - 65px),#f6efe5)}.living-vine{left:-5px;width:34px;opacity:.25;background-size:34px 420px}.garden-guide{width:6px;height:6px}.garden-guide>i{inset:-6px}.garden-gate{inset:-9% 8% 0;width:84%;height:125%;opacity:.7}.garden-gate .gate-leaf{stroke-width:2.5}.cover-date{z-index:4}.garden-path-line{stroke-width:6}.journey-footer{gap:4px;padding:0 10px}.journey-footer .footer-map{gap:6px;font-size:7px}.footer-map>span{font-size:20px}.footer-sound{min-width:36px;font-size:19px}.journey-arrows{gap:4px}.journey-arrows button{width:34px}.journey-arrows>span{font-size:8px}.museum-frame[data-photo="1"] .photo-mat{padding:21px 13px}.museum-frame[data-photo="3"] .photo-mat{padding:21px 16px}.museum-art{margin-top:10px}.photo-miniatures{margin-top:6px}.photo-miniatures button{width:44px;height:44px;padding:0;min-height:44px}.museum-intro{margin-top:5px}.wish-constellation{height:350px}.wish-reading{top:32%;left:20%;right:20%}.wish-reading>p{font-size:21px}.paper-star{width:47px;height:47px;min-height:47px}.wish-cat{bottom:48px;width:52px;right:9%}.wishes-bottom{margin-top:8px}.wishes-bottom>span{font-size:5px;letter-spacing:1.2px}.bouquet-stage{margin-top:10px}.bouquet-copy{margin-top:10px}.reset-dialog{padding:30px 25px}.reset-dialog h3{font-size:32px}.reset-dialog>div{gap:8px}.reset-dialog .button{min-height:46px;font-size:10px}.cinema-layout{gap:40px}.cinema-screen{aspect-ratio:960/620;margin-bottom:44px}.cinema-screen[data-film="1"] .cinema-picture{width:64.516%;height:155%}.movie-controls{left:-6px;right:-6px;bottom:-49px;height:47px;padding:0 5px;gap:2px}.movie-controls button{min-width:32px;font-size:18px}.movie-controls>span{font-size:5px}.movie-controls input{height:44px}.cinema-caption{font-size:17px;bottom:9px;min-height:48px;padding:14px 8px 5px}.cinema-sidebar{margin-top:0}.cinema-reel-label{font-size:4px}.letter-shelf{gap:36px}.letter-envelope:before{height:66%}.letter-dialog{padding:43px 25px 30px;width:calc(100% - 24px)}.letter-dialog p{font-size:20px;line-height:1.6}.ending-garden{width:180%;max-width:none;left:-40%;max-height:210px;opacity:.6}.finale-before,.finale-after{padding-bottom:80px}.finale-after .birthday-name{font-size:135px}.finale-blessing{font-size:22px}.finale-after .finale-signature{font-size:26px}.finale-replay{margin-top:24px}.finale-before h2{font-size:55px}.sound-choice{min-height:44px}.scene{scroll-margin-top:0}}
@media(max-width:360px){.date-mark small{display:none}.date-mark>span{font-size:5px}.sound-choice{font-size:6px}.map-trigger{font-size:6px}.map-trigger>span{font-size:17px}.masthead{padding:0 5%;gap:6px}.finale-after .birthday-name{font-size:120px}}
@media(prefers-reduced-motion:reduce){.garden-guide,.garden-guide>i,.paper-star.unfolding svg,.letter-dialog[open]{animation:none}.garden-guide{transition:none}.garden-gate .gate-leaf,.garden-path-line,.letter-envelope:before,.letter-envelope-flap{transition:none}.paper-star.unfolded svg{transform:scale(.79)}.living-vine{opacity:.22}.scene.night:before{transition:none}}

.movie-controls button{min-width:44px;min-height:44px}.journey-arrows button{width:44px;min-height:44px}.footer-sound{min-width:44px;min-height:44px}.dialog-close{width:44px;height:44px;min-height:44px}.movie-controls input{min-height:44px}.finale-after{z-index:5}@media(max-width:700px){.movie-controls{gap:2px}.movie-controls button{min-width:44px}.journey-arrows{gap:3px}.journey-arrows button{width:44px}.journey-footer{gap:3px}.journey-footer .footer-map{font-size:7px;gap:5px}.footer-sound{min-width:44px}.movie-controls>span{font-size:5px}}

.scene:not(.in-viewport) *,.scene:not(.in-viewport) *:before,.scene:not(.in-viewport) *:after{animation-play-state:paused!important}
