/* ================================================================
   NO PERRY — Field Presence intensity (25A7)
   Visual-only score via CSS custom properties on each shield.
   ================================================================ */

.np-guild-field-presence-25a7 .np-field__shield-token {
  --field-score: 0;
  --field-scale: 1;
  --field-glow: 0;
  --field-bronze: 0;
  --field-gem: 0;
  --field-depth: 1;
  --field-z: 2;
  z-index: var(--field-z);
  transform: scale(var(--field-scale));
  transition:
    transform 800ms ease,
    filter 800ms ease,
    opacity 800ms ease;
  will-change: transform;
}

.np-guild-field-presence-25a7 .np-field__shield-shell {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  transition: filter 800ms ease;
  filter:
    drop-shadow(0 2px 4px rgba(0, 0, 0, 0.45))
    drop-shadow(
      0 0 calc(2px + var(--field-glow) * 12px)
      rgba(196, 148, 58, calc(var(--field-glow) * 0.38))
    );
}

/* Local mist depth — higher score = clearer emergence from the mists */
.np-guild-field-presence-25a7 .np-field__shield-shell::after {
  content: '';
  position: absolute;
  inset: -8% -6% -4%;
  pointer-events: none;
  border-radius: 40%;
  background:
    radial-gradient(
      ellipse 70% 55% at 50% 55%,
      rgba(180, 190, 200, calc(var(--field-depth) * 0.42)) 0%,
      rgba(120, 130, 145, calc(var(--field-depth) * 0.18)) 45%,
      transparent 72%
    );
  mix-blend-mode: soft-light;
  opacity: calc(0.35 + var(--field-depth) * 0.65);
  transition: opacity 800ms ease;
}

.np-guild-field-presence-25a7 .np-field__shield-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center bottom;
  pointer-events: none;
  user-select: none;
  /* Wood stays visible when dark; bronze rises with presence */
  filter:
    brightness(calc(0.4 + var(--field-bronze) * 0.7))
    saturate(calc(0.3 + var(--field-bronze) * 0.85))
    contrast(calc(0.9 + var(--field-bronze) * 0.14))
    sepia(calc(var(--field-bronze) * 0.22));
  opacity: calc(0.8 + var(--field-bronze) * 0.2);
  transition: filter 800ms ease, opacity 800ms ease;
}

.np-guild-field-presence-25a7 .np-field__shield-gem {
  position: absolute;
  left: 50%;
  top: 46%;
  width: 28%;
  height: 18%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  pointer-events: none;
  mix-blend-mode: screen;
  background: radial-gradient(
    circle,
    rgba(255, 200, 90, calc(0.15 + var(--field-gem) * 0.7)) 0%,
    rgba(200, 120, 30, calc(0.05 + var(--field-gem) * 0.28)) 50%,
    transparent 72%
  );
  opacity: calc(0.02 + var(--field-gem) * 0.9);
  filter: brightness(calc(0.55 + var(--field-gem) * 0.7));
  transition: opacity 800ms ease, filter 800ms ease, background 800ms ease;
}

/* Breathing pulse — warbound+ only */
.np-guild-field-presence-25a7 .np-field__shield-token[data-field-tier='warbound'] .np-field__shield-gem {
  animation: np-field-gem-breathe 3.2s ease-in-out infinite;
}
.np-guild-field-presence-25a7 .np-field__shield-token[data-field-tier='blazing'] .np-field__shield-gem {
  animation: np-field-gem-breathe-fast 2.2s ease-in-out infinite;
}

@keyframes np-field-gem-breathe {
  0%,
  100% {
    opacity: calc(0.02 + var(--field-gem) * 0.88);
    filter: brightness(calc(0.55 + var(--field-gem) * 0.65));
  }
  50% {
    opacity: calc(0.02 + var(--field-gem) * 0.98);
    filter: brightness(calc(0.7 + var(--field-gem) * 0.75));
  }
}
@keyframes np-field-gem-breathe-fast {
  0%,
  100% {
    opacity: calc(0.02 + var(--field-gem) * 0.9);
    filter: brightness(calc(0.6 + var(--field-gem) * 0.7));
  }
  50% {
    opacity: calc(0.05 + var(--field-gem) * 1);
    filter: brightness(calc(0.85 + var(--field-gem) * 0.7));
  }
}

/* Hover / focus — compose with field scale; never explode formation */
.np-guild-field-presence-25a7 .np-field__shield-token:hover,
.np-guild-field-presence-25a7 .np-field__shield-token:focus-visible {
  z-index: 12;
  transform: translateY(-2px) scale(calc(var(--field-scale) * 1.035));
}

/* New factual EventId impact ~550ms */
.np-guild-field-presence-25a7 .np-field__shield-token.is-flash .np-field__shield-gem {
  animation: np-field-gem-impact 550ms ease-out 1;
}
.np-guild-field-presence-25a7 .np-field__shield-token.is-flash .np-field__shield-shell {
  animation: np-field-shell-impact 550ms ease-out 1;
}

@keyframes np-field-gem-impact {
  0% {
    opacity: 1;
    filter: brightness(1.9);
    transform: translate(-50%, -50%) scale(1.4);
  }
  100% {
    opacity: calc(0.02 + var(--field-gem) * 0.9);
    filter: brightness(calc(0.55 + var(--field-gem) * 0.7));
    transform: translate(-50%, -50%) scale(1);
  }
}
@keyframes np-field-shell-impact {
  0% {
    filter: drop-shadow(0 0 16px rgba(232, 190, 80, 0.6));
  }
  100% {
    filter:
      drop-shadow(0 2px 4px rgba(0, 0, 0, 0.45))
      drop-shadow(
        0 0 calc(2px + var(--field-glow) * 12px)
        rgba(196, 148, 58, calc(var(--field-glow) * 0.38))
      );
  }
}

/* First load staggered entry — not a 0→score casino */
.np-guild-field-presence-25a7 .np-field__shield-token.is-enter {
  animation: np-field-enter 520ms ease-out both;
  animation-delay: var(--enter-delay, 0ms);
}
@keyframes np-field-enter {
  from {
    opacity: 0;
    transform: scale(calc(var(--field-scale) * 0.92)) translateY(6px);
  }
  to {
    opacity: 1;
    transform: scale(var(--field-scale)) translateY(0);
  }
}

/* Dossier presence block */
.np-guild-field-presence-25a7 .np-field__dossier-presence {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2rem;
  margin: 0.15rem 0 0.2rem;
  width: 100%;
}
.np-guild-field-presence-25a7 .np-field__dossier-presence-label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #c4a86a;
}
.np-guild-field-presence-25a7 .np-field__presence-info {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.05rem;
  height: 1.05rem;
  padding: 0;
  border: 1px solid rgba(196, 168, 106, 0.45);
  background: rgba(20, 16, 10, 0.8);
  color: #d4b56a;
  font-size: 0.65rem;
  font-family: inherit;
  line-height: 1;
  cursor: help;
  border-radius: 0;
}
.np-guild-field-presence-25a7 .np-field__dossier-presence-score {
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.95rem;
  color: #f0d9a0;
  letter-spacing: 0.04em;
}
.np-guild-field-presence-25a7 .np-field__dossier-presence-bar {
  display: block;
  width: 100%;
  max-width: 140px;
  height: 3px;
  background: rgba(255, 255, 255, 0.08);
  overflow: hidden;
}
.np-guild-field-presence-25a7 .np-field__dossier-presence-fill {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #8a6a28, #e0b85a);
  transition: width 800ms ease;
}

/* Legend miniatures */
.np-guild-field-presence-25a7 .np-field__legend-shield.is-lit img {
  filter: brightness(1.1) saturate(1.15) sepia(0.15);
}
.np-guild-field-presence-25a7 .np-field__legend-shield.is-dark img {
  filter: brightness(0.4) saturate(0.3);
  opacity: 0.82;
}

/* Depth vs mists — preserve The Mists layers */
#guild-constellation.np-guild-field-presence-25a7 #np-guild-constellation-root {
  position: relative;
  z-index: 5;
}
#guild-constellation.np-guild-field-presence-25a7 .np-world-scene__fog-front {
  opacity: calc(0.08 + var(--world-visibility, 0.5) * 0.12);
  mix-blend-mode: soft-light;
}

@media (max-width: 700px) {
  .np-guild-field-presence-25a7 .np-field__formation {
    min-height: 620px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .np-guild-field-presence-25a7 .np-field__shield-token,
  .np-guild-field-presence-25a7 .np-field__shield-token.is-enter,
  .np-guild-field-presence-25a7 .np-field__shield-token[data-field-tier='warbound'] .np-field__shield-gem,
  .np-guild-field-presence-25a7 .np-field__shield-token[data-field-tier='blazing'] .np-field__shield-gem,
  .np-guild-field-presence-25a7 .np-field__shield-token.is-flash .np-field__shield-gem,
  .np-guild-field-presence-25a7 .np-field__shield-token.is-flash .np-field__shield-shell {
    transition: none;
    animation: none !important;
  }
}
