@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Mali:wght@400;500;600;700&display=swap');
:root{--cream:#fff8e8;--ink:#514434;--muted:#8d7b65;--yellow:#f9ce61;--pink:#d78387;--olive:#7d895d;--border:#e7dbc5;--font:'Mali',Tahoma,sans-serif}
*{box-sizing:border-box}html{background:var(--cream);scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:var(--font);background:radial-gradient(ellipse at 12% 45%,#fff0cd80,transparent 55%),var(--cream);font-size:16px;min-width:320px}button,a,input{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a,label{touch-action:manipulation}button{cursor:pointer;color:inherit}button{border:0}button:focus-visible,a:focus-visible,label:focus-within{outline:3px solid var(--olive);outline-offset:5px}button:disabled{opacity:.4;cursor:default}a{color:inherit}svg{overflow:visible}.svg-library{position:absolute;width:0;height:0}.paper-grain{position:fixed;inset:0;opacity:.13;pointer-events:none;z-index:20;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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.35' filter='url(%23n)'/%3E%3C/svg%3E")}.topbar{max-width:1400px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:27px 5.5vw;position:relative;z-index:2}.wordmark{text-decoration:none;font-family:Georgia,serif;font-size:24px;letter-spacing:-1px}.wordmark i{font-weight:400;color:#76835b}.wordmark>span{display:block;font:9px 'DM Sans',sans-serif;letter-spacing:2.5px;margin-top:7px}.top-note{font:12px 'DM Sans',sans-serif;color:var(--muted);letter-spacing:1px}.top-note>span{font-size:23px;margin-left:12px;color:var(--pink)}main{max-width:1280px;margin:auto;padding:0 6vw}.screen{position:relative;min-height:calc(100svh - 198px);padding:30px 0 70px;animation:arrive .65s ease both}.screen[hidden],[hidden]{display:none!important}.eyebrow{display:block;font:10px 'DM Sans',sans-serif;letter-spacing:3px;color:var(--olive);font-weight:600}.intro{display:grid;grid-template-columns:1fr 1fr;align-content:center;column-gap:60px;padding-bottom:160px}.intro h1{font-weight:600;font-size:clamp(30px,3.55vw,54px);line-height:1.55;letter-spacing:-1.6px;margin:24px 0 20px}.pink{color:var(--pink)}.intro h1 .pink{font-size:32px;margin-left:10px;display:inline-block;transform:rotate(-12deg)}.intro-copy>p{color:var(--muted);line-height:1.95;font-size:15px}.envelope{position:relative;background:none;width:100%;max-width:440px;height:280px;align-self:center;transform:rotate(-7deg);filter:drop-shadow(0 20px 20px #8b6f3d18);transition:transform .4s}.envelope:hover{transform:rotate(-3deg) translateY(-6px)}.envelope-back{position:absolute;inset:35px 0 0;background:#e9ba69;border-radius:5px}.letter-peek{position:absolute;background:#fffefa;width:86%;height:210px;top:0;left:7%;border:1px solid #eee2cb;transform:rotate(2deg);font:italic 20px Georgia,serif;padding:30px 15px;color:var(--pink);box-shadow:0 0 6px #59452e0a}.envelope-front{position:absolute;inset:35px 0 0;background:linear-gradient(145deg,#f7dca3,#f4ce8c);clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%)}.envelope-flap{position:absolute;left:0;right:0;top:35px;height:150px;background:#f9dfac;clip-path:polygon(0 0,100% 0,50% 90%);filter:drop-shadow(0 2px 1px #805d3430)}.seal{position:absolute;left:calc(50% - 24px);top:146px;width:48px;height:48px;border-radius:50%;background:#cb7b7b;color:#fff0dd;display:grid;place-items:center;font:30px Georgia,serif;box-shadow:inset 0 0 0 4px #b86d6c60,0 2px 3px #5d3e2815}.address{position:absolute;bottom:34px;left:30px;transform:rotate(2deg);font-weight:500;font-size:20px}.postage{position:absolute;right:22px;bottom:27px;font-size:28px;border:1px dashed #b89b64;padding:5px 10px}.postage small{display:block;font:7px 'DM Sans',sans-serif;letter-spacing:1px}.handwritten{font-family:var(--font);font-style:italic;color:var(--olive)}.envelope-note{position:absolute;right:9%;top:calc(50% + 115px);font-size:15px;transform:rotate(-7deg)}.intro-bottom{position:absolute;bottom:30px;left:0;right:0;display:flex;align-items:end;justify-content:center;gap:28px}.intro-bottom>span{font-size:11px;color:var(--muted);margin-bottom:24px}.duck-large{width:110px;height:105px;transform:rotate(-5deg)}.flower-large{width:80px;height:125px;transform:rotate(13deg)}.corner-note{position:absolute;bottom:14px;left:0;font:10px 'DM Sans',sans-serif;color:#aa987b;letter-spacing:1px}.journey-progress{max-width:1400px;margin:0 auto;padding:15px 5.5vw 28px;display:flex;align-items:center;gap:16px;color:var(--muted);font:10px 'DM Sans',sans-serif;letter-spacing:1px}.progress-track{width:115px;height:2px;background:var(--border)}#progress-fill{display:block;background:var(--olive);height:100%;width:20%;transition:width .6s}#progress-count{margin-left:4px}.primary,.secondary{border-radius:50px;padding:14px 24px;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:15px;font-weight:600;font-size:14px;transition:transform .2s,background .2s;text-decoration:none}.primary{background:var(--yellow);box-shadow:0 3px 0 #dcb04b40}.primary:hover{background:#f5c34e;transform:translateY(-2px)}.secondary{border:1px solid var(--border);background:#fffcf5}.text-button{background:none;font-size:12px;color:var(--muted);padding:12px 0;min-height:44px}.section-header{text-align:center}.section-header h2{font-size:clamp(27px,3vw,42px);font-weight:500;line-height:1.6;margin:18px 0 30px}.memory-layout{display:grid;grid-template-columns:1fr 1fr;gap:65px;align-items:center;max-width:890px;margin:0 auto}.memory-art{min-width:0;display:flex;align-items:center;justify-content:center;height:410px}.tinder-ticket{background:#fffdf6;border:1px solid var(--border);border-radius:12px;width:320px;padding:30px 22px;text-align:center;transform:rotate(-4deg);box-shadow:7px 12px 0 #eee2ca70}.tiny-heart{display:block;color:var(--pink);font-size:36px}.tinder-ticket strong{display:block;font:italic 27px Georgia,serif;margin:15px 0}.tinder-ticket>span:not(.tiny-heart){font-size:12px}.ticket-ducks{display:flex;align-items:center;justify-content:center;margin:25px 0}.ticket-ducks svg{width:105px;height:100px}.ticket-ducks>span{color:var(--pink);font-size:27px}.flipped{transform:scaleX(-1)}.ticket-line{display:block;border-top:1px dashed var(--border);padding-top:17px;font:9px 'DM Sans',sans-serif!important;color:var(--muted)}.chapter{font:10px 'DM Sans',sans-serif;letter-spacing:2px;color:var(--pink)}.memory-copy h3{font-size:25px;font-weight:500;line-height:1.8;margin:20px 0 15px;overflow-wrap:anywhere}.memory-copy>p{color:var(--muted);font-size:13px;line-height:1.9}.memory-nav{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:28px}.memory-dots{display:flex;gap:10px;margin-top:24px}.memory-dots button{padding:10px 5px;background:none}.memory-dots button:after{content:'';display:block;height:7px;width:7px;border-radius:50%;background:var(--border)}.memory-dots button[aria-current=true]:after{background:var(--pink);width:24px;border-radius:8px}.polaroid{position:relative;background:#fffef9;padding:12px 12px 30px;transform:rotate(-4deg);max-width:300px;width:100%;box-shadow:0 8px 30px #735a3220;border:1px solid #eadfc9}.polaroid img{display:block;width:100%;max-height:310px;object-fit:contain;background:#151414}.polaroid.profile img{height:310px;object-fit:cover;object-position:center 45%}.polaroid>span{display:block;margin-top:15px;font-size:12px;font-style:italic;text-align:center}.polaroid:before,.tape{content:'';position:absolute;left:calc(50% - 42px);top:-12px;width:84px;height:28px;background:#d9dfc68c;transform:rotate(-6deg);z-index:2}.image-hint{font-size:10px;color:var(--muted);display:block;text-align:center;margin-top:10px}.letter-screen{padding-top:35px}.letter-paper{max-width:670px;background:#fffdf7;margin:0 auto;padding:42px 55px 35px;border:1px solid #eee2ce;position:relative;transform:rotate(-1deg);box-shadow:0 8px 35px #6d57320b}.letter-paper h2{font-size:26px;font-weight:500;line-height:1.7;margin:22px 0}.letter-text{font-size:16px;line-height:2.25}.letter-text p{margin:0 0 20px}.letter-highlight{font-size:22px;color:var(--olive);line-height:1.9}.signature{font-size:16px;margin-top:30px;transform:rotate(-4deg)}.signature span{color:var(--pink);font-size:24px}.letter-flower{position:absolute;bottom:20px;right:25px;width:60px;height:95px;transform:rotate(14deg)}.section-actions{display:flex;justify-content:center;gap:35px;margin:30px auto 0;align-items:center}.question-screen{text-align:center;padding-top:40px}.question-illustration{display:flex;align-items:center;justify-content:center;position:relative;max-width:400px;margin:45px auto 0}.question-illustration>svg{width:125px;height:120px}.question-illustration>span{font-size:40px;color:var(--pink);align-self:start;margin-top:10px;animation:heartbeat 2s infinite}.question-illustration>.question-flower{position:absolute;right:0;top:-25px;width:55px;height:85px;transform:rotate(20deg)}.question-screen h2{font-size:clamp(38px,5vw,66px);font-weight:600;margin:20px 0 12px}.question-screen>p{color:var(--muted);font-size:14px}.yes-zone{margin-top:28px}.yes-button{min-width:180px;font-size:22px;padding:17px 35px}.no-zone{position:relative;width:100%;max-width:660px;height:185px;margin:5px auto 0}.no-zone button{position:absolute;left:50%;top:25px;transform:translateX(-50%);font-size:13px;max-width:calc(100% - 20px);transition:left .28s ease,top .28s ease,opacity 1s ease;font-weight:400;white-space:normal}.no-zone button.vanishing{opacity:0;pointer-events:none}.question-screen .question-aside{font-size:12px;min-height:35px;max-width:500px;margin:0 auto;line-height:1.8}.question-back{margin-top:10px}.celebration{text-align:center;padding-top:30px}.celebration-heart{display:block;font-size:45px;margin:20px auto 15px;animation:heartbeat 2s infinite}.celebration h2{font-size:clamp(28px,3vw,42px);font-weight:600;line-height:1.7;margin:0}.celebration-subtitle{color:var(--pink);font-size:19px;margin:12px 0 35px}.photo-booth{position:relative;background:#fffefa;border:1px solid var(--border);padding:15px 15px 25px;max-width:410px;margin:0 auto;transform:rotate(-2deg);box-shadow:6px 10px 0 #eee2ca70}.photo-stage{position:relative;aspect-ratio:1;background:#f1ebd9;overflow:hidden}.photo-stage video,.photo-stage>img{width:100%;height:100%;object-fit:cover}.photo-stage video{transform:scaleX(-1)}#camera-placeholder{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--muted)}#camera-placeholder svg{width:125px;height:115px}#camera-placeholder>span{margin-top:14px;font-size:15px}#camera-placeholder small{font-size:11px;margin-top:10px}.photo-booth h3{font-size:14px;font-weight:500;margin:20px 0 8px}.photo-booth>.handwritten{font-size:10px}.camera-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;max-width:540px;margin:30px auto 0}.file-label{cursor:pointer}.file-label input{display:none}.camera-status{font-size:11px;color:var(--muted);line-height:1.8}.camera-countdown{position:absolute;inset:0;display:grid;place-items:center;color:white;font:bold 100px 'DM Sans',sans-serif;pointer-events:none;text-shadow:0 3px 15px #0008}.ending{margin-top:35px;font-size:13px;color:var(--olive)}#download-photo{display:inline-block;font-size:14px;margin:15px auto;color:var(--olive)}.music-toggle{position:fixed;z-index:31;bottom:max(20px,env(safe-area-inset-bottom));right:28px;display:flex;align-items:center;gap:13px;background:#fffcf4;border:1px solid var(--border);padding:12px 18px 12px 12px;border-radius:50px;box-shadow:0 4px 20px #5b44200d;text-align:left;font-size:12px}.music-toggle small{display:block;font:8px 'DM Sans',sans-serif;color:var(--muted);margin-top:3px;letter-spacing:.5px}.music-disc{width:32px;height:32px;background:var(--olive);border-radius:50%;color:#fff8e8;display:grid;place-items:center;font-size:20px}.music-panel{position:fixed;z-index:30;bottom:100px;right:28px;width:370px;max-width:calc(100vw - 28px);background:#fffdf5;padding:22px;border:1px solid var(--border);border-radius:18px;box-shadow:0 12px 60px #51443425;animation:arrive .3s ease;max-height:calc(100svh - 130px);overflow:auto}.music-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.music-heading h2{font-size:16px;font-weight:500;margin:10px 0 0}.music-heading .eyebrow{font-size:8px;letter-spacing:1.5px}.icon-button{background:none;font:25px 'DM Sans',sans-serif;width:44px;height:44px;flex-shrink:0}.music-panel>p{font-size:11px;color:var(--muted);margin-bottom:17px}.music-panel iframe{width:100%;height:352px;border:0;border-radius:12px}.spotify-link{display:inline-block;font-size:12px;color:var(--olive);margin:16px 0 10px}.spotify-note{display:block;font-size:10px;line-height:1.8;color:var(--muted)}dialog{border:1px solid var(--border);border-radius:15px;background:var(--cream);padding:20px;max-width:90vw;max-height:90svh}dialog::backdrop{background:#34271ed9}dialog .icon-button{display:block;margin:0 0 5px auto}dialog img{display:block;max-width:100%;max-height:65svh;object-fit:contain;margin:auto}dialog p{text-align:center;font-size:12px}#confetti{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}.confetti-bit{position:absolute;top:-40px;animation:fall 3s ease-in forwards;font-size:22px}@keyframes arrive{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes heartbeat{50%{transform:scale(1.12)}}@keyframes fall{to{transform:translate(var(--drift),110svh) rotate(400deg);opacity:0}}
@media(min-width:1450px){.intro{min-height:720px}}@media(max-width:700px){.topbar{padding:23px 23px 16px}.wordmark{font-size:22px}.wordmark>span{font-size:8px}.top-note{display:none}main{padding:0 23px}.screen{min-height:calc(100svh - 170px);padding-bottom:45px}.intro{grid-template-columns:1fr;text-align:center;align-content:start;padding-top:40px;padding-bottom:140px}.eyebrow{font-size:8px;letter-spacing:2.3px}.intro h1{font-size:32px;letter-spacing:-.7px;margin:20px 0 15px;line-height:1.6}.intro h1 .pink{font-size:23px;margin-left:4px}.intro-copy>p{font-size:13px;line-height:1.8}.envelope{max-width:290px;height:210px;margin:32px auto 0}.letter-peek{height:165px;font-size:16px;padding-top:20px}.envelope-flap{height:105px}.seal{top:110px;width:40px;height:40px;left:calc(50% - 20px);font-size:25px}.address{font-size:16px;bottom:25px;left:22px}.postage{right:16px;bottom:20px;font-size:22px;padding:4px 7px}.postage small{font-size:5px}.envelope-note{position:relative;right:auto;top:auto;margin:24px 0 0 145px;display:block;font-size:12px}.intro-bottom{bottom:25px;gap:10px}.duck-large{width:75px;height:70px}.flower-large{width:55px;height:85px}.intro-bottom>span{font-size:9px;margin-bottom:18px}.corner-note{font-size:8px;bottom:5px}.journey-progress{padding:20px 23px 108px;gap:11px;font-size:8px}.progress-track{width:70px}.section-header h2{font-size:28px;margin:20px 0}.memories{padding-top:30px}.memory-layout{grid-template-columns:1fr;gap:15px}.memory-art{height:355px}.tinder-ticket{width:280px}.polaroid{max-width:260px;padding:10px 10px 22px}.polaroid img{max-height:270px}.polaroid.profile img{height:270px}.polaroid>span{font-size:11px}.memory-copy{text-align:center}.chapter{font-size:9px}.memory-copy h3{font-size:22px;line-height:1.75;margin:14px 0 10px}.memory-copy>p{font-size:12px;margin:0 auto;max-width:300px}.memory-dots{justify-content:center;margin-top:15px}.memory-nav{justify-content:center;gap:20px;margin-top:10px}.primary,.secondary{font-size:13px;padding:13px 22px}.letter-screen{padding-top:30px}.letter-paper{padding:35px 24px 35px}.letter-paper .eyebrow{font-size:7px;letter-spacing:1.3px}.letter-paper h2{font-size:22px;margin:25px 0}.letter-text{font-size:15px;line-height:2.2}.letter-highlight{font-size:20px}.letter-flower{right:15px;bottom:18px;width:48px;height:80px}.signature{font-size:14px}.section-actions{gap:10px;flex-direction:column;margin-top:22px}.section-actions .text-button{order:2}.question-screen{padding-top:40px}.question-illustration{margin-top:50px;max-width:290px}.question-illustration>svg{width:110px;height:100px}.question-illustration>.question-flower{right:-5px;width:40px;height:70px}.question-screen h2{font-size:39px;letter-spacing:-1px;margin-top:28px}.question-screen>p{font-size:13px}.yes-button{font-size:20px;min-width:175px;padding:15px 25px}.no-zone{height:195px}.no-zone button{font-size:12px;padding:12px 18px}.question-screen .question-aside{font-size:11px}.celebration .eyebrow{font-size:7px}.celebration h2{font-size:29px}.celebration-subtitle{font-size:16px;margin-bottom:35px}.photo-booth{padding:12px 12px 22px}.photo-booth h3{font-size:12px}.camera-actions{gap:10px}.camera-actions .primary,.camera-actions .secondary{font-size:12px;padding:12px 17px}.music-toggle{right:16px;bottom:calc(14px + env(safe-area-inset-bottom));padding:9px 13px 9px 9px;font-size:11px;gap:9px}.music-disc{width:28px;height:28px;font-size:17px}.music-panel{right:14px;bottom:calc(83px + env(safe-area-inset-bottom));padding:18px;width:350px}.ending{font-size:11px}}
main{padding-top:max(24px,env(safe-area-inset-top))}.screen{min-height:calc(100svh - 24px);padding-bottom:110px}.intro{padding-bottom:160px}
.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 0 130px}.duck-delivery{position:relative;width:min(100%,330px);margin-bottom:26px}.duck-walkway{height:190px;position:relative;overflow:hidden;border-bottom:2px dashed #d9cfb7}.walking-duck{position:absolute;width:125px;bottom:0;left:-105px;animation:duck-stroll 4.5s linear both}.walking-duck svg{display:block;width:100%;height:auto}.duck-body{transform-origin:90px 110px;animation:duck-waddle .38s ease-in-out infinite}.duck-foot{transform-box:fill-box;transform-origin:top center;animation:duck-step .38s ease-in-out infinite alternate}.foot-right{animation-delay:-.38s}.walking-shadow{position:absolute;bottom:2px;left:-88px;width:85px;height:9px;background:#b7a57e33;border-radius:50%;animation:duck-stroll 4.5s linear both;z-index:-1}.delivery-flower{position:absolute;width:55px;height:90px;bottom:0;right:4px;transform:rotate(10deg)}.delivery-heart{position:absolute;color:var(--pink);font-size:29px;animation:duck-heart 1.4s ease-in-out infinite}.heart-one{left:70px;top:5px}.heart-two{left:170px;top:32px;font-size:21px;animation-delay:.5s}.duck-trail{display:block;margin-top:12px;color:#b5a98a;font-size:14px;letter-spacing:3px}.loading-screen h2{font-size:clamp(22px,3vw,30px);font-weight:500;margin:0 0 15px}.loading-screen>p{font-size:12px;line-height:1.9;color:var(--muted);margin:0}.loading-dots{display:flex;gap:8px;margin-top:24px}.loading-dots span{width:7px;height:7px;background:var(--yellow);border-radius:50%;animation:loading-bounce .8s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.15s}.loading-dots span:nth-child(3){animation-delay:.3s}@keyframes duck-stroll{to{translate:360px 0}}@keyframes duck-waddle{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-5px) rotate(4deg)}}@keyframes duck-step{from{transform:rotate(-23deg)}to{transform:rotate(24deg)}}@keyframes duck-heart{50%{transform:translateY(-8px) rotate(10deg);opacity:.5}}@keyframes loading-bounce{50%{transform:translateY(-5px);opacity:.4}}
@media(prefers-reduced-motion:reduce){.walking-duck{left:90px}.walking-shadow{left:110px}*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
