:root{font-family:DM Sans,ui-sans-serif,system-ui,-apple-system,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--cream: #fff8ec;--ink: #614b47;--pink: #d88993;--blush: #f4d4d0;--gold: #e2b76b}*{box-sizing:border-box}html,body,#root{margin:0;min-width:320px;min-height:100%}body{background:#e8ac9b;color:var(--cream)}button{font:inherit;cursor:pointer}button:focus-visible{outline:3px solid #f6d979;outline-offset:4px}::selection{background:#df9c9e;color:#fff}.app{height:100svh;height:100dvh;width:100%;position:relative;overflow:hidden;isolation:isolate;background:#e8afa2}.garden-canvas,.scene-fallback{position:absolute;inset:0;width:100%;height:100%}.garden-canvas{z-index:1}.scene-fallback{z-index:0;background:linear-gradient(180deg,#8caebb,#e9bca6 43%,#f7d59e 69%,#929b6a 70%,#5d7953)}.fallback-sun{position:absolute;top:27%;left:28%;width:150px;height:150px;border-radius:50%;background:#fff1ba;box-shadow:0 0 70px 35px #fbd5a977}.fallback-flowers{position:absolute;bottom:6%;width:100%;color:#f4ce71;font-size:clamp(48px,8vw,140px);letter-spacing:.1em;white-space:nowrap;text-align:center;text-shadow:28px 28px 0 #d58eac,-23px 43px 0 #ffd791}.film-grain{pointer-events:none;position:absolute;inset:0;z-index:2;opacity:.17;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.73' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.17'/%3E%3C/svg%3E")}.look-layer{position:absolute;inset:0;z-index:3;touch-action:none;cursor:grab}.look-layer:active{cursor:grabbing}.topbar{position:absolute;z-index:8;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:24px clamp(20px,4vw,64px);pointer-events:none;text-shadow:0 1px 15px #5c453e6b}.brand{font-size:11px;font-weight:700;letter-spacing:.22em;display:flex;gap:10px;align-items:center}.brand-flower{font-size:25px;color:#ffe1a3;font-weight:400;line-height:1}.topbar-right{font-family:Playfair Display,Georgia,serif;font-size:14px;font-style:italic;display:flex;gap:9px;align-items:center;opacity:.9}.topbar-right span:last-child{font-size:23px;color:#fff0d0}.footer-note{position:absolute;z-index:5;left:0;right:0;bottom:max(12px,env(safe-area-inset-bottom));text-align:center;font-size:9px;letter-spacing:.2em;font-weight:600;color:#fff3d8cf;text-shadow:0 1px 9px #5b454288;pointer-events:none}.footer-note span{color:#ffe5a6;padding-left:9px}.button{min-height:52px;border:none;border-radius:100px;padding:14px 25px;display:inline-flex;justify-content:center;align-items:center;gap:18px;font-size:13px;font-weight:700;letter-spacing:.025em;transition:transform .22s ease,box-shadow .22s ease,background .22s ease;text-decoration:none}.button:hover{transform:translateY(-2px)}.button:active{transform:translateY(0)}.button--primary{background:#fff8e9;color:#805a57;box-shadow:0 14px 40px #5b3c3c2b,inset 0 0 0 1px #fffdfb}.button--primary:hover{background:#fff;box-shadow:0 15px 43px #4e393a3c}.button--soft{color:#8c5d63;background:#f9e9e1;border:1px solid #e4c6bd}.button span{font-size:19px;line-height:1;font-weight:400}.eyebrow{font-weight:700;letter-spacing:.23em;font-size:10px}.intro-overlay{position:absolute;inset:0;z-index:4;display:grid;place-items:center;padding:94px 20px 70px;background:linear-gradient(180deg,#332b2c17,#483f3e18 29%,#4b3b3b77)}.intro-card{position:relative;width:min(100%,680px);text-align:center;padding:clamp(32px,6vh,65px) clamp(20px,6vw,58px);border:1px solid #fff1e777;border-radius:30px;background:linear-gradient(145deg,#63505283,#433c4075);box-shadow:0 30px 95px #2f303129;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:appear .9s both}.intro-card:after{content:"";position:absolute;left:24px;bottom:15px;font-size:52px;color:#fbd6aa33;transform:rotate(-20deg)}.intro-card:before{content:"";position:absolute;right:24px;top:20px;font-size:42px;color:#ffd9ba2f;transform:rotate(19deg)}.intro-card .eyebrow{display:flex;align-items:center;justify-content:center;gap:12px;color:#fff0d1}.eyebrow-line{height:1px;width:24px;background:#f9dfbd99}.intro-sparkle{display:block;color:#ffe1a8;font-size:26px;margin:12px 0 -8px}.intro-card h1{font:400 clamp(39px,6vw,69px)/1.13 "Playfair Display",Georgia,serif;letter-spacing:-.045em;margin:18px auto 20px;max-width:570px;text-wrap:balance;text-shadow:0 3px 20px #3d303633}.intro-card p{max-width:420px;margin:0 auto;font-size:clamp(13px,1.35vw,15px);line-height:1.95;color:#fff8eee3}.intro-enter{margin-top:30px;padding-left:32px;padding-right:28px}.intro-hint{display:block;margin-top:24px;font-size:11px;letter-spacing:.025em;opacity:.83}.journey-header{position:absolute;z-index:5;top:90px;left:50%;transform:translate(-50%);display:flex;gap:12px;align-items:center;width:max-content;max-width:calc(100% - 40px);padding:13px 18px;border:1px solid #fff9ec80;border-radius:18px;background:#5b4b479c;box-shadow:0 14px 44px #483e3e26;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.journey-star{font-size:26px;color:#ffe8a5;animation:twinkle 2.3s ease-in-out infinite}.journey-header strong{display:block;font-size:12px;letter-spacing:.015em}.journey-header small{display:block;font-size:10px;margin-top:4px;color:#fff2e4c5}.compass{display:grid;place-items:center;margin-left:15px;height:30px;width:30px;border-radius:50%;background:#fff3df33;color:#ffe9b7;font-size:22px;font-weight:400;transition:transform .17s ease}.journey-distance{position:absolute;z-index:5;bottom:121px;left:50%;transform:translate(-50%);font:italic 16px Playfair Display,Georgia,serif;text-shadow:0 2px 14px #45392c8c;white-space:nowrap;pointer-events:none}.journey-distance span{margin-left:5px;color:#ffe2a8}.keyboard-hint{position:absolute;z-index:5;left:34px;bottom:37px;display:flex;gap:5px;align-items:center;color:#fff5e2;font-size:10px;text-shadow:0 1px 8px #3e3d3666}.keyboard-hint kbd{border:1px solid #fff9e9a9;border-radius:5px;min-width:23px;padding:5px;background:#4e4b4566;text-align:center;font:600 10px DM Sans,sans-serif}.keyboard-hint span{margin-left:8px}.keyboard-hint i{display:block;width:1px;height:15px;margin:0 8px;background:#fff8ed80}.skip-button{position:absolute;z-index:5;right:35px;bottom:40px;background:#5d4b476e;color:#fff5e1;border:1px solid #fff1df78;border-radius:100px;padding:10px 17px;font-size:11px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.skip-button span{padding-left:9px}.skip-button:hover{background:#6c514fbd}.found-card{position:absolute;z-index:6;bottom:110px;left:50%;transform:translate(-50%);min-width:min(420px,calc(100% - 35px));display:flex;align-items:center;gap:14px;background:#634c4abb;border:1px solid #fff1e1ac;padding:14px 18px;border-radius:22px;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);box-shadow:0 10px 50px #3c33324c;animation:pop .65s both}.found-icon{font-size:28px;color:#fff1d4}.found-card div{flex:1}.found-card div strong{display:block;font:500 17px Playfair Display,Georgia,serif}.found-card div span{display:block;font-size:10px;opacity:.83;margin-top:5px}.found-card .button{font-size:11px;padding:10px 15px;min-height:43px;gap:7px}.joystick{position:absolute;z-index:6;left:27px;bottom:76px;height:116px;width:116px;border-radius:50%;border:2px solid #fffae7a3;background:#4b52503b;touch-action:none;display:grid;place-items:center;box-shadow:inset 0 0 30px #fff6e226;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.joystick:before{content:"";font-size:35px;color:#fff5d167;position:absolute;pointer-events:none}.joystick-knob{height:51px;width:51px;border-radius:50%;border:1px solid #fff9e9bc;background:#fff7e2ae;box-shadow:0 4px 19px #3c3a3670;pointer-events:none}.touch-hint{position:absolute;z-index:5;bottom:116px;right:25px;font-size:12px;font-weight:600;color:#fff5e0;text-shadow:0 2px 8px #473c3b}.touch-hint span{padding-left:7px;font-size:22px}.letter-backdrop,.reply-backdrop{position:absolute;inset:0;z-index:12;display:flex;justify-content:center;align-items:center;padding:80px 18px 38px;overflow:auto;background:#4434398f;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.letter-panel{position:relative;width:min(100%,740px);max-height:100%;overflow-y:auto;overscroll-behavior:contain;border-radius:25px;padding:35px clamp(21px,5vw,65px) 40px;background:radial-gradient(circle at 15% 10%,#fffef9,#fff8ed 53%,#f9e8dd);color:var(--ink);box-shadow:0 28px 100px #322b3380,inset 0 0 0 1px #fff;border:1px solid #ffe7d6;animation:pop .55s ease both}.letter-panel:before{content:"";position:absolute;top:25px;left:25px;font-size:43px;color:#dbac9e4b}.letter-panel:after{content:"";position:absolute;right:30px;bottom:15px;font-size:60px;color:#dfa99e43}.icon-button{border:none;background:transparent;color:#8d6a67}.letter-close{position:sticky;float:right;top:0;z-index:15;height:36px;width:36px;display:grid;place-items:center;border-radius:50%;background:#f6e5db}.letter-close:hover{background:#f0d6ca}.letter-close span{font-size:27px;line-height:1}.letter-eyebrow{color:#bd9293;font-size:10px;font-weight:700;letter-spacing:.25em;text-align:center;margin:10px 28px 0}.envelope-stage{height:255px;perspective:1000px;display:flex;align-items:center;justify-content:center;transition:height .7s ease}.envelope-3d{position:relative;width:285px;height:187px;transform-style:preserve-3d;transform:rotateX(12deg) rotate(-6deg);filter:drop-shadow(0 20px 19px #895e5460);animation:envelope-float 4s ease-in-out infinite}.envelope-back{position:absolute;inset:0;background:#e6bca3;border-radius:5px;box-shadow:inset 0 0 0 1px #d9a788}.envelope-paper{position:absolute;left:16px;right:16px;top:25px;height:155px;z-index:2;padding:26px 18px;background:#fffef7;box-shadow:0 0 2px #9f8b7847;text-align:center;font:italic 18px Playfair Display,Georgia,serif;color:#a97678;transform:translateY(0);transition:transform .85s cubic-bezier(.2,.8,.2,1) .25s;display:flex;flex-direction:column;align-items:center;gap:13px}.paper-flower{font:32px Playfair Display,serif;color:#d7a0a9}.envelope-front{position:absolute;inset:0;background:#f4d3b9;clip-path:polygon(0 20%,50% 68%,100% 20%,100% 100%,0 100%);z-index:4;border-radius:5px}.envelope-front:after{content:"";position:absolute;inset:0;background:linear-gradient(140deg,#e3b39f88,transparent 55%,#fff3d288)}.envelope-flap{position:absolute;inset:0;z-index:5;background:#edc4aa;clip-path:polygon(0 0,100% 0,50% 66%);transform-origin:top center;backface-visibility:hidden;transition:transform .8s cubic-bezier(.19,.8,.2,1),z-index .1s linear .65s;border-radius:5px}.envelope-seal{position:absolute;z-index:7;top:100px;left:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#c68482;color:#f8e4ca;box-shadow:0 0 0 3px #b97574,0 3px 6px #b06a647d;font-size:20px;transition:opacity .25s}.envelope-stage--open{height:185px}.envelope-stage--open .envelope-flap{transform:rotateX(178deg);z-index:1}.envelope-stage--open .envelope-paper{transform:translateY(-85px)}.envelope-stage--open .envelope-seal{opacity:0;pointer-events:none}.envelope-prompt{text-align:center;animation:appear .65s both}.envelope-prompt h2,.reply-card h2{font:400 clamp(30px,4vw,40px)/1.25 "Playfair Display",Georgia,serif;margin:10px 0 12px}.envelope-prompt p{color:#947877;font-size:14px;line-height:1.8;margin:0 0 23px}.envelope-prompt .button{background:#c88c91;color:#fffaf2}.letter-content{position:relative;padding:0 clamp(0px,3vw,27px);animation:letter-appear .9s .1s both}.letter-ornament{text-align:center;color:#d3a6a0;font-size:16px;letter-spacing:.5em;margin:9px 0 28px}.letter-greeting{font:italic 23px Playfair Display,Georgia,serif!important;color:#a7737b!important}.letter-content>p{color:#6b5754;font-size:clamp(13px,1.5vw,15px);line-height:2.05;margin:0 0 14px}.letter-content h2{font:italic 400 clamp(31px,4.7vw,43px)/1.22 "Playfair Display",Georgia,serif;color:#9a626c;text-align:center;margin:30px 0;text-wrap:balance}.date-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#e7cfc2;border:1px solid #e7cfc2;border-radius:15px;overflow:hidden;margin:30px 0}.date-details>div{background:#fff6ed;padding:16px 18px;display:flex;flex-direction:column;gap:8px}.date-details span{color:#b88e83;font-size:9px;letter-spacing:.19em;font-weight:700}.date-details strong{font-size:13px;line-height:1.5;color:#705b55;font-weight:500}.letter-signature{text-align:right;font:italic 17px/1.8 Playfair Display,Georgia,serif!important;color:#a07176!important;margin:14px 0 30px!important}.letter-signature strong{font-size:26px;font-weight:400}.letter-actions{display:flex;justify-content:center;gap:13px;flex-wrap:wrap}.letter-actions .button--primary{background:#c88992;color:#fff}.letter-actions .button{min-width:195px;font-size:12px}.letter-footnote{font-size:11px!important;opacity:.75;text-align:center;margin-top:23px!important}.reply-backdrop{z-index:15}.reply-card{width:min(100%,465px);border-radius:26px;background:#fff7eb;box-shadow:0 25px 90px #2c242960;color:#6b5454;padding:clamp(25px,6vw,50px);text-align:center;animation:pop .55s both}.reply-flower{display:block;font-size:65px;color:#d995a0;line-height:1;animation:twinkle 2.5s infinite}.reply-card .eyebrow{display:block;color:#c29a8f;margin:18px 0}.reply-card h2{color:#a56d7b;font-size:37px}.reply-card p{line-height:1.8;font-size:13px}.reply-card blockquote{color:#946369;font:italic 19px/1.65 Playfair Display,Georgia,serif;padding:18px;margin:22px 0 9px;border-top:1px solid #ead3c9;border-bottom:1px solid #ead3c9;-webkit-user-select:text;user-select:text}.reply-status{min-height:22px;color:#967d79;font-size:11px!important}.reply-card .button--primary{background:#c88992;color:#fff;width:100%}.link-button{background:none;border:none;padding:16px 0 0;color:#a27478;font-size:12px;text-decoration:underline;text-underline-offset:4px}.webgl-fallback{padding:30px;text-align:center}@keyframes appear{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{0%{opacity:0;transform:translateY(21px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes twinkle{0%,to{opacity:.6;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}@keyframes envelope-float{0%,to{transform:translateY(2px) rotateX(12deg) rotate(-6deg)}50%{transform:translateY(-5px) rotateX(13deg) rotate(-5deg)}}@keyframes letter-appear{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@media(max-width:650px){.topbar{padding:20px 19px}.brand{font-size:9px;letter-spacing:.15em}.brand-flower{font-size:20px}.topbar-right{font-size:12px}.intro-overlay{padding:70px 15px 49px}.intro-card{border-radius:23px;padding:32px 20px}.intro-card h1{font-size:clamp(36px,8.2vw,52px);margin-top:16px}.intro-card p{font-size:13px;line-height:1.7}.intro-enter{margin-top:23px}.intro-hint{font-size:10px;margin-top:19px}.journey-header{top:78px;padding:11px 13px}.journey-header strong{font-size:11px}.journey-header small{font-size:9px}.compass{margin-left:6px;width:24px;height:24px}.journey-distance{bottom:225px;font-size:14px}.touch-hint{bottom:120px;right:18px;max-width:115px;text-align:center;line-height:1.5}.skip-button{right:15px;bottom:53px;padding:9px 13px;font-size:10px}.found-card{bottom:215px;padding:12px 13px;gap:8px}.found-icon{font-size:22px}.found-card div strong{font-size:15px}.found-card .button{min-width:0;font-size:10px;padding:9px 10px}.letter-backdrop,.reply-backdrop{padding:68px 10px 19px;align-items:flex-start}.letter-panel{max-height:100%;border-radius:19px;padding:24px 18px 32px}.letter-panel:before{top:20px;left:12px;font-size:24px}.letter-eyebrow{font-size:9px}.envelope-stage{height:222px}.envelope-3d{transform:scale(.83) rotateX(12deg) rotate(-6deg)}.envelope-stage--open{height:170px}.envelope-stage--open .envelope-3d{transform:scale(.83) rotateX(12deg) rotate(-6deg)}.letter-content h2{font-size:32px}.letter-content{padding:0 3px}.date-details>div{padding:14px 11px}.date-details strong{font-size:12px}.letter-actions{flex-direction:column}.letter-actions .button{width:100%}.reply-card{margin:auto}}@media(max-width:380px){.topbar-right span:first-child{display:none}.intro-card{padding:25px 17px}.intro-card h1{font-size:33px}.date-details{grid-template-columns:1fr}.journey-distance{bottom:205px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app:before{content:"";z-index:2;pointer-events:none;position:absolute;inset:0;background:radial-gradient(ellipse 73% 68% at 48% 41%,transparent 42%,rgba(55,38,45,.32) 100%),linear-gradient(180deg,rgba(60,42,52,.15),transparent 20%,transparent 71%,rgba(59,45,48,.21))}.garden-canvas{animation:garden-arrives 1.65s ease-out both}@keyframes garden-arrives{0%{opacity:.6;filter:saturate(.76) brightness(1.07)}to{opacity:1;filter:saturate(1) brightness(1)}}.topbar{padding-top:max(24px,env(safe-area-inset-top))}.brand-flower{filter:drop-shadow(0 0 9px #ffe0a98a)}.intro-card{border:1px solid rgba(255,246,226,.63);box-shadow:0 26px 90px #3f2c363b,inset 0 0 55px #ffe7c80f,inset 0 0 0 7px #fff2e00b;background:radial-gradient(ellipse at 50% -26%,rgba(255,238,214,.27),transparent 62%),linear-gradient(158deg,#55464cc4,#41383e9c)}.intro-card h1{font-style:italic;letter-spacing:-.05em}.intro-card:before,.intro-card:after{text-shadow:0 0 16px rgba(255,225,182,.41)}.intro-card .button--primary{background:linear-gradient(135deg,#fffdf3,#ffe8df);border:1px solid #fffaf1}.journey-header{background:linear-gradient(135deg,#4b4042d9,#5d4949a6);box-shadow:0 14px 38px #462e333b,inset 0 1px #fff2dc26}.journey-star{filter:drop-shadow(0 0 8px #ffe5b5)}.compass{box-shadow:inset 0 0 0 1px #ffe4b84b;text-shadow:0 0 8px #fff8db}.found-card{background:linear-gradient(135deg,#614a49e6,#6f4c4ed4)}.letter-backdrop,.reply-backdrop{background:#3a2936a3}.letter-panel{background:radial-gradient(circle at 3% 3%,rgba(244,192,167,.24),transparent 34%),radial-gradient(circle at 96% 95%,rgba(216,150,154,.18),transparent 39%),repeating-linear-gradient(0deg,transparent 0px,transparent 27px,rgba(168,118,94,.018) 28px),linear-gradient(145deg,#fffbf1,#fcf2e5 67%,#f7e9df);border:1px solid rgba(255,250,229,.88);box-shadow:0 32px 110px #291b26a6,inset 0 0 0 5px #f2dccc38}.letter-panel:before{content:"";color:#c18d8957;font-size:55px;top:18px;transform:rotate(-18deg)}.letter-panel:after{content:"";color:#c18d8957;font-size:65px;right:19px;bottom:12px;transform:rotate(162deg)}.letter-engraving{color:#c6a4a0;font:italic 17px Playfair Display,Georgia,serif;letter-spacing:.18em;text-align:center;opacity:.8;margin:-12px 0 12px}.letter-eyebrow{color:#aa7e80}.letter-ornament{color:#c88f9c;text-shadow:0 1px 6px #e9bacba2}.letter-flourish{position:absolute;pointer-events:none;right:10px;top:15px;color:#dcae9b66;font-size:45px;line-height:1;transform:rotate(-22deg)}.envelope-3d{filter:drop-shadow(0 18px 20px #9b6e6355) drop-shadow(0 5px 5px #8f685333)}.envelope-back{background:linear-gradient(140deg,#f9ddc2,#dfac98);box-shadow:inset 0 0 0 1px #dcaf99,inset 0 8px 28px #bb917836}.envelope-back:before{content:"";position:absolute;inset:5px;border:1px solid rgba(255,246,223,.33);border-radius:2px}.envelope-shadowfold{position:absolute;inset:0;z-index:1;clip-path:polygon(0 0,100% 0,50% 62%);background:linear-gradient(160deg,#e9b69e,#f5cdb1);filter:drop-shadow(0 2px 4px #915f5140)}.envelope-paper{border:1px solid #e8d4c2;outline:4px solid rgba(255,255,247,.37);background:radial-gradient(circle at 12% 15%,rgba(227,175,166,.16),transparent 40%),repeating-linear-gradient(0deg,transparent 0px,transparent 19px,rgba(175,123,93,.04) 20px),linear-gradient(130deg,#fffdf4,#fdf3e6);color:#ad737a;box-shadow:0 5px 15px #704d4238}.envelope-paper:before,.envelope-paper:after{position:absolute;content:"❦";font:20px Playfair Display,Georgia,serif;color:#d9a0a2}.envelope-paper:before{left:11px;top:10px;transform:rotate(-22deg)}.envelope-paper:after{right:11px;bottom:9px;transform:rotate(155deg)}.envelope-front{background:linear-gradient(140deg,#f4d3bc 5%,#efc2aa 42%,#f8dec3 90%);filter:drop-shadow(0 1px 2px #a778665c)}.envelope-front:after{background:linear-gradient(165deg,rgba(201,141,129,.24),transparent 48%,rgba(255,250,219,.34))}.envelope-flap{background:linear-gradient(165deg,#f7dac1,#e8b7a4 90%)}.envelope-seal{background:radial-gradient(circle at 32% 30%,#e3a6a4,#c88185 55%,#a95d6b);box-shadow:0 0 0 3px #c77b7c,0 0 0 5px #e6b1a075,0 3px 8px #98666c91,inset 0 1px 3px #f8ddd798;text-shadow:0 1px 2px #8a536d70}.envelope-seal span{transform:translateY(-1px)}.envelope-shine{position:absolute;z-index:6;pointer-events:none;inset:-7px;border-radius:8px;box-shadow:inset 0 0 0 1px #fff4e92c;background:linear-gradient(130deg,rgba(255,255,255,.05),transparent 40%,rgba(255,251,226,.1))}.envelope-stage--open .envelope-shine{opacity:.38}.envelope-prompt h2{color:#8b5b62;font-style:italic}.letter-content h2{text-shadow:0 1px 0 #fff4ef}.date-details{border-color:#dec4b8;box-shadow:0 7px 25px #73515311}.date-details>div{background:linear-gradient(145deg,#fffdf5e6,#f9eadda3)}.reply-card{background:linear-gradient(160deg,#fffbf2,#f7e7df);border:1px solid rgba(255,246,227,.7)}@media(max-width:650px){.topbar{padding-top:max(19px,env(safe-area-inset-top))}.intro-card{box-shadow:0 18px 55px #32252d3b,inset 0 0 0 4px #ffebda12}.letter-engraving{margin:-4px 0 9px;font-size:14px}.letter-flourish{right:0;top:10px;font-size:30px}}@media(prefers-reduced-motion:reduce){.garden-canvas{animation:none}}.letter-backdrop--reading{align-items:flex-start}.letter-backdrop--reading .letter-panel{flex-shrink:0;margin:0 auto;max-height:calc(100dvh - 118px);min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d8b9ac transparent}@media(max-width:650px){.letter-backdrop--reading .letter-panel{max-height:calc(100dvh - 88px)}}.letter-backdrop .letter-panel,.letter-backdrop .letter-content,.reply-backdrop .reply-card{animation:none;opacity:1;transform:none}.intro-card:before,.intro-card:after,.letter-panel:before,.letter-panel:after,.joystick:before{content:none!important;display:none!important}.brand-flower{width:28px;height:28px;flex-shrink:0;color:#ffe0b0}.topbar-right{align-items:center}.topbar-right svg{color:#fbd9b4;opacity:.92}.footer-note{display:flex;justify-content:center;align-items:center;gap:10px}.footer-note svg{color:#f6d5b4;vertical-align:middle}.intro-card .intro-sparkle{width:126px;height:40px;margin:15px auto 0;color:#fee1b8}.button svg{flex:0 0 auto}.journey-header .journey-star{display:block;flex:0 0 29px;color:#ffefbb}.journey-header .compass{width:36px;height:36px;background:#fbe1b81a}.journey-header .compass svg{overflow:visible;color:#fff0c8}.found-card .found-icon{color:#fff0d6;flex:0 0 38px}.reply-card .reply-flower{margin:0 auto 5px;color:#c98b93}.reply-card .button svg{color:#ffe3d0}.touch-hint{display:inline-flex;align-items:center;gap:5px}.touch-hint svg{color:#fff1d4}.letter-engraving{display:flex;align-items:center;justify-content:center;margin:-10px 0 7px;color:#bf9995}.letter-ornament{display:flex;justify-content:center;margin:5px 0 28px;color:#c99ba0}.letter-flourish{color:#d7a5a2}.paper-flower{color:#cc929b}.envelope-seal{color:#fff2d9}.envelope-seal svg{width:23px;height:23px}.envelope-hit{width:285px;height:187px;position:relative;border:0;background:transparent;padding:0;cursor:pointer;color:inherit;perspective:900px;flex:0 0 auto}.envelope-hit:disabled{cursor:default}.envelope-hit:focus-visible{outline:2px solid #dca69f;outline-offset:13px;border-radius:8px}.envelope-hit:hover:not(:disabled) .envelope-3d{filter:drop-shadow(0 22px 21px #9f726c77)}.envelope-stage--open .envelope-hit{pointer-events:none}.joystick{border:1px solid rgba(255,246,222,.72);background:radial-gradient(circle at center,rgba(255,241,210,.17) 0 3px,transparent 4px 100%),conic-gradient(from 0deg,#fff4e01a,#e8cfb30a,#fff6dc1a,#e3c6ae0a,#fff4e01a);box-shadow:inset 0 0 0 12px #feeacc12,inset 0 0 0 1px #fff4de50}.joystick-knob{border:1px solid #fff5df;background:radial-gradient(circle at 33% 25%,#fff8e9,#f5d8c7 80%);box-shadow:inset 0 0 0 5px #fff7e361,0 5px 18px #4a3b3a59}.journey-distance{background:#443a3b21;padding:4px 12px;border-radius:20px}.keyboard-pickup{margin-left:10px;display:inline-flex;gap:6px;align-items:center}.letter-touch-target{position:absolute;z-index:8;width:clamp(74px,10vw,125px);height:clamp(75px,11vw,120px);transform:translate(-50%,-50%);background:transparent;border:0;border-radius:15px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.letter-touch-target:hover:after,.letter-touch-target:focus-visible:after{content:"";position:absolute;inset:5px;border:1px solid rgba(255,242,211,.78);border-radius:13px;box-shadow:0 0 22px #f8dbaf66}.letter-touch-target:focus-visible{outline:2px solid #fff0c0;outline-offset:3px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.collecting-message{z-index:9;position:absolute;bottom:clamp(55px,12vh,130px);width:100%;left:0;right:0;display:flex;flex-direction:column;align-items:center;text-align:center;pointer-events:none;color:#fff4de;text-shadow:0 3px 22px #6e4b5366;animation:collecting-entry .7s ease-out both}.collecting-message svg{color:#ffe8c3}.collecting-message p{margin:6px 18px 0;font:italic 400 clamp(19px,2.8vw,28px)/1.45 "Playfair Display",Georgia,serif}@keyframes collecting-entry{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.fallback-flowers{display:flex;justify-content:center;align-items:flex-end;gap:clamp(0px,3vw,42px);bottom:-15px;text-shadow:none;color:#f9d19c;letter-spacing:normal}.fallback-flowers svg:nth-child(2n){color:#e4a5b7;transform:rotate(22deg) scale(.8)}.fallback-flowers svg:nth-child(3n){color:#eac07a;transform:rotate(-15deg) scale(1.13)}.intro-overlay:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(circle at 25% 41%,#f4dbbe24,transparent 51%)}@media(max-width:650px){.topbar .brand svg{width:23px;height:23px}.topbar-right svg{width:39px}.footer-note svg{width:39px}.found-card{bottom:214px}.letter-touch-target{width:82px;height:88px}.letter-engraving{margin:-4px 0 9px}.envelope-hit{transform:scale(.83)}}@media(prefers-reduced-motion:reduce){.collecting-message{animation:none}}.found-card{animation:none!important;opacity:1;transform:translate(-50%)!important}.garden-prelude{position:fixed;inset:0;z-index:100;isolation:isolate;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:24px;overflow:hidden;background:linear-gradient(155deg,#e3b3aa,#f7d5b9 39%,#f1d2b4 69%,#aeb2b0);color:#7f5965;text-align:center;transition:opacity 1.2s cubic-bezier(.21,.78,.25,1),visibility 1.2s}.garden-prelude--departing{opacity:0;visibility:hidden;pointer-events:none}.garden-prelude__glow{position:absolute;z-index:-1;inset:-20%;background:radial-gradient(ellipse at 50% 42%,#fff6dfb5,#f2d3bb38 45%,transparent 75%);animation:prelude-warmth 5s ease-in-out infinite alternate}.garden-prelude__branch{color:#bc8690;opacity:.83;margin-bottom:22px}.garden-prelude__eyebrow{margin:0 0 14px;font-size:10px;font-weight:700;letter-spacing:.23em}.garden-prelude h2{font:italic 400 clamp(28px,4.2vw,48px)/1.25 "Playfair Display",Georgia,serif;max-width:650px;margin:0 0 46px;color:#8f6067;letter-spacing:-.025em}.garden-prelude__track{position:relative;width:min(420px,85vw);height:39px;display:flex;align-items:center;justify-content:center}.garden-prelude__stem{position:absolute;height:1px;left:0;right:0;top:52%;background:#b7818175}.garden-prelude__fill{position:absolute;height:2px;top:52%;left:0;border-radius:3px;background:linear-gradient(90deg,#c38393,#c69b68,#e3bd70);box-shadow:0 0 14px #fff3d9;transition:width .38s ease}.garden-prelude__flowers{position:relative;width:100%;display:flex;justify-content:space-between}.garden-prelude__flower{width:29px;height:29px;display:grid;place-items:center;color:#bf9da0;opacity:.42;transform:scale(.63) rotate(-12deg);transition:opacity .5s ease,transform .7s cubic-bezier(.18,1.45,.47,1),color .5s}.garden-prelude__flower:nth-child(2n){transform:scale(.63) rotate(13deg)}.garden-prelude__flower--open{opacity:1;color:#b77083;transform:scale(1) rotate(0);filter:drop-shadow(0 3px 5px #bb84883a)}.garden-prelude__flower--open:nth-child(3n){color:#c39460}.garden-prelude__hint{margin:20px auto 0;font:italic 14px/1.5 Playfair Display,Georgia,serif;color:#946d6e;min-height:25px}@keyframes prelude-warmth{0%{transform:translateY(1%) scale(.98);opacity:.8}to{transform:translateY(-1%) scale(1.03);opacity:1}}.whisper-note{position:absolute;z-index:7;right:clamp(14px,4vw,64px);bottom:clamp(145px,18vh,195px);width:min(395px,calc(100vw - 35px));padding:25px 26px 23px;border:1px solid #fff9e4cc;border-radius:24px 24px 7px;background:linear-gradient(155deg,#fffbedf5,#f8e2d9f0);color:#80616a;box-shadow:0 18px 62px #48333c58,inset 0 0 0 5px #fff9ec2e;-webkit-backdrop-filter:blur(13px);backdrop-filter:blur(13px);text-align:left;animation:whisper-arrival .75s cubic-bezier(.2,.83,.27,1) both}.whisper-note:after{content:"";position:absolute;right:18px;bottom:-11px;width:20px;height:20px;background:#f8e2da;transform:rotate(45deg);border-right:1px solid #fff8e9c4;border-bottom:1px solid #fff8e9c4}.whisper-note__sprig{color:#bd8591;display:block;margin:-7px 0 9px}.whisper-note h2{font:italic 400 23px/1.3 Playfair Display,Georgia,serif;color:#985d6d;margin:0 24px 14px 0}.whisper-note p{font:400 13px/1.9 DM Sans,sans-serif;margin:0 0 12px}.whisper-note p:last-of-type{margin:0}.whisper-note__signature{display:block;margin-top:12px;text-align:right;font:italic 17px Playfair Display,Georgia,serif;color:#9b6873}.whisper-note__close{position:absolute;top:15px;right:15px;width:34px;height:34px;display:grid;place-items:center;border:1px solid #c99a983b;background:#fbefe8;border-radius:50%;color:#9b6973;cursor:pointer;z-index:2}.whisper-note__close:hover{background:#f3dbd7}@keyframes whisper-arrival{0%{opacity:0;transform:translate3d(0,18px,0) scale(.97)}to{opacity:1;transform:translateZ(0) scale(1)}}@media(max-width:650px){.garden-prelude h2{margin-bottom:35px}.garden-prelude__eyebrow{font-size:9px}.whisper-note{bottom:228px;right:14px;padding:19px 20px;width:min(360px,calc(100vw - 28px));max-height:min(47dvh,365px);overflow-y:auto;border-radius:21px 21px 8px}.whisper-note h2{font-size:20px;margin-bottom:9px}.whisper-note p{font-size:12px;line-height:1.75}}@media(prefers-reduced-motion:reduce){.garden-prelude__glow,.whisper-note{animation:none}.garden-prelude{transition:opacity .25s ease}.garden-prelude__flower{transition:none}}.intro-overlay{display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;padding:clamp(105px,13vh,150px) 24px 50px;background:radial-gradient(ellipse 52% 67% at 50% 38%,rgba(68,52,62,.48) 0%,rgba(76,55,64,.17) 64%,transparent 100%),linear-gradient(180deg,#4a39421a,#45313612 66%,#2f262b42)}.intro-card{flex:0 1 auto;width:min(770px,100%);max-height:calc(100dvh - clamp(130px,19vh,205px));overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;padding:8px 20px 24px;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.intro-card::-webkit-scrollbar{display:none}.intro-card .eyebrow{text-shadow:0 2px 10px rgba(42,30,44,.42)}.intro-card .intro-sparkle{margin:11px auto 0}.intro-card h1{max-width:700px;font-size:clamp(41px,4.75vw,64px);line-height:1.125;margin:7px auto 19px;letter-spacing:-.045em;text-shadow:0 3px 19px rgba(54,39,53,.54),0 0 58px rgba(48,35,45,.26)}.intro-card p{max-width:525px;font-size:clamp(13px,1.27vw,15px);line-height:1.75;text-shadow:0 2px 12px rgba(56,42,47,.5)}.intro-card .intro-enter{margin-top:23px}.intro-card .intro-hint{margin-top:16px;text-shadow:0 1px 9px rgba(48,40,49,.51)}.intro-overlay:after{opacity:.35}.found-card{max-width:min(680px,calc(100vw - 30px));background:linear-gradient(135deg,#564343db,#6f504ed4);box-shadow:0 16px 49px #3f302e45,inset 0 1px #fff3da47}.found-card .button{min-height:46px;padding:12px 18px;border:1px solid rgba(255,249,232,.93);white-space:nowrap}.found-card .button:focus-visible{outline:2px solid #fff2ce;outline-offset:4px}.garden-prelude__flower--open{transition:opacity .56s ease,transform .67s cubic-bezier(.16,1.32,.41,1),color .5s ease}.garden-prelude__track{margin:4px auto 0}.garden-prelude__hint{margin-top:27px}.reply-card a.button--soft{display:inline-flex;text-decoration:none;margin:5px auto 14px;color:#98656e;border-color:#c68e918c}@media(max-width:650px){.intro-overlay{padding:max(90px,calc(env(safe-area-inset-top) + 64px)) 16px max(56px,env(safe-area-inset-bottom));background:radial-gradient(ellipse 95% 64% at 50% 38%,rgba(78,57,67,.62),rgba(78,57,67,.17) 72%,transparent 100%),linear-gradient(180deg,#3a2c351a,#372b302e)}.intro-card{width:100%;max-height:calc(100dvh - max(150px,calc(env(safe-area-inset-top) + 125px)));padding:0 5px 18px}.intro-card h1{font-size:clamp(33px,8.1vw,47px);line-height:1.13;margin:12px auto 15px}.intro-card .intro-sparkle{margin-top:8px}.intro-card p{font-size:12.7px;line-height:1.65}.intro-card .intro-enter{margin-top:20px}.intro-card .intro-hint{margin-top:12px}.found-card{max-width:calc(100vw - 20px)}.found-card .button{min-height:43px;padding:10px 13px}}@media(max-height:650px){.intro-overlay{padding-top:74px;padding-bottom:22px}.intro-card{max-height:calc(100dvh - 96px)}.intro-card h1{font-size:clamp(33px,4.4vw,53px)}.intro-card .intro-enter{margin-top:16px}}.intro-overlay{isolation:isolate;background:radial-gradient(ellipse 61% 69% at 50% 40%,rgba(52,39,53,.2),transparent 84%),linear-gradient(180deg,#4a343f0f,#4a353a0d 60%,#30252c33)}.intro-overlay:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse min(570px,44vw) min(365px,49vh) at 50% 39%,#312535ad,#3b2b388c 42%,#4030384f 76%,#40303800)}.intro-overlay:after{opacity:.17}.intro-overlay .intro-card{position:relative;z-index:1;box-shadow:none;background:transparent;text-shadow:0 2px 10px rgba(40,27,42,.18)}.intro-card h1{color:#fff9ee;text-shadow:0 3px 8px rgba(33,24,36,.55),0 8px 26px rgba(36,24,41,.65),0 0 50px rgba(36,26,38,.29)}.intro-card p{color:#fffaf1;text-shadow:0 1px 4px rgba(30,24,35,.87),0 3px 16px rgba(30,24,35,.72)}.intro-card .eyebrow,.intro-card .intro-hint{color:#fff3d9;text-shadow:0 2px 7px rgba(32,24,35,.85),0 0 19px rgba(32,24,35,.47)}.intro-card .intro-enter{box-shadow:0 10px 32px #39242e38,0 0 0 1px #fffaeb36}@media(max-width:700px){.intro-overlay:before{background:radial-gradient(ellipse 92vw 43vh at 50% 36%,rgba(47,35,50,.72) 0%,rgba(56,41,52,.57) 40%,rgba(61,45,53,.29) 76%,transparent 100%)}.intro-card h1{text-shadow:0 3px 13px rgba(31,25,37,.8),0 0 29px rgba(31,25,37,.4)}}.letter-backdrop{transition:opacity .52s cubic-bezier(.23,.78,.26,1),transform .58s cubic-bezier(.22,1,.36,1),filter .52s ease;transform-origin:50% 42%}.letter-backdrop--behind-reply{opacity:.42;transform:translateY(-12px) scale(.987);filter:blur(1.7px);pointer-events:none}.reply-backdrop{opacity:0;pointer-events:none;transform:translateY(0);transition:opacity .53s cubic-bezier(.23,.78,.26,1)}.reply-backdrop--visible{opacity:1;pointer-events:auto}.reply-backdrop .reply-card{transform:translateY(22px) scale(.975);transition:transform .66s cubic-bezier(.22,1,.36,1),box-shadow .66s cubic-bezier(.22,1,.36,1)}.reply-backdrop--visible .reply-card{transform:translateY(0) scale(1);box-shadow:0 28px 100px #2d1e2778}.reply-backdrop:not(.reply-backdrop--visible) .reply-card{box-shadow:0 10px 30px #2d1e271a}@media(prefers-reduced-motion:reduce){.letter-backdrop,.reply-backdrop,.reply-backdrop .reply-card{transition-duration:.01ms!important}}.intro-card .intro-enter{position:relative;isolation:isolate;background:#fff6ed!important;color:#805b60;border:1px solid rgba(255,247,232,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:none!important;filter:none!important;will-change:auto;transition:background-color .22s ease,box-shadow .27s ease,border-color .22s ease,color .22s ease!important;box-shadow:0 11px 32px #3c283138,0 0 0 1px #fffcf326}.intro-card .intro-enter:hover,.intro-card .intro-enter:focus-visible{background:#ffece2!important;color:#78545a;border-color:#fff7e9;transform:none!important;filter:none!important;box-shadow:0 12px 32px #43283336,0 0 0 2px #fff1e147}.intro-card .intro-enter:active{background:#fce5dc!important;transform:none!important}.intro-card .intro-enter:before,.intro-card .intro-enter:after{content:none!important;display:none!important}@media(prefers-reduced-motion:reduce){.intro-card .intro-enter{transition:none!important}}
