:root{color:#332b2b;background:#f3f0ea;font-family:ZCOOL KuaiLe,PingFang SC,Helvetica Neue,sans-serif;--font-serif: "Ma Shan Zheng", "STKaiti", "KaiTi", "Songti SC", serif;--font-display: "ZCOOL KuaiLe", "STKaiti", "KaiTi", "Baskerville", serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}html{touch-action:pan-y;-webkit-text-size-adjust:100%}body{min-width:320px;overscroll-behavior-y:none}.invite-page{min-height:100vh;position:relative;padding:14px 10px 96px;display:flex;justify-content:center}.invite-page__bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;background:linear-gradient(180deg,#fff3,#f5f0e8c2),url(/photos/wedding-08.jpg) center/cover no-repeat;filter:blur(5px) saturate(.92);transform:scale(1.06)}.invite-page__loop{position:relative;z-index:1;width:min(100%,375px);display:flex;flex-direction:column;gap:0;overflow:hidden;background:#fffdf9e0;border:1px solid rgba(255,255,255,.72);border-radius:22px;box-shadow:0 18px 50px #5d4d4126;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.invite-page__phone-shell{width:100%;display:flex;flex-direction:column;gap:0}.card{background:transparent;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.hero-card{min-height:auto;aspect-ratio:2 / 3;padding:0;display:flex;flex-direction:column;justify-content:flex-end;text-align:center;position:relative;overflow:hidden}.hero-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url(/photos/preview/hero-invite.jpg) center/100% 100% no-repeat,#f5eee4;pointer-events:none}.hero-card__badge,.hero-card__eyebrow,.hero-card__names,.hero-card__poem,.hero-card__title{position:relative;z-index:1}.hero-card__badge{display:inline-block;margin:0 auto 14px;padding:8px 18px 7px;border-radius:999px;background:#ffffffc7;color:#9b704a;font-size:11px;letter-spacing:.28em;text-transform:uppercase;box-shadow:0 10px 28px #6b53451f}.hero-card__badge,.hero-card__eyebrow,.hero-card__names,.hero-card__divider,.hero-card__poem,.hero-card__title{display:none}.hero-card__eyebrow,.section-card__tag{margin:0;color:#a77c56;font-size:12px;font-weight:500;letter-spacing:.22em;text-transform:uppercase}.hero-card__names{margin:14px 0 0;font-family:var(--font-display);font-size:32px;line-height:1;color:#3b2a27;font-weight:700;text-shadow:0 2px 18px rgba(255,255,255,.9)}.hero-card__divider{position:relative;z-index:1;width:86px;height:1px;margin:18px auto 0;background:linear-gradient(90deg,transparent,#b99462,transparent)}.hero-card__poem{margin:12px auto 0;max-width:270px;color:#8f6d5c;font-family:var(--font-serif);font-size:13px;line-height:1.85;letter-spacing:.06em;text-shadow:0 2px 14px rgba(255,255,255,.9)}.hero-card__title{margin:10px auto 0;max-width:250px;font-size:16px;line-height:1.8;color:#5f4d49;font-family:var(--font-serif);letter-spacing:.08em}.section-card{padding:34px 20px}.section-card__title{margin:8px 0 0;font-size:22px;line-height:1.18;color:#3b2e2a;font-family:var(--font-serif);font-weight:600;letter-spacing:.06em}.section-card__copy{margin:14px 0 18px;color:#6a5750;font-size:14px;line-height:1.9;letter-spacing:.03em}.section-card__note{margin:10px 0 0;max-width:290px;color:#9b7967;font-family:var(--font-serif);font-size:12px;line-height:1.85;letter-spacing:.05em}.editorial-photo{margin-top:28px}.editorial-photo--split{min-height:330px;display:grid;grid-template-columns:.86fr 1.14fr;align-items:center;gap:18px;padding:12px 0 18px}.editorial-photo__verse{display:grid;gap:10px;color:#4f4540;font-family:var(--font-serif);font-size:13px;line-height:1.95;letter-spacing:.08em;padding:22px 0 18px}.editorial-photo__image{display:block;width:100%;object-fit:cover}.editorial-photo__image--portrait{height:318px;box-shadow:0 18px 38px #4a36301f}.editorial-photo--oval{display:grid;justify-items:center;gap:22px;padding:8px 0 18px}.editorial-photo__image--oval{width:min(100%,320px);height:430px;border-radius:50%;box-shadow:none}.editorial-photo__caption{margin:0;color:#4f4540;font-family:var(--font-serif);font-size:13px;line-height:2.2;letter-spacing:.12em;text-align:center}.time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.time-grid__item{padding:16px;border-radius:16px;background:linear-gradient(180deg,#fffc,#fff8f1b8);border:1px solid rgba(226,207,187,.5)}.time-grid__item strong{display:block;margin-top:8px;font-size:18px;color:#3e302c;font-family:var(--font-serif);font-weight:600;line-height:1.45}.time-grid__item--full{grid-column:1 / -1}.time-grid__label{display:block;font-size:12px;color:#a37d58;letter-spacing:.12em}.countdown-panel{margin-top:14px;padding:16px;border-radius:18px;background:#fffaf3bd;border:1px solid rgba(226,207,187,.48)}.countdown-panel__label{display:block;color:#a37d58;font-size:12px;letter-spacing:.14em}.countdown-panel__items{margin-top:10px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.countdown-panel__items span{display:grid;justify-items:center;gap:2px;color:#7d6256;font-size:12px;font-family:var(--font-serif)}.countdown-panel__items strong{color:#3d2d2a;font-family:var(--font-display);font-size:22px;line-height:1}.countdown-panel__thanks,.countdown-panel__thanks-sub{margin:0;text-align:center}.countdown-panel__thanks{color:#b98550;font-family:var(--font-serif);font-size:21px;font-weight:600;letter-spacing:.06em}.countdown-panel__thanks-sub{margin-top:12px;color:#9b7967;font-family:var(--font-serif);font-size:15px;letter-spacing:.05em}.mini-calendar{margin-top:16px;padding:16px;border-radius:18px;background:linear-gradient(180deg,#fffdf7,#fff8ef);border:1px solid rgba(226,207,187,.52)}.mini-calendar__header,.mini-calendar__weekdays,.mini-calendar__days{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.mini-calendar__header{grid-template-columns:1fr auto;margin-bottom:12px;color:#8f6f4e;font-family:var(--font-display);font-size:15px}.mini-calendar__weekdays span,.mini-calendar__day{text-align:center;font-size:12px;font-family:var(--font-serif)}.mini-calendar__days{margin-top:12px}.mini-calendar__day{padding:10px 0;border-radius:12px;background:#fff;color:#63524a}.mini-calendar__day--muted{color:#ccbba8}.mini-calendar__day--active{background:linear-gradient(135deg,#d9b069,#f1dca7);color:#fff;font-weight:700;box-shadow:0 10px 22px #a87c3947}.map-frame{position:relative;display:block;width:100%;height:180px;border-radius:18px;overflow:hidden;background:#f7f2ef;border:1px solid rgba(226,207,187,.5);text-decoration:none}.map-frame img,.map-frame iframe{width:100%;height:100%;display:block;border:0}.map-frame iframe{pointer-events:none}.map-frame--amap{height:260px}.map-frame__canvas{width:100%;height:100%}.map-frame__error{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;display:grid;place-items:center;padding:24px;background:#f7f2ef;color:#7a6860;font-size:14px;text-align:center}.map-frame__brand{position:absolute;left:14px;bottom:12px;padding:5px 10px;border-radius:999px;background:#ffffffdb;color:#3d4a55;font-size:13px;font-weight:700;box-shadow:0 6px 18px #463c301f}.map-frame__pin{position:absolute;right:14px;bottom:12px;width:12px;height:12px;border-radius:50%;background:#c43b34;color:transparent;font-size:0;border:3px solid rgba(255,255,255,.92);box-shadow:0 6px 18px #463c301f}.amap-destination-dot{position:relative;display:block;width:18px;height:18px;border-radius:50%;background:#c43b34;border:4px solid rgba(255,255,255,.95);box-shadow:0 4px 14px #732b2347}.amap-destination-dot:after{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px;border-radius:50%;border:1px solid rgba(196,59,52,.28)}.primary-link,.contact-pill,.modal-button{display:inline-flex;justify-content:center;align-items:center;border-radius:999px;text-decoration:none;transition:opacity .2s ease,box-shadow .2s ease,filter .2s ease}.primary-link{margin-top:16px;padding:13px 20px;background:linear-gradient(135deg,#c99757,#ead49c);color:#fff;font-weight:700;letter-spacing:.08em;box-shadow:0 12px 26px #ac82443d}.section-photo-strip{margin-top:24px;display:grid;gap:14px}.section-photo-strip--two{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}.section-photo-strip--mixed{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense}.section-photo-strip__image{width:100%;height:156px;display:block;object-fit:cover;border-radius:0;border:0;box-shadow:0 18px 36px #4a36301f;cursor:zoom-in}.section-photo-strip--two .section-photo-strip__image:first-child{height:128px;margin-top:28px}.section-photo-strip--mixed .section-photo-strip__image:first-child{grid-column:1 / -1;height:206px}.photo-gallery{margin-top:18px;display:grid;gap:12px}.photo-gallery__image{width:100%;object-fit:cover;border-radius:0;opacity:0;transform:translateY(18px);animation:photo-fade-in .9s ease forwards;box-shadow:0 18px 36px #4a36301f;border:0;cursor:zoom-in}.editorial-photo__image{cursor:zoom-in}.photo-gallery--compact,.photo-gallery--editorial{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense}.photo-gallery--editorial{margin-top:24px}.photo-gallery__image--wide{grid-column:1 / -1;height:214px}.photo-gallery__image:not(.photo-gallery__image--wide){height:168px}.letter-section{padding-top:28px;text-align:center}.letter-section__photo{display:block;width:100%;height:350px;object-fit:cover;object-position:center 45%;cursor:zoom-in}.letter-section__lead{margin:54px 0 0;color:#111;font-family:var(--font-display);font-size:16px;line-height:1.6;text-align:left}.letter-section__poem,.letter-section__invite{margin:40px auto 0;display:grid;gap:12px;color:#4a4a4a;font-family:var(--font-serif);font-size:15px;line-height:1.65;letter-spacing:.05em}.letter-section__poem p,.letter-section__invite p{margin:0}.letter-section__double-happiness{margin:54px auto 0;color:#b42a18;font-family:var(--font-serif);font-size:72px;font-weight:800;line-height:.9}.contact-card__actions{margin-top:18px;display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.contact-pill{padding:14px 12px;background:#fff7ee;color:#8f6f4e;font-weight:700;letter-spacing:.05em;border:1px solid rgba(226,207,187,.52)}.contact-pill--secondary{background:#fdf1f0;color:#9b6960}.contact-tips{margin:44px auto 0;color:#535353;font-family:var(--font-serif);font-size:14px;line-height:2;text-align:left;letter-spacing:.03em}.contact-tips p{margin:0 0 16px}.contact-tips p:last-child{margin-bottom:0}.contact-tips__title{color:#4a4a4a;font-size:15px}.rsvp-section{text-align:center}.rsvp-before-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:end}.rsvp-before-gallery img{width:100%;height:330px;display:block;object-fit:cover;object-position:center;cursor:zoom-in}.rsvp-before-gallery img:first-child{height:390px}.final-photo-section img{width:100%;display:block;object-fit:cover;cursor:zoom-in}.thank-you-section{min-height:620px;padding-top:72px;text-align:center}.thank-you-section p{margin:0 0 24px;color:#555;font-family:var(--font-serif);font-size:17px;line-height:1.6;letter-spacing:.04em}.thank-you-section img{width:min(260px,62%);margin:44px auto 0;display:block}.rsvp-section__title{margin:0;color:#222;font-family:var(--font-serif);font-size:17px;font-weight:400;line-height:1.6}.rsvp-form{width:min(100%,405px);margin:42px auto 0;display:grid;gap:34px}.rsvp-form__input{width:100%;height:42px;border:1px solid #555;border-radius:8px;background:#fff;color:#222;font-family:var(--font-serif);font-size:16px;text-align:center;outline:none}.rsvp-form__input::placeholder{color:#7b7b7b;font-weight:700}.rsvp-form__button{height:42px;border:0;border-radius:8px;background:#393f3b;color:#fff;font-family:var(--font-serif);font-size:16px;font-weight:700;cursor:pointer}.rsvp-form__button:disabled{opacity:.55;cursor:not-allowed}.rsvp-form__feedback{margin:18px 0 0;font-family:var(--font-serif);font-size:13px}.rsvp-form__feedback--success{color:#527654}.rsvp-form__feedback--error{color:#a54d40}.invite-page__floating-button{position:fixed;left:50%;bottom:max(18px,env(safe-area-inset-bottom));z-index:3;transform:translate(-50%);width:min(calc(100% - 24px),375px);border:0;border-radius:999px;padding:16px 20px;background:linear-gradient(135deg,#b98550,#ead49c);color:#fff;font-size:15px;font-weight:700;letter-spacing:.06em;box-shadow:0 18px 42px #7c5c3857}.invite-page__share-button{position:fixed;top:max(72px,calc(env(safe-area-inset-top) + 72px));left:calc(50% + min(50vw,187.5px) - 58px);z-index:4;width:44px;height:44px;border:0;border-radius:50%;display:grid;place-items:center;background:#fffcf7eb;color:#9d7250;font-size:12px;font-weight:700;letter-spacing:.02em;box-shadow:0 14px 36px #7c615b33;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);cursor:pointer}.invite-page__share-feedback{position:fixed;top:max(121px,calc(env(safe-area-inset-top) + 121px));left:calc(50% + min(50vw,187.5px) - 86px);z-index:4;margin:0;padding:7px 10px;border-radius:999px;background:#412d27c7;color:#fffaf2;font-size:12px;box-shadow:0 10px 26px #412d2733}.invite-page__music-button{position:fixed;top:max(18px,env(safe-area-inset-top));left:calc(50% + min(50vw,187.5px) - 58px);z-index:4;width:44px;height:44px;border:0;border-radius:50%;display:grid;place-items:center;background:#fffcf7e6;color:#a37954;box-shadow:0 14px 36px #7c615b33;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);cursor:pointer;transition:filter .2s ease,opacity .2s ease}.invite-page__music-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;font-size:20px;line-height:1}.invite-page__music-icon--active{animation:music-spin 3s linear infinite;background:#fff7e9;color:#c99652}.blessing-wall{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 10%,black 78%,transparent 96%);mask-image:linear-gradient(to bottom,transparent 0%,black 10%,black 78%,transparent 96%)}.blessing-wall__item{position:absolute;left:100%;display:inline-flex;align-items:center;gap:8px;width:max-content;max-width:88vw;color:#4f3d33d1;text-shadow:0 1px 10px rgba(255,255,255,.75);white-space:nowrap;animation-name:blessing-wall-float;animation-timing-function:linear;animation-iteration-count:infinite;will-change:transform}.blessing-wall__item strong{font-family:Times New Roman,serif;color:#4c372af5}.blessing-wall__item--size-0{font-size:14px}.blessing-wall__item--size-1{font-size:16px}.blessing-wall__item--size-2{font-size:18px}.blessing-wall--paused .blessing-wall__item{animation-play-state:paused;opacity:.18!important}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:4;background:#2d191f6b;display:flex;align-items:flex-end;justify-content:center;padding:16px}.modal-card{width:min(100%,375px);border-radius:24px;background:#fffdf9;padding:20px;box-shadow:0 24px 80px #412b3447}.modal-card__header,.modal-card__footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-card__title{margin:10px 0 0;font-size:24px;color:#3b2e2a;font-family:var(--font-serif);font-weight:600;letter-spacing:.05em}.modal-card__close{border:0;background:transparent;font-size:28px;color:#9c7a68;cursor:pointer}.modal-card__body{margin-top:16px;display:grid;gap:12px}.modal-input{width:100%;border:1px solid #ead9c4;border-radius:14px;padding:14px 16px;font:inherit;background:#fffaf4;color:#423632;letter-spacing:.02em}.modal-input::placeholder{color:#b19a86}.modal-input--textarea{resize:none}.emoji-row{display:flex;flex-wrap:wrap;gap:8px}.emoji-pill{border:0;border-radius:999px;padding:8px 12px;background:#fff4e7;cursor:pointer}.feedback{margin:0;font-size:13px;letter-spacing:.02em}.feedback--error{color:#ca607c}.feedback--success{color:#4fa06d}.modal-card__footer{margin-top:18px}.modal-button{flex:1;border:0;padding:13px 16px;font:inherit;font-weight:700;letter-spacing:.06em;background:linear-gradient(135deg,#b98550,#ead49c);color:#fff;cursor:pointer}.modal-button--ghost{background:#f5eee6;color:#7f6758}.photo-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;padding:22px;background:#181210e0}.photo-lightbox__image{max-width:100%;max-height:86vh;object-fit:contain;box-shadow:0 26px 80px #0000006b}.photo-lightbox__close,.photo-lightbox__nav{position:fixed;border:0;border-radius:50%;display:grid;place-items:center;background:#fffaf4e6;color:#5b463f;box-shadow:0 16px 42px #0000003d;cursor:pointer}.photo-lightbox__close{top:max(18px,env(safe-area-inset-top));right:18px;width:42px;height:42px;font-size:30px;line-height:1}.photo-lightbox__nav{top:50%;width:42px;height:42px;transform:translateY(-50%);font-size:34px;line-height:1}.photo-lightbox__nav--prev{left:14px}.photo-lightbox__nav--next{right:14px}.fade-enter-active,.fade-leave-active{transition:opacity .22s ease}.fade-enter-from,.fade-leave-to{opacity:0}@keyframes photo-fade-in{to{opacity:1;transform:translateY(0)}}@keyframes music-spin{to{transform:rotate(360deg)}}@keyframes music-bar{0%{transform:scaleY(.62)}to{transform:scaleY(1.08)}}@keyframes blessing-wall-float{0%{transform:translate(0)}to{transform:translate(calc(-100vw - 120%))}}@media(hover:hover){.primary-link:hover,.contact-pill:hover,.modal-button:hover{filter:brightness(1.03);opacity:.94}.invite-page__music-button:hover,.invite-page__share-button:hover,.photo-lightbox__close:hover,.photo-lightbox__nav:hover{filter:brightness(1.03)}.invite-page__floating-button:hover{filter:brightness(1.03);transform:translate(-50%)}}:root{background:#f6f6f6}body{background:#f6f6f6}.invite-page{padding:0 0 80px;background:#f6f6f6}.invite-page__bg{display:none}.invite-page__loop{width:min(100%,640px);background:#fff;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.invite-page__phone-shell{background:#fff}.hero-card{aspect-ratio:auto;min-height:0;padding:26px 22px 34px;display:block;text-align:left}.hero-card:before{display:none}.hero-card__masthead{display:block}.hero-card__headline{margin:0;color:#111;font-family:var(--font-display);font-size:clamp(20px,4vw,26px);font-weight:400;line-height:1.38;letter-spacing:.01em}.hero-card__meta{margin-top:24px;display:flex;gap:28px;align-items:baseline;color:#1f1f1f;font-family:var(--font-serif);font-size:14px}.hero-card__meta span:last-child{color:#536f9d;font-family:Arial Narrow,sans-serif}.hero-card__quote{margin:58px 0 18px auto;width:fit-content;max-width:72%;display:grid;gap:16px;color:#171717;font-family:var(--font-serif);font-size:15px;line-height:1.8;text-align:right}.hero-card__quote strong{font-weight:400}.hero-card__cover{display:block;width:100%;height:360px;margin-top:18px;object-fit:cover;object-position:center 35%;cursor:zoom-in}.hero-card__script-title{width:min(86%,520px);margin:34px auto 0}.hero-card__script-title img{display:block;width:100%;height:auto}.hero-music-card{position:relative;width:100%;margin:24px auto 0;padding:28px 70px 22px 28px;border-radius:10px;display:block;background:#f8f8f8;color:#111;text-align:left;font:inherit;cursor:pointer}.hero-music-card__title{display:block;overflow:hidden;color:#111;font-family:var(--font-serif);font-size:17px;line-height:1.5;white-space:nowrap;text-overflow:ellipsis}.hero-music-card__bar{position:relative;display:block;height:24px;margin-top:18px}.hero-music-card__bar input{position:absolute;left:0;right:0;top:0;z-index:2;width:100%;height:24px;margin:0;opacity:0;cursor:pointer}.hero-music-card__bar:before,.hero-music-card__bar i{content:"";position:absolute;left:0;top:11px;height:2px;background:#9fa49f}.hero-music-card__bar:before{right:0}.hero-music-card__bar i{width:0;background:#111}.hero-music-card__bar b{position:absolute;left:0;top:4px;width:14px;height:14px;transform:translate(-50%) rotate(45deg);background:#9fa49f}.hero-music-card__time{display:flex;justify-content:space-between;color:#9a9a9a;font-family:Arial Narrow,sans-serif;font-size:17px;font-style:normal}.hero-music-card__time em{font-style:normal}.hero-music-card__icon{position:absolute;right:24px;top:50%;width:44px;height:44px;border-radius:50%;display:grid;grid-template-columns:repeat(4,4px);align-items:end;justify-content:center;gap:3px;transform:translateY(-50%);background:#fff}.hero-music-card__icon i{display:block;width:4px;background:#050505}.hero-music-card__icon i:nth-child(1){height:19px}.hero-music-card__icon i:nth-child(2){height:27px}.hero-music-card__icon i:nth-child(3){height:15px}.hero-music-card__icon i:nth-child(4){height:24px}.hero-music-card__icon--active i{animation:music-bar .9s ease-in-out infinite alternate}.hero-music-card__icon--active i:nth-child(2){animation-delay:.12s}.hero-music-card__icon--active i:nth-child(3){animation-delay:.24s}.hero-music-card__icon--active i:nth-child(4){animation-delay:.36s}.hero-music-note{margin:14px 2px 0;color:#4c4c4c;font-family:var(--font-serif);font-size:13px;line-height:1.8}.hero-music-note span{display:block;text-align:right}.hero-music-note p{margin:2px 0 0;text-align:center}.hero-featured-photo{display:block;width:100%;height:auto;margin:34px auto 0;cursor:zoom-in}.hero-friends-letter{margin:54px auto 0;text-align:center}.hero-friends-letter__lead{margin:0;color:#111;font-family:var(--font-display);font-size:16px;line-height:1.7;text-align:left}.hero-friends-letter__poem,.hero-friends-letter__invite,.hero-friends-letter__journey,.hero-friends-letter__vow,.hero-friends-letter__closing{margin:36px auto 0;display:grid;gap:12px;color:#4b4b4b;font-family:var(--font-serif);font-size:14px;line-height:1.7;letter-spacing:.04em}.hero-friends-letter__poem p,.hero-friends-letter__invite p,.hero-friends-letter__journey p,.hero-friends-letter__vow p,.hero-friends-letter__closing p{margin:0}.hero-friends-letter__icon{display:block;width:112px;height:auto;margin:46px auto 0}.hero-friends-gallery{margin:48px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:14px}.hero-friends-gallery img{display:block;width:100%;height:220px;object-fit:cover;cursor:zoom-in}.hero-friends-gallery img:first-child{grid-column:1 / -1;height:auto}.hero-friends-letter__journey{margin-top:46px}.hero-journey-photo{display:block;width:100%;height:auto;margin:46px auto 0;cursor:zoom-in}.hero-friends-letter__vow{margin-top:42px}.hero-vow-gallery{margin:46px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}.hero-vow-gallery img{display:block;width:100%;height:auto;cursor:zoom-in}.hero-friends-letter__closing{margin-top:46px}.hero-closing-gallery{margin:46px auto 0;display:grid;gap:16px}.hero-closing-gallery img{display:block;width:100%;height:auto;cursor:zoom-in}.hero-parent-invite{margin:62px auto 0;display:grid;justify-items:center;text-align:center}.hero-parent-invite__art{display:block;width:min(42%,180px);height:auto}.hero-parent-invite__names{margin:34px 0 0;color:#4c4c4c;font-family:var(--font-serif);font-size:16px;line-height:1.6;letter-spacing:.04em}.hero-parent-invite__text{margin-top:18px;display:grid;gap:10px;color:#555;font-family:var(--font-serif);font-size:14px;line-height:1.7;letter-spacing:.04em}.hero-parent-invite__text p{margin:0}.section-card{padding:54px 26px;background:#fff}.section-card__tag{color:#111;font-family:var(--font-display);font-size:15px;font-weight:400;letter-spacing:.02em;text-transform:none}.section-card__title{margin-top:20px;color:#171717;font-family:var(--font-serif);font-size:22px;font-weight:400;letter-spacing:.04em}.section-card__note,.section-card__copy{max-width:none;color:#4e4e4e;font-family:var(--font-serif);font-size:14px;line-height:2.1;letter-spacing:.06em}.editorial-photo--split{min-height:0;margin-top:36px;grid-template-columns:.72fr 1fr;gap:22px;align-items:center}.editorial-photo__verse{padding:0;color:#343434;font-size:14px;line-height:2.2;letter-spacing:.05em}.editorial-photo__image--portrait{height:360px;object-position:center 30%;box-shadow:none}.editorial-photo--oval{margin-top:62px;gap:34px}.editorial-photo__image--oval{width:min(100%,430px);height:560px;border-radius:50%;object-position:center top}.editorial-photo__caption{color:#343434;font-size:14px;line-height:2.1;letter-spacing:.08em}.photo-gallery--editorial{margin-top:40px;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.photo-gallery__image:not(.photo-gallery__image--wide){height:230px}.photo-gallery__image{box-shadow:none}.section-photo-strip{margin-top:34px;gap:16px}.section-photo-strip__image{height:220px;box-shadow:none}.section-photo-strip--two .section-photo-strip__image:first-child{height:190px;margin-top:44px}.section-photo-strip--mixed .section-photo-strip__image:first-child{height:300px}.calendar-intro{display:grid;justify-items:center;gap:18px;color:#4a4a4a;font-family:var(--font-serif);font-size:17px;line-height:1.4;text-align:center}.calendar-intro p{margin:0}.calendar-date-row{margin:42px auto 30px;display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:26px;max-width:480px}.calendar-date-row span,.calendar-date-row strong{display:grid;place-items:center;color:#fff;background:#4b4b4b}.calendar-date-row span{width:42px;height:42px;border-radius:50%;font-family:var(--font-serif);font-size:16px;font-weight:400}.calendar-date-row strong{height:42px;border-radius:999px;font-family:var(--font-display);font-size:17px;font-weight:400}.calendar-month{max-width:520px;margin:0 auto;color:#4a4a4a;font-family:var(--font-serif)}.calendar-month__weekdays,.calendar-month__days{display:grid;grid-template-columns:repeat(7,1fr);justify-items:center;row-gap:26px}.calendar-month__weekdays{font-size:16px}.calendar-month__dash{margin:14px 0 28px;border-top:2px dashed #5c5c5c}.calendar-month__days{font-size:16px}.calendar-month__blank{min-height:28px}.calendar-month__day{position:relative;min-width:34px;min-height:34px;display:grid;place-items:center}.calendar-month__day--active:before{content:"";position:absolute;top:-12px;right:-17px;bottom:-12px;left:-17px;z-index:0;background:radial-gradient(circle at 50% 54%,rgba(194,28,17,.95),rgba(226,62,48,.74) 52%,transparent 54%);clip-path:path("M24 42 C-14 18 6 -16 24 8 C42 -16 62 18 24 42 Z")}.calendar-month__day--active{color:#fff}.calendar-month__day--active{isolation:isolate}.countdown-panel{margin:64px auto 0;max-width:440px;padding:0;border:0;border-radius:0;background:transparent;text-align:center}.countdown-panel__label{color:#171717;font-family:var(--font-serif);font-size:17px;letter-spacing:.06em}.countdown-panel__items{margin-top:32px;gap:20px}.countdown-panel__items span{padding:14px 8px 12px;border-radius:8px;background:#050505;color:#fff;font-size:14px}.countdown-panel__items strong{color:#fff;font-family:var(--font-display);font-size:22px}.wedding-info-panel{margin:58px auto 0;padding:34px 30px 28px;background:#aaa;color:#fff;font-family:var(--font-serif);font-size:16px;line-height:1.65;text-align:left}.wedding-info-panel p{margin:0;padding:18px 0;border-bottom:2px solid rgba(0,0,0,.78)}.wedding-info-panel p:first-child{width:150px;padding-top:0}.wedding-info-panel p:last-child{padding-bottom:0}.calendar-info-gallery{margin:42px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.calendar-info-gallery img{display:block;width:100%;height:auto;cursor:zoom-in}.time-grid,.mini-calendar{display:none}.map-frame{height:290px;margin-top:34px;border:0;border-radius:24px;background:#f7f7f7}.primary-link{width:170px;margin:-78px auto 38px;position:relative;z-index:1;display:flex;background:#9bdce7;box-shadow:none}.contact-card{text-align:center}.contact-card__actions{margin-top:34px;grid-template-columns:repeat(2,minmax(0,180px));justify-content:center;gap:64px}.contact-pill{border-color:#111;border-radius:6px;background:transparent;color:#111;font-size:16px;font-weight:400}.contact-pill--secondary{background:transparent;color:#111}.invite-page__floating-button{width:min(calc(100% - 18px),620px);padding:15px 28px;background:#4646468f;box-shadow:none;justify-content:flex-start;font-size:18px;letter-spacing:0}.invite-page__music-button,.invite-page__share-button{left:auto;right:calc((100vw - min(100vw,640px))/2 + 38px);width:46px;height:46px;border:2px solid #111;background:#fff;color:#111;box-shadow:none}.invite-page__share-button{top:max(70px,calc(env(safe-area-inset-top) + 70px));border-radius:7px;width:92px;height:38px;right:calc((100vw - min(100vw,640px))/2 + 38px);background:#6e6e6e9e;border:0;color:#fff;font-size:17px}.invite-page__share-feedback{top:max(114px,calc(env(safe-area-inset-top) + 114px));right:calc((100vw - min(100vw,640px))/2 + 38px);left:auto}.modal-card{border-radius:16px}@media(max-width:430px){.hero-card{padding:22px 20px 30px}.hero-card__cover{height:300px}.hero-card__quote{margin-top:46px;font-size:14px}.section-card{padding:48px 22px}.editorial-photo--split{grid-template-columns:.72fr 1fr;gap:16px}.editorial-photo__image--portrait{height:300px}.editorial-photo__image--oval{height:430px}}
