@font-face{font-family:'Lilita One';src:url('assets/lilitaone.ttf') format('truetype');font-display:swap}@font-face{font-family:'Balsamiq Sans';src:url('assets/balsamiqsans.ttf') format('truetype');font-display:swap}
:root{--ink:#20265d;--plum:#333d85;--paper:#f6f8ff;--muted:#59617d;--serif:'Lilita One',Arial,sans-serif;--sans:'Balsamiq Sans',Arial,sans-serif}h1,h2,h3{font-weight:400;letter-spacing:0;line-height:1.1}em{font-style:normal;color:#565fc2}.hero{background:#20265d;color:#fff;min-height:760px}.hero-photo{animation:kids-photo 12s ease-in-out infinite alternate;transform-origin:50% 25%}.hero-tint{background:linear-gradient(180deg,#20265d45,transparent 27%,#20265d28 40%,#20265de6 76%,#20265d)}.hero-halo{background:radial-gradient(ellipse at 80% 70%,#8aaaff22,transparent 60%)}.hero-copy{bottom:128px;left:25px;right:25px;z-index:3}.hero h1{font-family:'Lilita One',sans-serif;font-size:clamp(5rem,12vw,9rem);letter-spacing:.005em;line-height:1.05;text-shadow:0 5px 0 #20265d55}.hero-copy .eyebrow{font-size:1rem;letter-spacing:.13em}.age-seal{display:inline-grid;place-items:center;background:#ffdc83;color:#20265d;width:74px;height:74px;border-radius:24px;transform:rotate(-7deg);font:400 3rem/.9 'Lilita One',sans-serif;margin-bottom:18px;box-shadow:4px 5px 0 #fff3}.age-seal small{display:none}.hero-line{font-size:1.1rem}.hero-date{font-size:1rem}.song-intro{font-size:1rem;border:1px solid #ffffff75;border-radius:30px;padding:7px 17px}.hero-top>span:first-child{font-size:.85rem;letter-spacing:.12em}.hero .section-curve{height:58px}.scroll-cue{bottom:57px}.scroll-cue span{font-size:.75rem}.space-decor{position:absolute;inset:0;pointer-events:none;z-index:2}.space-decor .planet{position:absolute;width:100px;height:100px;object-fit:contain;left:2%;top:31%;animation:planet-float 14s ease-in-out infinite alternate}.space-star{position:absolute;color:#ffdc83;font-size:27px;animation:space-twinkle 7s ease-in-out infinite alternate}.s1{right:7%;top:20%}.s2{left:8%;top:65%;font-size:22px;animation-delay:-3s}.s3{right:4%;top:61%;font-size:19px;animation-delay:-5s}.s4{right:12%;top:39%;font-size:18px;color:#bee7ff;animation-delay:-2s}
.date-section{background:#eef0ff}.date-number{color:#3b4491;font-size:6rem}.date-orbit{border-color:#747fc333}.date-orbit:after{border-color:#747fc322}.date-section h2{font-size:1.15rem}.countdown strong{font-size:3.3rem}.countdown span,.eyebrow{font-size:.875rem}.memories{background:linear-gradient(#eef0ff,#dceff5)}.memories h2{font-size:clamp(2.5rem,4vw,4rem)}.film-shell{max-width:630px}.film{border-radius:45% 45% 28px 28px / 90px 90px 28px 28px;border:7px solid #fff;box-shadow:0 10px 0 #20265d12}.film-note{font-style:normal;font-size:1.5rem}.film-caption>span:first-child{font-size:.875rem;letter-spacing:.06em}.story{background:#dceff5}.story h2{font-size:clamp(2.6rem,4.8vw,4.3rem)}.story-text{color:#3e5270}.story .signature{font:400 1.35rem/1.5 var(--sans)}.story-orbit{display:none}.bridge{background:#20265d;color:#fff}.bridge p{font:400 clamp(1.8rem,4vw,3.2rem)/1.4 var(--serif)}.bridge p em{color:#ffdc83}.bridge .spark{color:#ffdc83}.celebration{background:#f9f8ff}.celebration h2{font-size:clamp(2.6rem,5vw,4.5rem)}.venue{border:2px dashed #adb5e0;border-radius:25px;padding:35px 22px;max-width:550px;margin:auto;background:#fff}.venue-number{display:none}.venue h3{font-size:2.4rem}.venue-time{font-style:normal;color:#525bb0}.dress{background:#dceff5}.dress h2{font-size:clamp(2.5rem,4.5vw,4rem)}.dress-code{font-style:normal}.dress .narrow,.gifts .narrow{color:#485b74}.palette i{background:#20265d}.palette i:nth-child(2){background:#90cfe5}.palette i:nth-child(3){background:#ffdc83}.palette i:nth-child(4){background:#c6b8ed}.gifts{background:#fff3d5}.gifts h2{font-size:clamp(2.5rem,4.5vw,4rem)}.rsvp{background:#343e86;border-radius:45% 45% 0 0 / 35px 35px 0 0}.rsvp h2{font-size:clamp(2.8rem,5vw,4.5rem)}.rsvp h2 em{color:#ffdc83}.rsvp>div>p:not(.eyebrow){color:#f4f0ff}.rsvp .button.primary{background:#ffdc83;color:#20265d;border-color:#ffdc83}.button.primary{background:#343e86;color:#fff}.button.primary:hover{background:#20265d}.button.outline{border-color:#7e8abb}.button.outline:hover{background:#eef0ff}.closing{background:#20265d}.closing-photo{animation:kids-photo 13s ease-in-out infinite alternate}.closing-tint{background:linear-gradient(#20265d45,transparent 23%,#20265d20 40%,#20265deb 88%)}.closing-copy h2{font-size:clamp(2.3rem,4.5vw,4rem)}.closing-copy h2 em{color:#ffdc83}.closing-copy .signature{font:400 2.2rem/1.3 var(--serif)}footer{background:#eeeaff;color:#59617d}.brand-signature{font-family:var(--sans);font-size:1.1rem;color:#343e86}.music-float{background:#fffdf5;color:#343e86;border-color:#c8c9e0}dialog{background:#f9faff}.dialog-close{background:#e3e8ff;color:#20265d}.dialog-content h2{font-size:2.5rem}input:not([type=radio]),textarea{border-color:#b9c3dd;background:#fff}.radio-options label{border-color:#b9c3dd}.radio-options input{accent-color:#535dac}.guest-count-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.guest-count-grid label{display:block;font-size:1rem;margin-bottom:8px}.field-help{font-size:.875rem}.hero h1{overflow-wrap:break-word}
@keyframes kids-photo{from{transform:scale(1.02)}to{transform:scale(1.12) translateY(-.7%)}}@keyframes planet-float{from{transform:translateY(-8px) rotate(-8deg)}to{transform:translateY(14px) rotate(7deg)}}@keyframes space-twinkle{from{opacity:.45;transform:translateY(-3px) scale(.92)}to{opacity:.95;transform:translateY(5px) scale(1.06)}}
@media(min-width:1000px){.hero-tint{background:linear-gradient(180deg,#20265d38,transparent 25%,#20265de0 80%,#20265d)}.space-decor .planet{width:150px;height:150px;left:8%;top:35%}.closing-tint{background:linear-gradient(transparent 25%,#20265de8 88%)}}
@media(max-width:600px){.hero{min-height:770px}.hero-copy{bottom:120px}.hero h1{font-size:clamp(4.5rem,20vw,6.5rem)}.hero-line{font-size:1rem;max-width:280px}.hero-date{font-size:.95rem}.hero-copy .eyebrow{font-size:.9rem}.hero-top>span:first-child{font-size:.8rem}.space-decor .planet{width:78px;height:78px;left:1%;top:30%}.age-seal{width:64px;height:64px;font-size:2.7rem}.memories h2,.story h2{font-size:2.7rem}.film{height:550px;border-width:5px}.film-note{left:18px;font-size:1.4rem}.film #photo-number{right:18px}.film-caption>span:first-child{font-size:.78rem}.celebration h2,.dress h2,.gifts h2{font-size:2.5rem}.rsvp h2{font-size:2.8rem}.closing-copy h2{font-size:2.3rem}.dialog-content h2{font-size:2.2rem}.eyebrow{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){.space-star{animation:space-calm 20s ease-in-out infinite alternate}.hero-photo,.closing-photo{animation:kids-calm 25s ease-in-out infinite alternate!important}}@keyframes space-calm{from{opacity:.5}to{opacity:.8}}@keyframes kids-calm{from{transform:scale(1.01)}to{transform:scale(1.03)}}
/* The planetary motif shares the invitation's cyan, yellow and rounded forms. */
.orbital-scene{position:absolute;left:-34px;top:33%;width:160px;height:130px;animation:orbital-drift 8s ease-in-out infinite alternate;transform-origin:center;isolation:isolate}.space-decor .orbital-scene .planet{inset:19px auto auto 40px;width:88px;height:88px;animation:planet-rock 10s ease-in-out infinite alternate;filter:drop-shadow(0 5px 8px #10163e33)}.orbit-path{position:absolute;inset:14px 0;border:1px solid #c1eaff70;border-radius:50%;transform:rotate(-24deg);box-shadow:0 0 0 10px #bee7ff06}.orbit-traveler{position:absolute;inset:0;animation:orbit-turn 13s linear infinite}.orbit-traveler i{position:absolute;top:11px;left:50%;width:7px;height:7px;border-radius:50%;background:#ffdc83;box-shadow:0 0 10px #ffdc8355}.space-star{animation:star-travel 6s ease-in-out infinite alternate;color:#ffdc83}.s1{animation-delay:-2s}.s2{top:70%;left:4%;animation-delay:-4s;color:#bee7ff}.s3{top:55%;right:4%;animation-delay:-1s}.s4{top:35%;right:5%;animation-delay:-3s}.hero-halo{background:radial-gradient(ellipse at 0% 42%,#90cfe522,transparent 37%),radial-gradient(ellipse at 95% 67%,#ffdc8314,transparent 40%)}.date-orbit{border-color:#8794d044;transform:rotate(-18deg)}.date-orbit:after{border-color:#90cfe550;inset:22px}.film-caption .spark{color:#626dc1}.age-seal{box-shadow:4px 5px 0 #90cfe540}
@keyframes orbital-drift{from{transform:translate3d(-5px,-15px,0) rotate(-5deg)}to{transform:translate3d(10px,18px,0) rotate(5deg)}}@keyframes planet-rock{from{transform:rotate(-10deg)}to{transform:rotate(10deg)}}@keyframes orbit-turn{to{transform:rotate(360deg)}}@keyframes star-travel{from{transform:translateY(-6px) rotate(-10deg) scale(.9);opacity:.5}to{transform:translateY(8px) rotate(10deg) scale(1.08);opacity:1}}
@media(min-width:1000px){.orbital-scene{left:4%;top:38%;width:215px;height:170px}.space-decor .orbital-scene .planet{width:120px;height:120px;left:49px;top:25px}}
@media(max-width:360px){.orbital-scene{left:-44px;transform-origin:left center}.space-decor .orbital-scene .planet{width:76px;height:76px}}
@media(prefers-reduced-motion:reduce){.orbital-scene,.orbit-traveler,.space-decor .orbital-scene .planet{animation:none}.space-star{animation:space-calm 16s ease-in-out infinite alternate}}
.orbital-scene{left:auto;right:-28px;top:34%}
.rocket-scene{position:absolute;left:8px;top:32%;width:100px;height:125px;animation:rocket-flight 6s ease-in-out infinite alternate;will-change:transform}
.rocket-scene .rocket{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 8px #10163e33)}
.s4{top:25%;right:12%}
@keyframes rocket-flight{from{transform:translate3d(-3px,14px,0) rotate(-6deg)}to{transform:translate3d(9px,-16px,0) rotate(4deg)}}
@media(min-width:1000px){.orbital-scene{left:auto;right:4%;top:38%}.rocket-scene{left:7%;top:36%;width:140px;height:175px}}
@media(max-width:360px){.orbital-scene{left:auto;right:-42px;transform-origin:right center}.rocket-scene{left:3px;width:85px;height:110px}}
@media(prefers-reduced-motion:reduce){.rocket-scene{animation:none}}
/* Themed boundaries stay inside each section, clear of text and controls. */
.theme-separator{position:absolute;left:0;right:0;bottom:0;height:94px;z-index:5;pointer-events:none;contain:layout}
.theme-separator img{position:absolute;bottom:12px;object-fit:contain;filter:drop-shadow(0 3px 3px #20265d15)}
.separator-art{width:88px;height:88px;animation:separator-drift 8s ease-in-out infinite alternate}
.separator-art-1{width:104px;height:82px;animation:separator-flight 7s ease-in-out infinite alternate;animation-delay:-3s}
.separator-position-0 .separator-art{left:16%}
.separator-position-1 .separator-art{right:19%;animation-delay:-4s}
.separator-position-2 .separator-art{left:calc(50% - 44px)}
.separator-position-2 .separator-art-1{left:calc(50% - 52px)}
.hero .theme-separator,.closing .theme-separator{height:70px}
.hero .theme-separator img,.closing .theme-separator img{width:54px;height:54px;bottom:5px}
@keyframes separator-drift{from{transform:translateY(3px) rotate(-8deg)}to{transform:translateY(-5px) rotate(7deg)}}
@keyframes separator-flight{from{transform:translate(-3px,4px) rotate(-5deg)}to{transform:translate(4px,-5px) rotate(5deg)}}
@media(min-width:1000px){.theme-separator{height:100px}.separator-art{width:94px;height:94px}.separator-art-1{width:110px;height:88px}}
@media(prefers-reduced-motion:reduce){.theme-separator img{animation:none}}
/* Reserve actual layout space: decorations can never rise over section copy. */
#invitation > .section{padding-bottom:20px}
#invitation > .section > .theme-separator{position:relative;inset:auto;height:112px;margin-top:32px;overflow:hidden}
#invitation > .section > .theme-separator img{bottom:12px;max-height:94px}
