.perspective-masthead-rule {
    border-top: 4px solid var(--bs-body-color);
    border-bottom: 4px solid var(--bs-body-color);
}

.perspective-title-rule {
    border-bottom: 2px solid var(--bs-body-color);
}

.perspective-quote-frame {
    border-top: 1px solid rgba(var(--bs-emphasis-color-rgb), 0.2);
    border-bottom: 1px solid rgba(var(--bs-emphasis-color-rgb), 0.2);
    border-left: 4px solid var(--bs-primary);
}

.perspective-headline-hover {
    transition: color 0.2s ease;
}

.perspective-headline-hover:hover {
    color: var(--bs-primary);
}

.perspective-micro-label {
    font-size: 0.6rem;
    letter-spacing: 0.15em;
}

.perspective-byline-suffix {
    font-size: 0.6rem;
    opacity: 0.6;
}

.perspective-quote-text {
    font-size: 1.1rem;
}

.perspective-card-desc {
    font-size: 0.875rem;
}

/* values timeline v17 - layout/animation only, no colors */
.values-timeline__node {
    box-shadow: none;
}

.values-timeline__item {
    opacity: 1;
    transform: translateY(0);
}

.values-timeline__item.is-revealing {
    animation: values-timeline-fade-up 0.6s ease-out both;
}

@keyframes values-timeline-fade-up {
    from {
        opacity: 0;
        transform: translateY(24px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.roster-lift-hover__portrait {
    width: 7rem;
    height: 7rem;
}

.roster-lift-hover__min-shrink {
  min-width: 0;
}

/* awards — animated SVG mesh card backgrounds */
.awards-mesh__canvas {
  isolation: isolate;
}

/* BS-only canvas gradient (TW uses @sem gradient layer) */
.awards-mesh__canvas-bg {
  background: linear-gradient(
    to bottom right,
    color-mix(in srgb, var(--bs-primary) 55%, black),
    color-mix(in srgb, var(--bs-primary) 42%, black),
    var(--bs-primary)
  );
}

.dark .awards-mesh__canvas-bg,
[data-bs-theme="dark"] .awards-mesh__canvas-bg {
  background: linear-gradient(
    to bottom right,
    color-mix(in srgb, var(--bs-primary) 10%, black),
    color-mix(in srgb, var(--bs-primary) 22%, black),
    color-mix(in srgb, var(--bs-primary) 38%, black)
  );
}

.awards-mesh__svg {
  display: block;
}

.awards-mesh__orb {
  transform-origin: center;
  transform-box: fill-box;
}

.awards-mesh__orb--a {
  animation: awards-mesh-orb-drift-a 9s ease-in-out infinite;
}

.awards-mesh__orb--b {
  animation: awards-mesh-orb-drift-b 11s ease-in-out infinite;
  animation-delay: 1.5s;
}

.awards-mesh__orb--c {
  animation: awards-mesh-orb-pulse 6s ease-in-out infinite;
  animation-delay: 0.8s;
}

.awards-mesh__wave {
  stroke-linecap: round;
  stroke-linejoin: round;
  transform-origin: center;
}

.awards-mesh__wave--a {
  animation: awards-mesh-wave-slide 14s linear infinite;
}

.awards-mesh__wave--b {
  animation: awards-mesh-wave-slide 18s linear infinite reverse;
  animation-delay: 2s;
}

.awards-mesh__svg--1 .awards-mesh__orb--a {
  animation-delay: 0.5s;
}

.awards-mesh__svg--1 .awards-mesh__wave--a {
  animation-duration: 16s;
}

.awards-mesh__svg--2 .awards-mesh__orb--b {
  animation-delay: 2.5s;
}

.awards-mesh__svg--2 .awards-mesh__wave--b {
  animation-duration: 12s;
}

.awards-mesh__svg--3 .awards-mesh__orb--c {
  animation-delay: 1.2s;
}

@keyframes awards-mesh-orb-drift-a {
  0%,
  100% {
    transform: translate(0, 0) scale(1);
  }
  50% {
    transform: translate(12px, -10px) scale(1.08);
  }
}

@keyframes awards-mesh-orb-drift-b {
  0%,
  100% {
    transform: translate(0, 0) scale(1);
  }
  50% {
    transform: translate(-14px, 8px) scale(1.06);
  }
}

@keyframes awards-mesh-orb-pulse {
  0%,
  100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.15);
    opacity: 0.75;
  }
}

@keyframes awards-mesh-wave-slide {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-40px);
  }
}

/* mark-ribbon — minimal centered caption + single pill-chip marquee */
.mark-ribbon__caption {
    letter-spacing: 0.2em;
}

.mark-ribbon__viewport {
    mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}

.mark-ribbon__track {
    width: max-content;
    animation: mark-ribbon-slide 42s linear infinite;
}

.mark-ribbon__viewport:hover .mark-ribbon__track {
    animation-play-state: paused;
}

.mark-ribbon__group {
    gap: 0.75rem;
    padding-right: 0.75rem;
}

.mark-ribbon__chip {
    min-width: 10.5rem;
    height: 3.25rem;
}

.mark-ribbon__name {
    letter-spacing: -0.01em;
}

@keyframes mark-ribbon-slide {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

@media (max-width: 767.98px) {
    .mark-ribbon__chip {
        min-width: 8.5rem;
        height: 2.85rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mark-ribbon__track {
        animation: none;
    }

    .mark-ribbon__viewport {
        overflow-x: auto;
        mask-image: none;
        -webkit-mask-image: none;
    }
}

