/*
 * Guest page styles: Minimal Ivory + Delft Blue
 * Tokens live in main.css — classes only here.
 * Load after main.css. Fonts: Google Fonts in layout head.
 */

/* Theme: layout sets data-theme="ivory-delft-minimal" on <body>.
   Future themes override :root tokens via body[data-theme="…"] { … }. */

/* —— Type utilities (look_and_feel scale) —— */
.type-display-xl {
  font-family: var(--font-display);
  font-size: var(--display-xl-size);
  font-weight: var(--display-xl-weight);
  line-height: var(--display-xl-line-height);
  letter-spacing: var(--display-xl-letter-spacing);
}

.type-display-lg {
  font-family: var(--font-display);
  font-size: var(--display-lg-size);
  font-weight: var(--display-lg-weight);
  line-height: var(--display-lg-line-height);
  letter-spacing: var(--display-lg-letter-spacing);
}

.type-heading-md {
  font-family: var(--font-display);
  font-size: var(--heading-md-size);
  font-weight: var(--heading-md-weight);
  line-height: var(--heading-md-line-height);
  letter-spacing: var(--heading-md-letter-spacing);
}

.type-heading-sm {
  font-family: var(--font-display);
  font-size: var(--heading-sm-size);
  font-weight: var(--heading-sm-weight);
  line-height: var(--heading-sm-line-height);
  letter-spacing: var(--heading-sm-letter-spacing);
}

.type-body-lg {
  font-family: var(--font-ui);
  font-size: var(--body-lg-size);
  font-weight: var(--body-lg-weight);
  line-height: var(--body-lg-line-height);
  letter-spacing: var(--body-lg-letter-spacing);
}

.type-body-md {
  font-family: var(--font-ui);
  font-size: var(--body-md-size);
  font-weight: var(--body-md-weight);
  line-height: var(--body-md-line-height);
  letter-spacing: var(--body-md-letter-spacing);
}

.type-body-sm {
  font-family: var(--font-ui);
  font-size: var(--body-sm-size);
  font-weight: var(--body-sm-weight);
  line-height: var(--body-sm-line-height);
  letter-spacing: var(--body-sm-letter-spacing);
}

.type-label {
  font-family: var(--font-ui);
  font-size: var(--label-size);
  font-weight: var(--label-weight);
  line-height: var(--label-line-height);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.type-button {
  font-family: var(--font-ui);
  font-size: var(--button-size);
  font-weight: var(--button-weight);
  line-height: var(--button-line-height);
  letter-spacing: var(--button-letter-spacing);
}

/* —— Links —— */
a {
  color: var(--delft-primary);
  text-decoration: none;
  transition: color var(--transition), text-decoration-color var(--transition);
}

a:hover {
  text-decoration: underline;
}

a:focus-visible {
  outline: var(--focus-ring-width) solid var(--delft-primary);
  outline-offset: var(--focus-ring-offset);
}

/* —— Focus rings (interactive controls) —— */
:where(
  button,
  [type="button"],
  [type="submit"],
  [type="reset"],
  [type="text"],
  [type="email"],
  [type="tel"],
  [type="search"],
  [type="url"],
  [type="password"],
  [type="number"],
  [type="date"],
  textarea,
  select,
  summary,
  [role="button"],
  [tabindex]:not([tabindex="-1"])
):focus-visible {
  outline: var(--focus-ring-width) solid var(--delft-primary);
  outline-offset: var(--focus-ring-offset);
}

/* —— Guest page shell —— */
.guest-page {
  position: relative;
  min-height: 100vh;
  background-color: var(--surface-white);
}

.guest-page__rule {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background-color: var(--delft-primary);
  pointer-events: none;
}

/* CSS L-bracket placeholders — swap for SVGs in item 02 */
.guest-page__ornament {
  display: none;
  position: absolute;
  width: 96px;
  height: 96px;
  pointer-events: none;
  z-index: 0;
}

.guest-page__ornament::before {
  content: "";
  position: absolute;
  inset: 0;
  border-color: var(--ornament-line);
  border-style: solid;
  border-width: 0;
  opacity: 0.35;
}

.guest-page__ornament--tl {
  top: var(--space-lg);
  left: var(--space-lg);
}

.guest-page__ornament--tl::before {
  border-top-width: 1px;
  border-left-width: 1px;
}

.guest-page__ornament--tr {
  top: var(--space-lg);
  right: var(--space-lg);
}

.guest-page__ornament--tr::before {
  border-top-width: 1px;
  border-right-width: 1px;
}

.guest-page__ornament--bl {
  bottom: var(--space-lg);
  left: var(--space-lg);
}

.guest-page__ornament--bl::before {
  border-bottom-width: 1px;
  border-left-width: 1px;
}

.guest-page__ornament--br {
  bottom: var(--space-lg);
  right: var(--space-lg);
}

.guest-page__ornament--br::before {
  border-bottom-width: 1px;
  border-right-width: 1px;
}

@media (min-width: 640px) {
  .guest-page__ornament {
    display: block;
  }
}

.guest-page__main {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--content-max-mobile);
  margin-inline: auto;
  padding-inline: var(--page-padding-mobile);
  padding-block: var(--space-3xl);
}

@media (min-width: 640px) {
  .guest-page__main {
    max-width: var(--content-max-tablet);
    padding-inline: var(--page-padding-tablet);
  }
}

@media (min-width: 1025px) {
  .guest-page__main {
    max-width: var(--content-max-desktop);
    padding-block: var(--space-4xl);
  }
}

/* Mount for later RSVP composition (03–07) */
.rsvp-stage {
  width: 100%;
}

/* —— Reduced motion (04 entry / 05 envelope consume these) —— */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .motion-entry,
  .motion-envelope {
    animation: none !important;
    transition: none !important;
  }

  .rsvp-entry {
    display: none;
  }

  .rsvp-landing.is-entering,
  .rsvp-landing.is-entered {
    opacity: 1;
    transition: none;
  }
}
