/*
 * NOVEX / PUBLIC ESTATE
 * One calm command layer around the Terminal cockpit.
 * Signal cyan is identity. Green, amber, and red are reserved for state.
 */

:root {
  color-scheme: dark;
  --nx-void: #050607;
  --nx-base: #080a0b;
  --nx-panel: #0d1012;
  --nx-raised: #121619;
  --nx-line: rgba(220, 248, 252, 0.12);
  --nx-line-strong: rgba(220, 248, 252, 0.24);
  --nx-ink: #f2f7f7;
  --nx-copy: #a8b4b7;
  --nx-quiet: #687579;
  --nx-signal: #75eff7;
  --nx-signal-strong: #24d6e2;
  --nx-signal-wash: rgba(117, 239, 247, 0.09);
  --nx-positive: #65dfa6;
  --nx-caution: #f0bf6a;
  --nx-negative: #f27883;
  --nx-display: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --nx-code: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
  --nx-width: 1180px;

  /* Compatibility tokens used across the recovered static surfaces. */
  --bg: var(--nx-void);
  --bg-dark: var(--nx-void);
  --surface: var(--nx-panel);
  --surface-2: var(--nx-raised);
  --surface-hover: #151a1d;
  --border: var(--nx-line);
  --line: var(--nx-line);
  --text: var(--nx-ink);
  --text-2: var(--nx-copy);
  --text-3: var(--nx-quiet);
  --muted: var(--nx-copy);
  --faint: var(--nx-quiet);
  --cyan: var(--nx-signal);
  --cyan-dark: var(--nx-signal-strong);
  --cyan-dim: var(--nx-signal-wash);
  --green: var(--nx-positive);
  --amber: var(--nx-caution);
  --red: var(--nx-negative);
  --purple: var(--nx-signal);
  --hot: var(--nx-signal);
  --font: var(--nx-display);
  --mono: var(--nx-code);
  --radius: 4px;
}

html {
  background: var(--nx-void);
  scrollbar-color: var(--nx-line-strong) var(--nx-void);
}

body {
  background:
    linear-gradient(90deg, transparent calc(50% - .5px), rgba(117, 239, 247, .025) 50%, transparent calc(50% + .5px)),
    var(--nx-void) !important;
  color: var(--nx-ink) !important;
  font-family: var(--nx-display) !important;
}

::selection {
  background: var(--nx-signal);
  color: #031012;
}

a,
button,
input,
select {
  -webkit-tap-highlight-color: transparent;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible {
  outline: 1px solid var(--nx-signal) !important;
  outline-offset: 4px !important;
}

/* Shared masthead */
nav,
.nav,
.site-nav {
  background: rgba(5, 6, 7, .88) !important;
  border-bottom: 1px solid var(--nx-line) !important;
  backdrop-filter: blur(18px) saturate(120%) !important;
  -webkit-backdrop-filter: blur(18px) saturate(120%) !important;
}

nav .inner,
.nav-inner,
.site-nav .nav-inner {
  width: min(calc(100% - 40px), var(--nx-width)) !important;
  max-width: var(--nx-width) !important;
  height: 68px !important;
  margin-inline: auto !important;
  padding-inline: 0 !important;
}

.logo,
.brand,
.nav-logo,
.site-nav .brand {
  color: var(--nx-ink) !important;
  font-weight: 720 !important;
  letter-spacing: .15em !important;
  text-decoration: none !important;
}

.logo-mark,
.brand-mark,
.nav-logo-icon,
.nav-logo .logo,
.brand > span:first-child {
  background: transparent !important;
  border: 1px solid var(--nx-signal) !important;
  border-radius: 2px !important;
  color: var(--nx-signal) !important;
  box-shadow: inset 0 0 0 1px rgba(117, 239, 247, .08);
}

.nav-links {
  gap: clamp(14px, 2vw, 28px) !important;
}

.nav-links a,
.site-nav .nav-links a {
  color: var(--nx-copy) !important;
  font-family: var(--nx-code) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: .055em !important;
  text-transform: uppercase;
}

.nav-links a:hover,
.nav-links a.active,
.nav-links a[aria-current="page"],
.site-nav .nav-links a:hover,
.site-nav .nav-links a[aria-current="page"] {
  color: var(--nx-signal) !important;
}

.nav-links .btn,
.nav-links .nav-cta,
.site-nav .nav-cta {
  min-height: 36px !important;
  padding: 0 14px !important;
  background: var(--nx-signal) !important;
  border: 1px solid var(--nx-signal) !important;
  border-radius: 2px !important;
  color: #031012 !important;
}

/* Shared typography and controls */
h1,
h2,
h3,
h4 {
  color: var(--nx-ink);
  text-wrap: balance;
}

h1 {
  font-weight: 560 !important;
  letter-spacing: -.055em !important;
}

h2 {
  font-weight: 560 !important;
  letter-spacing: -.035em !important;
}

p,
li {
  text-wrap: pretty;
}

.eyebrow,
.section-tag,
.hero-tag,
.kicker,
.intel-kicker {
  color: var(--nx-signal) !important;
  font-family: var(--nx-code) !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: .16em !important;
  text-transform: uppercase !important;
}

.btn,
.button,
.open,
.nav-cta {
  border-radius: 2px !important;
  box-shadow: none !important;
  font-family: var(--nx-code) !important;
  font-size: 11px !important;
  letter-spacing: .055em !important;
  text-transform: uppercase;
}

.btn-primary,
.btn-cyan,
.button.primary,
.button-primary,
.open {
  background: var(--nx-signal) !important;
  border-color: var(--nx-signal) !important;
  color: #031012 !important;
}

.btn-primary:hover,
.btn-cyan:hover,
.button.primary:hover,
.button-primary:hover,
.open:hover {
  background: #b5f8fc !important;
  border-color: #b5f8fc !important;
}

.btn-ghost,
.button:not(.primary):not(.button-primary),
.button-secondary {
  background: transparent !important;
  border-color: var(--nx-line-strong) !important;
  color: var(--nx-ink) !important;
}

/* Homepage: an asymmetric command layer, not a centered hardware launch page. */
body > .hero {
  position: relative;
  max-width: var(--nx-width) !important;
  min-height: min(840px, 94vh);
  padding: clamp(150px, 19vh, 220px) 0 88px !important;
  text-align: left !important;
}

body > .hero::before {
  content: "03 / THIRD SIDE SYSTEM";
  position: absolute;
  top: 118px;
  right: 0;
  color: var(--nx-quiet);
  font: 500 10px/1 var(--nx-code);
  letter-spacing: .16em;
  writing-mode: vertical-rl;
}

body > .hero::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 1px;
  background: linear-gradient(90deg, var(--nx-signal) 0 18%, var(--nx-line) 18%);
}

body > .hero .hero-tag {
  display: flex !important;
  width: fit-content;
  margin: 0 0 34px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  color: var(--nx-copy) !important;
}

body > .hero .hero-tag .dot {
  border-radius: 0 !important;
  background: var(--nx-positive) !important;
  animation: none !important;
}

body > .hero h1 {
  max-width: 980px !important;
  margin: 0 0 30px !important;
  font-size: clamp(52px, 8.2vw, 112px) !important;
  font-weight: 520 !important;
  line-height: .88 !important;
}

body > .hero h1 em {
  color: var(--nx-signal) !important;
}

body > .hero > p {
  max-width: 650px !important;
  margin: 0 0 40px !important;
  color: var(--nx-copy) !important;
  font-size: clamp(17px, 1.5vw, 21px) !important;
  line-height: 1.55 !important;
}

body > .hero .hero-ctas {
  justify-content: flex-start !important;
}

.hero-stats {
  max-width: 760px;
  justify-content: flex-start !important;
  gap: 0 !important;
  margin-top: clamp(74px, 12vh, 130px) !important;
  padding-top: 0 !important;
  border-top: 1px solid var(--nx-line) !important;
}

.hero-stats .stat {
  flex: 1;
  min-width: 130px;
  padding: 20px 22px 0 0;
  text-align: left !important;
}

.hero-stats .stat-num {
  color: var(--nx-ink);
  font-family: var(--nx-code);
  font-size: 22px !important;
  font-weight: 500 !important;
}

.hero-stats .stat-label {
  color: var(--nx-quiet) !important;
  font-family: var(--nx-code);
  font-size: 9px !important;
}

/*
 * Legacy content sections use this default rhythm. Modern Novex surfaces own
 * their section spacing and backgrounds in their page-level stylesheets.
 */
body:not([class*="nx-"]):not(.intelligence-index) section {
  position: relative;
  padding-block: clamp(76px, 10vw, 132px) !important;
  background: transparent !important;
  border-bottom: 1px solid var(--nx-line);
}

.section-inner {
  max-width: var(--nx-width) !important;
}

.section-title {
  max-width: 760px !important;
  color: var(--nx-ink) !important;
  font-size: clamp(34px, 5vw, 64px) !important;
  line-height: 1.02 !important;
}

.section-desc {
  max-width: 650px !important;
  color: var(--nx-copy) !important;
}

.products-grid {
  margin-top: 56px !important;
  gap: 1px !important;
  background: var(--nx-line) !important;
  border: 1px solid var(--nx-line) !important;
  border-radius: 2px !important;
}

.product-card,
a.product-card {
  min-height: 270px;
  background: var(--nx-panel) !important;
  color: var(--nx-ink) !important;
}

a.product-card:hover {
  background: var(--nx-raised) !important;
}

.product-card .icon {
  background: transparent !important;
  border: 1px solid var(--nx-line) !important;
  border-radius: 2px !important;
  color: var(--nx-signal) !important;
}

.product-card .tag {
  background: transparent !important;
  border: 1px solid var(--nx-line) !important;
  border-radius: 1px !important;
  color: var(--nx-copy) !important;
  font-family: var(--nx-code);
  font-size: 9px !important;
  text-transform: uppercase;
}

.product-featured {
  box-shadow: inset 0 2px 0 var(--nx-signal) !important;
}

.sensei-section,
.access-section {
  background: #07090a !important;
}

.sensei-grid {
  gap: 1px !important;
  background: var(--nx-line);
  border: 1px solid var(--nx-line);
}

.sensei-card {
  min-height: 230px;
  background: var(--nx-panel) !important;
  border: 0 !important;
  border-radius: 0 !important;
}

.sensei-card .num {
  color: var(--nx-signal) !important;
  font-family: var(--nx-code);
  font-weight: 500 !important;
}

.magnets-preview,
.scanner-preview {
  background: var(--nx-panel) !important;
  border-color: var(--nx-line) !important;
  border-radius: 2px !important;
}

.venue-pill {
  background: transparent !important;
  border-radius: 2px !important;
  color: var(--nx-copy);
  font-family: var(--nx-code);
  font-size: 10px !important;
  text-transform: uppercase;
}

.cta-section {
  text-align: left !important;
}

.cta-section h2,
.cta-section p {
  margin-left: 0 !important;
}

.cta-section .hero-ctas {
  justify-content: flex-start !important;
}

footer,
.footer {
  background: var(--nx-void) !important;
  border-top-color: var(--nx-line) !important;
}

/* Directory, onboarding, support, status, and security */
.shell {
  width: min(calc(100% - 40px), var(--nx-width)) !important;
  padding: clamp(110px, 14vw, 174px) 0 100px !important;
}

.shell > h1,
.shell > .hero h1 {
  max-width: 960px !important;
  margin-top: 20px !important;
  font-size: clamp(46px, 7vw, 86px) !important;
  line-height: .95 !important;
}

.shell .lede {
  max-width: 720px !important;
  color: var(--nx-copy) !important;
}

.grid,
.estate-grid {
  gap: 1px !important;
  background: var(--nx-line);
  border: 1px solid var(--nx-line);
}

.card,
.feature,
.status-panel,
.stat-card,
.market-card,
.source-panel {
  background: var(--nx-panel) !important;
  border-color: var(--nx-line) !important;
  border-radius: 2px !important;
  box-shadow: none !important;
}

.card:hover,
.feature:hover,
.market-card:hover {
  background: var(--nx-raised) !important;
  border-color: var(--nx-line-strong) !important;
  transform: none !important;
}

.path,
.next,
.notice,
.beta-cta {
  background: var(--nx-panel) !important;
  border-color: var(--nx-line) !important;
  border-radius: 2px !important;
}

.path a,
.status-row {
  background: transparent !important;
  border-color: var(--nx-line) !important;
  border-radius: 2px !important;
}

.product-state,
.planned,
.live-badge,
.market-badge {
  background: transparent !important;
  border-radius: 1px !important;
  font-family: var(--nx-code) !important;
}

/* Read-only tools live one density step closer to the cockpit. */
.main {
  width: min(calc(100% - 32px), 1320px) !important;
}

.main .header h1,
.page-header h1 {
  color: var(--nx-ink) !important;
  font-size: clamp(38px, 5vw, 66px) !important;
}

.table-wrap,
.controls,
.tabs,
table {
  border-radius: 2px !important;
}

th {
  color: var(--nx-quiet) !important;
  font-family: var(--nx-code);
}

tbody tr:hover {
  background: var(--nx-raised) !important;
}

tbody tr.selected {
  background: var(--nx-signal-wash) !important;
  box-shadow: inset 2px 0 var(--nx-signal) !important;
}

/* Intelligence keeps editorial depth without becoming a separate neon brand. */
.intelligence-index {
  --ink: var(--nx-ink);
  --muted: var(--nx-copy);
  --quiet: var(--nx-quiet);
  --paper: var(--nx-void);
  --surface: var(--nx-panel);
  --line: var(--nx-line);
  --cyan: var(--nx-signal);
  --cyan-dark: var(--nx-signal-strong);
  --night: var(--nx-void);
  background: var(--nx-void) !important;
}

.intelligence-index .intel-hero,
.intelligence-index .method-hero,
.intelligence-index .page-shell {
  width: min(calc(100% - 40px), var(--nx-width));
  margin-inline: auto;
}

.intelligence-index .intel-hero h1 {
  font-size: clamp(52px, 8vw, 106px) !important;
  line-height: .9 !important;
}

.intelligence-index .report-card,
.intelligence-index .method-card,
.intelligence-index .report-panel {
  background: var(--nx-panel) !important;
  border-color: var(--nx-line) !important;
  border-radius: 2px !important;
  box-shadow: none !important;
}

@media (prefers-reduced-motion: no-preference) {
  .product-card,
  .card,
  .feature,
  .market-card,
  .btn,
  .button {
    transition: color 160ms ease, background-color 160ms ease, border-color 160ms ease !important;
  }
}

@media (max-width: 1240px) {
  body > .hero {
    margin-inline: 24px !important;
  }
}

@media (max-width: 900px) {
  body > .hero {
    min-height: auto;
    padding-top: 132px !important;
  }

  body > .hero::before {
    display: none;
  }

  .hero-stats {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr);
  }

  .hero-stats .stat {
    border-bottom: 1px solid var(--nx-line);
    padding-bottom: 18px;
  }
}

@media (max-width: 720px) {
  nav .inner,
  .nav-inner,
  .site-nav .nav-inner,
  .shell,
  .intelligence-index .intel-hero,
  .intelligence-index .method-hero,
  .intelligence-index .page-shell {
    width: min(calc(100% - 28px), var(--nx-width)) !important;
  }

  body > .hero {
    margin-inline: 14px !important;
  }

  body > .hero h1 {
    font-size: clamp(48px, 16vw, 74px) !important;
  }

  .hero-stats {
    grid-template-columns: 1fr 1fr !important;
  }

  .section-title {
    font-size: clamp(34px, 12vw, 52px) !important;
  }

  .products-grid {
    grid-template-columns: 1fr !important;
  }
}
