/* ==========================================================================
   asyrul.dev — Base: reset, shared primitives, navbar, reveal engine, footer
   ========================================================================== */

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

html {
  scroll-behavior: smooth;
  /* html itself must carry the page background — during live resize/overscroll
     the browser paints regions before <body> covers them (white-flash fix) */
  background: var(--ay-space-950);
}

body {
  font-family: var(--ay-font-body);
  background: var(--ay-space-950);
  color: var(--ay-text);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img {
  max-width: 100%;
  display: block;
}

a {
  color: var(--ay-signal);
  text-decoration: none;
}

a:hover {
  color: var(--ay-signal-strong);
}

::selection {
  background: var(--ay-plasma-strong);
  color: var(--ay-text-bright);
}

/* --------------------------------------------------------------------------
   Shared copy primitives
   -------------------------------------------------------------------------- */

.ay_section {
  position: relative;
  padding: clamp(72px, 10vw, 128px) var(--ay-section-pad);
}

.ay_section_inner {
  max-width: var(--ay-section-max);
  margin: 0 auto;
}

.ay_eyebrow {
  font-family: var(--ay-font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ay-signal);
  margin-bottom: 14px;
}

.ay_eyebrow::before {
  content: "// ";
  color: var(--ay-plasma);
}

.ay_heading {
  font-family: var(--ay-font-display);
  font-size: clamp(1.7rem, 3.6vw, 2.6rem);
  font-weight: 600;
  line-height: 1.18;
  color: var(--ay-text-bright);
  margin-bottom: 18px;
}

.ay_heading em {
  font-style: normal;
  background: var(--ay-gradient-text);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.ay_lead {
  font-size: clamp(1rem, 1.6vw, 1.12rem);
  max-width: 680px;
  color: var(--ay-text);
}

.ay_grid_line {
  border: none;
  border-top: 1px solid var(--ay-line);
  max-width: var(--ay-section-max);
  margin: 0 auto;
}

/* Buttons */
.ay_btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--ay-font-display);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 13px 26px;
  border-radius: var(--ay-radius-sm);
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform 200ms var(--ay-ease), box-shadow 200ms var(--ay-ease),
    border-color 200ms var(--ay-ease), background 200ms var(--ay-ease);
}

.ay_btn--primary {
  background: var(--ay-gradient-signal);
  color: var(--ay-on-accent);
}

.ay_btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--ay-glow-signal);
  color: var(--ay-on-accent);
}

.ay_btn--ghost {
  background: transparent;
  color: var(--ay-signal);
  border-color: var(--ay-signal-dim);
}

.ay_btn--ghost:hover {
  border-color: var(--ay-signal);
  background: var(--ay-signal-faint);
  transform: translateY(-2px);
}

/* Mobile: buttons stack and span the full width */
@media (max-width: 620px) {
  .ay_btn {
    width: 100%;
    justify-content: center;
  }
}

/* HUD-corner framing (adds sci-fi bracket corners to any panel) */
.ay_hud {
  position: relative;
}

.ay_hud::before,
.ay_hud::after {
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  border-color: var(--ay-signal);
  border-style: solid;
  opacity: 0.75;
}

.ay_hud::before {
  top: -1px;
  left: -1px;
  border-width: 2px 0 0 2px;
}

.ay_hud::after {
  bottom: -1px;
  right: -1px;
  border-width: 0 2px 2px 0;
}

/* --------------------------------------------------------------------------
   Navbar
   -------------------------------------------------------------------------- */

.ay_nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px var(--ay-section-pad);
  transition: background 300ms var(--ay-ease), border-color 300ms var(--ay-ease);
  border-bottom: 1px solid transparent;
}

.ay_nav.is-scrolled {
  background: var(--ay-glass-heavy);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom-color: var(--ay-line);
}

.ay_nav_brand {
  margin-right: auto;
  font-family: var(--ay-font-mono);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  color: var(--ay-text-bright);
}

.ay_nav_brand span {
  color: var(--ay-signal);
}

.ay_nav_links {
  display: flex;
  gap: 26px;
  margin-right: 16px;
  list-style: none;
}

.ay_nav_links a {
  font-family: var(--ay-font-mono);
  font-size: 0.8rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ay-text-dim);
  transition: color 200ms;
}

.ay_nav_links a:hover,
.ay_nav_links a.is-active {
  color: var(--ay-signal);
}

.ay_nav_actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.ay_nav_theme {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  line-height: 1;
  color: var(--ay-text-dim);
  background: transparent;
  border: 1px solid var(--ay-line);
  border-radius: var(--ay-radius-pill);
  cursor: pointer;
  transition: color 200ms, border-color 200ms, transform 200ms;
}

.ay_nav_theme:hover {
  color: var(--ay-signal);
  border-color: var(--ay-signal-dim);
  transform: rotate(30deg);
}

.ay_nav_cta {
  font-family: var(--ay-font-mono);
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  color: var(--ay-signal);
  background: transparent;
  border: 1px solid var(--ay-signal-dim);
  border-radius: var(--ay-radius-pill);
  padding: 7px 16px;
  cursor: pointer;
  transition: background 200ms, box-shadow 200ms;
}

.ay_nav_cta:hover {
  background: var(--ay-signal-faint);
  box-shadow: var(--ay-glow-signal);
}

@media (max-width: 860px) {
  .ay_nav_links,
  .ay_nav_cta {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   Reveal-on-scroll engine (paired with js/reveal.js)
   -------------------------------------------------------------------------- */

/* translate3d + will-change keep reveals on the compositor — animating a
   non-promoted translateY causes visible repaint flicker while scrolling */
.reveal {
  opacity: 0;
  transform: translate3d(0, 26px, 0);
  will-change: opacity, transform;
  transition: opacity 620ms var(--ay-ease), transform 620ms var(--ay-ease);
}

.reveal.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  will-change: auto;
}

.reveal-stagger > * {
  opacity: 0;
  transform: translate3d(0, 26px, 0);
  will-change: opacity, transform;
  transition: opacity 560ms var(--ay-ease), transform 560ms var(--ay-ease);
}

.reveal-stagger.is-visible > * {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  will-change: auto;
}

.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 90ms; }
.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 180ms; }
.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 270ms; }
.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 360ms; }
.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 450ms; }
.reveal-stagger.is-visible > *:nth-child(7) { transition-delay: 540ms; }
.reveal-stagger.is-visible > *:nth-child(8) { transition-delay: 630ms; }

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .reveal,
  .reveal-stagger > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
  }
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.ay_footer {
  border-top: 1px solid var(--ay-line);
  padding: 48px var(--ay-section-pad) 40px;
  background: var(--ay-space-900);
}

.ay_footer_inner {
  max-width: var(--ay-section-max);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  align-items: center;
  justify-content: space-between;
}

.ay_footer_links {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  list-style: none;
}

.ay_footer_links a {
  font-family: var(--ay-font-mono);
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  color: var(--ay-text-dim);
}

.ay_footer_links a:hover {
  color: var(--ay-signal);
}

.ay_footer_note {
  font-family: var(--ay-font-mono);
  font-size: 0.75rem;
  color: var(--ay-text-dim);
  letter-spacing: 0.06em;
}
