/* ═══════════════════════════════════════════════
   GeoStack — Base & Reset
═══════════════════════════════════════════════ */

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

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
}

body {
  background: var(--bg);
  color: var(--t1);
  font-family: var(--f-body);
  min-height: 100vh;
  overflow-x: hidden;
}

/* Grid overlay */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(rgba(0,217,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,217,255,0.025) 1px, transparent 1px);
  background-size: 52px 52px;
  pointer-events: none;
  z-index: 0;
}

a { text-decoration: none; color: inherit; }
button { cursor: pointer; font-family: var(--f-body); }
input, textarea, select { font-family: var(--f-body); }
img { max-width: 100%; display: block; }

/* Scrollbar */
::-webkit-scrollbar       { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--b2); border-radius: 4px; }

/* Selection */
::selection { background: rgba(0,217,255,0.2); color: var(--t1); }

/* Hide scrollbar utility */
.no-scroll { scrollbar-width: none; -ms-overflow-style: none; }
.no-scroll::-webkit-scrollbar { display: none; }

/* Animations */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes pulseSlow {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.3; }
}
@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position:  200% 0; }
}

.fade-up { animation: fadeUp 0.35s var(--ease) forwards; }
.pulse   { animation: pulseSlow 2.5s ease-in-out infinite; }

.s1 { animation-delay: 0.05s; opacity: 0; }
.s2 { animation-delay: 0.10s; opacity: 0; }
.s3 { animation-delay: 0.15s; opacity: 0; }
.s4 { animation-delay: 0.20s; opacity: 0; }
.s5 { animation-delay: 0.25s; opacity: 0; }
