/* ============================================================
   PALASTAR — premium polish layer (theme-agnostic)
   Loaded on top of each page's own styles. Pure enhancement:
   never changes layout, colour or typography of the base design.
   ============================================================ */

/* ---------- Typography refinement ---------- */
html {
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
}

/* ---------- Lenis smooth scroll ---------- */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* ---------- Scroll progress ---------- */
.scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 100%;
  background: #0a0a0a;
  transform: scaleX(0);
  transform-origin: 0 50%;
  z-index: 400;
  pointer-events: none;
}

/* ---------- Nav: refine + auto-hide ---------- */
.nav {
  transition: transform 0.55s cubic-bezier(0.4, 0, 0.2, 1),
              box-shadow 0.4s ease,
              background 0.4s ease;
  will-change: transform;
}
.nav.is-scrolled { box-shadow: 0 1px 24px rgba(0, 0, 0, 0.06); }
.nav.is-hidden { transform: translateY(-100%); }

/* ---------- Animated link underline (nav + drawer + footer) ---------- */
.nav-links a,
.nav-drawer-list a,
.site-footer a,
.footer a,
.footer-col a {
  position: relative;
}
.nav-links a::after,
.nav-drawer-list a::after,
.site-footer a::after,
.footer a::after,
.footer-col a::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -3px;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
}
@media (hover: hover) and (pointer: fine) {
  .nav-links a:hover::after,
  .nav-drawer-list a:hover::after,
  .site-footer a:hover::after,
  .footer a:hover::after,
  .footer-col a:hover::after {
    transform: scaleX(1);
    transform-origin: left;
  }
}

/* ---------- Custom text selection ---------- */
::selection { background: #0a0a0a; color: #ffffff; }
::-moz-selection { background: #0a0a0a; color: #ffffff; }

/* ---------- Keyboard focus states ---------- */
:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
  border-radius: 2px;
}
a:focus:not(:focus-visible),
button:focus:not(:focus-visible) { outline: none; }

/* ---------- Image blur-up on load ---------- */
img.premium-img {
  opacity: 0;
  filter: blur(12px);
  transition: opacity 1s ease, filter 1s ease;
}
img.premium-img.is-loaded {
  opacity: 1;
  filter: blur(0);
}

/* ---------- Subtle image hover (only on clipped frames) ---------- */
@media (hover: hover) and (pointer: fine) {
  .zoom .premium-img:not([data-parallax]) {
    transition: transform 1.2s cubic-bezier(0.2, 0.8, 0.2, 1),
                filter 0.8s ease, opacity 1s ease;
  }
  .zoom:hover .premium-img:not([data-parallax]) {
    transform: scale(1.045);
  }
  .premium-img.is-loaded:not([data-parallax]):hover {
    filter: brightness(1.05);
  }
}

/* ---------- Reveals (driven by premium.js when GSAP present) ---------- */
html.gsap-reveals [data-reveal],
html.gsap-reveals .reveal {
  transition: none !important;
}

/* ---------- Respect reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .nav { transition: none; }
  img.premium-img { transition: opacity 0.4s ease; filter: none; }
  .scroll-progress { display: none; }
}
