/* UPNAC — Advanced visual polish (ambient, motion, depth) */

:root {
  --adv-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --adv-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --adv-glow-blue: rgba(59, 130, 246, 0.45);
  --adv-glow-cyan: rgba(34, 211, 238, 0.35);
  --adv-border-shine: linear-gradient(135deg, rgba(255,255,255,0.25), rgba(255,255,255,0.02) 40%, rgba(99,102,241,0.35));
}

/* ─── Ambient layers ─── */
.cursor-glow {
  position: fixed;
  width: 480px;
  height: 480px;
  margin: -240px 0 0 -240px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 9998;
  opacity: 0;
  background: radial-gradient(circle, rgba(99, 102, 241, 0.14) 0%, rgba(34, 211, 238, 0.06) 35%, transparent 70%);
  transition: opacity 0.4s ease;
  mix-blend-mode: screen;
}
body.has-cursor-glow .cursor-glow {
  opacity: 1;
}
.site-grain {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9997;
  opacity: 0.035;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.page-home .site-grain,
.page-inner .site-grain,
.page-local .site-grain {
  opacity: 0.05;
}

/* ─── Scroll progress upgrade ─── */
.scroll-progress {
  height: 4px;
  background: transparent;
}
.scroll-progress span {
  background: linear-gradient(90deg, #2563eb, #6366f1, #22d3ee, #6366f1);
  background-size: 200% 100%;
  animation: adv-progress-shine 4s linear infinite;
  box-shadow: 0 0 20px var(--adv-glow-cyan), 0 0 40px var(--adv-glow-blue);
}
@keyframes adv-progress-shine {
  0% { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* ─── Page loader ─── */
.page-loader .loader-ring {
  width: 52px;
  height: 52px;
  border-width: 3px;
  border-color: rgba(99, 102, 241, 0.15);
  border-top-color: #6366f1;
  border-right-color: #22d3ee;
  animation: adv-spin 0.9s linear infinite;
}
.page-loader::before {
  content: '';
  position: absolute;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(99, 102, 241, 0.2), transparent 70%);
  animation: adv-pulse 1.5s ease-in-out infinite;
}
@keyframes adv-spin {
  to { transform: rotate(360deg); }
}
@keyframes adv-pulse {
  0%, 100% { transform: scale(0.9); opacity: 0.6; }
  50% { transform: scale(1.1); opacity: 1; }
}

/* ─── Section dividers ─── */
.section-divider-adv {
  display: flex;
  justify-content: center;
  padding: 0.5rem 0 2rem;
  pointer-events: none;
}
.section-divider-adv span {
  display: block;
  width: min(200px, 40%);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(99, 102, 241, 0.5), rgba(34, 211, 238, 0.5), transparent);
  box-shadow: 0 0 24px rgba(99, 102, 241, 0.25);
}
.section-divider-adv--warm span {
  background: linear-gradient(90deg, transparent, rgba(201, 162, 39, 0.4), rgba(244, 208, 63, 0.35), transparent);
}

/* Section ambient line on light sections */
.section:not(.section-dark):not(.hero):not(.hero-ultra):not(.page-hero-pro):not(.local-hero):last-of-type::after {
  content: '';
  display: block;
  width: min(1200px, 90%);
  margin: 2rem auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(99, 102, 241, 0.1), transparent);
}
.section-alt {
  position: relative;
}
.section-alt::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: min(600px, 80%);
  height: 120px;
  background: radial-gradient(ellipse at top, rgba(99, 102, 241, 0.06), transparent 70%);
  pointer-events: none;
}

/* ─── Section headings ─── */
.section-head h2,
.section-head-center h2 {
  position: relative;
  display: inline-block;
}
.section-head.visible h2::after,
.section-head-center.visible h2::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -0.35rem;
  width: 100%;
  height: 3px;
  border-radius: 2px;
  background: var(--gradient-brand);
  transform: scaleX(0);
  transform-origin: left;
  animation: adv-underline 0.8s var(--adv-ease-out) forwards;
}
@keyframes adv-underline {
  to { transform: scaleX(1); }
}
.eyebrow-glow,
.eyebrow {
  text-shadow: 0 0 40px rgba(99, 102, 241, 0.25);
}

/* ─── Stagger grid reveals ─── */
.stagger-grid > * {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s var(--adv-ease-out), transform 0.7s var(--adv-ease-out);
}
.stagger-grid.is-visible > * {
  opacity: 1;
  transform: translateY(0);
}
.stagger-grid.is-visible > *:nth-child(1) { transition-delay: 0.04s; }
.stagger-grid.is-visible > *:nth-child(2) { transition-delay: 0.08s; }
.stagger-grid.is-visible > *:nth-child(3) { transition-delay: 0.12s; }
.stagger-grid.is-visible > *:nth-child(4) { transition-delay: 0.16s; }
.stagger-grid.is-visible > *:nth-child(5) { transition-delay: 0.2s; }
.stagger-grid.is-visible > *:nth-child(6) { transition-delay: 0.24s; }
.stagger-grid.is-visible > *:nth-child(7) { transition-delay: 0.28s; }
.stagger-grid.is-visible > *:nth-child(8) { transition-delay: 0.32s; }
.stagger-grid.is-visible > *:nth-child(n+9) { transition-delay: 0.36s; }

/* ─── Card shine borders ─── */
.img-box-card,
.service-card-visual,
.blog-card-pro,
.related-svc-card,
.home-bento-tile,
.pricing-card,
.local-district-card {
  position: relative;
  isolation: isolate;
}
.img-box-card::before,
.service-card-visual::before,
.blog-card-pro::before,
.related-svc-card::before,
.home-bento-tile::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: var(--adv-border-shine);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
  z-index: 2;
}
.img-box-card:hover::before,
.service-card-visual:hover::before,
.blog-card-pro:hover::before,
.related-svc-card:hover::before,
.home-bento-tile:hover::before {
  opacity: 1;
}

/* ─── Buttons advanced ─── */
.btn-glow,
.btn-primary.btn-lg {
  position: relative;
  overflow: hidden;
}
.btn-glow::after,
.header-cta::after {
  content: '';
  position: absolute;
  inset: -2px;
  background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.35) 50%, transparent 60%);
  transform: translateX(-120%);
  transition: transform 0.6s ease;
  pointer-events: none;
}
.btn-glow:hover::after,
.header-cta:hover::after {
  transform: translateX(120%);
}
.btn-magnetic,
.btn-glow {
  transition: transform 0.2s var(--adv-ease-out), box-shadow 0.25s ease;
}
.btn-primary.btn-glow:hover {
  box-shadow: 0 8px 32px rgba(59, 130, 246, 0.45), 0 0 0 1px rgba(99, 102, 241, 0.3);
}

/* ─── Forms premium ─── */
.contact-form-wrap {
  box-shadow: 0 24px 64px rgba(3, 7, 18, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.form-row input:focus,
.form-row select:focus,
.form-row textarea:focus {
  box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.18), 0 8px 24px rgba(59, 130, 246, 0.08);
}
.contact-mini-card {
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.06);
  padding: 1rem;
  background: rgba(255, 255, 255, 0.02);
}

/* ─── Images load fade ─── */
img {
  transition: opacity 0.5s ease;
}
img.is-loading {
  opacity: 0;
}
img.is-loaded {
  opacity: 1;
}

/* ─── Parallax layers ─── */
[data-parallax] {
  will-change: transform;
  transition: transform 0.1s linear;
}

/* ─── Footer aurora ─── */
.site-footer {
  position: relative;
  overflow: hidden;
}
.site-footer .footer-glow {
  opacity: 0.7;
  filter: blur(40px);
}
.site-footer::before {
  content: '';
  position: absolute;
  top: -120px;
  left: 10%;
  width: 40%;
  height: 200px;
  background: radial-gradient(ellipse, rgba(99, 102, 241, 0.15), transparent 70%);
  pointer-events: none;
}
.site-footer::after {
  content: '';
  position: absolute;
  top: -80px;
  right: 5%;
  width: 35%;
  height: 180px;
  background: radial-gradient(ellipse, rgba(34, 211, 238, 0.1), transparent 70%);
  pointer-events: none;
}

/* ─── WhatsApp & back to top ─── */
.whatsapp-float {
  box-shadow: 0 8px 28px rgba(37, 211, 102, 0.45);
  animation: adv-wa-pulse 3s ease-in-out infinite;
}
@keyframes adv-wa-pulse {
  0%, 100% { box-shadow: 0 8px 28px rgba(37, 211, 102, 0.4); }
  50% { box-shadow: 0 8px 36px rgba(37, 211, 102, 0.65), 0 0 0 8px rgba(37, 211, 102, 0.12); }
}
.back-to-top.visible {
  box-shadow: 0 8px 24px rgba(99, 102, 241, 0.35);
  transform: translateY(0) scale(1);
}
.back-to-top {
  transition: transform 0.35s var(--adv-ease-spring), box-shadow 0.3s ease, opacity 0.3s ease;
}

/* ─── Sticky CTA glass ─── */
.sticky-cta-inner {
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(99, 102, 241, 0.15);
}

/* ─── Page hero pro depth ─── */
.page-hero-pro::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 80px;
  background: linear-gradient(to top, #f1f5f9, transparent);
  pointer-events: none;
}
.page-home .page-hero-pro::after,
.page-hero-pro--article::after {
  background: linear-gradient(to top, var(--navy-950, #030712), transparent);
}

/* ─── Local pages ─── */
.page-local .local-district-card {
  transition: transform 0.3s var(--adv-ease-out), box-shadow 0.3s ease, border-color 0.25s;
}
.page-local .local-district-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
}
.page-local .local-hero-hub h1 {
  text-shadow: 0 0 60px rgba(99, 102, 241, 0.2);
}

/* ─── Pricing featured ─── */
.pricing-featured {
  animation: adv-card-glow 4s ease-in-out infinite;
}
@keyframes adv-card-glow {
  0%, 100% { box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.4), 0 20px 50px rgba(99, 102, 241, 0.12); }
  50% { box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.45), 0 24px 56px rgba(99, 102, 241, 0.2); }
}

/* ─── Testimonial cards ─── */
.testimonial-card-pro {
  transition: transform 0.35s var(--adv-ease-out), box-shadow 0.35s ease;
}
.testimonials-carousel .testimonial-card-pro:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.15);
}

/* ─── Header logo subtle ─── */
.site-header.scrolled .logo img {
  filter: drop-shadow(0 2px 8px rgba(59, 130, 246, 0.2));
  transition: filter 0.35s ease;
}

/* ─── Top bar shimmer ─── */
.top-bar {
  position: relative;
  overflow: hidden;
}
.top-bar::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.04), transparent);
  animation: adv-shimmer 8s ease-in-out infinite;
}
@keyframes adv-shimmer {
  0% { left: -100%; }
  50%, 100% { left: 150%; }
}

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion: reduce) {
  .cursor-glow,
  .site-grain,
  .top-bar::after { display: none !important; }
  .scroll-progress span { animation: none; }
  .stagger-grid > * {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .pricing-featured { animation: none; }
  .whatsapp-float { animation: none; }
}

@media (pointer: coarse) {
  .cursor-glow { display: none !important; }
}

@media (max-width: 768px) {
  .cursor-glow { display: none; }
}

/* ─── Theme toggle ─── */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  margin-left: 0.35rem;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--slate-300);
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s, transform 0.2s;
}
.theme-toggle:hover {
  background: rgba(99, 102, 241, 0.2);
  border-color: rgba(99, 102, 241, 0.4);
}
.theme-icon {
  font-size: 0.95rem;
  line-height: 1;
}
.theme-icon-moon {
  display: none;
}
[data-theme="dark"] .theme-icon-sun {
  display: none;
}
[data-theme="dark"] .theme-icon-moon {
  display: inline;
}

/* ─── Dark theme (comfortable reading) ─── */
[data-theme="dark"] body {
  background: #0c1222;
  color: #cbd5e1;
}
[data-theme="dark"] .section-alt {
  background: #111827;
}
[data-theme="dark"] .section:not(.section-dark):not(.hero):not(.hero-ultra) {
  background: #0c1222;
}
[data-theme="dark"] .content-panel,
[data-theme="dark"] .panel-light,
[data-theme="dark"] .premium-panel,
[data-theme="dark"] .service-card,
[data-theme="dark"] .blog-card,
[data-theme="dark"] .contact-form-wrap,
[data-theme="dark"] .contact-info {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
  color: #e2e8f0;
}
[data-theme="dark"] .section-head h2,
[data-theme="dark"] h1,
[data-theme="dark"] h2,
[data-theme="dark"] h3 {
  color: #f1f5f9;
}
[data-theme="dark"] p,
[data-theme="dark"] .section-head p {
  color: #94a3b8;
}
[data-theme="dark"] .site-header.scrolled {
  background: rgba(12, 18, 34, 0.95);
  border-bottom-color: rgba(255, 255, 255, 0.08);
}
[data-theme="dark"] .site-header.scrolled .main-nav a {
  color: #cbd5e1;
}
[data-theme="dark"] .page-local {
  background: #0c1222;
}
[data-theme="dark"] .page-local .local-main,
[data-theme="dark"] .page-local .local-faq .faq-item {
  background: rgba(255, 255, 255, 0.03);
  color: #e2e8f0;
}
[data-theme="dark"] .cookie-consent {
  background: rgba(15, 23, 42, 0.96);
  border-color: rgba(255, 255, 255, 0.1);
  color: #e2e8f0;
}

/* Cookie bar glass */
.cookie-consent {
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
  border: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.2);
}
