*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--cream: #FDF6EC;--cream-dark: #F5EBD8;--rose: #C4787A;--rose-light: #E8A5A7;--terracotta: #D4836D;--brown: #3D2B1F;--brown-light: #6B4F3E;--gold: #C5A55A;--gold-light: #E2CB8B;--white: #FFFFFF;--red-seal: #8B1A1A;--red-seal-light: #B22222}html{scroll-behavior:smooth}body{font-family:Lora,Georgia,serif;background-color:var(--cream);color:var(--brown);overflow-x:hidden;-webkit-font-smoothing:antialiased}#confetti-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000}.stage{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:safe center;padding:2.5rem 1.5rem;position:relative;background-image:radial-gradient(circle at 20% 50%,rgba(196,120,122,.03) 0%,transparent 50%),radial-gradient(circle at 80% 50%,rgba(212,131,109,.03) 0%,transparent 50%)}@media(max-height:750px){.stage:not(#stage-1):not(#stage-2):not(#stage-4){justify-content:flex-start;padding-top:2rem;padding-bottom:2rem}}.stage:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:60%;height:1px;background:linear-gradient(90deg,transparent,var(--gold-light),transparent)}.stage:last-of-type:after{display:none}.stage.locked{display:none}.stage.locked.revealed{display:flex}.stage-content{width:100%;max-width:500px;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.stage-content.animate-in>*:not(.photo-scatter){animation:fadeSlideUp .6s ease-out both}.stage-content.animate-in>.photo-scatter{animation:fadeSlideUp .6s ease-out both}.stage-content.animate-in>.photo-scatter .scatter-1,.stage-content.animate-in>.photo-scatter .scatter-2{animation:none}.stage-content.animate-in>*:nth-child(1){animation-delay:.2s}.stage-content.animate-in>*:nth-child(2){animation-delay:.4s}.stage-content.animate-in>*:nth-child(3){animation-delay:.6s}.stage-content.animate-in>*:nth-child(4){animation-delay:.8s}.stage-content.animate-in>*:nth-child(5){animation-delay:1s}.stage-content.animate-in>*:nth-child(6){animation-delay:1.2s}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.stage-title{font-family:Caveat,cursive;font-size:2.2rem;font-weight:700;color:var(--brown);text-align:center}.stage-description{font-size:1rem;line-height:1.7;text-align:center;color:var(--brown-light);max-width:400px;font-style:italic}.stage-note{font-family:Caveat,cursive;font-size:1.5rem;color:var(--rose);text-align:center}.envelope{width:300px;height:240px;position:relative;perspective:800px;margin:1rem auto}.envelope-body{width:100%;height:100%;background:linear-gradient(135deg,var(--cream-dark),#EDE0CC);border:2px solid var(--gold-light);border-radius:4px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 15px #3d2b1f26;overflow:hidden}.envelope-flap{position:absolute;top:0;left:0;width:100%;height:50%;background:linear-gradient(180deg,var(--cream-dark),#E8D8C0);border:2px solid var(--gold-light);border-bottom:none;border-radius:4px 4px 0 0;transform-origin:top center;clip-path:polygon(0 0,100% 0,50% 100%);z-index:2;transition:transform .8s ease-in-out}.envelope.opened .envelope-flap{transform:rotateX(180deg)}.letter{text-align:center;padding:1.5rem;opacity:0;transform:translateY(20px);transition:opacity .6s ease .5s,transform .6s ease .5s}.envelope.opened .letter{opacity:1;transform:translateY(0)}.birthday-title{font-family:Caveat,cursive;font-size:2rem;font-weight:700;color:var(--brown);line-height:1.2}.birthday-title .name{font-size:2.8rem;color:var(--rose);display:block;margin-top:.2rem}.birthday-subtitle{font-size:.95rem;color:var(--brown-light);margin-top:.5rem;font-style:italic}.birthday-hint{font-family:Caveat,cursive;font-size:1.1rem;color:var(--terracotta);margin-top:.3rem}.letter{padding:1rem}.letter .birthday-subtitle{font-size:.85rem}.heart-divider{color:var(--rose);font-size:1rem;letter-spacing:.5rem;margin:.5rem 0}.eurostar-hero{width:100%;display:flex;flex-direction:column;align-items:center;gap:1.2rem}.eurostar-logo{text-align:center}.eurostar-brand{display:block;font-family:Lora,Georgia,serif;font-size:2.2rem;font-weight:600;letter-spacing:.3em;color:var(--brown);text-transform:uppercase}.eurostar-tagline{display:block;font-family:Caveat,cursive;font-size:1.2rem;color:var(--rose);margin-top:.25rem}.eurostar-ticket{border-color:var(--brown)!important;border-style:solid!important;border-width:2px!important}.eurostar-badge{font-family:Lora,Georgia,serif!important;font-size:.75rem!important;font-weight:600!important;letter-spacing:.25em!important;color:var(--white)!important;background:var(--brown);padding:.15rem .5rem;border-radius:3px}.ticket{width:320px;perspective:1000px;margin:0 auto}.ticket-front{background:var(--white);border:2px dashed var(--gold);border-radius:12px;padding:1.5rem;position:relative;box-shadow:0 4px 20px #3d2b1f1f}.ticket-front:before,.ticket-front:after{content:"";position:absolute;width:24px;height:24px;background:var(--cream);border-radius:50%;top:50%;transform:translateY(-50%)}.ticket-front:before{left:-14px}.ticket-front:after{right:-14px}.ticket-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--gold-light);padding-bottom:.75rem;margin-bottom:1rem}.ticket-label{font-family:Caveat,cursive;font-size:1.1rem;font-weight:700;color:var(--terracotta);letter-spacing:.1em}.ticket-class{font-size:.7rem;color:var(--gold);text-transform:uppercase;letter-spacing:.15em}.ticket-route{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.ticket-city{text-align:center}.city-code{font-family:Caveat,cursive;font-size:2rem;font-weight:700;color:var(--brown);display:block}.city-name{font-size:.75rem;color:var(--brown-light)}.ticket-arrow{display:flex;flex-direction:column;align-items:center;flex:1;padding:0 .5rem}.train-icon{font-size:1.5rem}.dotted-line{width:80%;height:1px;border-top:2px dotted var(--gold-light);margin-top:.25rem}.ticket-info{display:flex;justify-content:space-between;font-size:.75rem;color:var(--brown-light);border-top:1px dashed var(--gold-light);padding-top:.75rem}.passport-stamp{transform:scale(0);transition:transform .1s}.passport-stamp.stamped{animation:stampSlam .5s ease-out forwards}@keyframes stampSlam{0%{transform:scale(3) rotate(-15deg);opacity:0}50%{transform:scale(.9) rotate(-12deg);opacity:1}70%{transform:scale(1.05) rotate(-12deg)}to{transform:scale(1) rotate(-12deg)}}.stamp-outer{width:200px;height:200px;border:4px solid var(--rose);border-radius:50%;display:flex;align-items:center;justify-content:center;padding:8px;opacity:.85}.stamp-inner{width:100%;height:100%;border:2px solid var(--rose);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem}.stamp-country{font-family:Caveat,cursive;font-size:1rem;color:var(--rose);letter-spacing:.3em;text-transform:uppercase}.stamp-city{font-family:Caveat,cursive;font-size:2.2rem;font-weight:700;color:var(--rose)}.stamp-date{font-size:.65rem;color:var(--rose);letter-spacing:.1em}.postcard{width:320px;background:var(--white);border-radius:4px;box-shadow:0 4px 20px #3d2b1f26;overflow:hidden;transform:translate(100px) rotate(5deg);opacity:0;transition:transform .8s ease-out,opacity .8s ease-out}.postcard.slide-in{transform:translate(0) rotate(2deg);opacity:1}.postcard-image{width:100%;height:180px;overflow:hidden}.postcard-image img{width:100%;height:100%;object-fit:cover}.postcard-text{padding:1rem;position:relative}.postcard-greeting{font-family:Caveat,cursive;font-size:1.4rem;color:var(--brown)}.postcard-message{font-family:Caveat,cursive;font-size:1.1rem;color:var(--rose);margin-top:.25rem}.postcard-stamp-area{position:absolute;top:.5rem;right:.5rem}.mini-stamp{width:40px;height:40px;border:2px solid var(--terracotta);display:flex;align-items:center;justify-content:center;font-family:Caveat,cursive;font-weight:700;font-size:1rem;color:var(--terracotta);transform:rotate(12deg)}.polaroid{background:var(--white);padding:10px 10px 35px;box-shadow:0 4px 15px #3d2b1f26;transition:transform .3s ease}.polaroid:hover{transform:scale(1.02)!important}.polaroid img{width:100%;height:180px;object-fit:cover;display:block}.polaroid-caption{font-family:Caveat,cursive;font-size:1.1rem;color:var(--brown);text-align:center;margin-top:8px}.polaroid-single{max-width:300px}.polaroid-single img{height:200px}.rotate-left{transform:rotate(-3deg)}.rotate-right{transform:rotate(3deg)}.rotate-slight{transform:rotate(2deg)}.rotate-slight-neg{transform:rotate(-2deg)}.photo-row{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.photo-row .polaroid{width:calc(50% - .5rem);max-width:220px}.photo-row .polaroid img{height:150px}.photo-scatter{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.photo-scatter .polaroid{width:calc(50% - .5rem);max-width:220px}.photo-scatter .polaroid img{height:150px}.scatter-1,.scatter-2{opacity:0}.scatter-1.dropped{opacity:1;transform:rotate(-4deg) translateY(10px);animation:dropIn1 .6s ease-out forwards}.scatter-2.dropped{opacity:1;transform:rotate(3deg) translateY(-10px);animation:dropIn2 .6s ease-out .3s forwards}@keyframes dropIn1{0%{opacity:0;transform:rotate(-10deg) translateY(-50px) scale(.8)}to{opacity:1;transform:rotate(-4deg) translateY(10px) scale(1)}}@keyframes dropIn2{0%{opacity:0;transform:rotate(10deg) translateY(-50px) scale(.8)}to{opacity:1;transform:rotate(3deg) translateY(-10px) scale(1)}}.map-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;width:100%}.map-grid .polaroid{width:100%;padding:6px 6px 25px}.map-grid .polaroid img{height:100px}.map-grid .polaroid-caption{font-size:.95rem;margin-top:4px}.checklist{background:var(--white);padding:1rem;border-radius:4px;box-shadow:0 2px 10px #3d2b1f1a;width:100%;transform:rotate(-1deg)}.checklist-title{font-family:Caveat,cursive;font-size:1.4rem;font-weight:700;color:var(--terracotta);margin-bottom:.5rem}.checklist ul{list-style:none;padding:0}.checklist li{font-family:Caveat,cursive;font-size:1.15rem;color:var(--brown);padding:.3rem 0 .3rem 1.5rem;position:relative}.checklist li:before{content:"☐";position:absolute;left:0;color:var(--rose)}.mini-ticket{display:flex;align-items:center;gap:1rem;background:var(--white);padding:1rem 2rem;border:2px dashed var(--gold);border-radius:8px;box-shadow:0 3px 12px #3d2b1f1a}.mini-ticket-from,.mini-ticket-to{font-family:Caveat,cursive;font-size:1.6rem;font-weight:700;color:var(--brown)}.mini-ticket-arrow{font-size:1.5rem;color:var(--terracotta)}.placeholder-gradient{width:100%;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:2px}.placeholder-gradient span{font-family:Caveat,cursive;font-size:1.3rem;color:var(--white);text-shadow:0 1px 3px rgba(0,0,0,.3)}.placeholder-gradient small{font-family:Caveat,cursive;font-size:1rem;color:#fffc}.ghent-placeholder{background:linear-gradient(135deg,var(--rose),var(--terracotta))}.menu-card{width:200px;height:140px;perspective:1000px;margin:0 auto}.menu-card-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform .8s ease}.menu-card.flipped .menu-card-inner{transform:rotateY(180deg)}.menu-front,.menu-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 4px 15px #3d2b1f26}.menu-front{background:linear-gradient(135deg,var(--brown),var(--brown-light));color:var(--gold)}.menu-icon{font-size:2.5rem}.menu-label{font-family:Caveat,cursive;font-size:1.2rem;margin-top:.5rem;color:var(--gold-light)}.menu-back{background:var(--white);transform:rotateY(180deg);padding:1rem}.menu-back h3{font-family:Caveat,cursive;font-size:1.5rem;color:var(--brown)}.menu-back p{font-size:.8rem;color:var(--brown-light);margin-top:.25rem}.menu-stars{color:var(--gold)!important;font-size:1.1rem!important;margin-top:.5rem!important}.finale-message{text-align:center;margin-top:1rem;padding-top:.5rem}.finale-message h2{font-family:Caveat,cursive;font-size:2.5rem;color:var(--rose);margin:.5rem 0}.finale-message p{font-size:1rem;color:var(--brown-light);font-style:italic}.love-sign{font-family:Caveat,cursive;font-size:1.5rem!important;color:var(--brown)!important;font-style:normal!important;margin-top:1rem!important}.reveal-trigger{margin-top:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.4rem}.wax-seal{width:60px;height:60px;border-radius:50%;border:none;background:radial-gradient(circle at 35% 35%,var(--red-seal-light),var(--red-seal));color:var(--gold-light);font-family:Caveat,cursive;font-size:1.8rem;font-weight:700;cursor:pointer;box-shadow:0 4px 15px #8b1a1a66,inset 0 -2px 4px #0003,inset 0 2px 4px #ffffff1a;transition:transform .2s ease,box-shadow .2s ease;animation:sealPulse 2s ease-in-out infinite;position:relative}.wax-seal:hover{transform:scale(1.1);box-shadow:0 6px 20px #8b1a1a80,inset 0 -2px 4px #0003,inset 0 2px 4px #ffffff1a}.wax-seal:active{transform:scale(.95)}.wax-seal.cracked{animation:sealCrack .5s ease-out forwards;pointer-events:none}@keyframes sealPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes sealCrack{0%{transform:scale(1);opacity:1}50%{transform:scale(1.2) rotate(10deg);opacity:.8}to{transform:scale(0) rotate(30deg);opacity:0}}.tap-hint{font-family:Caveat,cursive;font-size:1.1rem;color:var(--brown-light);opacity:.7;animation:hintBounce 2s ease-in-out infinite}@keyframes hintBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.stage-content:before{content:"";display:block;width:40px;height:2px;background:var(--gold-light);margin-bottom:.5rem}#stage-1 .stage-content:before{display:none}.site-footer{text-align:center;padding:2rem;color:var(--brown-light);font-family:Caveat,cursive;font-size:1.1rem;opacity:.6}@media(min-width:768px){.stage{padding:3rem 2rem}.stage-title{font-size:2.8rem}.birthday-title{font-size:2.5rem}.birthday-title .name{font-size:3.5rem}.polaroid img{height:220px}.photo-row .polaroid img{height:180px}.envelope{width:380px;height:270px}.ticket,.postcard{width:400px}.postcard-image{height:220px}}@media(max-width:380px){.stage{padding:1.5rem 1rem}.stage-content{gap:1rem}.stage-title{font-size:1.9rem}.stage-description{font-size:.9rem}.envelope{width:270px;height:210px}.birthday-title{font-size:1.7rem}.birthday-title .name{font-size:2.3rem}.eurostar-brand{font-size:1.8rem}.ticket{width:290px}.city-code{font-size:1.6rem}.stamp-outer{width:160px;height:160px}.stamp-city{font-size:1.8rem}.postcard{width:290px}.polaroid img{height:140px}.photo-row .polaroid img,.photo-scatter .polaroid img{height:120px}.map-grid .polaroid img{height:100px}.checklist li{font-size:1.05rem}.menu-card{width:170px;height:120px}.finale-message h2{font-size:2rem}.wax-seal{width:55px;height:55px;font-size:1.5rem}.reveal-trigger{margin-top:1rem}.stage-note{font-size:1.3rem}}.stage.revealed .stage-content{animation:fadeSlideUp .6s ease-out both}#stage-1{display:flex!important}#stage-1 .envelope{animation:fadeSlideUp .8s ease-out .3s both}
