/* Peripheral multiscale clouds, a calm centre, and a connected key shoulder. */
#cross-field {
  position: absolute;
  inset: 0;
  z-index: 4;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  contain: layout paint;
}
.cross-field__neutral { position: absolute; inset: 0; pointer-events: none; }
.cross-field__travel {
  position: absolute;
  inset: 0 0 auto;
  height: 0;
  overflow: visible;
  z-index: 2147483646;
  pointer-events: none;
  user-select: none;
}
.cross-field__travel[hidden] { display: none !important; }
.cross-field__key[hidden] { display: none !important; }
.cross-field__gate-glow {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -30px;
  height: 130px;
  opacity: 0;
  pointer-events: none;
  z-index: 10;
  background: linear-gradient(100deg, #a4c5f2 4%, #c490ff 48%, #f4aedc 78%, #a4c5f2);
  -webkit-mask-image: radial-gradient(ellipse at 50% 100%, #000 0%, #0009 35%, transparent 72%);
  mask-image: radial-gradient(ellipse at 50% 100%, #000 0%, #0009 35%, transparent 72%);
  filter: blur(14px);
}
.cross-field__cross,
.cross-field__key {
  position: absolute;
  inset: 0 auto auto 0;
  display: block;
  transform-origin: 50% 50%;
  color: #b9bdca;
  opacity: 0;
  pointer-events: none;
}
.cross-field__cross svg,
.cross-field__key svg { display: block; width: 100%; height: 100%; overflow: visible; }
.cross-field__cross svg { transform: rotate(var(--cross-rotation, 0deg)); }
.cross-field__cross path,
.cross-field__key path { fill: none; stroke: currentColor; stroke-width: 14; stroke-linecap: butt; stroke-linejoin: miter; }
.cross-field__key {
  z-index: 2;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--pink, #f460c4);
  opacity: 1;
  pointer-events: auto;
  cursor: grab;
  touch-action: none;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
  outline: none;
}
.cross-field__key[data-key-reveal='pending'],
.cross-field__key[data-key-reveal='revealing'] {
  opacity: 0;
  pointer-events: none;
}
.cross-field__key svg {
  pointer-events: none;
  transform-origin: 50% 50%;
  transform: rotate(var(--key-tilt, 0deg));
  rotate: 0deg;
  transition: rotate .38s cubic-bezier(.2,.75,.2,1), filter .18s ease, scale .18s ease;
}
.cross-field__key.is-hovered svg,
.cross-field__key:focus-visible svg { rotate: 45deg; filter: brightness(1.12); }
.cross-field__key:focus-visible::after {
  content: '';
  position: absolute;
  inset: -5px;
  border: 1px solid #f460c466;
  border-radius: 13px;
  pointer-events: none;
}
.cross-field__key:focus-visible::after { border: 2px solid #d6c6ef; outline: 3px solid #121214; }
.cross-field__key.is-dragging { cursor: grabbing; }
.cross-field__key.is-dragging svg { scale: 1.045; filter: brightness(1.1); }
.cross-field__key.is-moving { will-change: transform; }
.cross-field__helper {
  position: absolute;
  z-index: 3;
  inset: 0 auto auto 0;
  box-sizing: border-box;
  display: flex;
  align-items: flex-start;
  gap: 11px;
  width: 310px;
  padding: 13px;
  border: 1px solid #ffffffc7;
  border-radius: 22px;
  background: linear-gradient(145deg,#fffffff7,#f1f1f7f0);
  color: #25252b;
  color-scheme: light;
  backdrop-filter: blur(22px) saturate(1.2);
  -webkit-backdrop-filter: blur(22px) saturate(1.2);
  font-family: var(--font, 'Raleway', Arial, sans-serif);
  font-size: 14px;
  line-height: 1.4;
  text-align: left;
  pointer-events: none;
  box-shadow: 0 12px 34px #00000024, inset 0 1px 0 #ffffffa6;
}
.cross-field__helper-icon {
  display: grid;
  place-items: center;
  flex: 0 0 40px;
  height: 42px;
  border: 1px solid #d3d0dd80;
  border-radius: 13px;
  color: #73717e;
  background: #e7e5edb3;
  box-shadow: inset 0 1px 0 #ffffffa6;
}
.cross-field__helper-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.cross-field__helper-body { display: block; flex: 1; min-width: 0; overflow-wrap: anywhere; }
.cross-field__helper strong { display: block; color: #25252b; font-size: 16px; font-weight: 650; line-height: 1.35; letter-spacing: -.025em; }
.cross-field__helper-body > span { display: block; margin-top: 4px; color: #62626c; font-size: 14px; font-weight: 450; line-height: 1.4; letter-spacing: 0; }
.cross-field__helper[data-corner='bottom-right'] { border-bottom-right-radius: 7px; }
.cross-field__helper[data-corner='top-right'] { border-top-right-radius: 7px; }
.cross-field__helper[data-corner='bottom-left'] { border-bottom-left-radius: 7px; }
.cross-field__helper[data-corner='top-left'] { border-top-left-radius: 7px; }
.cross-field__helper[data-kind='warning'] { display: block; width: 258px; padding: 12px 15px; border-radius: 20px; }
.cross-field__helper[data-kind='warning'] strong { font-size: 14px; line-height: 1.4; letter-spacing: 0; }
.cross-field__helper[data-kind='warning'] .cross-field__helper-body > span { margin-top: 3px; }
.cross-field__helper[data-kind='unlock'] {
  position: absolute;
  width: clamp(270px, 24vw, 310px);
  padding: 13px 14px;
  border-radius: 20px;
  background: #ffffff;
  border: 1px solid rgba(226, 218, 240, 0.95);
  box-shadow: 
    0 4px 18px -2px rgba(245, 136, 216, 0.176),
    0 2px 14px -2px rgba(196, 144, 255, 0.176),
    0 6px 20px -2px rgba(147, 197, 253, 0.198),
    0 12px 34px rgba(35, 25, 45, 0.09),
    inset 0 1px 0 rgba(255, 255, 255, 1);
  align-items: flex-start;
  isolation: isolate;
}
.cross-field__helper[data-kind='unlock']::before {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 26px;
  background: conic-gradient(from var(--unlock-glow-deg, 0deg), rgba(245, 136, 216, 0.308) 0%, rgba(196, 144, 255, 0.264) 28%, rgba(147, 197, 253, 0.308) 55%, rgba(255, 216, 238, 0.264) 82%, rgba(245, 136, 216, 0.308) 100%);
  filter: blur(10px);
  z-index: -2;
  pointer-events: none;
  opacity: 0.75;
  animation: unlock-glow-breathe 7.5s ease-in-out infinite alternate;
}
/* Opaque surface above the halo keeps its blur outside the white card. */
.cross-field__helper[data-kind='unlock']::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: #fff;
  z-index: -1;
  pointer-events: none;
}
@keyframes unlock-glow-breathe {
  0% { opacity: 0.65; transform: scale(0.99); }
  50% { opacity: 0.85; transform: scale(1.005); }
  100% { opacity: 0.68; transform: scale(0.995); }
}
.cross-field__helper[data-kind='unlock'] .cross-field__helper-icon {
  position: relative;
  align-self: flex-start;
  margin-top: 1px;
  flex: 0 0 38px;
  height: 38px;
  border-radius: 12px;
  background: #fff;
  border: 1px solid rgba(215, 196, 232, 0.6);
  color: #1a1523;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
}
.cross-field__helper[data-kind='unlock'] .cross-field__helper-icon svg {
  color: #1a1523;
  stroke: #1a1523;
}
.cross-field__helper[data-kind='unlock'] .cross-field__helper-progress {
  position: absolute;
  inset: -1px;
  width: 40px;
  height: 40px;
  overflow: visible;
  pointer-events: none;
}
.cross-field__helper[data-kind='unlock'] .cross-field__progress-track {
  fill: none;
  stroke: transparent;
  stroke-width: 1.8;
}
.cross-field__helper[data-kind='unlock'] .cross-field__progress-bar {
  fill: none;
  stroke: var(--pink, #fa6acc);
  stroke-width: 2;
  stroke-linecap: round;
  transition: stroke-dashoffset .08s linear;
}
.cross-field__helper[data-kind='unlock'] strong {
  font-size: 15px;
  font-weight: 650;
  line-height: 1.3;
  color: #25222d;
}
.cross-field__helper[data-kind='unlock'] .cross-field__helper-body > span {
  font-size: 13px;
  font-weight: 450;
  line-height: 1.4;
  color: #655e6e;
  margin-top: 4px;
}
.cross-field__helper[hidden], .cross-field__helper-icon[hidden], .cross-field__rediscovery[hidden] { display: none !important; }
.cross-field__rediscovery {
  position: absolute;
  inset: 0;
  outline: 1px solid #c490ff;
  outline-offset: 10px;
  border-radius: 50%;
  opacity: .38;
  pointer-events: none;
}
.cross-field__key[data-key-dock] { min-width: 0; min-height: 0; pointer-events: none; }
.cross-field__key[data-key-dock] svg { rotate: 0deg !important; scale: 1 !important; filter: none; transition: none; }
.cross-field__key[data-key-dock]::after { display: none; }
@media (prefers-reduced-motion: reduce) {
  .cross-field__cross,
  .cross-field__gate-glow,
  .cross-field__key,
  .cross-field__key svg,
  .cross-field__helper { animation: none !important; transition: none !important; }
  .cross-field__key svg { rotate: 0deg !important; }
  .cross-field__key.is-dragging svg { scale: 1; }
}

/* Color trail fully disabled — Hero background remains clean and neutral */
.cross-field__key path { stroke: var(--key-stroke, currentColor); }
.cross-field__color-trail { display: none !important; }

/* A one-pixel optical rim keeps pale tokens readable without changing the X. */
.cross-field__key path.cross-field__key-outline {
  fill: #fff;
  stroke: #fff;
  stroke-width: 3;
  stroke-linejoin: miter;
  opacity: var(--key-outline, 0);
}
.cross-field__key[data-key-dock] path.cross-field__key-outline {
  opacity: var(--dock-outline-opacity, var(--key-outline, 0));
}
