/* HizliOran — premium motion & polish layer (v2026070601)
   Additive only: layers on top of portal.css / style.css. Every effect degrades
   safely without JS and is fully disabled under prefers-reduced-motion.
   Tokens reused: --hz-green #31d099, --hz-cyan #49b7ff, --hz-violet #a78bfa. */

/* ============ 1. MOVING HERO AURORA ============ */
/* The hero blobs already exist (.hz-hero-fx span); make them drift + add an
   animated conic aurora sheen behind hero panels. */
.hz-hero-fx .b1 { animation: hz-float-a 15s ease-in-out infinite; }
.hz-hero-fx .b2 { animation: hz-float-b 18s ease-in-out infinite; }
.hz-hero-fx .b3 { animation: hz-float-c 13s ease-in-out infinite; }

@keyframes hz-float-a {
  0%,100% { transform: translate(0,0) scale(1); }
  50%     { transform: translate(46px, 34px) scale(1.12); }
}
@keyframes hz-float-b {
  0%,100% { transform: translate(0,0) scale(1); }
  50%     { transform: translate(-40px, -30px) scale(1.15); }
}
@keyframes hz-float-c {
  0%,100% { transform: translate(-50%,0) scale(1); opacity:.26; }
  50%     { transform: translate(-42%, 26px) scale(1.2); opacity:.38; }
}

/* Animated aurora ribbon behind the home hero + page-title heroes */
.hz-home-hero::before,
.hz-package-hero::before {
  content: "";
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  background:
    conic-gradient(from 0deg at 30% 20%,
      rgba(49,208,153,.00) 0deg,
      rgba(49,208,153,.14) 70deg,
      rgba(73,183,255,.12) 160deg,
      rgba(167,139,250,.10) 250deg,
      rgba(49,208,153,.00) 360deg);
  filter: blur(26px);
  opacity: .8;
  z-index: 0;
  pointer-events: none;
  animation: hz-aurora-spin 22s linear infinite;
}
.hz-home-hero { position: relative; }
/* content stacking above the aurora is already handled by portal.css
   (.hz-home-hero > *:not(.hz-hero-fx){z-index:1}); the ::before sits at z-index:0. */
@keyframes hz-aurora-spin { to { transform: rotate(360deg); } }

/* ============ 2. NAV — scroll-aware + animated active underline ============ */
.nav { transition: background .3s ease, box-shadow .3s ease, border-color .3s ease; }
.nav.hz-scrolled {
  background: rgba(7,9,15,.94);
  box-shadow: 0 12px 40px -18px rgba(0,0,0,.75);
  border-bottom-color: rgba(49,208,153,.22);
}
.nav-links a { position: relative; }
.nav-links a::after {
  content: "";
  position: absolute;
  left: 12px; right: 12px; bottom: 4px;
  height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, var(--hz-green, #31d099), var(--hz-cyan, #49b7ff));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .28s cubic-bezier(.16,1,.3,1);
}
.nav-links a:hover::after,
.nav-links a.active::after { transform: scaleX(1); }

/* Brand mark breathing glow */
.brand-logo { animation: hz-brand-glow 4.5s ease-in-out infinite; }
@keyframes hz-brand-glow {
  0%,100% { box-shadow: 0 0 0 1px rgba(255,255,255,.06), 0 6px 20px rgba(0,217,166,.30); }
  50%     { box-shadow: 0 0 0 1px rgba(255,255,255,.10), 0 8px 30px rgba(0,217,166,.55); }
}

/* ============ 3. CURSOR-FOLLOW SPOTLIGHT ON CARDS ============ */
/* JS sets --mx/--my (0-100%) on hover; a soft radial glow follows the pointer. */
.hz-card, .hz-feature-card, .hz-package-card, .hz-package-hero,
.hz-stat, .hz-action-card, .hz-section {
  position: relative;
}
.hz-spot::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(220px circle at var(--mx,50%) var(--my,0%),
    rgba(49,208,153,.16), transparent 60%);
  opacity: 0;
  transition: opacity .3s ease;
  pointer-events: none;
  z-index: 0;
}
.hz-spot:hover::before { opacity: 1; }
/* keep card content above the glow */
.hz-spot > * { position: relative; z-index: 1; }

/* ============ 4. GRADIENT STAT NUMBERS + shimmer border ============ */
.hz-stat .value {
  background: linear-gradient(120deg, #ffffff 0%, var(--hz-green,#31d099) 62%, var(--hz-cyan,#49b7ff) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.hz-stat {
  overflow: hidden;
  transition: transform .25s cubic-bezier(.16,1,.3,1), border-color .25s ease, box-shadow .25s ease;
}
.hz-stat::after {
  content: "";
  position: absolute;
  left: 0; top: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--hz-green,#31d099), var(--hz-cyan,#49b7ff), transparent);
  transform: translateX(-100%);
  transition: transform .5s ease;
}
.hz-stat:hover { transform: translateY(-4px); border-color: rgba(49,208,153,.4); box-shadow: 0 22px 50px -22px rgba(0,0,0,.6); }
.hz-stat:hover::after { transform: translateX(100%); }

/* ============ 5. BUTTONS — richer glow ============ */
.hz-btn {
  background-size: 160% 160%;
  transition: transform .18s ease, box-shadow .28s ease, background-position .5s ease, filter .2s ease;
}
.hz-btn:hover {
  background-position: 100% 50%;
  box-shadow: 0 14px 34px -12px rgba(49,208,153,.62), 0 0 0 1px rgba(49,208,153,.28);
}

/* ============ 6. FEATURED / POPULAR PACKAGE PULSE ============ */
.hz-package-hero { position: relative; }
.hz-package-hero::after {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  border: 1px solid rgba(49,208,153,.4);
  opacity: 0;
  animation: hz-pulse-ring 3.4s ease-in-out infinite;
  pointer-events: none;
}
@keyframes hz-pulse-ring {
  0%,100% { opacity: 0; transform: scale(1); }
  50%     { opacity: .7; transform: scale(1.006); }
}

/* ============ 7. SCROLL REVEAL (guarded, no-FOUC) ============ */
/* Elements are hidden ONLY once html.hz-enhance is present (set inline in <head>),
   so a JS failure never leaves content invisible. A CSS failsafe reveals after 1.4s. */
html.hz-enhance .hz-reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1);
  animation: hz-reveal-failsafe .01s linear 1.4s forwards;
}
html.hz-enhance .hz-reveal.hz-in {
  opacity: 1;
  transform: none;
  animation: none;
}
@keyframes hz-reveal-failsafe { to { opacity: 1; transform: none; } }

/* ============ 8. ACCESSIBILITY — visible focus ring ============ */
a:focus-visible, button:focus-visible, .hz-btn:focus-visible,
.hz-input:focus-visible, .hz-select:focus-visible, .hz-textarea:focus-visible,
.user-chip:focus-visible, .hz-chip:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--hz-cyan, #49b7ff);
  outline-offset: 2px;
  border-radius: 6px;
}

/* ============ 9. TABLE ROW HOVER (admin readability) ============ */
.hz-admin-table tbody tr, .hz-table tbody tr { transition: background .18s ease; }
.hz-admin-table tbody tr:hover, .hz-table tbody tr:hover { background: rgba(49,208,153,.05); }

/* ============ 10. PILL / BADGE subtle entrance already handled; live-dot pulse ============ */
.hz-live-dot, .hz-admin-event-dot { animation: hz-dot-pulse 2.2s ease-in-out infinite; }
@keyframes hz-dot-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(49,208,153,.45); }
  50%     { box-shadow: 0 0 0 6px rgba(49,208,153,0); }
}

/* ============ REDUCED MOTION — disable everything animated ============ */
@media (prefers-reduced-motion: reduce) {
  .hz-hero-fx .b1, .hz-hero-fx .b2, .hz-hero-fx .b3,
  .hz-home-hero::before, .hz-package-hero::before, .hz-package-hero::after,
  .brand-logo, .hz-live-dot, .hz-admin-event-dot { animation: none !important; }
  html.hz-enhance .hz-reveal { opacity: 1 !important; transform: none !important; animation: none !important; }
  .hz-spot::before { display: none; }
  .hz-btn, .hz-stat, .nav-links a::after { transition: none !important; }
}
