:root{--olive-50:#f4f5ec;--olive-100:#e3e7d1;--olive-300:#a8b083;--olive-500:#6b7445;--olive-600:#5a6239;--olive-700:#454c2b;--beige-100:#faf7f0;--beige-200:#f2ebdd;--beige-300:#e5d9c2;--beige-500:#c8b594;--white:#fff;--black:#141414;--text:#1f1f1c;--text-muted:#6b675d;--border:#e2d8c4;--danger:#a1403a;--success:#4f6b3a;--radius:12px;--shadow:0 10px 30px -12px #1414142e;--ease-out:cubic-bezier(.22, 1, .36, 1);--font-script:"Great Vibes", "Brush Script MT", cursive;--font-heading:"Cormorant Garamond", Georgia, serif;--font-body:"Jost", system-ui, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);background:var(--beige-100);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-weight:400;line-height:1.6}h1,h2,h3{font-family:var(--font-heading);color:var(--olive-700);margin:0}a{color:var(--olive-600)}button{font-family:var(--font-body)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.public-shell{background:radial-gradient(120% 80% at 50% 0%, var(--white), var(--beige-200));justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.public-card{border:1px solid var(--border);background:var(--white);width:100%;max-width:420px;box-shadow:var(--shadow);text-align:center;border-radius:20px;padding:40px 28px}.public-card h1{color:var(--black);margin-bottom:8px;font-size:2rem;font-style:italic;font-weight:400}.form-stack{text-align:left;flex-direction:column;gap:16px;margin-top:20px;display:flex}.field{color:var(--text-muted);flex-direction:column;gap:6px;font-size:.85rem;display:flex}.field input,.field textarea{border:1px solid var(--border);background:var(--white);color:var(--text);font-family:var(--font-body);border-radius:10px;padding:11px 14px;font-size:16px;transition:border-color .2s}.field input:focus,.field textarea:focus{outline:2px solid var(--olive-300);outline-offset:1px}.form-error{color:var(--danger);margin:0;font-size:.9rem}.form-success{color:var(--success);margin:0;font-size:.9rem}.form-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.form-section{border:none;border-top:1px solid var(--border);flex-direction:column;gap:14px;margin:8px 0 0;padding:18px 0 0;display:flex}.form-section legend{font-family:var(--font-heading);color:var(--black);padding:0 0 4px;font-size:1.3rem;font-style:italic}.form-section .text-muted{margin:0}.music-preview{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.music-preview audio{width:100%}.file-button{cursor:pointer;position:relative}.file-button input{opacity:0;width:1px;height:1px;position:absolute}.file-button:focus-within{outline:2px solid var(--olive-300);outline-offset:2px}.file-button.is-disabled{opacity:.6;cursor:progress}.checkbox-field{color:var(--text);align-items:center;gap:10px;font-size:.9rem;display:flex}.checkbox-field input{width:18px;height:18px;accent-color:var(--olive-700)}.align-start{align-self:flex-start}.switch-field{color:var(--text);cursor:pointer;align-items:center;gap:12px;font-size:.9rem;display:flex;position:relative}.switch-field input{opacity:0;pointer-events:none;position:absolute}.switch{background:var(--beige-300);border-radius:999px;flex-shrink:0;width:44px;height:26px;transition:background-color .25s;position:relative}.switch:after{content:"";background:var(--white);width:20px;height:20px;transition:transform .25s var(--ease-out);border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #14141440}.switch-field input:checked+.switch{background:var(--olive-700)}.switch-field input:checked+.switch:after{transform:translate(18px)}.switch-field input:focus-visible+.switch{outline:2px solid var(--olive-300);outline-offset:2px}.color-editor{flex-direction:column;gap:12px;transition:opacity .25s;display:flex}.color-editor.is-disabled{opacity:.45}.color-list{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.color-item{flex-direction:column;align-items:center;gap:6px;display:flex;position:relative}.color-swatch{background:var(--swatch);width:46px;height:46px;box-shadow:0 0 0 3px var(--white), 0 0 0 4px var(--border);cursor:pointer;border-radius:50%;display:block;position:relative}.color-swatch input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.color-swatch:focus-within{box-shadow:0 0 0 3px var(--white), 0 0 0 5px var(--olive-500)}.color-hex{font-variant-numeric:tabular-nums;text-transform:uppercase;color:var(--text-muted);font-size:.72rem}.color-remove{border:1px solid var(--border);background:var(--white);width:22px;height:22px;color:var(--text-muted);cursor:pointer;border-radius:50%;place-items:center;padding:0;font-size:.9rem;line-height:1;display:grid;position:absolute;top:-6px;right:-8px}.color-remove:hover:not(:disabled){color:var(--danger)}.color-add{border:1px dashed var(--olive-300);width:46px;height:46px;color:var(--olive-600);cursor:pointer;background:0 0;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0;font-size:0;display:flex}.color-add span{font-size:1.4rem;line-height:1}.color-add:disabled,.color-remove:disabled{cursor:not-allowed}.btn-primary,.btn-secondary,.btn-link{cursor:pointer;justify-content:center;align-items:center;font-size:.9rem;text-decoration:none;transition:opacity .2s,background-color .2s;display:inline-flex}.btn-primary{background:var(--olive-700);min-height:44px;color:var(--white);letter-spacing:.04em;border:none;border-radius:999px;padding:0 22px;font-weight:500}.btn-primary:hover{background:var(--olive-600)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{border:1px solid var(--border);background:var(--white);min-height:42px;color:var(--olive-700);border-radius:999px;padding:0 18px}.btn-link{color:var(--olive-600);background:0 0;border:none;padding:0;font-size:.85rem;text-decoration:underline}.admin-shell{background:var(--beige-100);min-height:100vh}.admin-topbar{background:var(--olive-700);color:var(--white);flex-wrap:wrap;align-items:center;gap:12px 24px;padding:14px 20px;display:flex}.admin-topbar h1{color:var(--white);flex-shrink:0;margin:0;font-size:1.25rem;font-style:italic;font-weight:500}.admin-topbar .btn-secondary{color:var(--beige-100);background:#faf7f01f;border-color:#0000}.admin-nav{flex:1;gap:8px;display:flex}.admin-nav a{color:var(--beige-200);border-radius:999px;padding:6px 12px;font-size:.85rem;text-decoration:none}.admin-nav a.active{background:var(--beige-100);color:var(--olive-700)}.admin-content{max-width:960px;margin:0 auto;padding:28px 16px}.admin-content h2{color:var(--black);font-size:1.8rem;font-style:italic;font-weight:500}.admin-loading{text-align:center;padding:40px}.admin-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.text-muted{color:var(--text-muted);margin:4px 0 0;font-size:.85rem}.admin-form{border:1px solid var(--border);border-radius:var(--radius);background:var(--white);max-width:480px;padding:24px}.admin-table{border-collapse:collapse;border-radius:var(--radius);background:var(--white);width:100%;box-shadow:var(--shadow);overflow:hidden}.admin-table th,.admin-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:12px 16px;font-size:.875rem}.admin-table th{background:var(--beige-200);color:var(--olive-700);font-weight:500}.admin-row-actions{gap:12px;display:flex}.family-cell{min-width:200px;max-width:340px}.family-name{font-weight:500;display:block}.family-meta{color:var(--text-muted);margin-top:2px;font-size:.75rem;display:block}.family-note{border-left:2px solid var(--olive-300);background:var(--beige-100);font-family:var(--font-heading);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);border-radius:0 8px 8px 0;margin:8px 0 0;padding:8px 12px;font-size:1rem;font-style:italic;line-height:1.4}.badge{white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:500;display:inline-flex}.badge-pending{background:var(--beige-300);color:var(--text-muted)}.badge-confirmed{background:var(--olive-100);color:var(--olive-700)}.badge-declined{color:var(--danger);background:#f3dedc}@media (width<=640px){.admin-table{display:block;overflow-x:auto}}.inv{background:var(--beige-100);color:var(--text);overflow-x:hidden}.inv-section{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:88px 24px;display:flex;position:relative}.inv-section--compact{min-height:auto;padding-block:96px}.inv-section--white{background:var(--white)}.inv-section--beige{background:var(--beige-200)}.inv-section--olive{background:var(--olive-700);color:var(--beige-100)}.inv-eyebrow{font-family:var(--font-body);letter-spacing:.38em;text-transform:uppercase;color:var(--olive-500);margin:0 0 14px;padding-left:.38em;font-size:.72rem;font-weight:500}.inv-title{font-family:var(--font-heading);color:var(--black);overflow-wrap:anywhere;font-size:clamp(2.2rem,9vw,3.4rem);font-style:italic;font-weight:400;line-height:1.1}.inv-line{background:var(--black);opacity:.7;width:48px;height:1px;margin:22px auto 0;display:block}.inv-lead{max-width:30ch;font-family:var(--font-heading);color:var(--text-muted);margin:24px auto 0;font-size:1.25rem;line-height:1.6}.inv-section--olive .inv-eyebrow{color:var(--olive-100)}.inv-section--olive .inv-title{color:var(--white)}.inv-section--olive .inv-line{background:var(--beige-300)}.inv-section--olive .inv-lead{color:#faf7f0cc}.inv-ornament{width:150px;margin:0 auto 28px}.inv-btn{border:1px solid var(--olive-700);background:var(--olive-700);min-height:52px;color:var(--white);font-family:var(--font-body);letter-spacing:.22em;text-transform:uppercase;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .4s var(--ease-out), box-shadow .4s var(--ease-out), background-color .3s ease, color .3s ease;border-radius:999px;justify-content:center;align-items:center;gap:10px;margin-top:8px;padding:0 32px;font-size:.78rem;font-weight:500;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.inv-btn:after{content:"";transition:transform .9s var(--ease-out);background:linear-gradient(120deg,#0000 30%,#ffffff47 50%,#0000 70%);position:absolute;inset:0;transform:translate(-120%)}.inv-btn:hover{transform:translateY(-2px);box-shadow:0 14px 28px -14px #14141480}.inv-btn:hover:after{transform:translate(120%)}.inv-btn:active{transform:translateY(0)scale(.98)}.inv-btn:focus-visible{outline:2px solid var(--olive-300);outline-offset:3px}.inv-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.inv-btn--light{border-color:var(--beige-100);background:var(--beige-100);color:var(--olive-700)}.inv-btn--ghost-light{color:var(--beige-100);background:0 0;border-color:#faf7f080}.inv-btn--ghost-light:hover{background:#faf7f014}.reveal{opacity:0;transition:opacity 1s var(--ease-out), transform 1s var(--ease-out);transition-delay:var(--reveal-delay,0s)}.reveal-up{transform:translateY(36px)}.reveal-scale{transform:scale(.9)}.reveal.is-visible{opacity:1;transform:none}.olive-branch{width:100%;height:auto;display:block;overflow:visible}.olive-stem{fill:none;stroke:var(--olive-700);stroke-width:1.4px;stroke-linecap:round}.olive-leaf,.olive-fruit{transform-box:fill-box}.olive-leaf{transform-origin:0%}.olive-fruit{fill:var(--olive-700);transform-origin:50%}.inv-hero .olive-stem,.is-visible .olive-stem{stroke-dasharray:1;stroke-dashoffset:1px;animation:1.8s cubic-bezier(.65,0,.35,1) .2s forwards draw}.inv-hero .olive-leaf,.inv-hero .olive-fruit,.is-visible .olive-leaf,.is-visible .olive-fruit{animation:grow .9s var(--ease-out) both;animation-delay:calc(var(--i) * 90ms + .5s)}.sway{transform-origin:0 80%;animation:7s ease-in-out infinite alternate sway}.inv-hero{text-align:center;background:radial-gradient(120% 80% at 50% 0%, var(--white) 0%, var(--beige-100) 55%, var(--beige-200) 100%);justify-content:center;align-items:center;min-height:100svh;padding:96px 28px;display:flex;position:relative;overflow:hidden}.inv-hero:before{content:"";pointer-events:none;border:1px solid #1414141f;position:absolute;inset:14px}.inv-hero__branch{pointer-events:none;width:230px;position:absolute}.inv-hero__branch--top{top:6%;right:-36px;transform:rotate(196deg)}.inv-hero__branch--bottom{bottom:9%;left:-36px;transform:rotate(-8deg)}.inv-hero__content{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.inv-hero__names{font-family:var(--font-script);color:var(--olive-700);flex-direction:column;align-items:center;margin:8px 0 0;font-size:clamp(3.4rem,16vw,6.5rem);font-weight:400;line-height:1.05;display:flex}.inv-hero__amp{font-family:var(--font-heading);color:var(--black);margin:2px 0;font-size:.45em;font-style:italic}.inv-hero__subtitle{font-family:var(--font-heading);color:var(--text-muted);margin:20px 0 0;font-size:1.2rem;font-style:italic}.hero-anim{opacity:0;animation:heroIn 1.3s var(--ease-out) forwards;animation-delay:var(--d,0s)}.inv-hero__scroll{bottom:34px;width:max-content;color:var(--black);letter-spacing:.35em;text-transform:uppercase;opacity:0;animation:heroIn 1s 1.6s var(--ease-out) forwards;flex-direction:column;align-items:center;gap:10px;margin-inline:auto;font-size:.62rem;text-decoration:none;display:flex;position:absolute;inset-inline:0}.inv-hero__scroll i{background:linear-gradient(var(--black), transparent);transform-origin:top;width:1px;height:44px;animation:2.2s ease-in-out infinite scrollLine;display:block}.seats{flex-direction:column;align-items:center;gap:16px;margin-top:40px;display:flex}.seats__ring{border:1px solid var(--olive-300);width:150px;height:150px;box-shadow:inset 0 0 0 8px var(--white), inset 0 0 0 9px var(--beige-300);background:var(--beige-100);border-radius:50%;place-items:center;display:grid}.seats__number{font-family:var(--font-heading);color:var(--olive-700);font-size:3.8rem;line-height:1}.seats__label{letter-spacing:.28em;text-transform:uppercase;color:var(--black);margin:0;font-size:.72rem}.scratch-wrap{width:100%;margin-top:36px;position:relative}.scratch{aspect-ratio:3/2;background:var(--white);border-radius:18px;width:min(100%,340px);margin:0 auto;position:relative;overflow:hidden;box-shadow:0 24px 48px -24px #14141459,0 0 0 1px #1414140f}.scratch.is-revealed{animation:1.4s ease-out cardGlow}.scratch__content{background:radial-gradient(circle at 50% 0%, var(--white), var(--beige-100));justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.scratch__canvas{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;width:100%;height:100%;transition:opacity .9s ease, transform .9s var(--ease-out);position:absolute;inset:0}.scratch__canvas:active{cursor:grabbing}.scratch__canvas:focus-visible{outline:2px solid var(--olive-300);outline-offset:-4px}.scratch__canvas.is-cleared{opacity:0;pointer-events:none;transform:scale(1.06)}.scratch__hint{pointer-events:none;background:#faf7f0e6;border-radius:50%;width:26px;height:26px;margin-left:-13px;animation:2.4s ease-in-out infinite hintSwipe;position:absolute;bottom:20%;left:50%;box-shadow:0 0 0 7px #faf7f038}.date-card{color:var(--black);flex-direction:column;align-items:center;gap:10px;display:flex}.date-card__weekday{letter-spacing:.35em;text-transform:uppercase;color:var(--olive-600);font-size:.72rem;font-weight:500}.date-card__main{align-items:center;gap:14px;display:flex}.date-card__side{border-block:1px solid var(--black);letter-spacing:.18em;text-transform:uppercase;min-width:64px;padding:6px 0;font-size:.7rem}.date-card__day{font-family:var(--font-heading);color:var(--olive-700);font-size:3.6rem;font-weight:500;line-height:1}.date-card__time{font-family:var(--font-heading);font-size:1.3rem;font-style:italic}.date-after{width:100%;animation:fadeUp .9s .3s var(--ease-out) both;margin-top:40px}.celebration{pointer-events:none;position:absolute;inset:0}.petal{width:var(--size);height:calc(var(--size) * .55);background:var(--color);opacity:0;animation:1.8s cubic-bezier(.15,.85,.35,1) forwards petal;animation-delay:var(--delay);border-radius:0 100%;position:absolute;top:50%;left:50%;box-shadow:0 2px 4px #14141414}.countdown{grid-template-columns:repeat(4,1fr);gap:10px;width:min(100%,340px);margin:0 auto;display:grid}.countdown-item{background:var(--white);border-radius:14px;flex-direction:column;align-items:center;padding:14px 4px;display:flex;box-shadow:0 10px 24px -18px #14141466}.countdown-value{font-family:var(--font-heading);font-variant-numeric:tabular-nums;color:var(--olive-700);font-size:1.9rem;line-height:1}.countdown-label{letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);margin-top:6px;font-size:.6rem}.location-name{font-family:var(--font-heading);color:var(--olive-700);margin-top:28px;font-size:1.6rem;font-weight:500}.location-address{color:var(--text-muted);margin:6px 0 0}.location-map{aspect-ratio:4/3;border:1px solid var(--beige-300);width:100%;max-width:520px;box-shadow:var(--shadow);background:var(--beige-200);border-radius:20px;margin:28px auto;overflow:hidden}.location-map iframe{filter:grayscale(.35)sepia(.2)saturate(.9);border:0;width:100%;height:100%;display:block}.dress-block{flex-direction:column;align-items:center;width:100%;margin-top:40px;display:flex}.dress-block+.dress-block{border-top:1px solid #1414141a;max-width:320px;padding-top:40px}.dress-block__label{letter-spacing:.3em;text-transform:uppercase;color:var(--olive-600);margin:0;font-size:.7rem;font-weight:500}.dress-block__text{max-width:28ch;font-family:var(--font-heading);color:var(--text-muted);margin:18px 0 0;font-size:1.15rem;font-style:italic}.swatches{flex-wrap:wrap;justify-content:center;gap:16px;margin:20px 0 0;padding:0;list-style:none;display:flex}.swatch{background:var(--swatch);width:52px;height:52px;box-shadow:0 0 0 4px var(--white), 0 0 0 5px #14141429, 0 12px 20px -12px #14141473;border-radius:50%;position:relative}.is-visible .swatch{animation:swatchIn .7s var(--ease-out) both;animation-delay:calc(var(--i) * .1s + .25s)}.swatch--reserved:after{content:"";background:var(--black);height:1.5px;position:absolute;top:50%;left:-7px;right:-7px;transform:rotate(-45deg)}@keyframes swatchIn{0%{opacity:0;transform:translateY(14px)scale(.6)}to{opacity:1;transform:none}}.rsvp-wrap{width:100%}.rsvp-deadline{color:#faf7f0bf;margin:0;font-size:.85rem;line-height:1.5}.rsvp-deadline--banner{text-align:center;border:1px solid #faf7f033;border-radius:12px;padding:12px 16px}.rsvp-deadline strong{color:var(--white);font-weight:500}.rsvp{text-align:left;flex-direction:column;gap:28px;width:min(100%,420px);margin:36px auto 0;display:flex}.rsvp-choice{grid-template-columns:1fr 1fr;gap:12px;display:grid}.rsvp-option{color:var(--beige-100);text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .35s ease, border-color .35s ease, color .35s ease, transform .35s var(--ease-out);background:#faf7f00a;border:1px solid #faf7f040;border-radius:18px;flex-direction:column;align-items:center;gap:10px;padding:20px 12px;font-size:.95rem;line-height:1.3;display:flex;position:relative}.rsvp-option input{opacity:0;pointer-events:none;position:absolute}.rsvp-option:has(input:focus-visible){outline:2px solid var(--beige-300);outline-offset:3px}.rsvp-option__icon{border:1px solid;border-radius:50%;place-items:center;width:40px;height:40px;font-size:1rem;transition:background-color .35s,color .35s,border-color .35s;display:grid}.rsvp-option.is-selected{border-color:var(--beige-100);background:var(--beige-100);color:var(--olive-700);transform:translateY(-2px)}.rsvp-option.is-selected .rsvp-option__icon{border-color:var(--olive-700);background:var(--olive-700);color:var(--beige-100)}.rsvp-block{animation:fadeUp .5s var(--ease-out) both;flex-direction:column;align-items:center;gap:12px;display:flex}.rsvp-label{letter-spacing:.24em;text-transform:uppercase;color:var(--olive-100);font-size:.7rem}.stepper{align-items:center;gap:24px;display:flex}.stepper button{width:52px;height:52px;color:var(--beige-100);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .25s ease, transform .25s var(--ease-out), opacity .25s ease;background:0 0;border:1px solid #faf7f066;border-radius:50%;font-size:1.5rem;line-height:1}.stepper button:hover:not(:disabled){background:#faf7f01a}.stepper button:active:not(:disabled){transform:scale(.9)}.stepper button:disabled{opacity:.3;cursor:not-allowed}.stepper button:focus-visible{outline:2px solid var(--beige-300);outline-offset:3px}.stepper output{min-width:2ch;font-family:var(--font-heading);text-align:center;color:var(--white);font-size:3.2rem;line-height:1}.rsvp-hint{color:#faf7f0b3;font-size:.85rem}.rsvp-field{flex-direction:column;gap:10px;display:flex}.rsvp-field textarea{width:100%;min-height:96px;color:var(--white);font:inherit;resize:vertical;background:#faf7f00f;border:1px solid #faf7f040;border-radius:14px;padding:14px 16px;font-size:16px;transition:border-color .3s,background-color .3s}.rsvp-field textarea::placeholder{color:#faf7f073}.rsvp-field textarea:focus{border-color:var(--beige-300);background:#faf7f01a;outline:none}.rsvp-error{color:#f6d5d0;background:#a1403a4d;border-radius:10px;margin:0;padding:10px 14px;font-size:.9rem}.rsvp .inv-btn{width:100%;margin-top:0}.rsvp-done{animation:fadeUp .6s var(--ease-out) both;flex-direction:column;align-items:center;gap:14px;margin-top:36px;display:flex}.rsvp-done__icon{width:72px;height:72px}.rsvp-done__icon circle{fill:none;stroke:var(--beige-300);stroke-width:1.5px;stroke-dasharray:151;stroke-dashoffset:151px;animation:.9s ease-out .1s forwards draw}.rsvp-done__icon path{fill:none;stroke:var(--white);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:34;stroke-dashoffset:34px;animation:.5s ease-out .8s forwards draw}.rsvp-done h3{font-family:var(--font-heading);color:var(--white);font-size:2rem;font-style:italic;font-weight:400}.rsvp-done p{color:#faf7f0cc;max-width:30ch;margin:0 0 8px;line-height:1.6}.inv-footer{background:var(--beige-100);text-align:center;flex-direction:column;align-items:center;padding:80px 24px 64px;display:flex}.inv-footer .inv-ornament{width:120px;margin-bottom:18px}.inv-footer__names{font-family:var(--font-script);color:var(--olive-700);margin:0;font-size:2.6rem;line-height:1.2}.inv-footer__note{letter-spacing:.32em;text-transform:uppercase;color:var(--black);margin:10px 0 0;font-size:.68rem}.inv-loader{background:var(--beige-100);place-items:center;min-height:100svh;display:grid}.inv-loader__branch{width:140px;animation:1.6s ease-in-out infinite pulse}@keyframes heroIn{0%{opacity:0;filter:blur(6px);transform:translateY(24px)}to{opacity:1;filter:blur();transform:none}}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes grow{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes sway{0%{transform:rotate(-2deg)}to{transform:rotate(2.5deg)}}@keyframes scrollLine{0%{transform-origin:top;transform:scaleY(0)}50%{transform-origin:top;transform:scaleY(1)}51%{transform-origin:bottom}to{transform-origin:bottom;transform:scaleY(0)}}@keyframes hintSwipe{0%,to{transform:translate(-70px)}50%{transform:translate(70px)}}@keyframes cardGlow{0%{box-shadow:0 24px 48px -24px #14141459,0 0 #6b744580}to{box-shadow:0 24px 48px -24px #14141459,0 0 0 28px #6b744500}}@keyframes petal{0%{opacity:1;transform:translate(-50%,-50%)rotate(0)scale(.4)}70%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--x)), calc(-50% + var(--y))) rotate(var(--r)) scale(1)}}@keyframes pulse{0%,to{opacity:.35;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}@media (width>=768px){.inv-section{padding:120px 48px}.inv-hero:before{inset:24px}.inv-hero__branch{width:360px}.inv-hero__names{flex-direction:row;align-items:baseline;gap:.25em}.inv-lead{max-width:36ch;font-size:1.4rem}.inv-ornament{width:190px}.seats__ring{width:180px;height:180px}.seats__number{font-size:4.6rem}.scratch{width:440px}.date-card__day{font-size:4.6rem}.date-card__side{min-width:84px;font-size:.8rem}.countdown{gap:14px;width:440px}.countdown-value{font-size:2.4rem}}@media (prefers-reduced-motion:reduce){.reveal,.hero-anim,.inv-hero__scroll{opacity:1;transition:none;animation:none;transform:none}.sway,.scratch__hint,.inv-hero__scroll i,.inv-loader__branch,.petal{animation:none}.olive-stem,.olive-leaf,.olive-fruit{stroke-dashoffset:0!important;animation:none!important}}.inv.is-locked{height:100svh;overflow:hidden}.inv.is-locked .inv-hero *{animation-play-state:paused!important}.envelope-screen{z-index:100;text-align:center;background:radial-gradient(120% 80% at 50% 10%, var(--white) 0%, var(--beige-100) 55%, var(--beige-200) 100%);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}.envelope-screen:before{content:"";pointer-events:none;border:1px solid #1414141f;position:absolute;inset:14px}.envelope-screen.is-leaving{pointer-events:none;animation:screenOut .9s var(--ease-out) forwards}.envelope-screen__branch{pointer-events:none;width:210px;position:absolute}.envelope-screen__branch--top{top:5%;left:-40px;transform:rotate(-168deg)scaleY(-1)}.envelope-screen__branch--bottom{bottom:5%;right:-40px;transform:rotate(12deg)scaleX(-1)}.envelope-screen__inner{z-index:1;flex-direction:column;align-items:center;width:100%;display:flex;position:relative}.envelope-screen__fade{transition:opacity .45s ease, transform .45s var(--ease-out);flex-direction:column;align-items:center;display:flex}.is-opening .envelope-screen__fade,.is-leaving .envelope-screen__fade{opacity:0;transform:translateY(12px)}.es-item{opacity:0;animation:heroIn 1.1s var(--ease-out) forwards;animation-delay:var(--d,0s)}.envelope-screen__to{font-family:var(--font-script);color:var(--olive-700);flex-direction:column;align-items:center;margin:0 0 22px;font-size:2.1rem;line-height:1.15;display:flex}.envelope-screen__to span{font-family:var(--font-body);letter-spacing:.32em;text-transform:uppercase;color:var(--black);margin-bottom:4px;font-size:.66rem}.envelope-screen__btn{animation-name:heroIn,btnBreath;animation-duration:1.1s,2.6s;animation-timing-function:var(--ease-out), ease-in-out;animation-delay:var(--d,0s), 2s;animation-iteration-count:1,infinite;animation-fill-mode:forwards,none}.envelope-screen__note{letter-spacing:.08em;color:var(--text-muted);margin:16px 0 0;font-size:.72rem}.envelope-wrap{margin:34px 0 36px}.envelope{aspect-ratio:3/2;perspective:1200px;cursor:pointer;-webkit-tap-highlight-color:transparent;width:min(80vw,330px);animation:4.5s ease-in-out infinite float;position:relative}.envelope__back{background:#e9dfca;border-radius:6px;position:absolute;inset:0;box-shadow:0 34px 60px -30px #14141480,0 0 0 1px #1414140a}.envelope__letter{z-index:2;background:linear-gradient(var(--white), var(--beige-100));height:90%;transition:transform .95s var(--ease-out) .7s;border-radius:4px;flex-direction:column;align-items:center;padding-top:11%;display:flex;position:absolute;top:5%;left:6%;right:6%;box-shadow:0 2px 8px #14141414}.envelope__letter-eyebrow{letter-spacing:.32em;text-transform:uppercase;color:var(--olive-500);font-size:.55rem}.envelope__letter-names{font-family:var(--font-script);color:var(--olive-700);margin-top:4px;font-size:clamp(1.5rem,7vw,1.9rem);line-height:1.2}.envelope__letter-line{background:var(--black);opacity:.6;width:32px;height:1px;margin-top:8px}.envelope__pocket{z-index:3;clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);background:#f4ecdb;border-radius:6px;position:absolute;inset:0}.envelope__pocket:before{content:"";clip-path:polygon(0 100%,50% 47%,100% 100%);background:linear-gradient(#efe5d1,#e8dcc3);position:absolute;inset:0}.envelope__flap{z-index:4;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;background:linear-gradient(#efe5d2,#e6dac1);height:57%;transition:transform .8s cubic-bezier(.65,0,.35,1) .25s,filter .8s .25s,z-index 0s linear .65s;position:absolute;top:0;left:0;right:0}.is-opening .envelope__flap,.is-leaving .envelope__flap{z-index:1;filter:brightness(.93);transform:rotateX(180deg)}.is-opening .envelope__letter,.is-leaving .envelope__letter{transform:translateY(-56%)}.envelope__seal{z-index:5;width:62px;height:62px;transition:transform .4s var(--ease-out), opacity .35s ease;background:radial-gradient(circle at 35% 30%,#87905e,#535b35 58%,#3b4122);border-radius:50%;place-items:center;margin:-31px 0 0 -31px;animation:2.6s ease-in-out infinite sealPulse;display:grid;position:absolute;top:57%;left:50%;box-shadow:0 0 0 3px #454c2b4d,0 8px 16px -6px #1414148c,inset 0 2px 3px #ffffff40,inset 0 -3px 6px #0000004d}.envelope__seal:before{content:"";border:1px dashed #f2ebdd73;border-radius:50%;position:absolute;inset:7px}.envelope__seal span{font-family:var(--font-heading);white-space:nowrap;color:var(--beige-200);font-size:1rem;font-style:italic;font-weight:500}.is-opening .envelope__seal,.is-leaving .envelope__seal{opacity:0;animation:none;transform:scale(1.3)rotate(-12deg)}.music-toggle{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:50;background:var(--olive-700);width:52px;height:52px;color:var(--beige-100);cursor:pointer;opacity:0;pointer-events:none;-webkit-tap-highlight-color:transparent;transition:opacity .5s ease .4s, transform .6s var(--ease-out) .4s, background-color .3s ease;border:1px solid #faf7f059;border-radius:50%;place-items:center;display:grid;position:fixed;transform:scale(.6)translateY(16px);box-shadow:0 12px 28px -12px #1414148c}.music-toggle.is-visible{opacity:1;pointer-events:auto;transform:none}.music-toggle:hover{background:var(--olive-600)}.music-toggle:focus-visible{outline:2px solid var(--olive-300);outline-offset:3px}.music-toggle__bars{align-items:flex-end;gap:3px;height:16px;display:flex;position:relative}.music-toggle__bars i{background:currentColor;border-radius:2px;width:3px;height:4px;display:block}.music-toggle.is-playing .music-toggle__bars i{animation:.9s ease-in-out infinite alternate equalizer}.music-toggle.is-playing .music-toggle__bars i:nth-child(2){animation-duration:.7s;animation-delay:-.3s}.music-toggle.is-playing .music-toggle__bars i:nth-child(3){animation-duration:1s;animation-delay:-.6s}.music-toggle.is-playing .music-toggle__bars i:nth-child(4){animation-duration:.8s;animation-delay:-.15s}.music-toggle:not(.is-playing) .music-toggle__bars:after{content:"";background:currentColor;height:1.5px;position:absolute;top:50%;left:-4px;right:-4px;transform:rotate(-35deg)}@keyframes screenOut{to{opacity:0;filter:blur(4px);transform:scale(1.06)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes sealPulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes btnBreath{0%,to{box-shadow:0 0 #454c2b59}50%{box-shadow:0 0 0 10px #454c2b00}}@keyframes equalizer{0%{height:3px}to{height:16px}}@media (width>=768px){.envelope{width:400px}.envelope__seal{width:72px;height:72px;margin:-36px 0 0 -36px}.envelope-screen__branch{width:320px}.envelope-screen:before{inset:24px}}@media (prefers-reduced-motion:reduce){.es-item,.envelope,.envelope__seal,.envelope-screen__btn,.music-toggle__bars i{opacity:1;animation:none!important}.envelope-screen,.envelope-screen *{transition-duration:.01ms!important}}
