@import "https://assets.elements.dev/assets/app/shared/styles/page.eb1a7559b8a091ff.css";

/*
 * /install — single-page install flow. Big headline, mono lede, dark
 * terminal block with live-updating curl URL, platform + arch pills,
 * small prereqs section at the bottom.
 */

.install-page { color: var(--ink); }

/* .install-shell width + gutters come from the shared marketing-column
   group in app/shared/styles/site.css, so install lines up with feed /
   home / learn at the same left edge and gutters. */

/* ─── Hero ─────────────────────────────────────────────────────── */

/* Canonical top-level page title (3rem desktop / 2.5rem on phones —
   matches .page-hero-title in app/shared/styles/site.css exactly, so
   "Install" sits at the same scale as "Learn", "Pricing", etc.). */
.install-h1 {
  font-family: var(--font-sans);
  font-weight: var(--weight-bold);
  font-size: var(--page-title);
  letter-spacing: -0.02em;
  line-height: 1;
  /* Top-aligned like every other page: the standard hero top margin
     plus a gap to the lede below. */
  margin: 2rem 0 var(--space-6);
  color: var(--ink);
}

/* Top-aligned like every other page — the install block flows from the
   top of .page-chrome-main, same as /learn, /pricing, etc. (Previously
   this page vertically centered the block on desktop; cmather wants it
   consistent with the rest of the site.) */

/* Matches the canonical lede treatment (.page-hero-lede in
   app/shared/styles/site.css). The gap to the termbox below stays a
   touch tighter than the title→lede gap above so the lede reads as
   paired with the termbox it explains rather than with the title. */
.install-lede {
  color: var(--ink-soft);
  max-width: 40rem;
  margin: 0 0 var(--space-6);
}

/* No rule above the panel. It was the one structural mark on the page, and
   it earned that when a title and a lede sat above it and the reader needed
   telling where the reading stopped. The lede is gone and the panel is a
   black object on a white page, which marks itself far better than a
   hairline drawn next to it. Air alone now. */
.install-page .install-shell .ip {
  padding-top: var(--space-6);
}

/* ─── Pills ──────────────────────────────────────────────────────
   Single row, packed tight. The two groups (macOS/Linux/Windows |
   arm64/amd64) are visually divided by a thin vertical rule, not
   by a gap — pills hug each other so the row reads as one tight
   selector at any width. flex-wrap: nowrap; if the row genuinely
   doesn't fit, it scrolls horizontally rather than stacking. */

.install-pills {
  display: flex;
  gap: 0.125rem;                 /* 2px — pills very close to each other */
  /* More separation from the terminal above so the selector reads as
     its own row rather than crowding the command box. */
  margin: var(--space-8) 0 0;
  flex-wrap: nowrap;
  align-items: center;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.install-pills::-webkit-scrollbar { display: none; }

.install-pill {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-box-trim: trim-both; text-box-edge: cap alphabetic;
  /* Override framework button defaults — these pills are chip-sized,
     not 44px CTA buttons. */
  height: auto;
  line-height: 1;
  padding: 0.3125rem 0.5625rem;
  /* Tighter radius so the pills read as kbd-style chips, not
     rounded marketing pills — fits the install page's terminal
     aesthetic. */
  border-radius: var(--radius-sm);
  color: var(--ink-soft);
  background: transparent;
  border: none;
  cursor: pointer;
  font-weight: var(--weight-regular);
  flex-shrink: 0;
  white-space: nowrap;
  transition: background var(--duration-fast) var(--ease-out);
}
.install-pill:hover { background: var(--bg-panel); }
.install-pill.is-selected {
  background: var(--accent-soft);
  color: var(--accent-deep);
  font-weight: var(--weight-bold);
}
.install-pill.is-selected:hover { background: var(--accent-soft); }
.install-pill-separator {
  width: 1px;
  height: 16px;
  background: var(--rule);
  margin: 0 0.25rem;
  flex-shrink: 0;
}

@media (max-width: 480px) {
  .install-pills { gap: 0.0625rem; margin-top: 0.875rem; }
  .install-pill {
    font-size: 0.6875rem;         /* 11px */
    padding: 0.3125rem 0.5rem;
    letter-spacing: 0.05em;
  }
  .install-pill-separator {
    margin: 0 0.1875rem;
    height: 14px;
  }
}

/* ─── Footnote ─────────────────────────────────────────────────── */

.install-footnote {
  font-family: var(--font-sans);
  font-size: 0.8125rem;
  /* --ink-dim is the site's standard "quiet hint" color — one notch
     up from --ink-faint so the text is readable without shouting. */
  color: var(--ink-dim);
  /* Generous breathing room between the pills above and this footnote
     so they don't read as one crammed block. */
  margin: var(--space-12) 0 0;
}
/* Keep `~/elements/bin` as plain inline text — no chip/background.
   The whole line is already mono, wrapping it in a bordered pill
   reads as "hey look at this code!" when it's just a path. */
.install-footnote code {
  background: none;
  padding: 0;
  border-radius: 0;
  color: var(--ink-soft);
  font-weight: var(--weight-medium);
}
/* ─── Mobile ───────────────────────────────────────────────────── */

@media (max-width: 640px) {
  .install-h1 {
    font-size: 2.5rem;
    /* More breathing room between "Install" and the lede paragraph
       on phone widths — the tight desktop gap reads cramped when
       the title drops to two lines. */
    margin: 1.5rem 0 1.5rem;
  }
}

/* ─── Safety, in one line ────────────────────────────────────────────
   Quiet on purpose. A box, an icon or a heading would turn a passing
   reassurance into a warning, and a warning on the install command is the
   opposite of what it is for. It reads as a footnote and answers the only
   question a careful person has. */
.install-safe {
  margin: var(--space-5) 0 0;
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  color: var(--ink-soft);
}

.install-safe code {
  font-family: var(--font-mono);
  font-size: 0.92em;
}


/* The founder letter's band. The letter itself is a shared template; this
   is only the rule and the air that separate it from the install panel. */

/* ─── Wizard ───────────────────────────────────────────────────── */

.iw {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-10);
}

/* A vertical path joins the step numbers, so the steps read as one route
   from the first to the last. Each step draws the stretch below its own
   number: solid blue once the step is done, dotted while it is still ahead. */
.iw-step {
  position: relative;
  padding: 0 0 var(--space-8);
}

.iw-step:last-child {
  padding-bottom: 0;
}

.iw-step:not(:last-child)::before {
  content: "";
  position: absolute;
  left: 13px;
  top: 36px;
  bottom: 8px;
  border-left: 2px dotted color-mix(in srgb, var(--ink) 25%, var(--bg));
}

.iw-step.is-done:not(:last-child)::before {
  border-left-style: solid;
  border-left-color: var(--accent);
}

.iw-head {
  display: grid;
  grid-template-columns: 32px auto 1fr auto;
  align-items: center;
  column-gap: var(--space-3);
}

.iw-num {
  position: relative;
  width: 28px;
  height: 28px;
  background: var(--bg);
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.875rem;
  font-weight: var(--weight-bold);
  border: 1px solid var(--rule);
  color: var(--ink-soft);
}

.iw-title {
  font-size: 1.125rem;
  font-weight: var(--weight-bold);
  color: var(--ink);
}

.iw-hint {
  color: var(--ink-soft);
  font-size: 0.9375rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.iw-step.is-open .iw-num {
  background: var(--accent);
  border-color: var(--accent);
  color: white;
}

.iw-step.is-done .iw-num {
  background: var(--accent);
  border-color: var(--accent);
  color: white;
}

/* The current step carries a soft ring, so it stands out from the done
   steps that share its blue. */
.iw-step.is-open .iw-num {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 18%, var(--bg));
}

/* On a dark page 18% of the accent nearly vanishes into the ground. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .iw-step.is-open .iw-num {
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 45%, var(--bg));
  }
}

:root[data-theme="dark"] .iw-step.is-open .iw-num {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 45%, var(--bg));
}

.iw-step.is-later .iw-title,
.iw-step.is-later .iw-hint {
  color: var(--ink-faint, var(--ink-soft));
  opacity: 0.6;
}

.iw-back {
  font: inherit;
  font-size: 0.8125rem;
  background: none;
  border: 0;
  color: var(--ink-soft);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.iw-body {
  padding: var(--space-4) 0 var(--space-2) calc(32px + var(--space-3));
}

.iw-p {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink);
  margin: 0 0 var(--space-4);
}

.iw-h2 {
  font-size: 1.5rem;
  font-weight: var(--weight-bold);
  margin: 0 0 var(--space-3);
}

.iw-h3 {
  font-size: 1rem;
  font-weight: var(--weight-bold);
  margin: var(--space-6) 0 var(--space-2);
}

.iw-list {
  margin: var(--space-4) 0;
  padding-left: 1.25rem;
  line-height: 1.6;
}

.iw-list li {
  margin-bottom: var(--space-2);
}

.iw-list kbd,


.iw-alt {
  margin: 0 0 var(--space-5);
  font-size: 0.9375rem;
  color: var(--ink-soft);
}

.iw-shot {
  margin: var(--space-4) 0;
  padding: var(--space-6);
  border: 1px dashed var(--rule);
  border-radius: 8px;
  color: var(--ink-soft);
  font-size: 0.875rem;
  text-align: center;
}

.iw-help {
  margin: var(--space-4) 0;
  font-size: 0.9375rem;
}

.iw-help summary {
  cursor: pointer;
  color: var(--ink-soft);
}

.iw-help ul {
  margin: var(--space-3) 0 0;
  padding-left: 1.25rem;
  line-height: 1.6;
}

.iw-prompt {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
  padding: var(--space-4);
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: var(--bg-soft);
  cursor: pointer;
  margin: var(--space-3) 0;
}

.iw-prompt-text {
  flex: 1;
  line-height: 1.5;
}

.iw-prompt-copy {
  font: inherit;
  font-size: 0.8125rem;
  background: none;
  border: 1px solid var(--rule);
  border-radius: 4px;
  padding: 2px 8px;
  cursor: pointer;
  white-space: nowrap;
}

.iw-prompt.is-copied .iw-prompt-copy {
  color: var(--success);
  border-color: var(--success);
}

.iw-finish {
  padding: var(--space-6);
  border-radius: 10px;
  background: var(--success-soft, var(--bg-soft));
  margin-bottom: var(--space-10);
}

@media (max-width: 640px) {
  .iw-head {
    grid-template-columns: 32px 1fr;
  }

  .iw-hint,
  .iw-back {
    grid-column: 2;
  }
}


/* The fields run to the step's right edge, the same edge as the terminal
   box in step 2 and the rules between steps. */
.iw .join-form {
  max-width: none;
}


/* The beginner path: a quiet side door under the terminal box. A soft accent strip reads as an option, not a second
   instruction, and the whole strip is the target. */
/* Help with the next step, as one quiet line under the box: the question,
   then the link. Plain text, not a call to action. */
.iw-side {
  display: block;
  margin: var(--space-6) 0 0;
  color: var(--ink-soft);
  font-size: 0.9375rem;
  text-decoration: none;
}

.iw-side-icon {
  display: none;
}

.iw-side-go {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-left: 0.35em;
  color: var(--link, var(--accent));
}

.iw-side:hover .iw-side-go {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.iw-side-arrow {
  width: 12px;
  height: 12px;
}

/* Laid out like the sign-up form above it: the field, then one button that
   spans the form. */
.iw-code {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  max-width: var(--form-width);
  margin: 0 0 var(--space-4);
}

.iw-code-input {
  width: 100%;
  font-family: var(--font-mono);
  font-size: 1.25rem;
  letter-spacing: 0.2em;
  text-align: center;
}

.iw-code .button {
  width: 100%;
  justify-content: center;
}

.iw-code-error {
  margin: 0 0 var(--space-4);
  font-size: 0.9375rem;
  color: var(--danger, #b42318);
}

button.iw-resend {
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  color: var(--accent-deep);
  cursor: pointer;
}

button.iw-resend:disabled {
  color: var(--ink-soft);
  cursor: default;
}
