/* whatimado-map — full-height background; graph renders in upper band only */
whatimado-map {
  display: block;
  position: absolute;
  top: 0;
  left: var(--v2-center-gutter);
  right: var(--v2-center-gutter);
  height: var(--v2-map-band-h);
  z-index: 1;
  overflow: hidden;
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}

body.v2-app[data-phase="open"] {
  --v2-map-graph-shift-y: 0;
}

body.v2-app.is-hero-dismissing {
  --v2-map-graph-shift-y: 0;
}

body.v2-app[data-phase="open"]:not(.is-hero-dismissing) whatimado-map {
  --v2-map-svg-h: calc(
    var(--whatimado-frame-top-default) - var(--v2-kicker-reserve) - var(--v2-hero-node-gap)
      + var(--v2-map-band-offset-top)
  );
}

body.v2-app[data-phase="open"]:not(.is-hero-dismissing) whatimado-map .whatimado-map__stage {
  top: var(--v2-map-band-offset-top);
}

/*
 * Chat and missions: the stage is only the gap above the prompt frame.
 * --v2-docked-frame-top is the frame's top (set while the frame moves).
 */
body.v2-app.is-hero-dismissing whatimado-map,
body.v2-app:not([data-phase="open"]) whatimado-map {
  --v2-map-svg-h: calc(var(--v2-docked-frame-top, var(--whatimado-frame-top-default)) - var(--v2-map-frame-clearance));
}

/* Desktop: the map fills the column and slides under the frosted prompt. */
@media (min-width: 901px) {
  body.v2-app:not([data-phase="open"]) whatimado-map,
  body.v2-app.is-hero-dismissing whatimado-map {
    height: 100%;
    --v2-map-svg-h: 100%;
  }
}

body.v2-app.is-hero-dismissing whatimado-map .whatimado-map__stage,
body.v2-app:not([data-phase="open"]) whatimado-map .whatimado-map__stage {
  top: 0;
}

whatimado-map .whatimado-map__chrome {
  position: absolute;
  top: 0.55rem;
  left: 0.7rem;
  right: 0.65rem;
  z-index: 8;
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  pointer-events: none;
}

whatimado-map .whatimado-map__timeline-col {
  margin-left: auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.85rem;
  min-width: 0;
  max-width: 100%;
  pointer-events: none;
}

whatimado-map .whatimado-map__timeline-col:has(#map-timeline:not([hidden])) {
  flex: 1 1 auto;
  margin-left: 0;
  align-items: stretch;
  width: auto;
  max-width: none;
}

whatimado-map:has(#map-timeline:not([hidden])) .whatimado-map__svg {
  transform: translateY(56px);
}

whatimado-map .whatimado-map__timeline-tools {
  display: flex;
  justify-content: flex-end;
  gap: 0.4rem;
  pointer-events: none;
}

whatimado-map .whatimado-map__chrome .whatimado-map__new-roadmap,
whatimado-map .whatimado-map__chrome .whatimado-map__you-btn,
whatimado-map .whatimado-map__chrome .whatimado-map__link-btn,
whatimado-map .whatimado-map__chrome .v2-map-timeline {
  pointer-events: auto;
}

whatimado-map .whatimado-map__chrome .whatimado-map__new-roadmap,
whatimado-map .whatimado-map__chrome .whatimado-map__you-btn,
whatimado-map .whatimado-map__chrome .whatimado-map__link-btn {
  position: static;
  top: auto;
  right: auto;
}

whatimado-map[data-mode="ghost"],
whatimado-map[data-mode="faint"],
whatimado-map[data-mode="visible"] {
  opacity: 1;
}

whatimado-map[data-mode="ghost"] .whatimado-map__pan-surface,
whatimado-map[data-mode="faint"] .whatimado-map__pan-surface,
whatimado-map[data-mode="visible"] .whatimado-map__pan-surface,
whatimado-map[data-mode="ghost"] .whatimado-map__stage,
whatimado-map[data-mode="faint"] .whatimado-map__stage,
whatimado-map[data-mode="visible"] .whatimado-map__stage,
whatimado-map[data-mode="ghost"] .whatimado-map__svg,
whatimado-map[data-mode="faint"] .whatimado-map__svg,
whatimado-map[data-mode="visible"] .whatimado-map__svg {
  pointer-events: auto;
  cursor: grab;
  touch-action: none;
}

whatimado-map .whatimado-map__pan {
  will-change: transform;
}

whatimado-map.is-panning,
whatimado-map.is-panning .whatimado-map__pan-surface,
whatimado-map.is-panning .whatimado-map__stage,
whatimado-map.is-panning .whatimado-map__svg {
  cursor: grabbing;
}

body.v2-app.is-frame-dragging whatimado-map,
body.v2-app.is-frame-dragging whatimado-map * {
  pointer-events: none !important;
}

body.v2-app.is-frame-dragging whatimado-map .whatimado-map__stage {
  transition: none;
}

/*
 * Stage/SVG accept hits so node :hover / pointerenter work.
 * Empty map band still pans via main; pan-surface covers below the stage.
 */
whatimado-map[data-mode="ghost"] .whatimado-map__stage,
whatimado-map[data-mode="faint"] .whatimado-map__stage,
whatimado-map[data-mode="visible"] .whatimado-map__stage {
  pointer-events: auto;
}

whatimado-map .whatimado-map__pan-surface {
  position: absolute;
  inset: 0;
  z-index: 1;
}

whatimado-map[data-mode="ghost"] .whatimado-map__svg,
whatimado-map[data-mode="faint"] .whatimado-map__svg,
whatimado-map[data-mode="visible"] .whatimado-map__svg {
  pointer-events: auto;
}

whatimado-map .whatimado-map__layer--ghost,
whatimado-map .whatimado-map__edge--ghost,
whatimado-map .whatimado-map__edge--live {
  pointer-events: none;
}

whatimado-map .whatimado-map__new-roadmap {
  z-index: 8;
  pointer-events: auto;
  display: inline-flex;
  align-items: center;
  height: 2.15rem;
  box-sizing: border-box;
  border: 1px solid rgba(245, 213, 71, 0.55);
  border-radius: var(--v2-btn-radius);
  background: rgba(6, 10, 12, 0.72);
  color: var(--v2-yellow);
  font: inherit;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0 0.7rem;
  cursor: pointer;
  flex: 0 0 auto;
}

body.v2-app whatimado-map .whatimado-map__new-roadmap {
  border-radius: var(--v2-btn-radius);
}

whatimado-map .whatimado-map__you-btn {
  z-index: 8;
  width: 2.2rem;
  height: 2.2rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--v2-border);
  border-radius: 50%;
  background: var(--v2-glass-bg);
  backdrop-filter: blur(var(--v2-glass-blur)) saturate(var(--v2-glass-saturate));
  -webkit-backdrop-filter: blur(var(--v2-glass-blur)) saturate(var(--v2-glass-saturate));
  color: var(--v2-yellow);
  cursor: pointer;
  pointer-events: auto;
}

body.v2-app whatimado-map .whatimado-map__you-btn {
  border-radius: 50%;
}

whatimado-map .whatimado-map__you-crosshair {
  display: block;
  width: 1.12rem;
  height: 1.12rem;
}

whatimado-map .whatimado-map__you-btn:hover,
whatimado-map .whatimado-map__you-btn.is-active {
  background: rgba(4, 12, 14, calc(var(--v2-glass-alpha) + 0.12));
  color: var(--v2-yellow-bright);
  border-color: rgba(245, 213, 71, 0.7);
}

whatimado-map .whatimado-map__link-btn {
  z-index: 8;
  width: 2.2rem;
  height: 2.2rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--v2-border);
  border-radius: 50%;
  background: var(--v2-glass-bg);
  backdrop-filter: blur(var(--v2-glass-blur)) saturate(var(--v2-glass-saturate));
  -webkit-backdrop-filter: blur(var(--v2-glass-blur)) saturate(var(--v2-glass-saturate));
  color: rgba(232, 244, 242, 0.72);
  cursor: pointer;
  pointer-events: auto;
}

body.v2-app whatimado-map .whatimado-map__link-btn {
  border-radius: 50%;
}

whatimado-map .whatimado-map__link-icon {
  display: none;
  width: 1.05rem;
  height: 1.05rem;
}

whatimado-map .whatimado-map__link-btn.is-linked {
  color: var(--v2-yellow);
  border-color: rgba(245, 213, 71, 0.7);
}

whatimado-map .whatimado-map__link-btn.is-linked .whatimado-map__link-icon--on,
whatimado-map .whatimado-map__link-btn:not(.is-linked) .whatimado-map__link-icon--off {
  display: block;
}

whatimado-map .whatimado-map__link-btn:hover {
  color: var(--v2-yellow-bright);
}

whatimado-map[data-mode="ghost"],
whatimado-map[data-mode="faint"],
whatimado-map[data-mode="visible"] {
  pointer-events: none;
}

whatimado-map .whatimado-map__node--live {
  pointer-events: auto;
  cursor: pointer;
  touch-action: none;
  outline: none;
}

whatimado-map .whatimado-map__node--live:focus,
whatimado-map .whatimado-map__node--live:focus-visible {
  outline: none;
}

whatimado-map .whatimado-map__node--live.is-dragging {
  cursor: grabbing;
}

/* Unscaled hit pad — body is visual-only at scale(0.5) */
whatimado-map .whatimado-map__node-hit {
  fill: rgba(0, 0, 0, 0.001);
  stroke: none;
  pointer-events: all;
  cursor: pointer;
}

/*
 * Idle float — CSS only, no pointer required. Lives on a wrapper so hover/select
 * scale (transform on .whatimado-map__node-body) cannot replace this animation.
 */
whatimado-map .whatimado-map__node-float {
  --node-float-amp: -12px;
  transform-box: fill-box;
  transform-origin: center;
  animation-name: whatimado-node-float;
  animation-duration: var(--node-float-duration, 4.2s);
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-delay: var(--node-float-delay, 0s);
  animation-play-state: running;
}

whatimado-map .whatimado-map__node--live:hover .whatimado-map__node-float,
whatimado-map .whatimado-map__node--live.is-hover .whatimado-map__node-float,
whatimado-map .whatimado-map__node--live.is-selected .whatimado-map__node-float,
whatimado-map .whatimado-map__node--live.is-dragging .whatimado-map__node-float,
whatimado-map .whatimado-map__node--live.is-path-preview .whatimado-map__node-float {
  animation-play-state: running;
}

@keyframes whatimado-node-float {
  0%,
  100% {
    transform: translate3d(0, 0, 0);
  }

  50% {
    transform: translate3d(0, var(--node-float-amp, -12px), 0);
  }
}

whatimado-map .whatimado-map__node--live.is-entering {
  animation: whatimado-node-enter 0.52s ease-out both;
}

@keyframes whatimado-node-enter {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

whatimado-map.is-dismissing-ghost .whatimado-map__layer--ghost {
  opacity: 0;
  transition: opacity 0.45s ease;
}

whatimado-map.is-ghost-dismissed .whatimado-map__layer--ghost {
  display: none;
}

whatimado-map[data-reading-pinned="1"] .whatimado-map__stage,
whatimado-map[data-focus-pinned="1"] .whatimado-map__stage {
  transition: none;
}

whatimado-map .whatimado-map__stage {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: var(--v2-map-svg-h);
  z-index: 2;
  overflow: visible;
  transition:
    height var(--v2-hero-motion-duration) var(--v2-hero-motion-ease),
    top var(--v2-hero-motion-duration) var(--v2-hero-motion-ease),
    filter var(--v2-hero-motion-duration) var(--v2-hero-motion-ease);
  filter:
    brightness(calc(1 - var(--v2-map-dim, 0) * 0.38))
    saturate(calc(1 - var(--v2-map-dim, 0) * 0.22))
    blur(calc(var(--v2-map-dim, 0) * 0.6px));
}

whatimado-map .whatimado-map__stage,
whatimado-map .whatimado-map__svg {
  width: 100%;
}

whatimado-map .whatimado-map__svg {
  position: absolute;
  inset: 0;
  z-index: 1;
  height: 100%;
  overflow: visible;
}

whatimado-map .whatimado-map__layer--ghost,
whatimado-map .whatimado-map__layer--live {
  opacity: 1;
}

whatimado-map .whatimado-map__layer--live {
  isolation: isolate;
}

/* Dotted connectors between path nodes */
whatimado-map .whatimado-map__edge--ghost,
whatimado-map .whatimado-map__edge--live {
  fill: none;
  stroke: var(--v2-teal);
  stroke-width: var(--v2-map-edge-width, 1.45);
  stroke-linecap: round;
  stroke-dasharray: 1.35 5.75;
  opacity: 1;
}

/* Node map stays fully opaque — glass applies to frame/sidebars only */
whatimado-map .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live text {
  opacity: 1;
}

/* Shared node body — visual scale only; layout radius stays constant */
whatimado-map .whatimado-map__node-body {
  stroke: none;
  outline: none;
  transform-box: fill-box;
  transform-origin: center;
  transition:
    fill 0.42s cubic-bezier(0.4, 0, 0.2, 1),
    stroke 0.42s cubic-bezier(0.4, 0, 0.2, 1),
    stroke-width 0.42s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.55s cubic-bezier(0.34, 1.45, 0.64, 1),
    filter 0.45s cubic-bezier(0.4, 0, 0.2, 1);
}

whatimado-map .whatimado-map__node--live.is-support .whatimado-map__node-body {
  fill: var(--v2-teal);
  transform: scale(0.78);
  stroke: #8a9399;
  stroke-width: 0.75;
}

whatimado-map .whatimado-map__node--live.is-support.is-start .whatimado-map__node-body {
  transform: scale(1);
}

whatimado-map .whatimado-map__node--live.is-roadmap .whatimado-map__node-body {
  transform: scale(0.96);
}

whatimado-map .whatimado-map__node--live.is-mission .whatimado-map__node-body {
  transform: scale(0.84);
}

whatimado-map .whatimado-map__node--live.is-task .whatimado-map__node-body {
  transform: scale(0.7);
}

whatimado-map .whatimado-map__node--live.is-more .whatimado-map__node-body {
  fill: transparent;
  stroke: var(--v2-teal);
  stroke-width: 1.2;
  transform: none;
}

whatimado-map .whatimado-map__node--live.is-complete .whatimado-map__node-body {
  fill: var(--v2-yellow);
  stroke: none;
}

whatimado-map .whatimado-map__node--live.is-complete text {
  fill: var(--v2-yellow);
}

whatimado-map .whatimado-map__node--live.is-selected .whatimado-map__node-body {
  fill: var(--v2-yellow);
  transform: scale(1.22);
  stroke: none;
  stroke-width: 0;
}

whatimado-map .whatimado-map__node--live.is-more .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live.is-more.is-selected .whatimado-map__node-body {
  fill: transparent;
  stroke: var(--v2-teal);
  stroke-width: 1.2;
  transform: none;
}

whatimado-map .whatimado-map__node--live text {
  font-size: 12.5px;
  stroke: #060a0c;
  stroke-width: 1px;
  paint-order: stroke fill;
  stroke-linejoin: round;
  font-family: var(--v2-font-hero);
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  pointer-events: none;
  transition: fill 0.55s cubic-bezier(0.4, 0, 0.2, 1);
}

whatimado-map .whatimado-map__leader {
  stroke: rgba(46, 232, 214, 0.55);
  stroke-width: 1px;
  stroke-dasharray: 2 3;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
  fill: none;
  pointer-events: none;
}

whatimado-map .whatimado-map__node--live.is-selected .whatimado-map__leader {
  stroke: rgba(245, 213, 71, 0.75);
}

whatimado-map .whatimado-map__node--live.is-support text {
  fill: var(--v2-teal);
}

whatimado-map .whatimado-map__node--live.is-more .whatimado-map__plus line {
  stroke: var(--v2-teal);
  stroke-width: 1.7px;
  stroke-linecap: round;
  fill: none;
  pointer-events: none;
}

whatimado-map .whatimado-map__node--live.is-selected text {
  fill: var(--v2-yellow);
  font-weight: 600;
}

whatimado-map .whatimado-map__node--live.is-alternate .whatimado-map__node-float {
  visibility: hidden;
}

whatimado-map:has(.whatimado-map__node--live.is-roadmap.is-selected) .whatimado-map__node--live.is-alternate .whatimado-map__node-float,
whatimado-map .whatimado-map__node--live.is-alternate.is-focused .whatimado-map__node-float,
whatimado-map .whatimado-map__node--live.is-alternate.is-selected .whatimado-map__node-float {
  visibility: visible;
}

whatimado-map .whatimado-map__edge.is-alternate-edge {
  visibility: hidden;
}

whatimado-map:has(.whatimado-map__node--live.is-roadmap.is-selected) .whatimado-map__edge.is-alternate-edge,
whatimado-map .whatimado-map__edge.is-alternate-edge.is-revealed {
  visibility: visible;
}

whatimado-map .whatimado-map__node--live.is-roadmap.is-alternate .whatimado-map__node-body {
  fill: #8d95a5;
  stroke: #6d7580;
  stroke-width: 0.7;
}

whatimado-map .whatimado-map__node--live.is-alternate text {
  fill: #b7bec8;
  font-weight: 500;
}

whatimado-map .whatimado-map__node--live.is-focused:not(.is-selected) .whatimado-map__node-body {
  stroke: var(--v2-yellow);
  stroke-width: 1.15;
}

whatimado-map .whatimado-map__link-pip {
  cursor: pointer;
}

whatimado-map .whatimado-map__link-pip circle {
  fill: #10211f;
  stroke: #d7fff6;
  stroke-width: 0.7;
}

whatimado-map .whatimado-map__node--live.is-alternate .whatimado-map__link-pip {
  opacity: 0.65;
}

/* Soft diffused neon aura — selected path only */
whatimado-map .whatimado-map__node-aura {
  fill: rgba(245, 213, 71, 0.65);
  stroke: none;
  pointer-events: none;
  opacity: 0;
  filter: url(#whatimado-node-aura);
  transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

whatimado-map .whatimado-map__node--live.is-selected .whatimado-map__node-aura {
  opacity: 1;
  animation: whatimado-anchor-aura-breathe 3.6s ease-in-out infinite;
}

/* You node — selected by default until a path node is chosen */
whatimado-map:not(:has(.whatimado-map__node--live.is-selected)) .whatimado-map__node--live.is-start .whatimado-map__node-body {
  fill: var(--v2-yellow);
  transform: scale(1);
  stroke: none;
  stroke-width: 0;
}

whatimado-map:not(:has(.whatimado-map__node--live.is-selected)) .whatimado-map__node--live.is-start text {
  fill: var(--v2-yellow);
  font-weight: 600;
}

whatimado-map:not(:has(.whatimado-map__node--live.is-selected)) .whatimado-map__node--live.is-start .whatimado-map__node-aura {
  opacity: 1;
  animation: whatimado-anchor-aura-breathe 3.6s ease-in-out infinite;
}

@keyframes whatimado-anchor-aura-breathe {
  0%,
  100% {
    opacity: 0.48;
  }
  50% {
    opacity: 0.78;
  }
}

/*
 * Hover / drag / path-card preview — spring pop from rest scale(0.5) + breathing glow.
 * Driven by .is-hover (map geometry), .is-dragging (touch pull) and .is-path-preview
 * (path cards). A pulled node stays lit for the whole drag and spring back home.
 */
whatimado-map .whatimado-map__node--live.is-support:not(.is-start):not(.is-selected):hover .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live.is-support.is-hover:not(.is-start):not(.is-selected) .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live.is-support.is-dragging:not(.is-start):not(.is-selected) .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live.is-support.is-path-preview:not(.is-start):not(.is-selected) .whatimado-map__node-body {
  fill: var(--node-accent, #7dffef);
  /* Stays below the selected scale(1) so selection remains visually dominant */
  transform: scale(0.92);
  stroke: color-mix(in srgb, var(--node-accent, #7dffef) 82%, white);
  stroke-width: 1.25;
  filter:
    drop-shadow(0 0 6px color-mix(in srgb, var(--node-accent, #42fff0) 95%, transparent))
    drop-shadow(0 0 16px color-mix(in srgb, var(--node-accent, #2ee8d6) 78%, transparent))
    drop-shadow(0 0 28px color-mix(in srgb, var(--node-accent, #2ee8d6) 52%, transparent));
}

whatimado-map .whatimado-map__node--live.is-support:not(.is-start):not(.is-selected):hover text,
whatimado-map .whatimado-map__node--live.is-support.is-hover:not(.is-start):not(.is-selected) text,
whatimado-map .whatimado-map__node--live.is-support.is-dragging:not(.is-start):not(.is-selected) text,
whatimado-map .whatimado-map__node--live.is-support.is-path-preview:not(.is-start):not(.is-selected) text {
  fill: var(--node-accent, #7dffef);
  font-weight: 600;
  filter: drop-shadow(0 0 8px color-mix(in srgb, var(--node-accent, #42fff0) 70%, transparent));
}

whatimado-map .whatimado-map__node--live.is-support:not(.is-start):not(.is-selected):hover .whatimado-map__node-aura,
whatimado-map .whatimado-map__node--live.is-support.is-hover:not(.is-start):not(.is-selected) .whatimado-map__node-aura,
whatimado-map .whatimado-map__node--live.is-support.is-dragging:not(.is-start):not(.is-selected) .whatimado-map__node-aura,
whatimado-map .whatimado-map__node--live.is-support.is-path-preview:not(.is-start):not(.is-selected) .whatimado-map__node-aura {
  fill: var(--node-accent, #42fff0);
  opacity: 0.88;
  animation: whatimado-path-preview-aura 2.4s ease-in-out infinite;
}

@keyframes whatimado-path-preview-aura {
  0%,
  100% {
    opacity: 0.45;
  }

  50% {
    opacity: 0.85;
  }
}

/*
 * Selection inherits the hover bloom in yellow, so the glow raised on hover carries
 * through the click instead of snapping off. Yellow stays reserved for selection.
 */
whatimado-map .whatimado-map__node--live.is-selected .whatimado-map__node-body {
  filter:
    drop-shadow(0 0 6px color-mix(in srgb, var(--v2-yellow) 95%, transparent))
    drop-shadow(0 0 16px color-mix(in srgb, var(--v2-yellow) 72%, transparent))
    drop-shadow(0 0 28px color-mix(in srgb, var(--v2-yellow) 48%, transparent));
}

/* Hovering or pulling the selected node lifts that same glow rather than replacing it */
whatimado-map .whatimado-map__node--live.is-selected.is-hover .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live.is-selected.is-dragging .whatimado-map__node-body,
whatimado-map .whatimado-map__node--live.is-selected.is-path-preview .whatimado-map__node-body {
  stroke: color-mix(in srgb, var(--v2-yellow) 80%, white);
  stroke-width: 1.25;
  filter:
    drop-shadow(0 0 9px var(--v2-yellow))
    drop-shadow(0 0 24px color-mix(in srgb, var(--v2-yellow) 85%, transparent))
    drop-shadow(0 0 40px color-mix(in srgb, var(--v2-yellow) 55%, transparent));
}

whatimado-map .whatimado-map__node--live.is-selected.is-hover .whatimado-map__node-aura,
whatimado-map .whatimado-map__node--live.is-selected.is-dragging .whatimado-map__node-aura,
whatimado-map .whatimado-map__node--live.is-selected.is-path-preview .whatimado-map__node-aura {
  animation-name: whatimado-path-preview-aura;
  animation-duration: 2.4s;
}

/*
 * Reduced motion tones down travel and spring, not the glow. Colour and opacity
 * cross-fades are not vestibular triggers, so hover/selected auras keep fading
 * and breathing — only the scale pop shrinks and the spring easing flattens.
 */
@media (prefers-reduced-motion: reduce) {
  whatimado-map,
  whatimado-map .whatimado-map__layer--ghost {
    transition: none;
  }

  whatimado-map .whatimado-map__stage {
    transition: filter 0.15s ease;
  }

  whatimado-map .whatimado-map__node-body {
    transition:
      fill 0.35s ease,
      stroke 0.35s ease,
      stroke-width 0.35s ease,
      transform 0.35s ease,
      filter 0.45s ease;
  }

  whatimado-map .whatimado-map__node--live.is-selected .whatimado-map__node-aura,
  whatimado-map:not(:has(.whatimado-map__node--live.is-selected)) .whatimado-map__node--live.is-start .whatimado-map__node-aura {
    animation-duration: 6s;
  }

  whatimado-map .whatimado-map__node--live.is-support:not(.is-start):not(.is-selected):hover .whatimado-map__node-body,
  whatimado-map .whatimado-map__node--live.is-support.is-hover:not(.is-start):not(.is-selected) .whatimado-map__node-body,
  whatimado-map .whatimado-map__node--live.is-support.is-dragging:not(.is-start):not(.is-selected) .whatimado-map__node-body,
  whatimado-map .whatimado-map__node--live.is-support.is-path-preview:not(.is-start):not(.is-selected) .whatimado-map__node-body {
    transform: scale(0.78);
  }

  whatimado-map .whatimado-map__node--live.is-support:not(.is-start):not(.is-selected):hover .whatimado-map__node-aura,
  whatimado-map .whatimado-map__node--live.is-support.is-hover:not(.is-start):not(.is-selected) .whatimado-map__node-aura,
  whatimado-map .whatimado-map__node--live.is-support.is-dragging:not(.is-start):not(.is-selected) .whatimado-map__node-aura,
  whatimado-map .whatimado-map__node--live.is-support.is-path-preview:not(.is-start):not(.is-selected) .whatimado-map__node-aura {
    animation-duration: 4.2s;
  }

  whatimado-map .whatimado-map__node--live.is-selected.is-hover .whatimado-map__node-aura,
  whatimado-map .whatimado-map__node--live.is-selected.is-dragging .whatimado-map__node-aura,
  whatimado-map .whatimado-map__node--live.is-selected.is-path-preview .whatimado-map__node-aura {
    animation-duration: 4.2s;
  }

  /* Keep the idle bob running; only shorten travel so it is not a large pan */
  whatimado-map .whatimado-map__node-float {
    --node-float-amp: -8px;
  }
}
