/* Hero – panel z interaktywnymi ikonami 3D (js/hero-logo-physics.js) */

.hero-3d {
  --hero-3d-bg: #eef2f4;
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-height: 640px;
  border-radius: 1rem;
  overflow: hidden;
  background: var(--hero-3d-bg);
  box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.25),
    inset 0 0 0 1px rgba(15, 23, 42, 0.06);
  transition: background-color 0.3s ease;
  isolation: isolate;
}

.hero-3d__canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  touch-action: pan-y;
  opacity: 0;
  transition: opacity 0.6s ease;
}

.hero-3d.is-ready .hero-3d__canvas {
  opacity: 1;
}

/* Statyczna ikona, gdy WebGL/JS jest niedostępny. */
.hero-3d__fallback {
  position: absolute;
  inset: 22%;
  width: 56%;
  height: 56%;
  object-fit: contain;
  transition: opacity 0.4s ease;
}

.hero-3d.is-ready .hero-3d__fallback {
  opacity: 0;
  visibility: hidden;
}

/* Tryby strony: tło panelu podąża za trybem jasnym/ciemnym. */
body.dark-mode .hero-3d {
  --hero-3d-bg: #050506;
  background: var(--hero-3d-bg) !important;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6),
    inset 0 0 0 1px rgba(255, 255, 255, 0.06);
}

body.high-contrast:not(.dark-mode) .hero-3d {
  --hero-3d-bg: #ffffff;
  background: var(--hero-3d-bg) !important;
  box-shadow: none;
  outline: 3px solid #000;
}

body.high-contrast.dark-mode .hero-3d {
  --hero-3d-bg: #000000;
  background: var(--hero-3d-bg) !important;
  box-shadow: none;
  outline: 3px solid #fff;
}

body.high-contrast .hero-3d .hero-3d__fallback {
  border: 0 !important;
}

@media (max-width: 1023px) {
  .hero-3d {
    aspect-ratio: 4 / 3;
  }
}

@media (max-width: 639px) {
  .hero-3d {
    aspect-ratio: 1 / 1;
  }
}

/* Hero 3D jako tło całej sekcji hero (z paczki polybrand-original-top-hero3d-test-v10) */

.hero-3d-background-section { isolation: isolate; }
.hero-3d-content-shell { position: relative; z-index: 3; }
.hero-3d-breadcrumbs { position: relative; z-index: 4; margin-bottom: .5rem; }
.hero-3d-breadcrumbs ol { width: fit-content; padding: .15rem .1rem; }
.hero-3d-breadcrumbs, .hero-3d-breadcrumbs a, .hero-3d-breadcrumbs span { color: rgba(75,85,99,.92); }
body.dark-mode .hero-3d-breadcrumbs,
body.dark-mode .hero-3d-breadcrumbs a,
body.dark-mode .hero-3d-breadcrumbs span { color: rgba(229,231,235,.92); }
.hero-3d-copy-panel {
  position: relative;
  padding: 2rem 1.25rem;
  border-radius: 1.6rem;
  background: linear-gradient(135deg, rgba(255,255,255,.70), rgba(255,255,255,.46));
  backdrop-filter: blur(10px) saturate(.92);
  -webkit-backdrop-filter: blur(10px) saturate(.92);
  box-shadow: 0 24px 80px rgba(15, 23, 42, .08), inset 0 0 0 1px rgba(255,255,255,.36);
}
.hero-3d-scene-shell {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  transform: translate3d(0, var(--hero-parallax-offset, 0px), 0) scale(1.04);
  will-change: transform;
}
.hero-3d--background {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-height: none;
  aspect-ratio: auto;
  border-radius: 0;
  background: transparent !important;
  box-shadow: none !important;
  outline: 0 !important;
}
.hero-3d--background .hero-3d__fallback { opacity: .08; filter: blur(1px); }
.hero-3d-frost-mask {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(110deg, rgba(240,244,248,.88) 0%, rgba(236,240,244,.72) 35%, rgba(230,235,240,.62) 62%, rgba(244,247,250,.78) 100%),
    rgba(232,236,241,.44);
  backdrop-filter: blur(12px) saturate(.88);
  -webkit-backdrop-filter: blur(12px) saturate(.88);
  pointer-events: none;
}
body.dark-mode .hero-3d-copy-panel,
body.high-contrast.dark-mode .hero-3d-copy-panel {
  background: linear-gradient(135deg, rgba(9,12,18,.62), rgba(9,12,18,.38));
  box-shadow: 0 24px 80px rgba(0, 0, 0, .28), inset 0 0 0 1px rgba(255,255,255,.06);
}
body.dark-mode .hero-3d-frost-mask {
  background:
    linear-gradient(110deg, rgba(8,11,16,.76) 0%, rgba(12,15,21,.68) 35%, rgba(18,21,28,.54) 62%, rgba(10,13,18,.74) 100%),
    rgba(8,10,14,.44);
}
body.high-contrast:not(.dark-mode) .hero-3d-copy-panel { background: rgba(255,255,255,.94); box-shadow: inset 0 0 0 2px #000; }
body.high-contrast.dark-mode .hero-3d-frost-mask { background: rgba(0,0,0,.74); }
@media (max-width: 1023px) {
  .hero-3d-copy-panel { padding: 1.5rem 1rem; }
  .hero-3d-scene-shell { transform: translate3d(0, var(--hero-parallax-offset, 0px), 0) scale(1.08); }
}

/* Kafelek ze strzałką w hero – przewija do sekcji „Nasze usługi” */
.hero-scroll-cue {
  position: relative;
  z-index: 4;
}

/* Nagłówek hero: trzy stałe linie. Środkowa rotuje i ma zarezerwowaną
   wysokość (js/hero-rotating-line.js liczy ją z najdłuższego słowa),
   więc zmiana słowa nie przesuwa treści pod nagłówkiem. */
.hero-h1__line {
  display: block;
}

.hero-h1__line--rotating {
  /* Zapas do czasu pomiaru: dwie linie plus padding #dynamicWord. */
  min-height: var(--hero-rotating-line, 3.15em);
  /* Długie słowa (zwłaszcza w DE) dzielimy, zamiast wychodzić za panel. */
  hyphens: auto;
  overflow-wrap: break-word;
}

/* .gradient-text jest inline-block – przy słowie łamanym na dwie linie
   doliczany jest margines na spadające elementy liter i wysokość rośnie
   o kilka pikseli. W tej linii blok daje równe wielokrotności interlinii. */
.hero-h1__line--rotating > .gradient-text {
  display: block;
}

/* Karta hero: szerokość dobrana do najdłuższej frazy rotatora we wszystkich
   językach (js/hero-rotating-line.js), więc fraza mieści się w jednej linii.
   Teksty pod nagłówkiem zostają na dotychczasowej szerokości. */
.hero-3d-copy-panel {
  width: 100%;
  max-width: var(--hero-copy-width, none);
}

.hero-3d-copy-panel > *:not(.hero-h1) {
  max-width: 35rem;
}
