/* ==========================================================================
   Design tokens — single source of truth.
   Referenced by diagnosis_index.html (<link>) and article-common.css (@import),
   which together cover every page on the site. Do not re-declare any of these
   variables' *values* in either file's own :root block — add new shared tokens
   here first, then reference via var(--token-name). Page-specific tokens that
   only one surface needs (e.g. diagnosis_index.html's hero font sizes, or
   article-common.css's h1-h3 heading sizes) stay local to that file's own
   :root, since they're not shared and don't belong in a "shared" file.
   Checked by tools/check_design_tokens.py — see that script before editing.

   --font-body/--font-small are the exception to "font sizes stay local":
   both diagnosis_index.html and article-common.css independently used the
   literal values 1rem/.88rem dozens of times each (not just within one
   file), so they were promoted here 2026-08-05 instead of staying
   duplicated as two same-valued-but-differently-scoped local tokens.

   --font-xs/-2xs/-3xs (added 2026-08-05) are a plain SIZE scale, not a
   semantic one — deliberately NOT named --font-caption/--font-note/etc.
   A frequency audit of the ~250 raw font-size literals outside :root
   found these 3 values (.78rem/.76rem/.72rem) reused 21/18/14 times
   respectively across wildly different UI roles (badges, table cells,
   buttons, prose, labels) with no consistent semantic pattern — so a
   purpose-based name would misrepresent them as a designed hierarchy
   they aren't. Values below this frequency threshold (~10-20 more
   distinct rem values, each used 3-9 times) were deliberately left
   un-tokenized: they read as organic drift between near-identical sizes
   (e.g. .68/.7/.72rem — a 0.03px difference) rather than a reusable
   concept, and inventing a token per value would just be a longer list
   of magic numbers with extra indirection, not real consolidation.
   Collapsing those into fewer canonical sizes would change actual
   rendered sizes (not a pure var()-wrap) and needs owner sign-off first,
   same as the body-text-similarity trimming call elsewhere in this repo.
   ========================================================================== */
:root{
  --primary:#D97706;--primary-light:#FFF7ED;
  --navy:#18233A;--navy-light:#263D66;
  --gray-100:#F0F2F5;--gray-200:#E2E8F0;--gray-400:#94A3B8;--gray-600:#475569;--gray-800:#1E293B;
  --green:#16A34A;--green-light:#DCFCE7;--amber:#D97706;--amber-light:#FEF3C7;
  --text-primary:#243044;--text-secondary:#5F6B7A;--text-tertiary:#8A94A6;
  --paper:#FBF8F2;--paper-soft:#F8F6F1;--paper-blue:#F1F6FA;
  --font-serif:"Yu Mincho","Hiragino Mincho ProN","YuMincho","Noto Serif JP",serif;
  --font-body:1.06rem;
  --font-small:.94rem;
  --font-xs:.84rem;
  --font-2xs:.82rem;
  --font-3xs:.78rem;
  --font-4xs:.68rem;
  --font-5xs:.64rem;
  --font-6xs:.62rem;
  --font-7xs:.6rem;
  --font-kicker:.75rem;
  --font-note-sm:.77rem;
  --font-table-text:.79rem;
  --font-label-sm:.8rem;
  --font-body-sm:.82rem;
  --font-body-md:.84rem;
  --font-chip:.85rem;
  --font-body-md-2:.86rem;
  --font-body-lg:.9rem;
  --font-lead:.92rem;
  --font-body:.94rem;
  --font-body-strong:.95rem;
  --font-body-xl:.96rem;
  --font-button:.98rem;
  --font-callout:1.02rem;
  --font-title-sm:1.05rem;
  --font-brand:1.08rem;
  --font-avatar:1.1rem;
  --font-title-md:1.12rem;
  --font-title-lg:1.14rem;
  --font-title-xl:1.16rem;
  --font-title-xl-2:1.18rem;
  --font-close:1.2rem;
  --font-icon-lg:1.25rem;
  --font-title-2xl:1.32rem;
  --font-score:1.35rem;
  --font-icon-xl:1.4rem;
  --font-price:1.45rem;
  --font-banner-icon:1.5rem;
  --font-hero-icon:1.65rem;
  --font-icon-2xl:1.9rem;
  --font-icon-3xl:2rem;
  --font-body-base:18px;
  --font-control:16px;
  --font-emphasis:.82em;
  --font-caption-sm:.71rem;
  --font-caption-xs:.65rem;
  --font-caption-xxs:.66rem;
  --font-hero-title:clamp(2rem,4vw,3.35rem);
  --font-hero-copy:clamp(1.05rem,1.36vw,1.16rem);
  --font-map-title:clamp(1.16rem,2.6vw,1.5rem);
  --font-result-title:clamp(1.45rem,3.8vw,2.15rem);
  --font-cta-title:clamp(1.12rem,3vw,1.4rem);
  --font-tldr-label:clamp(1.15rem,3vw,1.42rem);
  --font-city-contact-title:clamp(1.08rem,3vw,1.38rem);
  --font-article-assist-title:clamp(1.12rem,3vw,1.38rem);
  --font-article-end-title:clamp(1.16rem,3vw,1.44rem);
  --line-body:1.85;
  --radius-card:16px;
  --radius-control:10px;
  --shadow-card:0 18px 45px -24px rgba(15,23,42,.18);
  --shadow-card-hover:0 26px 58px -28px rgba(15,23,42,.24);
  --shadow-cta:0 8px 20px -4px rgba(217,119,6,.35);
  --shadow-cta-hover:0 12px 24px -4px rgba(217,119,6,.45);
  --border-soft:#F1F5F9;
  --accent-amber:#D97706;
  --accent-amber-dark:#B45309;
  --cat-demolition:#C05621;
  --cat-sale:#2563EB;
  --cat-management:#15803D;
  --cat-inheritance:#7C3AED;
  --cat-subsidy:#B45309;
  --cat-cleanup:#BE185D;
  --motion-fast:all .2s cubic-bezier(.4,0,.2,1);
}
