/*
 * 公的年金受給シミュレーター — ツール固有スタイル
 * src/style.css
 *
 * 読み込み順: ../../assets/css/style.css（corestudio共通）→ 本ファイル
 * 共通スタイルの上書き・拡張のみ行う。
 * クラス名プレフィックス: .nenkin-
 */

/* ═══════════════════════════════════════════════════════════════════
   Stage 1: 基本レイアウト・色・タイポグラフィ
   ═══════════════════════════════════════════════════════════════════ */

/* ── 追加カラートークン ── */
:root {
  --c-warning:        #7a5c00;
  --c-warning-bg:     #fdf8e6;
  --c-warning-border: #d4a700;
  --c-error:          #9b1c1c;
  --c-error-bg:       #fef2f2;
  --c-error-border:   #dc2626;
  --c-success:        #1a5c3a;
  --c-success-bg:     #f0faf4;
  --c-success-border: #059669;
  --header-h: 68px;
}

/* ── 固定ヘッダー分の余白 ── */
body {
  padding-top: var(--header-h);
}

/* ── ツール固有セクションのリセット ──
   共通CSS の section { max-width; padding } をフルブリードに戻す
   .nenkin-chart-section は result 内の入れ子 section なので含める */
.nenkin-hero,
.nenkin-overview,
.nenkin-input-section,
.nenkin-result-section,
.nenkin-related,
.nenkin-chart-section {
  max-width: none;
  margin: 0;
  padding: 0;
}

/* セクション内コンテナ（max-width 制御） */
.nenkin-section-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: clamp(3rem, 7vw, 5rem) var(--pad);
}

/* ── ヒーローセクション ── */
.nenkin-hero__inner {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: clamp(3.5rem, 8vw, 6rem) var(--pad) clamp(2.5rem, 5vw, 4rem);
}

.nenkin-hero__eyebrow {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--c-mid);
  margin-bottom: 1rem;
}

.nenkin-hero__title {
  font-family: var(--font-serif);
  font-size: clamp(1.75rem, 4.5vw, 2.75rem);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.02em;
  color: var(--c-ink);
  margin-bottom: 1.5rem;
}

.nenkin-hero__desc {
  font-size: 0.875rem;
  color: var(--c-mid);
  line-height: 2;
  max-width: 640px;
  margin-bottom: 1.25rem;
}

/* ── 令和8年度改定通知（ヒーロー内） ── */
.nenkin-fiscal-notice {
  font-size: 0.8rem;
  color: var(--c-mid);
  line-height: 1.8;
  margin-bottom: 1.75rem;
}

.nenkin-fiscal-label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  color: var(--c-accent);
  border: 1px solid var(--c-accent);
  padding: 0.15em 0.5em;
  margin-right: 0.5em;
  white-space: nowrap;
  display: inline;
}


/* ── セクション共通タイトル（nenkin 固有） ── */
.nenkin-section-title {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 2.5vw, 1.6rem);
  font-weight: 500;
  line-height: 1.5;
  color: var(--c-ink);
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--c-line);
}

/* ── 概要カード（背景色・罫線なし、padding のみで区切り） ── */
.nenkin-overview {}

.nenkin-overview__cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  list-style: none;
  padding: 0;
  margin-top: 2rem;
  border-top: 1px solid var(--c-line);
}

.nenkin-overview__card {
  padding: 1.75rem 1.25rem 1.75rem 0;
  border-bottom: 1px solid var(--c-line);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.nenkin-overview__card-num {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: var(--c-mid);
}

.nenkin-overview__card h3 {
  font-family: var(--font-serif);
  font-size: 0.95rem;
  font-weight: 500;
  line-height: 1.5;
  color: var(--c-ink);
}

.nenkin-overview__card p {
  font-size: 0.8rem;
  color: var(--c-mid);
  line-height: 1.85;
}

/* ── 外部リンク SVG アイコン ── */
.nenkin-external-icon {
  vertical-align: middle;
  margin-left: 0.25em;
  flex-shrink: 0;
}

/* ── フォーム上部の改定年度注記 ── */
.nenkin-fiscal-note {
  font-size: 0.8rem;
  color: var(--c-mid);
  margin-bottom: 2rem;
  line-height: 1.8;
}

.nenkin-fiscal-note a {
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.nenkin-fiscal-note a:hover {
  opacity: 0.7;
}

/* ── 関連リンク ── */
.nenkin-related__list {
  list-style: none;
  padding: 0;
  margin-top: 0;
  border-top: 1px solid var(--c-line);
}

.nenkin-related__link {
  display: block;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--c-line);
  text-decoration: none;
  color: var(--c-ink);
  transition: padding-left 0.2s;
}

.nenkin-related__link:hover {
  padding-left: 0.75rem;
}

.nenkin-related__link-title {
  display: block;
  font-family: var(--font-serif);
  font-size: 0.95rem;
  font-weight: 500;
  margin-bottom: 0.25rem;
}

.nenkin-related__link-desc {
  display: block;
  font-size: 0.75rem;
  color: var(--c-mid);
  line-height: 1.7;
}

/* ── 最終更新日（関連リンクセクション末尾） ── */
.nenkin-last-updated {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: var(--c-mid);
  margin-top: 1.5rem;
  text-align: right;
}

/* ── フッター内最終更新日（小） ── */
.nenkin-footer-updated {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  color: var(--c-mid);
  letter-spacing: 0.04em;
}


/* ═══════════════════════════════════════════════════════════════════
   Stage 2: 入力フォーム（フィールド・ボタン・アコーディオン）
   ═══════════════════════════════════════════════════════════════════ */

/* ── 入力セクション ── */
.nenkin-input-section {
  background: var(--c-bg);
}

/* ── フォーム本体 ── */
#nenkin-form {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

/* ── fieldset ── */
.nenkin-fieldset {
  border: 1px solid var(--c-line);
  padding: 1.75rem 2rem 2rem;
  background: #fff;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.nenkin-fieldset--nested {
  border: none;
  border-top: 1px solid var(--c-line);
  padding: 1.25rem 0 0;
  background: transparent;
  gap: 1rem;
}

.nenkin-fieldset__legend {
  font-family: var(--font-serif);
  font-size: 1rem;
  font-weight: 500;
  color: var(--c-ink);
  line-height: 1.5;
  padding: 0;
  margin-bottom: 0.25rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
}

.nenkin-fieldset__legend--sub {
  font-family: var(--font-sans);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--c-mid);
}

/* ── フィールド ── */
.nenkin-field {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.nenkin-field--checkbox {
  gap: 0.25rem;
}

/* ── ラベル ── */
.nenkin-label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--c-ink);
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: wrap;
  line-height: 1.5;
}

.nenkin-label--checkbox {
  cursor: pointer;
  gap: 0.5rem;
}

.nenkin-label__required {
  font-family: var(--font-mono);
  font-size: 0.6rem;
  letter-spacing: 0.05em;
  color: var(--c-error);
  background: var(--c-error-bg);
  border: 1px solid var(--c-error-border);
  padding: 0.1em 0.4em;
  flex-shrink: 0;
}

/* ── テキスト入力 ── */
.nenkin-input {
  font-family: var(--font-mono);
  font-size: 1rem;
  color: var(--c-ink);
  background: var(--c-bg);
  border: 1px solid var(--c-line);
  padding: 0.6rem 0.875rem;
  transition: border-color 0.15s, box-shadow 0.15s;
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
}

.nenkin-input:hover {
  border-color: var(--c-mid);
}

.nenkin-input:focus,
.nenkin-input:focus-visible {
  outline: none;
  border-color: var(--c-accent);
  box-shadow: 0 0 0 3px var(--c-accent-light);
}

.nenkin-input[aria-invalid="true"] {
  border-color: var(--c-error-border);
  background: var(--c-error-bg);
}

.nenkin-input[aria-invalid="true"]:focus {
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);
}

/* 幅バリアント */
.nenkin-input--year   { width: 6rem; }
.nenkin-input--month  { width: 4rem; }
.nenkin-input--day    { width: 4rem; }
.nenkin-input--age    { width: 4rem; }
.nenkin-input--months { width: 6rem; }
.nenkin-input--count  { width: 4rem; }
.nenkin-input--amount { width: 10rem; }

/* ── インプットグループ ── */
.nenkin-input-group {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.nenkin-input-group--month {
  margin-left: 0.5rem;
}

.nenkin-input-unit {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  color: var(--c-mid);
  white-space: nowrap;
  flex-shrink: 0;
}

/* ── 生年月日・年齢入力グループ ── */
.nenkin-birth-inputs {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.nenkin-birth-inputs__group {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.nenkin-age-input {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.25rem;
}

/* ── ヒント・エラーテキスト ── */
.nenkin-hint {
  font-size: 0.75rem;
  color: var(--c-mid);
  line-height: 1.6;
}

.nenkin-error {
  font-size: 0.75rem;
  color: var(--c-error);
  line-height: 1.6;
}

.nenkin-error:not([hidden]) {
  display: block;
}

/* ── ヘルプボタン（ⓘ） ── */
.nenkin-help-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.4em;
  height: 1.4em;
  font-family: var(--font-sans);
  font-size: 0.875rem;
  color: var(--c-accent);
  background: transparent;
  border: 1px solid var(--c-accent);
  border-radius: 50%;
  cursor: pointer;
  padding: 0;
  line-height: 1;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}

.nenkin-help-btn:hover,
.nenkin-help-btn[aria-expanded="true"] {
  background: var(--c-accent);
  color: #fff;
}

.nenkin-help-btn:focus-visible {
  outline: 3px solid var(--c-accent);
  outline-offset: 2px;
  box-shadow: none;
}

/* ── ツールチップ ── */
.nenkin-tooltip {
  margin-top: 0.5rem;
  padding: 0.875rem 1rem;
  background: var(--c-accent-light);
  border-left: 3px solid var(--c-accent);
  font-size: 0.8rem;
  color: var(--c-mid);
  line-height: 1.8;
}

.nenkin-tooltip p + p {
  margin-top: 0.5rem;
}

.nenkin-tooltip__link {
  display: inline-flex;
  align-items: center;
  margin-top: 0.5rem;
  font-size: 0.75rem;
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.nenkin-tooltip__link:hover {
  opacity: 0.7;
}

.nenkin-tooltip__img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 0.75rem 0 0.5rem;
  border: 1px solid var(--c-line);
}

/* ── チェックボックス ── */
.nenkin-checkbox {
  width: 1.1rem;
  height: 1.1rem;
  border: 1px solid var(--c-line);
  background: var(--c-bg);
  cursor: pointer;
  flex-shrink: 0;
  accent-color: var(--c-accent);
}

/* ── ラジオボタン ── */
.nenkin-radio-fieldset {
  padding-top: 1rem;
}

.nenkin-radio-options {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.nenkin-label--radio {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: var(--c-ink);
  cursor: pointer;
  line-height: 1.5;
}

.nenkin-radio {
  width: 1.1rem;
  height: 1.1rem;
  cursor: pointer;
  flex-shrink: 0;
  accent-color: var(--c-accent);
}

/* ── 法令制約通知 ── */
.nenkin-law-notice {
  font-size: 0.8rem;
  color: var(--c-warning);
  background: var(--c-warning-bg);
  border: 1px solid var(--c-warning-border);
  padding: 0.6rem 0.875rem;
  line-height: 1.7;
}

/* ── アコーディオン (details/summary) ── */
.nenkin-accordion {
  border: 1px solid var(--c-line);
  background: #fff;
}

.nenkin-accordion[open] {
  border-color: var(--c-accent);
}

.nenkin-accordion.nenkin-fieldset {
  padding: 0;
  gap: 0;
}

.nenkin-accordion__summary {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 1.25rem 1.5rem;
  cursor: pointer;
  user-select: none;
  background: var(--c-bg);
  border: none;
  list-style: none;
  font-size: 0.9rem;
  font-family: var(--font-sans);
  color: var(--c-ink);
  transition: background 0.15s;
  width: 100%;
  text-align: left;
}

.nenkin-accordion__summary::-webkit-details-marker {
  display: none;
}

.nenkin-accordion__summary:hover {
  background: var(--c-accent-light);
}

.nenkin-accordion[open] > .nenkin-accordion__summary {
  background: var(--c-accent-light);
  border-bottom: 1px solid var(--c-line);
}

.nenkin-accordion__summary:focus-visible {
  outline: 3px solid var(--c-accent);
  outline-offset: -3px;
  box-shadow: none;
}

/* 右端の展開ヒントテキスト */
.nenkin-accordion__summary::after {
  content: '▼ クリックで展開';
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--c-mid);
  margin-left: auto;
  padding-left: 1rem;
  flex-shrink: 0;
  white-space: nowrap;
}

.nenkin-accordion[open] > .nenkin-accordion__summary::after {
  content: '▲ クリックで閉じる';
}

.nenkin-accordion__content {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.nenkin-accordion.nenkin-fieldset > .nenkin-accordion__content {
  padding: 1.75rem 2rem 2rem;
  gap: 1.5rem;
}

/* 任意バッジ */
.nenkin-accordion__badge {
  font-family: var(--font-mono);
  font-size: 0.6rem;
  letter-spacing: 0.05em;
  color: var(--c-mid);
  border: 1px solid var(--c-line);
  padding: 0.1em 0.5em;
  flex-shrink: 0;
  white-space: nowrap;
}

/* ── 配偶者詳細エリア ── */
.nenkin-spouse-details {
  padding-top: 1rem;
}

/* ── 送信ボタンエリア ── */
.nenkin-submit-area {
  display: flex;
  justify-content: center;
  padding-top: 1rem;
}

.nenkin-submit-btn {
  font-size: 1rem;
  padding: 1rem 3rem;
  letter-spacing: 0.05em;
}


/* ═══════════════════════════════════════════════════════════════════
   Stage 3: 結果エリア・グラフ
   ═══════════════════════════════════════════════════════════════════ */

.nenkin-result-section {
  background: var(--c-bg);
  border-top: 3px solid var(--c-accent);
}

/* ── 結果ヒーロー ── */
.nenkin-result-hero {
  margin-bottom: 2.5rem;
}

.nenkin-result-hero__items {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--c-line);
  border: 1px solid var(--c-line);
}

.nenkin-result-item {
  background: #fff;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.nenkin-result-item--total {
  background: var(--c-accent-light);
}

.nenkin-result-item__label {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  letter-spacing: 0.1em;
  color: var(--c-mid);
  text-transform: uppercase;
}

.nenkin-result-item__value {
  display: flex;
  align-items: baseline;
  gap: 0.25rem;
}

.nenkin-result-item__amount {
  font-family: var(--font-mono);
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: 500;
  color: var(--c-accent);
  letter-spacing: -0.01em;
}

.nenkin-result-item--total .nenkin-result-item__amount {
  color: var(--c-ink);
}

.nenkin-result-item__unit {
  font-family: var(--font-sans);
  font-size: 0.8rem;
  color: var(--c-mid);
}

.nenkin-result-item__monthly {
  font-size: 0.75rem;
  color: var(--c-mid);
  font-family: var(--font-mono);
}

/* ── 65歳比較差額 ── */
.nenkin-result-diff {
  margin-top: 1rem;
  padding: 0.75rem 1rem;
  background: var(--c-warning-bg);
  border: 1px solid var(--c-warning-border);
  font-size: 0.8rem;
  color: var(--c-warning);
  font-family: var(--font-mono);
}

/* ── 結果サブタイトル ── */
.nenkin-result-subtitle {
  font-family: var(--font-serif);
  font-size: 1rem;
  font-weight: 500;
  color: var(--c-ink);
  padding-bottom: 0.6rem;
  border-bottom: 1px solid var(--c-line);
  margin-bottom: 1rem;
}

/* ── 在職/加給/付加ブロック ── */
.nenkin-result-zaishoku,
.nenkin-result-kakyu,
.nenkin-result-fuka {
  background: #fff;
  border: 1px solid var(--c-line);
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}

.nenkin-result-zaishoku__desc {
  font-size: 0.8rem;
  color: var(--c-warning);
  background: var(--c-warning-bg);
  border: 1px solid var(--c-warning-border);
  padding: 0.6rem 0.875rem;
  margin-bottom: 1rem;
  line-height: 1.7;
}

.nenkin-result-zaishoku__detail,
.nenkin-result-kakyu__detail,
.nenkin-result-fuka__detail {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.4rem 1.5rem;
  font-size: 0.85rem;
}

.nenkin-result-zaishoku__detail dt,
.nenkin-result-kakyu__detail dt,
.nenkin-result-fuka__detail dt {
  color: var(--c-mid);
  align-self: baseline;
}

.nenkin-result-zaishoku__detail dd,
.nenkin-result-kakyu__detail dd,
.nenkin-result-fuka__detail dd {
  font-family: var(--font-mono);
  font-weight: 500;
  color: var(--c-ink);
  margin: 0;
}

/* ── サマリー表（受給開始年齢別の比較） ── */
.nenkin-result-comparison {
  margin-top: 2rem;
}

.nenkin-result-comparison__desc {
  font-size: 0.85rem;
  color: var(--c-mid);
  margin-bottom: 1rem;
  line-height: 1.7;
}

.nenkin-result-comparison__wrapper {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.nenkin-result-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.875rem;
}

.nenkin-result-table thead th {
  text-align: left;
  font-weight: 500;
  padding: 0.75rem 0.5rem;
  border-bottom: 2px solid var(--c-line);
  color: var(--c-mid);
  white-space: nowrap;
}

.nenkin-result-table thead th:nth-child(2),
.nenkin-result-table thead th:nth-child(3),
.nenkin-result-table thead th:nth-child(4) {
  text-align: right;
}

.nenkin-result-table tbody td {
  padding: 0.75rem 0.5rem;
  border-bottom: 1px solid var(--c-line);
  color: var(--c-ink);
}

.nenkin-result-table tbody tr:last-child td {
  border-bottom: none;
}

.nenkin-result-table tbody td:nth-child(2),
.nenkin-result-table tbody td:nth-child(3),
.nenkin-result-table tbody td:nth-child(4) {
  text-align: right;
  white-space: nowrap;
}

/* ── グラフセクション ── */
.nenkin-chart-section {
  background: #fff;
  border: 1px solid var(--c-line);
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}

.nenkin-chart-desc {
  font-size: 0.8rem;
  color: var(--c-mid);
  line-height: 1.7;
  margin-bottom: 0.5rem;
}

/* ── 累計受給額の比較コールアウト ── */
.nenkin-breakeven-callout {
  background: var(--c-accent-light);
  border-left: 4px solid var(--c-accent);
  padding: 1.25rem 1.5rem;
  margin: 1.5rem 0;
  border-radius: 0 4px 4px 0;
}

.nenkin-breakeven-callout .nenkin-result-subtitle {
  margin-bottom: 0.75rem;
}

.nenkin-breakeven-callout__message {
  font-size: 0.9rem;
  color: var(--c-ink);
  line-height: 1.7;
  margin-bottom: 0.75rem;
}

.nenkin-breakeven-callout__note {
  font-size: 0.75rem;
  color: var(--c-mid);
  line-height: 1.7;
  margin: 0;
}

.nenkin-chart-wrapper {
  position: relative;
  width: 100%;
  height: 400px;
}

/* ── グラフのデータテーブル ── */
.nenkin-chart-table-toggle {
  margin-top: 1rem;
  border-top: 1px solid var(--c-line);
}

.nenkin-chart-table-toggle > summary {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--c-mid);
  letter-spacing: 0.05em;
  cursor: pointer;
  padding: 0.75rem 0;
  list-style: none;
  user-select: none;
}

.nenkin-chart-table-toggle > summary::-webkit-details-marker {
  display: none;
}

.nenkin-chart-table-toggle > summary::before {
  content: '▶ ';
  font-size: 0.6rem;
}

.nenkin-chart-table-toggle[open] > summary::before {
  content: '▼ ';
}

.nenkin-chart-table-wrapper {
  overflow-x: auto;
  margin-top: 0.75rem;
}

.nenkin-chart-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.75rem;
}

.nenkin-chart-table caption {
  font-size: 0.7rem;
  color: var(--c-mid);
  text-align: left;
  margin-bottom: 0.5rem;
  caption-side: top;
}

.nenkin-chart-table th,
.nenkin-chart-table td {
  border: 1px solid var(--c-line);
  padding: 0.4rem 0.75rem;
  text-align: right;
  color: var(--c-ink);
}

.nenkin-chart-table th {
  background: var(--c-accent-light);
  color: var(--c-accent);
  font-weight: 500;
}

.nenkin-chart-table td:first-child,
.nenkin-chart-table th:first-child {
  text-align: left;
}

/* ── 注記・免責 ── */
.nenkin-disclaimer {
  border-top: 1px solid var(--c-line);
  padding-top: 1.5rem;
  margin-top: 2rem;
  font-size: 0.8rem;
  color: var(--c-mid);
  line-height: 1.9;
}

.nenkin-disclaimer a {
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 0.2em;
  display: inline-flex;
  align-items: center;
}

/* ── 再計算エリア ── */
.nenkin-recalc-area {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  justify-content: center;
  padding-top: 2rem;
  margin-top: 0.5rem;
}

/* 結果ページのアクションボタンサイズ
   .btn デフォルト（0.75rem / 0.75rem 1.5rem）より大きく
   .nenkin-submit-btn（1rem / 1rem 3rem）より小さい中間サイズ */
.nenkin-recalc-area .btn {
  font-size: 0.875rem;
  padding: 0.875rem 2rem;
  min-width: 200px;
  justify-content: center;
}


/* ═══════════════════════════════════════════════════════════════════
   Stage 4: レスポンシブ（モバイル）
   ═══════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* 概要カード: 4列→2列 */
  .nenkin-overview__cards {
    grid-template-columns: repeat(2, 1fr);
  }

  .nenkin-overview__card {
    padding-right: 0.75rem;
  }

  /* 結果ヒーロー: 3列→2列（合計は全幅） */
  .nenkin-result-hero__items {
    grid-template-columns: repeat(2, 1fr);
  }

  .nenkin-result-item--total {
    grid-column: 1 / -1;
  }

  .nenkin-fieldset {
    padding: 1.25rem 1.25rem 1.5rem;
  }

  .nenkin-accordion.nenkin-fieldset > .nenkin-accordion__content {
    padding: 1.25rem 1.25rem 1.5rem;
  }

  .nenkin-chart-wrapper {
    height: 250px;
  }

}

@media (max-width: 640px) {

  :root {
    --header-h: 58px;
  }

  /* 概要カード: 1列 */
  .nenkin-overview__cards {
    grid-template-columns: 1fr;
  }

  .nenkin-overview__card {
    padding-right: 0;
  }

  /* 金額フィールドを広げる */
  .nenkin-input--amount {
    width: 100%;
    max-width: 14rem;
  }

  /* アコーディオンのヒントテキストを短縮（ただしテキスト残す） */
  .nenkin-accordion__summary::after {
    content: '▼ 開く';
    padding-left: 0.5rem;
  }

  .nenkin-accordion[open] > .nenkin-accordion__summary::after {
    content: '▲ 閉じる';
  }

  /* 結果: 1列 */
  .nenkin-result-hero__items {
    grid-template-columns: 1fr;
  }

  .nenkin-result-item--total {
    grid-column: auto;
  }

  /* DL グリッドを縦積みに */
  .nenkin-result-zaishoku__detail,
  .nenkin-result-kakyu__detail,
  .nenkin-result-fuka__detail {
    grid-template-columns: 1fr;
    gap: 0.2rem 0;
  }

  .nenkin-result-zaishoku__detail dt,
  .nenkin-result-kakyu__detail dt,
  .nenkin-result-fuka__detail dt {
    font-size: 0.75rem;
    margin-top: 0.75rem;
  }

  .nenkin-result-zaishoku__detail dt:first-child,
  .nenkin-result-kakyu__detail dt:first-child,
  .nenkin-result-fuka__detail dt:first-child {
    margin-top: 0;
  }

  /* 送信・再計算ボタン: 全幅 */
  .nenkin-submit-btn {
    width: 100%;
    justify-content: center;
  }

  .nenkin-recalc-area {
    flex-direction: column;
  }

  .nenkin-recalc-area .btn-secondary {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  /* 最終更新日: モバイルでは左揃え */
  .nenkin-last-updated {
    text-align: left;
  }

}


/* ═══════════════════════════════════════════════════════════════════
   Stage 5: @media print
   ═══════════════════════════════════════════════════════════════════ */

@media print {

  @page {
    margin: 15mm 15mm 20mm;
  }

  /* 非表示にする要素 */
  header,
  .skip-link,
  .nenkin-hero,
  .nenkin-overview,
  .nenkin-input-section,
  .nenkin-recalc-area,
  .nenkin-related,
  .nenkin-chart-table-toggle,
  footer,
  .nenkin-help-btn,
  .nenkin-tooltip {
    display: none !important;
  }

  body {
    padding-top: 0;
    background: #fff;
    color: #000;
    font-size: 10pt;
  }

  main {
    padding: 0;
  }

  .nenkin-result-section {
    display: block !important;
    border-top: 2px solid #000;
  }

  .nenkin-section-inner {
    padding: 1rem 0;
    max-width: none;
  }

  /* 改ページ制御 */
  .nenkin-result-hero,
  .nenkin-result-zaishoku,
  .nenkin-result-kakyu,
  .nenkin-result-fuka,
  .nenkin-chart-section,
  .nenkin-breakeven-callout {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* 印刷用カラー補正 */
  .nenkin-result-hero__items {
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: #ccc;
    border: 1px solid #ccc;
  }

  .nenkin-result-item { background: #fff; }
  .nenkin-result-item--total { background: #f0f0f0; }
  .nenkin-result-item__amount { color: #000; }

  .nenkin-result-zaishoku,
  .nenkin-result-kakyu,
  .nenkin-result-fuka,
  .nenkin-chart-section {
    background: #fff;
    border: 1px solid #ccc;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .nenkin-chart-wrapper {
    height: 280px !important;
  }

  .nenkin-chart-wrapper canvas {
    max-width: 100%;
    height: auto !important;
  }

  /* 印刷時のリンク表示を整える（SVGアイコンを非表示、URLのみ残す） */
  .nenkin-disclaimer .nenkin-external-icon {
    display: none;
  }

  .nenkin-disclaimer a {
    display: inline;
    color: #000;
    text-decoration: underline;
  }

  .nenkin-disclaimer {
    border-top: 1px solid #ccc;
    margin-top: 1rem;
    padding-top: 0.75rem;
    font-size: 8pt;
  }

  .nenkin-disclaimer a::after {
    content: ' (' attr(href) ')';
    font-size: 7pt;
    color: #666;
  }

  /* 印刷ページの先頭ラベル */
  .nenkin-result-section::before {
    content: '公的年金受給シミュレーター — 計算結果（令和8年度）';
    display: block;
    font-size: 9pt;
    color: #666;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid #ccc;
  }

}
