:root{--pink:#ee427f;--yellow:#fff16d;--blue:#233eae;--ink:#242043;--paper:#fffdf9;--sans:Arial,Helvetica,sans-serif;--serif:Georgia,'Times New Roman',serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--sans);color:var(--ink);font-size:17px;line-height:1.6}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid currentColor;outline-offset:6px}button{cursor:pointer}img{display:block;width:100%;height:auto}figure,p{margin:0}h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-.045em;line-height:1.02;margin:0}h1{font-size:clamp(3.5rem,7.2vw,7.6rem)}h2{font-size:clamp(2.8rem,4.8vw,5rem)}h1 em,h2 em{font-weight:400}p+p{margin-top:1rem}.topbar{height:88px;max-width:1440px;margin:auto;padding:0 5%;display:flex;justify-content:space-between;align-items:center}.brand{text-decoration:none;font-family:var(--serif);font-style:italic;font-size:1.4rem}.brand span{font-style:normal;margin-left:8px}.page-number{font-size:.85rem;letter-spacing:.14em}.birthday-page{background:var(--pink)}.birthday-page .topbar,.hero{color:var(--yellow)}.eyebrow{font-size:.78rem;font-weight:bold;letter-spacing:.17em;margin-bottom:1.5rem}.hero{max-width:1440px;margin:auto;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;padding:50px 5% 95px;position:relative;min-height:620px;gap:24px}.hero-copy{position:relative;z-index:2}.hero-message{color:#fff;margin:26px 0 30px;font-size:1.12rem;line-height:1.6}.button{display:inline-block;border:0;text-decoration:none;font-weight:700;border-radius:100px;padding:17px 28px;font-size:1rem;line-height:1.4;box-shadow:0 4px 0 rgba(36,32,67,.15);transition:transform .2s,box-shadow .2s}.button:hover{transform:translateY(-3px);box-shadow:0 7px 0 rgba(36,32,67,.15)}.button.yellow{background:var(--yellow);color:var(--ink)}.button.pink{background:var(--pink);color:white}.photo-stack{position:relative;height:485px;margin-left:15px}.polaroid{background:white;padding:13px 13px 12px;box-shadow:0 12px 30px #24204326;color:var(--ink)}.polaroid figcaption{font-family:var(--serif);font-style:italic;text-align:center;font-size:1.1rem;padding:12px 2px 2px;line-height:1.4}.photo-back{position:absolute;right:5px;top:0;width:58%;transform:rotate(10deg)}.photo-back img{aspect-ratio:4/5;object-fit:cover;object-position:50% 25%}.photo-front{position:absolute;left:0;bottom:0;width:83%;transform:rotate(-7deg)}.photo-front img{aspect-ratio:4/3;object-fit:cover}.sticker{position:absolute;right:-2%;bottom:32px;background:var(--yellow);color:var(--blue);font-weight:900;font-size:1rem;line-height:1.2;display:grid;place-content:center;text-align:center;border-radius:50%;width:112px;height:112px;transform:rotate(12deg);border:2px dashed var(--blue)}.hero-star{position:absolute;pointer-events:none;font-size:64px}.star-one{top:8px;right:48%}.star-two{bottom:25px;right:8%}.birthday-ribbon{background:var(--yellow);color:var(--blue);display:flex;gap:35px;justify-content:center;align-items:center;padding:20px 12px;overflow:hidden;font-weight:bold;font-size:.85rem;letter-spacing:.12em;white-space:nowrap}.birthday-ribbon span:nth-child(even){font-size:1.7rem;line-height:1}.section-wrap{padding:80px max(5%,calc((100vw - 1296px)/2))}.memories{background:var(--paper);display:grid;grid-template-columns:.85fr 1.2fr;gap:75px;align-items:center}.note h2{color:var(--pink);margin-bottom:25px}.note p:not(.eyebrow){max-width:410px}.handwritten{font-family:var(--serif);font-style:italic;font-size:1.6rem;line-height:1.4}.note .handwritten{margin-top:28px;color:var(--blue)}.memory-grid{display:grid;grid-template-columns:1fr 1fr;gap:19px}.memory{margin:0}.memory img{border-radius:5px;aspect-ratio:4/3;object-fit:cover}.memory.wide{grid-column:1/-1}.memory.wide img{aspect-ratio:16/9;object-position:center 40%}.memory figcaption{font-family:var(--serif);font-style:italic;font-size:1rem;margin-top:7px}.packing{color:white;background:var(--blue);display:grid;grid-template-columns:.85fr 1.2fr;gap:75px;align-items:center;scroll-margin-top:20px}.game-title h2{color:var(--yellow);margin-bottom:24px}.game-title .eyebrow{color:var(--yellow)}.packing-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:25px}.pack-card{background:var(--paper);color:var(--ink);border:0;border-radius:10px;min-height:145px;padding:14px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;touch-action:none;user-select:none;position:relative;transition:box-shadow .2s,opacity .2s}.pack-card:nth-child(1){transform:rotate(-4deg)}.pack-card:nth-child(2){transform:rotate(3deg)}.pack-card:nth-child(3){transform:rotate(-2deg)}.pack-card>span:nth-child(2){font-weight:bold;font-size:.92rem}.card-icon{font-size:2.2rem;line-height:1.5;color:var(--pink)}.card-hint{font-size:.8rem;color:#70677b}.pack-card:hover{box-shadow:0 8px 0 #0002}.pack-card.packed{background:var(--yellow);opacity:.8;transform:none}.pack-card.packed .card-hint{color:var(--blue)}.pack-card.dragging{z-index:20;box-shadow:0 15px 40px #0004;pointer-events:auto;transition:none;cursor:grabbing}.suitcase{border:2px dashed #ffffff88;border-radius:24px;text-align:center;min-height:210px;padding:18px;background:#ffffff0a;transition:background .2s,border-color .2s,transform .2s}.suitcase.over{border-color:var(--yellow);background:#fff16d25;transform:scale(1.02)}.suitcase-icon{font-size:3.5rem;line-height:1.2;display:block;margin-bottom:8px}#bag-heading{font-family:var(--serif);font-style:italic;font-size:1.6rem}.game-status{margin-top:10px;font-size:.9rem;color:var(--yellow)}.packed-items{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin-top:10px}.packed-label{font-size:.8rem;border-radius:50px;background:#ffffff1c;padding:3px 10px}.game-result{text-align:center;padding-top:24px}.game-result .button{margin-top:14px}.game-result p{font-family:var(--serif);font-style:italic;font-size:1.2rem}footer{text-align:center;padding:30px 20px;font-family:var(--serif);font-style:italic;font-size:1rem}.birthday-page footer{background:var(--blue);color:white;border-top:1px solid #ffffff25}.visit-page{background:var(--yellow);color:var(--blue)}.visit-main{max-width:1080px;padding:55px 5% 60px;margin:auto;text-align:center}.visit-main h1{font-size:clamp(3.8rem,8vw,7rem)}.visit-main .eyebrow{margin-bottom:22px}.visit-intro{font-size:1.2rem;margin:26px auto 55px}.invitation{display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center;text-align:left}.ticket{position:relative;background:var(--paper);color:var(--blue);padding:30px 32px 25px;box-shadow:0 10px 35px #24204317;transform:rotate(-3deg);border-radius:12px}.ticket-top{display:flex;justify-content:space-between;align-items:center;font-size:.78rem;letter-spacing:.12em;border-bottom:1px solid #233eae25;padding-bottom:15px}.ticket-top span:last-child{color:var(--pink);font-size:1.6rem}.destination{font-family:var(--serif);font-size:1.9rem;line-height:1.2;margin:25px 0}.destination strong{font-weight:400;font-size:3.6rem}.ticket-details{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-bottom:2px dashed #233eae40;padding-bottom:22px}.ticket-details span{display:block;font-size:.72rem;letter-spacing:.12em;margin-bottom:6px}.ticket-details strong{font-size:1rem}.ticket-note{font-family:var(--serif);font-style:italic;font-size:1.1rem;margin-top:20px}.ticket-stamp{position:absolute;right:23px;top:85px;font-weight:bold;font-size:.8rem;line-height:1.2;color:var(--pink);border:2px solid var(--pink);border-radius:50%;width:77px;height:77px;display:grid;place-content:center;text-align:center;transform:rotate(14deg)}.invitation-photo{transform:rotate(5deg)}.invitation-photo img{aspect-ratio:4/3;object-fit:cover}.visit-note{margin-top:60px;font-size:1.15rem}.visit-note .handwritten{margin-top:24px;color:#be245a}.answer-area{margin:32px 0 30px}.yes-message{font-family:var(--serif);font-style:italic;font-size:1.5rem;margin-top:25px}.back-link{display:inline-block;font-size:.9rem;text-underline-offset:5px}.visit-page footer{border-top:1px solid #233eae30}.confetti{position:fixed;top:-25px;z-index:100;pointer-events:none;width:10px;height:17px;border-radius:2px;animation:confetti-fall 2.5s ease-in forwards}[hidden]{display:none!important}@keyframes confetti-fall{to{transform:translate(var(--drift),105vh) rotate(540deg);opacity:0}}@media(min-width:1600px){.section-wrap{padding-top:100px;padding-bottom:100px}}@media(max-width:1000px){.hero{min-height:540px;padding-top:30px;padding-bottom:70px}.photo-stack{height:400px}.memories,.packing{gap:40px}.sticker{width:88px;height:88px;font-size:.85rem}.star-one{font-size:45px}.pack-card>span:nth-child(2){font-size:.82rem}.section-wrap{padding-top:65px;padding-bottom:65px}}@media(max-width:700px){body{font-size:16px}.topbar{height:70px;padding:0 6%}.brand{font-size:1.2rem}.hero{display:flex;flex-direction:column;align-items:stretch;padding:30px 6% 50px;gap:36px;min-height:0}.hero h1{font-size:clamp(3.45rem,13vw,5.5rem)}.hero-message{font-size:1rem;margin:20px 0 25px}.eyebrow{margin-bottom:18px}.hero-copy{z-index:2}.photo-stack{height:350px;margin:0 5%;max-width:460px;width:90%;align-self:center}.photo-front{width:82%;bottom:5px}.photo-back{width:52%;top:0;right:5px}.sticker{right:-3%;bottom:10px}.hero-star.star-one{top:10px;right:7%;font-size:45px}.hero-star.star-two{display:none}.birthday-ribbon{justify-content:flex-start;gap:22px;font-size:.75rem;padding:16px 22px}.section-wrap{padding:50px 6%}.memories,.packing{grid-template-columns:1fr;gap:35px}.note p:not(.eyebrow){max-width:100%}.note h2{font-size:3.2rem}.memory-grid{gap:14px}.memory figcaption{font-size:.9rem}.game-title h2{font-size:3rem}.packing-cards{gap:10px}.pack-card{min-height:140px}.pack-card>span:nth-child(2){font-size:.85rem}.packing{gap:30px}.button{padding:16px 22px}.visit-main{padding:30px 6% 45px}.visit-main h1{font-size:clamp(3.5rem,13vw,5.5rem)}.visit-intro{font-size:1.1rem;margin-bottom:35px}.invitation{grid-template-columns:1fr;gap:35px;padding:0 9px}.ticket{padding:24px;max-width:430px;width:100%;margin:auto}.invitation-photo{max-width:420px;width:95%;margin:0 auto}.invitation-photo figcaption{font-size:1rem}.visit-note{margin-top:40px;font-size:1.05rem}.visit-note .handwritten{font-size:1.4rem}.ticket-stamp{right:18px;top:85px}.destination strong{font-size:3.3rem}.ticket-details strong{font-size:.95rem}}@media(max-width:380px){.photo-stack{height:290px}.pack-card>span:nth-child(2){font-size:.78rem}.destination strong{font-size:2.9rem}.ticket-stamp{width:64px;height:64px;font-size:.7rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.confetti{display:none}}
