/* ============================================================
   KPSGILL PUBLICATION DESIGN SYSTEM
   20 September 2026 · v1

   One token sheet for the whole publication. Every colour, type step,
   space, radius and evidence label comes from here.

   Written after a defect audit found six competing navigation rules in
   the legacy stylesheet, two of which cancelled each other out. The rule
   that prevents recurrence: one owner per property, declared once, here.

   Editorial palette — paper ground, near-black ink, one accent.
   Not corporate-healthcare blue. Not startup gradient. Not dashboard.
   ============================================================ */

:root {
  /* ---- ink and paper ---- */
  --k-paper:        #faf8f4;   /* warm page ground */
  --k-paper-2:      #f2efe8;   /* recessed surface */
  --k-paper-3:      #e9e4da;   /* rules, dividers */
  --k-ink:          #14110d;   /* body text, near-black warm */
  --k-ink-2:        #3d382f;   /* secondary text */
  --k-ink-3:        #6b6459;   /* meta, captions */

  /* ---- the single KPSGILL accent ---- */
  --k-accent:       #8c3a1f;   /* oxide red — editorial, not tabloid */
  --k-accent-deep:  #6b2a14;   /* pressed, and text-safe on paper */
  --k-accent-tint:  #f6ece7;   /* wash */

  /* ---- authority ground (mastheads, investigation chrome) ---- */
  --k-authority:    #17242f;
  --k-authority-2:  #22323f;

  /* ---- evidentiary semantics.
     NEVER the only carrier of meaning — every label ships with text. ---- */
  --k-established:  #2f5d3f;   --k-established-bg: #eaf1ec;
  --k-contractual:  #2b4a63;   --k-contractual-bg: #e9eff4;
  --k-alleged:      #7a5a12;   --k-alleged-bg:     #f7f1de;
  --k-disputed:     #8c3a1f;   --k-disputed-bg:    #f8ece8;
  --k-unresolved:   #4a4453;   --k-unresolved-bg:  #efedf2;
  --k-historical:   #5a5248;   --k-historical-bg:  #f1eee9;

  /* ---- type. Fluid, reading-first. ---- */
  --k-serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --k-sans:  system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --k-mono:  "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  --k-t-display: clamp(2.6rem, 1.6rem + 3.4vw, 4.4rem);
  --k-t-h1:      clamp(2.1rem, 1.5rem + 2.2vw, 3.2rem);
  --k-t-h2:      clamp(1.45rem, 1.2rem + 0.9vw, 1.9rem);
  --k-t-h3:      clamp(1.15rem, 1.05rem + 0.4vw, 1.35rem);
  --k-t-body:    clamp(1.05rem, 1rem + 0.22vw, 1.18rem);
  --k-t-small:   0.875rem;
  --k-t-micro:   0.75rem;

  --k-lh-tight: 1.12;
  --k-lh-body:  1.62;

  /* ---- measure. 65–78 characters for prose. ---- */
  --k-measure:     68ch;
  --k-measure-wide: 82ch;
  --k-container:   1180px;
  --k-container-wide: 1400px;

  /* ---- space: a 4px base on a modular climb ---- */
  --k-1: 4px;   --k-2: 8px;   --k-3: 12px;  --k-4: 16px;
  --k-5: 24px;  --k-6: 32px;  --k-7: 48px;  --k-8: 64px;
  --k-9: 96px;  --k-10: 128px;

  --k-r-sm: 4px; --k-r-md: 8px; --k-r-lg: 14px; --k-r-pill: 999px;

  --k-shadow-sm: 0 1px 2px rgba(20,17,13,.06);
  --k-shadow-md: 0 2px 10px rgba(20,17,13,.08);

  --k-motion: 180ms cubic-bezier(.2,.6,.3,1);
}

/* ---- dark mode: re-pitched, not inverted ---- */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --k-paper: #14151a; --k-paper-2: #1b1d23; --k-paper-3: #2a2d35;
    --k-ink: #ece8e1;   --k-ink-2: #bdb7ad;   --k-ink-3: #8d877c;
    --k-accent: #d9714d; --k-accent-deep: #e8886a;
    --k-accent-tint: #2b1d17;
    --k-authority: #0f1620; --k-authority-2: #18222d;
    --k-established-bg:#1b2a20; --k-contractual-bg:#172531; --k-alleged-bg:#2b2413;
    --k-disputed-bg:#2b1a14; --k-unresolved-bg:#22202a; --k-historical-bg:#23211d;
    --k-established:#8fc4a1; --k-contractual:#93bcd8; --k-alleged:#d9bd6a;
    --k-disputed:#e09277; --k-unresolved:#b3aac2; --k-historical:#b5ac9f;
  }
}
[data-theme="dark"] {
  --k-paper: #14151a; --k-paper-2: #1b1d23; --k-paper-3: #2a2d35;
  --k-ink: #ece8e1; --k-ink-2: #bdb7ad; --k-ink-3: #8d877c;
  --k-accent: #d9714d; --k-accent-deep: #e8886a; --k-accent-tint: #2b1d17;
  --k-authority: #0f1620; --k-authority-2: #18222d;
  --k-established-bg:#1b2a20; --k-contractual-bg:#172531; --k-alleged-bg:#2b2413;
  --k-disputed-bg:#2b1a14; --k-unresolved-bg:#22202a; --k-historical-bg:#23211d;
  --k-established:#8fc4a1; --k-contractual:#93bcd8; --k-alleged:#d9bd6a;
  --k-disputed:#e09277; --k-unresolved:#b3aac2; --k-historical:#b5ac9f;
}

/* ============================================================
   BASE
   ============================================================ */
.k { background: var(--k-paper); color: var(--k-ink); font-family: var(--k-sans); }
.k *, .k *::before, .k *::after { box-sizing: border-box; }

.k-wrap { max-width: var(--k-container); margin: 0 auto; padding: 0 var(--k-5); }
.k-wrap-wide { max-width: var(--k-container-wide); margin: 0 auto; padding: 0 var(--k-5); }

.k-prose { max-width: var(--k-measure); font-size: var(--k-t-body); line-height: var(--k-lh-body); }
.k-prose p { margin: 0 0 var(--k-5); text-wrap: pretty; }

.k-display { font-family: var(--k-serif); font-size: var(--k-t-display); line-height: var(--k-lh-tight);
             letter-spacing: -.015em; margin: 0; font-weight: 400; }
.k-h2 { font-family: var(--k-serif); font-size: var(--k-t-h2); line-height: 1.2; margin: 0 0 var(--k-3);
        font-weight: 400; letter-spacing: -.008em; }
.k-h3 { font-family: var(--k-sans); font-size: var(--k-t-h3); line-height: 1.3; margin: 0 0 var(--k-2);
        font-weight: 650; }

.k-eyebrow { font: 650 var(--k-t-micro)/1.2 var(--k-sans); letter-spacing: .14em;
             text-transform: uppercase; color: var(--k-accent-deep); }
.k-meta { font: 400 var(--k-t-small)/1.5 var(--k-mono); color: var(--k-ink-3); }

.k a { color: var(--k-accent-deep); text-decoration-thickness: 1px; text-underline-offset: 2px; }
.k a:hover { color: var(--k-accent); }
.k :focus-visible { outline: 2px solid var(--k-accent); outline-offset: 3px; border-radius: 2px; }

/* ============================================================
   EVIDENCE LABELS — text + colour, never colour alone
   ============================================================ */
.k-claim {
  display: inline-flex; align-items: center; gap: var(--k-1);
  font: 650 var(--k-t-micro)/1.35 var(--k-sans); letter-spacing: .07em;
  text-transform: uppercase; padding: 3px 9px; border-radius: var(--k-r-sm);
  border: 1px solid currentColor;
}
.k-claim::before { content: ""; width: 6px; height: 6px; border-radius: 50%;
                   background: currentColor; flex: 0 0 auto; }
.k-claim--established { color: var(--k-established); background: var(--k-established-bg); }
.k-claim--contractual { color: var(--k-contractual); background: var(--k-contractual-bg); }
.k-claim--alleged     { color: var(--k-alleged);     background: var(--k-alleged-bg); }
.k-claim--disputed    { color: var(--k-disputed);    background: var(--k-disputed-bg); }
.k-claim--unresolved  { color: var(--k-unresolved);  background: var(--k-unresolved-bg); }
.k-claim--historical  { color: var(--k-historical);  background: var(--k-historical-bg); }

/* ============================================================
   COMPONENTS
   ============================================================ */

/* KeyFinding */
.k-finding { border-left: 3px solid var(--k-accent); padding: var(--k-2) 0 var(--k-2) var(--k-5);
             margin: 0 0 var(--k-5); }
.k-finding h4 { font: 650 1.05rem/1.35 var(--k-sans); margin: 0 0 var(--k-2); color: var(--k-ink); }
.k-finding p { font-size: 1rem; line-height: 1.6; margin: 0; color: var(--k-ink-2); }

/* EvidenceCard / SourceDocument */
.k-evidence { background: var(--k-paper-2); border: 1px solid var(--k-paper-3);
              border-radius: var(--k-r-md); padding: var(--k-5); margin: 0 0 var(--k-4); }
.k-evidence__head { display: flex; flex-wrap: wrap; gap: var(--k-2) var(--k-3);
                    align-items: baseline; margin-bottom: var(--k-3); }
.k-evidence__title { font: 650 1rem/1.35 var(--k-sans); margin: 0; }
.k-evidence__cite { font: 400 var(--k-t-small)/1.5 var(--k-mono); color: var(--k-ink-3);
                    margin: 0 0 var(--k-3); }
.k-evidence__row { display: grid; grid-template-columns: auto 1fr; gap: var(--k-2) var(--k-4);
                   font-size: .95rem; line-height: 1.55; }
.k-evidence__row dt { font: 650 var(--k-t-micro)/1.6 var(--k-sans); letter-spacing: .08em;
                      text-transform: uppercase; color: var(--k-ink-3); white-space: nowrap; }
.k-evidence__row dd { margin: 0; color: var(--k-ink-2); }

/* CounterEvidence — visually distinct so it cannot be skimmed past */
.k-counter { border: 1px solid var(--k-alleged); background: var(--k-alleged-bg);
             border-radius: var(--k-r-md); padding: var(--k-5); margin: 0 0 var(--k-4); }
.k-counter__label { font: 650 var(--k-t-micro)/1.3 var(--k-sans); letter-spacing: .1em;
                    text-transform: uppercase; color: var(--k-alleged); margin-bottom: var(--k-2); }

/* OpenQuestion / FalsificationTest */
.k-open { border: 1px dashed var(--k-unresolved); background: var(--k-unresolved-bg);
          border-radius: var(--k-r-md); padding: var(--k-5); margin: 0 0 var(--k-4); }

/* Cards: Case / Entity / County / Contract */
.k-card { background: var(--k-paper); border: 1px solid var(--k-paper-3);
          border-radius: var(--k-r-md); padding: var(--k-5); }
.k-card__kicker { font: 650 var(--k-t-micro)/1.2 var(--k-sans); letter-spacing: .1em;
                  text-transform: uppercase; color: var(--k-ink-3); margin-bottom: var(--k-2); }
.k-card__title { font: 650 1.05rem/1.3 var(--k-sans); margin: 0 0 var(--k-2); }
.k-card__title a { text-decoration: none; color: var(--k-ink); }
.k-card__title a:hover { color: var(--k-accent-deep); text-decoration: underline; }
.k-card__body { font-size: .95rem; line-height: 1.55; color: var(--k-ink-2); margin: 0; }
.k-card__meta { font: 400 var(--k-t-micro)/1.5 var(--k-mono); color: var(--k-ink-3);
                margin: var(--k-3) 0 0; }

.k-grid { display: grid; gap: var(--k-4); }
.k-grid--2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.k-grid--3 { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
.k-grid--4 { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }

/* Chapter card — the story-map unit */
.k-chapter { display: block; background: var(--k-paper); border: 1px solid var(--k-paper-3);
             border-radius: var(--k-r-md); padding: var(--k-5); text-decoration: none;
             transition: border-color var(--k-motion), transform var(--k-motion); }
.k-chapter:hover { border-color: var(--k-accent); transform: translateY(-2px); }
.k-chapter__num { font: 400 var(--k-t-micro)/1 var(--k-mono); color: var(--k-accent-deep);
                  letter-spacing: .1em; }
.k-chapter__title { font-family: var(--k-serif); font-size: 1.3rem; line-height: 1.22;
                    margin: var(--k-2) 0 var(--k-2); color: var(--k-ink); font-weight: 400; }
.k-chapter__q { font-size: .95rem; line-height: 1.55; color: var(--k-ink-2); margin: 0 0 var(--k-3); }
.k-chapter__count { font: 400 var(--k-t-micro)/1.4 var(--k-mono); color: var(--k-ink-3); }

/* Timeline */
.k-timeline { list-style: none; margin: 0; padding: 0 0 0 var(--k-5);
              border-left: 2px solid var(--k-paper-3); }
.k-timeline li { position: relative; padding: 0 0 var(--k-5) var(--k-5); }
.k-timeline li::before { content: ""; position: absolute; left: calc(-1 * var(--k-5) - 5px); top: 6px;
                         width: 9px; height: 9px; border-radius: 50%; background: var(--k-accent);
                         box-shadow: 0 0 0 3px var(--k-paper); }
.k-timeline time { display: block; font: 650 var(--k-t-small)/1.4 var(--k-mono);
                   color: var(--k-accent-deep); margin-bottom: 2px; }
.k-timeline p { margin: 0; font-size: .97rem; line-height: 1.55; color: var(--k-ink-2); }

/* Stat row */
.k-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
           gap: var(--k-3); }
.k-stat { background: var(--k-paper-2); border-radius: var(--k-r-md); padding: var(--k-4); }
.k-stat strong { display: block; font-family: var(--k-serif); font-size: 2rem; line-height: 1;
                 color: var(--k-ink); font-weight: 400; }
.k-stat span { display: block; font: 400 var(--k-t-small)/1.4 var(--k-sans);
               color: var(--k-ink-3); margin-top: var(--k-2); }

/* Section rule */
.k-section { margin: var(--k-9) 0 0; }
.k-section__head { border-top: 2px solid var(--k-ink); padding-top: var(--k-3);
                   margin-bottom: var(--k-5); }

/* Tables — scroll on phones rather than overflow */
.k-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 0 var(--k-5); }
.k-table { width: 100%; border-collapse: collapse; font-size: .95rem; min-width: 480px; }
.k-table th { text-align: left; font: 650 var(--k-t-micro)/1.4 var(--k-sans);
              letter-spacing: .08em; text-transform: uppercase; color: var(--k-ink-3);
              border-bottom: 2px solid var(--k-paper-3); padding: var(--k-2) var(--k-3); }
.k-table td { padding: var(--k-3); border-bottom: 1px solid var(--k-paper-3);
              vertical-align: top; line-height: 1.5; }

@media (prefers-reduced-motion: reduce) {
  .k *, .k *::before, .k *::after { transition: none !important; animation: none !important; }
  .k-chapter:hover { transform: none; }
}
