:root {
  --color-bg: #f7f8f9;
  --color-surface: #ffffff;
  --color-surface-soft: #f1f3f5;
  --color-text: #1f252b;
  --color-subtext: #66707a;
  --color-muted: #8b949e;
  --color-accent: #9aa3ad;
  --color-accent-light: #c7cdd3;
  --color-accent-dark: #6f7a85;
  --color-silver: #b8c0c8;
  --color-silver-light: #e4e7ea;
  --color-silver-dark: #7d8791;
  --color-silver-section: #3f4852;
  --color-silver-section-dark: #252c34;
  --color-silver-section-light: #66717d;
  --color-silver-section-text: #ffffff;
  --color-silver-section-muted: rgba(255, 255, 255, 0.72);
  --color-silver-section-border: rgba(255, 255, 255, 0.18);
  --color-silver-section-surface: rgba(255, 255, 255, 0.08);
  --color-border: #d9dee3;
  --color-border-light: #edf0f2;
  --color-dark: #20262d;
  --color-ink: #111820;
  --shadow-soft: 0 12px 30px rgba(17, 24, 32, 0.08);
  --shadow-medium: 0 16px 38px rgba(17, 24, 32, 0.14);
  --overlay-dark-soft: rgba(17, 24, 32, 0.42);
  --overlay-dark-medium: rgba(17, 24, 32, 0.62);
  --overlay-white-soft: rgba(255, 255, 255, 0.72);
  --surface-white-alpha: rgba(255, 255, 255, 0.88);
  --border-white-alpha: rgba(255, 255, 255, 0.32);
  --radius-md: 16px;
  --radius-lg: 24px;
  --header-height: 76px;
  --font-heading: "Yu Mincho", "YuMincho", "Hiragino Mincho ProN", "Hiragino Mincho Pro", "Noto Serif JP", "Times New Roman", serif;
}

html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-height) + 16px); }
body { background: var(--color-bg); color: var(--color-text); font-family: "Noto Sans JP", "Yu Gothic", sans-serif; font-size: 16px; line-height: 1.8; }
body.is-menu-open { overflow: hidden; }
a { color: var(--color-accent-dark); text-underline-offset: 0.2em; }
a:hover { color: var(--color-accent); }
:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
img { height: auto; max-width: 100%; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); }
h1, h2, h3 { font-weight: 500; letter-spacing: 0.04em; line-height: 1.4; }
.c-page-header__title, .c-section-heading, .c-plan-card__title, .c-post-card__title, .p-hero__title, .p-feature-card h3 { font-family: var(--font-heading); }
.l-main { min-height: 60vh; padding-top: var(--header-height); }
.entry-content { font-size: 17px; }
.entry-content > * + * { margin-top: 1.5rem; }
.entry-content h2 { font-size: clamp(1.75rem, 4vw, 2.25rem); margin-top: 4rem; }
.entry-content h3 { font-size: clamp(1.25rem, 3vw, 1.5rem); margin-top: 2.5rem; }
.entry-content table { min-width: 680px; }
@media (max-width: 991.98px) { :root { --header-height: 64px; } }
