/* ENIGMA SHOW CONTROL — marketing site
   Built on the Enigma style guide tokens (css/esc.css, copied from
   projects/style-guide-enigma). Square, phosphor, terse. */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  font-size: var(--esc-text-md);
  overflow-x: hidden;
  font-variant-numeric: tabular-nums;
}

img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, p, ul, figure, blockquote { margin: 0; }

.wrap { max-width: 1120px; margin: 0 auto; padding: 0 var(--esc-sp-5); position: relative; }

:focus-visible { outline: none; box-shadow: var(--esc-focus-ring); }

.skip {
  position: absolute; left: var(--esc-sp-4); top: -60px; z-index: 100;
  padding: var(--esc-sp-2) var(--esc-sp-3);
  background: var(--esc-phos-400); color: var(--esc-on-accent);
  font: var(--esc-type-label); letter-spacing: var(--esc-track-label);
  border: 0;
}
.skip:focus { top: var(--esc-sp-4); }

/* ---------- hero ---------- */
.hero {
  position: relative;
  min-height: 100vh; min-height: 100svh;
  display: flex; flex-direction: column; justify-content: center;
  padding: 120px 0 96px;
  border-bottom: var(--esc-border);
  background-color: var(--esc-bg-0);
}
.hero::before {
  /* HUD grid, fading out toward the bottom */
  content: ''; position: absolute; inset: 0;
  background: var(--esc-grid);
  -webkit-mask-image: linear-gradient(to bottom, #000 30%, transparent 100%);
          mask-image: linear-gradient(to bottom, #000 30%, transparent 100%);
  pointer-events: none;
}
.hero-logo { width: min(680px, 100%); margin-bottom: var(--esc-sp-7); }
.boot { animation: esc-flicker-in var(--esc-t-5) var(--esc-steps-frame) both; }

.hero-grid {
  display: grid; grid-template-columns: 1.15fr 1fr;
  gap: var(--esc-sp-7); align-items: end;
}
.hero-tag {
  font: 700 var(--esc-text-2xl)/1.2 var(--esc-font-display);
  letter-spacing: var(--esc-track-display);
  text-transform: uppercase;
  color: var(--esc-fg-0);
  max-width: 20ch;
}
.prompt { color: var(--esc-phos-400); }
.btn-row { display: flex; flex-wrap: wrap; gap: var(--esc-sp-3); margin-top: var(--esc-sp-6); }

/* terminal frame (style guide: guidelines/terminal-frame.html) */
.term {
  position: relative;
  border: var(--esc-border-bright);
  background: var(--esc-bg-0);
}
.term-bar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 7px 12px;
  border-bottom: var(--esc-border);
  background: var(--esc-bg-1);
  font-size: var(--esc-text-2xs);
}
.term-title { letter-spacing: .2em; color: var(--esc-phos-300); }
.term-ctl { color: var(--esc-fg-3); }
.term-body { padding: 14px 16px; font-size: var(--esc-text-sm); line-height: var(--esc-leading-loose); color: var(--esc-fg-1); }
.term-body > div { animation: esc-cascade var(--esc-t-2) var(--esc-ease-out) both; }
.term-body > div:nth-child(1) { animation-delay: 700ms; }
.term-body > div:nth-child(2) { animation-delay: calc(700ms + 4 * var(--esc-stagger)); }
.term-body > div:nth-child(3) { animation-delay: calc(700ms + 8 * var(--esc-stagger)); }
.term-body > div:nth-child(4) { animation-delay: calc(700ms + 12 * var(--esc-stagger)); }
.term-body > div:nth-child(5) { animation-delay: calc(700ms + 16 * var(--esc-stagger)); }
.term-body > div:nth-child(6) { animation-delay: calc(700ms + 20 * var(--esc-stagger)); }
.term-body > div:nth-child(7) { animation-delay: calc(700ms + 24 * var(--esc-stagger)); }
.dim { color: var(--esc-fg-2); }
.data { color: var(--esc-cyan); }
.ok { color: var(--esc-status-go); }
.standby { color: var(--esc-status-standby); animation: esc-pulse 1.6s ease-in-out infinite; }
.ready { color: var(--esc-phos-300); }

.scroll-hint {
  position: absolute; bottom: var(--esc-sp-5); left: 50%; transform: translateX(-50%);
  font: var(--esc-type-micro); letter-spacing: var(--esc-track-wide);
  color: var(--esc-fg-2); border: 0;
}
.scroll-hint:hover { color: var(--esc-phos-300); }

/* ---------- buttons (style guide: components/forms/Button) ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: var(--esc-control-h-lg);
  padding: 0 var(--esc-sp-5);
  font: 700 var(--esc-text-sm)/1 var(--esc-font-mono);
  letter-spacing: var(--esc-track-label);
  border: 1px solid transparent;
  border-radius: var(--esc-radius);
  transition: background var(--esc-t-1) var(--esc-ease-snap), box-shadow var(--esc-t-1) var(--esc-ease-snap), color var(--esc-t-1) var(--esc-ease-snap), border-color var(--esc-t-1) var(--esc-ease-snap);
}
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--esc-phos-400); color: var(--esc-on-accent); border-color: var(--esc-phos-400); }
.btn-primary:hover { background: var(--esc-phos-300); color: var(--esc-on-accent); border-color: var(--esc-phos-300); box-shadow: var(--esc-glow-phos); text-shadow: none; }
.btn-ghost { color: var(--esc-fg-0); border-color: var(--esc-line-bright); }
.btn-ghost:hover { background: var(--esc-phos-ghost); color: var(--esc-phos-200); border-color: var(--esc-phos-600); text-shadow: none; }

/* ---------- sections ---------- */
.section { padding: var(--esc-sp-9) 0; border-bottom: var(--esc-border-dim); }
.label {
  font: var(--esc-type-label);
  letter-spacing: var(--esc-track-wide);
  color: var(--esc-phos-400);
  margin-bottom: var(--esc-sp-4);
}
.marker { margin-right: 4px; }
.section-title {
  font: 700 var(--esc-text-3xl)/var(--esc-leading-tight) var(--esc-font-display);
  letter-spacing: var(--esc-track-display);
  text-transform: uppercase;
  color: var(--esc-fg-0);
  max-width: 22ch;
  margin-bottom: var(--esc-sp-5);
}
.section-intro { color: var(--esc-fg-1); max-width: 62ch; line-height: var(--esc-leading-normal); }

/* service panels with corner-bracket hover (style guide: geometry) */
.cards {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: var(--esc-sp-4); margin-top: var(--esc-sp-7);
}
.card {
  position: relative;
  padding: var(--esc-sp-6) var(--esc-panel-pad) var(--esc-sp-6);
  background: var(--esc-bg-1);
  border: var(--esc-border);
  transition: background var(--esc-t-1) var(--esc-ease-snap), border-color var(--esc-t-1) var(--esc-ease-snap);
}
.card::before, .card::after {
  content: ''; position: absolute; width: 10px; height: 10px;
  border: 0 solid var(--esc-phos-400);
  opacity: 0; transition: opacity var(--esc-t-1) var(--esc-ease-snap);
}
.card::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
.card::after { bottom: -1px; right: -1px; border-bottom-width: 2px; border-right-width: 2px; }
.card:hover { background: var(--esc-bg-2); border-color: var(--esc-line-bright); }
.card:hover::before, .card:hover::after { opacity: 1; }
.num {
  display: block;
  font: 900 var(--esc-text-xl)/1 var(--esc-font-display);
  color: var(--esc-phos-400);
  margin-bottom: var(--esc-sp-4);
}
.card h3 {
  font: var(--esc-type-h2);
  letter-spacing: var(--esc-track-display);
  text-transform: uppercase;
  color: var(--esc-fg-0);
  margin-bottom: var(--esc-sp-3);
}
.card p { color: var(--esc-fg-1); font-size: var(--esc-text-base); }


/* ---------- footer ---------- */
.footer { padding: var(--esc-sp-7) 0; background: var(--esc-bg-void); }
.footer-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--esc-sp-4); }
.footer img { height: 22px; width: auto; }
.footer p { font: var(--esc-type-micro); letter-spacing: var(--esc-track-wide); color: var(--esc-fg-2); }

/* ---------- reveal: snap in (steps), no exit ---------- */
.reveal { opacity: 0; }
.reveal.in { animation: esc-flicker-in var(--esc-t-4) var(--esc-steps-frame) both; }
.cards .card.reveal.in:nth-child(2) { animation-delay: calc(2 * var(--esc-stagger)); }
.cards .card.reveal.in:nth-child(3) { animation-delay: calc(4 * var(--esc-stagger)); }
.cards .card.reveal.in:nth-child(4) { animation-delay: calc(6 * var(--esc-stagger)); }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; }
  .reveal.in, .boot, .term-body > div, .standby, .esc-cursor::after { animation: none; }
}

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-grid { gap: var(--esc-sp-6); }
  .section-title { font-size: var(--esc-text-2xl); }
}
@media (max-width: 720px) {
  .wrap { padding: 0 var(--esc-sp-4); }
  .hero { padding: 96px 0 80px; }
  .hero-logo { margin-bottom: var(--esc-sp-6); }
  .hero-tag { font-size: var(--esc-text-xl); }
  .cards { grid-template-columns: 1fr; }
  .section { padding: var(--esc-sp-8) 0; }
  .btn { flex: 1 1 auto; }
}
