/* RESET */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* COLOR PALETTE */
:root {
  --bg-arctic-white: #f8fafc;
  --text-obsidian: #0f172a;
  --text-fog-gray: #94a3b8;
  --accent-slate-steel: #64748b;
  --accent-deep-graphite: #334155;
  --surface-ash-wash: #e2e8f0;
  --signal-protocol-blue: #3b82f6;
  --dark-midnight-slate: #0f172a;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg-arctic-white: #0f172a;
    --text-obsidian: #f8fafc;
    --text-fog-gray: #94a3b8;
    --signal-protocol-blue: #3b82f6;
  }
}

/* BODY AND DOCUMENT FLOW */
html, body {
  width: 100%;
  height: 100%;
}

body {
  font-family: 'IBM Plex Mono', monospace;
  background: var(--bg-arctic-white);
  color: var(--text-obsidian);
  line-height: 1.75;
  letter-spacing: 0.01em;
  font-weight: 400;
  font-size: clamp(0.95rem, 1.8vw, 1.1rem);
  background-image:
    repeating-linear-gradient(
      0deg,
      transparent,
      transparent 79px,
      rgba(100, 116, 139, 0.005) 79px,
      rgba(100, 116, 139, 0.005) 80px
    ),
    repeating-linear-gradient(
      90deg,
      transparent,
      transparent 79px,
      rgba(100, 116, 139, 0.005) 79px,
      rgba(100, 116, 139, 0.005) 80px
    );
  opacity: 1;
  transition: background-color 400ms ease, color 400ms ease;
}

/* HERO SECTION */
.hero-section {
  position: relative;
  min-height: 100vh;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: var(--bg-arctic-white);
  overflow: hidden;
}

.hero-crosshair {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  opacity: 0;
  pointer-events: none;
}

.hero-crosshair::before,
.hero-crosshair::after {
  content: '';
  position: absolute;
  background: var(--text-fog-gray);
}

.hero-crosshair::before {
  width: 200px;
  height: 1px;
  left: -100px;
  top: 0;
}

.hero-crosshair::after {
  width: 1px;
  height: 200px;
  left: 0;
  top: -100px;
}

.hero-content {
  position: relative;
  z-index: 10;
  text-align: center;
  max-width: 680px;
  padding: clamp(1.5rem, 5vw, 4rem);
}

.hero-seal {
  width: 48px;
  height: 48px;
  border: 1px solid var(--accent-slate-steel);
  border-radius: 50%;
  margin: 0 auto 3rem;
  opacity: 0;
}

.domain-name {
  font-family: 'Space Mono', monospace;
  font-weight: 700;
  font-size: clamp(2rem, 5vw, 3.6rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.2;
  color: var(--text-obsidian);
  margin-bottom: 2rem;
  opacity: 0;
}

.hero-divider {
  width: 120px;
  height: 1px;
  background: var(--accent-slate-steel);
  margin: 2rem auto;
  opacity: 0;
  mask-image: linear-gradient(to right, transparent, black 30%, black 70%, transparent);
}

.hero-tagline {
  font-family: 'IBM Plex Mono', monospace;
  font-size: clamp(0.95rem, 1.8vw, 1.1rem);
  font-weight: 400;
  color: var(--text-fog-gray);
  text-transform: lowercase;
  letter-spacing: 0.01em;
  margin-top: 2rem;
  opacity: 0;
}

.scroll-prompt {
  position: absolute;
  bottom: 3rem;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Space Mono', monospace;
  font-size: 1.5rem;
  color: var(--text-fog-gray);
  opacity: 0;
  animation: pulse-chevron 2s ease-in-out infinite;
}

@keyframes pulse-chevron {
  0%, 100% { opacity: 0.3; }
  50% { opacity: 0.7; }
}

/* CONTENT CONTAINER */
.content-container {
  max-width: 680px;
  margin: 0 auto;
  padding: clamp(1.5rem, 5vw, 4rem);
}

.content-section {
  margin-bottom: clamp(6rem, 12vh, 10rem);
  min-height: 60vh;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 600ms cubic-bezier(0.25, 0.1, 0.25, 1),
              transform 600ms cubic-bezier(0.25, 0.1, 0.25, 1);
}

.content-section.in-view {
  opacity: 1;
  transform: translateY(0);
}

.section-divider {
  width: 120px;
  height: 1px;
  background: var(--accent-slate-steel);
  margin-bottom: 3rem;
  opacity: 0;
  mask-image: linear-gradient(to right, transparent, black 30%, black 70%, transparent);
  animation: divider-fade-in 600ms ease-out forwards;
}

@keyframes divider-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

.content-section h2 {
  font-family: 'Space Mono', monospace;
  font-weight: 700;
  font-size: clamp(1.2rem, 2.5vw, 1.8rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.2;
  color: var(--text-obsidian);
  margin-bottom: 1.6em;
  margin-top: 1.6em;
  opacity: 0;
  animation: section-heading-reveal 600ms ease-out 200ms forwards;
}

@keyframes section-heading-reveal {
  from { opacity: 0; }
  to { opacity: 1; }
}

.content-section p {
  margin-bottom: 1.6em;
  font-size: clamp(0.95rem, 1.8vw, 1.1rem);
  line-height: 1.75;
  letter-spacing: 0.01em;
  color: var(--text-obsidian);
  opacity: 0;
  animation: paragraph-reveal 600ms ease-out 400ms forwards;
}

@keyframes paragraph-reveal {
  from { opacity: 0; }
  to { opacity: 1; }
}

.content-section p:last-child {
  margin-bottom: 0;
}

/* FOOTER */
.site-footer {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 300;
  font-size: clamp(0.7rem, 1.2vw, 0.85rem);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-fog-gray);
  text-align: center;
  margin-top: clamp(6rem, 12vh, 10rem);
  margin-bottom: 3rem;
  opacity: 0;
  animation: footer-reveal 600ms ease-out forwards;
  animation-delay: 400ms;
}

@keyframes footer-reveal {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* LINKS AND INTERACTIVE ELEMENTS */
a {
  color: var(--signal-protocol-blue);
  text-decoration: none;
  position: relative;
  transition: color 300ms ease;
}

a:hover {
  color: var(--signal-protocol-blue);
  animation: sonar-ping 1.2s ease-out infinite;
}

@keyframes sonar-ping {
  0% {
    box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);
  }
  100% {
    box-shadow: 0 0 0 8px rgba(59, 130, 246, 0);
  }
}

/* RESPONSIVE: TABLET AND BELOW */
@media (max-width: 1024px) {
  .hero-crosshair {
    display: none;
  }

  .content-container {
    padding: clamp(1.5rem, 5vw, 2rem);
  }

  .content-section {
    min-height: auto;
    margin-bottom: clamp(4rem, 10vh, 6rem);
  }
}

/* RESPONSIVE: MOBILE */
@media (max-width: 640px) {
  .domain-name {
    font-size: 2rem;
  }

  .content-section h2 {
    font-size: 1.2rem;
  }

  .hero-seal {
    width: 40px;
    height: 40px;
  }
}
