.card{--ease-out:cubic-bezier(0.22,1,0.36,1);--ease-soft:cubic-bezier(0.4,0,0.2,1);--dur-fast:300ms;--dur-med:700ms;--dur-slow:1200ms;position:relative;min-height:100dvh;background:var(--c-bg);color:var(--c-ink);font-family:var(--f-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}.card--preview{height:100%;min-height:0;overflow:hidden}.card--preview .card__page{height:100%;overflow-y:auto;scrollbar-width:none}.card--preview .card__page::-webkit-scrollbar{display:none}.card--preview .card__decor{position:absolute}.card__status{display:flex;min-height:100dvh;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding-top:40px;padding-bottom:40px}.card__status .card__heading{margin:8px 0 0;font-size:32px}.card__status .card__btn-row{margin-top:24px}.card :focus-visible{outline:2px solid var(--c-ink);outline-offset:2px}.card:before{content:"";position:fixed;inset:0;z-index:0;background:var(--floral-bg,var(--c-bg));pointer-events:none}.card--preview:before{position:absolute}.card:where([data-floral=peony_corners]){--floral-bg:linear-gradient(180deg,var(--c-bg),color-mix(in srgb,var(--c-bg) 68%,var(--c-soft)))}.card:where([data-floral=evening_garden]){--floral-bg:radial-gradient(ellipse 70% 45% at 50% 42%,color-mix(in srgb,#6b4657 35%,transparent),transparent 70%),radial-gradient(circle at 50% 30%,#4a3040,#2b1a22 85%)}.card:where([data-floral=wreath]){--floral-bg:radial-gradient(ellipse 48% 32% at 50% 46%,color-mix(in srgb,var(--c-soft) 75%,transparent),transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--c-bg) 92%,white),var(--c-bg))}.card:where([data-floral=wisteria]){--floral-bg:linear-gradient(180deg,color-mix(in srgb,var(--c-bg) 88%,#c9a0c4),var(--c-bg) 60%)}.card:where([data-floral=line_art]){--floral-bg:radial-gradient(circle at 50% 38%,color-mix(in srgb,var(--c-bg) 88%,white),var(--c-bg) 75%)}.card__bg,.card__bg-fade{position:fixed;inset:0;z-index:0;pointer-events:none}.card__bg{background-size:cover;background-position:top;filter:blur(2px) saturate(.85);opacity:.32;transform:scale(1.04)}.card__bg-fade{background:linear-gradient(to bottom,transparent 0,var(--c-bg) 640px)}.card__decor{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}.card__blob{position:absolute;border-radius:50%;background:var(--c-soft);opacity:.7}.card__blob--a{width:320px;height:260px;top:-130px;right:-150px}.card__blob--b{width:260px;height:220px;top:42%;left:-170px;opacity:.6}.card__blob--c{width:360px;height:300px;bottom:-170px;right:-190px;opacity:.8}.card--preview .card__bg,.card--preview .card__bg-fade,.card--preview .card__cover,.card--preview .card__music,.card--preview .card__petals{position:absolute}.card__page{position:relative;z-index:1;max-width:390px;margin:0 auto;padding:0 32px 48px;text-align:center}.card__header{position:relative;padding:56px 0 40px}.card__header-inner{position:relative;z-index:1}.card__section{padding:36px 0 44px}.card__closing{padding:36px 0 12px}.card__sprig{display:block;margin:0 auto}.card__cluster{position:absolute;z-index:0;overflow:visible;opacity:.9;pointer-events:none}.card__cluster--tl{top:-10px;left:-32px}.card__cluster--br{bottom:-10px;right:-32px}.card__cluster--top{top:-14px;left:50%;translate:-50% 0}.card__cluster--bottom{bottom:-14px;left:50%;translate:-50% 0}.card__eyebrow{margin:0;font-size:13px;letter-spacing:.1em;color:var(--c-accent-text)}.card__heading{margin:0 0 12px;font-style:italic;font-size:26px;color:var(--c-accent-text)}.card__display,.card__heading{font-family:var(--f-display);font-weight:500;line-height:1.2}.card__body{margin:0;font-size:15px}.card__muted{opacity:.78}.card__parents{margin:14px 0 0;font-size:20px}.card__opening{margin:16px 0 0}.card__arch-wrap{position:relative;margin-top:18px;padding-top:62px}.card__arch{position:absolute;top:0;left:50%;width:300px;max-width:100%;height:auto;transform:translateX(-50%)}.card__names{position:relative;margin:0;padding:0 34px;display:flex;flex-direction:column;align-items:center;gap:4px;font-family:var(--f-display);font-style:italic;font-weight:500;font-size:clamp(2.4rem,11vw,3.25rem);line-height:1.1}.card__name{display:block}.card__patronym{display:block;margin-top:2px;font-family:var(--f-body);font-style:normal;font-weight:400;font-size:13px;line-height:1.3;opacity:.8}.card__amp{display:block;margin:6px 0;font-size:34px;line-height:1;color:var(--c-accent-text)}.card__weekday{margin:0}.card__date{margin:4px 0 6px;font-size:40px;line-height:1.1}.card__countdown{min-height:96px;margin:26px 0 24px}.card__countdown--hidden{visibility:hidden}.card__countdown-main{margin:0;font-family:var(--f-display);font-style:italic;font-weight:500;line-height:1}.card__countdown-num{font-size:56px;color:var(--c-accent-text)}.card__countdown-unit{margin-left:4px;font-size:28px}.card__countdown-sub{margin:8px 0 0;font-size:13px;opacity:.78}.card__countdown-state{margin:0;font-family:var(--f-display);font-style:italic;font-weight:500;font-size:34px;line-height:1.2;color:var(--c-accent-text)}.card__tick{display:inline-block;text-align:center;animation:card-tick-in .15s ease-out both}@keyframes card-tick-in{0%{opacity:0}to{opacity:1}}.card__btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:12px 22px;border-radius:999px;border:1px solid transparent;font:600 14px/1.2 var(--f-body);color:var(--c-ink);text-decoration:none;cursor:pointer;transition:filter .15s,transform 80ms}.card__btn:hover{filter:brightness(.96)}.card__btn:active{transform:translateY(1px)}.card__btn:disabled{opacity:.6;cursor:default}.card__btn--filled{background:var(--c-accent-text);border-color:var(--c-accent-text);color:var(--c-bg)}.card__btn--outlined{background:transparent;border-color:var(--c-accent)}.card__btn-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px}.card__btn--half{flex:1 1 0;min-width:0;padding-left:12px;padding-right:12px}.card__pill{display:inline-flex;align-items:center;padding:7px 14px;border-radius:999px;border:1px solid var(--c-soft);background:color-mix(in srgb,var(--c-soft) 45%,transparent);font-size:12px;font-weight:600;color:var(--c-ink);text-decoration:none;white-space:nowrap}.card__venue{margin:0 0 8px;font-size:24px}.card__address{margin:0;white-space:pre-line}.card__schedule{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:1fr 6px 1fr;column-gap:14px;row-gap:14px;align-items:baseline}.card__schedule>li{display:contents}.card__schedule-time{text-align:right;font-family:var(--f-display);font-weight:500;font-size:17px;line-height:1.3;color:var(--c-accent-text)}.card__schedule-dot{width:6px;height:6px;border-radius:50%;background:var(--c-leaf);align-self:center}.card__schedule-label{text-align:left;font-size:14px;line-height:1.45}.card__form{margin-top:20px;text-align:left}.card__label{display:block;margin:16px 4px 6px;font-size:13px}.card__hint{margin:8px 4px 0;font-size:12px;opacity:.78}.card__select-wrap{position:relative}.card__field{width:100%;appearance:none;-webkit-appearance:none;border-radius:12px;border:1px solid color-mix(in srgb,var(--c-accent) 60%,transparent);background:color-mix(in srgb,var(--c-soft) 55%,transparent);padding:13px 44px 13px 16px;font:15px/1.3 var(--f-body);color:var(--c-ink)}.card__field:disabled{opacity:.6}.card__select-icon{position:absolute;right:14px;top:50%;width:16px;height:16px;transform:translateY(-50%);pointer-events:none;color:var(--c-ink)}.card__select-icon--done{color:var(--c-accent-text)}.card__tick-path{stroke-dasharray:1;animation:card-draw .4s var(--ease-out) both}@keyframes card-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.card__invite{margin:18px 4px 0;font-family:var(--f-display);font-style:italic;font-weight:500;font-size:18px}.card__notice{margin:14px 0 0;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.45;text-align:left;animation:card-notice-in var(--dur-fast) var(--ease-out) both}@keyframes card-notice-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.card__notice strong{font-weight:600}.card__notice small{display:block;margin-top:2px;font-size:13px;opacity:.8}.card__notice--soft{background:color-mix(in srgb,var(--c-soft) 60%,transparent)}.card__notice--sage{background:color-mix(in srgb,var(--c-leaf) 30%,transparent)}.card__notice--rose{background:color-mix(in srgb,var(--c-accent) 24%,transparent)}.card__contacts{list-style:none;margin:6px 0 0;padding:0}.card__contact{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;text-align:left}.card__contact-name{margin:0;font-weight:600;font-size:15px}.card__contact-rel{margin:0;font-size:12px;opacity:.78}.card__contact-actions{display:flex;gap:6px;flex-shrink:0}.card__closing-text{margin:18px 0 0;font-family:var(--f-display);font-style:italic;font-weight:500;font-size:20px;line-height:1.4}.card__hashtag{margin-top:16px}.card__cover{position:fixed;inset:0;z-index:30;color:var(--c-ink);text-align:center;cursor:pointer;overflow:hidden}.card__cover-face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--floral-bg,var(--c-bg));overflow:hidden}.card__floral-cover{width:100%;height:100%}.card__cover-decor,.card__floral-cover{position:absolute;inset:0;pointer-events:none}.card__cover-decor{overflow:hidden}.card__firefly{width:4px;height:4px;background:#f3d8b0;box-shadow:0 0 10px 4px color-mix(in srgb,#f3d8b0 55%,transparent)}.card__firefly,.card__wash{position:absolute;border-radius:50%}.card__wash{background:var(--wash);filter:blur(70px);opacity:.55;translate:-50% -50%}.card__cover-inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:326px}.card:where([data-floral=watercolor]) .card__cover-inner{padding:28px 24px;border-radius:18px;background:color-mix(in srgb,white 28%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.card__cover-names{margin:8px 0;display:flex;flex-direction:column;align-items:center;font-style:italic;font-size:clamp(2.2rem,10vw,3rem);line-height:1.1}.card__cover-date,.card__cover-names{font-family:var(--f-display);font-weight:500}.card__cover-date{margin:0 0 18px;font-size:20px}.card__cover-hint{margin:0;font-size:13px;opacity:.78}.card__cover-half{position:absolute;inset:0}.card__cover-half--top{clip-path:inset(0 0 50% 0)}.card__cover-half--bottom{clip-path:inset(50% 0 0 0)}@media (prefers-reduced-motion:no-preference){.card__cover-inner>*{animation:card-rise .7s cubic-bezier(.2,.7,.2,1) both}.card__cover-inner>:nth-child(2){animation-delay:.1s}.card__cover-inner>:nth-child(3){animation-delay:.2s}.card__cover-inner>:nth-child(4){animation-delay:.3s}.card__cover-inner>:nth-child(5){animation-delay:.4s}@keyframes card-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.card__cover-btn{animation:card-rise .7s cubic-bezier(.2,.7,.2,1) both,card-breath 2.5s ease-out .7s infinite}@keyframes card-breath{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--c-accent) 45%,transparent)}to{box-shadow:0 0 0 14px transparent}}}@media (prefers-reduced-motion:no-preference){.card__cover-half{transition:transform var(--dur-slow) var(--ease-soft) .1s,opacity .4s ease .9s}.card:where([data-entrance=petal_fall]) .card__cover{transition:opacity .7s var(--ease-soft) .1s}.card:where([data-entrance=fade]) .card__cover{transition:opacity .6s var(--ease-soft)}.card:where([data-entrance=slide_up]) .card__cover{transition:transform .9s var(--ease-soft);box-shadow:0 12px 24px color-mix(in srgb,black 18%,transparent)}.card:where([data-entrance=slide_left]) .card__cover{transition:transform .8s var(--ease-soft)}.card:where([data-entrance=fade]:not([data-phase=cover])) .card__cover,.card:where([data-entrance=petal_fall]:not([data-phase=cover])) .card__cover{opacity:0;pointer-events:none}.card:where([data-entrance=slide_up]:not([data-phase=cover])) .card__cover{transform:translateY(-100%);pointer-events:none}.card:where([data-entrance=slide_left]:not([data-phase=cover])) .card__cover{transform:translateX(-100%);pointer-events:none}.card:where(:not([data-phase=cover])) .card__cover-half--top{transform:translateY(-50%);opacity:0}.card:where(:not([data-phase=cover])) .card__cover-half--bottom{transform:translateY(50%);opacity:0}.card:where(:not([data-phase=cover])) .card__cover{pointer-events:none}.card:where([data-entrance=petal_fall]:not([data-phase=cover])) .card__cover .bloom,.card:where([data-entrance=petal_fall]:not([data-phase=cover])) .card__cover .bud{animation:card-scatter .4s var(--ease-soft) both;animation-delay:min(calc(var(--i, 0) * 12ms),.4s)}@keyframes card-scatter{to{transform:scale(0);opacity:0}}.card__body{transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}.card:where([data-entrance=petal_fall][data-phase=cover]) .card__body{opacity:0;transform:scale(1.03)}.card:where([data-entrance=slide_up]) .card__body{transition-delay:.2s}.card:where([data-entrance=slide_up][data-phase=cover]) .card__body{opacity:0;transform:translateY(40px)}.card:where([data-entrance=slide_left]) .card__body{transition:transform .8s var(--ease-soft)}.card:where([data-entrance=slide_left][data-phase=cover]) .card__body{transform:translateX(30%)}.card__cluster{transition:opacity var(--dur-slow) var(--ease-out)}.card:where(:is([data-entrance=curtain],[data-entrance=slide_up]):is([data-phase=cover],[data-phase=opening])) .card__cluster{opacity:0}.card:where([data-entrance=petal_fall]:is([data-phase=cover],[data-phase=opening])) .card__cluster [data-wind]{transform:scale(0)}.card:where([data-entrance=petal_fall][data-phase=settling]) .card__cluster [data-wind]{animation:card-regrow .5s var(--ease-out) both;animation-delay:min(calc(var(--i, 0) * 60ms),.9s)}@keyframes card-regrow{0%{transform:scale(0)}70%{transform:scale(1.06)}to{transform:scale(1)}}.card:where([data-phase]) .card__arch-stem{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset var(--dur-slow) var(--ease-out)}.card:where([data-phase]) .card__arch-leaf{transform:scale(0);transform-box:fill-box;transform-origin:50% 100%}.card:where([data-phase]) .card__arch-bud{transform:scale(0);transform-box:fill-box;transform-origin:50% 50%;transition:transform .4s var(--ease-out) 1.1s}.card:where([data-phase]) .card__names{opacity:0;transform:translateY(12px);transition:opacity var(--dur-med) var(--ease-out) 1s,transform var(--dur-med) var(--ease-out) 1s}.card:where([data-phase]) .card__names .card__amp{opacity:0;transition:opacity var(--dur-med) var(--ease-out) 1.15s}.card:where([data-phase]) .card__header-inner>.card__eyebrow,.card:where([data-phase]) .card__opening,.card:where([data-phase]) .card__parents{opacity:0;transition:opacity var(--dur-med) var(--ease-out) .3s}.card.is-grown .card__arch-stem{stroke-dashoffset:0}.card.is-grown .card__arch-leaf{animation:card-pop .5s var(--ease-out) both;animation-delay:calc(.3s + var(--i, 0) * 70ms)}.card.is-grown .card__arch-bud{transform:scale(1)}.card.is-grown .card__names{opacity:1;transform:none}.card.is-grown .card__header-inner>.card__eyebrow,.card.is-grown .card__names .card__amp,.card.is-grown .card__parents{opacity:1}.card.is-grown .card__opening{opacity:.78}@keyframes card-pop{0%{transform:scale(0)}70%{transform:scale(1.08)}to{transform:scale(1)}}}@media (prefers-reduced-motion:no-preference){.card__reveal .card__section{transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.card:where([data-reveal=fade_up]) .card__reveal .card__section{opacity:0;transform:translateY(16px)}.card:where([data-reveal=slide_in]) .card__reveal .card__section{opacity:0;transform:translateX(calc(32px * var(--side, 1)))}.card:where([data-reveal=bloom_in]) .card__reveal .card__section{opacity:0;transform:scale(.96);transition-delay:.3s}.card__reveal.is-visible .card__section{opacity:1;transform:none}.card:where([data-reveal]:not([data-reveal=none])) .card__row>*{opacity:0;transition:opacity .5s var(--ease-out);transition-delay:calc(.25s + var(--i, 0) * 60ms)}.card__reveal.is-visible .card__row>*{opacity:1}.card:where([data-reveal]:not([data-reveal=none])) .card__reveal .card__sprig-stem{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .6s var(--ease-out)}.card:where([data-reveal]:not([data-reveal=none])) .card__reveal .card__sprig-leaf{transform:scale(0);transform-box:fill-box;transform-origin:50% 50%}.card:where([data-reveal]:not([data-reveal=none])) .card__reveal .card__sprig-bud{transform:scale(0);transform-box:fill-box;transform-origin:50% 50%;transition:transform .3s var(--ease-out) .5s}.card__reveal.is-visible .card__sprig-stem{stroke-dashoffset:0}.card__reveal.is-visible .card__sprig-leaf{animation:card-pop .3s var(--ease-out) both;animation-delay:calc(.15s + var(--i, 0) * 50ms)}.card__reveal.is-visible .card__sprig-bud{transform:scale(1)}[data-wind]{transform-box:fill-box}[data-wind=vine]{--amp:calc(2.5deg * var(--wind-k, 1));--gust-amp:calc(6deg * var(--wind-k, 1))}[data-wind=leaf]{--amp:calc(4deg * var(--wind-k, 1));--gust-amp:calc(9deg * var(--wind-k, 1))}[data-wind=bloom]{--amp:calc(1.5deg * var(--wind-k, 1));--gust-amp:calc(3deg * var(--wind-k, 1))}}@media (prefers-reduced-motion:no-preference){.card:where([data-phase=cover]:not([data-wind-preset=off])) .card__cover [data-wind],.card:where([data-phase=live]:not([data-wind-preset=off])) [data-wind]{animation:card-sway var(--sway-dur,6s) var(--sway-delay,0s) ease-in-out infinite alternate}.card:where([data-phase=cover]:not([data-wind-preset=off])) .card__cover [data-wind=bloom],.card:where([data-phase=live]:not([data-wind-preset=off])) [data-wind=bloom]{animation-name:card-sway-bloom}.card.is-gust:where([data-phase=cover]:not([data-wind-preset=off])) .card__cover [data-wind],.card.is-gust:where([data-phase=live]:not([data-wind-preset=off])) [data-wind]{animation:card-sway var(--sway-dur,6s) var(--sway-delay,0s) ease-in-out infinite alternate,card-gust 2.2s var(--gust-delay,0s) cubic-bezier(.2,.7,.2,1) 1}.card.is-gust:where([data-phase=cover]:not([data-wind-preset=off])) .card__cover [data-wind=bloom],.card.is-gust:where([data-phase=live]:not([data-wind-preset=off])) [data-wind=bloom]{animation-name:card-sway-bloom,card-gust}@keyframes card-sway{0%{transform:rotate(calc(var(--amp) * -1))}to{transform:rotate(var(--amp))}}@keyframes card-sway-bloom{0%{transform:rotate(calc(var(--amp) * -1)) translateY(-1.5px)}to{transform:rotate(var(--amp)) translateY(1.5px)}}@keyframes card-gust{0%{translate:0 0;rotate:0deg}30%{translate:6px 0;rotate:var(--gust-amp)}60%{translate:-2px 0;rotate:calc(var(--gust-amp) * -.35)}to{translate:0 0;rotate:0deg}}}.card__petals{position:fixed;inset:0;overflow:hidden;pointer-events:none}.card__petals--front{z-index:40}.card__petals--back{z-index:0}.card__petal{position:absolute;left:var(--x);top:var(--y,-5%);width:14px;height:100%;color:var(--c-soft);animation:card-petal-fall var(--dur) linear var(--delay,0s) both;will-change:transform}.card__petal--accent{color:var(--c-accent)}.card__petal i{display:block}.card__petal svg{display:block;fill:currentColor;animation:card-petal-spin var(--dur) linear var(--delay,0s) both}.card__petal-sway{animation:card-petal-sway 2.2s ease-in-out infinite alternate}@keyframes card-petal-fall{0%{transform:translate(0);opacity:0}8%{opacity:var(--petal-o)}to{transform:translate(var(--petal-dx),100%);opacity:0}}@keyframes card-petal-spin{0%{transform:rotate(0deg)}to{transform:rotate(var(--petal-rot))}}@keyframes card-petal-sway{0%{transform:translateX(-14px)}to{transform:translateX(14px)}}.card__lang{position:fixed;top:14px;right:14px;z-index:35;display:inline-flex;padding:3px;border-radius:999px;border:1px solid color-mix(in srgb,var(--c-accent) 60%,transparent);background:color-mix(in srgb,var(--c-bg) 85%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.card--preview .card__lang{position:absolute}.card__lang-btn{min-width:34px;height:26px;padding:0 8px;border:0;border-radius:999px;background:transparent;font:600 12px/1 var(--f-body);letter-spacing:.04em;color:var(--c-ink);opacity:.7;cursor:pointer}.card__lang-btn--active{background:var(--c-accent-text);color:var(--c-bg);opacity:1}.card__music{position:fixed;right:16px;bottom:16px;z-index:20;width:44px;height:44px;border-radius:50%;border:1px solid var(--c-accent);background:var(--c-bg);color:var(--c-ink);display:grid;place-items:center;font-size:15px;line-height:1;cursor:pointer}.card__music--playing span{display:inline-block;animation:card-rock 1.6s ease-in-out infinite alternate}@keyframes card-rock{0%{transform:rotate(-8deg)}to{transform:rotate(8deg)}}@media (prefers-reduced-motion:reduce){.card .card__music--playing span,.card .card__notice,.card .card__tick,.card .card__tick-path{animation:none}.card .card__btn{transition:none}.card .card__cover{transition:opacity .2s ease}.card:not([data-phase=cover]) .card__cover{opacity:0;pointer-events:none}.card__petals{display:none}}