@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&family=Noto+Sans+Mono:wght@400;700&display=swap");
/* ============================================================
   DADS 共通トークン（自動生成。直接編集しない）
   生成: code/dads-tools/gen_tokens.py
   原本: documents/design/dads/upstream/tokens/tokens.css
         （@digital-go-jp/design-tokens 2.0.1 / DADS v2.18.0。MIT）
   使い方: <style> の先頭にこのファイルを丸ごと置く（@import は先頭でないと効かない）
   ダーク: DADS 公式には無い。原色スケールの番号を反転した派生値。
           * 付きは反転ではない手動の値（理由は右の説明）
   役割         ライト                             ダーク                             説明
   --bg             color-neutral-white                color-neutral-solid-gray-900 *     背景。ダークは反転（白→黒）だと影と面の区別がつかないため gray-900 に調整（手動）
   --surface        color-neutral-solid-gray-50        color-neutral-solid-gray-800 *     一段上の面（カード・表の見出し行）。反転だと背景と同じ gray-900 になるので一段ずらす（手動）
   --surface-2      color-neutral-solid-gray-100       color-neutral-solid-gray-700 *     さらに一段上の面。surface と同じ理由で一段ずらす（手動）
   --text           color-neutral-solid-gray-800       color-neutral-solid-gray-100       本文。見本集で最多（42回）
   --text-strong    color-neutral-solid-gray-900       color-neutral-solid-gray-50        見出し・強調
   --subtext        color-neutral-solid-gray-600       color-neutral-solid-gray-200 *     補助テキスト（4.5:1 を満たす最も淡いグレーは gray-536）。ダークは反転の gray-300 だと surface-2 の上で 4.03:1 に割るので gray-200（手動）
   --border         color-neutral-solid-gray-600       color-neutral-solid-gray-300       UI の枠線（入力欄など）。白地 3:1 の境界は gray-420 だが surface（gray-50）上で 3:1 を割るので gray-600
   --line           color-neutral-solid-gray-200       color-neutral-solid-gray-700       装飾の区切り線。情報を担わないので 3:1 の対象外
   --accent         color-primitive-blue-900           color-primitive-blue-300           塗りボタン・強調。見本集の button は key-900（= blue-900）
   --accent-hover   color-primitive-blue-1000          color-primitive-blue-200           塗りボタンのホバー
   --accent-active  color-primitive-blue-1200          color-primitive-blue-50            塗りボタンの押下
   --on-accent      color-neutral-white                color-neutral-solid-gray-900 *     塗りボタンの文字。ダークは塗りが明るくなるので暗い文字に（手動）
   --accent-tint    color-primitive-blue-50            color-primitive-blue-1200          キーカラーの淡い面（選択中の行など）
   --link           color-primitive-blue-1000          color-primitive-blue-200           リンク
   --link-visited   color-primitive-magenta-900        color-primitive-magenta-300        訪問済みリンク
   --link-hover     color-primitive-blue-900           color-primitive-blue-300           ホバー中のリンク
   --link-active    color-primitive-orange-800         color-primitive-orange-400         押下中のリンク
   --focus-ring     color-primitive-yellow-300         color-primitive-yellow-300 *       フォーカスの黄色。DADS は変更禁止なのでダークでも同じ（手動）
   --focus-outline  color-neutral-black                color-neutral-black *              フォーカスの黒枠。DADS は変更禁止なのでダークでも同じ（手動）
   --success        color-primitive-green-800          color-primitive-green-400          成功（semantic-success-2）。success-1 は白地で 4.5:1 未満なので文字には使わない
   --success-tint   color-primitive-green-50           color-primitive-green-1200         成功の淡い面
   --error          color-primitive-red-900            color-primitive-red-300            エラー（semantic-error-2）。error-1 は白地なら 4.5:1 を満たすが淡い面の上で割るので濃い方
   --error-tint     color-primitive-red-50             color-primitive-red-1200           エラーの淡い面
   --warning        color-primitive-yellow-1000        color-primitive-yellow-200         警告。semantic-warning-yellow-2（yellow-900）でも淡い面の上で 4.5:1 を割るので一段濃くした（カラー原本「色相を保てば明度・彩度を調整できる」に基づく調整）
   --warning-tint   color-primitive-yellow-50          color-primitive-yellow-1200        警告の淡い面
   --info           color-primitive-blue-1000          color-primitive-blue-200           情報。DADS に情報の意味づけ色は無いのでキーカラーを使う
   --info-tint      color-primitive-blue-50            color-primitive-blue-1200          情報の淡い面
   --disabled-bg    color-neutral-solid-gray-300       color-neutral-solid-gray-600       無効なボタンの塗り（見本集 button.css）
   --disabled-text  color-neutral-solid-gray-50        color-neutral-solid-gray-900       無効なボタンの文字。コントラスト要件の対象外
   ============================================================ */
:root {
  color-scheme: light dark;
  --color-primitive-blue-50: #e8f1fe;
  --color-primitive-blue-100: #d9e6ff;
  --color-primitive-blue-200: #c5d7fb;
  --color-primitive-blue-300: #9db7f9;
  --color-primitive-blue-400: #7096f8;
  --color-primitive-blue-500: #4979f5;
  --color-primitive-blue-600: #3460fb;
  --color-primitive-blue-700: #264af4;
  --color-primitive-blue-800: #0031d8;
  --color-primitive-blue-900: #0017c1;
  --color-primitive-blue-1000: #00118f;
  --color-primitive-blue-1100: #000071;
  --color-primitive-blue-1200: #000060;
  --color-primitive-light-blue-50: #f0f9ff;
  --color-primitive-light-blue-100: #dcf0ff;
  --color-primitive-light-blue-200: #c0e4ff;
  --color-primitive-light-blue-300: #97d3ff;
  --color-primitive-light-blue-400: #57b8ff;
  --color-primitive-light-blue-500: #39abff;
  --color-primitive-light-blue-600: #008bf2;
  --color-primitive-light-blue-700: #0877d7;
  --color-primitive-light-blue-800: #0066be;
  --color-primitive-light-blue-900: #0055ad;
  --color-primitive-light-blue-1000: #00428c;
  --color-primitive-light-blue-1100: #00316a;
  --color-primitive-light-blue-1200: #00234b;
  --color-primitive-cyan-50: #e9f7f9;
  --color-primitive-cyan-100: #c8f8ff;
  --color-primitive-cyan-200: #99f2ff;
  --color-primitive-cyan-300: #79e2f2;
  --color-primitive-cyan-400: #2bc8e4;
  --color-primitive-cyan-500: #01b7d6;
  --color-primitive-cyan-600: #00a3bf;
  --color-primitive-cyan-700: #008da6;
  --color-primitive-cyan-800: #008299;
  --color-primitive-cyan-900: #006f83;
  --color-primitive-cyan-1000: #006173;
  --color-primitive-cyan-1100: #004c59;
  --color-primitive-cyan-1200: #003741;
  --color-primitive-green-50: #e6f5ec;
  --color-primitive-green-100: #c2e5d1;
  --color-primitive-green-200: #9bd4b5;
  --color-primitive-green-300: #71c598;
  --color-primitive-green-400: #51b883;
  --color-primitive-green-500: #2cac6e;
  --color-primitive-green-600: #259d63;
  --color-primitive-green-700: #1d8b56;
  --color-primitive-green-800: #197a4b;
  --color-primitive-green-900: #115a36;
  --color-primitive-green-1000: #0c472a;
  --color-primitive-green-1100: #08351f;
  --color-primitive-green-1200: #032213;
  --color-primitive-lime-50: #ebfad9;
  --color-primitive-lime-100: #d0f5a2;
  --color-primitive-lime-200: #c0f354;
  --color-primitive-lime-300: #ade830;
  --color-primitive-lime-400: #9ddd15;
  --color-primitive-lime-500: #8cc80c;
  --color-primitive-lime-600: #7eb40d;
  --color-primitive-lime-700: #6fa104;
  --color-primitive-lime-800: #618e00;
  --color-primitive-lime-900: #507500;
  --color-primitive-lime-1000: #3e5a00;
  --color-primitive-lime-1100: #2c4100;
  --color-primitive-lime-1200: #1e2d00;
  --color-primitive-yellow-50: #fbf5e0;
  --color-primitive-yellow-100: #fff0b3;
  --color-primitive-yellow-200: #ffe380;
  --color-primitive-yellow-300: #ffd43d;
  --color-primitive-yellow-400: #ffc700;
  --color-primitive-yellow-500: #ebb700;
  --color-primitive-yellow-600: #d2a400;
  --color-primitive-yellow-700: #b78f00;
  --color-primitive-yellow-800: #a58000;
  --color-primitive-yellow-900: #927200;
  --color-primitive-yellow-1000: #806300;
  --color-primitive-yellow-1100: #6e5600;
  --color-primitive-yellow-1200: #604b00;
  --color-primitive-orange-50: #ffeee2;
  --color-primitive-orange-100: #ffdfca;
  --color-primitive-orange-200: #ffc199;
  --color-primitive-orange-300: #ffa66d;
  --color-primitive-orange-400: #ff8d44;
  --color-primitive-orange-500: #ff7628;
  --color-primitive-orange-600: #fb5b01;
  --color-primitive-orange-700: #e25100;
  --color-primitive-orange-800: #c74700;
  --color-primitive-orange-900: #ac3e00;
  --color-primitive-orange-1000: #8b3200;
  --color-primitive-orange-1100: #6d2700;
  --color-primitive-orange-1200: #541e00;
  --color-primitive-red-50: #fdeeee;
  --color-primitive-red-100: #ffdada;
  --color-primitive-red-200: #ffbbbb;
  --color-primitive-red-300: #ff9696;
  --color-primitive-red-400: #ff7171;
  --color-primitive-red-500: #ff5454;
  --color-primitive-red-600: #fe3939;
  --color-primitive-red-700: #fa0000;
  --color-primitive-red-800: #ec0000;
  --color-primitive-red-900: #ce0000;
  --color-primitive-red-1000: #a90000;
  --color-primitive-red-1100: #850000;
  --color-primitive-red-1200: #620000;
  --color-primitive-magenta-50: #f3e5f4;
  --color-primitive-magenta-100: #ffd0ff;
  --color-primitive-magenta-200: #ffaeff;
  --color-primitive-magenta-300: #ff8eff;
  --color-primitive-magenta-400: #f661f6;
  --color-primitive-magenta-500: #f137f1;
  --color-primitive-magenta-600: #db00db;
  --color-primitive-magenta-700: #c000c0;
  --color-primitive-magenta-800: #aa00aa;
  --color-primitive-magenta-900: #8b008b;
  --color-primitive-magenta-1000: #6c006c;
  --color-primitive-magenta-1100: #500050;
  --color-primitive-magenta-1200: #3b003b;
  --color-primitive-purple-50: #f1eafa;
  --color-primitive-purple-100: #ecddff;
  --color-primitive-purple-200: #ddc2ff;
  --color-primitive-purple-300: #cda6ff;
  --color-primitive-purple-400: #bb87ff;
  --color-primitive-purple-500: #a565f8;
  --color-primitive-purple-600: #8843e1;
  --color-primitive-purple-700: #6f23d0;
  --color-primitive-purple-800: #5c10be;
  --color-primitive-purple-900: #5109ad;
  --color-primitive-purple-1000: #41048e;
  --color-primitive-purple-1100: #30016c;
  --color-primitive-purple-1200: #21004b;
  --color-neutral-white: #ffffff;
  --color-neutral-black: #000000;
  --color-neutral-solid-gray-50: #f2f2f2;
  --color-neutral-solid-gray-100: #e6e6e6;
  --color-neutral-solid-gray-200: #cccccc;
  --color-neutral-solid-gray-300: #b3b3b3;
  --color-neutral-solid-gray-400: #999999;
  --color-neutral-solid-gray-420: #949494;
  --color-neutral-solid-gray-500: #7f7f7f;
  --color-neutral-solid-gray-536: #767676;
  --color-neutral-solid-gray-600: #666666;
  --color-neutral-solid-gray-700: #4d4d4d;
  --color-neutral-solid-gray-800: #333333;
  --color-neutral-solid-gray-900: #1a1a1a;
  --color-neutral-opacity-gray-50: rgba(0, 0, 0, 0.05);
  --color-neutral-opacity-gray-100: rgba(0, 0, 0, 0.1);
  --color-neutral-opacity-gray-200: rgba(0, 0, 0, 0.2);
  --color-neutral-opacity-gray-300: rgba(0, 0, 0, 0.3);
  --color-neutral-opacity-gray-400: rgba(0, 0, 0, 0.4);
  --color-neutral-opacity-gray-420: rgba(0, 0, 0, 0.42);
  --color-neutral-opacity-gray-500: rgba(0, 0, 0, 0.5);
  --color-neutral-opacity-gray-536: rgba(0, 0, 0, 0.54);
  --color-neutral-opacity-gray-600: rgba(0, 0, 0, 0.6);
  --color-neutral-opacity-gray-700: rgba(0, 0, 0, 0.7);
  --color-neutral-opacity-gray-800: rgba(0, 0, 0, 0.8);
  --color-neutral-opacity-gray-900: rgba(0, 0, 0, 0.9);
  --font-weight-400: 400;
  --font-weight-700: 700;
  --font-family-sans: 'Noto Sans JP', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-family-mono: 'Noto Sans Mono', monospace;
  --font-size-14: 0.875rem;
  --font-size-16: 1rem;
  --font-size-17: 1.0625rem;
  --font-size-18: 1.125rem;
  --font-size-20: 1.25rem;
  --font-size-22: 1.375rem;
  --font-size-24: 1.5rem;
  --font-size-26: 1.625rem;
  --font-size-28: 1.75rem;
  --font-size-32: 2rem;
  --font-size-36: 2.25rem;
  --font-size-45: 2.8125rem;
  --font-size-48: 3rem;
  --font-size-57: 3.5625rem;
  --font-size-64: 4rem;
  --line-height-100: 1;
  --line-height-120: 1.2;
  --line-height-130: 1.3;
  --line-height-140: 1.4;
  --line-height-150: 1.5;
  --line-height-160: 1.6;
  --line-height-170: 1.7;
  --line-height-175: 1.75;
  --border-radius-4: 0.25rem;
  --border-radius-6: 0.375rem;
  --border-radius-8: 0.5rem;
  --border-radius-12: 0.75rem;
  --border-radius-16: 1rem;
  --border-radius-24: 1.5rem;
  --border-radius-32: 2rem;
  --border-radius-full: 624.9375rem;
  --elevation-1: 0 2px 8px 1px rgba(0,0,0,0.1), 0 1px 5px 0 rgba(0,0,0,0.3);
  --elevation-2: 0 2px 12px 2px rgba(0,0,0,0.1), 0 1px 6px 0 rgba(0,0,0,0.3);
  --elevation-3: 0 4px 16px 3px rgba(0,0,0,0.1), 0 1px 6px 0 rgba(0,0,0,0.3);
  --elevation-4: 0 6px 20px 4px rgba(0,0,0,0.1), 0 2px 6px 0 rgba(0,0,0,0.3);
  --elevation-5: 0 8px 24px 5px rgba(0,0,0,0.1), 0 2px 10px 0 rgba(0,0,0,0.3);
  --elevation-6: 0 10px 30px 6px rgba(0,0,0,0.1), 0 3px 12px 0 rgba(0,0,0,0.3);
  --elevation-7: 0 12px 36px 7px rgba(0,0,0,0.1), 0 3px 14px 0 rgba(0,0,0,0.3);
  --elevation-8: 0 14px 40px 7px rgba(0,0,0,0.1), 0 3px 16px 0 rgba(0,0,0,0.3);
  --color-semantic-success-1: var(--color-primitive-green-600);
  --color-semantic-success-2: var(--color-primitive-green-800);
  --color-semantic-error-1: var(--color-primitive-red-800);
  --color-semantic-error-2: var(--color-primitive-red-900);
  --color-semantic-warning-yellow-1: var(--color-primitive-yellow-700);
  --color-semantic-warning-yellow-2: var(--color-primitive-yellow-900);
  --color-semantic-warning-orange-1: var(--color-primitive-orange-600);
  --color-semantic-warning-orange-2: var(--color-primitive-orange-800);
  --color-key-50: var(--color-primitive-blue-50);
  --color-key-100: var(--color-primitive-blue-100);
  --color-key-200: var(--color-primitive-blue-200);
  --color-key-300: var(--color-primitive-blue-300);
  --color-key-400: var(--color-primitive-blue-400);
  --color-key-500: var(--color-primitive-blue-500);
  --color-key-600: var(--color-primitive-blue-600);
  --color-key-700: var(--color-primitive-blue-700);
  --color-key-800: var(--color-primitive-blue-800);
  --color-key-900: var(--color-primitive-blue-900);
  --color-key-1000: var(--color-primitive-blue-1000);
  --color-key-1100: var(--color-primitive-blue-1100);
  --color-key-1200: var(--color-primitive-blue-1200);

  /* --- 役割（ライト） --- */
  --bg: var(--color-neutral-white);
  --surface: var(--color-neutral-solid-gray-50);
  --surface-2: var(--color-neutral-solid-gray-100);
  --text: var(--color-neutral-solid-gray-800);
  --text-strong: var(--color-neutral-solid-gray-900);
  --subtext: var(--color-neutral-solid-gray-600);
  --border: var(--color-neutral-solid-gray-600);
  --line: var(--color-neutral-solid-gray-200);
  --accent: var(--color-primitive-blue-900);
  --accent-hover: var(--color-primitive-blue-1000);
  --accent-active: var(--color-primitive-blue-1200);
  --on-accent: var(--color-neutral-white);
  --accent-tint: var(--color-primitive-blue-50);
  --link: var(--color-primitive-blue-1000);
  --link-visited: var(--color-primitive-magenta-900);
  --link-hover: var(--color-primitive-blue-900);
  --link-active: var(--color-primitive-orange-800);
  --focus-ring: var(--color-primitive-yellow-300);
  --focus-outline: var(--color-neutral-black);
  --success: var(--color-primitive-green-800);
  --success-tint: var(--color-primitive-green-50);
  --error: var(--color-primitive-red-900);
  --error-tint: var(--color-primitive-red-50);
  --warning: var(--color-primitive-yellow-1000);
  --warning-tint: var(--color-primitive-yellow-50);
  --info: var(--color-primitive-blue-1000);
  --info-tint: var(--color-primitive-blue-50);
  --disabled-bg: var(--color-neutral-solid-gray-300);
  --disabled-text: var(--color-neutral-solid-gray-50);
  /* --- 別名 --- */
  --font-sans: var(--font-family-sans);
  --font-mono: var(--font-family-mono);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: var(--color-neutral-solid-gray-900);
    --surface: var(--color-neutral-solid-gray-800);
    --surface-2: var(--color-neutral-solid-gray-700);
    --text: var(--color-neutral-solid-gray-100);
    --text-strong: var(--color-neutral-solid-gray-50);
    --subtext: var(--color-neutral-solid-gray-200);
    --border: var(--color-neutral-solid-gray-300);
    --line: var(--color-neutral-solid-gray-700);
    --accent: var(--color-primitive-blue-300);
    --accent-hover: var(--color-primitive-blue-200);
    --accent-active: var(--color-primitive-blue-50);
    --on-accent: var(--color-neutral-solid-gray-900);
    --accent-tint: var(--color-primitive-blue-1200);
    --link: var(--color-primitive-blue-200);
    --link-visited: var(--color-primitive-magenta-300);
    --link-hover: var(--color-primitive-blue-300);
    --link-active: var(--color-primitive-orange-400);
    --focus-ring: var(--color-primitive-yellow-300);
    --focus-outline: var(--color-neutral-black);
    --success: var(--color-primitive-green-400);
    --success-tint: var(--color-primitive-green-1200);
    --error: var(--color-primitive-red-300);
    --error-tint: var(--color-primitive-red-1200);
    --warning: var(--color-primitive-yellow-200);
    --warning-tint: var(--color-primitive-yellow-1200);
    --info: var(--color-primitive-blue-200);
    --info-tint: var(--color-primitive-blue-1200);
    --disabled-bg: var(--color-neutral-solid-gray-600);
    --disabled-text: var(--color-neutral-solid-gray-900);
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: var(--color-neutral-solid-gray-900);
  --surface: var(--color-neutral-solid-gray-800);
  --surface-2: var(--color-neutral-solid-gray-700);
  --text: var(--color-neutral-solid-gray-100);
  --text-strong: var(--color-neutral-solid-gray-50);
  --subtext: var(--color-neutral-solid-gray-200);
  --border: var(--color-neutral-solid-gray-300);
  --line: var(--color-neutral-solid-gray-700);
  --accent: var(--color-primitive-blue-300);
  --accent-hover: var(--color-primitive-blue-200);
  --accent-active: var(--color-primitive-blue-50);
  --on-accent: var(--color-neutral-solid-gray-900);
  --accent-tint: var(--color-primitive-blue-1200);
  --link: var(--color-primitive-blue-200);
  --link-visited: var(--color-primitive-magenta-300);
  --link-hover: var(--color-primitive-blue-300);
  --link-active: var(--color-primitive-orange-400);
  --focus-ring: var(--color-primitive-yellow-300);
  --focus-outline: var(--color-neutral-black);
  --success: var(--color-primitive-green-400);
  --success-tint: var(--color-primitive-green-1200);
  --error: var(--color-primitive-red-300);
  --error-tint: var(--color-primitive-red-1200);
  --warning: var(--color-primitive-yellow-200);
  --warning-tint: var(--color-primitive-yellow-1200);
  --info: var(--color-primitive-blue-200);
  --info-tint: var(--color-primitive-blue-1200);
  --disabled-bg: var(--color-neutral-solid-gray-600);
  --disabled-text: var(--color-neutral-solid-gray-900);
}
:root[data-theme="light"] {
  color-scheme: light;
}
/* --- ベース（前景色と背景色を必ず両方指定する: DADS カラー原本「前景色と背景色の両方を指定する」） --- */
html { font-family: var(--font-family-sans); }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-size: var(--font-size-16);
  line-height: var(--line-height-170);
}
a:any-link { color: var(--link); text-decoration: underline; text-decoration-thickness: calc(1 / 16 * 1rem); text-underline-offset: calc(3 / 16 * 1rem); }
a:visited { color: var(--link-visited); }
@media (hover: hover) { a:hover { color: var(--link-hover); text-decoration-thickness: calc(3 / 16 * 1rem); } }
a:active { color: var(--link-active); }
:focus-visible {
  outline: calc(4 / 16 * 1rem) solid var(--focus-outline);
  outline-offset: calc(2 / 16 * 1rem);
  box-shadow: 0 0 0 calc(2 / 16 * 1rem) var(--focus-ring);
  border-radius: calc(4 / 16 * 1rem);
}

/* AoE4 パッチの推移。色は dads-tokens.css の役割の変数だけで書く（build.py が先頭に連結する） */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: "Noto Sans JP", sans-serif;
  font-size: 16px;
  line-height: 1.75;
}
a { color: var(--link); }
a:visited { color: var(--link-visited); }
a:hover { color: var(--link-hover); }
a:focus-visible, button:focus-visible, .heat-wrap:focus-visible {
  outline: 4px solid var(--focus-ring);
  outline-offset: 2px;
}
.wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
h1, h2, h3, h4 { color: var(--text-strong); line-height: 1.4; }
h1 { font-size: 2rem; margin: 24px 0 8px; }
h2 { font-size: 1.5rem; margin: 40px 0 12px; padding-bottom: 6px; border-bottom: 1px solid var(--line); }
h3 { font-size: 1.2rem; }
.small, .crumb, .foot { color: var(--subtext); font-size: 1rem; }
.lead { font-size: 1.1rem; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* header */
.top { background: var(--surface); border-bottom: 1px solid var(--line); }
.bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding-top: 10px; padding-bottom: 10px; }
.brand { font-weight: 700; color: var(--text-strong); text-decoration: none; }
.brand:visited { color: var(--text-strong); }
.nav { display: flex; flex-wrap: wrap; gap: 4px 14px; flex: 1; }
.theme {
  font: inherit; font-size: 1rem; color: var(--text); background: var(--bg);
  border: 1px solid var(--border); border-radius: 6px; padding: 4px 12px; cursor: pointer;
}
.foot { border-top: 1px solid var(--line); margin-top: 48px; padding-top: 16px; padding-bottom: 32px; }

/* verdict marks */
.up { color: var(--success); font-weight: 700; }
.down { color: var(--error); font-weight: 700; }
.oth { color: var(--subtext); }
.legend { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.chip {
  display: inline-flex; gap: 6px; align-items: baseline; padding: 2px 10px; margin: 0 6px 6px 0;
  border: 1px solid var(--line); border-radius: 999px; background: var(--surface); text-decoration: none; color: var(--text);
}
a.chip:visited { color: var(--text); }
a.chip:hover { border-color: var(--border); }

.tag {
  display: inline-block; font-size: 1rem; padding: 0 8px; border-radius: 4px;
  background: var(--warning-tint); color: var(--warning);
}

/* timeline */
.tl-wrap { overflow: hidden; }
.tl { width: 100%; height: auto; display: block; }
.tl .axis, .bars .axis { stroke: var(--border); stroke-width: 1.5; }
.tl .tick { stroke: var(--border); }
.tl .yr { fill: var(--subtext); font-size: 16px; text-anchor: middle; }
.tl .pt { fill: var(--accent-tint); stroke: var(--accent); stroke-width: 2; }
.tl .pt.major { fill: var(--accent); }
.tl .pt.preview { stroke-dasharray: 4 3; fill: var(--bg); }
.tl .lbl { fill: var(--text); font-size: 16px; text-anchor: middle; }
.tl a:hover .pt { stroke-width: 4; }
.tl .lead { stroke: var(--line); stroke-width: 1; }
.tl a, .bars a, .line a { text-decoration: none; }
.tl a:hover .lbl { fill: var(--link-hover); text-decoration: underline; }
.tl-list { list-style: none; padding: 0; margin: 12px 0 0; display: none; }
.tl-list li { padding: 8px 0; border-bottom: 1px solid var(--line); }
.tl-list .d { color: var(--subtext); margin-right: 10px; }
@media (max-width: 640px) {
  .tl-wrap { display: none; }
  .tl-list { display: block; }
}

/* heatmap */
.heat-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 8px; }
.heat { border-collapse: collapse; font-size: 1rem; min-width: 100%; }
.heat th, .heat td { border: 1px solid var(--line); padding: 0; text-align: center; white-space: nowrap; }
.heat thead th { background: var(--surface); padding: 6px 8px; font-weight: 700; vertical-align: bottom; }
.heat thead th .d { display: block; font-weight: 400; color: var(--subtext); }
.heat tbody th {
  position: sticky; left: 0; z-index: 1; background: var(--surface); text-align: left; padding: 6px 10px;
}
.heat .corner { position: sticky; left: 0; z-index: 2; text-align: left; }
.heat td a { display: block; min-width: 56px; padding: 8px 6px; text-decoration: none; color: var(--text); }
.heat td.buff { background: var(--success-tint); }
.heat td.nerf { background: var(--error-tint); }
.heat td.mixed { background: var(--warning-tint); }
.heat td.other { background: var(--surface); }
.heat td a:hover { outline: 2px solid var(--border); outline-offset: -2px; }

/* cards */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.card { background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 12px 16px; }
.civ-card h3 { margin: 0 0 6px; }
.civ-card .mini svg { width: 100%; height: 48px; display: block; }
.civ-card .small { margin: 6px 0 0; }
.bars { display: block; height: auto; }
.bars .buff { fill: var(--success); }
.bars .nerf { fill: var(--error); }
.bars .hit { fill: transparent; }
.bars a:hover .hit { fill: var(--surface-2); }
.bars .v { fill: var(--text); font-size: 13px; text-anchor: middle; }
.bars .xl { fill: var(--subtext); font-size: 13px; text-anchor: end; }
.bars-wrap { overflow-x: auto; }
/* 18 本で viewBox が約 850 幅。それより縮めると 13px の文字が読めなくなるので横スクロールにする */
.bars-wrap .bars { min-width: 860px; width: 100%; }
@media (max-width: 640px) {
  .bar { justify-content: space-between; }
  .nav { order: 3; flex: 1 1 100%; }
}

/* line charts */
.charts { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.chart { margin: 0; }
.chart figcaption { font-weight: 700; color: var(--text-strong); }
.line { width: 100%; height: auto; display: block; }
.line .ln { fill: none; stroke: var(--accent); stroke-width: 2; }
.line .mk { stroke: var(--bg); stroke-width: 1.5; fill: var(--subtext); }
.line .mk.buff { fill: var(--success); }
.line .mk.nerf { fill: var(--error); }
.line .pv { fill: var(--text-strong); font-size: 13px; text-anchor: middle; }
.line .px { fill: var(--subtext); font-size: 12px; text-anchor: middle; }

/* change lists */
.patch-card { margin: 16px 0; }
.patch-card header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.patch-card h3 { margin: 0; }
.patch-card .d { color: var(--subtext); }
.patch-card .more { margin: 8px 0 0; }
.items { list-style: none; padding: 0; margin: 8px 0; }
.items li { padding: 6px 0; border-top: 1px solid var(--line); }
.items li:first-child { border-top: 0; }
.items li.sub-item { padding-left: 20px; }
.chg { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
.chg .tg { flex: 1 1 240px; }
.chg .ba { white-space: nowrap; }
.chg .b { color: var(--subtext); }
.chg .arr { margin: 0 6px; color: var(--subtext); }
.chg .a { font-weight: 700; color: var(--text-strong); }
.chg.buff .a { color: var(--success); }
.chg.nerf .a { color: var(--error); }
.ex { color: var(--subtext); }
.badge {
  display: inline-block; min-width: 4.5em; text-align: center; font-size: 1rem; line-height: 1.5;
  border-radius: 4px; padding: 0 6px; margin-right: 6px; border: 1px solid var(--line); color: var(--subtext);
}
.badge.buff { background: var(--success-tint); color: var(--success); border-color: var(--success); }
.badge.nerf { background: var(--error-tint); color: var(--error); border-color: var(--error); }
.badge.new { background: var(--info-tint); color: var(--info); border-color: var(--info); }
.badge.fix { background: var(--surface-2); color: var(--text); }
.badge.info { background: var(--surface-2); color: var(--text); }
.sub { margin: 12px 0 4px; font-size: 1.05rem; }
.lead-in { margin: 12px 0 0; font-weight: 700; }
.civlink { margin: 0 0 8px; }
.crumb { margin: 16px 0 0; }

/* patch body (md2html output) */
.meta { display: grid; grid-template-columns: max-content 1fr; gap: 2px 16px; }
.meta dt { color: var(--subtext); }
.meta dd { margin: 0; overflow-wrap: anywhere; }
.pn { display: flex; justify-content: space-between; gap: 16px; margin: 16px 0; }
.prose table { border-collapse: collapse; width: 100%; }
.prose .tw { overflow-x: auto; margin: 8px 0 16px; }
.prose th, .prose td { border: 1px solid var(--line); padding: 6px 10px; text-align: left; vertical-align: top; }
.prose th { background: var(--surface); }
.prose td.n { white-space: nowrap; }
.prose blockquote { margin: 12px 0; padding: 4px 16px; border-left: 4px solid var(--border); background: var(--surface); }
.prose code { font-family: "Noto Sans Mono", monospace; background: var(--surface-2); padding: 0 4px; border-radius: 4px; }
.prose pre { overflow-x: auto; background: var(--surface); padding: 12px; }
.prose p, .prose li, .prose dd { overflow-wrap: anywhere; }

/* patch page: jump banner (tyr.html の a.card と同じ形。左の帯＝強化が多い緑・弱体が多い赤・同数の黄) */
.jump { margin: 16px 0 0; }
.jump-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); margin: 8px 0 24px; }
a.jump-card, a.jump-card:visited {
  display: grid; gap: 4px; background: var(--bg); color: var(--text); text-decoration: none;
  border: 1px solid var(--line); border-left: 6px solid var(--line); border-radius: 8px; padding: 10px 14px;
}
a.jump-card:hover { border-color: var(--border); }
a.jump-card .jc-name { font-weight: 700; color: var(--link); text-decoration: underline; text-underline-offset: 3px; }
a.jump-card:hover .jc-name { color: var(--link-hover); }
a.jump-card .jc-chips .chip { margin: 0; }
a.jump-card.tone-buff, a.jump-card.tone-buff:hover { border-left-color: var(--success); }
a.jump-card.tone-nerf, a.jump-card.tone-nerf:hover { border-left-color: var(--error); }
a.jump-card.tone-mixed, a.jump-card.tone-mixed:hover { border-left-color: var(--warning); }
a.jump-card.tone-other, a.jump-card.tone-other:hover { border-left-color: var(--border); }
a.jump-card.tone-empty, a.jump-card.tone-empty:hover { border-left-color: var(--line); }
