@font-face{font-family:Titan One;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/titan-one-latin-400-normal.DwVbh4mi.woff2)format("woff2"),url(/_astro/titan-one-latin-400-normal.VZVzRR2h.woff)format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/poppins-latin-400-normal.cpxAROuN.woff2)format("woff2"),url(/_astro/poppins-latin-400-normal.BOb3E3N0.woff)format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/poppins-latin-500-normal.C8OXljZJ.woff2)format("woff2"),url(/_astro/poppins-latin-500-normal.DGXqpDMm.woff)format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/poppins-latin-600-normal.zEkxB9Mr.woff2)format("woff2"),url(/_astro/poppins-latin-600-normal.BJdTmd5m.woff)format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/poppins-latin-700-normal.Qrb0O0WB.woff2)format("woff2"),url(/_astro/poppins-latin-700-normal.BVuQR_eA.woff)format("woff")}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/caveat-latin-400-normal.D6LQsQ_v.woff2)format("woff2"),url(/_astro/caveat-latin-400-normal.BzhAQZkN.woff)format("woff")}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/caveat-latin-600-normal.zlTlWIYU.woff2)format("woff2"),url(/_astro/caveat-latin-600-normal.DUjB8dgm.woff)format("woff")}:root{color:#57363b;font-synthesis:none;--rose:#a13649;--ink:#57363b;--muted:#775b61;--coral:#ff6b6b;--pink:#fff0ed;--mint:#e4f8f4;--yellow:#fff9d9;background:#fff0ed;font-family:Poppins,sans-serif}*{box-sizing:border-box}html{scroll-padding-top:24px}body{min-width:320px;margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}a{color:inherit}svg{flex:none;display:block}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:0;font-family:Titan One,sans-serif;font-weight:400}h1{font-size:3rem;line-height:1.2}h2{color:var(--rose);font-size:2.25rem;line-height:1.2}h3{font-size:1.375rem;line-height:1.35}button:focus-visible,a:focus-visible{outline-offset:5px;outline:3px solid #176b67}.handwritten{font-family:Caveat,cursive;font-size:1.75rem;font-weight:400;line-height:1.2}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;color:#fff;background:#176b67;border-radius:16px;max-width:calc(100% - 32px);padding:16px;position:fixed;top:8px;left:16px;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.birthday-header{justify-content:space-between;align-items:center;gap:16px;max-width:1400px;min-height:72px;margin:auto;padding:14px 24px;display:flex}.birthday-wordmark{color:var(--rose);align-items:center;gap:8px;min-height:44px;font-family:Caveat,cursive;font-size:1.75rem;font-weight:600;text-decoration:none;display:flex}.birthday-wordmark span{font-size:1.875rem}.header-date{color:var(--muted);font-size:.875rem;font-weight:500}.header-link{align-items:center;gap:8px;min-height:44px;font-size:.875rem;font-weight:500;text-decoration:none;display:none}.birthday-hero{isolation:isolate;text-align:center;background:var(--pink);flex-direction:column;align-items:center;padding:12px 20px 28px;display:flex;position:relative}.hero-note{color:var(--muted);font-size:1.375rem}.hero-title{z-index:1;padding-top:18px;position:relative}.hero-greeting{color:var(--rose);font-size:.875rem;font-weight:600}.hero-title h1{color:var(--rose);margin-top:8px;font-size:4rem;line-height:1.1}.title-heart{vertical-align:top;margin-left:3px;font-family:Caveat,cursive;font-size:2.75rem;display:inline-block;transform:rotate(15deg)}.hero-date{color:var(--muted);margin-top:10px;font-size:.875rem}.hero-collage{isolation:isolate;flex:none;width:min(440px,100%);height:385px;margin-top:18px;position:relative}.hero-age{color:#db7c85;white-space:nowrap;z-index:0;gap:42px;font-family:Titan One,sans-serif;font-size:12.5rem;line-height:1;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.hero-age span:first-child{transform:rotate(-9deg)}.hero-age span:last-child{transform:rotate(8deg)}.hero-portrait{aspect-ratio:900/1433;z-index:1;width:180px;position:absolute;top:24px;left:50%;transform:translate(-50%);mask-image:linear-gradient(#000 0 64%,#0000 88%)}.hero-portrait img{object-fit:contain;width:100%;height:100%;display:block}.birthday-cake{object-fit:contain;z-index:2;pointer-events:none;width:240px;height:240px;position:absolute;top:140px;left:50%;transform:translate(-50%)}.hero-ribbon{color:#b95868;pointer-events:none;z-index:3;width:56px;height:74px;transform:rotate(var(--ribbon-tilt));position:absolute}.ribbon-one{--ribbon-tilt:-17deg;--ribbon-delay:-.7s;top:4px;left:8px}.ribbon-two{--ribbon-tilt:15deg;--ribbon-delay:-2.4s;top:40px;right:4px}.ribbon-three{--ribbon-tilt:10deg;--ribbon-delay:-3.8s;top:228px;left:4px}.ribbon-four{--ribbon-tilt:-12deg;--ribbon-delay:-1.6s;top:245px;right:2px}.polaroid{background:#fff;margin:0;padding:10px 10px 0;position:relative;box-shadow:0 5px 18px #5c2e381a}.polaroid:before{content:"";z-index:1;background:#e6b2a480;width:72px;height:25px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-5deg)}.photo-window{aspect-ratio:4/5;background:#f7dce0;position:relative}.photo-window img{object-fit:cover;width:100%;height:100%;display:block;position:relative}.photo-fallback{height:100%;color:var(--rose);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-family:Caveat,cursive;display:none}.photo-fallback span:first-child{font-size:1.75rem}.photo-fallback span:last-child{font-size:1.125rem}.photo-window.is-missing img{display:none}.photo-window.is-missing .photo-fallback{display:flex}.polaroid figcaption{text-align:center;color:var(--muted);min-height:40px;padding:10px 0;font-family:Caveat,cursive;font-size:1.125rem;line-height:1.2}.photo-annotation{color:var(--rose);text-align:center;margin-top:22px;display:block}.hero-bottom-note{max-width:100%;color:var(--muted);margin-top:14px;font-size:.875rem}.story-section{padding:72px 24px}.section-inner{max-width:1080px;margin:auto}.letter-section{background:var(--mint)}.letter-grid{grid-template-columns:minmax(0,1fr);gap:48px;display:grid}.letter-copy{order:0}.letter-photo-block{order:1;width:100%;max-width:290px;margin:auto}.letter-photo{transform:rotate(-5deg)}.section-kicker{color:var(--muted);margin-bottom:16px;font-size:.875rem;font-weight:600;line-height:1.5;display:block}.letter-copy h2{margin-bottom:28px}.letter-copy>p{margin-bottom:20px;font-size:1rem;line-height:1.85}.letter-copy .letter-signoff{color:var(--rose);margin-top:28px;margin-bottom:0;font-size:1.75rem;line-height:1.35}.letter-photo-block .photo-annotation{font-size:1.5rem}.memory-section{background:#fff}.memory-grid{gap:48px;display:grid}.memory-copy h2{margin-bottom:24px}.memory-copy>p{max-width:430px;margin-bottom:20px;font-size:1rem;line-height:1.85}.memory-note{color:var(--rose);margin:32px 0 0 10px;font-size:2rem;display:block;transform:rotate(-4deg)}.memory-photo-block{width:100%;max-width:290px;margin:auto;position:relative}.memory-photo{transform:rotate(6deg)}.memory-heart{color:var(--rose);font-family:Caveat,cursive;font-size:5rem;position:absolute;bottom:-32px;left:-8px;transform:rotate(-15deg)}.memory-strip{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:32px 20px;max-width:460px;margin:72px auto 0;padding-inline:8px;display:grid}.snapshot-photo{min-width:0;transform:rotate(var(--photo-tilt))}.snapshot-photo:first-child{--photo-tilt:-5deg}.snapshot-photo:nth-child(2){--photo-tilt:5deg;margin-top:16px}.snapshot-photo:nth-child(3){--photo-tilt:-3deg;grid-column:1/-1;justify-self:center;width:calc(50% - 10px)}.snapshot-photo figcaption{place-items:center;min-height:52px;font-size:1rem;display:grid}.day-section{background:var(--yellow)}.day-heading{text-align:center;margin-bottom:48px}.day-heading h2{font-size:2.25rem}.day-heading h2 span{color:#765c31}.day-heading>p{color:var(--muted);margin-top:20px;font-size:1.625rem}.day-grid{gap:60px;display:grid}.plan-row{border-bottom:2px dashed #d9cbb1;grid-template-columns:48px minmax(0,1fr);gap:16px;padding:24px 0;display:grid}.plan-row:first-child{padding-top:0}.plan-marker{color:var(--rose);flex-direction:column;align-items:center;gap:12px;display:flex}.plan-marker span{font-family:Caveat,cursive;font-size:1.5rem}.plan-copy h3{font-size:1.125rem}.plan-copy>p{color:var(--muted);margin-top:10px;font-size:.875rem;line-height:1.8}.plan-end-note{color:var(--rose);text-align:right;margin-top:28px;font-size:1.75rem;display:block;transform:rotate(-4deg)}.day-photo-block{width:100%;max-width:275px;margin:auto;position:relative}.day-photo{transform:rotate(-6deg)}.date-stamp{width:112px;height:112px;color:var(--rose);background:#fff0ed;border:2px dashed #a13649;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:-24px;right:-10px;transform:rotate(12deg)}.date-stamp span{font-size:.875rem;font-weight:500;line-height:1.3}.date-stamp strong{font-family:Titan One,sans-serif;font-size:2.5rem;font-weight:400;line-height:1.2}.date-stamp span:last-child{font-size:.6875rem}.closing-section{text-align:center;background:#fce5e6;padding-top:64px;padding-bottom:72px}.closing-inner{max-width:800px;margin:auto}.closing-heart{color:var(--rose);margin-bottom:14px;font-family:Caveat,cursive;font-size:4.5rem;line-height:1;display:block}.closing-note{color:var(--muted);margin-bottom:20px;font-size:1.5rem}.closing-inner h2{font-size:2.25rem}.closing-message{max-width:480px;margin:24px auto 32px;font-size:1rem;line-height:1.85}.wish-button{color:#3f1720;background:#ff6b6b;border:0;border-radius:9999px;justify-content:center;align-items:center;gap:10px;min-height:52px;padding:14px 24px;font-size:.875rem;font-weight:600;text-decoration:none;transition:transform .2s,background .2s;display:inline-flex;box-shadow:0 4px 14px #ff6b6b33}.wish-button:hover{background:#f45f68;transform:translateY(-2px)}.wish-button:active{transform:translateY(1px)}.wish-button{border:2px solid #7e293e}.closing-signature{color:var(--rose);margin-top:28px;font-size:1.75rem;transform:rotate(-3deg)}.birthday-footer{color:var(--muted);background:#fce5e6;border-top:2px dashed #dfbfc5;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 24px;padding:24px;font-size:.875rem;display:flex}.wish-dialog{width:min(480px,100% - 32px);max-height:calc(100dvh - 40px);color:var(--ink);background:var(--pink);text-align:center;border:0;border-radius:24px;padding:44px 28px 32px;overflow-y:auto;box-shadow:0 8px 20px #00000026}.wish-dialog::backdrop{background:#3d1e2666}.icon-button{color:var(--rose);background:#fff;border:2px solid #a13649;border-radius:50%;place-items:center;width:44px;height:44px;padding:10px;display:grid}.wish-close{position:absolute;top:16px;right:16px}.wish-heart{color:var(--rose);margin-bottom:12px;font-family:Caveat,cursive;font-size:4rem;display:block}.wish-dialog h2{font-size:2rem}.wish-dialog>p{margin:24px 0;font-size:1rem;line-height:1.8}.wish-dialog>p.handwritten{color:var(--rose);font-size:2rem}.wish-dialog .wish-button{width:100%;padding-inline:16px;font-size:.875rem}.confetti-layer{z-index:5;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti-piece{border-radius:2px;width:10px;height:16px;animation:3s ease-in forwards confetti-fall;position:absolute;top:-20px}.not-found{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100dvh;padding:64px 24px;display:flex}.not-found h1{color:var(--rose);font-size:2.25rem}.not-found p{font-size:1rem;line-height:1.6}@media (width>=620px){.birthday-header{padding:16px 40px}.header-link{display:inline-flex}.birthday-hero{padding:16px 40px 32px}.hero-note{font-size:1.5rem}.hero-title{padding-top:22px}.hero-title h1{font-size:5rem}.hero-date{font-size:1rem}.hero-collage{width:540px;height:430px;margin-top:20px}.hero-age{gap:70px;font-size:18rem}.hero-portrait{width:224px;top:14px}.birthday-cake{width:280px;height:280px;top:146px}.hero-ribbon{width:76px;height:100px}.ribbon-one{top:18px;left:0}.ribbon-two{top:48px;right:0}.ribbon-three{top:267px;left:12px}.ribbon-four{top:282px;right:8px}.story-section{padding:88px 40px}.letter-copy>p,.memory-copy>p{font-size:1.125rem}h2{font-size:2.5rem}.day-heading h2{font-size:3rem}.plan-copy h3{font-size:1.375rem}.plan-copy>p{font-size:1rem}.plan-list{max-width:600px;margin:auto}.day-photo-block,.letter-photo-block,.memory-photo-block{max-width:350px}.memory-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;max-width:720px;margin-top:88px}.snapshot-photo:nth-child(3){grid-column:auto;width:auto}.snapshot-photo figcaption{font-size:1.25rem}.closing-inner h2{font-size:3rem}.closing-message{font-size:1.125rem}}@media (width>=1020px){.birthday-header{padding:16px 64px}.birthday-wordmark{font-size:2rem}.hero-note{font-size:1.625rem}.hero-title h1{font-size:5.5rem}.title-heart{font-size:3.5rem}.hero-collage{width:580px}.hero-age{gap:80px;font-size:19rem}.story-section{padding:112px 64px}.letter-grid{grid-template-columns:380px minmax(0,1fr);align-items:center;gap:100px}.letter-photo-block{order:0;max-width:360px;margin:0}.letter-copy{order:1}.letter-copy h2{font-size:3rem}.memory-grid{grid-template-columns:minmax(0,1fr) 380px;align-items:center;gap:100px}.memory-copy h2{font-size:3rem}.memory-photo-block{max-width:350px;margin:0}.day-heading{margin-bottom:64px}.day-grid{grid-template-columns:minmax(0,1fr) 380px;align-items:center;gap:100px}.plan-row{grid-template-columns:60px minmax(0,1fr);gap:24px}.day-photo-block{max-width:340px}.date-stamp{width:126px;height:126px;top:-28px;right:-32px}.date-stamp strong{font-size:3rem}.birthday-footer{justify-content:space-between;padding:24px 64px}}@media (width<=359px){.birthday-header{gap:8px;padding-inline:16px}.birthday-wordmark{font-size:1.5rem}.hero-title h1{font-size:3.75rem}.hero-note{font-size:1.25rem}.hero-age{gap:32px;font-size:11rem}.hero-ribbon{width:48px;height:64px}.polaroid figcaption{font-size:.9375rem}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.photo-reveal .polaroid{transition:transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(36px)rotate(-2deg)}.photo-reveal.is-in-view .letter-photo{opacity:1;transform:translateY(0)rotate(-5deg)}.photo-reveal.is-in-view .memory-photo{opacity:1;transform:translateY(0)rotate(6deg)}.photo-reveal.is-in-view .day-photo{opacity:1;transform:translateY(0)rotate(-6deg)}.photo-reveal.is-in-view .snapshot-photo{transform:translateY(0) rotate(var(--photo-tilt))}.hero-ribbon{animation:ribbon-float 4.5s var(--ribbon-delay) ease-in-out infinite}.wish-dialog[open]{animation:.25s ease-out letter-open}}@media (height<=760px) and (width<=619px){.birthday-header{min-height:64px;padding-block:10px}.birthday-hero{padding:8px 20px 12px}.hero-note{font-size:1.25rem}.hero-title{padding-top:12px}.hero-title h1{font-size:3.25rem}.hero-collage{height:300px;margin-top:12px}.hero-age{gap:32px;font-size:10.75rem}.hero-portrait{width:148px;top:17px}.birthday-cake{width:190px;height:190px;top:105px}.ribbon-three{top:200px}.ribbon-four{top:205px}.hero-bottom-note{margin-top:10px}.letter-section{padding-top:48px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.text-enlarged .birthday-header{flex-wrap:wrap;justify-content:center}.text-enlarged .birthday-wordmark{white-space:nowrap}.text-enlarged .birthday-hero{grid-template-columns:minmax(0,1fr);gap:28px;height:auto;min-height:0;padding:24px 24px 40px;display:grid;overflow:visible}.text-enlarged .birthday-hero>*{max-width:100%;margin:0 auto;position:static;transform:none}.text-enlarged .hero-note,.text-enlarged .hero-title{padding-top:0}.text-enlarged .hero-title h1{font-size:3rem}.text-enlarged .title-heart,.text-enlarged .memory-heart{display:none}.text-enlarged .hero-age{justify-content:center;gap:8px;font-size:5rem}.text-enlarged .hero-collage{width:min(440px,100%);height:385px;position:relative}.text-enlarged .hero-portrait{width:180px;top:24px}.text-enlarged .birthday-cake{width:240px;height:240px;top:140px}.text-enlarged .hero-ribbon{width:48px;height:64px;animation:none}.text-enlarged .ribbon-three{top:228px}.text-enlarged .ribbon-four{top:245px}.text-enlarged .hero-bottom-note{padding:0}.text-enlarged h1,.text-enlarged h2,.text-enlarged h3{overflow-wrap:anywhere}.text-enlarged .date-stamp{border-radius:16px;width:100%;height:auto;margin-top:28px;padding:16px;position:static;transform:none}.text-enlarged .polaroid figcaption{overflow-wrap:anywhere}.text-enlarged .memory-strip{grid-template-columns:minmax(0,1fr);gap:40px;max-width:290px}.text-enlarged .snapshot-photo{width:100%;margin:0;transform:none!important}@keyframes ribbon-float{0%,to{transform:translateY(0) rotate(var(--ribbon-tilt))}50%{transform:translateY(-10px) rotate(calc(var(--ribbon-tilt) + 6deg))}}@keyframes letter-open{0%{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes confetti-fall{to{transform:translate3d(var(--drift), 110vh, 0) rotate(var(--turn));opacity:.2}}
