/* ============================================================
   共通スタイル(デザイントークン + 基本レイアウト + 部品)
   ------------------------------------------------------------
   デザイン方針(SPEC.md §6):
   - 「計器・電卓」を思わせる実務的で信頼感のあるデザイン
   - 数字が主役。結果表示は濃紺の「液晶パネル風」+ 等幅数字を
     サイト共通の signature 要素とする
   - モバイル最優先。過剰な装飾・アニメーションは使わない
   ============================================================ */

/* ---------- デザイントークン ---------- */
:root {
  /* 配色: 紙の帳票 + 計器パネルのイメージ */
  --color-bg: #f4f6f8;          /* ページ背景: わずかに青みのある薄灰 */
  --color-surface: #ffffff;     /* カード・入力欄の背景 */
  --color-ink: #1c2733;         /* 本文: 濃い青灰 */
  --color-ink-weak: #5a6b7d;    /* 補足テキスト */
  --color-line: #d5dce3;        /* 罫線 */
  --color-accent: #0b5cad;      /* リンク・ボタン: 実務的な青 */
  --color-accent-strong: #094a8c;
  --color-panel: #14212e;       /* 結果パネル背景: 計器の濃紺 */
  --color-panel-num: #e8f2fc;   /* 結果パネル上の数字 */
  --color-panel-label: #8ba3ba; /* 結果パネル上のラベル */
  --color-note-bg: #fdf6e3;     /* 注意書き背景(概算・免責) */
  --color-note-line: #d9c37a;

  /* タイポグラフィ */
  --font-body: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN",
               "Hiragino Sans", Meiryo, sans-serif;
  --font-num: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas,
              monospace;             /* 数値表示は等幅 */

  /* レイアウト */
  --width-main: 820px;          /* 本文の最大幅(1カラム) */
  --radius: 6px;
  --space-1: 8px;
  --space-2: 16px;
  --space-3: 24px;
  --space-4: 40px;
}

/* ---------- リセット・基本 ---------- */
* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.8;
  -webkit-text-size-adjust: 100%;
}

main {
  max-width: var(--width-main);
  margin: 0 auto;
  padding: var(--space-2);
}

a { color: var(--color-accent); }
a:hover { color: var(--color-accent-strong); }

h1 {
  font-size: 1.5rem;
  line-height: 1.4;
  margin: var(--space-2) 0 var(--space-1);
}

h2 {
  font-size: 1.2rem;
  margin: var(--space-4) 0 var(--space-2);
  padding-bottom: 6px;
  border-bottom: 2px solid var(--color-line);
}

/* 数値は常に等幅・桁ぞろえ */
.num,
table td.num {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
}

/* ---------- ヘッダー・パンくず ---------- */
.site-header {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-line);
}

.site-header .inner {
  max-width: var(--width-main);
  margin: 0 auto;
  padding: 10px var(--space-2);
}

.site-header .site-name {
  font-weight: bold;
  text-decoration: none;
  color: var(--color-ink);
}

.breadcrumb {
  font-size: 0.8rem;
  color: var(--color-ink-weak);
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.breadcrumb li + li::before {
  content: "›";
  margin-right: 4px;
  color: var(--color-ink-weak);
}

/* ---------- ツール本体 ---------- */
.tool-lead {
  color: var(--color-ink-weak);
  margin-top: 0;
}

.tool-body {
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  padding: var(--space-2);
  margin: var(--space-2) 0;
}

.tool-body label {
  display: block;
  font-size: 0.85rem;
  font-weight: bold;
  margin: var(--space-2) 0 4px;
}

.tool-body input[type="text"],
.tool-body input[type="number"],
.tool-body select,
.tool-body textarea {
  width: 100%;
  font-size: 16px; /* iOSの自動ズームを防ぐため16px以上 */
  font-family: inherit;
  padding: 10px;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  background: var(--color-surface);
  color: var(--color-ink);
}

.tool-body textarea { min-height: 10em; resize: vertical; }

/* 入力と結果の2カラム配置(ラッコツールズ等の定石)
   スマホでは縦積み、PCでは入力=左 / 結果=右(スクロールしても追従) */
.tool-columns { display: grid; grid-template-columns: 1fr; gap: var(--space-2); }

@media (min-width: 760px) {
  .tool-columns { grid-template-columns: 1fr 300px; align-items: start; }
  .tool-columns .tool-result { position: sticky; top: var(--space-2); }
}

.tool-body input:focus,
.tool-body select:focus,
.tool-body textarea:focus {
  outline: 2px solid var(--color-accent);
  outline-offset: -1px;
}

/* ---------- 結果パネル(signature 要素) ---------- */
.result-panel {
  background: var(--color-panel);
  color: var(--color-panel-num);
  border-radius: var(--radius);
  padding: var(--space-2);
  margin-top: var(--space-2);
}

.result-panel .result-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-2);
  padding: 6px 0;
}

.result-panel .result-row + .result-row {
  border-top: 1px solid #2a3b4d;
}

.result-panel .label {
  font-size: 0.8rem;
  color: var(--color-panel-label);
}

.result-panel .value {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
  font-size: 1.75rem; /* 数字は大きく見やすく(numMoji 等の定石) */
  line-height: 1.3;
}

.result-panel .value small {
  font-size: 0.8rem;
  color: var(--color-panel-label);
  margin-left: 2px;
}

/* ---------- 注意書き(概算・免責) ---------- */
.note {
  background: var(--color-note-bg);
  border: 1px solid var(--color-note-line);
  border-radius: var(--radius);
  padding: 10px var(--space-2);
  font-size: 0.85rem;
}

/* ---------- 広告枠 ---------- */
.ad-slot {
  margin: var(--space-3) 0;
  min-height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-ink-weak);
  font-size: 0.8rem;
  border: 1px dashed var(--color-line);
  border-radius: var(--radius);
}

/* ---------- FAQ ---------- */
.faq details {
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  margin-bottom: var(--space-1);
  padding: 10px var(--space-2);
}

.faq summary { font-weight: bold; cursor: pointer; }

/* ---------- 関連ツールカード ---------- */
.tool-cards {
  list-style: none;
  padding: 0;
  margin: var(--space-2) 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-1);
}

@media (min-width: 600px) {
  .tool-cards { grid-template-columns: 1fr 1fr; }
}

.tool-cards a {
  display: block;
  background: var(--color-surface);
  border: 1px solid var(--color-line);
  border-radius: 8px;
  padding: 18px var(--space-2);
  text-decoration: none;
  color: var(--color-ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}

.tool-cards a:hover,
.tool-cards a:focus-visible {
  border-color: var(--color-accent);
  box-shadow: 0 2px 8px rgba(11, 92, 173, 0.12);
}

@media (prefers-reduced-motion: reduce) {
  .tool-cards a { transition: none; }
}

.tool-cards .card-title {
  color: var(--color-accent);
  font-weight: bold;
  display: block;
  font-size: 1.05rem;
}

.tool-cards .card-title::after {
  content: " →";
  font-weight: normal;
}

.tool-cards .card-desc {
  font-size: 0.85rem;
  color: var(--color-ink-weak);
}

/* 準備中で未実装のカード(リンクにせず、押せない見た目にする) */
.tool-cards .card-disabled {
  display: block;
  background: var(--color-surface);
  border: 1px dashed var(--color-line);
  border-radius: 8px;
  padding: 18px var(--space-2);
  opacity: 0.6;
  cursor: default;
}

.tool-cards .card-disabled .card-title {
  color: var(--color-ink-weak);
  font-weight: bold;
  display: block;
  font-size: 1.05rem;
}

.tool-cards .card-disabled .card-desc {
  font-size: 0.85rem;
  color: var(--color-ink-weak);
}

/* 準備中などの状態バッジ */
.badge {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: normal;
  color: var(--color-ink-weak);
  background: #eef1f4;
  border: 1px solid var(--color-line);
  border-radius: 999px;
  padding: 0 10px;
  margin-left: 6px;
  vertical-align: 2px;
}

/* ---------- 表 ---------- */
.table-wrap { overflow-x: auto; }

table {
  border-collapse: collapse;
  width: 100%;
  font-size: 0.9rem;
  background: var(--color-surface);
}

th, td {
  border: 1px solid var(--color-line);
  padding: 8px 10px;
  text-align: left;
}

th { background: #eef1f4; }

td.num { text-align: right; }

/* ---------- フッター ---------- */
.site-footer {
  border-top: 1px solid var(--color-line);
  margin-top: var(--space-4);
  padding: var(--space-3) var(--space-2);
  font-size: 0.8rem;
  color: var(--color-ink-weak);
  text-align: center;
}

.site-footer .stale-warning {
  color: #a33;
  font-weight: bold;
}
