.page-contact {
  --contact-line: var(--border-thin);
}

.page-contact .contact-intro {
  padding-block: var(--space-6) var(--space-8);
}

.page-contact .contact-intro__grid {
  margin-top: var(--space-6);
  align-items: start;
}

.page-contact .contact-intro__title {
  margin: var(--space-2) 0 0;
  font-family: var(--font-heading);
  font-size: var(--text-3xl);
  font-weight: var(--weight-heading);
  line-height: var(--leading-heading);
  letter-spacing: var(--tracking-heading);
  color: var(--color-ink);
  max-width: 24ch;
}

.page-contact .contact-intro__lede {
  margin-top: var(--space-3);
  max-width: 52ch;
  color: var(--color-ink-soft);
}

.page-contact .contact-rhythm {
  margin-top: var(--space-6);
  padding: var(--space-3);
  display: grid;
  gap: var(--space-2);
  border: var(--contact-line) dashed var(--color-line);
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--color-surface) 80%, transparent);
  box-shadow: var(--shadow-1);
}

.page-contact .contact-rhythm__caption {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.12em;
  color: var(--color-ink-muted);
}

.page-contact .contact-rhythm__item {
  display: grid;
  gap: var(--space-1);
  padding-bottom: var(--space-2);
  border-bottom: var(--contact-line) dotted var(--color-line);
}

.page-contact .contact-rhythm__item:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.page-contact .contact-rhythm__key {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.1em;
  color: var(--color-ink-muted);
}

.page-contact .contact-rhythm__value {
  font-family: var(--font-heading);
  font-size: var(--text-lg);
  font-weight: var(--weight-heading);
  color: var(--color-ink);
}

.page-contact .contact-overview__grid {
  align-items: start;
}

.page-contact .contact-overview__figure {
  margin: 0;
}

.page-contact .contact-overview__figure .figure__frame {
  aspect-ratio: var(--figure-ratio, 3 / 2);
  border-radius: var(--radius-md);
  overflow: hidden;
  border: var(--contact-line) solid var(--color-line);
  background: var(--color-surface-deep);
}

.page-contact .figure__media {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: cover;
}

.page-contact .contact-overview__side {
  margin-top: var(--space-6);
}

.page-contact .contact-index {
  list-style: none;
  margin: var(--space-4) 0 0;
  padding: 0;
  display: grid;
}

.page-contact .contact-index__row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-1) var(--space-3);
  align-items: baseline;
  padding-block: var(--space-2);
  border-bottom: var(--contact-line) dotted var(--color-line);
}

.page-contact .contact-index__row:first-child {
  border-top: var(--contact-line) dotted var(--color-line);
}

.page-contact .contact-index__no {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-accent);
}

.page-contact .contact-index__name {
  font-family: var(--font-heading);
  font-size: var(--text-lg);
  font-weight: var(--weight-heading);
  color: var(--color-ink);
  text-decoration: none;
  border-bottom: var(--contact-line) solid var(--color-primary-soft);
  transition: border-color 240ms cubic-bezier(0.2, 0.7, 0.2, 1), color 240ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.page-contact .contact-index__name:hover,
.page-contact .contact-index__name:focus-visible {
  color: var(--color-primary);
  border-bottom-color: var(--color-accent);
}

.page-contact .contact-index__hint {
  grid-column: 2;
  font-size: var(--text-sm);
  color: var(--color-ink-muted);
}

.page-contact .contact-channels {
  padding-block: var(--section-y);
}

.page-contact .contact-channels__list {
  margin-top: var(--space-6);
  display: grid;
  gap: var(--space-3);
}

.page-contact .contact-channels__group {
  margin: var(--space-2) 0 0;
  padding-bottom: var(--space-1);
  border-bottom: var(--contact-line) dotted var(--color-line);
}

.page-contact .contact-channels__group .eyebrow {
  color: var(--color-primary);
}

.page-contact .channel {
  display: grid;
  gap: var(--space-3);
  padding: var(--space-3);
  border: var(--contact-line) solid var(--color-line);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  box-shadow: var(--shadow-1);
  transition: box-shadow 340ms cubic-bezier(0.2, 0.7, 0.2, 1), transform 340ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.page-contact .channel:hover,
.page-contact .channel:focus-within {
  box-shadow: var(--shadow-2);
  transform: translateY(calc(var(--space-1) * -0.25));
}

.page-contact .channel__head {
  display: grid;
  gap: var(--space-1);
  align-content: start;
}

.page-contact .channel__no {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.14em;
  color: var(--color-ink-muted);
}

.page-contact .channel__name {
  margin: 0;
  font-family: var(--font-heading);
  font-size: var(--text-xl);
  font-weight: var(--weight-heading);
  line-height: var(--leading-heading);
  color: var(--color-ink);
}

.page-contact .channel__value {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--text-base);
  color: var(--color-primary);
  overflow-wrap: anywhere;
}

.page-contact .channel__window {
  margin: 0;
  padding-top: var(--space-1);
  border-top: var(--contact-line) dotted var(--color-line);
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
}

.page-contact .channel__body {
  display: grid;
  gap: var(--space-2);
}

.page-contact .channel__field {
  display: grid;
  gap: var(--space-1);
}

.page-contact .channel__label {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.1em;
  color: var(--color-ink-muted);
}

.page-contact .channel__text {
  margin: 0;
  font-size: var(--text-base);
  line-height: var(--leading-body);
  color: var(--color-ink);
}

.page-contact .channel__peek {
  margin: 0;
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  background: var(--color-surface-alt);
  color: var(--color-ink-soft);
  font-size: var(--text-sm);
  line-height: var(--leading-body);
  transition: background-color 260ms cubic-bezier(0.2, 0.7, 0.2, 1), color 260ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.page-contact .channel:hover .channel__peek,
.page-contact .channel:focus-within .channel__peek {
  background: var(--color-primary-soft);
  color: var(--color-ink);
}

.page-contact .contact-window__body {
  margin-bottom: var(--space-6);
}

.page-contact .contact-scale {
  margin-top: var(--space-4);
}

.page-contact .contact-scale__track {
  position: relative;
  height: var(--space-6);
  border: var(--contact-line) solid var(--color-line);
  border-radius: var(--radius-pill);
  overflow: hidden;
  background:
    repeating-linear-gradient(90deg, var(--color-line) 0 var(--contact-line), transparent var(--contact-line) 8.3333%),
    var(--color-surface-alt);
}

.page-contact .contact-scale__band {
  position: absolute;
  inset-block: 0;
  left: 37.5%;
  width: 37.5%;
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--color-primary) 88%, transparent),
    color-mix(in srgb, var(--color-accent) 72%, transparent));
}

.page-contact .contact-scale__axis {
  position: relative;
  height: var(--space-3);
  margin-top: var(--space-1);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-ink-muted);
}

.page-contact .contact-scale__axis span {
  position: absolute;
  top: 0;
  transform: translateX(-50%);
  white-space: nowrap;
}

.page-contact .contact-scale__axis span:nth-child(1) { left: 0; transform: none; }
.page-contact .contact-scale__axis span:nth-child(2) { left: 25%; }
.page-contact .contact-scale__axis span:nth-child(3) { left: 37.5%; }
.page-contact .contact-scale__axis span:nth-child(4) { left: 50%; }
.page-contact .contact-scale__axis span:nth-child(5) { left: 75%; }
.page-contact .contact-scale__axis span:nth-child(6) { left: 100%; transform: translateX(-100%); }

.page-contact .contact-window__legend {
  list-style: none;
  margin: var(--space-4) 0 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
}

.page-contact .contact-window__legend li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.page-contact .contact-window__swatch {
  flex: none;
  width: var(--space-3);
  height: var(--space-1);
  border-radius: var(--radius-pill);
}

.page-contact .contact-window__swatch--on {
  background: var(--color-primary);
}

.page-contact .contact-window__swatch--off {
  background: var(--color-surface-deep);
  border: var(--contact-line) solid var(--color-line);
}

.page-contact .contact-window__figure {
  margin: 0;
}

.page-contact .contact-window__figure .figure__frame {
  aspect-ratio: var(--figure-ratio, 16 / 9);
  border-radius: var(--radius-md);
  overflow: hidden;
  border: var(--contact-line) solid var(--color-line);
  background: var(--color-surface-deep);
}

.page-contact .contact-mail__side {
  margin-bottom: var(--space-4);
}

.page-contact .contact-mail__spec {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
  counter-reset: mailstep;
}

.page-contact .contact-mail__spec li {
  display: grid;
  gap: var(--space-1);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  background: var(--color-surface-alt);
  border-left: var(--contact-line) solid var(--color-primary-soft);
}

.page-contact .contact-mail__key {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.12em;
  color: var(--color-accent);
}

.page-contact .contact-mail__text {
  font-size: var(--text-base);
  line-height: var(--leading-body);
  color: var(--color-ink);
}

.page-contact .contact-code__label {
  margin: var(--space-4) 0 var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.12em;
  color: var(--color-ink-muted);
}

.page-contact .contact-code {
  margin: 0;
  padding: var(--space-3);
  border: var(--contact-line) solid var(--color-contrast-line);
  border-radius: var(--radius-md);
  background: var(--color-contrast-surface);
  color: var(--color-contrast-ink);
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  line-height: var(--leading-body);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.page-contact .contact-outro__grid {
  margin-top: var(--space-4);
  align-items: start;
}

.page-contact .contact-outro__main .legal-list {
  margin-top: var(--space-3);
}

.page-contact .contact-related {
  margin-top: var(--space-4);
}

.page-contact .contact-related__title {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.12em;
  color: var(--color-ink-muted);
}

.page-contact .contact-related ul {
  list-style: none;
  margin: var(--space-2) 0 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
  font-size: var(--text-sm);
  line-height: var(--leading-body);
}

.page-contact .contact-related a {
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: var(--contact-line) solid var(--color-primary-soft);
}

.page-contact .contact-related a:hover,
.page-contact .contact-related a:focus-visible {
  border-bottom-color: var(--color-accent);
  color: var(--color-accent);
}

@media (min-width: 720px) {
  .page-contact .contact-index__row {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: var(--space-3);
  }

  .page-contact .contact-index__hint {
    grid-column: 3;
    text-align: right;
  }

  .page-contact .channel {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.6fr);
    gap: var(--space-4);
    padding: var(--space-4);
  }

  .page-contact .channel__body {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3) var(--space-4);
  }

  .page-contact .channel__peek {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1024px) {
  .page-contact .contact-intro {
    padding-block: var(--space-8) var(--section-y);
  }

  .page-contact .contact-intro__title {
    font-size: var(--text-4xl);
  }

  .page-contact .contact-rhythm {
    margin-top: 0;
    padding: var(--space-4);
  }

  .page-contact .contact-overview__side {
    margin-top: 0;
  }

  .page-contact .contact-channels__list {
    gap: var(--space-4);
  }

  .page-contact .contact-window__body {
    margin-bottom: 0;
    padding-right: var(--space-4);
  }

  .page-contact .contact-mail__side {
    margin-bottom: 0;
    padding-right: var(--space-4);
  }

  .page-contact .contact-related {
    margin-top: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-contact .channel,
  .page-contact .channel__peek,
  .page-contact .contact-index__name {
    transition: none;
  }

  .page-contact .channel:hover,
  .page-contact .channel:focus-within {
    transform: none;
  }
}

.page-contact {
  --figure-ratio: inherit;
}
