.cast-floor {
  --accent: #3270ee;
}

.cast-floor .floor-panel h1 {
  font-size: clamp(32px, 3.7vw, 46px);
  line-height: .94;
  letter-spacing: -.075em;
}

.cast-floor .level-card strong {
  min-width: 0;
  padding: 0 8px;
  font-size: clamp(11px, 1vw, 13px);
  line-height: 1.15;
  letter-spacing: .045em;
  overflow-wrap: anywhere;
}

.room-back-link {
  position: absolute;
  z-index: 4;
  top: clamp(18px, 2.5vw, 34px);
  left: clamp(18px, 2.5vw, 34px);
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-height: 48px;
  padding: 7px 16px 7px 7px;
  border: 1px solid rgba(255, 255, 255, .28);
  color: #fff;
  background: rgba(8, 10, 15, .78);
  backdrop-filter: blur(10px);
  text-decoration: none;
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}

.room-back-link span {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  color: #fff;
  background: var(--accent);
  font: 700 20px/1 "DM Sans", sans-serif;
}

.room-back-link small {
  font: 700 10px/1 "DM Sans", sans-serif;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.room-back-link:hover,
.room-back-link:focus-visible {
  border-color: #fff;
  background: rgba(8, 10, 15, .94);
  outline: none;
  transform: translateX(-4px);
}

.room-door-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.room-door-link {
  pointer-events: all;
  cursor: pointer;
  outline: none;
}

.room-door-link__glow {
  fill: rgba(50, 112, 238, 0);
  stroke: rgba(133, 177, 255, 0);
  stroke-width: 4;
  vector-effect: non-scaling-stroke;
  transition: fill .24s ease, stroke .24s ease, filter .24s ease;
}

.room-door-link__frame {
  fill: none;
  stroke: rgba(157, 193, 255, 0);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
  transition: stroke .24s ease, filter .24s ease;
}

.room-door-link__label {
  opacity: 0;
  transform: translateY(8px);
  transform-origin: center;
  transition: opacity .22s ease, transform .22s ease;
  pointer-events: none;
}

.room-door-link__label rect {
  fill: rgba(7, 11, 19, .9);
  stroke: #78a7ff;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}

.room-door-link__label text {
  fill: #fff;
  font: 700 10px "DM Sans", sans-serif;
  letter-spacing: 1.2px;
}

.room-door-link:hover .room-door-link__glow,
.room-door-link:focus-visible .room-door-link__glow {
  fill: rgba(50, 112, 238, .24);
  stroke: rgba(164, 198, 255, .95);
  filter: drop-shadow(0 0 10px #3270ee) drop-shadow(0 0 28px rgba(50, 112, 238, .8));
}

.room-door-link:hover .room-door-link__frame,
.room-door-link:focus-visible .room-door-link__frame {
  stroke: #d9e7ff;
  filter: drop-shadow(0 0 7px #6b9dff);
}

.room-door-link:hover .room-door-link__label,
.room-door-link:focus-visible .room-door-link__label {
  opacity: 1;
  transform: translateY(0);
}

.floor-page {
  transition: opacity .36s ease, filter .36s ease, transform .36s ease;
}

.floor-page.room-is-leaving {
  opacity: 0;
  filter: brightness(.45);
  transform: scale(1.012);
}

.floor-page.room-is-entering {
  opacity: 0;
  filter: brightness(.45);
  transform: scale(.992);
}

@media (prefers-reduced-motion: reduce) {
  .floor-page,
  .room-door-link__glow,
  .room-door-link__frame,
  .room-door-link__label,
  .room-back-link {
    transition: none;
  }
}
