/* Bootstrap injected by CMS admin runs in this layer – unlayered site styles always win */
@layer cms-admin-bootstrap;

html {
  scroll-behavior: smooth;
  scroll-padding-top: 90px;
}

/* PERF HUD */
#perf-hud {
  position: fixed;
  bottom: 1rem;
  left: 1rem;
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-family: ui-monospace, 'Cascadia Code', 'Fira Code', monospace;
  font-size: 0.7rem;
  color: rgba(255,255,255,.4);
  text-shadow: none;
  user-select: none;
  pointer-events: none;
}

#perf-hud .hud-sep { opacity: 0.3; }

#hud-quality { text-transform: uppercase; letter-spacing: .06em; }
#hud-quality[data-level="lite"]   { color: #f87171; }
#hud-quality[data-level="medium"] { color: #fbbf24; }
#hud-quality[data-level="full"]   { color: #4ade80; }

.bridge-logo {
  height: 3.5rem !important;
  width: auto !important;
  max-width: 8rem !important;
}
/*
.bridge-logo[src*="realitnispravce"] {
  max-width: 12rem !important;
} 
*/
.bridge-url {
  font-size: 0.95rem;
  color: #ffc850;
  letter-spacing: .02em;
  margin-top: -0.35rem;
  transition: color .15s;
}
.bridge-link:hover .bridge-url { color: rgba(250,204,21,1); }

/* Override tailwind compiled grey — roles zlaté, linky zlaté */
.partner-item__role {
  color: #ffc850 !important;
}
.partner-link {
  color: #ffffff !important;
}
.partner-link:hover {
  color: #ffc850 !important; 
}



body {
  margin: 0;
  font-family: ui-sans-serif, system-ui;
  background: black url('../images/bg-poster.webp') center center / cover no-repeat;
  background-attachment: fixed;
  color: white;
  text-shadow: 1px 1px 1px rgba(0,0,0,1);
}

.nav-link {
  position: relative;
  transition: all 0.3s ease;
  font-family: 'Cinzel', serif;
  font-weight: 500;
  font-size: 1rem;
  padding-bottom: 4px;
  line-height: calc(2rem - 4px);
  height: 2rem;
}

.nav-link::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background: #ffc850;
  transition: width 0.3s ease, box-shadow 0.3s ease;
}

.nav-link:hover::after,
.nav-link.active::after {
  width: 100%;
  box-shadow: 0 0 10px #ffc850;
}

.nav-link.active {
  color: #ffc850;
}




.footer-link {
  position: relative;
  display: inline-block;
  transition: all 0.3s ease;
}



.footer-link::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background: #ffc850;
  transition: width 0.3s ease;
}

.footer-link:hover::after {
  width: 100%;
  box-shadow: 0 0 10px #ffc850;
}

.bg-video {
  position: fixed;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  /* Videos decode in background; WebGL canvas renders them */
}

#bg-canvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: -2;
  display: block;
}

.bg-overlay {
  position: fixed;
  inset: 0;
 /* background: rgba(0, 0, 0, 0.5);*/
  z-index: -1;
  /*filter: url(#glass-effect);*/
}

.glass {
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);

  background: rgba(20, 25, 30, 0.45);
  border: 1px solid rgba(255, 255, 255, .12);
  /* Transparent initial shadow that matches hover structure – avoids transition from 'none' */
  box-shadow:
    0 20px 60px rgba(0, 0, 0, 0),
    0 0 0px rgba(255, 200, 80, 0),
    inset 0 1px 0 rgba(255, 255, 255, 0),
    inset 0 -1px 0 rgba(0, 0, 0, 0);
  transition:
    transform      0.3s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow     0.3s cubic-bezier(0.4, 0, 0.2, 1),
    border-color   0.3s cubic-bezier(0.4, 0, 0.2, 1),
    background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);


}

/* Animated border */
.glass::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.05), transparent);
    transform: translateX(-100%);
    transition: transform 0.5s ease;
}
.glass:hover::before {
    transform: translateX(100%);
}

/* Glare effect */
.glass::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: radial-gradient(circle at var(--x, 50%) var(--y, 50%), rgba(255, 255, 255, 0.08), transparent 25%);
    opacity: 0;
    transition: opacity 0.5s;
}
.glass:hover::after {
    opacity: 1;
}

#provozujeme .glass:hover,
#o-nas .glass:hover,
#spolupracujeme .glass:hover {
  transform: translateY(-1px);
  will-change: transform;
  border-color: rgba(255, 255, 255, .24);
  box-shadow:
    0 40px 90px rgba(0, 0, 0, 0.4),
    0 0 25px rgba(255, 200, 80, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, .15),
    inset 0 -1px 0 rgba(0, 0, 0, .2);
  background: rgba(255, 255, 255, 0.06);
}

.glass > * {
  position: relative;
  z-index: 1;
}

.heading, .person-initials, h1, h2, h3 {
  font-family: 'Cinzel', serif;
  font-weight: 600;
  text-shadow: 1px 1px 5px rgba(0,0,0,1);
  color: white;
}

/* LOGO ANIMATION */
#logo {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: end;
  justify-content: center;
  z-index: 10
}

#logo strong {
  display: inline-block;
  color: rgba(255, 200, 80, 0);
  line-height: 3rem;
  font-family: 'Cinzel', serif;
  font-weight: 500;
  font-size: 3rem;
  letter-spacing: .2em;
  filter: blur(12px);
  transition: color 3s ease-in-out, filter 3s ease-in-out, text-shadow 2s ease-in-out
}

#logo.logo-step-1 strong {
  color: rgba(255, 200, 80, .4);
  filter: blur(6px);
  text-shadow: 0 0 15px rgba(255, 170, 0, .3)
}

#logo.logo-step-2 strong {
  color: #ffe5ac;
  filter: blur(0);
  text-shadow: 0 0 10px rgba(255, 170, 0, .5)
}

#logo.logo-step-3 strong {
  color: #ffc850;
  text-shadow: 0 0 15px rgba(255, 200, 80, .8), 0 0 30px rgba(255, 170, 0, .9), 0 0 60px rgba(255, 140, 0, .7)
}

#logo span {
  position: relative;
  right: 0;
  display: inline-block;
  opacity: 0;
color: #ffc850;
  line-height: 3rem;
  font-family: 'Cinzel', serif;
  font-weight: 500;
  font-size: 2.7rem;
  letter-spacing: .2em;
}

#logo span.char {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: translateX(30px);
  transition: transform .8s cubic-bezier(.22, 1, .36, 1), opacity .8s ease-out
}

#logo span.char.reveal {
  opacity: 1;
  transform: translateX(0)
}

#logo.logo-step-3 span.char.reveal {
  text-shadow: 0 0 15px rgba(255, 200, 80, .8), 0 0 30px rgba(255, 170, 0, .9), 0 0 60px rgba(255, 140, 0, .7)
}

@keyframes glowPulse {
  0% {
    text-shadow: 0 0 5px rgba(255, 200, 80, .4)
  }

  50% {
    text-shadow: 0 0 50px rgba(255, 170, 0, .7), 0 0 60px rgba(255, 140, 0, .7)
  }

  100% {
    text-shadow: 0 0 5px rgba(255, 200, 80, .4)
  }
}

#logo.logo-animate strong,
#logo.logo-animate span.char.reveal {
  animation: glowPulse 5s ease-in-out infinite
}

#logo small {
  display: block;
  font-family: 'Cinzel', serif;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: .25em;
  color: #ffc850;
  line-height: 1.4;
  text-align: right;
  margin-top: -.25rem;
  margin-right: 0.3rem;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 1s ease, transform 1s ease;
}

#logo.sro-visible small {
  opacity: 1;
  transform: translateY(0);
}

/* DESKTOP NAV – slide in from right on load */
@keyframes navSlideIn {
  from {
    opacity: 0;
    transform: translateY(-50px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.desktop-nav a.nav-link {
  opacity: 0;
  animation: navSlideIn 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.desktop-nav a.nav-link:nth-child(1) { animation-delay: 3.0s; }
.desktop-nav a.nav-link:nth-child(2) { animation-delay: 3.2s; }
.desktop-nav a.nav-link:nth-child(3) { animation-delay: 3.4s; }
.desktop-nav a.nav-link:nth-child(4) { animation-delay: 3.6s; }
.desktop-nav a.nav-link:nth-child(5) { animation-delay: 3.8s; }
/* PROVOZUJEME MARQUEE */
.marquee-wrapper {
  overflow: hidden;
  position: relative
}

.marquee-track {
  display: flex;
  width: max-content;
  animation: scroll 35s linear infinite
}

.marquee-track:hover {
  animation-play-state: paused
}

.logo-item {
  flex: 0 0 auto;
  padding: 0 60px;
  opacity: .6;
  filter: grayscale(100%);
  transition: .4s
}

.logo-item:hover {
  opacity: 1;
  filter: grayscale(0)
}

.logo-item img {
  height: 50px;
  width: auto;
  display: block
}

@keyframes scroll {
  0% {
    transform: translateX(0)
  }

  100% {
    transform: translateX(-50%)
  }
}

/* HAMBURGER MENU */
.hamburger-bar {
  display: block;
  width: 24px;
  height: 2px;
  background: white;
  border-radius: 2px;
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease;
}

#menu-toggle.open .hamburger-bar:nth-child(1) {
  transform: translateY(8px) rotate(45deg);
}

#menu-toggle.open .hamburger-bar:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

#menu-toggle.open .hamburger-bar:nth-child(3) {
  transform: translateY(-8px) rotate(-45deg);
}

/* MOBILE MENU */
#mobile-menu {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background: rgba(0, 0, 0, 0.96);
  /* No backdrop-filter – rgba background is opaque enough and avoids full-screen blur repaint */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transform: translateY(-100%);
  transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 40;
}

#mobile-menu.open {
  transform: translateY(0);
}

/* Header scroll effect */
header {
  
  transition: backdrop-filter 0.4s ease-in-out;
  overflow: visible;
}

/* Gradient fade – pseudo-element is taller than the header so it truly dissolves */
header::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 110px;
  background: linear-gradient(to bottom,
    rgba(0, 0, 0, 0.85) 0%,
    rgba(0, 0, 0, 0.55) 60%,
    transparent        100%);
  pointer-events: none;
  z-index: -1;
  transition: background 0.4s ease-in-out;
}

header {
 /* backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);*/
}

header.scrolled::after {
  background: linear-gradient(to bottom,
    rgba(0, 0, 0, 0.95) 0%,
    rgba(0, 0, 0, 0.65) 65%,
    transparent        100%);
}

header .header-inner {
  padding-top: 1rem;
  padding-bottom: 0.6rem;
}

/* ── Reduced-motion: disable/shorten transitions, keep blur ── */
@media (prefers-reduced-motion: reduce) {
  .glass,
  .glass::before,
  .glass::after {
    transition-duration: 0.01ms !important;
  }

  /* Freeze the sweep so it never moves */
  .glass:hover::before {
    transform: translateX(-100%);
  }

  .nav-link,
  .nav-link::after,
  .footer-link,
  .footer-link::after {
    transition-duration: 0.01ms !important;
  }

  header {
    transition-duration: 0.01ms !important;
  }

  #mobile-menu {
    transition-duration: 0.01ms !important;
  }

  /* AOS: show immediately, no movement */
  [data-aos] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  /* Degrade glass effects – reduced-motion often correlates with low-power/weaker devices */
  .glass {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(20, 25, 30, 0.88);
    /* backdrop-filter no longer auto-promotes this layer; restore GPU promotion manually */
    transform: translateZ(0);
  }
  .glass::after,
  .glass::before {
    display: none;
  }
  header.scrolled {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  header.scrolled::after {
    background: linear-gradient(to bottom,
      rgba(0, 0, 0, 0.95)  0%,
      rgba(0, 0, 0, 0.70) 55%,
      transparent         100%);
  }
}
/* ── AOS fade-up – native IntersectionObserver replacement (no library) ── */
[data-aos] {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
[data-aos].aos-animate {
  opacity: 1;
  transform: none;
}

/* ── Mobile: skip expensive backdrop-filter ── */
@media (max-width: 768px) {
  .glass {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(20, 25, 30, 0.82);
    /* backdrop-filter no longer auto-promotes this layer; restore GPU promotion manually */
    transform: translateZ(0);
  }
  .bg-overlay {
    filter: none;
  }
  /* Header scrolled: no blur, compensate with darker gradient */
  header.scrolled {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  header.scrolled::after {
    background: linear-gradient(to bottom,
      rgba(0, 0, 0, 0.95)  0%,
      rgba(0, 0, 0, 0.70) 55%,
      transparent         100%);
  }
}

/* ── Touch devices: disable glare and sweep (no hover/mousemove on touch) ── */
@media (pointer: coarse) {
  .glass::after {
    display: none;
  }
  .glass::before {
    display: none;
  }
}

/* ── User prefers reduced transparency: remove all backdrop-filter ── */
@media (prefers-reduced-transparency: reduce) {
  .glass {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(20, 25, 30, 0.88);
  }
  header.scrolled {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  header.scrolled::after {
    background: linear-gradient(to bottom,
      rgba(0, 0, 0, 0.95)  0%,
      rgba(0, 0, 0, 0.70) 55%,
      transparent         100%);
  }
}

/* ── Content-visibility: let browser skip off-screen section rendering ── */
#o-nas,
#provozujeme,
#spolupracujeme,
#kontakt {
  content-visibility: auto;
  contain-intrinsic-size: auto 800px;
}

/* ── Scan-line overlay (left half) ── */
.bg-overlay::after {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0vw;
  pointer-events: none;
  z-index: 0;
  background-image: repeating-linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.1),
    rgba(0, 0, 0, 0.1) 1px,
    transparent 1px,
    transparent 3px
  );
}

/* ── Responsive logo – shrink on small phones ── */
@media (max-width: 480px) {
  #logo strong {
    font-size: 2rem;
    line-height: 2.4rem;
  }
  #logo span {
    font-size: 1.8rem;
    line-height: 2.4rem;
  }
  #logo small {
    font-size: 0.75rem;
  }
}

/* ── Hero scroll arrow ── */
.hero-scroll-arrow {
  position: absolute;
  bottom: 2.5rem;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.4);
  transition: color 0.3s ease, transform 0.3s ease;
  animation: arrowBounce 2s ease-in-out infinite;
}

.hero-scroll-arrow:hover {
  color: #ffc850;
  animation-play-state: paused;
  transform: translateX(-50%) translateY(4px);
}

.hero-scroll-arrow svg {
  width: 2.5rem;
  height: 2.5rem;
}

@keyframes arrowBounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%       { transform: translateX(-50%) translateY(8px); }
}

/* ── Performance levels (data-perf set inline before first paint) ── */

[data-perf="medium"] .glass {
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
/* Disable glare on medium – keep sweep */
[data-perf="medium"] .glass::after {
  display: none;
}

[data-perf="lite"] .glass {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  background: rgba(20, 25, 30, 0.88);
  /* backdrop-filter no longer auto-promotes this layer; restore GPU promotion manually */
  transform: translateZ(0);
}
[data-perf="lite"] .glass::before,
[data-perf="lite"] .glass::after {
  display: none;
}
/* Disable glow pulse on lite – text-shadow paint is not composited */
[data-perf="lite"] #logo strong,
[data-perf="lite"] #logo span.char.reveal {
  animation: none;
}

