/* ===========================================================================
   현장 이미지 — 홈 그리드(.field-visual) · 상세 페이지 배너(.solution-visual)
   sections.css 가 300줄 한도를 넘어 이 블록만 떼어냈다.
   =========================================================================== */

/* ── 홈: 현장 이미지 그리드 ──────────────────────────────── */

.field-visuals {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(250px, 1fr));
  gap: var(--nx-sp-4);
}

.field-visual {
  position: relative;
  min-height: 250px;
  overflow: hidden;
  border: 1px solid var(--nx-border);
  border-radius: var(--nx-r-lg);
  background: var(--nx-bg-sunken);
  box-shadow: var(--nx-e2);
  isolation: isolate;
}

.field-visual--wide {
  grid-row: 1 / span 2;
}

.field-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  border: 1px solid transparent;
  border-radius: inherit;
  transition: border-color var(--nx-t-normal), box-shadow var(--nx-t-normal);
  pointer-events: none;
}

.field-visual:hover::after,
.field-visual:focus-visible::after {
  border-color: var(--nx-accent);
  box-shadow: inset 0 0 24px rgba(0, 229, 255, 0.12);
}

.field-visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 700ms cubic-bezier(0.2, 0.7, 0.2, 1), filter var(--nx-t-normal);
}

.field-visual:hover img,
.field-visual:focus-visible img {
  transform: scale(1.035);
  filter: saturate(1.08);
}

.field-visual__shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, transparent 36%, rgba(2, 8, 12, 0.88) 100%);
}

.field-visual__caption {
  position: absolute;
  left: var(--nx-sp-6);
  right: var(--nx-sp-6);
  bottom: var(--nx-sp-6);
  z-index: 3;
  display: grid;
  gap: var(--nx-sp-1);
}

.field-visual__caption strong {
  font-size: var(--nx-fs-xl);
  color: #fff;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.72);
}

.field-visual__caption > span:last-child {
  color: rgba(255, 255, 255, 0.78);
  font-size: var(--nx-fs-sm);
}

.field-visual__index {
  font-family: var(--nx-font-mono);
  font-size: var(--nx-fs-xs);
  font-weight: 700;
  letter-spacing: var(--nx-tracking);
  color: var(--nx-accent);
  text-shadow: var(--nx-glow-soft);
}

/* ── 상세 페이지: 와이드 배너 ────────────────────────────── */

.solution-visual-wrap {
  padding-top: var(--nx-sp-8);
}

.solution-visual {
  position: relative;
  aspect-ratio: 3 / 1;
  overflow: hidden;
  border: 1px solid var(--nx-border);
  border-radius: var(--nx-r-lg);
  background: var(--nx-bg-sunken);
  box-shadow: var(--nx-e3);
}

.solution-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 50%, rgba(2, 8, 12, 0.78) 100%);
  pointer-events: none;
}

.solution-visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.solution-visual figcaption {
  position: absolute;
  left: var(--nx-sp-6);
  right: var(--nx-sp-6);
  bottom: var(--nx-sp-5);
  z-index: 1;
  color: rgba(255, 255, 255, 0.84);
  font-size: var(--nx-fs-sm);
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.8);
}

@media (max-width: 720px) {
  .field-visuals {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
  }

  .field-visual,
  .field-visual--wide {
    grid-row: auto;
    min-height: 280px;
  }

  .field-visual__caption {
    left: var(--nx-sp-5);
    right: var(--nx-sp-5);
    bottom: var(--nx-sp-5);
  }

  .solution-visual {
    aspect-ratio: 4 / 3;
  }
}
