:root{--cream:#f5ecdd;--cream-deep:#ecdfc8;--paper:#fbf6ec;--paper-env:#f2e8d5;--paper-env-dark:#e8dbc1;--lining:#e3d3b4;--lining-dark:#d6c39d;--gold:#b8923f;--gold-deep:#8f6f2b;--gold-light:#dcc07a;--ink:#4a2e1c;--ink-soft:#7a5740;--ink-muted:#9a7d68;--coral:#ff6a3d;--rose:#ff3d5c;--fuchsia:#e5195f;--btn:#d9304b;--btn-hover:#c3273f;--error:#b3261e;--success:#2f7a4a;--grad-names:linear-gradient(100deg, #ff7a35 0%, #ff4a52 50%, #e5195f 100%);--font-display:"DM Serif Display", "Playfair Display", Georgia, "Times New Roman", serif;--font-body:"EB Garamond", Garamond, Georgia, "Times New Roman", serif;--font-ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-script:"Pinyon Script", "Snell Roundhand", "Brush Script MT", cursive;--shadow-card:0 20px 40px -18px #4a2e1c73, 0 2px 8px #4a2e1c14;--shadow-env:0 24px 44px -20px #4a2e1c80, 0 4px 12px #4a2e1c14;--noise:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.35  0 0 0 0 0.25  0 0 0 0 0.15  0 0 0 0.07 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");--ease:cubic-bezier(.22, .8, .3, 1);--ease-flip:cubic-bezier(.45, .05, .25, 1);--stage-w:520px;--overlap:38%;--radius:14px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background-color:var(--cream);background-image:var(--noise), radial-gradient(120% 80% at 50% 0%, #faf3e6 0%, var(--cream) 60%, var(--cream-deep) 100%);min-height:100svh;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;font-size:18px;line-height:1.5;overflow-x:hidden}#root{overflow-x:clip}img,svg{max-width:100%;display:block}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}a{color:var(--gold-deep)}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--gold-deep);outline-offset:3px;border-radius:4px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{z-index:100;background:var(--paper);border:1px solid var(--gold);font-family:var(--font-ui);color:var(--ink);border-radius:8px;padding:10px 14px;font-size:15px;text-decoration:none;transition:top .2s;position:absolute;top:-60px;left:16px}.skip-link:focus{top:16px}.kicker{font-family:var(--font-body);letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);font-size:clamp(13px,3.4vw,15px);font-weight:500}.names{font-family:var(--font-display);letter-spacing:-.01em;background:var(--grad-names);color:var(--fuchsia);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(54px,16vw,84px);font-weight:400;line-height:.92}.names--sm{font-size:clamp(30px,8vw,40px);line-height:1}.names .amp{-webkit-text-fill-color:var(--gold-deep);margin:.08em 0;font-size:.5em;line-height:1;display:block}.names--inline .amp{margin:0 .12em;display:inline}.display{font-family:var(--font-display);background:var(--grad-names);color:var(--fuchsia);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(36px,10.5vw,62px);font-weight:400;line-height:.98}.display--italic{font-style:italic}.display-ink{font-family:var(--font-display);color:var(--ink);font-weight:400;line-height:1}.caps{font-family:var(--font-body);letter-spacing:.22em;text-transform:uppercase;color:var(--ink);font-size:clamp(14px,3.6vw,16px);font-weight:500}.caps--accent{color:var(--gold-deep)}.caps--tight{letter-spacing:.14em}.quote{font-family:var(--font-body);color:var(--ink-soft);font-size:clamp(19px,5vw,23px);font-style:italic;line-height:1.35}.lead{color:var(--ink);font-size:clamp(17px,4.6vw,19px);line-height:1.5}.accent-text{font-family:var(--font-display);color:var(--coral);font-size:clamp(26px,7vw,34px);line-height:1.1}.script{font-family:var(--font-script);color:var(--gold-deep);font-weight:400}.date-line{font-family:var(--font-body);letter-spacing:.28em;text-transform:uppercase;color:var(--ink);font-size:clamp(15px,4vw,18px);font-weight:500}.site{position:relative}.site__footer{text-align:center;font-family:var(--font-body);color:var(--ink-muted);padding:40px 16px 48px;font-size:16px;font-style:italic}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.card-wrap{z-index:3;width:92%;margin:0 auto;position:relative}.card{background-color:var(--paper);background-image:var(--noise), linear-gradient(180deg, #fdf9f0 0%, #faf4e8 100%);box-shadow:var(--shadow-card);color:var(--ink);text-align:center;border-radius:4px;padding:clamp(34px,9vw,48px) clamp(22px,6vw,40px) calc(42% + 10px);position:relative}.card:before{content:"";border:1px solid var(--gold);opacity:.85;pointer-events:none;position:absolute;inset:11px}.card__corner{width:34px;height:34px;color:var(--gold);pointer-events:none;position:absolute}.card__corner--tl{top:16px;left:16px}.card__corner--tr{top:16px;right:16px;transform:scaleX(-1)}.card__corner--bl{bottom:16px;left:16px;transform:scaleY(-1)}.card__corner--br{bottom:16px;right:16px;transform:scale(-1)}.card__inner{grid-template-columns:minmax(0,1fr);justify-items:center;gap:14px;display:grid;position:relative}.card__inner>*{min-width:0;max-width:100%}.photo{width:100%;margin:2px 0 8px}.photo__frame{aspect-ratio:1.78;background:#e9e0d0;position:relative;overflow:hidden;box-shadow:0 6px 14px -8px #4a2e1c80}.photo__img{object-fit:cover;filter:grayscale()contrast(1.05);width:100%;height:100%}.photo__placeholder{text-align:center;font-family:var(--font-body);color:var(--ink-muted);border:1px dashed var(--gold);place-items:center;margin:8px;padding:12px;font-size:17px;font-style:italic;display:grid;position:absolute;inset:0}.divider{color:var(--gold);justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.divider:before,.divider:after{content:"";background:linear-gradient(90deg, transparent, var(--gold));width:clamp(48px,18%,90px);height:1px}.divider:after{background:linear-gradient(90deg, var(--gold), transparent)}.sparkles{pointer-events:none;position:absolute;inset:0;overflow:visible}.sparkle{position:absolute}.sparkle--pulse{animation:3.2s ease-in-out infinite sparkle-pulse}@keyframes sparkle-pulse{0%,to{opacity:.55;transform:scale(.9)}50%{opacity:1;transform:scale(1.05)}}.title-wrap{max-width:100%;padding:0 20px;display:inline-block;position:relative}.env{aspect-ratio:1.55;width:100%;margin-top:calc(-1 * var(--overlap));position:relative}.env__back{z-index:1;background-color:var(--lining);background-image:var(--noise), linear-gradient(180deg, var(--lining-dark) 0%, var(--lining) 55%);box-shadow:var(--shadow-env);border-radius:6px;position:absolute;inset:0}.env__flap-top{z-index:6;transform-origin:50% 0;height:58%;transform-style:preserve-3d;transition:transform .8s var(--ease-flip) .15s;will-change:transform;position:absolute;top:0;left:0;right:0;transform:perspective(900px)rotateX(0)}.env__face{clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden;position:absolute;inset:0}.env__face--front{background-color:var(--paper-env);background-image:var(--noise), linear-gradient(180deg, #f7efdf 0%, #ece0c8 100%)}.env__face--back{background-color:var(--lining-dark);background-image:var(--noise), linear-gradient(0deg, #dccaa6 0%, #e6d7b8 100%);transform:rotateX(180deg)}.env__flap-shadow{z-index:5;clip-path:polygon(0 0,100% 0,50% 100%);filter:blur(5px);pointer-events:none;background:#4a2e1c38;height:58%;transition:opacity .3s;position:absolute;top:0;left:0;right:0;transform:translateY(6px)}.env--open .env__flap-top{z-index:2;transform:perspective(900px)rotateX(180deg)}.env--opening .env__flap-top{transform:perspective(900px)rotateX(180deg)}.env--flap-behind .env__flap-top{z-index:2}.env--open .env__flap-shadow,.env--opening .env__flap-shadow{opacity:0}.env__pocket{z-index:4;filter:drop-shadow(0 -1px 2px #4a2e1c29)drop-shadow(0 8px 10px #4a2e1c1a);pointer-events:none;position:absolute;inset:0}.env__side,.env__bottom{background-color:var(--paper-env);background-image:var(--noise), linear-gradient(100deg, #f6eedd 0%, #ebdfc7 100%);position:absolute;inset:0}.env__side--l{clip-path:polygon(0 0,50% 56%,0 100%);border-radius:6px 0 0 6px}.env__side--r{clip-path:polygon(100% 0,50% 56%,100% 100%);background-image:var(--noise), linear-gradient(260deg, #f6eedd 0%, #ebdfc7 100%);border-radius:0 6px 6px 0}.env__bottom{clip-path:polygon(0 100%,100% 100%,50% 48%);background-image:var(--noise), linear-gradient(180deg, #ece0c8 0%, #f6eedd 70%);border-radius:0 0 6px 6px}.env__pocket-content{z-index:5;text-align:center;color:var(--ink-soft);font-family:var(--font-body);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:clamp(16px,4.4vw,21px);font-style:italic;line-height:1.25;display:flex;position:absolute;inset:52% 12% 15%}.env__pocket-content>*{pointer-events:auto}.env--seal-br .env__pocket-content{left:14%;right:26%}.env__seal{z-index:7;filter:drop-shadow(0 4px 5px #3c230a4d);width:23%;transition:transform .35s,opacity .3s;position:absolute;top:58%;left:50%;transform:translate(-50%,-50%)}.env__seal--button{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:50%}.env__seal--button:hover,.env__seal--button:focus-visible{transform:translate(-50%,-50%)scale(1.04)}.env__seal--button:focus-visible{outline-offset:6px}.env--opening .env__seal,.env--open .env__seal--button{opacity:0;pointer-events:none;transform:translate(-50%,-62%)scale(.55)}.env__seal--mini{width:15%;top:auto;bottom:5%;transform:none}.env--seal-br .env__seal--mini{left:auto;right:6%}.env--seal-center .env__seal--mini{left:50%;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.env__flap-top{transition:none}}.btn{min-height:48px;font-family:var(--font-body);letter-spacing:.01em;-webkit-tap-highlight-color:transparent;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:12px 26px;font-size:19px;font-weight:500;line-height:1.1;text-decoration:none;transition:transform .15s,box-shadow .15s,background-color .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{background:linear-gradient(180deg, #e8445c 0%, var(--btn) 100%);color:#fff;font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;padding-inline:30px;font-size:16px;box-shadow:0 8px 18px -8px #d9304bb3,0 2px 4px #d9304b33}.btn--primary:hover:not(:disabled){background:var(--btn-hover)}.btn--outline{color:var(--ink);border:1px solid var(--gold);background:#fbf6ecb3}.btn--outline:hover:not(:disabled){background:var(--paper);box-shadow:0 6px 14px -8px #4a2e1c80}.btn--ghost{color:var(--gold-deep);text-underline-offset:4px;min-height:40px;padding:6px 10px;font-size:17px;text-decoration:underline}.btn--block{width:100%}.btn__icon{flex:none;width:22px;height:22px}.modal{background:var(--paper);background-image:var(--noise);width:min(92vw,460px);max-height:88svh;color:var(--ink);border:0;border-radius:18px;padding:0;overflow:hidden;box-shadow:0 30px 60px -20px #28140580}.modal::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#3c241480}.modal__frame{border:1px solid var(--gold);border-radius:12px;max-height:calc(88svh - 16px);margin:8px;padding:18px 20px 22px;overflow:auto}.modal__header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.modal__title{font-family:var(--font-display);color:var(--ink);font-size:26px;line-height:1.1}.modal__close{width:40px;height:40px;color:var(--ink-soft);border:1px solid #0000;border-radius:50%;place-items:center;display:grid}.modal__close:hover{border-color:var(--gold)}.modal__body{gap:14px;font-size:17px;display:grid}.modal__actions{gap:10px;margin-top:6px;display:grid}.bank{gap:8px;margin:0;display:grid}.bank__row{background:#b8923f17;border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.bank__row dt{font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-size:12px}.bank__row dd{font-family:var(--font-ui);word-break:break-word;margin:2px 0 0;font-size:16px;font-weight:500}.copy-btn{border:1px solid var(--gold);min-height:36px;font-family:var(--font-ui);color:var(--ink);background:var(--paper);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:500;display:inline-flex}.copy-btn[data-copied=true]{border-color:var(--success);color:var(--success)}.copy-btn svg{width:16px;height:16px}.player{border:1px solid var(--gold);background:#fbf6ecd9;border-radius:999px;align-items:center;gap:12px;padding:7px 18px 7px 7px;display:inline-flex;box-shadow:0 6px 16px -10px #4a2e1c80}.player__btn{color:#fff;background:linear-gradient(180deg, #a9843a 0%, var(--gold-deep) 100%);border-radius:50%;flex:none;place-items:center;width:42px;height:42px;display:grid}.player__btn svg{width:18px;height:18px}.player__btn:disabled{opacity:.5;cursor:not-allowed}.player__title{font-family:var(--font-display);color:var(--ink);white-space:nowrap;font-size:19px}.player__sep{background:var(--gold);opacity:.6;width:1px;height:26px}.player__volume{width:76px;accent-color:var(--gold-deep);cursor:pointer}.player__bars{align-items:flex-end;gap:2px;width:16px;height:14px;display:inline-flex}.player__bars i{background:var(--fuchsia);border-radius:1px;flex:1;height:40%;animation:.9s ease-in-out infinite bars}.player__bars i:nth-child(2){animation-delay:.15s}.player__bars i:nth-child(3){animation-delay:.3s}@keyframes bars{0%,to{height:30%}50%{height:100%}}.player__note{font-family:var(--font-ui);color:var(--ink-muted);font-size:13px}.form{text-align:left;gap:18px;width:100%;margin-top:8px;display:grid}.field{border:0;gap:8px;min-width:0;margin:0;padding:0;display:grid}.field__label{font-family:var(--font-body);color:var(--ink);font-size:19px;font-weight:500}.field__legend{margin-bottom:8px;padding:0}.input{width:100%;font-family:var(--font-ui);border:1px solid var(--gold);color:var(--ink);background:#fffdf8;border-radius:10px;padding:14px 16px;font-size:16px;font-weight:500;box-shadow:inset 0 1px 2px #4a2e1c0f}.input::placeholder{color:#b7a28e;font-weight:400}.input[aria-invalid=true]{border-color:var(--error)}.choices{gap:10px;display:grid}.choice{cursor:pointer;font-family:var(--font-body);background:#b8923f1f;border:1px solid #0000;border-radius:10px;align-items:center;gap:12px;padding:13px 16px;font-size:19px;font-weight:500;transition:background-color .15s,border-color .15s;display:flex}.choice:hover{background:#b8923f2e}.choice:has(input:checked){border-color:var(--fuchsia);background:#e5195f14}.choice:has(input:focus-visible){outline:2px solid var(--gold-deep);outline-offset:2px}.choice input{width:22px;height:22px;accent-color:var(--fuchsia);flex:none;margin:0}.choice input:focus-visible{outline:none}.field__error{font-family:var(--font-ui);color:var(--error);font-size:14px;font-weight:500}.form__status{font-family:var(--font-ui);border-radius:10px;padding:12px 14px;font-size:15px;line-height:1.4}.form__status--error{color:var(--error);background:#b3261e14}.form__submit{margin-top:4px}.hp{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}.success{justify-items:center;gap:12px;padding:10px 0 0;display:grid}.success__icon{color:#fff;background:linear-gradient(180deg, #f06e4e 0%, var(--fuchsia) 100%);border-radius:50%;place-items:center;width:56px;height:56px;display:grid;box-shadow:0 10px 20px -10px #e5195fb3}.success__icon svg{width:28px;height:28px}.success__name{font-family:var(--font-display);color:var(--ink);font-size:26px}.hero{place-items:center;min-height:100svh;padding:clamp(24px,6vw,48px) 16px 32px;display:grid}.hero__stage{width:min(100%, var(--stage-w));position:relative;container-type:inline-size}.hero__welcome-row{transition:grid-template-rows .9s var(--ease) .55s;grid-template-rows:1fr;display:grid}.hero__welcome{text-align:center;min-height:0;padding:8px 8px calc(var(--overlap) + 18px);justify-items:center;gap:12px;transition:opacity .35s .45s;display:grid;position:relative;overflow:hidden}.hero__welcome .names{margin:4px 0 6px}.hero__card-row{transition:grid-template-rows .9s var(--ease) .55s;grid-template-rows:0fr;display:grid}.hero__card-wrap{transform-origin:50% 0;min-height:0;transition:transform .9s var(--ease) .55s;will-change:transform;transform:translateY(-32cqw)scale(.25)}.hero[data-state=opening] .hero__welcome-row,.hero[data-state=open] .hero__welcome-row{grid-template-rows:0fr}.hero[data-state=opening] .hero__welcome,.hero[data-state=open] .hero__welcome{opacity:0}.hero[data-state=open] .hero__welcome-row{display:none}.hero[data-state=opening] .hero__card-row,.hero[data-state=open] .hero__card-row{grid-template-rows:1fr}.hero[data-state=opening] .hero__card-wrap,.hero[data-state=open] .hero__card-wrap{transform:none}.hero[data-state=open] .hero__card-wrap{will-change:auto}.hero__below{justify-content:center;min-height:56px;margin-top:22px;display:flex}.hero__below>*{animation:fade-up .5s var(--ease) both}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.hero__hint{text-align:center;font-family:var(--font-ui);color:var(--ink-muted);margin-top:14px;font-size:13px}.hero--og{min-height:630px;padding:0 16px}.hero--og .hero__stage{width:min(100%,440px)}.hero--og .kicker,.hero--og .quote,.hero--og .divider,.hero--og .hero__below,.hero--og .hero__hint{display:none}.hero--og .hero__welcome{padding-bottom:calc(var(--overlap) + 6px);gap:6px}.hero--og .names{font-size:64px}.card--invitation .names{font-size:clamp(50px,14vw,76px)}.scene{justify-content:center;padding:clamp(36px,8vw,72px) 16px 0;display:flex}.scene__stage{width:min(100%, var(--stage-w));container-type:inline-size}.scene .card-wrap{opacity:0;transition:opacity .7s ease, transform .7s var(--ease);transform:translateY(28px)}.scene.is-visible .card-wrap{opacity:1;transform:none}.timeline{text-align:left;gap:22px;width:min(100%,320px);margin:10px auto 4px;padding:0;list-style:none;display:grid;position:relative}.timeline:before{content:"";background:var(--gold);opacity:.8;width:1px;position:absolute;top:14px;bottom:14px;left:69px}.timeline__item{grid-template-columns:50px 38px 1fr;align-items:center;gap:0;display:grid}.timeline__icon{width:44px;height:44px;color:var(--gold-deep);justify-self:center}.timeline__dot{background:var(--gold-deep);width:11px;height:11px;box-shadow:0 0 0 4px var(--paper);border-radius:50%;justify-self:center}.timeline__time{font-family:var(--font-body);color:var(--ink);font-size:clamp(20px,5.4vw,24px);font-weight:500;line-height:1.1}.timeline__title{font-family:var(--font-body);color:var(--ink-soft);font-size:clamp(19px,5.2vw,23px);font-style:italic;line-height:1.15}.address{font-family:var(--font-body);color:var(--ink);font-size:clamp(18px,4.8vw,21px);font-weight:500;line-height:1.3}.address__region{color:var(--ink-muted);font-size:.85em;font-weight:400;display:block}.actions{justify-items:center;gap:10px;margin-top:4px;display:grid}.calendar-options{gap:10px;display:grid}.card--dress{overflow:visible}.dress__title{font-family:var(--font-script);color:var(--gold-deep);margin-top:-4px;font-size:clamp(50px,14vw,70px);line-height:1}.dress__code{font-family:var(--font-display);letter-spacing:.02em;text-transform:uppercase;color:var(--coral);font-size:clamp(34px,9.6vw,46px);line-height:1}.dress__motto{font-family:var(--font-display);text-transform:uppercase;background:var(--grad-names);color:var(--fuchsia);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(34px,9.6vw,46px);line-height:.98}.swatches{justify-content:center;gap:clamp(10px,3vw,16px);margin:10px 0 2px;padding:0;list-style:none;display:flex}.swatch{border-radius:50%;width:clamp(36px,10vw,46px);height:clamp(36px,10vw,46px);box-shadow:inset 0 -4px 6px #0000001a,inset 0 2px 3px #ffffff59,0 3px 6px #4a2e1c33}.swatches__hint{font-family:var(--font-ui);color:var(--ink-muted);font-size:12px}.outfits{width:min(100%,300px);margin:6px auto 0}.flowers{pointer-events:none;filter:drop-shadow(0 8px 10px #4a2e1c40);width:27%;max-width:150px;position:absolute;top:-5%;left:-12%}@media (width>=600px){.flowers{left:-14%}}.gift-art{width:min(70%,220px);color:var(--gold-deep);margin:0 auto 2px}.card--gifts .display{font-size:clamp(46px,13vw,66px)}.card--rsvp .display{font-size:clamp(36px,10.5vw,60px)}.closing{justify-items:center;gap:2px;display:grid}.closing__names{font-family:var(--font-display);background:var(--grad-names);color:var(--fuchsia);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(30px,8.4vw,40px);font-style:normal;line-height:1.05}.closing__names .amp{-webkit-text-fill-color:var(--gold-deep);font-size:.8em}.closing__date{font-family:var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--ink);font-size:clamp(12px,3.3vw,14px);font-style:normal;font-weight:500}
