body.chamber-map-page {
  margin: 0;
  min-height: 100vh;
  background:
    radial-gradient(circle at 14% 10%, rgba(145, 161, 255, 0.24), transparent 34%),
    radial-gradient(circle at 84% 8%, rgba(104, 183, 176, 0.17), transparent 31%),
    radial-gradient(circle at 60% 92%, rgba(118, 136, 241, 0.13), transparent 37%),
    linear-gradient(180deg, #090d22 0%, #0d1530 45%, #070b19 100%);
  color: #edf3ff;
  font-family: var(--vault-font-sans, "Manrope", system-ui, sans-serif);
  padding: 1.2rem 1rem 2rem;
}

body.chamber-map-page.inhale .map-cosmos {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.07), 0 28px 68px -33px rgba(84, 119, 202, 0.65);
}

body.chamber-map-page.exhale .map-cosmos {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04), 0 20px 54px -37px rgba(3, 6, 16, 0.95);
}

.map-shell {
  max-width: 1180px;
  margin: 0 auto;
}

.map-header {
  border: 1px solid rgba(181, 204, 255, 0.35);
  border-radius: 18px;
  background: rgba(10, 16, 33, 0.62);
  padding: 1rem;
  margin-bottom: 1rem;
}

.map-kicker {
  margin: 0;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.75rem;
  color: #9dd6e4;
}

.map-header h1 {
  margin: 0.2rem 0 0.3rem;
  font-size: clamp(1.85rem, 4vw, 2.9rem);
  font-family: var(--vault-font-serif, "Cormorant Garamond", serif);
}

.map-header p {
  margin: 0;
  color: rgba(237, 243, 255, 0.86);
}

.map-cosmos {
  position: relative;
  height: min(72vh, 740px);
  border: 1px solid rgba(181, 204, 255, 0.28);
  border-radius: 20px;
  overflow: hidden;
  background: radial-gradient(circle at 50% 48%, rgba(35, 56, 116, 0.23), rgba(6, 10, 24, 0.94));
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05), 0 24px 60px -35px rgba(3, 6, 16, 0.95);
}

.starfield {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 14% 17%, rgba(255, 255, 255, 0.8) 0 1px, transparent 1px),
    radial-gradient(circle at 61% 26%, rgba(214, 226, 255, 0.65) 0 1px, transparent 1px),
    radial-gradient(circle at 74% 66%, rgba(183, 220, 255, 0.6) 0 1px, transparent 1px),
    radial-gradient(circle at 26% 72%, rgba(255, 255, 255, 0.68) 0 1px, transparent 1px),
    radial-gradient(circle at 90% 35%, rgba(214, 226, 255, 0.45) 0 1px, transparent 1px);
  animation: skyDrift 32s ease-in-out infinite alternate;
  opacity: 0.72;
}

.starfield-far {
  background-image:
    radial-gradient(circle at 10% 24%, rgba(188, 212, 255, 0.46) 0 1px, transparent 1px),
    radial-gradient(circle at 35% 60%, rgba(255, 255, 255, 0.48) 0 1px, transparent 1px),
    radial-gradient(circle at 66% 12%, rgba(200, 223, 255, 0.42) 0 1px, transparent 1px),
    radial-gradient(circle at 82% 78%, rgba(188, 212, 255, 0.46) 0 1px, transparent 1px);
  animation-duration: 44s;
  opacity: 0.38;
}

.quadrant-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(to right, rgba(124, 183, 226, 0.06) 0 50%, rgba(203, 141, 211, 0.05) 50% 100%),
    linear-gradient(to bottom, rgba(123, 175, 230, 0.05) 0 50%, rgba(113, 199, 160, 0.05) 50% 100%);
}

.quadrant {
  position: absolute;
  font-size: 0.64rem;
  letter-spacing: 0.2em;
  color: rgba(208, 225, 255, 0.6);
  text-transform: uppercase;
}

.q-nw {
  left: 2%;
  top: 2%;
}

.q-ne {
  right: 2%;
  top: 2%;
}

.q-sw {
  left: 2%;
  bottom: 2%;
}

.q-se {
  right: 2%;
  bottom: 2%;
}

.anchor-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.anchor-glyph {
  position: absolute;
  transform: translate(-50%, -50%);
  color: rgba(223, 236, 255, 0.58);
  text-shadow: 0 0 10px rgba(174, 203, 255, 0.55);
  font-size: 0.95rem;
  letter-spacing: 0.08em;
}

.cosmic-haze {
  position: absolute;
  inset: -8%;
  pointer-events: none;
}

.haze-a {
  background:
    radial-gradient(55% 35% at 26% 42%, rgba(94, 125, 214, 0.2), transparent 70%),
    radial-gradient(38% 24% at 74% 58%, rgba(109, 185, 171, 0.16), transparent 72%);
  mix-blend-mode: screen;
  opacity: 0.48;
  animation: hazeDriftA 40s ease-in-out infinite alternate;
}

.haze-b {
  background:
    radial-gradient(44% 28% at 62% 34%, rgba(166, 130, 219, 0.16), transparent 74%),
    radial-gradient(40% 26% at 18% 74%, rgba(100, 170, 219, 0.13), transparent 74%);
  mix-blend-mode: plus-lighter;
  opacity: 0.34;
  animation: hazeDriftB 52s ease-in-out infinite alternate;
}

.breath-glow {
  position: absolute;
  inset: -10%;
  pointer-events: none;
  background: radial-gradient(circle at 50% 50%, rgba(166, 192, 255, 0.14), transparent 68%);
  opacity: 0.45;
  animation: breathGlow 8.8s ease-in-out infinite;
}

.node-layer {
  position: absolute;
  inset: 0;
}

.connection-layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.connection-line {
  stroke: rgba(184, 211, 255, 0.38);
  stroke-width: 1.3;
  stroke-linecap: round;
  fill: none;
  filter: drop-shadow(0 0 3px rgba(160, 199, 255, 0.44));
  stroke-dasharray: 6 8;
  animation: linkPulse 8s ease-in-out infinite;
}

body.chamber-map-page.inhale .connection-line {
  stroke-opacity: 0.82;
}

body.chamber-map-page.exhale .connection-line {
  stroke-opacity: 0.34;
}

.chamber-node {
  position: absolute;
  display: grid;
  justify-items: center;
  text-decoration: none;
  color: #f6fbff;
  transform: translate(-50%, -50%);
}

.chamber-node::after {
  content: "";
  position: absolute;
  width: 24px;
  height: 1px;
  background: linear-gradient(to right, rgba(192, 220, 255, 0.65), rgba(192, 220, 255, 0));
  transform: translate(14px, -8px) rotate(var(--vector-angle, 0deg));
  transform-origin: left center;
  opacity: 0.62;
}

.chamber-node.vault-missing .node-core {
  border-color: rgba(255, 173, 173, 0.75);
  box-shadow: 0 0 0 8px rgba(255, 131, 131, 0.1), 0 12px 26px -18px rgba(252, 157, 157, 0.5);
}

.chamber-node.vault-present .node-core {
  border-color: rgba(188, 250, 216, 0.86);
}

.chamber-node.cluster-voice .node-core {
  background: radial-gradient(circle at 30% 30%, rgba(196, 225, 255, 0.45), rgba(53, 95, 164, 0.33));
}

.chamber-node.cluster-myth .node-core {
  background: radial-gradient(circle at 30% 30%, rgba(229, 188, 255, 0.45), rgba(96, 56, 147, 0.32));
}

.chamber-node.cluster-archive .node-core {
  background: radial-gradient(circle at 30% 30%, rgba(193, 225, 213, 0.45), rgba(41, 109, 95, 0.33));
}

.chamber-node.cluster-habitat .node-core {
  background: radial-gradient(circle at 30% 30%, rgba(246, 209, 170, 0.45), rgba(128, 88, 48, 0.33));
}

.node-core {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  border: 1px solid rgba(204, 224, 255, 0.65);
  background: radial-gradient(circle at 30% 30%, rgba(189, 227, 255, 0.4), rgba(45, 79, 125, 0.28));
  display: grid;
  place-items: center;
  font-size: 1.25rem;
  box-shadow: 0 0 0 8px rgba(154, 185, 255, 0.09), 0 12px 26px -18px rgba(167, 198, 255, 0.9);
  position: relative;
  transition: transform 260ms ease, box-shadow 260ms ease, border-color 260ms ease;
}

.node-core::before,
.node-core::after {
  content: "";
  position: absolute;
  inset: -7px;
  border-radius: 50%;
  border: 1px solid rgba(185, 213, 255, 0.34);
  pointer-events: none;
}

.node-core::before {
  animation: ringPulse 5.2s ease-in-out infinite;
}

.node-core::after {
  inset: -13px;
  border-color: rgba(141, 191, 255, 0.24);
  animation: ringPulse 6.4s ease-in-out infinite reverse;
}

.node-label {
  margin-top: 0.45rem;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
  max-width: 120px;
}

.chamber-node:hover .node-core,
.chamber-node:focus-visible .node-core {
  border-color: rgba(240, 248, 255, 0.96);
  box-shadow: 0 0 0 10px rgba(154, 185, 255, 0.2), 0 18px 30px -14px rgba(191, 219, 255, 0.95);
  transform: scale(1.06);
}

.chamber-node.active-click .node-core {
  transform: scale(1.12);
  border-color: rgba(250, 252, 255, 0.98);
  box-shadow: 0 0 0 13px rgba(193, 217, 255, 0.28), 0 18px 34px -14px rgba(213, 231, 255, 0.98);
}

.map-footnote {
  margin: 0.75rem 0 0;
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: rgba(224, 236, 255, 0.8);
}

.meta-panel {
  position: absolute;
  right: 1rem;
  top: 1rem;
  width: min(380px, calc(100% - 2rem));
  border: 1px solid rgba(181, 204, 255, 0.38);
  border-radius: 16px;
  background: rgba(8, 14, 30, 0.84);
  backdrop-filter: blur(6px);
  padding: 0.9rem;
  box-shadow: 0 20px 44px -28px rgba(2, 4, 14, 0.94);
}

.meta-panel h2 {
  margin: 0 0 0.3rem;
  font-family: var(--vault-font-serif, "Cormorant Garamond", serif);
  font-size: 1.34rem;
}

.meta-description {
  margin: 0 0 0.55rem;
  font-size: 0.86rem;
  color: rgba(222, 236, 255, 0.86);
}

.meta-grid {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.48rem 0.7rem;
}

.meta-grid dt {
  margin: 0;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(157, 200, 242, 0.86);
}

.meta-grid dd {
  margin: 0.05rem 0 0;
  font-size: 0.83rem;
  color: rgba(240, 247, 255, 0.95);
}

.meta-path-row {
  grid-column: 1 / -1;
}

#meta-vault-status.ok {
  color: #b9f8cc;
}

#meta-vault-status.missing {
  color: #ffc0c0;
}

#meta-vault-path {
  word-break: break-word;
}

.meta-actions {
  margin-top: 0.75rem;
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.meta-button {
  display: inline-block;
  text-decoration: none;
  font-size: 0.79rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  border-radius: 999px;
  padding: 0.42rem 0.7rem;
  border: 1px solid rgba(183, 214, 255, 0.5);
  color: #e7f3ff;
  background: rgba(77, 119, 175, 0.26);
}

.meta-button.secondary {
  border-color: rgba(177, 255, 218, 0.52);
  background: rgba(60, 136, 111, 0.23);
}

.meta-button.is-disabled {
  opacity: 0.46;
  pointer-events: none;
}

@keyframes skyDrift {
  from {
    transform: translateX(-1%) translateY(-0.8%);
  }
  to {
    transform: translateX(1%) translateY(0.8%);
  }
}

@keyframes hazeDriftA {
  0% {
    transform: translateX(-1.4%) translateY(-0.8%) scale(1);
  }
  100% {
    transform: translateX(1.6%) translateY(0.9%) scale(1.04);
  }
}

@keyframes hazeDriftB {
  0% {
    transform: translateX(0.9%) translateY(-1.1%) scale(1.01);
  }
  100% {
    transform: translateX(-1.4%) translateY(1.2%) scale(1.05);
  }
}

@keyframes breathGlow {
  0% {
    opacity: 0.3;
    transform: scale(0.98);
  }
  50% {
    opacity: 0.58;
    transform: scale(1.03);
  }
  100% {
    opacity: 0.3;
    transform: scale(0.98);
  }
}

@keyframes ringPulse {
  0% {
    opacity: 0.28;
    transform: scale(0.97);
  }
  50% {
    opacity: 0.78;
    transform: scale(1.03);
  }
  100% {
    opacity: 0.28;
    transform: scale(0.97);
  }
}

@keyframes linkPulse {
  0% {
    stroke-opacity: 0.32;
    stroke-dashoffset: 0;
  }
  50% {
    stroke-opacity: 0.78;
    stroke-dashoffset: 14;
  }
  100% {
    stroke-opacity: 0.32;
    stroke-dashoffset: 28;
  }
}

@media (max-width: 780px) {
  .map-cosmos {
    height: 72vh;
  }

  .meta-panel {
    left: 0.6rem;
    right: 0.6rem;
    top: auto;
    bottom: 0.6rem;
    width: auto;
  }

  .node-core {
    width: 56px;
    height: 56px;
    font-size: 1.1rem;
  }

  .node-label {
    max-width: 92px;
    font-size: 0.68rem;
  }
}
