:root{--paper:#f3ead8;--kraft:#d9c6a2;--white:#fffdf7;--ink:#2a2230;--ink-soft:#5d5262;--red:#d9303f;--red-dark:#a81e2c;--yellow:#f1b52e;--ice:#a9d3ec;--font-title:"Fraunces", Georgia, serif;--font-hand:"Caveat", cursive;--font-body:"Nunito Sans", system-ui, sans-serif;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .33 0 0 0 0 .25 0 0 0 0 .17 0 0 0 .1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100dvh;font-family:var(--font-body);color:var(--ink);background:var(--paper) var(--grain);margin:0;overflow-x:hidden}button{font:inherit;cursor:pointer}.sticker{filter:drop-shadow(3px 0 #fff)drop-shadow(-3px 0 #fff)drop-shadow(0 3px #fff)drop-shadow(0 -3px #fff)drop-shadow(0 8px 8px #2a22304d)}.tape{clip-path:polygon(0 0,100% 0,97% 25%,100% 50%,97% 75%,100% 100%,0 100%,3% 75%,0 50%,3% 25%);pointer-events:none;background:#ecd488c7;width:84px;height:26px;margin-left:-42px;position:absolute;top:-13px;left:50%;transform:rotate(-3deg)}.polaroid{text-align:center;width:100%;color:var(--ink);background:var(--white);border:0;margin:0;padding:10px 10px 40px;display:block;position:relative;box-shadow:0 1px #0000000d,0 12px 22px #3c281e47}button.polaroid{cursor:pointer}.polaroid img{aspect-ratio:4/5;object-fit:cover;background:#e6dcc8;width:100%;display:block}.polaroid figcaption{font-family:var(--font-hand);font-size:1.45rem;line-height:1.1;position:absolute;bottom:8px;left:8px;right:8px}.btn{border:3px solid var(--ink);font-family:var(--font-title);letter-spacing:.2px;color:#fff;background:var(--red);border-radius:14px;padding:14px 32px;font-size:1.15rem;font-weight:800}.btn-light{border-color:var(--paper)}.hand-underline{width:100%;height:.22em;position:absolute;bottom:-.1em;left:0;overflow:visible}.invite{--vis:min(27dvh, 230px, calc((100vw - 64px) / 1.7));background:var(--kraft) var(--grain);place-items:center;min-height:100dvh;padding:clamp(12px,3dvh,36px) 14px;display:grid;position:relative;overflow:hidden}.invite-card{text-align:center;background:var(--white) var(--grain);width:min(100%,600px);padding:clamp(22px,4.6dvh,50px) clamp(18px,4vw,44px) clamp(20px,3.8dvh,40px);position:relative;box-shadow:0 1px #0000000f,0 26px 50px #3c281e59}.tape-l,.tape-r{width:110px;margin-left:0;top:-12px}.tape-l{left:10%;transform:rotate(-32deg)}.tape-r{left:auto;right:10%;transform:rotate(30deg)}.invite-eyebrow{font-family:var(--font-hand);color:var(--red);margin:0;font-size:clamp(1.35rem,min(5vw,4.2dvh),2.2rem);font-weight:700;line-height:1.1}.invite-visual{justify-content:center;align-items:center;gap:clamp(10px,4%,34px);margin:clamp(16px,3dvh,28px) 0 clamp(8px,2dvh,22px);display:flex}.invite-cake{height:var(--vis);object-fit:contain;flex:0 auto;width:auto;max-width:50%;display:block}.invite-polaroid{width:calc((var(--vis) - 25px) / 1.25);flex:0 auto;max-width:44%}.invite-title{font-family:var(--font-title);letter-spacing:-.3px;text-wrap:balance;margin:0 0 clamp(6px,1.4dvh,12px);font-size:clamp(1.15rem,min(5vw,3.7dvh),2.1rem);font-weight:800;line-height:1.18}.invite-title span{color:var(--red)}.invite-from{font-family:var(--font-hand);color:var(--ink-soft);margin:0 0 clamp(10px,2.6dvh,26px);font-size:clamp(1.3rem,3.6dvh,1.8rem);line-height:1.1}.invite-card .btn{padding:clamp(9px,1.8dvh,14px) clamp(22px,5vw,32px);font-size:clamp(1rem,2.4dvh,1.15rem)}.invite-hint{color:var(--ink-soft);margin:clamp(8px,1.6dvh,18px) 0 0;font-size:.85rem}.invite-sunflower{pointer-events:none;width:clamp(60px,min(14vw,13dvh),112px);position:absolute;bottom:clamp(-62px,-6vw,-30px);right:clamp(-34px,-3vw,-14px);transform:rotate(8deg)}@media (height<=600px){.invite-hint{display:none}}@media (height<=420px){.invite-card{padding-top:14px;padding-bottom:12px}.invite-visual{margin:12px 0 4px}.invite-from{margin-bottom:6px}}@media (orientation:landscape) and (height<=700px) and (width>=700px){.invite{--vis:min(50dvh, 300px, calc((50vw - 90px) / 1.7))}.invite-card{grid-template-columns:1fr 1fr;align-items:center;column-gap:clamp(16px,3vw,40px);width:min(100%,940px);padding:clamp(18px,5dvh,40px) clamp(20px,3vw,40px);display:grid}.invite-title{font-size:clamp(1.2rem,min(2.4vw,5dvh),2rem)}}.site{position:relative}.section{max-width:1040px;margin:0 auto;padding:clamp(60px,10vw,110px) 20px;position:relative}.section-kicker{text-align:center;font-family:var(--font-hand);color:var(--red);margin:0;font-size:clamp(1.6rem,4.4vw,2rem);font-weight:700}.section-title{text-align:center;font-family:var(--font-title);letter-spacing:-.8px;margin:0 0 38px;font-size:clamp(2.2rem,6.5vw,3.6rem);font-weight:800;line-height:1.05}.section-title-big{font-size:clamp(2.4rem,8vw,4.4rem)}.band{width:100%}.band-kraft{background:var(--kraft) var(--grain);box-shadow:inset 0 16px 18px -16px #00000038,inset 0 -16px 18px -16px #00000038}.band-dark{color:var(--paper);background:var(--ink);position:relative}.hero{text-align:center;place-items:center;min-height:100dvh;padding:clamp(24px,6dvh,56px) 16px clamp(36px,8dvh,90px);display:grid;position:relative;overflow:hidden}.hero-inner{z-index:2;position:relative}.eyebrow{font-family:var(--font-hand);color:var(--red);margin:0 0 8px;font-size:clamp(1.7rem,5vw,2.2rem);font-weight:700}.hero-title{flex-direction:column;align-items:center;margin:0 0 40px;line-height:1;display:flex}.hero-line{font-family:var(--font-title);letter-spacing:-1.5px;text-wrap:balance;font-size:clamp(2.2rem,min(9.5vw,11dvh),6.2rem);font-weight:800}.hero-name{font-family:var(--font-hand);color:var(--red);margin-top:6px;padding:0 .1em .12em;font-size:clamp(3.2rem,min(14vw,15dvh),8.4rem);font-weight:700;display:inline-block;position:relative}.hero-sub{font-family:var(--font-hand);color:var(--ink-soft);margin:34px 0 0;font-size:1.9rem}.hero-photos{justify-content:center;gap:clamp(12px,3.5vw,44px);width:min(100%,760px);margin-inline:auto;display:flex}.hero-photos .polaroid{flex:1 1 0;width:auto;min-width:0;max-width:min(340px,34dvh)}.hero-chase{width:min(100%,400px,56dvh);color:var(--ink-soft);margin:26px auto 0}.chase svg{width:100%;height:auto;display:block}.finale-photos{z-index:2;justify-content:center;gap:clamp(12px,3vw,34px);width:min(100%,860px);margin-inline:auto;display:flex;position:relative}.finale-photos .polaroid{flex:1 1 0;width:auto;min-width:0;max-width:min(260px,32dvh)}.note{max-width:700px;font-family:var(--font-hand);background:repeating-linear-gradient(transparent 0 33px, #a9d3ec8c 33px 34px), var(--white);margin:46px auto 0;padding:clamp(36px,6vw,56px) clamp(22px,5vw,52px) clamp(30px,5vw,46px);font-size:clamp(1.4rem,3.6vw,1.6rem);font-weight:500;line-height:34px;position:relative;box-shadow:0 1px #0000000f,0 22px 44px #3c281e4d}.tape-note{width:120px;margin-left:-60px}.note h3{font-family:var(--font-title);color:var(--red);margin:0 0 14px;font-size:clamp(1.7rem,5vw,2.2rem);font-style:italic;font-weight:800;line-height:1.15}.note p{margin:0 0 16px}.note-photo{float:right;width:clamp(116px,25vw,156px);margin:-6px -4px 12px 20px;font-size:1rem;line-height:1}.signature{text-align:right;color:var(--red);margin:22px 0 0;font-size:2.1rem;font-weight:700;line-height:1.2}.collage-note{text-align:center;max-width:700px;font-family:var(--font-title);letter-spacing:.3px;text-wrap:balance;margin:-14px auto 46px;font-size:clamp(1.25rem,3.8vw,1.95rem);font-style:italic;font-weight:800;line-height:1.3}.collage{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:46px 32px;padding-top:18px;display:grid}.collage-item{max-width:290px;margin-inline:auto}.collage-item:nth-child(3n+2){margin-top:30px}.lightbox{z-index:80;background:#17141ae6;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.lightbox figure{text-align:center;margin:0}.lightbox img{object-fit:contain;border:12px solid var(--white);background:var(--white);max-width:min(90vw,620px);max-height:76dvh;display:block;box-shadow:0 24px 60px #0000008c}.lightbox figcaption{font-family:var(--font-hand);color:var(--paper);margin-top:14px;font-size:2rem}.lightbox-close{border:2.5px solid var(--ink);width:44px;height:44px;color:var(--ink);background:var(--paper);box-shadow:3px 3px 0 var(--ink);border-radius:50%;font-size:1.1rem;position:absolute;top:16px;right:16px}.story-photo{width:min(100%,300px);margin:4px auto 58px}.counter{flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:56px;display:flex}.counter-box{text-align:center;background:var(--white);border:2px solid var(--ink);min-width:78px;box-shadow:3px 3px 0 var(--ink);padding:10px 12px}.counter-box strong{font-family:var(--font-title);color:var(--red);font-size:clamp(1.8rem,6vw,2.4rem);font-weight:800;line-height:1.1;display:block}.counter-box span{font-family:var(--font-hand);font-size:1.3rem}.timeline{max-width:740px;margin:0 auto;padding-left:78px;position:relative}.tl-track,.tl-progress{width:3px;position:absolute;top:24px;bottom:24px;left:25px}.tl-track{border-left:3px dashed #2a223047;width:0}.tl-progress{background:var(--red);transform-origin:top;border-radius:3px}.step{margin-bottom:36px;position:relative}.step:last-child{margin-bottom:0}.step-num{z-index:2;border:3px solid var(--ink);width:54px;height:54px;font-family:var(--font-hand);background:var(--yellow);box-shadow:3px 3px 0 var(--ink);border-radius:50%;place-items:center;font-size:2rem;font-weight:700;line-height:1;display:grid;position:absolute;top:4px;left:-78px}.step-card{background:var(--white);transform:rotate(var(--r));padding:20px 24px 22px;box-shadow:0 1px #0000000f,0 12px 26px #3c281e38}.step-card small{font-family:var(--font-hand);color:var(--red);font-size:1.55rem;font-weight:700;line-height:1.1;display:block}.step-card h3{font-family:var(--font-title);margin:2px 0 8px;font-size:1.45rem;font-weight:800;line-height:1.2}.step-card p{color:var(--ink-soft);margin:0;font-size:1.05rem;line-height:1.6}.finale{text-align:center;padding-bottom:130px}.finale>div{z-index:2;position:relative}.finale-title{font-family:var(--font-title);letter-spacing:-2px;margin:34px 0 8px;padding-bottom:.1em;font-size:clamp(4.2rem,17vw,9.5rem);font-style:italic;font-weight:800;line-height:1;display:inline-block;position:relative}.finale-text{opacity:.92;max-width:540px;margin:14px auto 34px;font-size:clamp(1.1rem,3vw,1.3rem);line-height:1.6}.finale-sign{font-family:var(--font-hand);color:var(--yellow);margin:30px 0 0;font-size:2.3rem;font-weight:700}.finale-sunflower{z-index:0;width:clamp(80px,12vw,140px);position:absolute;bottom:-26px;right:clamp(-14px,2vw,40px);transform:rotate(5deg)}.wish{--T:9s;--bw:min(70vw, 460px);--rx:min(calc(var(--bw) / 2 + 62px), calc(50vw - 52px));--ry:min(262px, 33vh);z-index:60;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#17141ae0;place-items:center;display:grid;position:fixed;inset:0}.wish-stage{place-items:center;display:grid;position:relative}.wish-box{z-index:2;width:var(--bw);text-align:center;color:var(--ink);background:var(--white) var(--grain);padding:38px 24px 20px;position:relative;box-shadow:0 26px 60px #0000008c}.wish-box.is-write{width:min(88vw,460px)}.wish-label{font-family:var(--font-title);margin:0 0 10px;font-size:clamp(1.5rem,5vw,2rem);font-style:italic;font-weight:800;line-height:1.1;display:block}.wish-input{border:2.5px solid var(--ink);resize:none;width:100%;font-family:var(--font-hand);color:var(--ink);background:repeating-linear-gradient(transparent 0 31px, #a9d3ecb3 31px 32px), var(--white);border-radius:0;padding:6px 12px;font-size:1.55rem;line-height:32px;display:block}.wish-input::placeholder{color:var(--ink-soft);opacity:.7}.wish-input:focus{outline:3px solid var(--red);outline-offset:2px}.wish-actions{justify-content:center;align-items:center;gap:22px;margin-top:18px;display:flex}.wish-quote{-webkit-line-clamp:3;font-family:var(--font-hand);color:var(--ink-soft);overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:0 0 12px;font-size:1.6rem;line-height:1.15;display:-webkit-box;overflow:hidden}.wish-text{font-family:var(--font-title);text-wrap:balance;margin:0 0 12px;font-size:clamp(1.5rem,5.4vw,2.2rem);font-style:italic;font-weight:800;line-height:1.2}.wish-close{font-family:var(--font-hand);color:var(--ink-soft);background:0 0;border:0;padding:0;font-size:1.5rem;text-decoration:underline}.orbit{--shift:0s;z-index:1;width:0;height:0;position:absolute;top:50%;left:50%}.orbit-a{animation:1.5s ease-out both fly-in-l}.orbit-b{--shift:calc(var(--T) / 2);animation:1.5s ease-out both fly-in-r}.orbit-x,.orbit-y{animation-duration:calc(var(--T) / 2);animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}.orbit-x{animation-name:swing-x;animation-delay:calc(var(--shift) * -1)}.orbit-y{animation-name:swing-y;animation-delay:calc(var(--T) / -4 - var(--shift))}@keyframes swing-x{0%{transform:translateX(calc(var(--rx) * -1))}to{transform:translateX(var(--rx))}}@keyframes swing-y{0%{transform:translateY(calc(var(--ry) * -1))}to{transform:translateY(var(--ry))}}@keyframes fly-in-l{0%{opacity:0;transform:translate(-70vw,-40vh)scale(.3)}}@keyframes fly-in-r{0%{opacity:0;transform:translate(70vw,-40vh)scale(.3)}}.dragon{height:var(--dh);animation:dragon-bob var(--flap) ease-in-out infinite alternate;position:relative}.dragon-part{width:100%;height:100%;display:block;position:absolute;inset:0}.dragon .wing{animation:flap-l var(--flap) ease-in-out infinite alternate}.dragon .wing-r{animation-name:flap-r}.dragon-K{--dh:clamp(130px, 30vw, 220px);--flap:.8s}.dragon-K .wing-l{--down:-20deg;--up:12deg}.dragon-K .wing-r{--down:20deg;--up:-12deg}.dragon-W{--dh:calc(clamp(130px, 30vw, 220px) * .66);--flap:.65s}.dragon-W .wing-l{--down:-8deg;--up:16deg}.dragon-W .wing-r{--down:8deg;--up:-16deg}@keyframes flap-l{0%{transform:rotate(var(--down)) scaleY(.93)}to{transform:rotate(var(--up)) scaleY(1.02)}}@keyframes flap-r{0%{transform:rotate(var(--down)) scaleY(.93)}to{transform:rotate(var(--up)) scaleY(1.02)}}@keyframes dragon-bob{0%{transform:translateY(-3%)rotate(-2deg)}to{transform:translateY(3%)rotate(2deg)}}.wish-dragon{position:absolute;top:0;left:0;translate:-50% -50%}.confetti{z-index:70;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti span{display:block;position:absolute;top:0}.music-btn{z-index:65;border:2.5px solid var(--ink);font-family:var(--font-body);color:var(--ink);background:var(--paper);box-shadow:3px 3px 0 var(--ink);border-radius:999px;align-items:center;gap:9px;padding:9px 16px 9px 14px;font-size:.9rem;font-weight:700;display:flex;position:fixed;bottom:14px;right:14px}.eq{align-items:flex-end;gap:3px;height:16px;display:flex}.eq i{background:var(--ink);border-radius:2px;width:4px;height:5px}.music-btn.on .eq i{background:var(--red);animation:.9s ease-in-out infinite eq}.music-btn.on .eq i:nth-child(2){animation-delay:-.3s}.music-btn.on .eq i:nth-child(3){animation-delay:-.6s}@keyframes eq{50%{height:16px}}@media (width<=700px){.finale-photos{flex-wrap:wrap;row-gap:22px}.finale-photos .polaroid{flex:0 0 calc(50% - 8px);max-width:240px}.timeline{padding-left:62px}.tl-track,.tl-progress{left:21px}.step-num{width:46px;height:46px;font-size:1.7rem;left:-62px}.music-label{display:none}.music-btn{padding:12px 14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.orbit-x,.orbit-y,.dragon,.dragon .wing,.eq i{animation:none!important}}
