/* ==========================================================================
   _proto.css — プロトタイプ共通スタイル
   ・トークンは design-tokens/build.py が下のマーカー間へ注入する(手で編集しない)
   ・fuchu-mansion.html だけは計測ハーネスの都合で自己完結のままにしてある。
     Phase 1 の Astro コンポーネント化で両者を1つに統合する
   ========================================================================== */

/* @gen:tokens-css */
:root{
  /* 機械生成: design-tokens/tokens.json -> build.py。手で編集しないこと */
  --color-ink: #1b1b1b;
  --color-ink-sub: #5b5b5b;
  --color-ink-weak: #6f6f6f;
  --color-bg: #ffffff;
  --color-surface: #f5f4f1;
  --color-invert-bg: #1b1b1b;
  --color-invert-ink: #ffffff;
  --color-invert-ink-sub: #c9c6bf;
  --color-accent: #17564a;
  --color-accent-ink: #ffffff;
  --color-accent-hover: #0f4438;
  --color-cta: #c2431f;
  --color-cta-ink: #ffffff;
  --color-cta-hover: #96300f;
  --color-link: #1a4f7a;
  --color-link-hover: #0f3a5c;
  --color-data-primary: #17564a;
  --color-data-up: #1b1b1b;
  --color-data-down: #4a4a4a;
  --color-data-up-alt: #1f4f7a;
  --color-data-down-alt: #8a5410;
  --color-caution: #8a5410;
  --color-focus: #17564a;
  --color-focus-invert: #ffffff;
  --colorScheme-yoy-chosen: C;
  --colorScheme-yoy-status: FROZEN;
  --colorScheme-yoy-up: #1b1b1b;
  --colorScheme-yoy-down: #4a4a4a;
  --colorScheme-yoy-reserve-up: #1f4f7a;
  --colorScheme-yoy-reserve-down: #8a5410;
  --font-family-ja: "BIZ UDPGothic", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", "Segoe UI", sans-serif;
  --font-family-num: "Helvetica Neue", "Roboto", Arial, "Hiragino Sans", sans-serif;
  --font-family-editorial: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "Noto Serif JP", serif;
  --font-weights: 400, 500, 700;
  --font-features-heading: "palt" 1;
  --font-features-body: "palt" 1;
  --font-features-num: "tnum" 1, "palt" 0;
  --font-measure-body: 42em;
  --font-scale-display-size: clamp(2.5rem, 8.5vw, 3.5rem);
  --font-scale-display-size-m: 40px;
  --font-scale-display-size-d: 56px;
  --font-scale-display-line-height: 1.05;
  --font-scale-display-weight: 700;
  --font-scale-display-letter-spacing: -0.02em;
  --font-scale-display-family: "Helvetica Neue", "Roboto", Arial, "Hiragino Sans", sans-serif;
  --font-scale-display-feature: "tnum" 1, "palt" 0;
  --font-scale-h1-size: clamp(1.5rem, 5vw, 1.875rem);
  --font-scale-h1-size-m: 24px;
  --font-scale-h1-size-d: 30px;
  --font-scale-h1-line-height: 1.32;
  --font-scale-h1-weight: 700;
  --font-scale-h1-letter-spacing: 0.005em;
  --font-scale-h1-family: "BIZ UDPGothic", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", "Segoe UI", sans-serif;
  --font-scale-h1-feature: "palt" 1;
  --font-scale-h2-size: clamp(1.1875rem, 3.4vw, 1.3125rem);
  --font-scale-h2-size-m: 19px;
  --font-scale-h2-size-d: 21px;
  --font-scale-h2-line-height: 1.4;
  --font-scale-h2-weight: 700;
  --font-scale-h2-letter-spacing: 0.02em;
  --font-scale-h2-family: "BIZ UDPGothic", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", "Segoe UI", sans-serif;
  --font-scale-h2-feature: "palt" 1;
  --font-scale-body-size: clamp(1rem, 2.6vw, 1.0625rem);
  --font-scale-body-size-m: 16px;
  --font-scale-body-size-d: 17px;
  --font-scale-body-line-height: 1.8;
  --font-scale-body-weight: 400;
  --font-scale-body-letter-spacing: 0.01em;
  --font-scale-body-family: "BIZ UDPGothic", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", "Segoe UI", sans-serif;
  --font-scale-body-feature: "palt" 1;
  --font-scale-caption-size: 0.8125rem;
  --font-scale-caption-size-m: 13px;
  --font-scale-caption-size-d: 13px;
  --font-scale-caption-line-height: 1.7;
  --font-scale-caption-weight: 400;
  --font-scale-caption-letter-spacing: 0.02em;
  --font-scale-caption-family: "BIZ UDPGothic", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", "Segoe UI", sans-serif;
  --font-scale-caption-feature: "palt" 1;
  --font-scale-small-size: 0.75rem;
  --font-scale-small-size-m: 12px;
  --font-scale-small-size-d: 12px;
  --font-scale-small-line-height: 1.6;
  --font-scale-small-weight: 400;
  --font-scale-small-letter-spacing: 0.03em;
  --font-scale-small-family: "BIZ UDPGothic", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", "Segoe UI", sans-serif;
  --font-scale-small-feature: "palt" 1;
  --font-scale-data-s-size: 0.75rem;
  --font-scale-data-s-size-m: 12px;
  --font-scale-data-s-size-d: 12px;
  --font-scale-data-s-line-height: 1.6;
  --font-scale-data-s-weight: 500;
  --font-scale-data-s-letter-spacing: 0.02em;
  --font-scale-data-s-family: "Helvetica Neue", "Roboto", Arial, "Hiragino Sans", sans-serif;
  --font-scale-data-s-feature: "tnum" 1, "palt" 0;
  --font-line-height-body: 1.8;
  --font-line-height-heading: 1.35;
  --voice-editorial-family: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "Noto Serif JP", serif;
  --voice-editorial-size: 0.9375rem;
  --voice-editorial-line-height: 1.9;
  --space-unit: 4;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 40px;
  --space-8: 48px;
  --space-9: 56px;
  --space-10: 64px;
  --space-11: 80px;
  --space-12: 96px;
  --rhythm-section-tight-m: 24px;
  --rhythm-section-tight-d: 32px;
  --rhythm-section-base-m: 40px;
  --rhythm-section-base-d: 56px;
  --rhythm-section-loose-m: 56px;
  --rhythm-section-loose-d: 80px;
  --rhythm-block-m: 16px;
  --rhythm-block-d: 24px;
  --rhythm-element-m: 8px;
  --rhythm-element-d: 12px;
  --band-base-bg: #ffffff;
  --band-base-ink: #1b1b1b;
  --band-tint-bg: #f5f4f1;
  --band-tint-ink: #1b1b1b;
  --band-invert-bg: #1b1b1b;
  --band-invert-ink: #ffffff;
  --line-hairline-color: #e7e5df;
  --line-hairline-width: 1px;
  --line-rule-color: #d5d2ca;
  --line-rule-width: 1px;
  --line-divider-color: #1b1b1b;
  --line-divider-width: 2px;
  --line-quote-color: #1b1b1b;
  --line-quote-color-weak: #d5d2ca;
  --line-quote-width: 3px;
  --radius-base: 3px;
  --table-header-size: 0.75rem;
  --table-header-weight: 700;
  --table-header-color: #1b1b1b;
  --table-header-bg: #f5f4f1;
  --table-header-letter-spacing: 0.04em;
  --table-rowhead-size: 0.75rem;
  --table-rowhead-weight: 500;
  --table-rowhead-color: #1b1b1b;
  --table-rowhead-bg: #f5f4f1;
  --table-cell-size-m: 13px;
  --table-cell-size-d: 14px;
  --table-cell-color: #1b1b1b;
  --table-cell-padding-m: 8px 10px;
  --table-cell-padding-d: 10px 12px;
  --table-unit-size: 11px;
  --table-unit-color: #5b5b5b;
  --table-caption-size: 0.75rem;
  --table-caption-color: #5b5b5b;
  --table-empty-glyph: —;
  --table-empty-color: #5b5b5b;
  --table-hover-bg: #eef1ef;
  --table-sticky-border-width: 1px;
  --table-sticky-border-color: #5b5b5b;
  --table-scroll-fade-width: 28px;
  --table-mobile-chosen: scroll;
  --table-mobile-status: FROZEN;
  --table-mobile-scroll-sticky-first-col: true;
  --hero-sub-value-size-m: 19px;
  --hero-sub-value-size-d: 22px;
  --hero-sub-value-weight: 700;
  --hero-sub-label-size: 0.75rem;
  --hero-sub-unit-size: 11px;
  --cta-min-height: 48px;
  --cta-padding-m: 14px 20px;
  --cta-padding-d: 14px 28px;
  --cta-font-size: clamp(1rem, 2.6vw, 1.0625rem);
  --cta-font-weight: 700;
  --cta-bg: #c2431f;
  --cta-ink: #ffffff;
  --cta-hover-bg: #96300f;
  --cta-radius: 3px;
  --cta-transition: background .15s ease;
  --cta-hover-outline-width: 2px;
  --cta-hover-outline-color: #ffffff;
  --cta-pending-bg: #f5f4f1;
  --cta-pending-ink: #1b1b1b;
  --cta-pending-border-color: #5b5b5b;
  --cta-pending-border-width: 1px;
  --cta-pending-note-ink: #8a5410;
  --brand-wordmark-size: 1.0625rem;
  --brand-wordmark-weight: 700;
  --brand-wordmark-tracking: 0.14em;
  --banner-dev-bg: #2a2a2a;
  --banner-dev-ink: #ffffff;
  --banner-dev-mark: #ffd27a;
  --banner-dev-size: 0.75rem;
  --banner-dev-line-height: 1.5;
  --banner-dev-padding-block: 5px;
  --banner-dev-align: center;
  --sparse-bg: #f5f4f1;
  --sparse-ink: #1b1b1b;
  --sparse-rule-color: #8a5410;
  --sparse-rule-width: 3px;
  --sparse-padding-m: 24px;
  --sparse-padding-d: 32px;
  --sparse-slot-bg: #f0ece2;
  --sparse-slot-ink: #8a5410;
  --placeholder-underline-color: #8a5410;
  --placeholder-underline-style: dashed;
  --placeholder-underline-width: 1px;
  --placeholder-badge-size: 0.75rem;
  --placeholder-badge-ink: #8a5410;
  --fv-viewport-m: 375x667;
  --fv-viewport-m2: 390x844;
  --fv-safe-height-m: 553px;
  --fv-budget: 420px;
  --fv-header-height-m: 48px;
  --fv-header-height-d: 56px;
  --fv-pr-size: 0.75rem;
  --fv-pr-color: #6f6f6f;
  --fv-pr-align: right;
  --fv-pr-band: none;
  --fv-pr-padding: 6px 0 2px;
  --fv-pr-line-height: 1.4;
  --fv-pr-locked: true;
  --a11y-contrast-min-text: 4.5;
  --a11y-contrast-min-large-text: 3.0;
  --a11y-contrast-min-non-text: 3.0;
  --a11y-focus-width: 3px;
  --a11y-focus-offset: 2px;
  --a11y-focus-color: #17564a;
  --a11y-focus-color-invert: #ffffff;
  --a11y-tap-min: 44px;
  --a11y-tap-min-inline: 24px;
  --chart-background: #ffffff;
  --chart-axis: #d5d2ca;
  --chart-grid: #e7e5df;
  --chart-grid-direction: horizontal;
  --chart-grid-count: 5;
  --chart-line-width: 2;
  --chart-series: #17564a;
  --chart-marker-radius: 3.5;
  --chart-marker-last-only: true;
  --chart-annotation-size: 12px;
  --chart-annotation-weight: 700;
  --chart-annotation-color: #1b1b1b;
  --chart-label-size: 11px;
  --chart-label-color: #5b5b5b;
  --chart-label-family: "Helvetica Neue", "Roboto", Arial, "Hiragino Sans", sans-serif;
  --chart-y-axis-zero-base: false;
  --chart-area-fill-top-opacity: 0.15;
  --chart-area-fill-bottom-opacity: 0;
  --chart-area-fill-color: #17564a;
  --chart-area-stroke-width: 2;
  --chart-bars-fill-color: #17564a;
  --chart-bars-fill-opacity: 0.65;
  --chart-bars-gap-ratio: 0.38;
  --chart-bars-min-width: 3px;
  --chart-bars-max-width: 28px;
  --chart-bars-baseline-color: #d5d2ca;
  --chart-bars-label-color: #5b5b5b;
  --chart-strip-price-height-m: 200;
  --chart-strip-price-height-d: 220;
  --chart-strip-count-height-m: 46;
  --chart-strip-count-height-d: 52;
  --chart-strip-gap: 12px;
  --chart-strip-xaxis-height: 22;
  --chart-strip-count-label-width: 34;
  --chart-annotation-latest-weight: 700;
  --chart-annotation-extremum-weight: 400;
  --chart-annotation-extremum-color: #5b5b5b;
  --chart-annotation-leader-color: #d5d2ca;
  --chart-annotation-halo-color: #ffffff;
  --chart-annotation-halo-width: 3px;
  --chart-event-line-color: #5b5b5b;
  --chart-event-line-width: 1px;
  --chart-event-line-dash: 3 3;
  --chart-event-label-size: 11px;
  --chart-event-label-color: #5b5b5b;
  --chart-xaxis-label-size: 11px;
  --chart-xaxis-label-color: #5b5b5b;
  --chart-xaxis-tick-color: #d5d2ca;
  --chart-xaxis-tick-length: 4;
  --motion-duration: 0.15s;
  --motion-easing: ease;
  --layout-width-text: 760px;
  --layout-width-wide: 920px;
  --layout-gutter-m: 16px;
  --layout-gutter-d: 32px;
  }
/* @end:tokens-css */

/* --- 断面別エイリアス(tokens の -m / -d を切り替えるだけ) --- */
:root{
  --sp-sec-tight: var(--rhythm-section-tight-m);
  --sp-sec-base:  var(--rhythm-section-base-m);
  --sp-sec-loose: var(--rhythm-section-loose-m);
  --sp-block:     var(--rhythm-block-m);
  --sp-elem:      var(--rhythm-element-m);
  --gutter:       var(--layout-gutter-m);
  --header-h:     var(--fv-header-height-m);
  --cell-size:    var(--table-cell-size-m);
  --cell-pad:     var(--table-cell-padding-m);
  --cta-pad:      var(--cta-padding-m);
  --kpi-sub-size: var(--hero-sub-value-size-m);
  --sparse-pad:   var(--sparse-padding-m);
}
@media (min-width:768px){
  :root{
    --sp-sec-tight: var(--rhythm-section-tight-d);
    --sp-sec-base:  var(--rhythm-section-base-d);
    --sp-sec-loose: var(--rhythm-section-loose-d);
    --sp-block:     var(--rhythm-block-d);
    --sp-elem:      var(--rhythm-element-d);
    --gutter:       var(--layout-gutter-d);
    --header-h:     var(--fv-header-height-d);
    --cell-size:    var(--table-cell-size-d);
    --cell-pad:     var(--table-cell-padding-d);
    --cta-pad:      var(--cta-padding-d);
    --kpi-sub-size: var(--hero-sub-value-size-d);
    --sparse-pad:   var(--sparse-padding-d);
  }
}

/* --- 基礎(D-34a) --- */
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--band-base-bg); color:var(--band-base-ink);
  font-family:var(--font-scale-body-family);
  font-size:var(--font-scale-body-size);
  line-height:var(--font-scale-body-line-height);
  font-weight:var(--font-scale-body-weight);
  letter-spacing:var(--font-scale-body-letter-spacing);
  font-feature-settings:var(--font-scale-body-feature);
  text-rendering:optimizeLegibility;
}
.num{
  font-family:var(--font-scale-display-family);
  font-feature-settings:var(--font-scale-display-feature);
  font-variant-numeric:tabular-nums; letter-spacing:0;
}
h1{ font-size:var(--font-scale-h1-size); line-height:var(--font-scale-h1-line-height);
  font-weight:var(--font-scale-h1-weight); letter-spacing:var(--font-scale-h1-letter-spacing);
  font-feature-settings:var(--font-scale-h1-feature); margin:0; }
h1 .sub{ display:block; font-size:.66em; color:var(--color-ink-sub); font-weight:500;
  letter-spacing:var(--font-scale-h2-letter-spacing); margin-top:2px; }
h2{ font-size:var(--font-scale-h2-size); line-height:var(--font-scale-h2-line-height);
  font-weight:var(--font-scale-h2-weight); letter-spacing:var(--font-scale-h2-letter-spacing);
  font-feature-settings:var(--font-scale-h2-feature); text-wrap:balance;
  margin:0 0 var(--sp-block); padding-bottom:var(--sp-elem);
  border-bottom:var(--line-hairline-width) solid var(--line-hairline-color); }
h3{ font-size:var(--font-scale-caption-size); line-height:var(--font-scale-caption-line-height);
  font-weight:700; letter-spacing:var(--font-scale-caption-letter-spacing); margin:0 0 var(--sp-elem); }
p{ margin:0 0 var(--sp-block); }
p:last-child{ margin-bottom:0; }
.cap{ font-size:var(--font-scale-caption-size); line-height:var(--font-scale-caption-line-height);
  letter-spacing:var(--font-scale-caption-letter-spacing); color:var(--color-ink-sub); }
.small{ font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height);
  letter-spacing:var(--font-scale-small-letter-spacing); }
a{ color:var(--color-link); text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1px; }
a:hover{ color:var(--color-link-hover); }
:focus-visible{ outline:var(--a11y-focus-width) solid var(--a11y-focus-color);
  outline-offset:var(--a11y-focus-offset); }
.band-invert :focus-visible{ outline-color:var(--a11y-focus-color-invert); }
.measure{ max-width:var(--font-measure-body); }

/* --- D-30 プレースホルダ標識 --- */
[data-placeholder="d30-naming"]{
  text-decoration:underline var(--placeholder-underline-style) var(--placeholder-underline-color);
  text-underline-offset:3px; text-decoration-thickness:var(--placeholder-underline-width);
}
svg[data-placeholder="d30-naming"]{
  outline:var(--placeholder-underline-width) var(--placeholder-underline-style) var(--placeholder-underline-color);
  outline-offset:2px;
}

/* --- 面・帯・縦リズム(D-34b) --- */
.wrap{ max-width:var(--layout-width-text); margin:0 auto; padding-inline:var(--gutter); }
.wrap-wide{ max-width:var(--layout-width-wide); margin:0 auto; padding-inline:var(--gutter); }
section{ padding-top:var(--sec-t,var(--sp-sec-base)); padding-bottom:var(--sec-b,var(--sp-sec-base)); }
.t-tight{ --sec-t:var(--sp-sec-tight); } .t-loose{ --sec-t:var(--sp-sec-loose); }
.b-tight{ --sec-b:var(--sp-sec-tight); } .b-loose{ --sec-b:var(--sp-sec-loose); }
.band-tint{ background:var(--band-tint-bg); color:var(--band-tint-ink); }
.band-invert{ background:var(--band-invert-bg); color:var(--band-invert-ink); }
.rule-top{ border-top:var(--line-rule-width) solid var(--line-rule-color); }

/* --- 開発バナー(本番には存在しない) --- */
.dev{ background:var(--banner-dev-bg); color:var(--banner-dev-ink);
  font-size:var(--banner-dev-size); line-height:var(--banner-dev-line-height);
  padding:var(--banner-dev-padding-block) var(--gutter); text-align:var(--banner-dev-align); }
.dev b{ color:var(--banner-dev-mark); }
.dev .dev-why{ display:block; }

/* --- Z02 PR表記(様式は変更禁止) --- */
.pr p{ margin:0; padding:var(--fv-pr-padding);
  font-size:var(--fv-pr-size); line-height:var(--fv-pr-line-height);
  color:var(--fv-pr-color); text-align:var(--fv-pr-align); }

/* --- ヘッダー / パンくず / メタ行 --- */
.site-header{ border-bottom:var(--line-rule-width) solid var(--line-rule-color); }
.site-header .wrap-wide{ display:flex; align-items:center; justify-content:space-between; min-height:var(--header-h); }
.wordmark{ font-weight:var(--brand-wordmark-weight); letter-spacing:var(--brand-wordmark-tracking);
  font-size:var(--brand-wordmark-size); text-decoration:none; color:var(--color-ink); padding-block:var(--sp-elem); }
.area-link{ font-size:var(--font-scale-caption-size); display:inline-flex; align-items:center;
  min-height:var(--a11y-tap-min); }
.crumbs{ padding-top:var(--sp-elem); }
.crumbs ol{ list-style:none; display:flex; flex-wrap:wrap; gap:0 var(--sp-elem); margin:0; padding:0;
  font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height); color:var(--color-ink-sub); }
.crumbs li::after{ content:"›"; margin-left:var(--sp-elem); color:var(--color-ink-sub); }
.crumbs li:last-child::after{ content:""; }
.crumbs a{ color:var(--color-ink-sub); display:inline-block; min-height:var(--a11y-tap-min-inline); }
.crumbs [aria-current]{ color:var(--color-ink); }
.head{ padding-top:var(--sp-block); }
.meta{ display:flex; flex-wrap:wrap; gap:2px var(--sp-elem); margin:var(--sp-elem) 0 0; padding:0; list-style:none;
  font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height); color:var(--color-ink-sub); }
.meta .updated{ color:var(--color-ink); font-weight:700; }
.meta time{ font-family:var(--font-scale-display-family); font-variant-numeric:tabular-nums;
  font-feature-settings:var(--font-scale-display-feature); }
.lag .lag-label{ font-weight:700; color:var(--color-ink); }

/* --- チャート(D-26) --- */
.chart-fig{ margin:0; }
/* display は .chart-m / .chart-d 側だけで扱う(詳細度で潰さない) */
.chart-fig svg{ width:100%; height:auto; }
.chart-m{ display:block; }
.chart-d{ display:none; }
@media (min-width:768px){ .chart-m{ display:none; } .chart-d{ display:block; } }
.chart-fig figcaption{ margin-top:var(--sp-elem); }
.c-grid line{ stroke:var(--chart-grid); stroke-width:1; }
.c-ylab text, .c-xlab text, .c-clab-g text{
  font-family:var(--chart-label-family); font-size:var(--chart-label-size);
  fill:var(--chart-label-color); font-variant-numeric:tabular-nums; }
.c-ylab text, .c-clab-g text{ text-anchor:end; }
.c-area{ stroke:none; }
.c-line{ fill:none; stroke:var(--chart-series); stroke-width:var(--chart-area-stroke-width);
  stroke-linejoin:round; stroke-linecap:round; }
.c-mark{ fill:var(--chart-series); }
.c-mark-x{ fill:var(--chart-annotation-extremum-color); }
/* 注釈は系列線・面塗りの上に載る。地色のハローを敷かないと線が文字を横切って
   打ち消し線に見える(装飾ではなく可読性の措置) */
.c-ann-bg{ fill:var(--chart-background); }
.c-ann{ font-family:var(--font-scale-body-family);
  paint-order:stroke fill; stroke:var(--chart-annotation-halo-color);
  stroke-width:var(--chart-annotation-halo-width); stroke-linejoin:round; }
.c-ann-latest{ font-size:var(--chart-annotation-size); font-weight:var(--chart-annotation-latest-weight);
  fill:var(--chart-annotation-color); }
.c-ann-x{ font-size:var(--chart-event-label-size); font-weight:var(--chart-annotation-extremum-weight);
  fill:var(--chart-annotation-extremum-color); }
.c-bar{ fill:var(--chart-bars-fill-color); fill-opacity:var(--chart-bars-fill-opacity); }
.c-baseline{ stroke:var(--chart-bars-baseline-color); stroke-width:1; }
.c-xtick{ stroke:var(--chart-xaxis-tick-color); stroke-width:1; }
.c-event{ stroke:var(--chart-event-line-color); stroke-width:1; stroke-dasharray:var(--chart-event-line-dash); }
.c-event-lab{ font-family:var(--font-scale-body-family); font-size:var(--chart-event-label-size);
  fill:var(--chart-event-label-color); }

/* --- 表(D-34d) --- */
.tbl-wrap{ position:relative; }
.tbl{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.tbl-wrap::after{ content:""; position:absolute; inset-block:0; right:0; width:var(--table-scroll-fade-width);
  background:linear-gradient(to right, rgba(255,255,255,0), var(--color-bg)); pointer-events:none; opacity:0; }
.tbl-wrap.is-scrollable:not(.at-end)::after{ opacity:1; }
table{ border-collapse:collapse; width:100%; }
.tbl-cap{ font-size:var(--table-caption-size); line-height:1.6; color:var(--table-caption-color);
  margin:0 0 var(--sp-elem); }
th,td{ padding:var(--cell-pad); text-align:right; white-space:nowrap;
  border-bottom:var(--line-hairline-width) solid var(--line-hairline-color); }
thead th{ font-size:var(--table-header-size); font-weight:var(--table-header-weight);
  letter-spacing:var(--table-header-letter-spacing); color:var(--table-header-color);
  background:var(--table-header-bg); border-bottom:var(--line-rule-width) solid var(--line-rule-color); }
tbody th{ text-align:left; font-size:var(--table-rowhead-size); font-weight:var(--table-rowhead-weight);
  color:var(--table-rowhead-color); background:var(--table-rowhead-bg); }
thead th:first-child{ text-align:left; }
td{ font-family:var(--font-scale-data-s-family); font-size:var(--cell-size);
  font-variant-numeric:tabular-nums; font-feature-settings:var(--font-scale-data-s-feature);
  color:var(--table-cell-color); }
.empty{ color:var(--table-empty-color); }
.tbl-note{ margin-top:var(--sp-block); }
.thin-note{ margin-top:var(--sp-block); border-left:var(--line-quote-width) solid var(--line-quote-color-weak);
  padding-left:var(--sp-block); }

/* --- CTA --- */
.cta .panel{ padding:var(--sp-sec-tight) var(--gutter); }
.cta h2{ border-bottom:none; padding-bottom:0; margin-bottom:var(--sp-elem); color:inherit; }
.cta.primary .panel{ background:var(--band-invert-bg); color:var(--band-invert-ink); border-radius:var(--radius-base); }
.cta.secondary .panel{ border:var(--line-rule-width) solid var(--line-rule-color); border-radius:var(--radius-base); }
.cta.primary a{ color:var(--color-invert-ink); }
.btn{ display:block; width:100%; text-align:center; box-sizing:border-box;
  background:var(--cta-bg); color:var(--cta-ink); text-decoration:none;
  font-family:var(--font-scale-body-family); font-weight:var(--cta-font-weight); font-size:var(--cta-font-size);
  padding:var(--cta-pad); min-height:var(--cta-min-height); line-height:1.4;
  border-radius:var(--cta-radius); border:0; transition:var(--cta-transition); }
.btn:hover{ background:var(--cta-hover-bg);
  outline:var(--cta-hover-outline-width) solid var(--cta-hover-outline-color); outline-offset:0; }
.cta .micro{ font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height);
  color:var(--color-ink-sub); margin:var(--sp-block) 0 0; }
.cta.primary .micro{ color:var(--color-invert-ink-sub); }
.cta .btn-wrap{ margin-top:var(--sp-block); }
@media (min-width:600px){ .btn{ display:inline-block; width:auto; } }
/* H-06(ASP提携)未通過の非活性CTA。リンクではないので hover も遷移も持たない。
   面を落として「押せない」ことを見た目で示し、理由は直後の一文で必ず書く。
   本番の既定意匠ではない(FEATURES.ctaPendingH06=false で通常のCTAに戻る) */
.btn-pending{
  background:var(--cta-pending-bg); color:var(--cta-pending-ink);
  border:var(--cta-pending-border-width) solid var(--cta-pending-border-color);
  cursor:default;
}
.btn-pending:hover{ background:var(--cta-pending-bg); outline:0; }
.cta-pending-note{ display:block; margin-top:var(--sp-elem);
  font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height);
  color:var(--cta-pending-note-ink); }
.cta.primary .cta-pending-note{ color:var(--color-invert-ink-sub); }

/* --- D-29 僅少エリア専用CVブロック ---------------------------------------
   一次CTA(反転帯)とは面の格を変える。反転帯は1ページ1回の規則を守り、
   ここでは tint + caution 左罫の「注意して読む枠」として組む。
   強調の唯一性は CTA ボタン色だけに残す。 */
.sparse-block{
  background:var(--sparse-bg); color:var(--sparse-ink);
  border-left:var(--sparse-rule-width) solid var(--sparse-rule-color);
  padding:var(--sparse-pad); border-radius:var(--radius-base);
  margin:0 0 var(--sp-block);
}
.sparse-block h3{ font-size:var(--font-scale-h2-size); line-height:var(--font-scale-h2-line-height);
  font-weight:700; margin:0 0 var(--sp-elem); }
.sparse-block .btn{ margin-top:var(--sp-block); }
.sparse-block .micro{ font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height);
  color:var(--color-ink-sub); margin:var(--sp-block) 0 0; }
/* pipeline が件数・対象期間を差し込む箇所。実データ投入後は通常の数値組版に戻る */
.slot{ background:var(--sparse-slot-bg); color:var(--sparse-slot-ink);
  padding:0 4px; border-radius:2px; font-family:var(--font-scale-display-family);
  font-variant-numeric:tabular-nums; }
.sparse-list{ list-style:none; margin:0; padding:0; }
.sparse-list > li{ padding-top:var(--sp-block); }
.sparse-list > li + li{ border-top:var(--line-hairline-width) solid var(--line-hairline-color);
  margin-top:var(--sp-block); }
.sparse-list h3.anchor-h{ font-size:var(--font-scale-h2-size); font-weight:700;
  scroll-margin-top:var(--space-6); margin:0 0 var(--sp-elem); }
/* D-37-4: 各エリアは見出し+事実文のみ。CVブロックはセクション末に1つだけ置く */
.sparse-fact{ margin:0; }
.sparse-list + .sparse-block{ margin-top:var(--sp-sec-tight); }

/* --- エリアファインダー(D-19①) --- */
.finder{ border:var(--line-rule-width) solid var(--line-rule-color); border-radius:var(--radius-base);
  padding:var(--sp-block); }
.finder .row{ display:grid; gap:var(--sp-block); grid-template-columns:1fr; }
@media (min-width:600px){ .finder .row{ grid-template-columns:repeat(3,1fr); } }
.finder label{ display:block; font-size:var(--font-scale-small-size); color:var(--color-ink-sub); margin-bottom:2px; }
.finder select{ width:100%; min-height:var(--a11y-tap-min); font-family:inherit;
  font-size:var(--font-scale-caption-size); color:var(--color-ink); background:var(--color-bg);
  border:var(--line-rule-width) solid var(--line-rule-color); border-radius:var(--radius-base);
  padding:0 var(--sp-elem); }
.finder .result{ margin-top:var(--sp-block); }

/* --- 更新履歴(D-28-6) --- */
.history{ list-style:none; margin:0; padding:0;
  font-size:var(--font-scale-caption-size); line-height:var(--font-scale-caption-line-height); }
.history li{ display:grid; grid-template-columns:auto 1fr; gap:0 var(--sp-block);
  padding:var(--sp-elem) 0; border-bottom:var(--line-hairline-width) solid var(--line-hairline-color); }
.history li:last-child{ border-bottom:none; }
.history .hist-date{ font-family:var(--font-scale-display-family); font-variant-numeric:tabular-nums;
  font-feature-settings:var(--font-scale-display-feature); color:var(--color-ink); white-space:nowrap; }
.history .hist-type{ font-size:var(--font-scale-small-size); color:var(--color-ink-sub); }
.history .hist-sum, .history .hist-n{ grid-column:1 / -1; }

/* --- 出典・免責 --- */
.sources .doc{ border-left:var(--line-quote-width) solid var(--line-quote-color-weak);
  padding-left:var(--sp-block); margin:0 0 var(--sp-block);
  font-size:var(--font-scale-caption-size); line-height:var(--font-scale-caption-line-height); }
.sources .disclaimer{ border-left-color:var(--line-quote-color); font-weight:700; }

/* --- フッター --- */
.site-footer{ border-top:var(--line-divider-width) solid var(--line-divider-color); }
.site-footer .wrap-wide{ padding-block:var(--sp-sec-tight); }
.site-footer ul{ list-style:none; display:flex; flex-wrap:wrap; gap:0 var(--sp-block); margin:0 0 var(--sp-elem); padding:0; }
.site-footer li a{ display:inline-flex; align-items:center; min-height:var(--a11y-tap-min);
  font-size:var(--font-scale-caption-size); color:var(--color-ink-sub); }
.site-footer .corp{ font-size:var(--font-scale-small-size); line-height:var(--font-scale-small-line-height);
  color:var(--color-ink-sub); margin:0; }

/* --- 検分シート用(レビュー専用ページのみで使う。本番ページには出ない) --- */
.spec{ width:100%; border-collapse:collapse; margin:0 0 var(--sp-block);
  font-size:var(--font-scale-caption-size); }
.spec caption{ text-align:left; color:var(--color-ink-sub); font-size:var(--font-scale-small-size);
  line-height:1.6; padding-bottom:var(--sp-elem); }
.spec th, .spec td{ white-space:normal; vertical-align:top; }
.spec .l{ text-align:left; }
.spec .n{ text-align:right; font-family:var(--font-scale-display-family); font-variant-numeric:tabular-nums; }
.spec .ok{ color:var(--color-accent); font-weight:700; }
.spec .ng{ color:var(--color-cta); font-weight:700; }
.spec .na{ color:var(--color-ink-sub); }
.spec .note{ color:var(--color-ink-sub); font-size:var(--font-scale-small-size); }
.spec .chip{ display:inline-block; padding:2px 6px; border-radius:var(--radius-base);
  font-family:var(--font-scale-display-family); font-variant-numeric:tabular-nums; }
.mc .mc-id{ font-weight:700; color:var(--color-ink); }
.mc .mc-state{ margin-left:var(--sp-elem); font-size:var(--font-scale-small-size); color:var(--color-caution); }
.mc .mc-where{ color:var(--color-ink-sub); font-size:var(--font-scale-small-size); }
.mc .mc-copy{ margin:0 0 var(--sp-elem); }
.mc .mc-f{ display:block; font-size:var(--font-scale-small-size); color:var(--color-ink-sub); }
.mc .mc-why{ margin:0 0 var(--sp-elem); color:var(--color-ink-sub); }
.mc .mc-risk{ margin:0 0 var(--sp-elem); border-left:var(--line-quote-width) solid var(--color-caution);
  padding-left:var(--sp-block); }
.mc .mc-comp{ margin:0; padding-left:1.2em; color:var(--color-ink-sub); }
.demo{ border:var(--line-rule-width) solid var(--line-rule-color); border-radius:var(--radius-base);
  padding:var(--sp-block); margin:0 0 var(--sp-block); }
.demo > .demo-t{ font-size:var(--font-scale-small-size); color:var(--color-ink-sub);
  margin:0 0 var(--sp-elem); }

@media (prefers-reduced-motion:reduce){ *{ transition:none !important; } }
