/* Styles for the generated pages: /compare/, /vs/*, /pricing/, /download/ (site/pages/*.mjs) and the thanks page.
   Tokens only (styles.css); nothing here is smaller than --fs-fine and every target is at least 44px. */

.cmp-page { max-width: 1240px; margin: 0 auto; padding: calc(var(--nav-h) + 48px) var(--gutter) 96px; }
.cmp-page > section { padding: 0; margin-top: clamp(48px, 7vw, 80px); }
.cmp-page h2 { font: 700 var(--fs-h2)/1.15 var(--sans); font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem); letter-spacing: -0.02em; margin: 0 0 20px; }
.cmp-page h3 { font: 600 var(--fs-h4)/1.4 var(--sans); margin: 0 0 8px; }
.cmp-page p { color: var(--muted); }
.cmp-page a:not(.button):not(.cv) { color: var(--brass); text-underline-offset: 3px; }
.cmp-hero { max-width: 760px; }
.cmp-hero .lede { font-size: 1.25rem; line-height: 1.5; color: var(--muted); margin: 0 0 24px; }
.cmp-hero .ctas { margin-bottom: 12px; }

/* ---------- The comparison table ---------- */
.cmp-scroll { position: relative; overflow-x: auto; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); }
.cmp-scroll:focus-visible { outline-offset: 2px; }
table.cmp { width: 100%; min-width: 860px; border-collapse: separate; border-spacing: 0; font-size: var(--fs-small); }
.cmp caption { text-align: left; }
.cmp th, .cmp td { text-align: left; vertical-align: top; padding: 6px 14px; border-bottom: 1px solid var(--line); }
.cmp thead th { position: sticky; top: 0; background: var(--band); color: var(--text); font-weight: 600; white-space: nowrap; padding-block: 12px; }
.cmp tbody th { position: sticky; left: 0; z-index: 1; min-width: 190px; max-width: 230px; background: var(--surface); color: var(--text); font-weight: 600; box-shadow: 1px 0 0 var(--line); padding-block: 12px; }
.cmp thead th:first-child { position: sticky; left: 0; z-index: 2; }
.cmp tr:last-child th, .cmp tr:last-child td { border-bottom: 0; }
.cmp .is-moor { background: rgb(var(--accent-rgb) / .09); }
.cmp thead .is-moor { color: var(--brass); }
.cv { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; font-weight: 600; color: var(--text); text-decoration: underline dotted var(--line-strong); text-underline-offset: 5px; }
.cv:hover { text-decoration-style: solid; }
span.cv { text-decoration: none; }
.cv-mark { display: inline-grid; place-items: center; width: 20px; flex: none; font: 700 1rem/1 var(--sans); }
.cv.yes .cv-mark { color: var(--signal); }
.cv.no .cv-mark { color: var(--err); }
.cv.partial .cv-mark { color: var(--warn); }
.cv:not(.text) { white-space: nowrap; }
.cv.unknown { color: var(--muted); font-weight: 500; }
.cv.text { font-weight: 500; }
.cv-note { display: block; margin: -4px 0 8px; font: 400 var(--fs-fine)/1.4 var(--sans); color: var(--muted); max-width: 26ch; }
.cmp-legend { margin-top: 12px; max-width: 70ch; }

/* ---------- /compare/: Moor's parts vs. single-job apps ---------- */
.cmp-parts .parts-block { margin-top: 40px; scroll-margin-top: calc(var(--nav-h) + 16px); }
.cmp-parts .parts-block > p a { display: inline-flex; align-items: center; min-height: 44px; }
.cmp-parts .parts-wins { margin-top: 16px; }
.cmp-parts .win h4 { margin: 0 0 8px; }
table.parts-cmp { min-width: 720px; }
.cv.unchecked { color: var(--muted); font-weight: 500; white-space: nowrap; }


/* ---------- Who wins where ---------- */
.win-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.win-list.two { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.win { padding: 22px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--shadow-soft); }
.win p { margin: 0 0 8px; }
.win.moor, .win.loss { border-color: rgb(var(--accent-rgb) / .45); }
.win.loss ul { margin: 0; padding-left: 20px; color: var(--muted); }
.win.loss li { margin: 6px 0; }
.win .src, .win a { display: inline-flex; align-items: center; min-height: 44px; }
.vs-links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 12px; }
.src-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px 24px; }
.src-list h3 { margin-bottom: 4px; }
.src-list ul { list-style: none; margin: 0; padding: 0; }
.src-list a { display: inline-flex; align-items: center; min-height: 44px; overflow-wrap: anywhere; }

/* ---------- Steps, facts, call-to-action ---------- */
.steps { list-style: none; counter-reset: step; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.steps li { counter-increment: step; position: relative; padding: 22px 22px 22px 68px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); }
.steps li::before { content: counter(step); position: absolute; left: 20px; top: 22px; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  background: var(--brass-fill); color: var(--on-brass); font: 700 var(--fs-small)/1 var(--sans); }
.steps p { margin: 0; }
.steps code, .cmp-page code { font: 400 .9em var(--mono); background: rgb(var(--fg-rgb) / .07); padding: 2px 6px; border-radius: 6px; color: var(--text); }
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin: 0; padding: 20px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--band); }
.facts dt { font: 600 var(--fs-fine)/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin: 0 0 6px; }
.facts dd { margin: 0; color: var(--text); font-weight: 600; }
.cta-band { padding: clamp(28px, 5vw, 48px) !important; border: 1px solid rgb(var(--accent-rgb) / .45); border-radius: var(--r-lg); background: var(--band); }
.cta-band h2 { margin-bottom: 12px; }
.cta-band .ctas { margin: 16px 0 12px; }

/* The offer block (offer.js fills it) */
.offer { margin: 0 0 8px; }
.price-line { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 0 0 10px; }
.price-line .price { font: 700 3rem/1 var(--sans); letter-spacing: -0.02em; color: var(--text); }
.offer .offer-bar { max-width: 360px; }

/* ---------- Pricing ---------- */
.cmp-page > .price-card { max-width: 560px; padding: 32px; border: 1px solid rgb(var(--accent-rgb) / .45); border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--shadow-window); }
.price-card h2 { margin-bottom: 8px; }
.price-card .ticks { margin: 20px 0 24px; }
.faq { max-width: 820px; }
.faq-jump ul { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.faq-group { margin-top: 36px; scroll-margin-top: calc(var(--nav-h) + 16px); }
.faq-group h3 { font: 600 var(--fs-fine)/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--brass); margin: 0 0 4px; }

/* ---------- Thanks page ---------- */
.thanks-steps { max-width: none; }
.thanks-panel { padding: 22px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); }
.thanks-panel h2 { font-size: var(--fs-h4); margin: 0 0 8px; }
.thanks-panel p { margin: 0 0 14px; }
.thanks-panel .button { padding-block: 10px; text-align: center; line-height: 1.2; }

@media (max-width: 560px) {
  .price-line .price { font-size: 2.5rem; }
  .cmp-page > .price-card { padding: 22px; }
  .steps li { padding-left: 62px; }
}

/* ---------- Changelog template ---------- */
.changelog .cl-head { display: grid; gap: 10px; margin: 28px 0 8px; padding: 22px; border: 1px solid rgb(var(--accent-rgb) / .45); border-radius: var(--r-lg); background: var(--band); }
.cl-head .kicker { margin: 0 0 4px; }
.doc .cl-version { margin: 0; font: 700 2.25rem/1.1 var(--sans); color: var(--text); letter-spacing: -0.02em; }
.cl-version .muted { font: 400 var(--fs-body)/1.4 var(--sans); }
.cl-head .ctas { margin: 4px 0 0; }
.tag { display: inline-flex; align-items: center; min-height: 24px; padding: 0 8px; margin-right: 4px; border-radius: var(--r-pill); font: 600 var(--fs-fine)/1 var(--mono); letter-spacing: .04em; text-transform: uppercase; vertical-align: 1px;
  border: 1px solid currentColor; background: color-mix(in srgb, currentColor 10%, transparent); }
.tag.new { color: var(--f-widgets); }
.tag.improved { color: var(--f-docks); }
.tag.fixed { color: var(--f-agents); }
