/* Hide Opus wire/prove chrome in production. Reveal with ?dev=1 (sets html[data-dev="1"]). */
html:not([data-dev="1"]) .opus-wire-strip,
html:not([data-dev="1"]) .badge.preview,
html:not([data-dev="1"]) .prove-dev,
html:not([data-dev="1"]) .exit-criteria {
  display: none !important;
}

/* Marketing site — never inherit observatory overflow / shell */
html[data-app="site"] body {
  overflow-x: hidden;
  overflow-y: auto;
  min-height: 100vh;
  height: auto;
}

/* Observatory onboarding — full viewport wizard */
html[data-app="onboarding"] body {
  overflow: hidden;
  min-height: 100vh;
  height: 100vh;
}

/* Disabled / coming-soon links — no navigation, clear affordance */
.link-disabled,
a.link-disabled,
.stub-soon,
a.stub-soon,
article.stub-soon,
button.stub-soon,
span.stub-soon,
a[aria-disabled="true"]:not([href="/observatory"]):not([href^="/observatory/"]) {
  pointer-events: none !important;
  cursor: default !important;
}
a.link-disabled,
a.stub-soon,
a[aria-disabled="true"] {
  text-decoration: none;
}
.stub-soon::after,
a.stub-soon::after,
article.stub-soon::after {
  content: " · Coming soon";
  font-family: var(--mono, 'Space Mono', ui-monospace, monospace);
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-faint, rgba(240, 230, 211, 0.45));
  margin-left: 0.35rem;
}
article.stub-soon::after {
  display: block;
  margin-left: 0;
  margin-top: 0.5rem;
}
a[href="#"]:not([id]):not(.link):not([data-allow-empty]) {
  pointer-events: none;
  cursor: default;
  opacity: 0.72;
}

/* Alignment — marketing container parity with Observatory 1180px grid */
html[data-app="site"] .container,
html[data-app="site"] .nav-in,
html[data-app="site"] .footer .container {
  max-width: 1180px;
  padding-left: 24px;
  padding-right: 24px;
}
