/* ============================================================================
   Task100 — Support & Subscribe pages.

   Layered ON TOP of analytics.css (linked first by both pages), which owns the
   whole shared vocabulary: topbar, hero, pair, houses, panel, fail, callout,
   chips, buttons, footer. This file holds only what these two pages add — the
   price hero, the published formula, the tier table and the reduction history.
   The one rule inherited with the skeleton: NOTHING IS INVENTED — em dashes
   until real data arrives, never a zero read as truth.
   ============================================================================ */

/* The price figure inside the hero pair — bigger than a count, it IS the page. */
.price-v { font-size: 2.4rem; font-weight: 800; }
.price-unit { font-size: 1rem; font-weight: 600; opacity: .75; margin-left: .15em; }

/* The published formula — verbatim, monospace, part of the transparency promise. */
.formula {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .95rem;
  background: rgba(127, 127, 127, .10);
  border-radius: 10px;
  padding: 14px 16px;
  margin: 10px 0;
  overflow-x: auto;
  white-space: nowrap;
}

/* Milestone tier table. */
.tiers { width: 100%; border-collapse: collapse; }
.tiers th {
  text-align: left; font-size: .72rem; letter-spacing: .05em;
  text-transform: uppercase; opacity: .7; padding: 8px 10px;
  border-bottom: 1px solid rgba(127, 127, 127, .35);
}
.tiers td { padding: 10px; border-bottom: 1px solid rgba(127, 127, 127, .15); }
.tiers td.num { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.tiers tr.cur td { background: rgba(25, 118, 210, .12); font-weight: 700; }
.tiers tr.cur td:first-child { border-radius: 8px 0 0 8px; }
.tiers tr.cur td:last-child { border-radius: 0 8px 8px 0; }
.tier-now {
  display: inline-block; font-size: .68rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; padding: 2px 8px; border-radius: 999px;
  background: #1976D2; color: #fff; margin-left: 8px; vertical-align: 1px;
}

/* Reduction history rows. */
.hist { list-style: none; margin: 0; padding: 0; }
.hist li {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 10px 2px; border-bottom: 1px solid rgba(127, 127, 127, .15);
}
.hist li:last-child { border-bottom: 0; }
.hist .h-date { opacity: .75; }
.hist .h-price { font-weight: 700; font-variant-numeric: tabular-nums; }

/* What-stays-free list — the copy rule, in public. */
.free-list { margin: 8px 0 0; padding-left: 1.2em; }
.free-list li { margin: 4px 0; }

/* Subscribe page: the identity panel and the honest no-rails panel. */
.identity b { font-size: 1.05rem; }

/* Task133: the action panel's subscribe/manage faces. Colours come from the
   analytics.css tokens (linked first) — no new primitives. */
.status-line { font-weight: 700; font-size: 1.02rem; margin: 0 0 10px; }
.status-line::before {
  content: ""; display: inline-block; width: 10px; height: 10px;
  border-radius: 50%; background: #8A94A8; margin-right: 8px; vertical-align: 1px;
}
.st-active { color: var(--nilgiri-ink); }
.st-active::before { background: var(--nilgiri); }
.st-warn { color: var(--shivalik); }
.st-warn::before { background: var(--shivalik); }
.subh { display: block; font-weight: 700; font-size: 0.92rem; margin: 12px 0 4px; }
.btn-full { display: block; width: 100%; text-align: center; margin-top: 12px; }
#checkoutError { margin-top: 12px; margin-bottom: 0; }
.soon {
  border: 1.5px dashed rgba(127, 127, 127, .45);
  border-radius: 12px; padding: 16px 18px; margin: 14px 0;
}
.soon h3 { margin: 0 0 6px; }

/* Task134 - the one-time gift form (subscribe page). Inert-by-default styling:
   the disabled state must read as "not armed yet", not as a broken button. */
.donate-chips { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0; }
#donateAmount {
  width: 100%; box-sizing: border-box; padding: 10px 14px; margin-bottom: 4px;
  border: 1px solid rgba(127, 127, 127, .35); border-radius: 10px;
  font: 600 1rem/1.3 inherit; color: var(--ink); background: #fff;
}
#donateAmount:disabled, #donateBtn[disabled] { opacity: .55; cursor: not-allowed; }
#donateError { margin-top: 12px; margin-bottom: 0; }
