/* ── Fonts ─────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap');

/* ── Base ──────────────────────────────────────────────── */
html { scroll-behavior: smooth; }

body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  opacity: 0;
  transition: opacity 0.5s ease;
}
body.loaded { opacity: 1; }

/* ── Selection ─────────────────────────────────────────── */
::selection { background: rgba(201,162,79,0.18); color: #c9a24f; }

/* ── Scrollbar ─────────────────────────────────────────── */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: #070d18; }
::-webkit-scrollbar-thumb { background: rgba(201,162,79,0.25); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: rgba(201,162,79,0.5); }

/* ── Focus ─────────────────────────────────────────────── */
*:focus-visible {
  outline: 2px solid rgba(201,162,79,0.55);
  outline-offset: 3px;
  border-radius: 6px;
}

/* ── Scroll progress bar ───────────────────────────────── */
#scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, #b8872a, #c9a24f, #e8d49a);
  z-index: 200;
  transition: width 0.08s linear;
  box-shadow: 0 0 8px rgba(201,162,79,0.6);
}

/* ── Reveal on scroll ──────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1),
              transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.reveal.visible { opacity: 1; transform: translateY(0); }

.reveal-left {
  opacity: 0;
  transform: translateX(-28px);
  transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1),
              transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.reveal-left.visible { opacity: 1; transform: translateX(0); }

.reveal-right {
  opacity: 0;
  transform: translateX(28px);
  transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1),
              transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.reveal-right.visible { opacity: 1; transform: translateX(0); }

.reveal-scale {
  opacity: 0;
  transform: scale(0.94);
  transition: opacity 0.6s cubic-bezier(0.16,1,0.3,1),
              transform 0.6s cubic-bezier(0.16,1,0.3,1);
}
.reveal-scale.visible { opacity: 1; transform: scale(1); }

/* Stagger delays */
.d1 { transition-delay: 0.06s; }
.d2 { transition-delay: 0.13s; }
.d3 { transition-delay: 0.20s; }
.d4 { transition-delay: 0.27s; }
.d5 { transition-delay: 0.34s; }
.d6 { transition-delay: 0.41s; }

/* ── Keyframes ─────────────────────────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes floatAnim {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-9px); }
}
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes blink { 0%,100% { opacity:1; } 50% { opacity:0.3; } }
@keyframes pulse-ring {
  0%   { transform: scale(0.9); opacity: 0.7; }
  100% { transform: scale(1.6); opacity: 0; }
}

/* ── Animation helpers ─────────────────────────────────── */
.anim-fade-up { animation: fadeUp 0.7s cubic-bezier(0.16,1,0.3,1) forwards; }
.anim-float   { animation: floatAnim 4s ease-in-out infinite; }
.anim-spin    { animation: spin 1s linear infinite; }
.anim-blink   { animation: blink 2s ease-in-out infinite; }

/* ── Animated bars ─────────────────────────────────────── */
.bar-fill {
  width: 0% !important;
  transition: width 1.1s cubic-bezier(0.16,1,0.3,1);
}
.bar-fill.run { width: var(--target-w) !important; }

/* ── Grid patterns ─────────────────────────────────────── */
.grid-pattern {
  background-image:
    linear-gradient(rgba(201,162,79,0.033) 1px, transparent 1px),
    linear-gradient(90deg, rgba(201,162,79,0.033) 1px, transparent 1px);
  background-size: 64px 64px;
}
.grid-pattern-sm {
  background-image:
    linear-gradient(rgba(201,162,79,0.048) 1px, transparent 1px),
    linear-gradient(90deg, rgba(201,162,79,0.048) 1px, transparent 1px);
  background-size: 32px 32px;
}

/* ── Glass ─────────────────────────────────────────────── */
.glass {
  background: rgba(10, 17, 32, 0.65);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid rgba(201,162,79,0.1);
}
.glass-strong {
  background: rgba(10, 17, 32, 0.88);
  backdrop-filter: blur(40px) saturate(180%);
  -webkit-backdrop-filter: blur(40px) saturate(180%);
  border: 1px solid rgba(201,162,79,0.13);
}

/* ── Gold gradient text ────────────────────────────────── */
.gold-text {
  background: linear-gradient(135deg, #b8872a 0%, #c9a24f 50%, #e8d49a 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ── Gradient border overlay ───────────────────────────── */
.grad-border { position: relative; }
.grad-border::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg,
    rgba(201,162,79,0.5),
    rgba(201,162,79,0.04),
    rgba(201,162,79,0.25));
  -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;
  pointer-events: none;
}

/* ── Glow ──────────────────────────────────────────────── */
.glow-sm { box-shadow: 0 0 20px rgba(201,162,79,0.15); }
.glow-md { box-shadow: 0 0 40px rgba(201,162,79,0.18), 0 0 80px rgba(201,162,79,0.05); }

/* ── Button lift ───────────────────────────────────────── */
.btn-lift {
  transition: transform 0.18s cubic-bezier(0.16,1,0.3,1),
              box-shadow 0.18s cubic-bezier(0.16,1,0.3,1);
}
.btn-lift:hover  { transform: translateY(-2px); }
.btn-lift:active { transform: translateY(0px); }

/* ── Shine sweep on hover ──────────────────────────────── */
.btn-shine { position: relative; overflow: hidden; }
.btn-shine::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg,
    transparent 30%,
    rgba(255,255,255,0.22) 50%,
    transparent 70%);
  transform: translateX(-100%) skewX(-15deg);
  transition: transform 0.55s ease;
}
.btn-shine:hover::after { transform: translateX(120%) skewX(-15deg); }

/* ── Section badge ─────────────────────────────────────── */
.section-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 5px 14px;
  border-radius: 999px;
  border: 1px solid rgba(201,162,79,0.22);
  background: rgba(201,162,79,0.06);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.18em;
  color: #c9a24f;
  text-transform: uppercase;
  font-weight: 500;
}

/* ── Live dot with ring ────────────────────────────────── */
.live-dot {
  position: relative;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #10b981;
}
.live-dot::after {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  border: 1.5px solid #10b981;
  animation: pulse-ring 1.8s ease-out infinite;
}

/* ── Mono font ─────────────────────────────────────────── */
.font-mono { font-family: 'JetBrains Mono', 'Fira Code', ui-monospace, monospace; }

/* ── Card hover lift ───────────────────────────────────── */
.card-hover {
  transition: transform 0.25s cubic-bezier(0.16,1,0.3,1),
              box-shadow 0.25s cubic-bezier(0.16,1,0.3,1),
              border-color 0.25s ease;
}
.card-hover:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0,0,0,0.4);
}

/* ── Divider line ──────────────────────────────────────── */
.section-line {
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(201,162,79,0.2), transparent);
}

/* ── Select styling ────────────────────────────────────── */
select { cursor: pointer; }
select option { background: #0f1826; color: #fff; }

/* ── Input focus glow ──────────────────────────────────── */
input:focus, textarea:focus, select:focus {
  box-shadow: 0 0 0 3px rgba(201,162,79,0.08);
}

/* ── Mobile menu dropdown ──────────────────────────────── */
#mobile-menu {
  background: #0c1424;
  max-height: calc(100vh - 64px);
  overflow-y: auto;
}

/* ── Stat number shimmer ───────────────────────────────── */
@keyframes statShimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}
.stat-num {
  background: linear-gradient(90deg, #b8872a 0%, #c9a24f 30%, #e8d49a 50%, #c9a24f 70%, #b8872a 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: statShimmer 4s linear infinite;
}
