
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;1,500&display=swap');
:root{--ink:#21547d;--navy:#143b63;--blue:#8cc5ec;--cloud:#eff8ff;--gold:#b88f50;--rose:#df8cae;--line:rgba(255,255,255,.75)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:'DM Sans',system-ui,sans-serif;background:radial-gradient(ellipse at 8% 0%,#d7f0ff 0%,transparent 48%),linear-gradient(135deg,#b4d8f6,#e8f6ff 58%,#d4ecfe);min-height:100svh}button,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit} .site{max-width:620px;margin:auto;background:linear-gradient(180deg,#c8e9ff 0%,#e5f3ff 42%,#d1e9fa 100%);box-shadow:0 18px 80px rgba(15,69,115,.22);overflow:hidden;min-height:100svh}
.cover{margin:0;position:relative;line-height:0}.cover img{width:100%;height:auto;display:block}.cover-action{position:absolute;left:21%;top:88.6%;width:58%;height:4.9%;display:block;border-radius:40px}.cover-action:focus-visible{outline:3px solid #fff;outline-offset:4px}.cover-action:hover{background:rgba(255,255,255,.10)}
.section{position:relative;text-align:center;padding:49px 25px;isolation:isolate}.section>*{position:relative;z-index:1}.eyebrow{font-size:11px;letter-spacing:.31em;text-transform:uppercase;font-weight:700;color:#4f7ba1;margin:0 0 12px}.heading{font:500 clamp(29px,6.7vw,41px)/1.14 'Playfair Display',Georgia,serif;color:var(--navy);margin:0 0 16px}.lead{line-height:1.75;font-size:14px;max-width:390px;margin:0 auto;color:#4b7090}.ornament{color:var(--gold);font-size:22px;letter-spacing:.35em;margin:17px 0}.countdown{padding:48px 20px 55px;background:radial-gradient(ellipse at 65% 100%,rgba(255,255,255,.87),transparent 60%),linear-gradient(180deg,#d8efff,#edf8ff);border-top:1px solid rgba(255,255,255,.8)}.countdown:before,.details:before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 8% 85%,#fff9 0,transparent 30%),radial-gradient(ellipse at 89% 10%,#fff9 0,transparent 30%)}.time-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:24px auto 15px;max-width:465px}.time-tile{background:rgba(255,255,255,.58);border:1px solid var(--line);border-radius:15px;padding:16px 5px 14px;box-shadow:0 5px 24px #568fbd14}.time-number{font-size:clamp(29px,8vw,46px);font-weight:600;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}.time-label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#648ba9;margin-top:10px}.time-note{font-size:12px;color:#6686a0;margin:12px 0 0}.details{background:linear-gradient(180deg,#edf8ff,#cfe9fa)}.detail-card{background:rgba(255,255,255,.64);border:1px solid rgba(255,255,255,.9);border-radius:23px;margin:19px auto;max-width:445px;padding:29px 20px;box-shadow:0 15px 35px #5b9dc11a}.mini-icon{font-size:26px;color:var(--gold);line-height:1.3}.card-title{font-size:11px;text-transform:uppercase;letter-spacing:.25em;font-weight:700;margin:9px 0;color:#5a82a3}.card-time{font:500 43px/1.2 'Playfair Display',Georgia,serif;color:var(--navy);margin:3px 0}.card-place{font-size:19px;font-family:'Playfair Display',Georgia,serif;margin:5px 0 20px}.btn{border:1px solid #bda078;background:linear-gradient(130deg,#fff6df,#f7daa3);color:#345c7f;padding:13px 24px;border-radius:40px;font-size:12px;text-decoration:none;font-weight:700;letter-spacing:.07em;text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .2s,filter .2s;max-width:100%}.btn:hover{filter:brightness(1.04);transform:translateY(-2px)}.btn:focus-visible,.link:focus-visible{outline:3px solid #427fc1;outline-offset:3px}.btn.secondary{background:rgba(255,255,255,.65);border-color:#a6c8db}.btn.disabled{opacity:.6;cursor:not-allowed}.divider{height:1px;max-width:300px;margin:26px auto;background:linear-gradient(90deg,transparent,#c8a977,transparent)}.family{background:#e8f6ff;padding-top:36px;padding-bottom:44px}.family p{line-height:1.8;font-size:14px;margin:6px auto 18px;max-width:460px}.family strong{color:#315f82}.dress{padding:42px 25px;background:linear-gradient(155deg,#c6e5fb,#eff8ff)}.dress .lead{max-width:420px}.gift{background:linear-gradient(180deg,#eff8ff,#d6ebfb);padding-top:48px}.gift-card{max-width:440px;margin:24px auto 0;border:1px solid white;border-radius:23px;background:rgba(255,255,255,.62);padding:26px 22px}.gift-card p{font-size:13px;line-height:1.65;margin:0 auto 18px}.gift-unset{font-size:11px;color:#6c8091;margin:13px auto 0}.rsvp{background:linear-gradient(180deg,#d6ebfb,#bddff7);padding-bottom:72px}.rsvp form{margin:22px auto 0;max-width:440px;background:#ffffffa8;border:1px solid #fff;border-radius:25px;padding:24px 19px;text-align:left;box-shadow:0 12px 40px #377db026}.form-label{font-size:12px;display:block;font-weight:700;margin:15px 0 7px}.text-input{background:#fff;border:1px solid #bcd9eb;border-radius:12px;padding:12px;width:100%;color:var(--navy)}.text-input:focus{outline:2px solid #82bcdf}.radio-line{display:flex;gap:17px;flex-wrap:wrap;margin-top:10px;font-size:14px}.radio-line label{display:flex;gap:7px;align-items:center}.rsvp .btn{width:100%;margin-top:18px}.rsvp .lead{font-size:13px}.disclaimer{font-size:11px;line-height:1.6;color:#6f86a0;margin-top:14px}.notice{display:none;line-height:1.6;background:#e4f6e9;border:1px solid #acd6b9;border-radius:11px;padding:12px 13px;margin-top:16px;font-size:13px;color:#316245}.notice.visible{display:block}.footer{text-align:center;padding:30px 20px 40px;background:#bddff7;color:#4b7396;font-size:12px}.footer b{font:500 22px 'Playfair Display',Georgia,serif;color:#315e82}.petals{pointer-events:none;position:absolute;inset:0;overflow:hidden;z-index:0}.petals i{position:absolute;display:block;width:14px;height:9px;background:#ef9abc80;border-radius:90% 0 90% 0;transform:rotate(25deg);filter:blur(.1px);animation:drift 13s linear infinite}.petals i:nth-child(1){top:2%;left:8%}.petals i:nth-child(2){top:14%;right:8%;animation-delay:-6s}.petals i:nth-child(3){top:67%;left:15%;animation-delay:-9s}@keyframes drift{0%{translate:0 0;rotate:0deg}50%{translate:12px 22px;rotate:45deg}100%{translate:-5px 58px;rotate:100deg}}
@media(min-width:700px){.site{margin:20px auto;border-radius:14px}.section{padding-left:36px;padding-right:36px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}


[hidden]{display:none!important} .song{background:linear-gradient(175deg,#d3ebff,#c2e1f8)}
.state-card{max-width:440px;margin:24px auto 0;background:rgba(255,255,255,.77);border:1px solid #fff;border-radius:18px;padding:20px 18px;font-size:14px;line-height:1.7;box-shadow:0 10px 28px #3b7cb31b}.state-card.error{border-color:#e2adad;color:#883e4e}.state-card.demo{border-color:#d6a85c}.state-card a{font-weight:700}.state-card:empty{display:none}
.guest-pill{display:grid;gap:5px;text-align:center;border-bottom:1px solid #cde3ef;padding-bottom:20px;margin-bottom:20px}.guest-pill-label{color:#7693aa;text-transform:uppercase;letter-spacing:.19em;font-size:10px;font-weight:700}.guest-pill strong{font:600 24px/1.3 'Playfair Display',serif;color:#1e547c}.pass-pill{justify-self:center;padding:5px 13px;border-radius:40px;background:#e7f4ff;color:#386b8e;font-size:12px;font-weight:600}
.fieldset{border:0;padding:0;margin:0 0 17px}.attendee-fields{padding:12px 0 3px}.attendee-fields .form-label{margin:10px 0 5px}.limit-caption{font-size:12px;margin:0 0 12px;color:#667f97;line-height:1.5}
.counter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.counter-block{min-width:0;background:rgba(244,251,255,.88);border:1px solid #d7eaf8;border-radius:16px;text-align:center;padding:12px 5px 13px}.counter-icon{display:block;font-size:21px;color:#ba9150;line-height:1.2}.counter-label{display:block;font-size:14px;font-weight:700;margin:6px auto 12px;color:#204c72}.counter-controls{display:flex;align-items:center;justify-content:center;gap:4px}.counter-btn{width:33px;height:33px;display:grid;place-items:center;font-weight:700;font-size:22px;line-height:1;color:#1c5684;background:#fff;border:1px solid #bcd5e8;border-radius:50%;touch-action:manipulation}.counter-btn:disabled{opacity:.35;cursor:not-allowed}.counter-controls input{width:39px;min-width:0;text-align:center;appearance:textfield;border:0;background:transparent;color:#17466b;font-size:23px;font-weight:700;line-height:1.1}.counter-controls input::-webkit-outer-spin-button,.counter-controls input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.total-strip{display:flex;justify-content:space-between;align-items:center;margin:15px 1px 0;padding:13px 16px;border:1px solid #dcebf5;background:#ffffffb8;border-radius:13px;font-size:13px}.total-strip strong{font-size:17px;font-variant-numeric:tabular-nums}.total-strip.invalid{border-color:#b85d68;color:#933d45}.validation-hint{font-size:11px;margin:8px 4px 12px;color:#6e8597;line-height:1.6}.validation-hint.invalid{color:#a23944;font-weight:700}.btn-submit{margin-top:20px!important}.btn-submit:disabled{opacity:.55;cursor:not-allowed;transform:none}.form-label small{font-weight:400;color:#8196a8}.form-feedback{min-height:16px;color:#9b4150;font-size:12px;margin:9px 0 0;line-height:1.5}.form-feedback.ok{color:#2f6654}
.success-card{max-width:440px;margin:23px auto 0;padding:27px 18px;background:#ffffffb8;border:1px solid white;border-radius:23px;box-shadow:0 12px 40px #377db026}.success-icon{display:grid;place-items:center;border:2px solid #689db3;color:#347a85;border-radius:50%;height:48px;width:48px;margin:auto;font-size:26px}.success-card h3{font:600 26px/1.3 'Playfair Display',serif;color:#194d76;margin:16px 0 10px}.success-card p{font-size:13px;line-height:1.75}.qr-section{margin:18px auto 20px;border:1px solid #bcd9ea;border-radius:17px;padding:20px 10px;background:#f9fdff}.qr-image{display:flex;justify-content:center;margin:auto}.qr-label{font-size:11px!important;color:#567e9b}.success-card>.btn{width:100%;margin-top:12px}.qr-section .btn{font-size:11px}
@media(max-width:365px){.rsvp form{padding:20px 12px}.counter-grid{gap:6px}.counter-btn{width:29px;height:29px}.counter-controls input{width:30px}.counter-controls{gap:1px}.section{padding-left:17px;padding-right:17px}}
