/* Inner-page polish: homepage-class cards/heroes without full orbital theatres */
.page-hero,
.hero-detail,
main > .section:first-of-type .wrap > h1 {
  position: relative;
}
.hero-panel.photo,
.page-hero.has-image .page-hero-bg img,
.page-hero-img,
.reference-card .card-media img,
.case-card img,
.insight-card img,
.content-card img,
.card .case-thumb img,
.visual-card img {
  transition: transform .65s cubic-bezier(.22,1,.36,1), filter .45s ease;
  filter: saturate(.82);
}
@media (hover:hover) and (pointer:fine) {
  .reference-card:hover .card-media img,
  .case-card:hover img,
  .insight-card:hover img,
  .content-card:hover img,
  .visual-card:hover img,
  .card:hover .case-thumb img {
    transform: scale(1.06);
    filter: saturate(1.05);
  }
}
.reference-card,
.case-card,
.insight-card,
.content-card,
.premium-card,
.service-card,
.card,
.visual-card,
.project-card {
  border-radius: var(--px-card-radius, 12px);
  overflow: hidden;
  transition: transform .45s cubic-bezier(.22,1,.36,1), box-shadow .45s ease, border-color .35s ease;
}
@media (hover:hover) and (pointer:fine) {
  .reference-card:hover,
  .case-card:hover,
  .insight-card:hover,
  .content-card:hover,
  .premium-card:hover,
  .service-card:hover,
  .card:hover,
  .visual-card:hover,
  .project-card:hover {
    transform: translateY(calc(var(--px-hover-lift, 6px) * -1));
    box-shadow: 0 22px 48px rgba(0,0,0,.28);
  }
}
.hero-panel.photo {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(0,0,0,.28);
}
.section .kicker,
.section-kicker,
.eyebrow {
  letter-spacing: .12em;
}
.card-media,
.case-card-media,
.content-card-media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: rgba(0,0,0,.2);
  display: block;
  position: relative;
}
.card-media img,
.case-card-media img,
.content-card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Atmospheric media when a real photo is unavailable (virender listing cards) */
.content-card-media.atmosphere {
  background:
    radial-gradient(circle at 18% 20%, color-mix(in srgb, var(--px-accent, #b87333) 42%, transparent), transparent 52%),
    linear-gradient(145deg, #1a2420 0%, #0f1614 48%, #24302b 100%);
}
.content-card-media.atmosphere:after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(-18deg, transparent 0 14px, rgba(255,255,255,.03) 14px 15px);
  pointer-events: none;
}
.content-card-media .media-label {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  z-index: 1;
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #f3efe8;
  opacity: .92;
}
.content-card.px-card {
  display: flex;
  flex-direction: column;
  padding: 0;
}
.content-card.px-card > .content-card-body {
  padding: 1.1rem 1.2rem 1.25rem;
}
.case-card .card-media + .tag,
.case-card .card-media + .case-head {
  margin-top: .85rem;
}
.case-card .card-media {
  margin: 0;
}


/* === Visibility failsafe (2026-09-15): never leave copy invisible === */
.rv:not(.in),
.rv-left:not(.in),
.rv-right:not(.in),
.rv-scale:not(.in),
.reveal:not(.in) {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
}
.rv-clip:not(.in) {
  clip-path: none !important;
  opacity: 1 !important;
}
.word-reveal:not(.in) .word,
.word-reveal .word {
  opacity: 1 !important;
  transform: none !important;
}
.text-reveal:not(.in) > *,
.text-reveal > * {
  opacity: 1 !important;
  transform: none !important;
}
.fade-pre:not(.fade-in) {
  opacity: 1 !important;
  transform: none !important;
}
@media (prefers-reduced-motion: reduce) {
  .rv, .rv-left, .rv-right, .rv-scale, .rv-clip, .reveal, .fade-pre,
  .word-reveal .word, .text-reveal > * {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
    transition: none !important;
  }
}


/* === SHIP VISIBILITY LOCK (2026-09-15c) ===
   Never use transparent text-fill without a guaranteed clipped background.
   Solid accent colour wins everywhere. */
h1 em, h2 em, h3 em, .section-title em, .panel-big em, .large-copy em,
.word-reveal em, .hero h1 em, .hero-copy h1 em {
  font-style: italic !important;
  background: none !important;
  background-image: none !important;
  -webkit-background-clip: border-box !important;
  background-clip: border-box !important;
  -webkit-text-fill-color: currentColor !important;
  color: var(--px-accent, var(--gold, var(--acid, #c89f5d))) !important;
  filter: none !important;
  opacity: 1 !important;
}
.stat-row strong,
.case-metrics strong,
.index-stat strong,
[data-stat] {
  background: none !important;
  background-image: none !important;
  -webkit-background-clip: border-box !important;
  background-clip: border-box !important;
  -webkit-text-fill-color: currentColor !important;
  color: var(--px-accent, var(--gold, var(--acid, #c89f5d))) !important;
  filter: none !important;
  opacity: 1 !important;
}
/* Light floors: dark-gold accents, never washed ivory */
.light h1 em, .light h2 em, .light h3 em, .light .section-title em,
.section.light h1 em, .section.light h2 em, .section.light h3 em {
  color: #8a6a35 !important;
  -webkit-text-fill-color: #8a6a35 !important;
}
.light .stat-row strong,
.light .case-metrics strong,
.light .index-stat strong {
  color: #8a6a35 !important;
  -webkit-text-fill-color: #8a6a35 !important;
}
/* Dark floors: never inherit near-black ink on accents */
.hero h1 em, .hero-copy h1 em, .hero-detail h1 em,
body.home h1 em, body.home h2 em {
  color: var(--px-accent, var(--gold, var(--acid, #c89f5d))) !important;
  -webkit-text-fill-color: currentColor !important;
}
/* Reveal / fade / tip: never strand copy invisible */
.rv, .rv-left, .rv-right, .rv-scale, .rv-clip, .reveal, .fade-pre,
.word-reveal .word, .text-reveal > * {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  clip-path: none !important;
}
.px-tip-rail { opacity: 0; }
.px-tip-rail.is-on { opacity: 1 !important; }
/* Muted labels: lift contrast */
.panel-index, .panel-small, .px-stack-index, .section-kicker, .kicker,
.orbital-core-kicker, .crumb, .meta, .evidence {
  opacity: 1 !important;
}
.panel-small, .px-stack-card p { opacity: 0.92 !important; }
