:root{--paper:#f4eee4;--ink:#422c2c;--wine:#832338;--muted:#78635b;--line:#d9cbbd;--white:#fffdf8;--serif:Georgia,'Times New Roman',serif;--sans:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.7}body.locked{overflow:hidden}body:before{content:'';position:fixed;inset:0;pointer-events:none;opacity:.16;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' opacity='.15' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");z-index:10}[hidden]{display:none!important}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid var(--wine);outline-offset:8px}a{color:inherit}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1;letter-spacing:-.05em}h1{font-size:clamp(4.6rem,9vw,8.5rem)}h2{font-size:clamp(2.7rem,5.1vw,4.9rem)}em{color:var(--wine);font-weight:400}p+p{margin-top:1.2rem}.eyebrow{font-size:.78rem;font-weight:500;letter-spacing:.2em;color:var(--wine);margin-bottom:1.6rem}.section{max-width:1080px;margin:0 auto;padding:90px 45px}.centered{text-align:center}.handwritten{font-family:var(--serif);font-style:italic;color:var(--wine);display:block;font-size:1.4rem;line-height:1.45;margin-top:25px}.heart-type{color:var(--wine);font-size:.56em;display:inline-block;margin-left:12px;vertical-align:middle}.gate{position:fixed;z-index:20;inset:0;display:flex;flex-direction:column;justify-content:space-between;align-items:center;background:var(--paper);padding:28px 40px;text-align:center;overflow:auto;transition:opacity .7s,transform .7s}.gate-top{display:flex;justify-content:space-between;width:100%;font-size:.75rem;letter-spacing:.19em;color:var(--wine)}.gate-inner{margin:auto;padding:35px 0}.gate h1{font-size:clamp(4.5rem,8vw,7rem)}.gate-intro{color:var(--muted);margin-top:20px;font-family:var(--serif);font-size:1.4rem;line-height:1.45}.heart-button{position:relative;display:block;border:0;background:transparent;width:145px;height:150px;margin:34px auto 15px;cursor:pointer;filter:drop-shadow(0 12px 16px #83233822)}.heart-button svg{width:100%;fill:var(--wine);animation:heartbeat 2s infinite;overflow:visible}.heart-button.bump svg{animation:tap .32s ease}.tap-hint{font-size:.88rem;color:var(--muted);min-height:24px}.beats{display:flex;justify-content:center;gap:10px;margin:20px 0}.beats i{height:7px;width:7px;border:1px solid var(--wine);border-radius:50%;transition:background .2s,transform .2s}.beats i.filled{background:var(--wine);transform:scale(1.2)}.gate-bottom{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:1rem}.gate.leaving{opacity:0;transform:scale(1.07);pointer-events:none}.particle{position:fixed;font-family:var(--serif);color:var(--wine);pointer-events:none;animation:float 950ms ease-out forwards;font-size:24px}.topbar{height:86px;margin:0 auto;padding:0 45px;max-width:1180px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:.78rem;letter-spacing:.16em;color:var(--wine);position:relative}.topbar a{font-family:var(--serif);font-size:1.3rem;text-decoration:none;letter-spacing:.08em}.topbar a span{font-size:1rem}.topbar button{background:var(--white);border:1px solid var(--line);border-radius:40px;padding:9px 16px;color:var(--wine);font-size:.85rem;letter-spacing:0;cursor:pointer}.birthday{display:grid;grid-template-columns:1.2fr 1fr;gap:50px;position:relative;min-height:690px;align-items:center;padding-top:75px;padding-bottom:95px}.birthday-copy{z-index:1}.birthday h1{color:var(--wine);font-size:clamp(4.6rem,8.5vw,7.8rem)}.birthday h1 em{font-weight:400}.birthday .lead{font-family:var(--serif);font-size:1.8rem;line-height:1.35;margin-top:25px}.small-note{color:var(--muted);margin-top:20px;font-size:.95rem}.text-link{display:inline-block;margin-top:30px;text-decoration:none;border-bottom:1px solid var(--wine);color:var(--wine);font-size:.88rem;padding-bottom:5px}.hero-number{position:absolute;left:37%;bottom:15px;font-family:var(--serif);color:#83233808;font-size:260px;line-height:1;z-index:-1}.polaroid{padding:13px 13px 19px;background:var(--white);box-shadow:0 8px 22px #39231f16;position:relative}.polaroid:before{content:'';position:absolute;z-index:2;top:-12px;left:calc(50% - 37px);height:29px;width:74px;background:#d9cab983;transform:rotate(-4deg)}.polaroid img{display:block;width:100%;height:auto;object-fit:contain;max-height:510px;background:#e8dfd2}.polaroid figcaption{font-family:var(--serif);font-style:italic;text-align:center;color:var(--muted);font-size:1.12rem;line-height:1.4;padding-top:16px}.hero-photo{transform:rotate(5deg);max-width:365px;margin-left:10px}.tilt-left{transform:rotate(-3deg)}.tilt-right{transform:rotate(3deg)}.ribbon{display:flex;gap:40px;justify-content:center;padding:19px 30px;border-block:1px solid var(--line);font-family:var(--serif);font-style:italic;font-size:1.1rem;color:var(--wine)}.ribbon span+span:before{content:'♡';display:inline-block;margin-right:40px}.memory{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:100px}.memory-text h2{margin-bottom:26px}.memory-text p:not(.eyebrow){color:var(--muted);max-width:420px;font-size:1.04rem;line-height:1.85}.first-memory>.polaroid{max-width:310px;justify-self:center}.photo-duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center}.photo-duo .polaroid{padding:10px 10px 16px}.photo-duo .polaroid:nth-child(2){margin-top:80px}.photo-duo img{max-height:330px}.photo-duo figcaption{font-size:1rem}.greece{grid-template-columns:1.25fr 1fr;gap:65px;padding-top:30px}.adventures{background:#e9e0d3;border-block:1px solid var(--line);position:relative}.intro{max-width:660px;margin:0 auto 60px}.intro p:not(.eyebrow){max-width:525px;margin:25px auto 0;color:var(--muted)}.mountain-pair{display:grid;grid-template-columns:1fr 1fr;gap:38px;align-items:center}.mountain-pair .polaroid:nth-child(2){margin-top:45px}.gifts{display:grid;grid-template-columns:1fr 1.2fr;gap:70px;align-items:center;padding-top:110px}.gifts .memory-text p:not(.eyebrow){margin-inline:auto}.separator{font-family:var(--serif);font-size:42px;text-align:center;color:var(--wine);margin:0 0 10px}.little-moments{padding-top:35px}.little-memory{display:grid;grid-template-columns:.8fr 1fr;align-items:center;gap:110px;margin-bottom:95px}.little-memory .polaroid{max-width:330px;margin:auto}.little-memory h2{margin-bottom:24px}.little-memory p:not(.eyebrow){color:var(--muted);max-width:425px}.little-memory.reverse{direction:rtl;margin-bottom:10px}.little-memory.reverse>*{direction:ltr}.letter-section{background:var(--wine);color:var(--paper);position:relative}.letter-section .eyebrow{color:#e5bfb9}.letter-section h2 em{color:var(--paper)}.envelope-hint{margin-top:22px;color:#e6cec8}.envelope{border:0;width:min(400px,100%);height:245px;margin:70px auto 20px;position:relative;background:transparent;cursor:pointer;filter:drop-shadow(0 15px 20px #3b091b50);display:block;color:var(--wine)}.envelope-back{position:absolute;inset:0;background:#dccfbc;border-radius:3px}.letter-peek{position:absolute;inset:15px 20px 5px;background:var(--white);font-family:var(--serif);font-style:italic;padding:25px 0;font-size:1.5rem;transition:transform .6s}.envelope-front{position:absolute;inset:0;background:#f3e7d5;clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%)}.envelope-flap{position:absolute;inset:0;background:#e8dac6;clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top;transition:transform .6s;z-index:2}.wax-seal{position:absolute;z-index:3;left:calc(50% - 30px);top:105px;width:60px;height:60px;background:var(--wine);border-radius:50%;border:5px double #a14a50;box-shadow:0 4px 5px #592e2840;color:#f5d5c7;font-size:32px;line-height:48px;transition:opacity .3s}.envelope-label{position:absolute;z-index:3;bottom:25px;left:0;width:100%;font-family:var(--serif);font-style:italic;font-size:1.1rem}.envelope.open .envelope-flap{transform:rotateX(180deg);z-index:0}.envelope.open .letter-peek{transform:translateY(-48px)}.envelope.open .wax-seal{opacity:0}.letter{position:relative;background:var(--white);color:var(--ink);max-width:670px;margin:50px auto 0;padding:55px 60px 40px;text-align:left;box-shadow:0 12px 40px #3c092833;border-top:5px solid #d6b8a0;animation:letterAppear .6s ease both;scroll-margin-top:30px}.letter-date{text-align:right;font-size:.78rem;color:var(--muted);margin-bottom:32px}.letter h3{font-size:2rem;letter-spacing:-.03em;line-height:1.3;margin-bottom:28px;color:var(--wine)}.letter>p:not(.letter-date):not(.signature){font-family:var(--serif);font-size:1.18rem;line-height:1.85}.letter-love{color:var(--wine);font-weight:600}.letter .signature{font-family:var(--serif);font-style:italic;font-size:2.2rem;text-align:right;color:var(--wine);margin-top:28px}.finale{padding-block:110px 35px}.final-heart{font-family:var(--serif);font-size:70px;line-height:1;color:var(--wine);margin-bottom:25px}.finale>p:not(.eyebrow):not(.footer-sign){margin-top:30px;color:var(--muted);font-size:1.15rem}.footer-sign{margin-top:80px;font-size:.72rem;letter-spacing:.12em;color:var(--muted)}.reveal{opacity:1;transform:none}.motion .reveal{opacity:0;transform:translateY(24px);transition:opacity .9s,transform .9s}.motion .reveal.visible{opacity:1;transform:none}@keyframes heartbeat{0%,40%,80%,100%{transform:scale(1)}10%{transform:scale(1.08)}22%{transform:scale(1.02)}30%{transform:scale(1.11)}}@keyframes tap{50%{transform:scale(1.24)}100%{transform:scale(1)}}@keyframes float{to{transform:translate(var(--dx),-130px) rotate(var(--rot));opacity:0}}@keyframes letterAppear{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1400px){.section{max-width:1180px}.birthday{min-height:760px}}@media(max-width:760px){.section{padding:65px 25px}.gate{padding:22px 24px}.gate-top{font-size:.67rem}.gate h1{font-size:4.5rem}.gate-intro{font-size:1.3rem}.heart-button{width:130px;height:135px;margin-block:25px 10px}.gate-inner{padding-block:30px}.topbar{height:70px;margin-inline:24px;padding:0}.birthday{grid-template-columns:1fr;gap:45px;text-align:center;padding-top:52px;padding-bottom:64px;min-height:0}.birthday h1{font-size:5.7rem}.birthday .eyebrow{font-size:.72rem;margin-bottom:20px}.birthday .lead{font-size:1.55rem;margin-top:20px}.small-note{font-size:.94rem}.text-link{margin-top:23px}.hero-photo{width:76%;max-width:330px;justify-self:center;margin:0}.hero-number{display:none}.ribbon{padding:17px 12px;gap:0;flex-wrap:wrap;font-size:.91rem}.ribbon span+span:before{margin:0 10px}.ribbon span:last-child{display:none}.memory{grid-template-columns:1fr;gap:40px;text-align:center}.memory-text p:not(.eyebrow){margin-inline:auto}.first-memory>.polaroid{width:78%;max-width:320px}.greece .photo-duo{order:2}.photo-duo{gap:12px}.photo-duo .polaroid:nth-child(2){margin-top:40px}.photo-duo figcaption{font-size:.9rem}.photo-duo .polaroid{padding:8px 8px 12px}.photo-duo img{max-height:290px}.greece{padding-top:5px}.mountain-pair{gap:20px;grid-template-columns:1fr}.mountain-pair .polaroid{width:92%;margin:auto}.mountain-pair .polaroid:nth-child(2){margin-top:20px}.intro{margin-bottom:45px}.intro h2{font-size:2.8rem}.handwritten{font-size:1.25rem}.gifts{grid-template-columns:1fr;gap:35px}.little-memory,.little-memory.reverse{grid-template-columns:1fr;gap:35px;text-align:center;direction:ltr;margin-bottom:75px}.little-memory .polaroid{width:76%;order:2}.little-memory p:not(.eyebrow){margin-inline:auto}.little-memory.reverse{margin-bottom:0}.little-moments{padding-top:30px}.letter-section .section{padding-inline:22px}.letter-section h2{font-size:2.7rem}.envelope{height:205px;max-width:340px;margin-top:65px}.wax-seal{top:86px}.envelope-label{bottom:19px}.letter{padding:30px 25px;margin-top:35px}.letter h3{font-size:1.8rem}.letter>p:not(.letter-date):not(.signature){font-size:1.08rem;line-height:1.8}.letter-date{font-size:.75rem}.finale h2{font-size:3rem}.finale{padding-top:75px}.footer-sign{font-size:.65rem;line-height:1.8;margin-top:60px}.eyebrow{font-size:.72rem}.separator{margin-top:-15px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion .reveal{opacity:1;transform:none}}

.bicho-photos{display:grid;gap:28px;min-width:0}.little-memory .bicho-photos .polaroid{width:90%;margin-inline:auto}.bicho-photos img{width:100%;height:auto;object-fit:contain}@media(max-width:760px){.little-memory .bicho-photos{order:2;width:100%}.little-memory .bicho-photos .polaroid{width:80%;max-width:350px}}
