: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: 18ch; 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--calendar { display: grid; gap: 0.7rem; } .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; } .calendar-tools { margin-top: 0.3rem; display: flex; flex-wrap: wrap; gap: 0.5rem; } .calendar-tools__action { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; width: auto; border-radius: 999px; border: 1px solid rgba(30, 87, 138, 0.28); background: rgba(255, 255, 255, 0.86); color: var(--sea-dark); font-size: 0.88rem; font-weight: 700; padding: 0.42rem 0.82rem; text-decoration: none; cursor: pointer; transition: background .18s ease, border-color .18s ease, transform .18s ease, box-shadow .18s ease; } .calendar-tools__action:hover { background: rgba(30, 87, 138, 0.1); border-color: rgba(30, 87, 138, 0.5); transform: translateY(-1px); box-shadow: 0 8px 16px rgba(21, 60, 96, 0.1); } .calendar-tools__action--button { font: inherit; } .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; } .button--secondary { color: var(--sea-dark); background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(241, 246, 252, 0.92) 100%); border: 1px solid rgba(30, 87, 138, 0.3); box-shadow: 0 10px 20px rgba(21, 60, 96, 0.12); } .button--compact { min-height: 44px; padding: 0.55rem 1rem; font-size: 0.93rem; } .gift { padding-top: 1.3rem; } .gift__shell { display: block; } .gift__title { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .gift__layout { position: relative; display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); column-gap: clamp(1.4rem, 3.2vw, 2.7rem); row-gap: 0; align-items: start; } .gift__layout::before { content: ""; position: absolute; left: 0; top: -0.68rem; width: min(360px, 44%); height: 1px; border-radius: 999px; background: linear-gradient(90deg, rgba(30, 87, 138, 0.38), rgba(30, 87, 138, 0.05)); } .gift__layout::after { content: ""; position: absolute; right: 0; bottom: -0.4rem; width: min(190px, 26%); height: 1px; border-radius: 999px; background: linear-gradient(90deg, rgba(30, 87, 138, 0.04), rgba(30, 87, 138, 0.22)); } .gift__col { min-width: 0; } .gift__col--left { display: grid; gap: 0.55rem; align-content: start; } .gift__kicker { margin: 0 0 0.2rem; } .gift__heading { max-width: 17ch; margin: 0; font-size: clamp(1.72rem, 3.25vw, 2.55rem); line-height: 1.06; letter-spacing: -0.02em; } .gift__lead { margin: 0; color: var(--ink); max-width: 56ch; font-size: 0.99rem; line-height: 1.68; } .gift__note { margin: 0; color: var(--ink-soft); line-height: 1.58; font-size: 0.92rem; max-width: 44ch; } .gift__col--right { position: relative; align-self: start; padding-left: clamp(1rem, 1.9vw, 1.3rem); } .gift__accent { position: absolute; left: 0; top: 0; bottom: 0; width: 2px; border-radius: 999px; background: linear-gradient(180deg, rgba(30, 87, 138, 0.62), rgba(30, 87, 138, 0.16)); } .gift__accent::after { content: ""; position: absolute; left: 50%; bottom: -3px; width: 5px; height: 5px; border-radius: 50%; transform: translateX(-50%); background: rgba(30, 87, 138, 0.24); } .gift__details { margin: 0; display: grid; gap: 0.74rem; } .gift__row { margin: 0; padding: 0 0 0.64rem; border-bottom: 1px solid rgba(30, 87, 138, 0.18); } .gift__row:last-child { border-bottom: 0; padding-bottom: 0.1rem; } .gift__row dt { color: var(--sea); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 0.22rem; } .gift__row dd { margin: 0; color: var(--ink); font-weight: 700; line-height: 1.5; word-break: break-word; } .gift__row--iban dd { font-size: clamp(1.15rem, 2.3vw, 1.42rem); letter-spacing: 0.038em; color: var(--sea-dark); margin-bottom: 0.38rem; font-weight: 800; line-height: 1.35; } .gift__row--iban { padding-top: 0.04rem; padding-bottom: 0.82rem; border-bottom-color: rgba(30, 87, 138, 0.22); } .gift__copy { width: auto; } .gift__iban-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.55rem 0.75rem; } .gift__feedback { min-height: 1.15rem; margin: 0; color: var(--sea-dark); font-size: 0.84rem; font-weight: 700; opacity: 0.88; } .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; } .gift__layout { grid-template-columns: 1fr; row-gap: 0.88rem; } .gift__layout::before, .gift__layout::after { width: min(320px, 100%); } .gift__col--right { padding-left: 1.15rem; } .gift__heading { max-width: 100%; } .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, .gift__layout { padding: 1.2rem; } .choice-group { flex-direction: column; } .choice span { width: 100%; justify-content: center; } .calendar-tools__action { width: 100%; } .gift__layout { padding: 0; } .gift__copy { width: 100%; } .gift__iban-actions { align-items: stretch; gap: 0.45rem; } .gift__feedback { width: 100%; } } 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.64); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); } .success-modal__dialog { position: relative; z-index: 1; width: min(100%, 640px); } .success-tag { display: block; 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 { display: none; } .success-tag__content { padding: 2rem 2rem 1.7rem; text-align: center; } .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 auto; max-width: 18ch; font-size: clamp(1.85rem, 4.1vw, 2.45rem); line-height: 1.14; letter-spacing: -0.03em; text-wrap: balance; } .success-tag__text { margin: 0.85rem auto 1.35rem; max-width: 40ch; color: var(--ink-soft); line-height: 1.72; } .success-tag__button { width: auto; min-width: 148px; } @media (max-width: 640px) { .success-tag { border-radius: 24px; } .success-tag__content { padding: 1.35rem 1.2rem 1.2rem; } .success-tag__button { width: 100%; } } @media (max-width: 768px) { .hero__title { max-width: 18ch; font-size: clamp(2.1rem, 8vw, 4rem); -webkit-text-stroke: 7px var(--sea-dark); line-height: 1; } } @media (max-width: 480px) { .hero__title { max-width: 19ch; font-size: clamp(1.85rem, 8.2vw, 3rem); -webkit-text-stroke: 5px var(--sea-dark); letter-spacing: -0.02em; } }