:root{--color-background:#fffcfa;--color-surface:#fceff3;--color-text:#3e2a2e;--color-primary:#d06c90;--color-primary-deep:#9e3a60;--color-accent:#c9a227;--color-accent-soft:#e5ce9a;--color-envelope:#f2a8c0;--color-primary-rgb:208, 108, 144;--color-primary-deep-rgb:158, 58, 96;--color-accent-rgb:201, 162, 39;--font-script:"Parisienne", cursive;--font-serif:"Cormorant Garamond", "Georgia", serif;--color-label:color-mix(in srgb, var(--color-text) 45%, var(--color-primary-deep) 55%);--phone-width:430px;--gutter:24px;--ease-elegant:cubic-bezier(.22, 1, .36, 1);font-size:106.25%}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100dvh;font-family:var(--font-serif);color:var(--color-text);background:var(--color-background);-webkit-font-smoothing:antialiased;overflow-x:hidden}img{max-width:100%;display:block}button{cursor:pointer;color:inherit;touch-action:manipulation;background:0 0;border:none;font-family:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}a{color:inherit;touch-action:manipulation}h1,h2,h3,p{margin:0}svg{display:block}[hidden]{display:none!important}.page-bg{justify-content:center;width:100%;min-height:100dvh;display:flex}@media (width>=700px){.page-bg{background:linear-gradient(180deg, var(--color-surface) 0%, var(--color-primary-deep) 100%);padding:56px 16px;position:relative}.page-bg:before,.page-bg:after{content:"";filter:blur(90px);pointer-events:none;z-index:0;border-radius:50%;position:fixed}.page-bg:before{background:var(--color-accent-soft);opacity:.3;width:420px;height:420px;top:-140px;left:-110px}.page-bg:after{background:var(--color-accent);opacity:.18;width:460px;height:460px;bottom:-150px;right:-120px}}.app-shell{width:100%;max-width:var(--phone-width);background:var(--color-background);min-height:100dvh;position:relative;overflow-x:hidden}@media (width>=700px){.app-shell{border:1px solid rgba(var(--color-accent-rgb), .45);z-index:1;border-radius:20px;max-width:480px;min-height:auto;box-shadow:0 30px 70px #4a3a3847,0 2px 10px #4a3a381f}}.section{padding:64px var(--gutter);position:relative}.section-title{font-family:var(--font-script);color:var(--color-primary);text-align:center;margin-bottom:8px;font-size:clamp(2rem,8vw,2.6rem)}.section-title-serif{font-family:var(--font-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--color-label);text-align:center;margin-bottom:32px;font-size:.95rem;font-weight:700}.divider{width:80px;height:auto;color:var(--color-accent);margin:20px auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.envelope-screen{z-index:100;position:fixed;inset:0;overflow:hidden}.envelope-screen[data-open=true],.envelope-box>*{pointer-events:none}.envelope-box{--envelope-paper:color-mix(in srgb, var(--color-background) 88%, var(--color-accent-soft) 12%);--envelope-shade:color-mix(in srgb, var(--color-accent) 45%, #5a3826 55%);--damask-shade:color-mix(in srgb, var(--color-accent) 48%, var(--color-primary) 52%);--damask-lift:color-mix(in srgb, #fff 82%, var(--color-accent-soft) 18%);--seal-size:clamp(160px, 52vw, 210px);--seal-hi:color-mix(in srgb, var(--color-accent-soft) 68%, #fff 32%);--seal-gold:var(--color-accent-soft);--seal-gold-mid:var(--color-accent);--seal-gold-deep:color-mix(in srgb, var(--color-accent) 62%, var(--color-primary-deep) 38%);--seal-rose-hi:color-mix(in srgb, var(--color-accent-soft) 55%, var(--color-primary) 45%);--seal-rose:color-mix(in srgb, var(--color-accent) 42%, var(--color-primary) 58%);--seal-rose-deep:color-mix(in srgb, var(--color-primary-deep) 70%, #2a0f14 30%);position:absolute;inset:0}.envelope-box:after{content:"";z-index:4;pointer-events:none;background:radial-gradient(ellipse at 50% 46%, transparent 50%, rgba(var(--color-primary-rgb), .13) 100%);position:absolute;inset:0}.envelope-back{z-index:0;background:var(--envelope-paper);position:absolute;inset:0}.envelope-damask,.envelope-shade,.envelope-flap-edge{width:100%;height:100%;position:absolute;inset:0}.envelope-grain{pointer-events:none;opacity:.55;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n' x='0' y='0' width='100%25' height='100%25'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='4' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.42  0 0 0 0 0.32  0 0 0 0 0.22  0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-size:180px 180px;position:absolute;inset:0}.envelope-shade{z-index:1}.envelope-shade .seam-shadow{fill:none;stroke:var(--envelope-shade);stroke-opacity:.2;stroke-width:3px}.envelope-shade .seam-line{fill:none;stroke:var(--color-accent);stroke-opacity:.55;stroke-width:1px}.envelope-shade .seam-light{fill:none;stroke:#fff;stroke-opacity:.85;stroke-width:1px}.envelope-liner{clip-path:polygon(2px 0,calc(100% - 2px) 0,50% calc(100% - 3px));background:linear-gradient(180deg, color-mix(in srgb, var(--color-envelope) 68%, #fff 32%) 0%, var(--color-envelope) 55%, color-mix(in srgb, var(--color-primary) 78%, var(--color-envelope) 22%) 100%);z-index:2;height:50%;position:absolute;top:0;left:0;right:0}.envelope-flap{z-index:3;will-change:transform;filter:drop-shadow(0 7px 8px #462a1a4d);height:50%;position:absolute;top:0;left:0;right:0}.envelope-flap-face{clip-path:polygon(0 0,100% 0,50% 100%);background:var(--envelope-paper);position:absolute;inset:0;overflow:hidden}.envelope-flap-edge .flap-line{fill:none;stroke:var(--color-accent);stroke-opacity:.6;stroke-width:1px}.envelope-flap-edge .flap-light{fill:none;stroke:#fff;stroke-opacity:.9;stroke-width:1px;transform:translateY(-.3px)}.envelope-glow{clip-path:polygon(2px 0,calc(100% - 2px) 0,50% calc(100% - 3px));background:radial-gradient(circle at 50% 14%, #fff8e0 0%, #ffe6a8 22%, color-mix(in srgb, var(--color-accent-soft) 78%, transparent) 46%, rgba(var(--color-primary-rgb), .5) 70%, transparent 88%);z-index:2;opacity:0;height:50%;position:absolute;top:0;left:0;right:0}.envelope-sparkle-canvas{z-index:2;pointer-events:none;position:absolute;inset:0}.envelope-flash{z-index:6;opacity:0;pointer-events:none;background:#fff;position:fixed;inset:0}.envelope-seal{top:calc(50% - var(--seal-size) / 2);left:calc(50% - var(--seal-size) / 2);width:var(--seal-size);height:var(--seal-size);z-index:5;will-change:transform;position:absolute}.envelope-seal-btn{all:unset;pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.envelope-seal-btn:focus-visible{outline:2px solid var(--color-primary-deep);outline-offset:6px;border-radius:50%}.envelope-seal-shape{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.envelope-seal-initials{color:color-mix(in srgb, var(--color-primary-deep) 80%, #2a0f14 20%);font-family:var(--font-script);font-size:calc(var(--seal-size) * .22);text-shadow:0 1.5px #fff4d6bf,0 -.5px #461e1459;margin-top:26%;line-height:1;position:relative}.envelope-hint{top:calc(50% + var(--seal-size) / 2 + 12px);color:var(--color-primary-deep);font-family:var(--font-serif);letter-spacing:.01em;white-space:nowrap;text-shadow:0 0 8px #fffcf6f2,0 0 3px #fffcf6f2;z-index:5;font-size:.95rem;font-style:italic;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.floating-controls{z-index:50;opacity:0;gap:8px;display:flex;position:fixed;top:16px;right:16px}.floating-controls[data-visible=true]{opacity:1}.control-btn{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:40px;height:40px;color:var(--color-primary-deep);background:#ffffffd9;border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex;box-shadow:0 4px 14px #00000026}.control-btn svg{width:18px;height:18px}.companion{z-index:45;opacity:0;pointer-events:none;border-radius:50%;width:92px;height:92px;transition:opacity .4s;position:fixed}.companion[data-position=bottom-left]{left:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform-origin:0 100%}.companion[data-position=bottom-right]{right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform-origin:100% 100%}.companion[data-position=top-left]{left:16px;top:calc(16px + env(safe-area-inset-top,0px));transform-origin:0 0}.companion[data-position=top-right]{right:16px;top:calc(16px + env(safe-area-inset-top,0px));transform-origin:100% 0}.companion[data-visible=true]{opacity:1;pointer-events:auto}.companion-inner{width:100%;height:100%;display:block;position:relative}.companion-ring{width:100%;height:100%;position:absolute;inset:0;overflow:visible;transform:rotate(-90deg)}.companion-ring-circle{fill:none;stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round}.companion-art{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffd9;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;inset:9px;overflow:hidden;box-shadow:0 8px 22px #0000002e}.companion-art svg{object-fit:contain;width:100%;height:100%;display:block}.companion-art img{object-fit:cover;width:100%;height:100%;display:block}.companion-hearts{pointer-events:none;position:absolute;inset:0;overflow:visible}.companion-heart{width:14px;height:14px;color:var(--color-primary);position:absolute;top:26%;left:50%;transform:translate(-50%,-50%)}.companion-heart svg{width:100%;height:100%}.hero{text-align:center;padding:0 0 56px}.hero-illustration{aspect-ratio:400/260;width:100%;position:relative;overflow:hidden}.hero-illustration-inner{will-change:transform;width:100%;height:100%;position:absolute;inset:0}.hero-hall-svg{width:100%;height:100%;display:block}.hero-lace-border{background:var(--color-primary);opacity:.94;height:22px;position:absolute;bottom:0;left:0;right:0;-webkit-mask-image:radial-gradient(circle at 10px 0,#0000 9px,#000 10px);mask-image:radial-gradient(circle at 10px 0,#0000 9px,#000 10px);-webkit-mask-size:20px 20px;mask-size:20px 20px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x}.hero-hummingbird{width:44px;height:50px;margin:18px auto 10px;position:relative}.hummingbird-svg{width:100%;height:100%;display:block}.hero-badge-wrap{padding:0 var(--gutter);margin-top:6px;position:relative}.hero-pendant{z-index:1;will-change:transform;width:min(84vw,300px);margin:0 auto;position:relative}.pendant-chains{width:100%;height:44px;display:block}.chain-stop-light{stop-color:color-mix(in srgb, var(--color-accent) 55%, white 45%)}.chain-stop-mid{stop-color:var(--color-accent)}.chain-stop-dark{stop-color:color-mix(in srgb, var(--color-accent) 60%, black 30%)}.hero-floral{pointer-events:none;z-index:2;width:34%;max-width:120px;position:absolute}.hero-floral-svg{width:100%;height:auto;display:block}.hero-floral-left{transform-origin:top;top:46%;left:0}.hero-floral-right{transform-origin:top;top:-8%;right:0}.hero-badge{margin-top:-2px;padding:36px 28px 30px;position:relative}.hero-badge-svg{z-index:0;filter:drop-shadow(0 14px 28px #00000038);width:100%;height:100%;position:absolute;inset:0}.hero-badge-content{z-index:1;position:relative}.hero-names{font-family:var(--font-script);color:var(--color-primary);font-size:clamp(2.7rem,15vw,4rem);line-height:1.25}.hero-badge .hero-names{color:var(--color-background)}.name-reveal{padding-bottom:.15em;display:inline-block}.hero-ampersand{color:var(--color-background);margin:4px 0;font-size:.6em;display:block}.hero-badge-date{color:var(--color-background);letter-spacing:.14em;text-transform:uppercase;justify-content:center;align-items:center;gap:10px;margin-top:12px;font-size:.85rem;display:flex}.hero-badge-date-divider{color:#ffffffd1;font-size:.75rem}.hero-badge-date-day{letter-spacing:0;font-size:1.15rem;font-weight:700}.hero-tagline{padding:0 var(--gutter);font-family:var(--font-script);color:var(--color-primary-deep);z-index:1;margin-top:20px;font-size:1.3rem;position:relative}.greeting-name{text-align:center;font-family:var(--font-script);color:var(--color-primary-deep);margin-bottom:8px;font-size:1.8rem}.welcome-frame{max-width:320px;margin:0 auto;padding:44px 32px;position:relative}.welcome-doily-svg{z-index:0;filter:drop-shadow(0 12px 26px #0000001a);width:100%;height:100%;position:absolute;inset:0}.welcome-frame-content{z-index:1;position:relative}.welcome-text{text-align:center;color:var(--color-text);font-size:1.15rem;line-height:1.8}.welcome-text .line{display:block}.welcome-text .line+.line{margin-top:14px}.story-photo-frame{aspect-ratio:4/5;outline:1px solid rgba(var(--color-accent-rgb), .5);border:6px solid #fff;border-radius:4px;width:82%;max-width:360px;margin:0 auto;position:relative;overflow:hidden;box-shadow:0 20px 40px #0000002e}.story-photo-frame img{object-fit:cover;width:100%;height:100%;transition:transform 1.1s var(--ease-elegant);display:block;transform:scale(1.08)}.story-photo-frame.in-view img{transform:scale(1)}.wedding-party{text-align:center}.party-group{margin-top:36px}.party-group:first-of-type{margin-top:8px}.party-group-title{font-family:var(--font-script);color:var(--color-primary);margin-bottom:22px;font-size:clamp(1.7rem,7vw,2.1rem)}.party-grid{--party-gap-x:12px;justify-content:center;gap:30px var(--party-gap-x);flex-wrap:wrap;display:flex}.party-member{flex:0 0 calc((100% - (var(--party-cols,3) - 1) * var(--party-gap-x)) / var(--party-cols,3));min-width:0}.party-member--lead{flex-basis:100%}.party-photo-wrap{aspect-ratio:1;width:min(92px,100%);transition:transform .25s var(--ease-elegant);margin:0 auto 10px;position:relative}.party-member--lead .party-photo-wrap{width:132px;margin-bottom:14px}.party-photo-wrap:hover,.party-photo-wrap:active{transform:translateY(-4px)scale(1.04)}.party-ring{width:100%;height:100%;position:absolute;inset:0;overflow:visible;transform:rotate(-90deg)}.party-ring-circle{fill:none;stroke:var(--color-accent);stroke-width:2.5px;stroke-linecap:round}.party-photo{background:var(--color-background);color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;inset:9px;overflow:hidden;box-shadow:0 4px 12px #0000001f}.party-photo img{object-fit:cover;width:100%;height:100%}.party-photo svg{width:100%;height:100%;padding:10%}.party-name{font-family:var(--font-serif);color:var(--color-text);font-size:1rem;font-weight:600}.party-member--lead .party-name{font-size:1.2rem}.party-role{text-transform:uppercase;letter-spacing:.08em;color:var(--color-label);margin-top:2px;font-size:.78rem}.party-ring-outer{fill:none;stroke:var(--color-accent);stroke-width:.7px;opacity:.75}.party-member--lead .party-role{letter-spacing:.14em;justify-content:center;align-items:center;gap:10px;margin-top:4px;font-weight:700;display:flex}.party-member--lead .party-role:before,.party-member--lead .party-role:after{content:"";background:linear-gradient(90deg, transparent, var(--color-accent));flex:0 28px;height:1px}.party-member--lead .party-role:after{transform:scaleX(-1)}.calendar-month{text-align:center;font-family:var(--font-script);color:var(--color-primary);margin-bottom:24px;font-size:clamp(2.2rem,11vw,3rem)}.calendar-week-row{justify-content:space-between;max-width:360px;margin:0 auto;display:flex}.calendar-week-day{flex-direction:column;flex:1;align-items:center;gap:10px;display:flex}.calendar-weekday{text-transform:uppercase;letter-spacing:.06em;color:var(--color-label);font-size:.72rem;font-weight:600}.calendar-day-num{color:var(--color-text);font-size:1.05rem}.calendar-day-heart{justify-content:center;align-items:center;width:38px;height:38px;display:flex;position:relative}.calendar-day-heart-icon{color:var(--color-primary-deep);position:absolute;inset:0}.calendar-day-heart-icon svg{width:100%;height:100%}.calendar-day-heart-num{z-index:1;color:var(--color-background);margin-top:-2px;font-size:1.05rem;font-weight:700;position:relative}.calendar-day-heart--minor{width:27px;height:27px}.calendar-day-heart--minor .calendar-day-heart-num{font-size:.76rem}.calendar-legend{flex-wrap:wrap;justify-content:center;gap:8px 20px;margin-top:16px;display:flex}.calendar-legend-item{color:var(--color-label);align-items:center;gap:6px;font-size:.78rem;display:inline-flex}.calendar-legend-dot{width:13px;height:13px;color:var(--color-primary-deep);flex-shrink:0}.calendar-legend-dot svg{width:100%;height:100%}.calendar-legend-item--minor .calendar-legend-dot{width:10px;height:10px}.lace-ribbon{background:color-mix(in srgb, var(--color-primary) 35%, var(--color-accent) 45%);opacity:.55;max-width:220px;height:14px;margin:36px auto 0;-webkit-mask-image:radial-gradient(circle at 7px 0,#0000 6px,#000 7px);mask-image:radial-gradient(circle at 7px 0,#0000 6px,#000 7px);-webkit-mask-size:14px 14px;mask-size:14px 14px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x}.timeline{position:relative}.timeline-svg{z-index:0;width:100%;height:100%;position:absolute;top:0;left:0}.timeline-path{fill:none;stroke:var(--color-primary);stroke-width:2px}.timeline-heart{width:22px;height:22px;color:var(--color-primary);z-index:2;opacity:0;filter:drop-shadow(0 2px 4px #00000040);position:absolute;top:0;left:0}.timeline-heart svg{width:100%;height:100%}.timeline-events{z-index:1;flex-direction:column;gap:56px;display:flex;position:relative}.timeline-event{width:56%;padding:0 4px}.timeline-event[data-side=left]{margin-right:auto}.timeline-event[data-side=right]{text-align:right;margin-left:auto}.timeline-event-icon{width:44px;height:44px;color:var(--color-primary);margin-bottom:8px}.timeline-event-icon svg{stroke-width:1.3px}.timeline-event[data-side=right] .timeline-event-icon{margin-left:auto}.timeline-event-time{color:var(--color-primary);font-size:1.2rem;font-weight:700}.timeline-event-title{color:var(--color-text);margin-top:2px;font-size:1.05rem}.timeline-event-dresscode{color:var(--color-text);max-width:86%;margin-top:8px}.timeline-event[data-side=right] .timeline-event-dresscode{margin-left:auto}.timeline-event-dresscode-heading{letter-spacing:.14em;text-transform:uppercase;color:var(--color-primary-deep);font-size:.85rem;font-weight:700}.timeline-event-dresscode-style{letter-spacing:.06em;text-transform:uppercase;margin-top:2px;font-size:.95rem;font-weight:700}.timeline-event-dresscode-detail{margin-top:2px;font-size:1rem}.dresscode-segment{display:block}.dresscode-nowrap{white-space:nowrap}.dresscode-swatches{vertical-align:-1px;gap:4px;margin-left:6px;display:inline-flex}.dresscode-swatch{width:12px;height:12px;box-shadow:0 0 0 1px color-mix(in srgb, var(--color-text) 45%, transparent);border-radius:50%}.timeline-event-note{color:var(--color-text);opacity:.85;margin-top:4px;font-size:.9rem}.timeline-day-heading{text-align:center;width:100%;margin:4px 0 14px;padding:0}.timeline-day-heading-text{background:var(--color-background);color:var(--color-primary-deep);font-family:var(--font-script);box-shadow:0 0 0 1px rgba(var(--color-accent-rgb), .4);border-radius:999px;padding:7px 22px;font-size:1.4rem;display:inline-block}.venue-card{text-align:center;padding:20px 0}.venue-label{text-transform:uppercase;letter-spacing:.1em;color:var(--color-label);margin-bottom:4px;font-size:.85rem;font-weight:700}.venue-name{font-family:var(--font-script);color:var(--color-primary);font-size:1.7rem}.venue-address{color:var(--color-text);opacity:.92;margin-top:4px;font-size:1rem}.venue-dresscode{color:var(--color-text);opacity:.92;margin-top:10px;font-size:.95rem;font-style:italic}.btn{background:var(--color-primary-deep);color:#fff;letter-spacing:.04em;transition:transform .2s var(--ease-elegant), box-shadow .2s var(--ease-elegant);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:.9rem;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:0 8px 20px rgba(var(--color-primary-rgb), .35);transform:translateY(-2px)}.btn-outline{color:var(--color-primary-deep);border:1.5px solid var(--color-primary-deep);background:0 0}.venue-map-btn{margin-top:16px}.countdown-grid{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.countdown-heading{text-align:center;font-family:var(--font-script);color:var(--color-primary);margin-bottom:24px;font-size:clamp(1.5rem,6.5vw,1.9rem)}.countdown-unit{border:1.5px solid var(--color-primary);width:78px;height:78px;color:var(--color-text);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;display:flex}.countdown-value{font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:700}.countdown-label{text-transform:uppercase;letter-spacing:.05em;opacity:.85;font-size:.62rem}.countdown-married{text-align:center}.countdown-married-title{font-family:var(--font-script);color:var(--color-primary);font-size:2.2rem}.countdown-married-sub{color:var(--color-text);margin-top:8px}.countdown-ics-btn{margin:28px auto 0;display:flex}.flower-band{width:100%;height:90px;position:relative;overflow:hidden}.flower-band-inner{width:100%;position:absolute;inset:-20% 0}.dahlia-band-svg{width:100%;height:100%;display:block}.rsvp-section{position:relative}.rsvp-watermark{text-align:center;font-family:var(--font-script);color:var(--color-primary);opacity:.07;pointer-events:none;z-index:0;white-space:nowrap;font-size:clamp(3.4rem,22vw,5.5rem);line-height:1;position:absolute;top:-6px;left:0;right:0}.rsvp-section>:not(.rsvp-watermark){z-index:1;position:relative}.rsvp-deadline{text-align:center;color:var(--color-text);opacity:.85;margin-bottom:24px;font-size:.95rem}.rsvp-form{flex-direction:column;gap:18px;display:flex}.field-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary-deep);margin-bottom:6px;font-size:.88rem;font-weight:600;display:block}.field-input,.field-textarea{border:none;border-bottom:1.5px solid rgba(var(--color-primary-rgb), .3);width:100%;font-family:var(--font-serif);color:var(--color-text);background:0 0;border-radius:0;padding:10px 4px;font-size:1rem}.field-input:focus,.field-textarea:focus{border-bottom-color:var(--color-primary)}.field-textarea{resize:vertical;min-height:90px}.field-error{color:var(--color-primary-deep);min-height:1em;margin-top:4px;font-size:.78rem}.attending-group{justify-content:center;gap:24px;display:flex}.attending-option{color:var(--color-text);background:0 0;align-items:center;gap:8px;font-size:.95rem;display:flex}.radio-dot{border:1.5px solid var(--color-primary);border-radius:50%;flex-shrink:0;width:18px;height:18px;position:relative}.attending-option[aria-checked=true] .radio-dot:after{content:"";background:var(--color-primary);border-radius:50%;position:absolute;inset:3px}.guest-stepper{border:1px solid rgba(var(--color-primary-rgb), .3);border-radius:999px;align-items:center;gap:18px;width:fit-content;margin:0 auto;padding:6px 18px;display:inline-flex}.stepper-btn{width:22px;height:22px;color:var(--color-primary-deep);justify-content:center;align-items:center;font-size:1.2rem;display:flex}.stepper-value{border:1px solid rgba(var(--color-primary-rgb), .3);min-width:26px;height:26px;color:var(--color-primary-deep);border-radius:50%;justify-content:center;align-items:center;font-size:1rem;font-weight:700;display:flex}.guests-field{flex-direction:column;align-items:center;display:flex}.honeypot-field{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.rsvp-submit-btn{width:100%;margin-top:6px;padding:14px}.rsvp-submit-btn:disabled:hover{box-shadow:none;transform:none}.rsvp-submit-btn:disabled{opacity:.6;cursor:not-allowed}.rsvp-submit-btn.is-loading{opacity:1;cursor:progress;justify-content:center;align-items:center;gap:10px;display:flex}.rsvp-submit-btn.is-loading:before{content:"";border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:1em;height:1em;animation:.8s linear infinite rsvp-spin}@keyframes rsvp-spin{to{transform:rotate(360deg)}}.rsvp-form[aria-busy=true] .field,.rsvp-form[aria-busy=true] .attending-group{opacity:.6;transition:opacity .2s}.rsvp-status{border-left:3px solid var(--color-primary-deep);background:rgba(var(--color-primary-rgb), .1);color:var(--color-primary-deep);text-align:left;border-radius:10px;align-items:flex-start;gap:10px;margin-top:14px;padding:12px 14px;font-size:.95rem;line-height:1.4;display:flex}.rsvp-status-icon{flex:none;width:20px;height:20px;margin-top:1px}.rsvp-status-icon svg{width:100%;height:100%}.rsvp-status[data-kind=slow]{border-left-color:var(--color-accent);background:rgba(var(--color-accent-rgb), .1);color:var(--color-label)}.rsvp-status[data-kind=slow] .rsvp-status-icon{display:none}.rsvp-success{text-align:center;padding:20px 0}.rsvp-success-check{width:64px;height:64px;color:var(--color-primary);margin:0 auto 16px}.rsvp-success-check circle,.rsvp-success-check path{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.rsvp-success-title{font-family:var(--font-script);color:var(--color-primary);font-size:1.8rem}.rsvp-for{text-align:center}.rsvp-guest-name{font-family:var(--font-script);color:var(--color-primary-deep);overflow-wrap:anywhere;font-size:1.7rem;line-height:1.25}.rsvp-previous{color:var(--color-label);margin-top:8px;font-size:.95rem;line-height:1.45}.rsvp-guests-note{color:var(--color-label);text-align:center;margin-top:8px;font-size:.85rem;line-height:1.4}.rsvp-guest-name+.rsvp-previous{margin-top:4px}.rsvp-notice{text-align:center;padding:8px 0 4px}.rsvp-notice-text{color:var(--color-text);font-size:1.05rem;line-height:1.5}.rsvp-notice-note{color:var(--color-label);margin-top:12px;font-size:.88rem;font-style:italic;line-height:1.45}.rsvp-retry-btn,.rsvp-change-btn{margin-top:18px}.gallery-scroll{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:12px;padding-bottom:8px;display:flex;overflow-x:auto}.gallery-item{aspect-ratio:4/5;scroll-snap-align:center;background:linear-gradient(150deg, var(--color-accent), var(--color-primary));border-radius:10px;flex:0 0 78%;overflow:hidden}.gallery-item img{object-fit:cover;width:100%;height:100%}.extras-text{text-align:center;font-size:1rem;line-height:1.7}.closing{text-align:center;color:var(--color-text);padding-bottom:40px;position:relative;overflow:hidden}.closing-watermark{text-align:center;font-family:var(--font-script);color:var(--color-primary);opacity:.07;pointer-events:none;white-space:nowrap;font-size:clamp(3rem,20vw,4.6rem);position:absolute;top:8px;left:0;right:0}.closing-with-love{font-family:var(--font-script);color:var(--color-primary);margin-bottom:6px;font-size:clamp(1.6rem,7vw,2rem);position:relative}.closing-names{flex-direction:column;align-items:center;gap:2px;display:flex;position:relative}.closing-name{font-family:var(--font-script);color:var(--color-primary);font-size:clamp(2.4rem,12vw,3.2rem);line-height:1.15}.closing-amp{font-family:var(--font-script);color:var(--color-primary-deep);font-size:clamp(1.3rem,6vw,1.7rem)}.closing-heart-row{justify-content:center;align-items:center;gap:16px;margin-top:24px;display:flex;position:relative}.closing-seal{width:58px;height:58px;filter:drop-shadow(0 6px 12px rgba(var(--color-primary-rgb), .35))}.closing-waiting{font-family:var(--font-script);color:var(--color-primary-deep);text-align:left;max-width:160px;font-size:clamp(1.2rem,5.5vw,1.5rem)}.closing-message{color:var(--color-text);opacity:.85;margin-top:28px;font-size:1.05rem;position:relative}.closing-footer{color:var(--color-text);opacity:.75;letter-spacing:.08em;text-transform:uppercase;margin-top:32px;font-size:.82rem;position:relative}:root{--decor-gold-hi:color-mix(in srgb, var(--color-accent-soft) 68%, #fff 32%);--decor-gold-mid:var(--color-accent);--decor-gold-deep:color-mix(in srgb, var(--color-accent) 62%, var(--color-primary-deep) 38%);--decor-gold-plate-hi:color-mix(in srgb, var(--color-accent-soft) 40%, var(--color-background) 60%);--decor-gold-plate-lo:color-mix(in srgb, var(--color-accent-soft) 85%, var(--color-background) 15%);--decor-disc-hi:#fff;--decor-disc-lo:color-mix(in srgb, var(--color-accent-soft) 26%, var(--color-background) 74%)}.decor-sprite{pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.decor-bg{pointer-events:none;background-repeat:repeat;position:absolute;inset:0}.d-fill{fill:url(#decor-gold-plate)}.d-line{fill:none;stroke:url(#decor-gold-line);stroke-width:.8px;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1.02 1}.d-bead{fill:url(#decor-gold-line)}.d-disc{fill:url(#decor-disc)}.d-ring{fill:none;stroke:url(#decor-gold-line);stroke-width:5px;stroke-dasharray:1.02 1}.d-hair{fill:none;stroke:var(--decor-gold-deep);stroke-opacity:.7;stroke-width:.8px;stroke-dasharray:1.02 1}.d-beads{fill:var(--decor-gold-mid)}.d-emblem-shade{fill:var(--decor-gold-deep);opacity:.28}.d-emblem-fill{fill:url(#decor-emblem-fill);stroke:var(--decor-gold-deep);stroke-opacity:.75;stroke-width:.45px;stroke-linejoin:round;stroke-dasharray:1.02 1}.d-initials{font-family:var(--font-script);fill:color-mix(in srgb, var(--color-primary-deep) 80%, #2a0f14 20%);stroke:color-mix(in srgb, var(--color-primary-deep) 80%, #2a0f14 20%);stroke-width:.6px;font-size:27px}.decor-corner,.decor-crest{pointer-events:none;visibility:hidden;display:block;overflow:visible}.decor-live .decor-corner,.decor-live .decor-crest{visibility:visible}.decor-corner use,.decor-crest use{stroke-dashoffset:1.02px;fill-opacity:0;transition:stroke-dashoffset 1.5s cubic-bezier(.45,0,.2,1),fill-opacity .9s 1.05s}.decor-corner.is-drawn use,.decor-crest.is-drawn use{stroke-dashoffset:0;fill-opacity:1}section.section>.decor-corner{z-index:0;opacity:.95;width:60px;height:60px;position:absolute}section.section>.decor-corner--tl{top:4px;left:4px}section.section>.decor-corner--br{bottom:4px;right:4px;transform:rotate(180deg)}.decor-crest-wrap{justify-content:center;display:flex}.decor-crest{filter:drop-shadow(0 2px 3px #3c1e1447);width:84px;height:93px}.hero-badge .decor-crest-wrap{margin:-8px 0 8px}.hero.has-crest .hero-floral-left{top:calc(46% + 50px)}.closing .decor-crest-wrap{margin-bottom:10px;position:relative}.decor-paper .story-photo-frame:after,.decor-paper .gallery-item:after,.decor-paper .party-photo:after{content:"";border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(var(--color-accent-rgb), .28), inset 0 3px 7px #462d1433;position:absolute;inset:0}.decor-paper .gallery-item{position:relative}.decor-paper .party-photo:after{box-shadow:inset 0 0 0 1px rgba(var(--color-accent-rgb), .22), inset 0 2px 5px #462d142e}.decor-paper .countdown-unit{box-shadow:inset 0 1px 2px #fffffff2, inset 0 -3px 6px rgba(var(--color-primary-deep-rgb), .1), 0 1px 0 #fff}.decor-paper .welcome-doily-svg{filter:drop-shadow(0 12px 26px #0000001a)drop-shadow(0 1px #ffffffe6)}.decor-live .countdown-label{opacity:1}::placeholder{color:color-mix(in srgb, var(--color-text) 80%, var(--color-background));opacity:1}@media (prefers-reduced-motion:reduce){.decor-corner use,.decor-crest use{stroke-dashoffset:0;fill-opacity:1;transition:none}}.fade-up{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.fade-up{opacity:1;transform:none}.story-photo-frame img{transform:none}}
