/* ═══════════════════════════════════════════════════
   GIGGLEZEN — ADVANCED FEATURES CSS
   ═══════════════════════════════════════════════════ */

/* ─── BACK TO TOP BUTTON with Progress Ring ─── */
.gz-back-top {
  position: fixed;
  bottom: 90px;
  right: 24px;
  width: 46px;
  height: 46px;
  background: var(--gz-obsidian);
  border: 1px solid var(--gz-graphite);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 997;
  cursor: pointer;
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.4s var(--ease-out-expo);
  color: var(--gz-text-secondary);
  padding: 0;
}
.gz-back-top.visible {
  opacity: 1;
  transform: translateY(0);
}
.gz-back-top:hover {
  border-color: var(--gz-cyan);
  color: var(--gz-cyan);
  box-shadow: 0 0 20px rgba(0,240,255,0.2);
}
.gz-back-top svg {
  position: absolute;
  inset: -2px;
  width: calc(100% + 4px);
  height: calc(100% + 4px);
  transform: rotate(-90deg);
}
.gz-btt-track {
  fill: none;
  stroke: var(--gz-graphite);
  stroke-width: 2;
}
.gz-btt-progress {
  fill: none;
  stroke: var(--gz-cyan);
  stroke-width: 2;
  stroke-linecap: round;
  transition: stroke-dashoffset 0.1s;
}
.gz-back-top i {
  font-size: 1rem;
  position: relative;
  z-index: 2;
}

@media (max-width: 767.98px) {
  .gz-back-top { bottom: 130px; right: 16px; width: 40px; height: 40px; }
}

/* ─── COOKIE CONSENT BANNER ─── */
.gz-cookie-banner {
  position: fixed;
  bottom: -100px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9999;
  max-width: 600px;
  width: 90%;
  transition: bottom 0.5s var(--ease-out-expo);
}
.gz-cookie-banner.visible {
  bottom: 24px;
}
.gz-cookie-inner {
  background: var(--gz-glass-bg);
  backdrop-filter: var(--gz-glass-blur);
  -webkit-backdrop-filter: var(--gz-glass-blur);
  border: 1px solid var(--gz-glass-border);
  border-radius: var(--radius-lg);
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  box-shadow: var(--gz-shadow-lg);
}
.gz-cookie-inner p {
  font-size: var(--fs-small);
  color: var(--gz-text-secondary);
  margin: 0;
  flex: 1;
}
.gz-cookie-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}

@media (max-width: 575.98px) {
  .gz-cookie-inner { flex-direction: column; text-align: center; }
  .gz-cookie-banner.visible { bottom: 60px; }
}

/* ─── STACKING CARDS ─── */
.stack-card {
  border-radius: var(--radius-lg);
  will-change: transform;
}

/* ─── TERMINAL TYPING ─── */
[data-terminal] {
  font-family: var(--font-mono);
  color: var(--gz-cyan);
}
[data-terminal]::after {
  content: '|';
  animation: termBlink 0.8s infinite;
  color: var(--gz-cyan);
}
@keyframes termBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* ─── LOADING TIME BADGE ─── */
[data-load-time] {
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  color: var(--gz-text-muted);
  background: var(--gz-charcoal);
  padding: 2px 8px;
  border-radius: var(--radius-full);
  border: 1px solid var(--gz-graphite);
}

/* ─── HIGHLIGHT TEXT ─── */
[data-highlight] {
  display: inline;
  padding: 0.1em 0;
}

/* ─── PARALLAX CARD 3D ─── */
[data-parallax-card] {
  transition: transform 0.5s ease;
  transform-style: preserve-3d;
}

/* ─── ANIMATED NUMBER COUNTER ─── */
.counter-value {
  display: inline-block;
  font-variant-numeric: tabular-nums;
}

/* ─── SECTION DIVIDER LINE ─── */
.gz-divider {
  width: 80px;
  height: 3px;
  background: var(--gz-grad-hero);
  border-radius: var(--radius-full);
  margin: 0 auto var(--space-md);
}

/* ─── GLASSMORPHISM TOOLTIP ─── */
[data-tooltip] {
  position: relative;
}
[data-tooltip]::before {
  content: attr(data-tooltip);
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%) translateY(5px);
  background: var(--gz-glass-bg);
  backdrop-filter: blur(10px);
  border: 1px solid var(--gz-glass-border);
  color: var(--gz-text-primary);
  font-size: var(--fs-tiny);
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: all 0.3s var(--ease-out-expo);
  z-index: 100;
}
[data-tooltip]:hover::before {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ─── ANIMATED UNDERLINE LINKS ─── */
.gz-link {
  position: relative;
  display: inline;
  color: var(--gz-text-primary);
}
.gz-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--gz-grad-hero);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.4s var(--ease-out-expo);
}
.gz-link:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}
.gz-link:hover {
  color: var(--gz-cyan);
}
