/* ============================================================
   campaign.css

   The two campaign pages' own rules, hoisted out of the <style>
   blocks in the first edition's Campaigns.aspx and Campaign.aspx
   (copy-and-adapt: the appearance ports unchanged
   while the inline CSS that produced it is centralized).

   EVERY VALUE HERE IS THE FIRST EDITION'S, character for
   character. What changed is the selector prefix and nothing
   else, so the two pages should be indistinguishable from their
   v1 counterparts at every width and every text size.

   TWO WRAPPERS, NOT ONE, and it is not a style choice: the two
   pages define .cmpdisc and .hint DIFFERENTLY (.86rem on the
   listing card, 1rem on the campaign itself), so a single scope
   would have to pick one and silently change the other page.
   .campaignpage carries what they genuinely share; .cmplistpage
   and .cmponepage carry what they do not.

   THREE DUPLICATES COLLAPSED rather than carried across, which
   the centralization rule asks to be reported:

     * .sr-only was redefined in Campaign.aspx identical to
       site.css:127. Dropped; site.css keeps the one copy.
     * .hint was defined identically in BOTH page blocks. It is
       here once, on .campaignpage.
     * .sharerow / .shareurl are ShareMeta.ShareRow's markup and
       were defined in Campaign.aspx's block. today.css and
       trail.css each carry their own scoped copy of the same
       two rules; this is a third, and all three should collapse
       onto site.css when that file is free. Recorded so the
       next sweep finds them together.

   SELECTOR RESTORED TO h1.page, THEN MADE TAG-INDEPENDENT
   (.campaignpage .page), w-launchfix3-2241, 2026-08-23 (board 1793/1812
   reversal). The h2.page rename above was the wrong direction: the audit
   read the duplicate-h1 defect backwards and demoted the page's own
   SUBJECT instead of fixing Site.master's brand wordmark, which is now a
   non-heading element there instead. Campaign.aspx's own heading is h1
   again; the selector drops the tag qualifier entirely so a future
   heading-level change never again forces a rename here.
   ============================================================ */

.campaignpage .page{font-family:var(--serif);font-size:2rem;margin:0 0 6px;font-weight:600}

/* Defined identically in both first-edition blocks. */
.campaignpage .hint{color:var(--faint);font-size:.84rem;line-height:1.5;margin:18px 0 0}

/* ---- the listing, /campaigns ------------------------------- */

.cmplistpage .cmplist{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:14px}
.cmplistpage .cmpcard{border:1px solid var(--edge);border-radius:12px;padding:15px 17px;min-width:0}
.cmplistpage .cmpcard h3{margin:0 0 5px;font-size:1.08rem;overflow-wrap:anywhere}
.cmplistpage .cmpcard h3 a{color:var(--ink);text-decoration:none}
.cmplistpage .cmpcard h3 a:hover{color:var(--gold)}
.cmplistpage .cmpdisc{color:var(--gold-soft);font-size:.86rem;line-height:1.45;margin:0 0 8px;overflow-wrap:anywhere}
.cmplistpage .cmpcard p{margin:0 0 8px;color:var(--muted);line-height:1.55}
.cmplistpage .cmpmeta{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--faint);font-size:.8rem;min-width:0}

/* The first edition's .pill, which is NOT site.css's: heavier, uppercase and
   tracked. Kept exactly, scoped so it cannot reach the site-wide pill. */
.cmplistpage .pill{display:inline-block;font-size:.68rem;font-weight:650;text-transform:uppercase;letter-spacing:.09em;
  border:1px solid var(--edge2);border-radius:999px;padding:2px 9px;color:var(--faint)}
.cmplistpage .pill.open{color:var(--gold);border-color:var(--gold)}

/* ---- one campaign, /campaign/{slug} ------------------------ */

.cmponepage .cmpdisc{color:var(--gold-soft);font-size:1rem;line-height:1.5;margin:0 0 6px;overflow-wrap:anywhere}
.cmponepage .cmpfacts{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--faint);font-size:.84rem;margin:0 0 16px;min-width:0}
.cmponepage .thresh{border:1px solid var(--gold);border-radius:12px;padding:14px 16px;margin:18px 0 0;line-height:1.6}
.cmponepage .thresh .k{color:var(--gold);font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;margin-bottom:6px}
.cmponepage .qlist{list-style:none;margin:16px 0 0;padding:0}
.cmponepage .q{padding:16px 0;border-bottom:1px solid var(--edge);min-width:0}
.cmponepage .q:last-child{border-bottom:0}
.cmponepage .q .qt{font-weight:650;font-size:1.02rem;line-height:1.45;overflow-wrap:anywhere}
.cmponepage .q .qa{color:var(--faint);font-size:.8rem;margin-top:3px}
.cmponepage .q .qk{color:var(--faint);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;margin-top:10px}
.cmponepage .q .qv{color:var(--muted);font-size:.93rem;line-height:1.55;margin-top:3px;overflow-wrap:anywhere}
.cmponepage .q .qnote{color:var(--ink);font-size:.93rem;line-height:1.55;margin-top:8px;
  border-left:2px solid var(--gold);padding-left:11px}
.cmponepage .q.settled .qt{color:var(--shared)}
.cmponepage .qsettled{display:inline-block;font-size:.68rem;font-weight:650;text-transform:uppercase;letter-spacing:.09em;
  border:1px solid var(--shared);color:var(--shared);border-radius:999px;padding:2px 9px;margin-left:6px}
.cmponepage .credits{list-style:none;margin:14px 0 0;padding:0}
/* > div, where the first edition wrote li: the credits are a div[role=list] of
   div[role=listitem] now, because panel-speak speaks an <li> WHOLE and a credit
   is three lines. Same declarations, same separators. */
.cmponepage .credits > div{padding:10px 0;border-bottom:1px solid var(--edge);min-width:0}
.cmponepage .credits > div:last-child{border-bottom:0}
.cmponepage .credits .cn{font-weight:650;overflow-wrap:anywhere}
.cmponepage .credits .cd{color:var(--faint);font-size:.82rem}
.cmponepage .credits .cc{color:var(--muted);font-size:.9rem;line-height:1.5;margin-top:4px}
.cmponepage .sharerow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:20px 0 0}
.cmponepage .shareurl{flex:1 1 18rem;min-width:0;background:var(--ground);border:1px solid var(--edge2);color:var(--ink);
          border-radius:9px;padding:8px 10px}

/* h2.sechd2, where the first edition wrote h3.sechd2. The section headings
   moved up a level because each now opens a <section class="sec">, which is
   what js/panel-speak.js walks: a heading it cannot find is a section a
   listener is never told the name of. The declarations are the first
   edition's verbatim, so the type scale and spacing are unchanged. */
.cmponepage h2.sechd2{font-family:var(--serif);font-size:1.22rem;margin:28px 0 0;font-weight:600}

/* A .sec draws a panel only under .dvpage (site.css:1442). On this page it is
   an invisible read-aloud hook, so it must not introduce spacing of its own. */
.cmponepage .sec,.cmplistpage .sec{margin:0;padding:0;background:none;border:0}
