
:root {
  --ink: #0B0B0B;
  --ivory: #F6F5F3;
  --parchment: #EDEAE5;
  --stone: #86806F;
  --muted: #4B473C;
  --burgundy: #7A2331;
  --burgundy-dark: #5E1A24;
}

* {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

html {
  scroll-behavior: smooth;
}

body {
  background-color: var(--ivory);
  color: var(--ink);
  font-family: 'Lato', ui-sans-serif, system-ui, sans-serif;
}

.font-display {
  font-family: 'DM Serif Display', ui-serif, Georgia, serif;
  font-feature-settings: 'ss01' 1;
}

::selection {
  background-color: var(--burgundy);
  color: var(--ivory);
}

:focus-visible {
  outline: 2px solid var(--burgundy);
  outline-offset: 3px;
  border-radius: 2px;
}

.diagonal-rule {
  position: relative;
}

.diagonal-rule::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 28px;
  height: 2px;
  background: var(--burgundy);
  transform-origin: left center;
}

.nav-bar {
  background-color: var(--ink);
}

header :focus-visible,
footer :focus-visible {
  outline-color: var(--ivory);
}

.btn-primary {
  background-color: var(--ink);
  color: var(--ivory);
  transition: background-color 180ms ease, transform 180ms ease;
}
.btn-primary:hover {
  background-color: var(--burgundy);
}
.btn-primary:active {
  transform: translateY(1px);
}

.btn-secondary {
  background-color: var(--burgundy);
  color: var(--ivory);
  transition: background-color 180ms ease, transform 180ms ease;
}
.btn-secondary:hover {
  background-color: var(--burgundy-dark);
}
.btn-secondary:active {
  transform: translateY(1px);
}

.link-underline {
  background-image: linear-gradient(var(--burgundy), var(--burgundy));
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0% 1px;
  transition: background-size 220ms ease, color 220ms ease;
}
.link-underline:hover {
  background-size: 100% 1px;
}

.link-underline[aria-current="page"] {
  color: var(--burgundy);
  background-size: 100% 1px;
}

/* Nav links sit on the solid black header/mobile menu, so they need the
   inverse (ivory) treatment instead of the burgundy used on cream sections. */
header .link-underline {
  color: rgba(246, 245, 243, 0.78);
  background-image: linear-gradient(var(--ivory), var(--ivory));
}
header .link-underline:hover,
header .link-underline[aria-current="page"] {
  color: var(--ivory);
  font-weight: 600;
}

[data-reveal] {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 620ms ease, transform 620ms ease;
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .btn-primary,
  .btn-secondary,
  .link-underline {
    transition: none;
  }
}

.mobile-menu {
  transform: translateY(-8px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 200ms ease, transform 200ms ease, visibility 200ms;
}
.mobile-menu.is-open {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.hamburger span {
  transition: transform 220ms ease, opacity 220ms ease;
}
.hamburger.is-open span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.hamburger.is-open span:nth-child(2) {
  opacity: 0;
}
.hamburger.is-open span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

.faq-item summary::-webkit-details-marker {
  display: none;
}

.faq-item .faq-chevron {
  font-family: 'DM Serif Display', ui-serif, Georgia, serif;
  font-size: 1.5rem;
  line-height: 1;
  transition: transform 220ms ease;
}

.faq-item[open] .faq-chevron {
  transform: rotate(45deg);
}

input[aria-invalid="true"],
textarea[aria-invalid="true"] {
  border-color: var(--burgundy);
}

@media (prefers-reduced-motion: reduce) {
  .faq-item .faq-chevron {
    transition: none;
  }
}
