/* ═══════════════════════════════════════════════════════════════
   NEXORA TECHNOLOGIES V2 — Obsidian Precision Design System
   BASE — reset, tokens, global mechanics, shared keyframes
   ═══════════════════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --emerald:      #00c07f;
  --emerald-dim:  rgba(0,192,127,0.12);
  --emerald-glow: rgba(0,192,127,0.06);
  --obsidian:     #0a0a0a;
  --surface:      #0d0d0d;
  --surface-2:    #131313;
  --border:       rgba(255,255,255,0.05);
  --border-hover: rgba(0,192,127,0.2);
  --text-muted:   rgba(255,255,255,0.4);
  --text-dim:     rgba(255,255,255,0.6);
}

html {
  scroll-behavior: smooth;
  font-size: 16px;
}
body {
  background: var(--obsidian);
  color: #fff;
  font-family: 'Inter', system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* Shared keyframe — used by hero badge dot AND bento badge dot */
@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.5; transform: scale(0.7); }
}

/* ─── SECTION COMMONS ──────────────────────────────────────────── */
.section-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 2rem;
}

.section-tag {
  display: inline-block;
  color: var(--emerald);
  font-size: 0.65rem;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  margin-bottom: 1.25rem;
}

.section-title {
  font-family: 'Instrument Serif', serif;
  font-size: clamp(2rem, 4vw, 3.5rem);
  line-height: 1.1;
  letter-spacing: -0.01em;
}

.section-sub {
  color: var(--text-muted);
  margin-top: 1rem;
  font-size: 1rem;
  line-height: 1.65;
  max-width: 520px;
}

/* Centered header variant */
.section-header-center {
  text-align: center;
  margin-bottom: 4rem;
}
.section-header-center .section-sub {
  margin-left: auto;
  margin-right: auto;
}

/* ─── REVEAL ANIMATIONS ────────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.75s cubic-bezier(0.25,0.1,0.25,1), transform 0.75s cubic-bezier(0.25,0.1,0.25,1);
}
.reveal.in-view {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1.in-view { transition-delay: 0.08s; }
.reveal-delay-2.in-view { transition-delay: 0.16s; }
.reveal-delay-3.in-view { transition-delay: 0.24s; }
.reveal-delay-4.in-view { transition-delay: 0.32s; }
.reveal-delay-5.in-view { transition-delay: 0.40s; }

/* ─── CURSOR GLOW FOLLOWER ────────────────────────────────────── */
#cursor-glow {
  position: fixed;
  width: 440px;
  height: 440px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0,192,127,0.06) 0%, rgba(0,192,127,0.02) 45%, transparent 70%);
  pointer-events: none;
  z-index: 9994;
  transform: translate(-50%, -50%);
  will-change: left, top;
  transition: left 0.14s ease-out, top 0.14s ease-out, opacity 0.6s;
  opacity: 0;
}
#cursor-glow.visible { opacity: 1; }

/* ─── NOISE GRAIN OVERLAY ─────────────────────────────────────── */
#noise-overlay {
  position: fixed;
  inset: 0;
  z-index: 9990;
  pointer-events: none;
  opacity: 0.032;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='256' height='256'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='256' height='256' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 180px 180px;
}
