/* Local font setup:
   Place these files manually in ../assets/fonts/ if they are not available yet:
   - PlayfairDisplay-Regular.woff2
   - PlayfairDisplay-Bold.woff2
   - PlayfairDisplay-SemiBold.woff2
   - Archivo-Light.woff2
   - Archivo-Regular.woff2
   - Archivo-Medium.woff2

   Optional alternative:
   You may later load the same families from Google Fonts, but this project is prepared
   to work with local assets first so it remains compatible with file:// usage. */

@font-face {
  font-family: "Playfair Display";
  src: url("../assets/fonts/PlayfairDisplay-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Playfair Display";
  src: url("../assets/fonts/PlayfairDisplay-Bold.woff2") format("woff2");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "Playfair Display";
  src: url("../assets/fonts/PlayfairDisplay-SemiBold.woff2") format("woff2");
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: "Archivo";
  src: url("../assets/fonts/Archivo-Light.woff2") format("woff2");
  font-style: normal;
  font-weight: 300;
  font-display: swap;
}

@font-face {
  font-family: "Archivo";
  src: url("../assets/fonts/Archivo-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Archivo";
  src: url("../assets/fonts/Archivo-Medium.woff2") format("woff2");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

:root {
  --color-black: #131313;
  --color-white: #f0f0f0;
  --color-gray: #5c5c5c;
  --color-border-subtle: rgba(19, 19, 19, 0.08);
  --color-border-inverse-subtle: rgba(240, 240, 240, 0.24);
  --color-text-inverse: var(--color-white);

  --font-heading: "Playfair Display", Georgia, serif;
  --font-body: "Archivo", Arial, sans-serif;

  --font-size-base: 16px;
  --font-size-heading-lg: 48px;
  --font-size-heading-md: 32px;
  --font-size-heading-sm: 24px;
  --font-size-body-lg: 24px;
  --font-size-body-md: 18px;
  --font-size-body-sm: 16px;
  --font-size-body-xs: 14px;
  --font-size-eyebrow: 12px;
  --font-size-sm: 0.875rem;
  --font-size-nav: 18px;
  --font-size-meta-label: var(--font-size-body-sm);
  --font-size-detail-value: var(--font-size-heading-md);
  --font-size-detail-extra: var(--font-size-body-md);

  --font-weight-light: 300;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  --line-height-heading: 1.1;
  --line-height-compact: 1.2;
  --line-height-tight: var(--line-height-compact);
  --line-height-base: 1.5;
  --measure-reading: 42rem;
  --measure-content: 34rem;

  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 4.5rem;
  --space-4xl: 6rem;
  --space-5xl: 8rem;

  --content-gutter: clamp(1rem, 3vw, 2rem);
  --max-content-width: 1280px;
  --desktop-breakpoint: 800px;
  --mobile-menu-offset: 0px;
  --section-padding-y-light-mobile: var(--space-4xl);
  --section-padding-y-light-desktop: var(--space-5xl);
  --section-padding-y-dark-mobile: var(--space-4xl);
  --section-padding-y-dark-desktop: var(--space-5xl);
  --section-padding-y-compact-mobile: var(--space-2xl);
  --section-padding-y-compact-desktop: var(--space-3xl);
  --content-grid-gap: clamp(3rem, 6vw, 5rem);
  --section-divider-height: 1px;
  --accordion-item-padding-y: 1rem;

  --header-padding-y-mobile: 1.25rem;
  --header-padding-y-desktop: 2.5rem;
  --logo-width-mobile: clamp(170px, 38vw, 290px);
  --logo-width-desktop: clamp(300px, 25vw, 440px);
  --hero-margin-top-mobile: 0px;
  --hero-margin-top-desktop: 2.75rem;
  --hero-gap-to-summary-mobile: 4rem;
  --hero-gap-to-summary-desktop: 4.75rem;

  --z-header: 100;
  --z-mobile-menu: 200;

  --motion-duration-base: 0.6s;
  --motion-ease-standard: ease;
  --motion-distance-reveal: 1rem;
  --motion-duration-accordion: 420ms;
  --motion-ease-accordion: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-distance-accordion: 0.35rem;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
  color: var(--color-black);
  background-color: var(--color-white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body.has-mobile-menu-open {
  overflow: hidden;
}

picture,
img {
  display: block;
  max-width: 100%;
}

img {
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
}

a:focus-visible,
button:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

h1,
h2,
h3,
p {
  margin: 0;
}

h1,
h2,
h3 {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading);
}

.text-emphasis {
  font-weight: var(--font-weight-semibold);
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.16em;
}

.editorial-note {
  max-width: 34ch;
  margin-top: var(--space-sm);
  font-family: var(--font-body);
  font-size: var(--font-size-body-xs);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-gray);
  overflow-wrap: anywhere;
}

.note-text {
  font-family: var(--font-body);
  font-size: var(--font-size-body-sm);
  font-style: italic;
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  color: var(--color-gray);
}

.section-divider {
  display: block;
  width: 100%;
  height: var(--section-divider-height);
  margin: 0;
  border: 0;
  background: var(--color-border-subtle);
}

.arrow-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.arrow-list__item {
  position: relative;
  padding-left: 1.5rem;
  font-family: var(--font-body);
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
  overflow-wrap: anywhere;
}

.arrow-list__item::before {
  content: "\2192";
  position: absolute;
  top: 0;
  left: 0;
}

.editorial-button {
  display: inline-flex;
  align-items: center;
  gap: var(--space-md);
  max-width: 100%;
  padding: 16px 32px;
  border: 0;
  background: var(--color-black);
  color: var(--color-white);
  font-family: var(--font-heading);
  font-size: 20px;
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-heading);
  text-decoration: none;
  transition:
    background-color var(--motion-duration-base) var(--motion-ease-standard),
    color var(--motion-duration-base) var(--motion-ease-standard);
}

.editorial-button__label {
  display: block;
  min-width: 0;
  text-wrap: balance;
}

.editorial-button__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  transition: transform var(--motion-duration-base) var(--motion-ease-standard);
}

.editorial-button__icon svg {
  display: block;
  width: 18px;
  height: auto;
}

.editorial-button:hover {
  background-color: #323232;
  color: var(--color-white);
}

.editorial-button:hover .editorial-button__icon,
.editorial-button:focus-visible .editorial-button__icon {
  transform: translateX(6px);
}

.container {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
}

.section {
  padding-block: var(--space-3xl);
}

.section-light {
  background-color: var(--color-white);
  color: var(--color-black);
}

.section-dark {
  background-color: var(--color-black);
  color: var(--color-white);
}

.section-placeholder {
  padding-block: clamp(2.75rem, 7vw, 4rem);
  color: var(--color-gray);
}

.section-placeholder h2 {
  margin-bottom: var(--space-sm);
  font-family: var(--font-body);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.08em;
  line-height: var(--line-height-tight);
  text-transform: uppercase;
  color: var(--color-black);
}

.section-placeholder p {
  font-size: 1rem;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.site-header {
  position: relative;
  z-index: var(--z-header);
  background-color: var(--color-white);
  color: var(--color-black);
}

.site-header__inner {
  padding-block: var(--header-padding-y-mobile);
}

.site-header__top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  column-gap: var(--space-md);
}

.site-header__mobile-controls {
  display: flex;
  align-items: center;
  justify-self: end;
  gap: var(--space-lg);
}

.site-header__nav-row,
.site-nav,
.language-switcher--header-desktop {
  display: none;
}

.site-logo {
  display: inline-flex;
  align-items: center;
  line-height: 0;
}

.site-logo__image {
  width: var(--logo-width-mobile);
}

.site-nav__list,
.mobile-menu__list {
  padding: 0;
  margin: 0;
  list-style: none;
}

.site-nav__list {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(1.5rem, 2.1vw, 3rem);
}

.site-nav__list a,
.mobile-menu__list a {
  font-family: var(--font-body);
  line-height: var(--line-height-tight);
}

.site-nav__list a {
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-light);
}

.site-nav__list a:hover,
.mobile-menu__list a:hover,
.language-switcher__button:hover {
  opacity: 0.7;
}

.language-switcher {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
}

.language-switcher span {
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-tight);
}

.language-switcher__button {
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-tight);
}

.language-switcher__button[aria-pressed="true"] {
  font-weight: var(--font-weight-semibold);
}

.menu-toggle {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.45rem;
  width: 2.8rem;
  min-height: 2.25rem;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.menu-toggle__line {
  display: block;
  width: 100%;
  height: 2px;
  background-color: currentColor;
  transform-origin: center;
  transition:
    transform 0.25s ease,
    opacity 0.25s ease;
}

.menu-toggle[aria-expanded="true"] .menu-toggle__line--top {
  transform: translateY(0.28rem) rotate(45deg);
}

.menu-toggle[aria-expanded="true"] .menu-toggle__line--bottom {
  transform: translateY(-0.28rem) rotate(-45deg);
}

.mobile-menu {
  position: fixed;
  top: var(--mobile-menu-offset);
  right: 0;
  bottom: 0;
  left: 0;
  z-index: var(--z-mobile-menu);
  display: none;
  overflow-y: auto;
  background-color: rgba(240, 240, 240, 0.98);
  color: var(--color-black);
}

.mobile-menu.is-open {
  display: block;
}

.mobile-menu__inner {
  display: flex;
  min-height: calc(100vh - var(--mobile-menu-offset));
  min-height: calc(100dvh - var(--mobile-menu-offset));
  align-items: center;
  justify-content: center;
  padding: var(--space-2xl) var(--content-gutter);
}

.mobile-menu__nav {
  display: grid;
  gap: var(--space-2xl);
  justify-items: center;
  text-align: center;
}

.mobile-menu__list {
  display: grid;
  gap: var(--space-xl);
}

.mobile-menu__list a {
  font-size: clamp(2rem, 8vw, 2.75rem);
  font-weight: var(--font-weight-regular);
}

.language-switcher--mobile-menu .language-switcher__button,
.language-switcher--mobile-menu span {
  font-size: clamp(1.25rem, 4vw, 1.5rem);
}

.hero-intro {
  padding-bottom: 0;
}

.hero {
  margin-top: var(--hero-margin-top-mobile);
}

.hero__picture,
.hero__image {
  width: 100%;
}

.event-details {
  display: grid;
  gap: clamp(3.5rem, 11vw, 5rem);
  margin-top: var(--hero-gap-to-summary-mobile);
  padding-bottom: clamp(4.5rem, 10vw, 6.5rem);
  text-align: center;
}

.event-details__item {
  display: grid;
  gap: var(--space-sm);
  justify-items: center;
}

.event-details__label {
  font-size: var(--font-size-meta-label);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-tight);
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.event-details__value {
  font-size: var(--font-size-detail-value);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-tight);
  text-wrap: balance;
}

.event-details__item--location .event-details__value {
  max-width: 12ch;
}

.event-details__extra {
  max-width: 22ch;
  font-size: var(--font-size-detail-extra);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-tight);
  text-wrap: balance;
}

.chapter-section {
  padding-top: 0;
}

.chapter-intro {
  display: grid;
}

.chapter-intro__content {
  display: grid;
  gap: var(--space-lg);
  order: 2;
  padding: var(--space-4xl) var(--content-gutter);
}

.chapter-intro__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  text-wrap: balance;
  text-align: center;
}

.chapter-intro__text {
  font-size: var(--font-size-body-md);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  text-align: center;
}

.chapter-intro__media {
  order: 1;
}

.chapter-intro__media picture,
.chapter-intro__image {
  display: block;
  width: 100%;
}

.unplugged {
  background-color: var(--color-black);
  color: var(--color-white);
  padding: var(--space-4xl) var(--content-gutter);
}

.unplugged__inner {
  width: min(100%, var(--measure-reading));
  margin-inline: auto;
  display: grid;
  justify-items: center;
  gap: var(--space-lg);
  text-align: center;
}

.unplugged__eyebrow {
  font-family: var(--font-body);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.unplugged__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  text-wrap: balance;
}

.unplugged__text {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
}

.wedding-details-section {
  background-color: var(--color-white);
  color: var(--color-black);
}

.wedding-details {
  display: grid;
}

.wedding-details__media picture,
.wedding-details__image {
  display: block;
  width: 100%;
}

.wedding-details__content {
  display: grid;
  gap: var(--space-lg);
  padding: var(--space-4xl) var(--content-gutter);
}

.wedding-details__eyebrow,
.details-list__label {
  font-family: var(--font-body);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-black);
}

.wedding-details__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  text-wrap: balance;
}

.wedding-details__intro {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
}

.details-list {
  display: grid;
  gap: clamp(1.75rem, 5vw, 2.5rem);
  margin: var(--space-md) 0 0;
  padding: 0;
}

.details-list__item {
  display: grid;
  gap: var(--space-xs);
}

.details-list__label,
.details-list__value,
.details-list__meta {
  margin: 0;
}

.details-list__value {
  font-family: var(--font-body);
  font-size: var(--font-size-body-lg);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-compact);
  text-wrap: balance;
}

.details-list__meta {
  font-family: var(--font-body);
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-compact);
  overflow-wrap: anywhere;
}

.dress-code-section {
  background: var(--color-black);
  color: var(--color-text-inverse);
}

.dress-code {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
  padding-block: var(--section-padding-y-dark-mobile);
  display: grid;
  gap: clamp(4rem, 10vw, 6rem);
}

.dress-code__header {
  display: grid;
  gap: clamp(2rem, 5vw, 2.75rem);
}

.dress-code__eyebrow,
.dress-code__details-eyebrow {
  font-family: var(--font-body);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-text-inverse);
}

.dress-code__details-eyebrow {
  text-align: center;
}

.dress-code__eyebrow {
  justify-self: center;
  text-align: center;
}

.dress-code__intro-group {
  display: grid;
  gap: var(--space-lg);
}

.dress-code__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-text-inverse);
  text-wrap: balance;
}

.dress-code__intro {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-text-inverse);
}

.dress-code__details {
  display: grid;
  gap: var(--space-xl);
}

.dress-code__grid {
  display: grid;
  gap: clamp(2.75rem, 8vw, 4rem);
}

.dress-code__item {
  display: grid;
  align-content: start;
  gap: var(--space-md);
}

.dress-code__item-title {
  font-size: var(--font-size-heading-sm);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-text-inverse);
  text-wrap: balance;
}

.dress-code__item-text {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-text-inverse);
  overflow-wrap: anywhere;
}

.schedule-section {
  background: var(--color-white);
  color: var(--color-black);
}

.schedule {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
  padding-block: var(--section-padding-y-light-mobile);
  display: grid;
  gap: clamp(4rem, 10vw, 6rem);
}

.schedule__header {
  display: grid;
  gap: var(--space-lg);
}

.schedule__eyebrow,
.schedule__time {
  font-family: var(--font-body);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-black);
}

.schedule__intro-group {
  display: grid;
  gap: var(--space-lg);
}

.schedule__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-black);
  text-wrap: balance;
}

.schedule__intro {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
}

.schedule__timeline {
  display: grid;
  gap: clamp(2.75rem, 8vw, 4rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.schedule__item {
  display: grid;
  align-content: start;
  gap: var(--space-sm);
}

.schedule__time,
.schedule__item-title,
.schedule__item-text {
  margin: 0;
}

.schedule__item-title {
  font-size: var(--font-size-heading-sm);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-black);
  text-wrap: balance;
}

.schedule__item-text {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
  overflow-wrap: anywhere;
}

.schedule__item-note {
  max-width: min(100%, var(--measure-content));
}

.schedule__media picture,
.schedule__image {
  display: block;
  width: 100%;
}

.menu-section,
.gifts-section,
.site-footer {
  background: var(--color-white);
  color: var(--color-black);
}

.faq-section {
  background: var(--color-black);
  color: var(--color-text-inverse);
}

.menu {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
  display: grid;
  gap: clamp(4rem, 10vw, 6rem);
}

.menu__header {
  display: grid;
  gap: var(--space-lg);
}

.menu__eyebrow,
.gifts__eyebrow {
  font-family: var(--font-body);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-black);
}

.menu__title,
.gifts__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-black);
  text-wrap: balance;
}

.menu__intro,
.gifts__intro {
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
}

.menu__grid {
  display: grid;
  gap: clamp(3rem, 8vw, 4.5rem);
}

.menu__cta {
  display: flex;
  justify-content: flex-start;
}

.menu__button {
  width: fit-content;
}

.menu__category {
  display: grid;
  align-content: start;
  gap: var(--space-lg);
}

.menu__category-title {
  font-size: var(--font-size-heading-sm);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-black);
  text-wrap: balance;
}

.menu__category-text {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
  overflow-wrap: anywhere;
}

.menu__list {
  display: grid;
  gap: var(--space-md);
}

.gifts > .section-divider {
  margin-top: clamp(4rem, 9vw, 6rem);
}

.gifts {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
  padding-top: var(--section-padding-y-light-mobile);
  display: grid;
  gap: var(--space-lg);
}

.gifts__body {
  margin-top: var(--space-lg);
  font-size: var(--font-size-body-lg);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
  overflow-wrap: anywhere;
}

.faq {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
  padding-block: var(--section-padding-y-dark-mobile);
  display: grid;
  gap: clamp(2.5rem, 6vw, 4rem);
}

.faq__header {
  display: grid;
  gap: var(--space-lg);
}

.faq__eyebrow {
  font-family: var(--font-body);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-text-inverse);
}

.faq__title {
  font-size: var(--font-size-heading-md);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  color: var(--color-text-inverse);
  text-wrap: balance;
}

.faq__list {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: faq;
}

.faq__item {
  counter-increment: faq;
  border-bottom: var(--section-divider-height) solid var(--color-border-inverse-subtle);
}

.faq__question {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  column-gap: var(--space-md);
  width: 100%;
  padding-block: var(--accordion-item-padding-y);
  padding-inline: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
}

.faq__question::before {
  content: counter(faq) ".";
  min-width: 2ch;
  font-family: var(--font-body);
  font-size: var(--font-size-body-md);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-text-inverse);
}

.faq__question-text {
  font-family: var(--font-body);
  font-size: var(--font-size-body-md);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-text-inverse);
  overflow-wrap: anywhere;
}

.faq__icon {
  display: inline-flex;
  min-width: 1ch;
  justify-content: center;
  font-family: var(--font-body);
  font-size: var(--font-size-heading-sm);
  font-weight: var(--font-weight-light);
  line-height: 1;
  color: var(--color-text-inverse);
  opacity: 0.88;
  transform: translateY(-1px) scale(0.96);
  transition:
    opacity var(--motion-duration-accordion) var(--motion-ease-accordion),
    transform var(--motion-duration-accordion) var(--motion-ease-accordion);
}

.faq__question[aria-expanded="false"] .faq__icon::before {
  content: "+";
}

.faq__question[aria-expanded="true"] .faq__icon::before {
  content: "\2212";
}

.faq__answer {
  height: 0;
  overflow: hidden;
  padding:
    0
    0
    0
    calc(2ch + var(--space-md));
  transition: height var(--motion-duration-accordion) var(--motion-ease-accordion);
}

.faq__answer-text {
  padding-bottom: var(--accordion-item-padding-y);
  font-family: var(--font-body);
  font-size: var(--font-size-body-sm);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-text-inverse);
  overflow-wrap: anywhere;
  opacity: 0;
  transform: translateY(var(--motion-distance-accordion));
  transition:
    opacity calc(var(--motion-duration-accordion) - 100ms) var(--motion-ease-accordion),
    transform var(--motion-duration-accordion) var(--motion-ease-accordion);
}

.faq__answer.is-opening .faq__answer-text,
.faq__answer.is-open .faq__answer-text {
  opacity: 1;
  transform: translateY(0);
}

.faq__answer.is-closing .faq__answer-text {
  opacity: 0;
  transform: translateY(var(--motion-distance-accordion));
}

.faq__question[aria-expanded="true"] .faq__icon {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.site-footer__inner {
  width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
  margin-inline: auto;
  padding-block: 24px;
  display: grid;
  gap: var(--space-sm);
  justify-items: center;
  text-align: center;
}

.site-footer__names,
.site-footer__message {
  font-family: var(--font-body);
  font-size: var(--font-size-body-xs);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-compact);
  color: var(--color-black);
}

.reveal {
  opacity: 0;
  transform: translateY(var(--motion-distance-reveal));
  transition:
    opacity var(--motion-duration-base) var(--motion-ease-standard),
    transform var(--motion-duration-base) var(--motion-ease-standard);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (min-width: 800px) {
  .site-header__inner {
    padding-block: var(--header-padding-y-desktop);
  }

  .site-header__top {
    display: flex;
    justify-content: center;
  }

  .site-logo__image {
    width: var(--logo-width-desktop);
  }

  .site-header__mobile-controls {
    display: none;
  }

  .site-header__nav-row {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    margin-top: clamp(1.5rem, 3vw, 2.5rem);
  }

  .site-header__nav-spacer,
  .site-nav,
  .language-switcher--header-desktop {
    display: block;
  }

  .language-switcher--header-desktop {
    display: inline-flex;
    justify-self: end;
  }

  .mobile-menu {
    display: none !important;
  }

  .hero {
    width: min(100% - (2 * var(--content-gutter)), var(--max-content-width));
    margin: var(--hero-margin-top-desktop) auto 0;
  }

  .event-details {
    grid-template-columns: 1fr 1.35fr 1fr;
    align-items: start;
    gap: var(--space-xl);
    margin-top: var(--hero-gap-to-summary-desktop);
    padding-bottom: clamp(4.5rem, 7vw, 6rem);
  }

  .event-details__item {
    justify-items: start;
    text-align: left;
  }

  .event-details__item--location {
    justify-items: center;
    text-align: center;
  }

  .event-details__item--time {
    justify-items: end;
    text-align: right;
  }

  .event-details__item--location .event-details__value {
    max-width: none;
  }

  .event-details__extra {
    max-width: 30ch;
  }

  .chapter-intro {
    width: min(100%, calc(var(--max-content-width) + (2 * var(--content-gutter))));
    margin-inline: auto;
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
    align-items: stretch;
  }

  .chapter-intro__content {
    order: 0;
    align-self: center;
    padding:
      clamp(3rem, 6vw, var(--space-5xl))
      clamp(1.75rem, 5vw, var(--space-4xl))
      clamp(3rem, 6vw, var(--space-5xl))
      var(--content-gutter);
  }

  .chapter-intro__title {
    font-size: var(--font-size-heading-lg);
    text-align: left;
  }

  .chapter-intro__text {
    font-size: var(--font-size-body-lg);
    text-align: left;
  }

  .chapter-intro__media {
    order: 0;
    min-height: 42rem;
  }

  .chapter-intro__media picture,
  .chapter-intro__image {
    height: 100%;
  }

  .chapter-intro__image {
    object-fit: cover;
  }

  .unplugged {
    padding-block: var(--space-5xl);
  }

  .wedding-details {
    width: min(100%, calc(var(--max-content-width) + (2 * var(--content-gutter))));
    margin-inline: auto;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: stretch;
  }

  .wedding-details__media {
    min-height: 44rem;
  }

  .wedding-details__media picture,
  .wedding-details__image {
    height: 100%;
  }

  .wedding-details__image {
    object-fit: cover;
  }

  .wedding-details__content {
    align-content: center;
    justify-self: start;
    width: min(100%, var(--measure-content));
    padding:
      clamp(3rem, 6vw, var(--space-5xl))
      clamp(2rem, 5vw, var(--space-4xl))
      clamp(3rem, 6vw, var(--space-5xl))
      clamp(2rem, 5vw, var(--space-4xl));
  }

  .details-list {
    margin-top: var(--space-xl);
  }

  .dress-code {
    padding-block: var(--section-padding-y-dark-desktop);
    gap: clamp(5rem, 9vw, 7rem);
  }

  .dress-code__header {
    width: min(100%, var(--measure-reading));
    margin-inline: auto;
    justify-items: center;
    text-align: center;
  }

  .dress-code__intro-group {
    justify-items: center;
    text-align: center;
  }

  .dress-code__title {
    max-width: none;
  }

  .dress-code__intro {
    max-width: 32ch;
  }

  .dress-code__details {
    width: fit-content;
    max-width: 100%;
    margin-inline: auto;
    gap: var(--space-2xl);
  }

  .dress-code__grid {
    grid-template-columns: repeat(2, minmax(0, var(--measure-content)));
    align-items: start;
    gap: clamp(3rem, 6vw, 5rem);
  }

  .schedule {
    padding-block: var(--section-padding-y-light-desktop);
    gap: clamp(5rem, 9vw, 7rem);
  }

  .schedule__timeline {
    width: min(100%, calc((2 * var(--measure-content)) + var(--content-grid-gap)));
    grid-template-columns: repeat(2, minmax(0, 1fr));
    row-gap: clamp(3rem, 6vw, 4.5rem);
    column-gap: var(--content-grid-gap);
  }

  .menu {
    gap: clamp(5rem, 9vw, 7rem);
  }

  .menu__grid {
    width: min(100%, calc((2 * var(--measure-content)) + var(--content-grid-gap)));
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--content-grid-gap);
    row-gap: clamp(3rem, 6vw, 4rem);
  }

  .menu__cta {
    width: min(100%, calc((2 * var(--measure-content)) + var(--content-grid-gap)));
    justify-content: flex-end;
  }

  .gifts {
    padding-top: var(--section-padding-y-light-desktop);
    justify-items: center;
    text-align: center;
  }

  .faq {
    padding-block: var(--section-padding-y-dark-desktop);
    gap: clamp(3rem, 5vw, 4.5rem);
  }

  .gifts__title,
  .gifts__intro,
  .gifts__body {
    max-width: min(100%, var(--measure-reading));
  }

  .site-footer__inner {
    padding-block: 24px;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    justify-items: stretch;
    gap: var(--content-grid-gap);
    text-align: left;
  }

  .site-footer__message {
    justify-self: end;
    text-align: right;
  }

  .section-placeholder {
    padding-block: clamp(3rem, 5vw, 4.5rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .reveal,
  .reveal.is-visible {
    opacity: 1;
    transform: none;
  }
}
