:root { --bg: #f5f7fb; --paper: rgba(255, 255, 255, 0.9); --paper-strong: rgba(255, 255, 255, 0.95); --ink: #1e2530; --ink-soft: #5c6573; --sea: #1e578a; --sea-dark: #153c60; --line: rgba(44, 94, 145, 0.22); --shadow: 0 24px 70px rgba(18, 26, 38, 0.18); --radius-xl: 30px; --radius-lg: 24px; --container: 1180px; } *, *::before, *::after { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; background: radial-gradient(circle at top, rgba(63, 126, 180, 0.12), transparent 35%), linear-gradient(180deg, #f4f7fa 0%, #eef2f7 100%); color: var(--ink); font-family: "Martel Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } img { max-width: 100%; display: block; } .container { width: min(calc(100% - 2rem), var(--container)); margin-inline: auto; } .section { padding: 5.5rem 0; } .section-kicker, .eyebrow { margin: 0 0 0.85rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255,255,255,0.82); font-size: 0.84rem; font-weight: 700; } .section-kicker { color: var(--sea); } .hero { position: relative; min-height: 100svh; overflow: clip; display: grid; align-items: center; isolation: isolate; } .hero__image, .hero__overlay { position: absolute; inset: 0; width: 100%; height: 100%; } .hero__image { object-fit: cover; } .hero__overlay { background: linear-gradient(180deg, rgba(4, 10, 18, 0.52) 0%, rgba(4, 10, 18, 0.15) 30%, rgba(4, 10, 18, 0.05) 55%, rgba(4, 10, 18, 0.38) 100%), linear-gradient(180deg, rgba(18, 49, 78, 0.24) 0%, rgba(18, 49, 78, 0.08) 100%); } .hero__content { position: relative; z-index: 2; display: grid; justify-items: center; gap: 1rem; padding: 3rem 0 6rem; } .hero__title { margin: 0; max-width: 14ch; text-align: center; color: #fff; font-size: clamp(2.8rem, 6vw, 6.6rem); line-height: 0.96; font-weight: 800; letter-spacing: -0.03em; text-wrap: balance; -webkit-text-stroke: 10px var(--sea-dark); paint-order: stroke fill; text-shadow: 0 12px 30px rgba(5, 11, 18, 0.18); } .hero__underline { width: min(78ch, 92%); max-width: 960px; height: 14px; border-radius: 999px; background: var(--sea-dark); position: relative; margin-top: 0.8rem; } .hero__underline::after { content: ""; position: absolute; inset: 2px; border-radius: inherit; background: #fff; } .event-tag { width: min(100%, 520px); margin-top: 1.75rem; border-radius: var(--radius-xl); background: rgba(255, 255, 255, 0.84); border: 1px solid rgba(255, 255, 255, 0.72); box-shadow: var(--shadow); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); color: var(--ink); overflow: hidden; } .event-tag--icon { display: grid; grid-template-columns: auto 1fr; align-items: stretch; } .event-tag--lines { display: grid; grid-template-columns: 16px 1fr; align-items: stretch; } .event-tag__line--vertical { width: 3px; margin: 1.75rem 0 1.75rem 1.6rem; border-radius: 999px; background: linear-gradient(180deg, rgba(30,87,138,0.86), rgba(30,87,138,0.36)); } .event-tag__icon { width: 108px; display: grid; place-items: center; } .party-popper { position: relative; display: inline-block; width: 62px; height: 62px; border-radius: 50%; background: linear-gradient(180deg, var(--sea) 0%, var(--sea-dark) 100%); box-shadow: 0 12px 24px rgba(21, 60, 96, 0.22); } .party-popper::before { content: ""; position: absolute; left: 22px; top: 28px; width: 22px; height: 18px; background: #fff; clip-path: polygon(0 58%, 100% 0, 68% 100%); border-radius: 2px; } .party-popper::after { content: ""; position: absolute; left: 34px; top: 13px; width: 20px; height: 20px; border-top: 3px solid #fff; border-right: 3px solid #fff; transform: rotate(28deg); border-radius: 50%; } .event-tag__content { padding: 1.6rem 1.75rem 1.5rem 0.4rem; } .theme-lines .event-tag__content { padding-left: 1.1rem; } .event-tag__date { font-size: clamp(1.55rem, 3vw, 2.25rem); font-weight: 800; letter-spacing: -0.02em; } .event-tag__place, .event-tag__meta { font-size: clamp(1rem, 2vw, 1.22rem); font-weight: 600; } .event-tag__place { margin-top: 0.45rem; } .event-tag__divider { width: 100%; height: 2px; border-radius: 999px; background: var(--line); margin: 0.95rem 0 0.8rem; } .intro__grid, .rsvp__grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 2rem; align-items: start; } .intro__text h2, .rsvp__copy h2 { margin: 0 0 1rem; font-size: clamp(2rem, 4vw, 3.3rem); line-height: 1; letter-spacing: -0.03em; } .intro__text p, .rsvp__copy p, .rsvp__notes li { color: var(--ink-soft); font-size: 1.02rem; line-height: 1.75; } .rsvp__notes { margin: 1rem 0 0; padding-left: 1.2rem; } .details-card, .form-card { background: var(--paper-strong); border: 1px solid rgba(255,255,255,0.88); border-radius: var(--radius-xl); box-shadow: var(--shadow); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .details-card { padding: 1.65rem; display: grid; gap: 1rem; } .details-card__item { padding: 1rem 1.1rem; border-radius: 22px; background: rgba(244, 248, 252, 0.88); border: 1px solid rgba(40, 89, 138, 0.08); } .details-card__item strong, .details-card__item span { display: block; } .details-card__label { margin-bottom: 0.35rem; color: var(--sea); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; } .form-card { padding: 1.8rem; } form { display: grid; gap: 1.15rem; } .hidden-field { display: none !important; } .form-row { display: grid; gap: 0.55rem; } label, .form-label { font-size: 0.95rem; font-weight: 700; color: var(--ink); } input[type="text"], select, textarea { width: 100%; border: 1px solid rgba(30, 87, 138, 0.16); border-radius: 18px; padding: 0.95rem 1rem; font: inherit; color: var(--ink); background: #fff; transition: border-color .18s ease, box-shadow .18s ease; } input[type="text"]:focus, select:focus, textarea:focus { outline: none; border-color: rgba(30, 87, 138, 0.58); box-shadow: 0 0 0 4px rgba(30, 87, 138, 0.12); } .choice-group { display: flex; flex-wrap: wrap; gap: 0.75rem; } .choice { position: relative; display: inline-flex; align-items: center; } .choice input { position: absolute; inset: 0; opacity: 0; } .choice span { display: inline-flex; align-items: center; min-height: 48px; padding: 0.75rem 1.05rem; border-radius: 999px; border: 1px solid rgba(30, 87, 138, 0.16); background: #fff; color: var(--ink); font-weight: 600; cursor: pointer; transition: all .18s ease; } .choice input:checked + span { background: rgba(30, 87, 138, 0.1); border-color: rgba(30, 87, 138, 0.58); color: var(--sea-dark); } .attendance-fields--hidden { display: none !important; } .button { appearance: none; border: none; display: inline-flex; align-items: center; justify-content: center; min-height: 54px; width: 100%; border-radius: 999px; padding: 0.9rem 1.3rem; font: inherit; font-weight: 800; letter-spacing: 0.01em; color: #fff; text-decoration: none; cursor: pointer; background: linear-gradient(180deg, var(--sea) 0%, var(--sea-dark) 100%); box-shadow: 0 16px 30px rgba(21, 60, 96, 0.18); transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease; } .button:hover { transform: translateY(-1px); box-shadow: 0 20px 34px rgba(21, 60, 96, 0.22); } .button:disabled { opacity: 0.72; cursor: wait; } .form-status { min-height: 1.4rem; margin: 0; font-size: 0.95rem; color: var(--sea-dark); } .footer { padding: 0 0 2rem; } .footer__inner { text-align: center; color: var(--ink-soft); font-size: 0.94rem; } .thankyou-page { min-height: 100svh; display: grid; place-items: center; padding: 1.25rem; } .thankyou__card { width: min(100%, 620px); padding: 2rem; border-radius: var(--radius-xl); background: var(--paper-strong); border: 1px solid rgba(255,255,255,0.88); box-shadow: var(--shadow); text-align: center; } .thankyou__card h1 { margin: 0 0 0.8rem; font-size: clamp(2rem, 5vw, 3.2rem); letter-spacing: -0.03em; } @media (max-width: 920px) { .hero { min-height: auto; } .hero__content { padding: 4rem 0 4rem; } .hero__title { max-width: 12ch; -webkit-text-stroke: 7px var(--sea-dark); } .event-tag { width: 100%; } .intro__grid, .rsvp__grid { grid-template-columns: 1fr; } .section { padding: 4rem 0; } } @media (max-width: 640px) { .hero__content { justify-items: stretch; } .eyebrow { text-align: center; } .hero__title { text-align: center; font-size: clamp(2.45rem, 12vw, 4.2rem); -webkit-text-stroke: 5px var(--sea-dark); } .hero__underline { height: 11px; width: 100%; max-width: none; } .event-tag { border-radius: 24px; } .event-tag--icon { grid-template-columns: 1fr; } .event-tag__icon { width: auto; padding-top: 1.2rem; } .event-tag__content { padding: 0.5rem 1.2rem 1.25rem; } .theme-lines .event-tag--lines { grid-template-columns: 1fr; } .theme-lines .event-tag__line--vertical { display: none; } .theme-lines .event-tag__content { padding-left: 1.2rem; } .form-card, .details-card { padding: 1.2rem; } .choice-group { flex-direction: column; } .choice span { width: 100%; justify-content: center; } } body.modal-open { overflow: hidden; } .success-modal { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 1.2rem; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .2s ease, visibility .2s ease; } .success-modal--open { opacity: 1; visibility: visible; pointer-events: auto; } .success-modal__backdrop { position: absolute; inset: 0; background: rgba(7, 14, 24, 0.52); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); } .success-modal__dialog { position: relative; z-index: 1; width: min(100%, 620px); } .success-tag { display: grid; grid-template-columns: 14px 1fr; background: rgba(255, 255, 255, 0.95); border: 1px solid rgba(255, 255, 255, 0.9); border-radius: 30px; box-shadow: 0 24px 70px rgba(18, 26, 38, 0.24); overflow: hidden; } .success-tag__line { background: linear-gradient(180deg, rgba(30,87,138,0.92), rgba(30,87,138,0.36)); } .success-tag__content { padding: 1.7rem 1.5rem 1.5rem 1.35rem; } .success-tag__kicker { margin: 0 0 0.45rem; color: var(--sea); font-size: 0.82rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; } .success-tag__title { margin: 0; font-size: clamp(1.7rem, 4vw, 2.4rem); line-height: 1; letter-spacing: -0.03em; } .success-tag__text { margin: 0.8rem 0 1.25rem; color: var(--ink-soft); line-height: 1.7; } .success-tag__button { width: auto; min-width: 132px; } @media (max-width: 640px) { .success-tag { grid-template-columns: 10px 1fr; border-radius: 24px; } .success-tag__content { padding: 1.3rem 1.1rem 1.15rem 1rem; } .success-tag__button { width: 100%; } }