/* ═══════════════════════════════════════════════════════════
   WasteWise Indonesia — Base Styles (base.css)
   Body, typography, links, and default element styling.
   ═══════════════════════════════════════════════════════════ */

html {
  scroll-behavior: smooth;
  touch-action: manipulation;
}

body {
  background-color: var(--neutral-950);
  color: var(--neutral-100);
  font-size: var(--text-base);
  font-weight: var(--weight-regular);
  letter-spacing: var(--tracking-normal);
  overflow-x: hidden;
  touch-action: manipulation;
  -webkit-text-size-adjust: 100%;
}

/* ─── Typography ────────────────────────────────────────── */

h1 {
  font-size: var(--text-5xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
  color: var(--neutral-0);
}

h2 {
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
  color: var(--neutral-0);
}

h3 {
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--neutral-0);
}

h4 {
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--neutral-50);
}

h5 {
  font-size: var(--text-lg);
  font-weight: var(--weight-medium);
  line-height: var(--leading-snug);
  color: var(--neutral-50);
}

p {
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  color: var(--neutral-200);
}

small {
  font-size: var(--text-sm);
  color: var(--neutral-300);
}

strong {
  font-weight: var(--weight-semibold);
  color: var(--neutral-0);
}

/* ─── Links ─────────────────────────────────────────────── */

a {
  transition: color var(--duration-fast) var(--ease-default);
}

a:hover {
  color: var(--primary-400);
}

a:focus-visible {
  outline: 2px solid var(--primary-400);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* ─── Focus Visible ─────────────────────────────────────── */

:focus-visible {
  outline: 2px solid var(--primary-400);
  outline-offset: 2px;
}

/* ─── Selection ─────────────────────────────────────────── */

::selection {
  background: hsla(152, 56%, 40%, 0.3);
  color: var(--neutral-0);
}

/* ─── Code ──────────────────────────────────────────────── */

code {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  background: var(--neutral-800);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  color: var(--primary-300);
}

/* ─── Divider ───────────────────────────────────────────── */

hr {
  border: none;
  height: 1px;
  background: var(--neutral-800);
  margin: var(--space-8) 0;
}
/* ─── Animations & Utility ────────────────────────────── */

.live-dot {
  width: 6px;
  height: 6px;
  background-color: var(--color-error);
  border-radius: 50%;
  display: inline-block;
  animation: pulse-red 1.5s infinite;
}

@keyframes pulse-red {
  0% {
    transform: scale(0.9);
    box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.7);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 0 0 6px rgba(239, 68, 68, 0);
  }
  100% {
    transform: scale(0.9);
    box-shadow: 0 0 0 0 rgba(239, 68, 68, 0);
  }
}

/* ─── App Structure Fix ─────────────────────────────────── */

#app {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.app-content {
  flex: 1;
}
