/* ============================================================
   GLASSGRID — BASE STYLES
   Resets, typography foundation, global defaults.
   No component-specific styles. No colors (use tokens).
   ============================================================ */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  -webkit-tap-highlight-color: transparent;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  height: 100%;
}

body {
  font: var(--text-body);
  font-family: var(--font-family-base);
  background-color: var(--color-bg-base);
  color: var(--color-text-primary);
  min-height: 100vh;
  overscroll-behavior-y: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Background ambient glow effect */
body::before {
  content: '';
  position: fixed;
  top: -30%;
  left: -20%;
  width: 60%;
  height: 60%;
  background: radial-gradient(circle, var(--color-accent-primary) 0%, transparent 70%);
  opacity: 0.06;
  pointer-events: none;
  z-index: var(--z-base);
  filter: blur(var(--blur-2xl));
}

body::after {
  content: '';
  position: fixed;
  bottom: -20%;
  right: -20%;
  width: 50%;
  height: 50%;
  background: radial-gradient(circle, var(--color-accent-secondary) 0%, transparent 70%);
  opacity: 0.05;
  pointer-events: none;
  z-index: var(--z-base);
  filter: blur(var(--blur-2xl));
}

img, video {
  max-width: 100%;
  height: auto;
  display: block;
}

button, input, textarea, select {
  font: inherit;
  color: inherit;
  border: none;
  background: none;
  outline: none;
  appearance: none;
}

button {
  cursor: pointer;
  user-select: none;
}

a {
  color: inherit;
  text-decoration: none;
}

ul, ol {
  list-style: none;
}

/* Scrollbar */
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--color-glass-border-md);
  border-radius: var(--radius-full);
}

/* Focus visible */
:focus-visible {
  outline: 2px solid var(--color-interactive-focus);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Selection */
::selection {
  background: rgba(168, 85, 247, 0.3);
  color: var(--color-text-primary);
}

/* Typography utilities */
.text-display    { font: var(--text-display); letter-spacing: var(--letter-spacing-tight); }
.text-heading    { font: var(--text-heading); letter-spacing: var(--letter-spacing-tight); }
.text-subheading { font: var(--text-subheading); }
.text-body       { font: var(--text-body); }
.text-caption    { font: var(--text-caption); }
.text-micro      { font: var(--text-micro); }

.text-primary    { color: var(--color-text-primary); }
.text-secondary  { color: var(--color-text-secondary); }
.text-tertiary   { color: var(--color-text-tertiary); }
.text-muted      { color: var(--color-text-muted); }
.text-accent     { color: var(--color-text-accent); }
.text-gradient {
  background: var(--color-accent-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* Spacing utilities */
.mt-auto   { margin-top: auto; }
.mb-auto   { margin-bottom: auto; }
.ml-auto   { margin-left: auto; }
.mr-auto   { margin-right: auto; }
.mx-auto   { margin-left: auto; margin-right: auto; }

/* Display utilities */
.hidden    { display: none !important; }
.sr-only   {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
}
