/* Homepage: full-bleed hero stack, overlay nav, scroll snap */

html.magazine-home-html--snap {
  scroll-snap-type: y mandatory;
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html.magazine-home-html--snap {
    scroll-snap-type: none;
    scroll-behavior: auto;
  }
}

.magazine-home-body {
  margin: 0;
  min-height: 100%;
}

.err {
  color: #b00020;
  padding: 1rem 1.5rem;
  background: #fff5f5;
  border-bottom: 1px solid #f3d0d0;
}

.section-title {
  font-size: clamp(20px, 1.5vw, 24px);
  text-transform: uppercase;
  color: var(--muted, #5c5c6f);
  margin: 0 0 0.75rem;
}

.magazine-home {
  display: block;
}

.magazine-home__hero-stack {
  position: relative;
}

.magazine-home__slide {
  position: relative;
  /* Explicit height (not only min-height) so %-sized Video.js / tech elements resolve reliably */
  height: 100vh;
  height: 100dvh;
  min-height: 100vh;
  min-height: 100dvh;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  overflow: hidden;
  isolation: isolate;
  background: var(--muse-color-brand-midnight);
}

/*
 * Last hero slide: do not use scroll-snap-stop: always, or mandatory snap has no second
 * snap target below the fold and the viewport snaps back to this slide when content follows.
 */
.magazine-home__hero-stack .magazine-home__slide:last-of-type {
  scroll-snap-stop: normal;
}

/*
 * Full-slide navigation target (mouse-only via magazine-home.js). Sits above media, below overlay copy;
 * overlay-inner is pointer-events: auto so title/description/CTA stay hoverable separately.
 */
.magazine-home__slide-hit {
  position: absolute;
  inset: 0;
  z-index: 1;
  cursor: pointer;
}

html.magazine-home-hero-video-controls-visible .magazine-home__slide-hit {
  bottom: 42px;
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home__slide {
    scroll-snap-align: none;
    scroll-snap-stop: normal;
  }
}

.magazine-home__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  /* Stable compositing layer for video (avoids brief blank after play until scroll) */
  transform: translateZ(0);
}

/*
 * Hero teaser variants (landscape vs portrait). Exactly one layer stays visible; JS mirrors viewport
 * aspect (width/height) so mobile landscape uses landscape assets and tall/desktop-narrow uses portrait.
 */
.magazine-home__media--orientation-aware .magazine-home__media-layer {
  position: absolute;
  inset: 0;
  transform: translateZ(0);
}

.magazine-home__media--orientation-aware .magazine-home__media-layer--inactive {
  visibility: hidden;
  pointer-events: none;
  z-index: 0;
}

.magazine-home__media--orientation-aware .magazine-home__media-layer--active {
  visibility: visible;
  pointer-events: auto;
  z-index: 1;
}

.magazine-home__brightcove {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.magazine-home__brightcove .video-js,
.magazine-home__brightcove .video-js .vjs-tech {
  pointer-events: none;
}

/* vjs-fluid uses padding-top aspect ratio and fights fill layout — hero uses vjs-fill + absolute fill */
.magazine-home__brightcove video-js.video-js {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  min-width: 0;
}

.magazine-home__brightcove .video-js {
  padding-top: 0 !important;
}

.magazine-home__brightcove .video-js .vjs-tech {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
}

/* Poster can stay on top of the tech after load; hide for chromeless full-bleed */
.magazine-home__brightcove .vjs-poster {
  display: none !important;
}

.magazine-home__brightcove .vjs-big-play-button {
  display: none !important;
}

.magazine-home__brightcove .vjs-picture-in-picture-control,
.magazine-home__brightcove .vjs-pip-button {
  display: none !important;
}

/*
 * Seek track height: default skin grows the bar on hover — keep a constant thickness.
 * (Brightcove may also use transform; neutralize hover/focus.)
 */
.magazine-home__brightcove .video-js {
  --hero-vjs-progress-height: 4px;
}

.magazine-home__brightcove .video-js .vjs-progress-holder,
.magazine-home__brightcove .video-js .vjs-progress-control:hover .vjs-progress-holder,
.magazine-home__brightcove .video-js .vjs-progress-control:focus .vjs-progress-holder,
.magazine-home__brightcove .video-js .vjs-progress-control.vjs-sliding .vjs-progress-holder {
  height: var(--hero-vjs-progress-height) !important;
  min-height: var(--hero-vjs-progress-height) !important;
  max-height: var(--hero-vjs-progress-height) !important;
  transform: none !important;
}

.magazine-home__brightcove .video-js .vjs-load-progress div,
.magazine-home__brightcove .video-js .vjs-play-progress {
  height: 100% !important;
}

/* Elapsed portion of the seek bar (Brightcove / Video.js) */
.magazine-home__brightcove .video-js .vjs-play-progress {
  background: #02c8ff !important;
}
/* Prevent the progress bar container from expanding on hover */
.video-js .vjs-progress-control:hover .vjs-progress-holder {
  font-size: 1em !important;
  margin: 0 !important;
}

/* Prevent the seek handle (the circle) from enlarging */
.video-js .vjs-progress-control:hover .vjs-play-progress:before {
  display: none; /* Hides the handle entirely on hover if desired */
  /* Or use the line below to just keep it the same size */
  /* font-size: 1em !important; */
}

/* Ensure the control bar height remains constant */
.video-js .vjs-control-bar {
  transform: none !important;
}
.video-js .vjs-progress-control {
  top: -.3em !important;
  height: .3em !important;
}


.magazine-home__poster {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
}

.magazine-home__poster-fallback {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, #1a1a2e 0%, #3d3d5c 100%);
}

.magazine-home__overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: flex-start;
  padding: 6rem clamp(1.5rem, 5vw, 3.5rem) 4.5rem;
  pointer-events: none;
  background: linear-gradient(
    to top,
    rgba(7, 24, 45, 0.92) 0%,
    rgba(7, 24, 45, 0.45) 48%,
    transparent 78%
  );
}

/*
 * Native control bar visible (rail toggle): do not paint the text gradient over the player chrome;
 * lighten scrim so controls stay readable; lift copy/CTA above the bar.
 */
/*
 * When native controls show: overlay stops above the bar. `bottom` = gap above control chrome.
 * clamp(MIN, PREFERRED, MAX): use 12vmin unless it’s below 5.25rem or above 8rem — responsive band.
 * Slightly less than the raw clamp so the scrim sits ~35px closer to the bar.
 */
html.magazine-home-hero-video-controls-visible .magazine-home__slide .magazine-home__overlay {
  inset: unset;
  top: 0;
  right: 0;
  left: 0;
  bottom: 42px;
  height: auto;
  padding: 5.5rem clamp(1.5rem, 5vw, 3.5rem) clamp(2rem, 5vw, 3.25rem);
  background: linear-gradient(
    to top,
    rgba(7, 24, 45, 0.52) 0%,
    rgba(7, 24, 45, 0.2) 46%,
    transparent 74%
  );
  transition:
    bottom 0.2s ease,
    padding 0.2s ease,
    background 0.2s ease;
}

@media (prefers-reduced-motion: reduce) {
  html.magazine-home-hero-video-controls-visible .magazine-home__slide .magazine-home__overlay {
    transition: none;
  }
}

/*
 * Brightcove often ignores inactivityTimeout; when native controls are on, keep the bar from fading
 * (vjs-user-inactive normally lowers opacity — override + kill transitions).
 */
html.magazine-home-hero-video-controls-visible .magazine-home__brightcove .video-js .vjs-control-bar {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  transition: none !important;
  transform: none !important;
}

html.magazine-home-hero-video-controls-visible .magazine-home__brightcove .video-js.vjs-user-inactive .vjs-control-bar {
  opacity: 1 !important;
  visibility: visible !important;
  transition: none !important;
  transform: none !important;
}

.magazine-home__overlay-inner {
  width: 100%;
  max-width: min(1120px, calc(100vw - 2.5rem));
  pointer-events: auto;
}

/*
 * Visually hide hero copy until magazine-home.js runs (opacity only — stays in the accessibility tree).
 * Noscript block restores visibility when scripts are off.
 */
html.magazine-home-hero-text-hidden .magazine-home__slide .magazine-home__title,
html.magazine-home-hero-text-hidden .magazine-home__slide .magazine-home__description {
  opacity: 0;
}

.mh-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;
}

.magazine-home__title {
  margin: 0 0 1rem;
  font-size: clamp(32px, 2.5vw, 52px);
  font-weight: 300;
  line-height: 1.12;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
}

.magazine-home__description {
  margin: 2.4rem 0;
  /* px + clamp: muse root is often 62.5% (10px) so rem here was ~10px */
  font-size: clamp(18px, 1.5vw, 24px);
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);
}

.magazine-home__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.magazine-home__cta {
  position: relative;
  z-index: 1;
  pointer-events: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.5rem;
  font-size: clamp(16px, 2vw, 19px);
  font-weight: 600;
  text-decoration: none;
  color: var(--muse-color-brand-midnight);
  background: #fff;
  border-radius: 999px;
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.magazine-home__cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.3);
}

.magazine-home__cta:focus-visible {
  outline: 2px solid var(--muse-color-brand-medium-blue-40);
  outline-offset: 3px;
}

.magazine-home__rest {
  padding: 2.5rem 1.5rem 3rem;
  margin-top: 25px;
  margin-bottom: 25px;
}

/*
 * One snap target per band — not the whole .magazine-home__rest (too tall for a single snap).
 * scroll-margin-top: plain margin/padding do not offset snap alignment; scroll-margin does.
 */
.magazine-home__rest > section {
  scroll-snap-align: start;
  scroll-snap-stop: normal;
  scroll-margin-top: 10rem;
}

.latest-wrap {
  margin-top: 2.5rem;
}

.teaser {
  background: #fff;
  border: 1px solid var(--border, #e8e8ee);
  overflow: hidden;
}

.teaser__link,
.teaser__static {
  display: block;
  color: inherit;
  text-decoration: none;
}

.teaser__link:hover .teaser__title {
  text-decoration: underline;
}

.teaser__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1200 / 675;
  object-fit: cover;
}

.teaser--card .teaser__media img {
  aspect-ratio: 16 / 9;
}

.teaser__media--video-placeholder {
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, #1a1a2e 0%, #3d3d5c 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 0.85rem;
}

.teaser__media--brightcove video-js.video-js {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0;
}

.teaser__media--brightcove .video-js .vjs-tech {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
}

.teaser__text {
  padding: 1rem 1.25rem 1.25rem;
}

.teaser__title {
  margin: 0;
  font-size: clamp(16px, 1vw, 19px);
  font-weight: 500;
}

.teaser--card .teaser__title {
  font-size: clamp(16px, 1vw, 19px);
}

.featured__grid {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

.empty {
  color: var(--muted, #5c5c6f);
  padding: 2rem;
  text-align: center;
}

/* Fixed hero controls: launch once (see magazine-home.js + GSAP), then stay on the right */
.magazine-home-floating-nav {
  position: fixed;
  inset: 0;
  /* Above fixed site header (200) so chevrons and dots receive hover and focus. */
  z-index: 210;
  pointer-events: none;
}

/* Hero slide count + active slide (built in magazine-home.js when ≥2 slides). */
.magazine-home-floating-nav__slide-dots {
  position: fixed;
  right: calc(
    var(--magazine-home-slide-dots-inline-end, 24px) + env(safe-area-inset-right, 0px)
  );
  bottom: calc(var(--magazine-home-slide-dots-bottom, 40px) + env(safe-area-inset-bottom, 0px));
  top: auto;
  left: auto;
  z-index: 210;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  list-style: none;
  transform: none;
  pointer-events: auto;
}

@media (max-width: 768px) {
  .magazine-home-floating-nav__slide-dots {
    flex-direction: column;
    bottom: auto;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
  }
}

.magazine-home-floating-nav__slide-dot {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 12px;
  background: transparent;
  cursor: pointer;
  color: inherit;
}

.magazine-home-floating-nav__slide-dot::after {
  content: '';
  display: block;
  box-sizing: border-box;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.55);
  background: rgba(255, 255, 255, 0.12);
  transition:
    transform 0.22s ease,
    background 0.22s ease,
    border-color 0.22s ease,
    box-shadow 0.22s ease;
}

.magazine-home-floating-nav__slide-dot:hover::after {
  border-color: rgba(255, 255, 255, 0.85);
  background: rgba(255, 255, 255, 0.22);
}

.magazine-home-floating-nav__slide-dot--active::after {
  transform: scale(1.45);
  border-color: var(--magazine-home-chevron-accent, #ffffff);
  background: var(--magazine-home-chevron-accent, #ffffff);
  box-shadow: 0 0 12px rgba(255, 255, 255, 0.4);
}

.magazine-home-floating-nav__slide-dot:focus-visible {
  outline: 2px solid var(--magazine-home-chevron-accent, #02c8ff);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home-floating-nav__slide-dot::after {
    transition: none;
  }
}

.magazine-home-floating-nav__rail {
  position: fixed;
  left: 0;
  top: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border-radius: 16px;
  background: rgba(7, 24, 45, 0.82);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
  backdrop-filter: blur(10px);
  pointer-events: auto;
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home-floating-nav__rail {
    transition: none;
  }
}

.magazine-home-floating-nav__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 12px;
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
  cursor: pointer;
  transition: background 0.15s ease;
}

.magazine-home-floating-nav__btn:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.2);
}

.magazine-home-floating-nav__btn:focus-visible {
  outline: 2px solid var(--muse-color-brand-medium-blue-40);
  outline-offset: 2px;
}

.magazine-home-floating-nav__btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.magazine-home-floating-nav__btn[aria-pressed='true'] {
  background: rgba(255, 255, 255, 0.22);
}

.magazine-home-floating-nav__icon[hidden],
.magazine-home-floating-nav__icon--play[hidden],
.magazine-home-floating-nav__icon--volume[hidden] {
  display: none !important;
}

.magazine-home-floating-nav__icon,
.magazine-home-floating-nav__chevron-svg {
  pointer-events: none;
}

.magazine-home-floating-nav--settled .magazine-home-floating-nav__rail {
  will-change: auto;
}

/* Hero stack scrolled out of view: rail/chevron hidden after GSAP exit (motion) or instantly (reduced motion). */
.magazine-home-floating-nav--off-hero .magazine-home-floating-nav__rail,
.magazine-home-floating-nav--off-hero .magazine-home-floating-nav__chevron-chrome,
.magazine-home-floating-nav--off-hero .magazine-home-floating-nav__slide-dots {
  visibility: hidden;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home-floating-nav--off-hero .magazine-home-floating-nav__rail,
  .magazine-home-floating-nav--off-hero .magazine-home-floating-nav__chevron-chrome,
  .magazine-home-floating-nav--off-hero .magazine-home-floating-nav__slide-dots {
    opacity: 0;
    transition: none;
  }
}

/* --- Hero control chrome: top/bottom chevrons (stroke-draw intro in JS) --- */
/*
 * Clear fixed `.site-header--overlay` (site-header.css: logo height + vertical padding + 1px border).
 * Tweak if masthead height changes.
 */
:root {
  --magazine-home-site-header-clearance: 3.75rem;
  /* Gap so the bump’s flat edge sits off the masthead / safe-area bottom (screen edge). */
  --magazine-home-chevron-chrome-screen-gap: 44px;
  /* Story Lab chevron chrome (Figma ~28:1684): white strokes, no pill fill */
  --magazine-home-chevron-accent: #ffffff;
  /*
   * Chevron size: `--magazine-home-chevron-bump-width` caps width; height follows aspect vars (57∶30).
   * Optional: `--magazine-home-chevron-draw-scale-x` / `-y` scale the V inside the viewBox (default 1).
   */
  --magazine-home-chevron-bump-width: 57px;
  --magazine-home-chevron-svg-aspect-w: 57;
  --magazine-home-chevron-svg-aspect-h: 30;
  --magazine-home-chevron-draw-scale-y: 1;
  --magazine-home-chevron-draw-scale-x: 1;
  /* Prev/next when disabled: slide this far (see `.btn--chevron-edge:disabled`). */
  --magazine-home-chevron-dismiss-slide-px: 96px;
  /* Last slide: chevron strokes ↔ “More” crossfade (see `.chevron-more-label` / `.chevron-draw-group`). */
  --magazine-home-chevron-more-crossfade-ms: 320ms;
  --magazine-home-chevron-more-crossfade-stagger-ms: 90ms;

  /* Last-slide “More” (paired with bottom chevron crossfade) */
  --magazine-home-more-label-color: #ffffff;
  --magazine-home-more-label-hover-color: rgba(255, 255, 255, 0.82);
  /* Slide dots: Story Lab ~26:1537 — bottom-right, plus safe-area */
  --magazine-home-slide-dots-bottom: 40px;
  --magazine-home-slide-dots-inline-end: 24px;
}

.magazine-home-floating-nav__chevron-chrome {
  position: fixed;
  inset: 0;
  z-index: 210;
  pointer-events: none;
  overflow: visible;
}

.magazine-home-floating-nav__chevron-edge {
  position: fixed;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: max(0px, env(safe-area-inset-left, 0px));
  padding-right: max(0px, env(safe-area-inset-right, 0px));
  pointer-events: none;
  overflow: visible;
}

.magazine-home-floating-nav__chevron-edge--top {
  top: 0;
  align-items: flex-start;
  /* Sit below fixed site header (z-index 100); hero chrome stays above header for tap targets */
  padding-top: calc(
    env(safe-area-inset-top, 0px) + var(--magazine-home-site-header-clearance) +
      var(--magazine-home-chevron-chrome-screen-gap, 10px)
  );
}

.magazine-home-floating-nav__chevron-edge--bottom {
  bottom: 0;
  align-items: flex-end;
  padding-bottom: calc(
    max(0px, env(safe-area-inset-bottom, 0px)) + var(--magazine-home-chevron-chrome-screen-gap, 10px)
  );
}

.magazine-home-floating-nav__btn--chevron-edge {
  pointer-events: auto;
  position: relative;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  max-width: min(var(--magazine-home-chevron-bump-width), calc(100vw - 1.5rem));
  flex-shrink: 0;
  /* Minimum target + hover area for mouse tracking / touch (stroke art is thinner). */
  min-width: 48px;
  min-height: 48px;
  height: auto;
  overflow: visible;
  padding: 0.75rem;
  border: none;
  border-radius: 0;
  background: transparent;
  color: var(--magazine-home-chevron-accent, #02c8ff);
  opacity: 1;
  transform: none;
  transition:
    transform 0.42s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.38s ease;
}

/* Bottom next only: always in layout so opacity can crossfade (avoid `hidden` / display:none). */
.magazine-home-floating-nav__btn--chevron-edge[data-mh-action='next']
  .magazine-home-floating-nav__chevron-more-label {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  height: 100%;
  margin: 0;
  font-size: 1.8125rem;
  font-weight: 600;
  color: var(--magazine-home-more-label-color, #124fc9);
  pointer-events: none;
  opacity: 0;
  transform: translateY(4px);
  transition:
    color var(--magazine-home-chevron-more-crossfade-ms, 320ms) ease,
    opacity var(--magazine-home-chevron-more-crossfade-ms, 320ms) ease,
    transform var(--magazine-home-chevron-more-crossfade-ms, 320ms) ease;
  transition-delay: 0ms;
}
.magazine-home-floating-nav__btn--chevron-edge[data-mh-action='next']:hover .magazine-home-floating-nav__chevron-more-label {
  color: var(--magazine-home-more-label-hover-color, #124fc9);
}
/* Match base selector specificity: base uses `[data-mh-action='next']` so this must include it or `opacity: 0` wins. */
.magazine-home-floating-nav__btn--chevron-edge.magazine-home-floating-nav__btn--chevron-bottom-more[data-mh-action='next']
  .magazine-home-floating-nav__chevron-more-label {
  opacity: 1;
  transition-delay: var(--magazine-home-chevron-more-crossfade-stagger-ms, 90ms);
}

.magazine-home-floating-nav__chevron-svg--bottom .magazine-home-floating-nav__chevron-draw-group {
  opacity: 1;
  transition: opacity var(--magazine-home-chevron-more-crossfade-ms, 320ms) ease;
}

/* Same bump as chevron: keep fill + frame; fade strokes out (paired with “More” label fade-in). */
.magazine-home-floating-nav__btn--chevron-bottom-more
  .magazine-home-floating-nav__chevron-svg--bottom
  .magazine-home-floating-nav__chevron-draw-group {
  opacity: 0;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home-floating-nav__btn--chevron-edge[data-mh-action='next']
    .magazine-home-floating-nav__chevron-more-label {
    transition: none;
    transform: none;
  }

  .magazine-home-floating-nav__btn--chevron-edge.magazine-home-floating-nav__btn--chevron-bottom-more[data-mh-action='next']
    .magazine-home-floating-nav__chevron-more-label {
    animation: none;
    text-shadow: 0 0 14px rgba(0, 0, 0, 0.45);
  }

  .magazine-home-floating-nav__chevron-svg--bottom .magazine-home-floating-nav__chevron-draw-group {
    transition: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home-floating-nav__btn--chevron-edge {
    transition: none;
  }
}

.magazine-home-floating-nav__btn--chevron-edge:hover:not(:disabled),
.magazine-home-floating-nav__btn--chevron-edge:focus-visible:not(:disabled) {
  /* Override `.magazine-home-floating-nav__btn:hover` rail pill tint — chevron buttons share `.magazine-home-floating-nav__btn`. */
  background: transparent !important;
}

.magazine-home-floating-nav__btn--chevron-edge:focus-visible {
  outline: 2px solid var(--magazine-home-chevron-accent, #02c8ff);
  outline-offset: 6px;
  border-radius: 4px;
}

/*
 * Inactive = `disabled` on prev (first slide) / next (last slide); see magazine-home.js `syncTransportUi`.
 * Last-slide “More” stays enabled on-hero; next disables once `magazine-home-floating-nav--off-hero` applies.
 * Slide off-screen (no `visibility: hidden` — it cannot transition and made the bump “pop” away).
 * Keep intrinsic size (no width/height collapse) so off-hero `.chevron-chrome` motion still has layout.
 */
.magazine-home-floating-nav__btn--chevron-edge[data-mh-action='prev']:disabled {
  opacity: 0;
  transform: translateY(calc(-1 * var(--magazine-home-chevron-dismiss-slide-px, 96px)));
  pointer-events: none;
  cursor: default;
}

.magazine-home-floating-nav__btn--chevron-edge[data-mh-action='next']:disabled {
  opacity: 0;
  transform: translateY(var(--magazine-home-chevron-dismiss-slide-px, 96px));
  pointer-events: none;
  cursor: default;
}

/*
 * Last slide “More”: if the control were disabled here, the hint would not receive clicks; JS keeps it
 * enabled on-hero. This rule remains for any edge case where both classes and :disabled apply together.
 */
.magazine-home-floating-nav__btn--chevron-edge.magazine-home-floating-nav__btn--chevron-bottom-more[data-mh-action='next']:disabled {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .magazine-home-floating-nav__btn--chevron-edge[data-mh-action='prev']:disabled,
  .magazine-home-floating-nav__btn--chevron-edge[data-mh-action='next']:disabled {
    transform: none;
  }
}

.magazine-home-floating-nav__chevron-svg {
  display: block;
  /* Used width + explicit height keeps 57∶30; avoids non-uniform scale (tick / squashed V) when
   * intrinsic SVG height="30" collided with a large CSS width or aspect-ratio failed to apply. */
  --ch-w: min(var(--magazine-home-chevron-bump-width), calc(100vw - 1.5rem));
  width: var(--ch-w);
  height: calc(
    var(--ch-w) * var(--magazine-home-chevron-svg-aspect-h) / var(--magazine-home-chevron-svg-aspect-w)
  );
  overflow: visible;
}

.magazine-home-floating-nav__chevron-draw-group {
  transform: scale(var(--magazine-home-chevron-draw-scale-x, 1), var(--magazine-home-chevron-draw-scale-y, 1));
  transform-origin: center;
  transform-box: fill-box;
}

.magazine-home-floating-nav__chevron-draw {
  fill: none;
  stroke: var(--magazine-home-chevron-accent, #ffffff);
  stroke-width: 2;
  stroke-linecap: square;
  stroke-linejoin: miter;
  filter: none;
}

.magazine-home-floating-nav--settled .magazine-home-floating-nav__chevron-draw,
.magazine-home-floating-nav--settled .magazine-home-floating-nav__chevron-draw-group {
  will-change: auto;
}
