/* ══════════════════════════════════════════════════════════════════════
   css/course-selling.css — the course home's Selling and Places pages (G39,
   Alex approved questions 3 and 4). Boards P9Sell, P9SellNoStripe,
   P9SellPhone, P6Places, P6PlacesEmpty. js/course-selling-pages.js draws the
   frames; the Selling cards are the wizard's room in its page form
   (course-creation-wizard.js `_sellPageHtml`), Places is course-places-tab.js
   in its page form. On the course home's tokens (funnel-home.css `--fh-*`),
   scoped under `.ch`.
   ══════════════════════════════════════════════════════════════════════ */

.ch .ch-pg.cin-cp { max-width: 1040px; }

/* ── Selling: the section list beside the cards ─────────────────────── */
.ch .ch-sellpg { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 18px; align-items: start; }
.ch .ch-sell-nav { position: sticky; top: 12px; display: flex; flex-direction: column; gap: 2px; }
.ch .ch-sell-navb { text-align: left; font: inherit; font-size: 14px; padding: 9px 12px; border-radius: 10px; border: 1px solid transparent;
  background: none; color: var(--fh-text-2); cursor: pointer; min-height: 40px; }
.ch .ch-sell-navb:hover { color: var(--fh-text); }
.ch .ch-sell-navb.on { background: var(--fh-surface); border-color: var(--fh-border); color: var(--fh-text); font-weight: 600; }
.ch .ch-sell-col { min-width: 0; }

.ch .ch-sell { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ch [data-sell-connect]:empty, .ch [data-sell-full]:empty { display: none; }
.ch .ch-sell-sec { display: flex; flex-direction: column; gap: 16px; min-width: 0; scroll-margin-top: 16px; }
.ch .ch-sell .fh-card { border-radius: 18px; }
.ch .ch-sell .fh-card-h { border-bottom: 0; padding: 18px 20px 2px; }
.ch .ch-sell .fh-card-h h3 { font-size: 17px; }
.ch .ch-sell .fh-card-b { padding: 10px 20px 18px; }
.ch .ch-sell-h4 { font-size: 14.5px; font-weight: 700; margin: 16px 0 8px; font-family: var(--fh-body); }
.ch .ch-sell-sub { margin: 4px 0 0; font-size: 13px; line-height: 1.5; }
.ch .ch-sell-a { font: inherit; font-size: 14px; color: var(--fh-accent-deep); background: none; border: 0; padding: 0; cursor: pointer;
  text-decoration: none; white-space: nowrap; min-height: 32px; }
.ch .ch-sell-a:hover { text-decoration: underline; }
.ch .ch-sell-saved { font-size: 13px; font-weight: 600; color: var(--fh-text-2); }
.ch .ch-sell-saved.ok, .ch .ch-ab .ch-sell-saved { color: var(--fh-good); }
.ch .ch-sell-msg { margin: 8px 0 0; font-size: 13px; color: var(--fh-text-2); min-height: 0; }
.ch .ch-sell-msg:empty { display: none; }

/* How people get in: two by two, a radio on each (P9Sell). */
.ch .ch-sell .ch-opts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ch .ch-opt-t { display: flex; align-items: center; gap: 8px; }
.ch .ch-opt-rad { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--fh-border-strong); flex: none; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; }
.ch .ch-opt[aria-pressed="true"] .ch-opt-rad { border-color: var(--fh-accent); }
.ch .ch-opt[aria-pressed="true"] .ch-opt-rad::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--fh-accent); }

/* What they pay: the product row, then Ways to pay. */
.ch .ch-prod { display: flex; align-items: flex-start; gap: 12px; }
.ch .ch-prod-ic { font-size: 20px; line-height: 1.3; }
.ch .ch-prod-b { flex: 1; min-width: 0; }
.ch .ch-prod-b b { font-size: 14.5px; }
.ch .ch-prod .ch-sell-a { align-self: center; }
.ch .wtp-inline-panel { border-top: 1px solid var(--fh-border); }
.ch .wtp-inline-panel .wtp-list { margin-top: 0; }
.ch .wtp-row.wtp-inline { border: 0; border-bottom: 1px solid var(--fh-border); border-radius: 0; margin: 0; padding: 14px 0; box-shadow: none; gap: 12px; }
.ch .wtp-row.wtp-inline .wtp-star { color: var(--fh-text-3); }
.ch .wtp-row.wtp-inline .wtp-star.on { color: #e0a01a; }
.ch .wtp-row.wtp-inline .wtp-head { align-items: center; flex-wrap: wrap; gap: 6px 8px; }
.ch .wtp-row.wtp-inline .wtp-flag { text-transform: none; letter-spacing: 0; font-weight: 600; font-size: 12px; border: 0;
  background: var(--fh-accent-soft); color: var(--fh-accent-deep); padding: 2px 8px; }
.ch .wtp-row.wtp-inline .wtp-total { font-size: 15px; }
.ch .wtp-row.wtp-inline .wtp-move { flex-direction: row; }
.ch .wtp-row.wtp-inline .wtp-mv { color: var(--fh-text-3); font-size: 11px; }
.ch .wtp-row.wtp-inline .wtp-mv:disabled { opacity: .35; }
.ch .wtp-row.wtp-inline .wtp-btn { color: var(--fh-accent-deep); padding: 6px 6px; font-size: 13.5px; }
.ch .wtp-row.wtp-inline .wtp-btn.wtp-rm { color: var(--fh-bad); }
.ch .wtp-inline-acts { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; margin-top: 14px; }
.ch .wtp-add { font: inherit; font-size: 13.5px; font-weight: 600; color: var(--fh-accent-deep); background: var(--fh-accent-soft);
  border: 0; border-radius: 999px; padding: 8px 14px; cursor: pointer; min-height: 36px; }
.ch .wtp-inline-acts .wtp-btn { color: var(--fh-accent-deep); font-size: 13.5px; padding: 6px 2px; }
.ch .wtp-empty { margin: 10px 0 0; font-size: 12.5px; color: var(--fh-text-3); }

/* Discount codes. */
.ch .ch-codes { display: grid; gap: 8px; margin-top: 12px; }
.ch .ch-code-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ch .ch-code-row.off { opacity: .7; }
.ch .ch-code { font-family: var(--fh-mono); font-size: 13.5px; font-weight: 600; background: var(--fh-surface-3); border-radius: 8px; padding: 6px 10px; }
.ch .ch-code-m { flex: 1; min-width: 160px; font-size: 13.5px; color: var(--fh-text-2); }
.ch .ch-code-off { font-size: 11.5px; font-weight: 600; color: var(--fh-text-2); background: var(--fh-surface-3); border-radius: 999px; padding: 1px 8px; }
.ch .ch-code-stop { border-radius: 999px; color: var(--fh-bad); border-color: #efc7c3; }
.ch .ch-sell-add { margin-top: 14px; border: 0; border-radius: 999px; background: var(--fh-accent-soft); color: var(--fh-accent-deep); }
.ch .ch-code-form { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 12px; align-items: end; margin-top: 14px;
  padding-top: 14px; border-top: 1px solid var(--fh-border); }
.ch .ch-code-form[hidden] { display: none; }
.ch .ch-code-form .fh-field { display: grid; gap: 4px; min-width: 0; }
.ch .ch-code-form label { font-size: 12.5px; font-weight: 600; color: var(--fh-text-2); }
.ch .ch-code-form .input, .ch .ch-code-form .select { width: 100%; min-width: 0; height: 40px; box-sizing: border-box; margin: 0; }
.ch .ch-code-form [data-sell-coupon-add] { justify-self: start; }
.ch .ch-code-hint { grid-column: 1 / -1; margin: 0; }

/* Test, then go live. */
.ch .ch-sell-mode { display: flex; gap: 14px; align-items: flex-start; background: var(--fh-warn-soft); border-radius: 14px; padding: 14px 16px;
  font-size: 14px; line-height: 1.55; }
.ch .ch-sell-mode.live { background: var(--fh-good-soft); }
.ch .ch-sell-tag { flex: none; font-size: 12px; font-weight: 700; letter-spacing: .04em; color: var(--fh-warn); background: var(--fh-surface);
  border-radius: 8px; padding: 3px 10px; }
.ch .ch-sell-mode.live .ch-sell-tag { color: var(--fh-good); }
.ch .ch-sell-card { font-family: var(--fh-mono); word-spacing: .25em; white-space: nowrap; }
.ch .ch-sell-pp .ch-sell-h4 { margin-top: 16px; }
.ch .ch-sell-link { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ch .ch-sell-link .input { flex: 1; min-width: 200px; font-family: var(--fh-mono); font-size: 13px; background: var(--fh-surface-3); border-color: transparent; }
.ch .ch-sell-link .fh-btn { border-radius: 999px; }
.ch .ch-sell-money { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--fh-border);
  font-size: 13.5px; color: var(--fh-text-2); }
.ch .ch-sell-money.warn { color: var(--fh-warn); }
.ch .ch-sell-money-t { flex: 1; min-width: 220px; line-height: 1.5; }
.ch .ch-sell-money-t b { color: var(--fh-text); }
.ch .ch-sell-money .fh-btn.primary { border-radius: 999px; padding: 10px 18px; }
.ch .ch-sell-stop { margin: 8px 0 0; }

/* The sections that wait for something: one quiet line each. */
.ch .ch-sell-later { padding: 4px 20px; }
.ch .ch-sell-later-row { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 0; border-top: 1px solid var(--fh-border);
  scroll-margin-top: 16px; }
.ch .ch-sell-later-row:first-child { border-top: 0; }
.ch .ch-sell-later-row b { font-weight: 600; color: var(--fh-text-2); }

/* Before Stripe: the price that waits, and the choice. */
.ch .ch-price-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 14px; }
.ch .ch-price .fh-field { display: grid; gap: 4px; }
.ch .ch-price label { font-size: 13px; font-weight: 600; }
.ch .ch-price .input { width: 160px; }
.ch .ch-price .input, .ch .ch-price .select { height: 40px; box-sizing: border-box; margin: 0; }
.ch .ch-price .fh-btn { height: 40px; }
.ch .ch-price .ch-sell-sub { margin-top: 10px; }
.ch .ch-price + .ch-sell-sub { margin-top: 12px; }
.ch .ch-price .ch-sell-saved { align-self: center; }
.ch .ch-stripe { display: flex; gap: 16px; padding: 20px; border-color: var(--fh-accent); }
.ch .ch-stripe-ic { flex: none; width: 44px; height: 44px; border-radius: 12px; background: var(--fh-accent-soft); display: inline-flex;
  align-items: center; justify-content: center; font-size: 22px; }
.ch .ch-stripe-b { flex: 1; min-width: 0; display: grid; gap: 8px; }
.ch .ch-stripe-b h3 { font-size: 17px; }
.ch .ch-stripe-b p { margin: 0; line-height: 1.55; }
.ch .ch-stripe-acts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.ch .ch-stripe-acts .fh-btn { border-radius: 999px; padding: 10px 16px; }

/* When it's full. */
.ch .ch-full { display: flex; align-items: center; gap: 12px; }
.ch .ch-full-ic { font-size: 20px; }
.ch .ch-full-b { flex: 1; min-width: 0; display: grid; gap: 2px; }
.ch .ch-full-b small, .ch .ch-full-notice small { font-size: 13px; color: var(--fh-text-2); display: block; }
.ch .ch-full-notice { display: flex; align-items: center; gap: 12px; background: var(--fh-accent-soft); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; }
.ch .ch-full-notice > div { flex: 1; min-width: 0; }

/* After they buy: three stacked choices with a radio (P9Sell). */
.ch .ch-ab-opts { display: grid; gap: 10px; }
.ch .ch-ab-opt { display: flex; gap: 10px; align-items: flex-start; text-align: left; font: inherit; color: var(--fh-text); background: var(--fh-surface);
  border: 1px solid var(--fh-border-strong); border-radius: 12px; padding: 12px 14px; cursor: pointer; min-height: 48px; }
.ch .ch-ab-opt b { display: block; font-weight: 600; font-size: 14.5px; }
.ch .ch-ab-opt small { display: block; font-size: 13px; color: var(--fh-text-2); margin-top: 2px; }
.ch .ch-ab-opt.on { border-color: var(--fh-accent); box-shadow: 0 0 0 1px var(--fh-accent) inset; background: var(--fh-accent-soft); }
.ch .ch-ab-rad { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--fh-border-strong); flex: none; margin-top: 2px; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center; }
.ch .ch-ab-opt.on .ch-ab-rad { border-color: var(--fh-accent); }
.ch .ch-ab-opt.on .ch-ab-rad::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--fh-accent); }

/* Publishing's one row that opens Selling. */
.ch .ch-sellrow .ch-row { border-top: 0; }

/* ── Places ─────────────────────────────────────────────────────────── */
.ch .ch-places { display: grid; gap: 16px; max-width: 760px; }
.ch .cpt-pick { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.ch .cpt-pick-l { font-size: 14px; font-weight: 600; margin-right: 2px; }
.ch .cpt-intake { font: inherit; font-size: 13.5px; font-weight: 500; border: 1px solid var(--fh-border-strong); background: var(--fh-surface); color: var(--fh-text);
  border-radius: 999px; padding: 8px 14px; cursor: pointer; min-height: 36px; }
.ch .cpt-intake.on { background: var(--fh-accent); border-color: var(--fh-accent); color: #fff; font-weight: 600; }
.ch .cpt-card { border-radius: 18px; padding: 20px; }
.ch .cpt-card .capp { border: 0; padding: 0; background: none; }
.ch .cpt-card .capp-field h3 { font-size: 15px; margin-right: 8px; }
.ch .cpt-empty { text-align: center; justify-items: center; padding: 36px 24px; border-radius: 18px; }
.ch .cpt-empty h3 { font-size: 17px; margin: 0; }
.ch .cpt-empty .cgp-lead { max-width: 520px; font-size: 14px; }
.ch .cpt-empty-ic { font-size: 30px; }
.ch .cpt-empty-acts { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }

/* ── Phone (P9SellPhone): the list becomes a row of pills over the cards ── */
@media (max-width: 760px) {
  .ch .ch-sellpg { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .ch .ch-sell-nav { position: static; flex-direction: row; overflow-x: auto; gap: 8px; padding-bottom: 4px; scrollbar-width: none; }
  .ch .ch-sell-nav::-webkit-scrollbar { display: none; }
  .ch .ch-sell-navb { flex: none; white-space: nowrap; border-radius: 999px; border-color: var(--fh-border); background: var(--fh-surface); font-size: 13.5px;
    padding: 7px 14px; min-height: 36px; }
  .ch .ch-sell-navb.on { background: var(--fh-accent); border-color: var(--fh-accent); color: #fff; }
  .ch .ch-sell .ch-opts { grid-template-columns: minmax(0, 1fr); }
  .ch .ch-sell .fh-card-h, .ch .ch-sell .fh-card-b { padding-left: 16px; padding-right: 16px; }
  .ch .ch-code-form { grid-template-columns: minmax(0, 1fr); }
  .ch .ch-full, .ch .ch-full-notice, .ch .ch-prod { flex-wrap: wrap; }
  .ch .ch-prod .ch-sell-a { flex-basis: 100%; padding-left: 32px; text-align: left; }
  .ch .ch-full .ch-sell-a, .ch .ch-full-notice .ch-sell-a { flex-basis: 100%; text-align: left; }
  .ch .ch-full-ic { display: none; }
  .ch .ch-sell-link .input { flex-basis: 100%; }
  .ch .ch-stripe { flex-direction: column; }
  /* P9SellPhone: name and price on the first line, then Rename · Remove · ▲▼. */
  .ch .wtp-row.wtp-inline { flex-wrap: wrap; row-gap: 4px; }
  .ch .wtp-row.wtp-inline .wtp-star { min-width: 30px; min-height: 30px; padding: 2px; font-size: 18px; align-self: flex-start; }
  .ch .wtp-row.wtp-inline .wtp-body { flex: 1 1 calc(100% - 160px); }
  .ch .wtp-row.wtp-inline .wtp-total { align-self: flex-start; }
  .ch .wtp-row.wtp-inline .wtp-acts { order: 4; flex: 0 0 auto; justify-content: flex-start; margin-left: 30px; }
  .ch .wtp-row.wtp-inline .wtp-move { order: 5; }
  .ch .wtp-row.wtp-inline .wtp-btn, .ch .wtp-row.wtp-inline .wtp-mv { min-height: 44px; }
  .ch .ch-price .input { width: 120px; }
}
