/* ============================================================
   キャリコンことば図鑑 — スタイルシート
   コンセプト: 忙しい人が、静かに学べる小さな図書室
   ============================================================ */

:root {
  --color-background: #f5f2eb;
  --color-surface: #fffdf8;
  --color-text: #272722;
  --color-text-subtle: #6f6b63;
  --color-border: #d8d2c7;

  --color-sky: #c8dce1;
  --color-sky-light: #e8f0f1;

  --color-yellow: #e7d49a;
  --color-yellow-light: #f5efd9;

  --color-terracotta: #b86f55;
  --color-terracotta-dark: #9d5a43;
  --color-green: #758679;

  --color-pr: #72584d;

  /* 情報ラベル */
  --label-official-bg: #dfe9ee;
  --label-official-text: #2f5265;
  --label-experience-bg: #e2eae2;
  --label-experience-text: #3d5a44;
  --label-editorial-bg: #f5efd9;
  --label-editorial-text: #6d5a20;
  --label-unverified-bg: #e9e6e0;
  --label-unverified-text: #6f6b63;

  /* サイト全体をやわらかい丸ゴシックで統一 */
  --font-sans: "Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Yu Gothic",
    "Hiragino Kaku Gothic ProN", sans-serif;
  --font-serif: var(--font-sans);

  --max-page: 1240px;
  --max-article: 740px;
}

/* ---------- リセット ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: 120px; /* 固定ヘッダーのぶん、ページ内リンクの位置を下げる */
}
body {
  margin: 0;
  background: var(--color-background);
  color: var(--color-text);
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
  /* スマホ下部ナビと本文が重ならない余白 */
  padding-bottom: 0;
}
img {
  max-width: 100%;
  height: auto;
}
a {
  color: inherit;
  text-underline-offset: 0.2em;
}
a:hover {
  color: var(--color-terracotta);
}
h1,
h2,
h3,
h4 {
  font-family: var(--font-serif);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.02em;
  margin: 0 0 0.6em;
}
p,
ul,
ol,
dl {
  margin: 0 0 1em;
}
button {
  font-family: inherit;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--color-surface);
  padding: 8px 16px;
  z-index: 100;
}
.skip-link:focus {
  left: 8px;
}

/* ---------- レイアウト ---------- */
.container {
  max-width: var(--max-page);
  margin: 0 auto;
  padding: 0 20px;
}
.container--narrow {
  max-width: 860px;
}
.container--article {
  max-width: var(--max-article);
}
.site-main {
  min-height: 60vh;
}
.section {
  padding: 60px 0;
}
.section--surface {
  background: var(--color-surface);
}
.section--sky {
  background: var(--color-sky-light);
}
.section--yellow {
  background: var(--color-yellow-light);
}
.section__more {
  margin-top: 24px;
}

/* ---------- ボタン ---------- */
.button {
  display: inline-block;
  padding: 12px 26px;
  border-radius: 4px;
  border: 1px solid transparent;
  font-size: 15px;
  line-height: 1.4;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}
.button--primary {
  background: var(--color-terracotta);
  color: #fff;
}
.button--primary:hover {
  background: var(--color-terracotta-dark);
  color: #fff;
}
.button--secondary {
  background: transparent;
  color: var(--color-text);
  border-color: var(--color-text);
}
.button--secondary:hover {
  background: var(--color-text);
  color: var(--color-surface);
}
.button--ghost {
  background: transparent;
  color: var(--color-text-subtle);
  border-color: var(--color-border);
}
.button--ghost:hover {
  border-color: var(--color-text);
  color: var(--color-text);
}

/* ---------- ヘッダー(固定・検索サニー先生つき) ---------- */
.site-header {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  position: sticky;
  top: 0;
  z-index: 70;
}
.site-header__inner {
  position: relative;
}
.site-header__inner {
  max-width: var(--max-page);
  margin: 0 auto;
  padding: 18px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.site-logo {
  text-decoration: none;
  display: block;
}
.site-logo__ja {
  display: block;
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.04em;
  white-space: nowrap; /* スマホでタイトルを折り返さない */
}
.site-logo__en {
  display: block;
  font-size: 10px;
  letter-spacing: 0.22em;
  color: var(--color-text-subtle);
}
.site-header__tagline {
  margin: 4px 0 0;
  font-size: 11px;
  color: var(--color-text-subtle);
}
.site-nav ul {
  display: flex;
  gap: 26px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-nav a {
  text-decoration: none;
  font-size: 15px;
  padding-bottom: 4px;
}
.site-nav a[aria-current="page"] {
  border-bottom: 2px solid var(--color-terracotta);
}
.menu-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: none;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  padding: 8px 14px;
  font-size: 13px;
  cursor: pointer;
}
.menu-button__icon {
  display: inline-block;
  width: 16px;
  height: 2px;
  background: var(--color-text);
  position: relative;
}
.menu-button__icon::before,
.menu-button__icon::after {
  content: "";
  position: absolute;
  left: 0;
  width: 16px;
  height: 2px;
  background: var(--color-text);
}
.menu-button__icon::before {
  top: -5px;
}
.menu-button__icon::after {
  top: 5px;
}

/* ドロワー */
.drawer {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
}
.drawer__inner {
  max-width: var(--max-page);
  margin: 0 auto;
  padding: 24px 20px 32px;
}
.drawer__label {
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--color-text-subtle);
  margin-bottom: 12px;
}
.drawer__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 4px 24px;
}
.drawer__list a {
  display: block;
  padding: 10px 0;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  font-size: 14px;
}
.drawer__list a:hover,
.drawer__list a:focus-visible {
  border-bottom-color: var(--color-border);
}
.drawer__list--main {
  margin-bottom: 24px;
}
.drawer__list--main a {
  font-size: 16px;
  font-weight: 700;
}
.drawer__list--main a[aria-current="page"] {
  color: var(--color-terracotta);
}

/* ---------- パンくず ---------- */
.breadcrumbs {
  max-width: var(--max-page);
  margin: 0 auto;
  padding: 14px 20px 0;
}
.breadcrumbs ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  font-size: 12px;
  color: var(--color-text-subtle);
}
.breadcrumbs li + li::before {
  content: "/";
  margin: 0 6px;
  color: var(--color-border);
}

/* ---------- セクションヘッダー ---------- */
.section-header {
  margin-bottom: 40px;
}
.section-header__en {
  font-size: 11px;
  letter-spacing: 0.24em;
  color: var(--color-terracotta);
  margin: 0 0 8px;
}
.section-header__title {
  font-size: 26px;
  margin: 0 0 12px;
}
.section-header__lede {
  color: var(--color-text-subtle);
  max-width: 640px;
  margin: 0;
}

/* ---------- ヒーロー(左テキスト・右キャラクター・ゆったり) ---------- */
.hero {
  padding: 128px 0 120px;
  position: relative;
  overflow: hidden;
}

/* 空の背景(img/hero-sky.jpg を置くと表示される。ゆっくり流れる=早送りの空) */
.hero__bg {
  position: absolute;
  inset: -6%;
  /* CSSからの相対パス(サブパス配信でも動く) */
  background-image: url("../img/hero-sky.jpg");
  background-size: cover;
  background-position: center;
  animation: sky-drift 46s ease-in-out infinite alternate;
  z-index: 0;
}
@keyframes sky-drift {
  0% {
    transform: scale(1) translateX(0);
  }
  100% {
    transform: scale(1.1) translateX(-2.4%);
  }
}
/* 文字を読みやすくする、うすいベール(左は濃く、右は淡く) */
.hero__veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.62) 0%,
    rgba(255, 255, 255, 0.74) 55%,
    rgba(255, 255, 255, 0.5) 100%
  );
  z-index: 0;
}
@media (prefers-reduced-motion: reduce) {
  .hero__bg {
    animation: none;
  }
}
.hero__inner {
  max-width: 1160px;
  margin: 0 auto;
  padding: 0 24px;
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 76px;
}
.hero__text {
  flex: 1;
  min-width: 0;
  text-align: left;
}
.hero__chara-tagline {
  display: inline-block;
  font-size: 14px;
  font-weight: 700;
  color: var(--color-terracotta);
  background: var(--color-surface);
  border: 1.5px solid var(--color-yellow);
  border-radius: 999px;
  padding: 6px 18px;
  margin-bottom: 18px;
}
.hero__actions {
  justify-content: flex-start;
}

/* 右側: モヤンとサニー先生の掛け合い */
.hero__characters {
  flex: none;
  width: 420px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.hero__pair {
  display: flex;
  align-items: flex-end;
  gap: 14px;
}
.hero__chara {
  flex: none;
  text-align: center;
}
.hero__chara .chara {
  width: 104px;
  height: 104px;
  animation: chara-float 4s ease-in-out infinite;
}
.hero__pair--sunny .chara {
  animation-delay: 1.6s;
}
.hero__chara-name {
  margin: 2px 0 0;
  font-size: 12px;
  font-weight: 700;
  color: var(--color-text-subtle);
}
.hero__balloon {
  position: relative;
  margin: 0;
  padding: 16px 20px;
  border-radius: 18px;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.7;
}
/* 吹き出しの「しっぽ」: 話しているキャラクターの方を向く */
.hero__balloon--moyan {
  background: #ffffff;
  border: 1.5px solid #b6c0cc;
}
.hero__balloon--moyan::before,
.hero__balloon--moyan::after {
  content: "";
  position: absolute;
  bottom: 22px;
  border: solid transparent;
}
.hero__balloon--moyan::before {
  left: -13px;
  border-width: 9px 13px 9px 0;
  border-right-color: #b6c0cc;
}
.hero__balloon--moyan::after {
  left: -10px;
  border-width: 8px 12px 8px 0;
  border-right-color: #ffffff;
}
.hero__balloon--sunny {
  background: #fdf9dc;
  border: 1.5px solid #ded263;
}
.hero__balloon--sunny::before,
.hero__balloon--sunny::after {
  content: "";
  position: absolute;
  bottom: 22px;
  border: solid transparent;
}
.hero__balloon--sunny::before {
  right: -13px;
  border-width: 9px 0 9px 13px;
  border-left-color: #ded263;
}
.hero__balloon--sunny::after {
  right: -10px;
  border-width: 8px 0 8px 12px;
  border-left-color: #fdf9dc;
}
.hero__characters .hero__chara-tagline {
  margin: 14px auto 0;
  font-size: 13px;
  line-height: 1.9;
  text-align: center;
}
/* ミニモヤンのひとこと */
.hero__mini {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
}
.hero__mini-chara {
  flex: none;
}
.hero__mini-bubble {
  position: relative;
  margin: 0;
  padding: 10px 14px;
  border-radius: 12px;
  background: #ffffff;
  border: 1.5px solid #b6c0cc;
  font-size: 13px;
  line-height: 1.7;
}
.hero__mini-bubble::before,
.hero__mini-bubble::after {
  content: "";
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  border: solid transparent;
}
.hero__mini-bubble::before {
  left: -11px;
  border-width: 7px 11px 7px 0;
  border-right-color: #b6c0cc;
}
.hero__mini-bubble::after {
  left: -8px;
  border-width: 6px 10px 6px 0;
  border-right-color: #ffffff;
}
.hero__en {
  font-size: 11px;
  letter-spacing: 0.28em;
  color: var(--color-terracotta);
  margin-bottom: 20px;
}
.hero__title {
  font-size: clamp(30px, 5vw, 44px);
  letter-spacing: 0.06em;
  line-height: 1.7;
  margin-bottom: 36px;
  max-width: 720px;
}
.hero__subconcept {
  font-size: 17px;
  font-weight: 700;
  color: var(--color-terracotta);
  line-height: 2.2;
  margin: 0 0 32px;
}
.hero__lede {
  max-width: 560px;
  line-height: 2.1;
  margin-bottom: 20px;
}
.hero__note {
  color: var(--color-text-subtle);
  font-size: 14px;
  max-width: 560px;
  margin-bottom: 44px;
}
.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 16px;
}
.hero__sub-cta a {
  font-size: 14px;
  color: var(--color-text-subtle);
}
/* ---------- キャラクター(もやん&サニー) ---------- */
.chara {
  display: block;
  animation: chara-float 4s ease-in-out infinite;
}
.chara--sunny {
  animation-delay: 1.6s;
}
@media (prefers-reduced-motion: reduce) {
  .chara {
    animation: none;
  }
}
@keyframes chara-float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-5px);
  }
}
.chara-guide {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  margin: 18px 0;
}
.chara-guide--sunny {
  flex-direction: row-reverse;
}
.chara-guide__figure {
  flex: none;
  text-align: center;
}
.chara-guide__name {
  display: block;
  font-size: 11px;
  font-weight: 700;
  color: var(--color-text-subtle);
  margin-top: 2px;
}
.chara-guide__bubble {
  position: relative;
  margin: 0 0 18px;
  padding: 14px 18px;
  border-radius: 16px;
  background: var(--color-surface);
  font-size: 15px;
  line-height: 1.7;
}
.chara-guide--moyan .chara-guide__bubble {
  border: 1.5px solid #b6c0cc;
  background: #ffffff;
}
.chara-guide--moyan .chara-guide__bubble::before,
.chara-guide--moyan .chara-guide__bubble::after {
  content: "";
  position: absolute;
  bottom: 16px;
  border: solid transparent;
}
.chara-guide--moyan .chara-guide__bubble::before {
  left: -12px;
  border-width: 8px 12px 8px 0;
  border-right-color: #b6c0cc;
}
.chara-guide--moyan .chara-guide__bubble::after {
  left: -9px;
  border-width: 7px 11px 7px 0;
  border-right-color: #ffffff;
}
.chara-guide--sunny .chara-guide__bubble {
  border: 1.5px solid #ded263;
  background: #fdf9dc;
}
.chara-guide--sunny .chara-guide__bubble::before,
.chara-guide--sunny .chara-guide__bubble::after {
  content: "";
  position: absolute;
  bottom: 16px;
  border: solid transparent;
}
.chara-guide--sunny .chara-guide__bubble::before {
  right: -12px;
  border-width: 8px 0 8px 12px;
  border-left-color: #ded263;
}
.chara-guide--sunny .chara-guide__bubble::after {
  right: -9px;
  border-width: 7px 0 7px 11px;
  border-left-color: #fdf9dc;
}
.chara-dialogue {
  margin: 8px 0 8px;
}

/* ---------- 検索 ---------- */
.site-search__heading {
  font-size: 22px;
  text-align: center;
}
.site-search__form {
  display: flex;
  gap: 10px;
  max-width: 620px;
  margin: 0 auto;
}
.site-search__form input[type="search"] {
  flex: 1;
  min-width: 0;
  padding: 14px 18px;
  font-size: 16px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
}
.site-search__form input[type="search"]:focus {
  outline: 2px solid var(--color-sky);
  outline-offset: 1px;
}
.site-search__popular {
  text-align: center;
  font-size: 13px;
  color: var(--color-text-subtle);
  margin-top: 18px;
}
.site-search__popular a {
  display: inline-block;
  margin: 4px 6px;
  padding: 4px 12px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  text-decoration: none;
  background: var(--color-surface);
  font-size: 13px;
}

/* 検索結果 */
.search-results {
  margin-top: 48px;
}
.search-results__status {
  color: var(--color-text-subtle);
  font-size: 14px;
}
.search-results__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.search-results__list li {
  border-bottom: 1px solid var(--color-border);
}
.search-results__list a {
  display: block;
  padding: 16px 4px;
  text-decoration: none;
}
.search-result__type {
  display: inline-block;
  font-size: 11px;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--label-official-bg);
  color: var(--label-official-text);
  margin-right: 10px;
  vertical-align: middle;
}
.search-result__title {
  font-family: var(--font-serif);
  font-size: 17px;
}
.search-result__desc {
  display: block;
  font-size: 13px;
  color: var(--color-text-subtle);
  margin-top: 4px;
}

/* ---------- 3本柱 ---------- */
.three-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.pillar {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 20px;
  padding: 26px 22px 22px;
  text-decoration: none;
  color: var(--color-text);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.pillar:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 26px rgba(63, 70, 82, 0.1);
}
.pillar__chara {
  line-height: 0;
  margin-bottom: 6px;
}
.pillar__en {
  font-size: 11px;
  letter-spacing: 0.28em;
  color: var(--color-terracotta);
  font-weight: 700;
}
.pillar__title {
  font-size: 18px;
  font-weight: 700;
}
.pillar__text {
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--color-text-subtle);
}
.pillar__cta {
  margin-top: 8px;
  font-size: 13px;
  font-weight: 700;
  color: var(--color-terracotta);
}

/* ---------- 学習ルート ---------- */
.learning-path {
  list-style: none;
  margin: 0 0 8px;
  padding: 0;
  counter-reset: none;
}
.learning-path__step a {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 16px 6px;
  text-decoration: none;
  border-bottom: 1px solid var(--color-border);
}
.learning-path__number {
  flex: none;
  width: 34px;
  height: 34px;
  border: 1px solid var(--color-text);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
}
.learning-path__title {
  font-family: var(--font-serif);
  font-size: 17px;
}
.learning-path__cta {
  margin-top: 28px;
}

/* ---------- カテゴリー ---------- */
.category-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px 48px;
}
.category-item {
  border-top: 1px solid var(--color-text);
  padding-top: 18px;
}
.category-item__en {
  font-size: 11px;
  letter-spacing: 0.22em;
  color: var(--color-terracotta);
  margin-bottom: 8px;
}
.category-item__name {
  font-size: 19px;
  margin-bottom: 8px;
}
.category-item__name a {
  text-decoration: none;
}
.category-item__desc {
  font-size: 14px;
  color: var(--color-text-subtle);
  margin-bottom: 10px;
}
.category-item__more {
  font-size: 13px;
  margin: 0;
}

/* ---------- 今日の3分学習 ---------- */
.daily-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.daily-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 24px;
}
.daily-card__label {
  font-size: 12px;
  color: var(--color-text-subtle);
  letter-spacing: 0.1em;
  margin-bottom: 12px;
}
.daily-card__title {
  font-family: var(--font-serif);
  font-size: 20px;
  margin-bottom: 8px;
}
.daily-card__title a {
  text-decoration: none;
}
.daily-card__desc {
  font-size: 14px;
  color: var(--color-text-subtle);
  margin: 0;
}
.daily-card__question {
  font-size: 15px;
}
.daily-card__quiz-actions {
  display: flex;
  gap: 10px;
  margin-bottom: 8px;
}
.daily-card__result,
.quiz-box__result {
  font-size: 14px;
  background: var(--color-yellow-light);
  padding: 12px 14px;
  border-radius: 6px;
}

/* ---------- 受講記録 ---------- */
.study-journal {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 48px 40px;
  text-align: center;
}
.study-journal .section-header__title {
  font-size: 23px;
}
.study-journal__desc {
  max-width: 560px;
  margin: 0 auto 28px;
  color: var(--color-text-subtle);
}
.study-journal__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}

/* ---------- 学校カード ---------- */
.school-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
}
.school-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 26px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.school-card__meta {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: var(--color-text-subtle);
  margin: 0 0 6px;
}
.school-card__name {
  font-size: 18px;
  margin: 0;
}
.school-card__name a {
  text-decoration: none;
}
.school-card__facts {
  margin: 0;
  font-size: 14px;
  border-top: 1px solid var(--color-border);
}
.school-card__facts > div {
  display: flex;
  gap: 12px;
  padding: 7px 0;
  border-bottom: 1px solid var(--color-border);
}
.school-card__facts dt {
  flex: none;
  width: 8.5em;
  color: var(--color-text-subtle);
}
.school-card__facts dd {
  margin: 0;
}
.school-card__highlights {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 13px;
}
.school-card__highlights li::before {
  content: "◦ ";
  color: var(--color-terracotta);
}
.school-card__actions {
  display: flex;
  gap: 10px;
  margin-top: auto;
}
.school-feature__desc {
  color: var(--color-text-subtle);
  max-width: 640px;
}
.school-feature__cta {
  margin-top: 32px;
  text-align: center;
}

/* 絞り込み */
.school-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.school-filters__label {
  font-size: 13px;
  color: var(--color-text-subtle);
  margin: 0 6px 0 0;
}
.school-filters__note {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-bottom: 28px;
}
.filter-chip {
  padding: 6px 14px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: var(--color-surface);
  font-size: 13px;
  cursor: pointer;
}
.filter-chip[aria-pressed="true"] {
  background: var(--color-text);
  color: var(--color-surface);
  border-color: var(--color-text);
}
.filter-chip--reset {
  border-style: dashed;
}
.school-card.is-hidden {
  display: none;
}

/* 比較バー */
.compare-bar {
  position: sticky;
  bottom: 76px;
  margin-top: 28px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.compare-bar__text {
  margin: 0;
  font-size: 14px;
}

/* ---------- 比較ページ ---------- */
.compare-picker__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 8px;
  margin-bottom: 40px;
}
.compare-picker__item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  padding: 12px 14px;
  font-size: 14px;
  cursor: pointer;
}
.compare-picker__item input {
  width: 18px;
  height: 18px;
}
.compare-result {
  margin-bottom: 72px;
}
.compare-result__empty {
  color: var(--color-text-subtle);
  font-size: 14px;
}
.compare-item {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 18px 22px;
  margin-bottom: 14px;
}
.compare-item__label {
  font-family: var(--font-serif);
  font-size: 16px;
  margin: 0 0 10px;
  border-bottom: 1px solid var(--color-border);
  padding-bottom: 8px;
}
.compare-item__row {
  display: flex;
  gap: 14px;
  padding: 6px 0;
  font-size: 14px;
}
.compare-item__school {
  flex: none;
  width: 11em;
  color: var(--color-text-subtle);
}
.compare-item__value {
  flex: 1;
}
.compare-guide__list > div {
  border-bottom: 1px solid var(--color-border);
  padding: 14px 0;
}
.compare-guide__list dt {
  font-family: var(--font-serif);
  font-weight: 600;
}
.compare-guide__list dd {
  margin: 4px 0 0;
  font-size: 14px;
  color: var(--color-text-subtle);
}

/* ---------- 情報ラベル ---------- */
.info-label {
  display: inline-block;
  font-size: 12px;
  line-height: 1.4;
  padding: 3px 12px;
  border-radius: 3px;
  font-family: var(--font-sans);
  font-weight: 500;
  vertical-align: middle;
}
.info-label--official {
  background: var(--label-official-bg);
  color: var(--label-official-text);
}
.info-label--experience {
  background: var(--label-experience-bg);
  color: var(--label-experience-text);
}
.info-label--editorial {
  background: var(--label-editorial-bg);
  color: var(--label-editorial-text);
}
.info-label--unverified {
  background: var(--label-unverified-bg);
  color: var(--label-unverified-text);
}
.info-block {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 22px 24px;
  margin: 32px 0;
  background: var(--color-surface);
}
.info-block--official {
  border-left: 4px solid var(--label-official-text);
}
.info-block--experience {
  border-left: 4px solid var(--label-experience-text);
}
.info-block--editorial {
  border-left: 4px solid var(--color-yellow);
  background: var(--color-yellow-light);
}
.info-block--unverified {
  border-left: 4px solid var(--label-unverified-text);
}
.info-block__label {
  margin-bottom: 12px;
}
.info-block__body h3 {
  font-size: 16px;
  margin-bottom: 8px;
}
.info-block__note {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin: 12px 0 0;
}

/* ---------- PR・開示 ---------- */
.pr-label {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 2px 10px;
  border-radius: 3px;
  background: var(--color-pr);
  color: #fff;
}
.beginner-label {
  display: inline-block;
  font-size: 11px;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--color-sky-light);
  color: var(--label-official-text);
}
.disclosure {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  padding: 18px 22px;
  margin: 28px 0;
  font-size: 13px;
}
.disclosure__pr {
  font-weight: 700;
  color: var(--color-pr);
  margin-bottom: 8px;
}
.disclosure__title {
  font-weight: 700;
  margin-bottom: 8px;
}
.disclosure__list {
  margin: 0;
}
.disclosure__list > div {
  display: flex;
  gap: 12px;
  padding: 3px 0;
}
.disclosure__list dt {
  flex: none;
  width: 12em;
  color: var(--color-text-subtle);
}
.disclosure__list dd {
  margin: 0;
}
.disclosure__note {
  margin: 8px 0 0;
  color: var(--color-text-subtle);
}

/* ---------- 記事 ---------- */
.article-header {
  padding: 56px 0 8px;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 32px;
}
.article-header__meta {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  margin-bottom: 14px;
}
.article-header h1 {
  font-size: clamp(24px, 4vw, 32px);
}
.article-header__lede {
  color: var(--color-text-subtle);
}
.article-card__category,
.article-list-item__category {
  display: inline-block;
  font-size: 12px;
  padding: 2px 12px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  background: var(--color-surface);
  color: var(--color-text-subtle);
}
.updated-date {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  font-size: 12px;
  color: var(--color-text-subtle);
  margin: 10px 0;
}
.updated-date__checked {
  font-size: 12px;
  color: var(--color-text-subtle);
}

.guide-section,
.review-section {
  margin-bottom: 44px;
}
.guide-section h2,
.review-section h2 {
  font-size: 21px;
  border-bottom: 1px solid var(--color-border);
  padding-bottom: 10px;
  margin-bottom: 18px;
}
.review-section__placeholder {
  color: var(--color-text-subtle);
  background: var(--color-surface);
  border: 1px dashed var(--color-border);
  border-radius: 6px;
  padding: 14px 18px;
  font-size: 14px;
}
.review-toc {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 22px 26px;
  margin: 32px 0 48px;
}
.review-toc h2 {
  font-size: 16px;
  margin-bottom: 10px;
}
.review-toc ol {
  margin: 0;
  padding-left: 1.4em;
  font-size: 14px;
  columns: 2;
  column-gap: 32px;
}
.review-toc li {
  margin-bottom: 4px;
}
.notice-box {
  background: var(--color-yellow-light);
  border-radius: 8px;
  padding: 18px 22px;
  margin: 28px 0;
  font-size: 14px;
}
.notice-box p {
  margin: 0;
}
.page-guide {
  color: var(--color-text-subtle);
  margin-bottom: 40px;
}

/* ---------- 用語ページ ---------- */
.term-article,
.theorist-article {
  padding-bottom: 72px;
}
.term-header {
  padding: 56px 0 24px;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 40px;
}
.term-header__number {
  font-size: 12px;
  letter-spacing: 0.26em;
  color: var(--color-terracotta);
  margin-bottom: 14px;
}
.term-header__name {
  font-size: clamp(30px, 5vw, 40px);
  margin-bottom: 4px;
}
.term-header__reading {
  color: var(--color-text-subtle);
  margin-bottom: 8px;
}
.term-header__category {
  font-size: 13px;
  color: var(--color-text-subtle);
  margin: 0;
}
.term-section-title {
  font-size: 15px;
  letter-spacing: 0.08em;
  color: var(--color-text-subtle);
  font-family: var(--font-sans);
  font-weight: 700;
  margin-bottom: 10px;
}
.term-oneliner {
  margin-bottom: 40px;
}
.term-oneliner__text {
  font-family: var(--font-serif);
  font-size: 22px;
  line-height: 1.7;
}
.term-kids {
  background: var(--color-yellow-light);
  border-radius: 8px;
  padding: 24px 28px;
  margin-bottom: 28px;
}
.term-analogy,
.term-life {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 24px 28px;
  margin-bottom: 28px;
}
.term-formal {
  background: var(--color-surface);
  border-top: 1px solid var(--color-text);
  border-bottom: 1px solid var(--color-border);
  padding: 24px 28px;
  margin-bottom: 40px;
}
.term-theorists,
.term-similar,
.term-exam-points,
.term-quiz {
  margin-bottom: 40px;
}
.term-similar dl > div,
.term-formal dl > div {
  border-bottom: 1px solid var(--color-border);
  padding: 12px 0;
}
.term-similar dt,
.term-formal dt {
  font-weight: 700;
  font-family: var(--font-serif);
}
.term-similar dd,
.term-formal dd {
  margin: 4px 0 0;
  font-size: 15px;
}
.quiz-box {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 22px 26px;
}
.quiz-box__actions {
  display: flex;
  gap: 12px;
  margin-bottom: 10px;
}
.quiz-box__actions .button {
  min-width: 64px;
  font-size: 18px;
}

/* ---------- 図解・過去問・先生モード ---------- */
.term-diagram-section {
  margin-bottom: 40px;
}
.diagram {
  margin: 0 auto;
  max-width: 480px;
}
.diagram__svg {
  display: block;
  width: 100%;
  height: auto;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  font-family: var(--font-sans);
}
.diagram figcaption {
  margin-top: 8px;
  font-size: 12px;
  color: var(--color-text-subtle);
}
.diagram__caption {
  display: block;
}
.diagram__source {
  display: block;
  margin-top: 2px;
  font-size: 11px;
}
.term-formal__box {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 20px 24px;
}
.term-formal__box dl > div {
  border-bottom: 1px solid var(--color-border);
  padding: 10px 0;
}
.term-formal__box dt {
  font-weight: 700;
}
.term-formal__box dd {
  margin: 4px 0 0;
  font-size: 15px;
}
.past-questions {
  background: var(--color-sky-light);
  border-radius: 10px;
  padding: 22px 26px;
  margin: 44px 0;
  font-size: 15px;
}
.past-questions__links {
  list-style: none;
  margin: 0 0 10px;
  padding: 0;
}
.past-questions__links li {
  padding: 6px 0;
  border-bottom: 1px solid #b9cdd3;
}
.past-questions__note {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin: 8px 0 0;
}

/* 理論家の似顔絵 */
.term-header--theorist {
  display: flex;
  align-items: center;
  gap: 24px;
}
.term-header__portrait {
  flex: none;
}
.term-header__portrait {
  display: inline-block;
  border-radius: 50%;
  transition: transform 0.15s;
}
.term-header__portrait:hover {
  transform: scale(1.04);
}
.term-header__portrait-cta {
  margin: 6px 0 0;
  font-size: 14px;
}
.term-header__portrait-cta a {
  color: var(--color-terracotta);
  font-weight: 700;
}
.term-header__portrait-note {
  font-size: 11px;
  color: var(--color-text-subtle);
  margin: 8px 0 24px;
}
.term-episode {
  background: var(--color-yellow-light);
  border-radius: 10px;
  padding: 22px 26px;
  margin: 40px 0;
}
.episode-list {
  margin: 8px 0 0;
  padding-left: 1.2em;
}
.episode-list li {
  margin-bottom: 10px;
  line-height: 1.8;
}
.term-more {
  margin: 40px 0;
}
.more-links {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
}
.more-links li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 4px;
  border-bottom: 1px solid var(--color-border);
  font-size: 16px;
}
.more-links__icon {
  flex: none;
}
.more-links__note {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-top: 12px;
}
.theorist-avatar {
  display: block;
}

/* ---------- 用語・理論家一覧 ---------- */
.term-category {
  margin-bottom: 56px;
}
.term-category__title {
  font-size: 18px;
  color: var(--color-text-subtle);
  margin-bottom: 8px;
}
.term-list,
.theorist-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.term-list__item a {
  display: grid;
  grid-template-columns: 110px 1fr;
  grid-template-areas:
    "num name"
    "num oneliner";
  gap: 2px 18px;
  padding: 18px 4px;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
}
.theorist-list__item a {
  display: grid;
  grid-template-columns: 72px 96px 1fr;
  grid-template-areas:
    "avatar num name"
    "avatar num oneliner";
  align-items: center;
  gap: 2px 16px;
  padding: 16px 4px;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
}
.theorist-list__avatar {
  grid-area: avatar;
}
.term-list__number,
.theorist-list__number {
  grid-area: num;
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--color-terracotta);
  padding-top: 6px;
}
.term-list__name,
.theorist-list__name {
  grid-area: name;
  font-family: var(--font-serif);
  font-size: 19px;
}
.term-list__reading,
.theorist-list__en,
.theorist-list__field {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-left: 10px;
}
.term-list__oneliner,
.theorist-list__oneliner {
  grid-area: oneliner;
  font-size: 14px;
  color: var(--color-text-subtle);
}

/* ---------- 学校詳細 ---------- */
.school-article {
  padding-bottom: 72px;
}
.school-header {
  padding: 56px 0 24px;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 8px;
}
.school-header__name {
  font-size: clamp(24px, 4vw, 32px);
}
.school-header__operator {
  color: var(--color-text-subtle);
  font-size: 14px;
}
.school-section {
  margin: 44px 0;
}
.school-section__title {
  font-size: 19px;
  margin-bottom: 16px;
}
.school-section__note {
  font-size: 13px;
  color: var(--color-text-subtle);
  margin-top: 12px;
}
.fact-table {
  margin: 0;
  border-top: 1px solid var(--color-border);
}
.fact-row {
  display: flex;
  gap: 18px;
  padding: 12px 4px;
  border-bottom: 1px solid var(--color-border);
  font-size: 15px;
}
.fact-row dt {
  flex: none;
  width: 10em;
  color: var(--color-text-subtle);
}
.fact-row dd {
  margin: 0;
  flex: 1;
}
.fact-row__note {
  display: block;
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-top: 4px;
}
.fact-row__source {
  display: block;
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-top: 4px;
}
.no-review-note {
  margin: 32px 0;
  font-size: 14px;
}

/* ---------- 出典 ---------- */
.source-list {
  margin: 48px 0;
  border-top: 1px solid var(--color-text);
  padding-top: 18px;
}
.source-list__title {
  font-size: 16px;
}
.source-list ul {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 14px;
}
.source-list li {
  padding: 8px 0;
  border-bottom: 1px solid var(--color-border);
}
.source-list__type {
  display: inline-block;
  font-size: 11px;
  padding: 2px 10px;
  border-radius: 3px;
  background: var(--label-official-bg);
  color: var(--label-official-text);
  margin-right: 8px;
}
.source-list__checked {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-left: 6px;
}

/* ---------- 記事カード・リスト ---------- */
.featured-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
}
.featured-article a {
  display: block;
  text-decoration: none;
  border-top: 1px solid var(--color-text);
  padding-top: 16px;
}
.featured-article__meta {
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--color-terracotta);
  display: flex;
  gap: 10px;
  align-items: center;
  margin-bottom: 10px;
}
.featured-article__title {
  font-size: 18px;
  margin-bottom: 8px;
}
.featured-article__desc {
  font-size: 13px;
  color: var(--color-text-subtle);
  margin: 0;
}
.article-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.article-list-item a {
  display: block;
  padding: 16px 4px;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
}
.article-list-item__meta {
  display: flex;
  gap: 10px;
  align-items: center;
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-bottom: 4px;
}
.article-list-item__title {
  font-family: var(--font-serif);
  font-size: 17px;
}
.article-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}
.article-card__link {
  display: block;
  padding: 22px;
  text-decoration: none;
}
.article-card__meta {
  display: flex;
  gap: 10px;
  align-items: center;
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.article-card__title {
  font-size: 17px;
  margin-bottom: 6px;
}
.article-card__desc {
  font-size: 13px;
  color: var(--color-text-subtle);
  margin-bottom: 8px;
}
.article-card__minutes {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin: 0;
}

/* ---------- 暮らし特集・更新情報 ---------- */
.life-theory-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.life-theory-list a {
  display: block;
  padding: 14px 4px;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
  font-family: var(--font-serif);
  font-size: 16px;
}
.updates__text {
  color: var(--color-text-subtle);
}

/* ---------- 関連コンテンツ ---------- */
.related {
  margin: 56px 0;
  border-top: 1px solid var(--color-text);
  padding-top: 20px;
}
.related__title {
  font-size: 17px;
}
.related__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.related__list a {
  display: block;
  padding: 12px 4px;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
}
.related__type {
  display: inline-block;
  font-size: 11px;
  padding: 2px 10px;
  border-radius: 999px;
  background: var(--color-sky-light);
  color: var(--label-official-text);
  margin-right: 10px;
}
.related__item-title {
  font-family: var(--font-serif);
  font-size: 16px;
}
.related__desc {
  display: block;
  font-size: 13px;
  color: var(--color-text-subtle);
  margin-top: 2px;
}

/* ---------- 運営者 ---------- */
.author-profile {
  display: flex;
  gap: 24px;
  background: var(--color-sky-light);
  border-radius: 8px;
  padding: 28px;
}
.author-profile--compact {
  display: block;
  margin-top: 48px;
  font-size: 14px;
}
.author-profile__avatar {
  flex: none;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--color-sky), var(--color-yellow-light));
  border: 1px solid var(--color-border);
}
.author-profile__name {
  font-family: var(--font-serif);
  font-size: 17px;
  font-weight: 600;
  margin-bottom: 8px;
}
.author-profile__points {
  list-style: none;
  margin: 0 0 10px;
  padding: 0;
  font-size: 14px;
}
.author-profile__points li::before {
  content: "— ";
  color: var(--color-text-subtle);
}
.author-profile__note,
.author-profile__bio {
  font-size: 13px;
  color: var(--color-text-subtle);
}

/* ---------- 404 ---------- */
.notfound {
  padding: 120px 20px;
  text-align: center;
}
.notfound__actions {
  display: flex;
  gap: 14px;
  justify-content: center;
  margin-top: 28px;
}

/* ---------- フッター ---------- */
.site-footer {
  background: var(--color-surface);
  border-top: 1px solid var(--color-border);
  margin-top: 0;
  padding: 64px 0 40px;
}
.site-footer__inner {
  max-width: var(--max-page);
  margin: 0 auto;
  padding: 0 20px;
}
.site-footer__desc {
  font-size: 13px;
  color: var(--color-text-subtle);
  margin-top: 8px;
}
.site-footer__sitemap {
  margin: 32px 0;
  padding: 28px 0 8px;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}
.site-footer__note {
  font-size: 12px;
  color: var(--color-text-subtle);
}
.site-footer__copy {
  font-size: 12px;
  color: var(--color-text-subtle);
  margin-top: 24px;
}
.site-footer__version {
  display: inline-block;
  margin-left: 10px;
  padding: 1px 10px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  font-size: 11px;
  color: var(--color-text-subtle);
  letter-spacing: 0.04em;
}

/* ---------- スマホ下部ナビ ---------- */
.bottom-nav {
  display: none;
}

/* ---------- レスポンシブ ---------- */
@media (max-width: 960px) {
  .category-grid,
  .daily-grid,
  .featured-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 680px) {
  .section {
    padding: 36px 0;
  }
  .section-header__title {
    font-size: 20px;
    margin-bottom: 8px;
  }
  .section-header__lede {
    font-size: 13px;
    line-height: 1.9;
  }
  .section-header__en {
    font-size: 10px;
  }
  .section__more {
    margin-top: 16px;
  }
  body {
    padding-bottom: 76px; /* 下部ナビの高さぶん */
  }
  .hero {
    padding: 64px 0 56px;
  }
  .hero__inner {
    flex-direction: column;
    align-items: stretch;
    gap: 40px;
  }
  .hero__characters {
    width: 100%;
  }
  .hero__chara .chara {
    width: 84px;
    height: 84px;
  }
  .hero__balloon {
    font-size: 15px;
  }
  .chara-guide .chara {
    width: 64px;
    height: 64px;
  }
  /* PCで横並びのものは、スマホでは縦積みではなく横スクロール */
  .three-pillars,
  .daily-grid,
  .featured-grid {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    gap: 12px;
    margin-inline: -20px;
    padding-inline: 20px;
    padding-bottom: 10px;
    scrollbar-width: thin;
  }
  .three-pillars > *,
  .daily-grid > *,
  .featured-grid > * {
    flex: 0 0 76%;
    max-width: 76%;
    scroll-snap-align: start;
  }
  .pillar {
    padding: 20px 16px 18px;
  }
  .banner-row {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    gap: 12px;
    margin-inline: -20px;
    padding-inline: 20px;
    padding-bottom: 10px;
    scrollbar-width: thin;
  }
  .banner-row .game-banner {
    flex: 0 0 84%;
    max-width: 84%;
    scroll-snap-align: start;
  }
  .banner-row .game-banner + .game-banner {
    margin-top: 0;
  }
  .category-grid,
  .school-grid {
    grid-template-columns: 1fr;
  }
  .site-search__form {
    flex-direction: column;
  }
  .site-search__form .button {
    width: 100%;
  }
  .term-list__item a {
    grid-template-columns: 1fr;
    grid-template-areas:
      "num"
      "name"
      "oneliner";
  }
  .theorist-list__item a {
    grid-template-columns: 64px 1fr;
    grid-template-areas:
      "avatar num"
      "avatar name"
      "avatar oneliner";
    align-items: start;
  }
  .site-logo__ja {
    font-size: 17px;
  }
  .term-header--theorist {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }
  .review-toc ol {
    columns: 1;
  }
  .fact-row {
    flex-direction: column;
    gap: 2px;
  }
  .fact-row dt {
    width: auto;
    font-size: 13px;
  }
  .compare-item__row {
    flex-direction: column;
    gap: 2px;
    padding: 10px 0;
    border-bottom: 1px solid var(--color-border);
  }
  .compare-item__school {
    width: auto;
    font-size: 12px;
  }
  .author-profile {
    flex-direction: column;
  }
  .study-journal {
    padding: 36px 22px;
  }
  .disclosure__list > div {
    flex-direction: column;
    gap: 0;
  }
  .disclosure__list dt {
    width: auto;
  }
  .compare-bar {
    bottom: 84px;
  }

  /* 下部ナビ表示 */
  .bottom-nav {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--color-surface);
    border-top: 1px solid var(--color-border);
    z-index: 50;
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom));
  }
  .bottom-nav__item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    text-decoration: none;
    font-size: 10px;
    color: var(--color-text-subtle);
    padding: 4px 0;
  }
  .bottom-nav__item.is-active {
    color: var(--color-terracotta);
  }
  .bottom-nav__icon {
    display: block;
    width: 22px;
    height: 22px;
    border: 1.5px solid currentColor;
    border-radius: 5px;
    position: relative;
  }
  .bottom-nav__icon--home {
    border-radius: 3px 3px 5px 5px;
  }
  .bottom-nav__icon--home::before {
    content: "";
    position: absolute;
    top: 4px;
    left: 4px;
    right: 4px;
    bottom: 4px;
    border-bottom: 1.5px solid currentColor;
  }
  .bottom-nav__icon--search {
    border-radius: 50%;
  }
  .bottom-nav__icon--search::before {
    content: "";
    position: absolute;
    width: 7px;
    height: 1.5px;
    background: currentColor;
    right: -3px;
    bottom: 0;
    transform: rotate(45deg);
  }
  .bottom-nav__icon--quiz::before {
    content: "?";
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
  }
  .bottom-nav__icon--compare::before {
    content: "";
    position: absolute;
    top: 4px;
    bottom: 4px;
    left: 5px;
    width: 4px;
    background: currentColor;
  }
  .bottom-nav__icon--compare::after {
    content: "";
    position: absolute;
    top: 8px;
    bottom: 4px;
    right: 5px;
    width: 4px;
    background: currentColor;
  }
  .bottom-nav__icon--menu::before {
    content: "";
    position: absolute;
    top: 5px;
    left: 4px;
    right: 4px;
    height: 1.5px;
    background: currentColor;
    box-shadow: 0 5px 0 currentColor, 0 10px 0 currentColor;
  }
}

/* ============================================================
   デザインリニューアル(参考: 編集的な余白 × 図鑑カード × 動き)
   ============================================================ */

/* ボタンをピル型に(やわらかさ) */
.button {
  border-radius: 999px;
  transition: background-color 0.2s, color 0.2s, border-color 0.2s,
    transform 0.18s, box-shadow 0.18s;
}
.button:hover {
  transform: translateY(-2px);
}

/* 見出し下の手書き風・点線アクセント */
.section-header__title::after {
  content: "";
  display: block;
  width: 46px;
  border-bottom: 3px dotted var(--color-terracotta);
  margin-top: 12px;
  opacity: 0.75;
}
.hero__text .section-header__title::after {
  margin-left: auto;
  margin-right: auto;
}

/* 波形の区切り(セクションの境目をやわらかく) */
.section--surface,
.section--sky,
.section--yellow,
.site-footer {
  position: relative;
}
.section--surface::before,
.section--sky::before,
.section--yellow::before,
.site-footer::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -22px;
  height: 24px;
  background-repeat: repeat-x;
  background-size: 1200px 24px;
  pointer-events: none;
}
.section--surface::before,
.site-footer::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 12 Q150 0 300 12 T600 12 T900 12 T1200 12 V24 H0 Z' fill='%23fffdf8'/%3E%3C/svg%3E");
}
.section--sky::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 12 Q150 0 300 12 T600 12 T900 12 T1200 12 V24 H0 Z' fill='%23e8f0f1'/%3E%3C/svg%3E");
}
.section--yellow::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 12 Q150 0 300 12 T600 12 T900 12 T1200 12 V24 H0 Z' fill='%23f5efd9'/%3E%3C/svg%3E");
}
.site-footer {
  margin-top: 26px;
}

/* 動く飾りアイコン(水玉・天気の行進)は廃止。
   天気アイコンは記事の見出し・本文の中でのみ使用する。 */

/* ---------- ファーストビュー(絵本のように、しずかに開く物語) ---------- */
.hero--story {
  padding: 44px 0 88px;
}
.hero--story .hero__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  max-width: 720px;
  text-align: center;
}

/* 文字エリア: 最初から場所を確保し、opacityだけで現れる(シフトなし) */
.hero--story .hero__text {
  text-align: center;
  max-width: 640px;
  margin-top: 30px;
}
.hero__head {
  width: 100%;
}
.hero-lockup {
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
}
.hero-lockup__svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}
.stage-ribbon__text {
  font-family: var(--font-sans);
  font-size: 21px;
  font-weight: 700;
  fill: #3f4652;
}
.hero__worldview {
  margin: 0 0 22px;
  font-size: 18px;
  font-weight: 700;
  color: var(--color-terracotta);
  line-height: 2.1;
}
.wv-line {
  display: block;
}
.hero--story .hero__en {
  margin-bottom: 14px;
}
.hero--story .hero__title {
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 22px;
  line-height: 1.4;
}
.hero--story .hero__lede {
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 26px;
}
.hero--story .hero__actions {
  justify-content: center;
  margin-bottom: 0;
}
.hero--story .hero__actions .button {
  background: var(--color-terracotta);
  color: #ffffff;
  border-color: var(--color-terracotta);
}
.hero--story .hero__actions .button:hover {
  opacity: 0.88;
  color: #ffffff;
}

/* 会話の舞台: 吹き出しエリア(高さ固定)+ふたり。
   レイアウト上は一番下。開幕は transform で中央に持ち上げておき、
   アーチ出現後にゆっくり下りてくる */
.hero--story {
  --stage-lift: 446px;
}
.story-stage {
  width: 100%;
  max-width: 620px;
  margin-top: 40px;
  transform: translateY(calc(-1 * var(--stage-lift)));
  animation: stage-descend 1.8s ease-in-out 25.8s forwards;
}
@keyframes stage-descend {
  to {
    transform: translateY(0);
  }
}
.conv-area {
  position: relative;
  height: 148px;
}
.stage-charas {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 44px;
  margin-top: 14px;
}
.stage-chara {
  text-align: center;
}

/* 吹き出し: conv-area 内の絶対配置(表示・非表示で他要素が動かない)。
   大きさはテキストに合わせて縮み、テキストは中央揃え。
   しっぽの位置は clamp で「話し手の頭の上」に固定される */
.stage-balloon {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: max-content;
  max-width: min(320px, 100%);
  padding: 12px 18px;
  border-radius: 16px;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.75;
  text-align: center;
}
.stage-balloon--moyan {
  background: #ffffff;
  border: 1.5px solid #b6c0cc;
}
.stage-balloon--moyan::before,
.stage-balloon--moyan::after {
  content: "";
  position: absolute;
  border: solid transparent;
}
.stage-balloon--moyan::before {
  bottom: -13px;
  left: clamp(14px, calc(50% - 83px), calc(100% - 32px));
  border-width: 13px 9px 0 9px;
  border-top-color: #b6c0cc;
}
.stage-balloon--moyan::after {
  bottom: -10px;
  left: clamp(15px, calc(50% - 82px), calc(100% - 31px));
  border-width: 12px 8px 0 8px;
  border-top-color: #ffffff;
}
.stage-balloon--sunny {
  background: #fdf9dc;
  border: 1.5px solid #ded263;
}
.stage-balloon--sunny::before,
.stage-balloon--sunny::after {
  content: "";
  position: absolute;
  border: solid transparent;
}
.stage-balloon--sunny::before {
  bottom: -13px;
  left: clamp(14px, calc(50% + 65px), calc(100% - 32px));
  border-width: 13px 9px 0 9px;
  border-top-color: #ded263;
}
.stage-balloon--sunny::after {
  bottom: -10px;
  left: clamp(15px, calc(50% + 66px), calc(100% - 31px));
  border-width: 12px 8px 0 8px;
  border-top-color: #fdf9dc;
}

/* ---------- アニメーションの台本 ---------- */
@keyframes story-in {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@keyframes story-out {
  from {
    opacity: 1;
    transform: none;
  }
  to {
    opacity: 0;
    transform: translateY(-8px);
    visibility: hidden;
  }
}
@keyframes story-pop {
  0% {
    opacity: 0;
    transform: scale(0.8) translateY(8px);
  }
  70% {
    transform: scale(1.04);
  }
  100% {
    opacity: 1;
    transform: none;
  }
}

/* 登場する要素の共通設定 */
.story-step {
  opacity: 0;
  animation: story-in 1s ease forwards;
}

/* ふたりの登場(ふわっと)。サニー先生はモヤンのひとことの後に */
.step-c1,
.step-c2 {
  animation-name: story-pop;
  animation-duration: 1.2s;
}
.step-c1 { animation-delay: 0.5s; }
.step-c2 { animation-delay: 10.6s; }

/* オープニング(1回だけ): モヤン2言 → サニー先生3言 */
.intro-balloon {
  opacity: 0;
  animation: story-in 0.9s ease forwards, story-out 0.8s ease forwards;
}
.intro-m1 { animation-delay: 1.8s, 5.2s; }
.intro-m2 { animation-delay: 6.4s, 9.6s; }
.intro-s1 { animation-delay: 11.8s, 14.4s; }
.intro-s2 { animation-delay: 15.6s, 18.4s; }
.intro-s3 { animation-delay: 19.6s, 23s; }

/* アーチはふたりの会話のあと、文字はふたりが下りたあとに中央へ */
.step-t1 { animation-delay: 24.2s; }
.step-t2 { animation-delay: 27.2s; }
.step-t3 { animation-delay: 27.8s; }
.step-t4 { animation-delay: 28.6s; }
.step-t5 { animation-delay: 29.4s; }
.step-t6 { animation-delay: 30.1s; }
.step-t7 { animation-delay: 30.7s; }
.step-t8 { animation-delay: 31.6s; }
.step-t9 { animation-delay: 32.5s; }

/* 読者の気持ちを代弁する6往復の会話(ループ再生)
   1周 28.8秒 = 1つあたり 表示約4.1秒 + 余白約0.7秒 × 6つ */
@keyframes conv-loop {
  0% {
    opacity: 0;
    transform: translateY(12px);
  }
  3.2% {
    opacity: 1;
    transform: none;
  }
  11.4% {
    opacity: 1;
    transform: none;
  }
  14.3% {
    opacity: 0;
    transform: translateY(-8px);
  }
  100% {
    opacity: 0;
    transform: translateY(-8px);
  }
}
.loop-balloon {
  opacity: 0;
  animation: conv-loop 28.8s ease-in-out infinite;
}
.conv-1 { animation-delay: 34.5s; }
.conv-2 { animation-delay: 39.3s; }
.conv-3 { animation-delay: 44.1s; }
.conv-4 { animation-delay: 48.9s; }
.conv-5 { animation-delay: 53.7s; }
.conv-6 { animation-delay: 58.5s; }

/* ---------- ヘッダーの検索サニー先生 ---------- */
.header-search {
  position: relative;
  flex: none;
}
.search-fab__toggle {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  text-decoration: none;
  color: var(--color-text);
  cursor: pointer;
}
.header-search__label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--color-text-subtle);
  white-space: nowrap;
}
.header-search__chara {
  display: block;
  line-height: 0;
}
.header-search__click {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--color-terracotta);
  white-space: nowrap;
}
.header-search__chara svg {
  transition: transform 0.25s ease;
}
.search-fab__toggle:hover .header-search__chara svg {
  transform: scale(1.1) rotate(4deg);
}
.search-fab__panel {
  position: absolute;
  right: calc(100% + 14px);
  top: 50%;
  transform: translateY(-50%);
  width: min(330px, calc(100vw - 128px));
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 16px;
  padding: 10px 14px;
  text-align: left;
  z-index: 80;
}
.search-fab__panel::before,
.search-fab__panel::after {
  content: "";
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  border: solid transparent;
}
.search-fab__panel::before {
  right: -12px;
  border-width: 8px 0 8px 12px;
  border-left-color: #ded263;
}
.search-fab__panel::after {
  right: -9px;
  border-width: 7px 0 7px 11px;
  border-left-color: #fdf9dc;
}
.search-fab__lead {
  margin: 0 22px 6px 0;
  font-size: 12px;
  font-weight: 700;
}
.search-fab__form {
  display: flex;
  gap: 8px;
}
.search-fab__form input[type="search"] {
  flex: 1;
  min-width: 0;
  padding: 9px 14px;
  font-size: 16px;
  border: 1.5px solid var(--color-border);
  border-radius: 999px;
  background: #ffffff;
  color: var(--color-text);
}
.search-fab__form input[type="search"]:focus {
  outline: 2px solid var(--color-sky);
  outline-offset: 1px;
}
.search-fab__form .button {
  padding: 9px 18px;
  font-size: 14px;
}
.search-fab__close {
  position: absolute;
  top: 3px;
  right: 8px;
  border: none;
  background: none;
  font-size: 20px;
  line-height: 1;
  color: var(--color-text-subtle);
  cursor: pointer;
  padding: 4px;
}

/* ---------- 動きを減らす設定: 会話を再生せず、最終状態を即表示 ---------- */
@media (prefers-reduced-motion: reduce) {
  .story-step {
    animation: none !important;
    opacity: 1;
    transform: none;
  }
  .story-stage {
    animation: none !important;
    transform: none;
  }
  .intro-balloon,
  .loop-balloon {
    animation: none !important;
    display: none;
  }
  .conv-6 {
    display: block;
    opacity: 1;
  }
}

/* ---------- スマホ調整 ---------- */
@media (max-width: 680px) {
  /* ヘッダー: タイトル・コンセプトは左揃え(右のサニー先生と重ならないよう右に余白) */
  .site-header__inner {
    justify-content: flex-start;
    padding: 10px 66px 10px 16px;
  }
  .site-header__brand {
    text-align: left;
    min-width: 0;
  }
  .site-header__tagline {
    font-size: 10px;
  }
  .header-search {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
  }
  .header-search__label {
    font-size: 9px;
  }
  .header-search__chara svg {
    width: 38px;
    height: 38px;
  }
  .hero--story {
    padding: 26px 0 64px;
  }
  .hero--story {
    --stage-lift: 452px;
  }
  .hero-lockup {
    max-width: 310px;
  }
  .hero__worldview {
    font-size: 16px;
  }
  .hero--story .hero__text {
    margin-top: 24px;
  }
  .hero--story .hero__lede br {
    display: none; /* スマホは自動折り返しにまかせる */
  }
  .story-stage {
    margin-top: 30px;
  }
  .conv-area {
    height: 158px;
  }
  .stage-charas {
    gap: 30px;
  }
  .stage-chara .chara {
    width: 88px;
    height: 88px;
  }
  .stage-balloon {
    font-size: 14px;
    max-width: 100%;
  }
  /* キャラ間隔が狭いぶん、しっぽの位置も内側に */
  .stage-balloon--moyan::before {
    left: clamp(14px, calc(50% - 68px), calc(100% - 32px));
  }
  .stage-balloon--moyan::after {
    left: clamp(15px, calc(50% - 67px), calc(100% - 31px));
  }
  .stage-balloon--sunny::before {
    left: clamp(14px, calc(50% + 50px), calc(100% - 32px));
  }
  .stage-balloon--sunny::after {
    left: clamp(15px, calc(50% + 51px), calc(100% - 31px));
  }
}

/* ---------- 404ページ ---------- */
.notfound {
  text-align: center;
  padding: 40px 0 60px;
}
.notfound__chara {
  margin: 18px 0 6px;
}
.notfound__version-note {
  margin: 18px auto 0;
  max-width: 480px;
  background: #fef4ec;
  border: 1.5px solid #ecc9ae;
  border-radius: 14px;
  padding: 14px 18px;
  font-size: 13.5px;
  line-height: 2;
  text-align: left;
}
.notfound__actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin: 24px 0 34px;
}
.notfound__menu {
  max-width: 420px;
  margin: 0 auto;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 20px 24px;
  text-align: left;
}
.notfound__menu-title {
  margin: 0 0 10px;
  font-weight: 700;
}
.notfound__menu-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.notfound__menu-list li {
  margin-bottom: 10px;
}
.notfound__menu-list a {
  text-decoration: none;
  color: var(--color-text);
  font-weight: 500;
}
.notfound__menu-list a:hover {
  color: var(--color-terracotta);
}

/* ---------- 資格まるわかりガイド ---------- */
.schools-entry-link {
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 12px;
  padding: 12px 16px;
  font-size: 14px;
  line-height: 1.9;
  margin: 0 0 20px;
}
.schools-entry-link a {
  color: var(--color-terracotta);
  font-weight: 700;
}
.shikaku-guide section {
  margin-top: 40px;
}
.shikaku-steps {
  padding-left: 1.4em;
  line-height: 2.1;
}
.shikaku-steps li {
  margin-bottom: 8px;
}
.shikaku-cost-table {
  width: 100%;
  border-collapse: collapse;
  margin: 16px 0;
  font-size: 14px;
}
.shikaku-cost-table th,
.shikaku-cost-table td {
  border: 1px solid var(--color-border);
  padding: 10px 12px;
  text-align: left;
  line-height: 1.8;
}
.shikaku-cost-table th {
  background: var(--color-surface);
  font-size: 13px;
}
.kyufu-calc {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 20px 22px;
  margin: 20px 0;
}
.kyufu-calc h3 {
  margin: 0 0 12px;
  font-size: 17px;
}
.kyufu-calc__row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-weight: 700;
}
.kyufu-calc__row input {
  padding: 9px 14px;
  border: 1.5px solid var(--color-border);
  border-radius: 12px;
  font-family: inherit;
  font-size: 16px;
  width: 150px;
  background: #fff;
  color: var(--color-text);
}
.kyufu-calc__result td[data-kyufu] {
  color: var(--color-terracotta);
  font-weight: 700;
}
.kyufu-calc__note {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  line-height: 1.9;
  margin: 10px 0 0;
}
.shikaku-links {
  list-style: none;
  padding: 0;
}
.shikaku-links li {
  margin-bottom: 10px;
}
.shikaku-faq div {
  margin-bottom: 18px;
}
.shikaku-faq dt {
  font-weight: 700;
  margin-bottom: 6px;
}
.shikaku-faq dd {
  margin: 0;
  line-height: 2;
  color: var(--color-text);
}

/* ---------- モヤンの中の人コラム ---------- */
.column-hub__chara {
  text-align: center;
  margin: 6px 0 10px;
}
.column-list {
  display: grid;
  gap: 16px;
  margin-top: 24px;
}
.column-card {
  display: block;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 20px;
  padding: 22px 24px;
  text-decoration: none;
  color: var(--color-text);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.column-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 26px rgba(63, 70, 82, 0.1);
}
.column-card__no {
  display: block;
  font-size: 11px;
  letter-spacing: 0.24em;
  color: var(--color-terracotta);
  font-weight: 700;
  margin-bottom: 8px;
}
.column-card__title {
  display: block;
  font-size: 17px;
  font-weight: 700;
  line-height: 1.8;
  margin-bottom: 8px;
}
.column-card__lede {
  display: block;
  font-size: 13.5px;
  color: var(--color-text-subtle);
  line-height: 1.9;
  margin-bottom: 10px;
}
.column-card__tags span {
  display: inline-block;
  font-size: 11.5px;
  color: var(--color-terracotta);
  font-weight: 700;
  margin-right: 10px;
}
.column-hub__note {
  margin-top: 26px;
  text-align: center;
  font-size: 13.5px;
  color: var(--color-text-subtle);
}
.column-tag {
  font-size: 12px;
  color: var(--color-terracotta);
  font-weight: 700;
  margin-left: 8px;
}
.column-article .column-section {
  margin-top: 36px;
}
.column-article .column-section h2 {
  font-size: 19px;
  margin-bottom: 14px;
}
.column-article .column-section p {
  line-height: 2.2;
  margin-bottom: 16px;
}
.column-personal {
  margin-top: 36px;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 16px;
  padding: 18px 22px;
}
.column-personal h2 {
  font-size: 16px;
  margin: 0 0 10px;
}
.column-personal p {
  margin: 0;
  line-height: 2.1;
}
.column-step {
  margin-top: 36px;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 18px;
  padding: 20px 24px;
  text-align: center;
}
.column-step__title {
  font-weight: 700;
  font-size: 16px;
  margin: 0 0 10px;
}
.column-step__body {
  line-height: 2.1;
  margin: 0 0 10px;
}
.column-step__note {
  font-size: 12px;
  color: #8a7a20;
  margin: 0;
}
.column-related {
  margin-top: 32px;
}
.column-related h2 {
  font-size: 15px;
  margin-bottom: 10px;
}
.column-related__links a {
  display: inline-block;
  margin: 3px 8px 3px 0;
  padding: 6px 14px;
  border: 1.5px solid var(--color-terracotta);
  border-radius: 999px;
  color: var(--color-terracotta);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
.column-back {
  margin-top: 32px;
}

/* ---------- つみきブロック ---------- */
.tsumiki__stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 210px;
  justify-content: flex-end;
}
.tsumiki__stack {
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
  gap: 4px;
  transition: transform 0.3s ease;
}
.tsumiki__stack.is-collapse {
  animation: tsumiki-collapse 1.2s ease forwards;
}
@keyframes tsumiki-collapse {
  0% { transform: rotate(0); }
  30% { transform: rotate(-4deg); }
  60% { transform: rotate(5deg); }
  100% { transform: rotate(14deg) translateY(26px); opacity: 0.4; }
}
@media (prefers-reduced-motion: reduce) {
  .tsumiki__stack.is-collapse { animation: none; opacity: 0.4; }
}
.tsumiki__ground {
  width: 240px;
  height: 10px;
  background: #cbbf9a;
  border-radius: 999px;
  margin-top: 6px;
}
.tsumiki-block {
  border: 2px solid;
  border-radius: 12px;
  font-family: inherit;
  font-weight: 700;
  font-size: 15px;
  padding: 14px 18px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  transition: transform 0.15s ease;
}
.tsumiki-block span {
  font-size: 10.5px;
  font-weight: 500;
  color: #6f6b63;
}
.tsumiki-block:hover { transform: translateY(-2px); }
.tsumiki-block--ningen { background: #f6ead8; border-color: #cfa972; width: 220px; }
.tsumiki-block--taido { background: #fdf9dc; border-color: #ded263; width: 180px; }
.tsumiki-block--giho { background: #e8f0f4; border-color: #9fb6c4; width: 140px; }
.tsumiki-block--placed { cursor: default; }
.tsumiki__bank {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 18px;
}
.tsumiki__bank .tsumiki-block { width: auto; min-width: 150px; }
.tsumiki__feedback {
  text-align: center;
  font-weight: 700;
  min-height: 2em;
  margin: 14px 0 0;
  line-height: 1.9;
}
.tsumiki__clear {
  margin-top: 20px;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 18px;
  padding: 22px;
}
.tsumiki__clear-title {
  font-size: 19px;
  font-weight: 700;
  text-align: center;
  margin: 0 0 12px;
}
.tsumiki__lesson div { margin-bottom: 12px; }
.tsumiki__lesson dt { font-weight: 700; margin-bottom: 4px; }
.tsumiki__lesson dd { margin: 0; line-height: 1.9; font-size: 14px; }
.tsumiki__exam {
  background: #fff;
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 13.5px;
  line-height: 1.9;
}

/* ---------- 流派仕分け ---------- */
.ryuha__status {
  display: flex;
  gap: 18px;
  font-weight: 700;
  margin-bottom: 12px;
}
.ryuha__card-area {
  display: flex;
  justify-content: center;
  min-height: 150px;
}
.ryuha-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  background: #fff;
  border: 2px solid var(--color-border);
  border-radius: 16px;
  padding: 16px 26px;
  text-align: center;
}
.ryuha-card.is-wrong { animation: card-shake 0.4s ease; border-color: #c23b2a; }
.ryuha-card__name { font-size: 17px; font-weight: 700; }
.ryuha-card__fact { display: none; }
.ryuha__feedback {
  text-align: center;
  font-weight: 700;
  min-height: 3em;
  line-height: 1.9;
  margin: 12px 0;
}
.ryuha__buckets {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}
.ryuha-bucket {
  border: 2px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-surface);
  font-family: inherit;
  font-weight: 700;
  font-size: 12.5px;
  padding: 12px 4px;
  cursor: pointer;
  transition: transform 0.15s ease, border-color 0.15s ease;
  line-height: 1.5;
}
.ryuha-bucket:hover { border-color: var(--color-sky); transform: translateY(-2px); }
.ryuha-bucket.is-correct { border-color: #ded263; background: #fdf9dc; }
.ryuha__clear {
  margin-top: 20px;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 18px;
  padding: 22px;
}
.ryuha__clear > p { text-align: center; font-weight: 700; }
.ryuha-summary { margin-top: 14px; }
.ryuha-summary__item {
  background: #fff;
  border-radius: 12px;
  padding: 12px 16px;
  margin-bottom: 10px;
}
.ryuha-summary__item h3 { margin: 0 0 6px; font-size: 15px; }
.ryuha-summary__item p { margin: 0 0 4px; font-size: 13.5px; line-height: 1.9; }
.ryuha-summary__derived { color: var(--color-terracotta); font-weight: 700; }
@media (max-width: 680px) {
  .ryuha__buckets { grid-template-columns: repeat(2, 1fr); }
  .ryuha__buckets .ryuha-bucket:last-child { grid-column: 1 / -1; }
}

/* ---------- あなうめゲーム ---------- */
.anaume__tabs {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.anaume-tab {
  border: 1.5px solid var(--color-border);
  border-radius: 999px;
  background: #fff;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 700;
  padding: 8px 14px;
  cursor: pointer;
}
.anaume-tab.is-active {
  background: var(--color-terracotta);
  border-color: var(--color-terracotta);
  color: #fff;
}
.anaume-board {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 20px;
}
.anaume-board__intro { margin: 0 0 14px; font-weight: 700; }
.anaume-board__slots {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.anaume-slot {
  border: 2px dashed #c9a94a;
  border-radius: 12px;
  background: #fffdf8;
  font-family: inherit;
  padding: 10px 14px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  width: 100%;
  max-width: 420px;
}
.anaume-slot__q { font-size: 15px; font-weight: 700; color: #8a7a20; }
.anaume-slot__note { font-size: 10.5px; color: #6f6b63; }
.anaume-slot.is-active { border-color: var(--color-terracotta); background: #fef4ec; }
.anaume-slot.is-filled { border-style: solid; border-color: #ded263; background: #fdf9dc; cursor: default; }
.anaume-slot.is-filled .anaume-slot__q { color: #3f4652; }
/* ピラミッドは上ほど幅がせまい */
.anaume-board--pyramid .anaume-slot:nth-child(1) { max-width: 200px; }
.anaume-board--pyramid .anaume-slot:nth-child(2) { max-width: 260px; }
.anaume-board--pyramid .anaume-slot:nth-child(3) { max-width: 320px; }
.anaume-board--pyramid .anaume-slot:nth-child(4) { max-width: 380px; }
.anaume-board--pyramid .anaume-slot:nth-child(5) { max-width: 440px; }
/* アーチ: かなめ石+2本の柱 */
.anaume-board--arch .anaume-board__slots { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: flex-start; }
.anaume-board--arch .anaume-slot:nth-child(1) { width: 100%; max-width: 300px; order: 0; }
.anaume-board--arch .anaume-slot:nth-child(2) { width: 44%; max-width: 220px; order: 1; min-height: 110px; justify-content: center; }
.anaume-board--arch .anaume-slot:nth-child(3) { width: 44%; max-width: 220px; order: 2; min-height: 110px; justify-content: center; }
/* リング: 内→外で幅が広がる */
.anaume-board--rings .anaume-slot:nth-child(1) { max-width: 220px; }
.anaume-board--rings .anaume-slot:nth-child(2) { max-width: 290px; }
.anaume-board--rings .anaume-slot:nth-child(3) { max-width: 360px; }
.anaume-board--rings .anaume-slot:nth-child(4) { max-width: 430px; }
.anaume-board__chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
  margin-top: 18px;
}
.anaume-chip {
  border: 1.5px solid var(--color-terracotta);
  border-radius: 999px;
  background: #fff;
  color: var(--color-terracotta);
  font-family: inherit;
  font-size: 13px;
  font-weight: 700;
  padding: 8px 14px;
  cursor: pointer;
}
.anaume-chip.is-used { opacity: 0.3; border-color: var(--color-border); color: var(--color-text-subtle); cursor: default; }
.anaume-chip.is-wrong { animation: card-shake 0.4s ease; }
.anaume-board__feedback {
  text-align: center;
  font-weight: 700;
  min-height: 2em;
  margin: 14px 0 0;
  font-size: 13.5px;
}
.anaume-board__usage {
  margin-top: 14px;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 14px;
  padding: 14px 18px;
}
.anaume-board__usage p { margin: 0; line-height: 2; font-size: 14px; }

/* ---------- 動的フローチャート・図解ライブラリ ---------- */
.flowchart__lede {
  line-height: 2;
  margin: 0 0 16px;
}
.flowchart {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 20px;
  padding: 20px;
}
.flowchart__steps {
  display: flex;
  align-items: stretch;
  gap: 6px;
  flex-wrap: wrap;
}
.flow-step {
  flex: 1 1 96px;
  min-width: 96px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 12px 6px;
  border: 2px solid var(--color-border);
  border-radius: 14px;
  background: #ffffff;
  font-family: inherit;
  cursor: pointer;
  transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}
.flow-step:hover {
  border-color: var(--color-sky);
}
.flow-step.is-active {
  background: #fdf9dc;
  border-color: #ded263;
  transform: translateY(-3px);
  box-shadow: 0 6px 16px rgba(180, 150, 40, 0.2);
}
.flow-step__num {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  background: var(--color-terracotta);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: grid;
  place-items: center;
}
.flow-step__title {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--color-text);
}
.flow-step__short {
  font-size: 10.5px;
  color: var(--color-text-subtle);
}
.flow-arrow {
  align-self: center;
  color: #c9a94a;
  font-weight: 700;
  animation: flow-pulse 1.6s ease-in-out infinite;
}
@keyframes flow-pulse {
  0%, 100% { opacity: 0.4; transform: translateX(0); }
  50% { opacity: 1; transform: translateX(3px); }
}
@media (prefers-reduced-motion: reduce) {
  .flow-arrow { animation: none; }
}
.flow-panel {
  margin-top: 16px;
  background: #fffdf8;
  border: 1.5px dashed var(--color-border);
  border-radius: 14px;
  padding: 16px 18px;
  animation: story-in 0.4s ease;
}
.flow-panel__desc {
  margin: 0 0 10px;
  line-height: 2;
  font-size: 14.5px;
}
.flow-panel__sunny {
  margin: 0 0 10px;
  background: #fdf9dc;
  border-radius: 10px;
  padding: 8px 12px;
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1.9;
}
.flow-panel__links {
  margin: 0;
  font-size: 13px;
}
.flow-panel__links a {
  display: inline-block;
  margin: 2px 6px 2px 0;
  padding: 4px 12px;
  border: 1.5px solid var(--color-terracotta);
  border-radius: 999px;
  color: var(--color-terracotta);
  font-weight: 700;
  text-decoration: none;
}
.flowchart__hint {
  margin: 12px 0 0;
  font-size: 11.5px;
  color: var(--color-text-subtle);
  text-align: center;
}
.diagram-shelf {
  margin-top: 44px;
}
.diagram-shelf__note {
  font-size: 13.5px;
  color: var(--color-text-subtle);
  margin: 0 0 16px;
}
.diagram-shelf__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.diagram-card {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 16px;
  padding: 14px;
  display: flex;
  flex-direction: column;
}
.diagram-card .diagram {
  margin: 0;
}
.diagram-card__link {
  margin-top: 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--color-terracotta);
  text-align: right;
}
.diagram-lib__note {
  margin-top: 36px;
  font-size: 13.5px;
  color: var(--color-text-subtle);
  text-align: center;
  line-height: 2;
}
@media (max-width: 680px) {
  .flowchart__steps {
    gap: 4px;
  }
  .flow-step {
    flex: 1 1 30%;
    min-width: 30%;
    padding: 10px 4px;
  }
  .flow-arrow {
    display: none;
  }
  .diagram-shelf__grid {
    grid-template-columns: 1fr;
  }
}

/* ---------- お守りページ ---------- */
.omamori-link-row {
  margin: 14px 0 0;
  text-align: center;
  font-size: 13.5px;
}
.omamori-link-row a {
  color: var(--color-terracotta);
  font-weight: 700;
}
.omamori-card {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 20px;
  padding: 24px;
  margin-top: 22px;
}
.omamori-card__title {
  margin: 0 0 10px;
  font-size: 19px;
}
.omamori-card__note {
  font-size: 13.5px;
  color: var(--color-text-subtle);
  line-height: 1.9;
  margin: 0 0 14px;
}
.omamori-date-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-weight: 700;
}
.omamori-date-row input[type="date"] {
  padding: 9px 14px;
  border: 1.5px solid var(--color-border);
  border-radius: 12px;
  font-family: inherit;
  font-size: 15px;
  background: #fff;
  color: var(--color-text);
}
.omamori-days {
  margin: 18px 0 6px;
  font-size: 17px;
  text-align: center;
}
.omamori-days strong {
  display: block;
  font-size: 44px;
  color: var(--color-terracotta);
  letter-spacing: 0.04em;
}
.omamori-cheer {
  text-align: center;
  font-weight: 700;
  line-height: 2;
  margin: 8px 0 0;
}
.omamori-focus {
  margin-top: 16px;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 14px;
  padding: 14px 18px;
}
.omamori-focus__title {
  margin: 0 0 8px;
  font-weight: 700;
  font-size: 14.5px;
}
.omamori-focus ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.omamori-focus li {
  margin-bottom: 8px;
  font-size: 14px;
}
.omamori-progress {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}
.omamori-progress__bar {
  flex: 1;
  height: 14px;
  background: #eee7d9;
  border-radius: 999px;
  overflow: hidden;
}
.omamori-progress__bar span {
  display: block;
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, #f4d64f, #e8a94a);
  border-radius: 999px;
  transition: width 0.4s ease;
}
.omamori-progress__label {
  font-weight: 700;
  font-size: 14px;
}
.omamori-checklist {
  margin: 0;
  padding: 0;
  list-style: none;
}
.omamori-checklist li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px dashed var(--color-border);
}
.omamori-checklist label {
  flex: 1;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 14.5px;
  line-height: 1.8;
}
.omamori-checklist input[type="checkbox"] {
  width: 20px;
  height: 20px;
  margin-top: 3px;
  accent-color: var(--color-terracotta);
}
.omamori-checklist__link {
  flex: none;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--color-terracotta);
  white-space: nowrap;
}
.omamori-walls {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.omamori-wall {
  margin: 0;
  text-align: center;
}
.omamori-wall img {
  width: 100%;
  height: auto;
  border-radius: 18px;
  border: 1.5px solid var(--color-border);
  box-shadow: 0 8px 20px rgba(63, 70, 82, 0.12);
}
.omamori-wall figcaption {
  font-size: 13px;
  margin: 10px 0;
  color: var(--color-text-subtle);
}
.omamori-note {
  margin-top: 18px;
  font-size: 12.5px;
  color: var(--color-text-subtle);
  text-align: center;
}
@media (max-width: 680px) {
  .omamori-walls {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
}

/* ---------- ミニゲームバナー(ホーム) ---------- */
.game-banner {
  display: flex;
  align-items: center;
  gap: 18px;
  background: linear-gradient(120deg, #f8f3e2 0%, var(--color-yellow-light) 100%);
  border: 1.5px solid var(--color-yellow);
  border-radius: 20px;
  padding: 16px 20px;
  text-decoration: none;
  color: var(--color-text);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.game-banner:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 24px rgba(120, 105, 60, 0.16);
}
.game-banner__cards {
  flex: none;
  position: relative;
  width: 64px;
  height: 56px;
}
.game-banner__card {
  position: absolute;
  width: 30px;
  height: 42px;
  background: var(--color-surface);
  border: 1.5px solid var(--color-yellow);
  border-radius: 7px;
  display: grid;
  place-items: center;
  font-size: 17px;
  box-shadow: 0 3px 8px rgba(110, 95, 55, 0.14);
}
.game-banner__card--1 { left: 0; top: 9px; transform: rotate(-10deg); }
.game-banner__card--2 { left: 17px; top: 4px; transform: rotate(2deg); z-index: 1; }
.game-banner__card--3 { left: 34px; top: 9px; transform: rotate(12deg); }
.game-banner__body {
  flex: 1;
  min-width: 0;
}
.game-banner__badge {
  display: inline-block;
  background: var(--color-terracotta);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  border-radius: 999px;
  padding: 2px 10px;
  margin-bottom: 6px;
}
.game-banner__title {
  display: block;
  font-size: 17px;
  font-weight: 700;
  margin-bottom: 4px;
}
.game-banner__desc {
  display: block;
  font-size: 13px;
  color: var(--color-text-subtle);
  line-height: 1.8;
}
.game-banner__cta {
  flex: none;
  background: var(--color-terracotta);
  color: #ffffff;
  font-weight: 700;
  font-size: 13px;
  border-radius: 999px;
  padding: 9px 16px;
  white-space: nowrap;
}
@media (max-width: 680px) {
  .game-banner {
    flex-wrap: wrap;
    padding: 18px;
  }
  .game-banner__body {
    flex: 1 1 180px; /* 文字がつぶれないよう幅を確保し、ボタンは下の行へ */
  }
  .game-banner__cta {
    margin-left: auto;
  }
}

/* バナーを縦に並べたときの間隔と、テーマ別カラー */
.banner-row .game-banner + .game-banner {
  margin-top: 12px;
}
.game-banner--diagrams {
  background: linear-gradient(120deg, var(--color-sky-light) 0%, #dbe8ea 100%);
  border-color: var(--color-sky);
}
.game-banner--diagrams:hover {
  box-shadow: 0 10px 24px rgba(70, 100, 110, 0.16);
}
.game-banner--diagrams .game-banner__card {
  border-color: var(--color-sky);
  box-shadow: 0 3px 8px rgba(70, 100, 110, 0.14);
}
.game-banner--diagrams .game-banner__badge {
  background: var(--label-official-text);
}
.game-banner--omamori {
  background: linear-gradient(120deg, #f5ebe4 0%, #efe0d6 100%);
  border-color: #d9bfae;
}
.game-banner--omamori:hover {
  box-shadow: 0 10px 24px rgba(140, 100, 75, 0.16);
}
.game-banner--omamori .game-banner__card {
  border-color: #d9bfae;
  box-shadow: 0 3px 8px rgba(140, 100, 75, 0.14);
}
.game-banner--omamori .game-banner__badge {
  background: var(--color-terracotta);
}
.game-banner__days[hidden] {
  display: none;
}
.game-banner__days {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 12px;
  background: var(--color-terracotta);
  color: #ffffff;
  border-radius: 999px;
  font-size: 13px;
  vertical-align: 2px;
}

/* ---------- ○×クイズドリル ---------- */
.quiz-drill {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 26px 22px;
  margin: 22px 0 10px;
  min-height: 260px;
}
.quiz-drill__count {
  font-size: 15px;
  margin-bottom: 14px;
}
.quiz-drill__progress {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  margin-bottom: 10px;
  display: flex;
  gap: 12px;
}
.quiz-drill__score {
  margin-left: auto;
  font-weight: 700;
  color: var(--color-terracotta);
}
.quiz-drill__cat {
  font-size: 11.5px;
  color: var(--color-text-subtle);
  margin-bottom: 6px;
}
.quiz-drill__q {
  font-size: 16.5px;
  font-weight: 700;
  line-height: 2;
  margin-bottom: 16px;
}
.quiz-drill__actions {
  display: flex;
  gap: 12px;
}
.quiz-drill__btn {
  font-size: 22px;
  font-weight: 700;
  min-width: 84px;
}
.quiz-drill__btn.is-correct {
  border-color: var(--color-green);
  color: var(--color-green);
}
.quiz-drill__btn.is-wrong {
  border-color: var(--color-terracotta);
  color: var(--color-terracotta);
}
.quiz-drill__result {
  margin-top: 16px;
  border-top: 1px dashed var(--color-border);
  padding-top: 14px;
}
.quiz-drill__verdict {
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 6px;
}
.quiz-drill__verdict.is-ok { color: var(--color-green); }
.quiz-drill__verdict.is-ng { color: var(--color-terracotta); }
.quiz-drill__exp {
  font-size: 14px;
  line-height: 2;
  margin-bottom: 8px;
}
.quiz-drill__link {
  font-size: 13px;
  margin-bottom: 12px;
}
.quiz-drill__endtitle {
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 8px;
}
.quiz-drill__endscore {
  font-size: 22px;
  font-weight: 700;
  color: var(--color-terracotta);
  margin-bottom: 8px;
}
.quiz-drill__endnote {
  font-size: 14px;
  line-height: 2;
  margin-bottom: 14px;
}
.quiz-drill__foot {
  font-size: 11.5px;
  color: var(--color-text-subtle);
}

/* ---------- 対策テキスト販売ページ ---------- */
.text-sales__box {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 20px 22px;
  margin: 18px 0;
}
.text-sales__box--note {
  background: var(--color-yellow-light);
  border-color: var(--color-yellow);
}
.text-sales__list {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
}
.text-sales__list li {
  font-size: 14px;
  line-height: 2;
}
.text-sales__list--small li {
  font-size: 12px;
}
.text-sales__cta {
  display: block;
  text-align: center;
  margin: 24px 0;
}
.text-sales__soon {
  text-align: center;
  background: var(--color-sky-light);
  border: 1.5px dashed var(--color-sky);
  border-radius: 14px;
  padding: 18px;
  font-size: 14px;
  line-height: 2;
  margin: 24px 0;
}

/* ---------- さらに学べる本棚 ---------- */
.book-shelf {
  margin: 36px 0;
}
.book-shelf__list {
  list-style: none;
  margin: 16px 0 10px;
  padding: 0;
  display: grid;
  gap: 12px;
}
.book-card {
  display: flex;
  gap: 14px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 14px;
  padding: 16px 18px;
}
.book-card__icon {
  font-size: 24px;
  line-height: 1.2;
}
.book-card__body {
  min-width: 0;
}
.book-card__meta {
  margin: 0 0 4px;
  display: flex;
  gap: 6px;
  align-items: center;
}
.book-card__audience {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--label-official-text);
  background: var(--label-official-bg);
  border-radius: 999px;
  padding: 2px 9px;
}
.book-card__pr {
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  background: var(--color-pr);
  border-radius: 4px;
  padding: 1px 6px;
}
.book-card__title {
  font-weight: 700;
  font-size: 15.5px;
  margin: 0 0 2px;
}
.book-card__author {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  margin: 0 0 8px;
}
.book-card__note {
  font-size: 13px;
  line-height: 1.9;
  margin: 0 0 8px;
}
.book-card__link {
  margin: 0;
  font-size: 13.5px;
  font-weight: 700;
}
.book-shelf__note {
  font-size: 11.5px;
  color: var(--color-text-subtle);
}

/* ---------- 資格取得後の働き方(養成学校一覧の下) ---------- */
.future-work {
  margin-top: 72px;
  padding-top: 48px;
  border-top: 1px solid var(--color-border);
}
.future-work__list {
  list-style: none;
  margin: 24px 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
}
.future-work__list li {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.future-work__icon {
  font-size: 26px;
  line-height: 1;
}
.future-work__name {
  font-weight: 700;
  font-size: 15px;
}
.future-work__desc {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  line-height: 1.8;
}

/* ヒーロー: アーチと「こころは天気のよう」の間の天気アイコン */
.hero__weather {
  font-size: 30px;
  line-height: 1;
  margin: 0 0 14px;
}
@media (max-width: 680px) {
  .hero__weather {
    font-size: 26px;
    margin-bottom: 10px;
  }
}

/* ---------- 出題ひんど(めやす): 番号の横の🌥️アイコンのみ ---------- */
.freq-marks {
  font-size: 12px;
  letter-spacing: 1px;
  margin-left: 6px;
  vertical-align: 1px;
}
.freq-legend {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  margin: 10px 0 26px;
  line-height: 2;
}
.freq-legend > span {
  display: inline-block;
  margin-right: 16px;
  white-space: nowrap;
}
.freq-legend__note {
  font-size: 11px;
}

/* ---------- ○×クイズドリル ---------- */
.quiz-drill {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 26px 22px;
  margin: 22px 0 10px;
  min-height: 260px;
}
.quiz-drill__count {
  font-size: 15px;
  margin-bottom: 14px;
}
.quiz-drill__progress {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  margin-bottom: 10px;
  display: flex;
  gap: 12px;
}
.quiz-drill__score {
  margin-left: auto;
  font-weight: 700;
  color: var(--color-terracotta);
}
.quiz-drill__cat {
  font-size: 11.5px;
  color: var(--color-text-subtle);
  margin-bottom: 6px;
}
.quiz-drill__q {
  font-size: 16.5px;
  font-weight: 700;
  line-height: 2;
  margin-bottom: 16px;
}
.quiz-drill__actions {
  display: flex;
  gap: 12px;
}
.quiz-drill__btn {
  font-size: 22px;
  font-weight: 700;
  min-width: 84px;
}
.quiz-drill__btn.is-correct {
  border-color: var(--color-green);
  color: var(--color-green);
}
.quiz-drill__btn.is-wrong {
  border-color: var(--color-terracotta);
  color: var(--color-terracotta);
}
.quiz-drill__result {
  margin-top: 16px;
  border-top: 1px dashed var(--color-border);
  padding-top: 14px;
}
.quiz-drill__verdict {
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 6px;
}
.quiz-drill__verdict.is-ok { color: var(--color-green); }
.quiz-drill__verdict.is-ng { color: var(--color-terracotta); }
.quiz-drill__exp {
  font-size: 14px;
  line-height: 2;
  margin-bottom: 8px;
}
.quiz-drill__link {
  font-size: 13px;
  margin-bottom: 12px;
}
.quiz-drill__endtitle {
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 8px;
}
.quiz-drill__endscore {
  font-size: 22px;
  font-weight: 700;
  color: var(--color-terracotta);
  margin-bottom: 8px;
}
.quiz-drill__endnote {
  font-size: 14px;
  line-height: 2;
  margin-bottom: 14px;
}
.quiz-drill__foot {
  font-size: 11.5px;
  color: var(--color-text-subtle);
}

/* ---------- 対策テキスト販売ページ ---------- */
.text-sales__box {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 20px 22px;
  margin: 18px 0;
}
.text-sales__box--note {
  background: var(--color-yellow-light);
  border-color: var(--color-yellow);
}
.text-sales__list {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
}
.text-sales__list li {
  font-size: 14px;
  line-height: 2;
}
.text-sales__list--small li {
  font-size: 12px;
}
.text-sales__cta {
  display: block;
  text-align: center;
  margin: 24px 0;
}
.text-sales__soon {
  text-align: center;
  background: var(--color-sky-light);
  border: 1.5px dashed var(--color-sky);
  border-radius: 14px;
  padding: 18px;
  font-size: 14px;
  line-height: 2;
  margin: 24px 0;
}

/* ---------- さらに学べる本棚 ---------- */
.book-shelf {
  margin: 36px 0;
}
.book-shelf__list {
  list-style: none;
  margin: 16px 0 10px;
  padding: 0;
  display: grid;
  gap: 12px;
}
.book-card {
  display: flex;
  gap: 14px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 14px;
  padding: 16px 18px;
}
.book-card__icon {
  font-size: 24px;
  line-height: 1.2;
}
.book-card__body {
  min-width: 0;
}
.book-card__meta {
  margin: 0 0 4px;
  display: flex;
  gap: 6px;
  align-items: center;
}
.book-card__audience {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--label-official-text);
  background: var(--label-official-bg);
  border-radius: 999px;
  padding: 2px 9px;
}
.book-card__pr {
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  background: var(--color-pr);
  border-radius: 4px;
  padding: 1px 6px;
}
.book-card__title {
  font-weight: 700;
  font-size: 15.5px;
  margin: 0 0 2px;
}
.book-card__author {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  margin: 0 0 8px;
}
.book-card__note {
  font-size: 13px;
  line-height: 1.9;
  margin: 0 0 8px;
}
.book-card__link {
  margin: 0;
  font-size: 13.5px;
  font-weight: 700;
}
.book-shelf__note {
  font-size: 11.5px;
  color: var(--color-text-subtle);
}

/* ---------- 資格取得後の働き方(養成学校一覧の下) ---------- */
.future-work {
  margin-top: 72px;
  padding-top: 48px;
  border-top: 1px solid var(--color-border);
}
.future-work__list {
  list-style: none;
  margin: 24px 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
}
.future-work__list li {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.future-work__icon {
  font-size: 26px;
  line-height: 1;
}
.future-work__name {
  font-weight: 700;
  font-size: 15px;
}
.future-work__desc {
  font-size: 12.5px;
  color: var(--color-text-subtle);
  line-height: 1.8;
}

/* ヒーロー: アーチと「こころは天気のよう」の間の天気アイコン */
.hero__weather {
  font-size: 30px;
  line-height: 1;
  margin: 0 0 14px;
}
@media (max-width: 680px) {
  .hero__weather {
    font-size: 26px;
    margin-bottom: 10px;
  }
}

/* ---------- 出題ひんど(めやす) ---------- */
.freq-badge {
  display: inline-block;
  margin-left: 8px;
  padding: 1px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  vertical-align: 2px;
  white-space: nowrap;
}
.freq-badge.freq--3 {
  background: #fdeecb;
  color: #8a6410;
  border: 1px solid #ecd28f;
}
.freq-badge.freq--2 {
  background: #eaf3fb;
  color: #3f6d94;
  border: 1px solid #bcd8ee;
}
.freq-badge.freq--1 {
  background: #f1f0ec;
  color: #6f6a5e;
  border: 1px solid #ddd8cd;
}
.freq-box {
  margin: 32px 0;
  padding: 20px 22px;
  background: #fffdf4;
  border: 1.5px solid #ecd28f;
  border-radius: 16px;
}
.freq-box .term-section-title {
  margin-top: 0;
}
.freq-box__level {
  font-size: 20px;
  font-weight: 700;
  margin: 6px 0 4px;
}
.freq-box__level.freq--3 { color: #8a6410; }
.freq-box__level.freq--2 { color: #3f6d94; }
.freq-box__level.freq--1 { color: #6f6a5e; }
.freq-box__comment {
  font-size: 14px;
  line-height: 1.9;
  margin: 0 0 8px;
}
.freq-box__note {
  font-size: 11.5px;
  color: var(--color-text-subtle);
  margin: 0;
}

/* ---------- 3分ミニゲーム ---------- */
.game-list {
  display: grid;
  gap: 14px;
  margin: 24px 0;
}
.game-card-link {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 18px 20px;
  text-decoration: none;
  color: var(--color-text);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
a.game-card-link:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(63, 70, 82, 0.1);
}
.game-card-link--soon {
  opacity: 0.6;
}
.game-card-link__emoji {
  font-size: 30px;
  flex: none;
}
.game-card-link__title {
  display: block;
  font-size: 17px;
  font-weight: 700;
  margin-bottom: 4px;
}
.game-card-link__desc {
  display: block;
  font-size: 13.5px;
  color: var(--color-text-subtle);
  line-height: 1.8;
}
.game-card-link__arrow {
  margin-left: auto;
  color: var(--color-terracotta);
  font-weight: 700;
}
.match-game {
  margin-top: 20px;
}
.match-game__status {
  display: flex;
  align-items: center;
  gap: 18px;
  font-weight: 700;
  margin-bottom: 14px;
}
.match-game__status .button {
  margin-left: auto;
  padding: 7px 16px;
  font-size: 13px;
}
.match-game__board {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 12px;
}
.match-game__col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.match-game__col-label {
  margin: 0 0 2px;
  font-size: 12px;
  font-weight: 700;
  color: var(--color-text-subtle);
  text-align: center;
  letter-spacing: 0.1em;
}
.match-card {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  border: 2px solid var(--color-border);
  border-radius: 14px;
  background: #ffffff;
  padding: 10px 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 700;
  color: var(--color-text);
  text-align: left;
  cursor: pointer;
  transition: transform 0.15s ease, border-color 0.15s ease, opacity 0.3s ease;
}
.match-card[hidden] {
  display: none; /* display:flex が hidden 属性に勝たないように */
}
.match-card--theorist {
  justify-content: flex-start;
}
.match-card__avatar {
  flex: none;
  line-height: 0;
}
.match-card__avatar svg {
  width: 44px;
  height: 44px;
}
.match-card__theory {
  line-height: 1.7;
  font-weight: 500;
}
.match-card em {
  font-style: normal;
  font-weight: 700;
  color: #c23b2a; /* 試験に出やすいポイントは赤字 */
}
.match-card:hover {
  border-color: var(--color-sky);
}
.match-card.is-selected {
  border-color: var(--color-terracotta);
  transform: scale(1.02);
  box-shadow: 0 4px 14px rgba(194, 108, 74, 0.18);
}
.match-card.is-matched {
  border-color: #ded263;
  background: #fdf9dc;
  opacity: 0.55;
  cursor: default;
}
.match-card.is-wrong {
  animation: card-shake 0.4s ease;
  border-color: #c23b2a;
}
@keyframes card-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-5px); }
  75% { transform: translateX(5px); }
}
.match-game__feedback {
  min-height: 1.8em;
  margin: 14px 0 0;
  font-weight: 700;
  text-align: center;
}
.match-game__clear {
  margin-top: 18px;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 18px;
  padding: 22px;
  text-align: center;
}
.match-game__clear-title {
  font-size: 20px;
  font-weight: 700;
  margin: 0 0 8px;
}
.match-game__clear-actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 14px;
}
.match-game__note {
  margin-top: 20px;
  font-size: 13px;
  color: var(--color-text-subtle);
  text-align: center;
}
@media (max-width: 680px) {
  .match-game__board {
    grid-template-columns: 1fr 1.35fr;
    gap: 8px;
  }
  .match-card {
    padding: 8px 9px;
    font-size: 12.5px;
    border-radius: 12px;
    gap: 7px;
  }
  .match-card__avatar svg {
    width: 34px;
    height: 34px;
  }
  .match-card__theory {
    font-size: 12px;
  }
}

/* ---------- 法律・制度の確認日ボックス ---------- */
.law-notice {
  margin-top: 18px;
  background: #fef4ec;
  border: 1.5px solid #ecc9ae;
  border-radius: 14px;
  padding: 14px 18px;
  font-size: 13.5px;
  line-height: 1.9;
}
.law-notice__lead {
  margin: 0 0 8px;
}
.law-notice__links {
  margin: 0;
  padding: 0;
  list-style: none;
}
.law-notice__links li {
  display: inline-block;
  margin-right: 16px;
}
.law-notice__links a {
  color: var(--color-terracotta);
  font-weight: 700;
}

/* ---------- サニー先生の試験アドバイス ---------- */
.term-exam-advice {
  margin-top: 40px;
}
.exam-advice {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-top: 14px;
}
.exam-advice__chara {
  flex: none;
  text-align: center;
  padding-top: 6px;
}
.exam-advice__box {
  flex: 1;
  background: #fdf9dc;
  border: 1.5px solid #ded263;
  border-radius: 16px;
  padding: 16px 20px;
}
.exam-advice__lead {
  margin: 0 0 10px;
  font-size: 15px;
  font-weight: 700;
}
.exam-advice__list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.exam-advice__list li {
  position: relative;
  padding-left: 22px;
  margin-bottom: 10px;
  line-height: 1.9;
  font-size: 14.5px;
}
.exam-advice__list li:last-child {
  margin-bottom: 0;
}
.exam-advice__list li::before {
  content: "✏️";
  position: absolute;
  left: 0;
  top: 0;
}
@media (max-width: 680px) {
  .exam-advice {
    flex-direction: column;
    align-items: center;
  }
  .exam-advice__box {
    width: 100%;
    box-sizing: border-box;
  }
}

/* ことば図鑑: 「集めたくなる」カード型(dodaしごとずかん風) */
.term-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 18px;
}
.term-list__item a {
  display: block;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 22px 24px;
  height: 100%;
  transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
}
.term-list__item a:hover {
  transform: translateY(-4px);
  border-color: var(--color-yellow);
  box-shadow: 0 10px 22px rgba(39, 39, 34, 0.07);
}
.term-list__number {
  display: inline-block;
  padding: 2px 12px;
  border-radius: 999px;
  background: var(--color-yellow-light);
  color: var(--color-terracotta);
  font-size: 11px;
  letter-spacing: 0.14em;
  margin-bottom: 10px;
}
.term-list__name {
  display: block;
  font-size: 19px;
  font-weight: 700;
}
.term-list__reading {
  display: block;
  margin: 0 0 8px;
}
.term-list__oneliner {
  display: block;
}

/* 理論家図鑑もカード型に */
.theorist-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
  gap: 18px;
}
.theorist-list__item a {
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 20px;
  height: 100%;
  transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
}
.theorist-list__item a:hover {
  transform: translateY(-4px);
  border-color: var(--color-yellow);
  box-shadow: 0 10px 22px rgba(39, 39, 34, 0.07);
}

/* カテゴリーもカード型に(現場の3カード風) */
.category-item {
  border-top: none;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 18px;
  padding: 26px 26px 22px;
  transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
}
.category-item:hover {
  transform: translateY(-4px);
  border-color: var(--color-sky);
  box-shadow: 0 10px 22px rgba(39, 39, 34, 0.07);
}
.category-grid {
  gap: 20px;
}

/* 角丸をそろえる */
.daily-card,
.school-card,
.study-journal,
.author-profile,
.article-card {
  border-radius: 18px;
}

/* スクロールでふわっと現れる */
.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .chara {
    animation: none;
  }
}

@media (max-width: 680px) {
  .weather-row {
    gap: 16px;
    font-size: 20px;
  }
  .term-list,
  .theorist-list {
    grid-template-columns: 1fr;
  }
}

/* ---- v1.8 モヤンLPの世界観に統一(2026-07-19 ちゃん指示:カード・バナー・ボタン) ---- */
.button{border-radius:999px;border:0;font-weight:700}
.button--primary{background:#ef8064;color:#fff;box-shadow:0 6px 16px rgba(239,128,100,.28)}
.button--primary:hover{background:#e97355;transform:translateY(-1px);box-shadow:0 8px 18px rgba(239,128,100,.32)}
.button--secondary{background:#fffdf8;color:#527057;border:2px solid #dbe7d4}
.button--secondary:hover{background:#f3f8ee}
/* ミニゲームのカード:LPの「持ち帰れるもの」風のパステルタイルに */
.game-list{grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:18px}
.game-card-link{flex-direction:column;align-items:center;text-align:center;gap:10px;border:0;border-radius:22px;padding:28px 18px}
.game-list .game-card-link:nth-child(4n+1){background:#e9f2e2}
.game-list .game-card-link:nth-child(4n+2){background:#fdf0d5}
.game-list .game-card-link:nth-child(4n+3){background:#e0edf7}
.game-list .game-card-link:nth-child(4n+4){background:#fbe3d8}
.game-card-link__emoji{font-size:34px;background:#fffdf8;width:66px;height:66px;display:grid;place-items:center;border-radius:50%;box-shadow:0 4px 10px rgba(41,67,94,.08)}
.game-card-link__arrow{margin:6px auto 0;color:#e9785f}
a.game-card-link:hover{transform:translateY(-4px);box-shadow:0 10px 24px rgba(48,74,58,.12)}
.game-card-link--soon{opacity:.55}

/* ---- v2.0 全ページ絵本化レイヤー(2026-07-19 ちゃん指示:イラストを増やし、絵本の世界に) ---- */
/* 全ページ共通:フッター前の草原のしめくくり */
.picnic-meadow{position:relative;height:150px;overflow:hidden;margin-top:56px}
.picnic-meadow:before{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:170%;height:105px;background:#eef4dd;border-radius:50% 50% 0 0/100% 100% 0 0}
.pm{position:absolute;bottom:8px;height:auto}
.pm-flowerl{left:3%;width:78px}
.pm-bush{left:12%;width:58px;bottom:2px}
.pm-sunny{left:44%;width:84px}
.pm-moyan{left:52.5%;width:64px;bottom:9px}
.pm-wagon{right:6%;width:112px;bottom:12px}
.pm-flowerr{right:0;width:74px}
@media(max-width:640px){
  .picnic-meadow{height:120px;margin-top:36px}
  .pm-wagon{display:none}
  .pm-sunny{left:36%;width:74px}
  .pm-moyan{left:52%;width:56px}
}
/* 内側ページ:見出しまわりに淡い雲(CSSのurlはこのファイルからの相対なのでどこでも安全) */
.site-main{position:relative}
.site-main:before,.site-main:after{content:"";position:absolute;top:16px;width:88px;height:60px;background:no-repeat center/contain;opacity:.5;pointer-events:none}
.site-main:before{left:2%;background-image:url("../img/parts/01_sky_cloud_left.png")}
.site-main:after{right:2.5%;background-image:url("../img/parts/03_sky_cloud_right.png")}
@media(max-width:760px){.site-main:before,.site-main:after{display:none}}

/* ---- v2.1 理論家ページのピクニックのはじまり(2026-07-20 ちゃん指示) ---- */
.picnic-intro{margin:26px 0 36px;display:grid;gap:12px}
.picnic-intro__line{display:flex;gap:12px;align-items:flex-end;max-width:660px}
.picnic-intro__line--guest{margin-left:auto;flex-direction:row-reverse}
.picnic-intro__avatar{width:52px;height:52px;flex:none;border-radius:50%;background:#fffdf8;display:grid;place-items:center;box-shadow:0 4px 10px rgba(41,67,94,.1);overflow:hidden;font-size:1.5rem}
.picnic-intro__avatar img{width:112%;height:112%;object-fit:contain}
.picnic-intro__line p{margin:0;padding:14px 18px;border-radius:22px 22px 22px 8px;background:#fff7dd;line-height:1.95;font-size:.95rem}
.picnic-intro__line--guest p{background:#eef4fa;border-radius:22px 22px 8px 22px}
.picnic-intro__line b{display:block;font-size:.72rem;color:#8a7a3a;margin-bottom:2px}
.picnic-intro__line--guest b{color:#5a7a92}
.picnic-intro a{color:#b0693f;font-weight:700}
@media(max-width:640px){.picnic-intro__line{max-width:100%}.picnic-intro__avatar{width:44px;height:44px}}

/* ---- v2.2 時代プロフィール+吹き出しゆったり+草原の波(2026-07-20 ちゃん指示) ---- */
.theorist-era{margin:22px 0 8px;padding:22px 26px;border-radius:22px;background:#f5f9ee}
.theorist-era__years{margin:0 0 8px;font-size:1.05rem;font-weight:700;color:#3f5b46;letter-spacing:.05em}
.theorist-era__years span{font-size:.82rem;font-weight:500;color:#71817b;letter-spacing:.02em}
.theorist-era__text{margin:0;line-height:2.05}
.theorist-era__influence{margin:12px 0 0;padding-top:12px;border-top:1.5px dashed #d5e3c8;line-height:2;font-size:.92rem}
.theorist-era__influence b{display:inline-block;margin-right:8px;padding:2px 10px;border-radius:999px;background:#fff;color:#6b8455;font-size:.72rem;vertical-align:2px}
.theorist-era__note{margin:10px 0 0;font-size:.7rem;color:#9aa79b}
/* 吹き出しをゆったり(スッと頭に入るリズム) */
.picnic-intro{gap:20px;margin:30px 0 42px}
.picnic-intro__line{gap:14px;max-width:600px}
.picnic-intro__line p{padding:20px 26px;line-height:2.15;font-size:.93rem;letter-spacing:.015em}
.picnic-intro__line b{margin-bottom:6px}
/* 草原のしめくくり:上端をなめらかな波形に */
.picnic-meadow:before{border-radius:0;width:100%;left:0;transform:none;height:88px}
.picnic-meadow__wave{position:absolute;left:0;right:0;bottom:87px;width:100%;height:34px;display:block}
/* 草原とフッターのすき間を埋める */
.picnic-meadow{overflow:visible}
.picnic-meadow:before{bottom:-27px;height:116px}
/* 波+緑の帯を1枚のSVGに統合(塗り漏れ防止) */
.picnic-meadow:before{display:none}
.picnic-meadow__wave{position:absolute;left:0;right:0;bottom:-27px;top:auto;width:100%;height:150px;display:block}
.pm{z-index:1}

/* ---- v2.9 見出しの緩急(2026-07-20 ちゃん指示:各章見出しを中央揃え+後半サイズに統一。主役はサイトタイトルだけ) ---- */
.section-header{text-align:center}
.section-header__lede{margin-left:auto;margin-right:auto}
.section-header__title::after{margin-left:auto;margin-right:auto}

/* v3.1 各章見出しの挿絵(2026-07-20 ちゃん指示:章ごとにイラストでイメージ) */
.section-header__img{height:64px;width:auto;display:block;margin:0 auto 12px}

/* ---- v3.3 ゲームバナーをLP世界観に(2026-07-20 ちゃん指示) ---- */
.game-banner{border:0;border-radius:22px;background:#fdf6dd;box-shadow:none}
.game-banner--diagrams{background:#e0edf7}
.game-banner--omamori{background:#fbe3d8}
.game-banner__icon{flex:none;width:74px;height:74px;display:grid;place-items:center;background:#fffdf8;border-radius:50%;box-shadow:0 4px 10px rgba(41,67,94,.08)}
.game-banner__icon img{width:52px;height:auto}
a.game-banner:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(48,74,58,.12)}

/* ---- v3.5 スマホ: ゲームバナーを横スクロールに ---- */
@media(max-width:640px){
  .banner-row{display:flex;overflow-x:auto;gap:12px;padding-bottom:10px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
  .banner-row .game-banner{flex:0 0 84vw;scroll-snap-align:center;margin:0}
  .banner-row .game-banner + .game-banner{margin-top:0}
}

/* ---- v3.6 養成講座アフィリエイト導線(2026-07-20 指示書) ---- */
.ad-disclosure{margin:18px 0 22px;padding:14px 18px;border-radius:16px;background:#f3f1ea;border:1.5px solid #e0dccd;font-size:.86rem;line-height:1.9}
.ad-disclosure b{display:inline-block;margin-bottom:4px;padding:2px 10px;border-radius:999px;background:#fffdf8;color:#8a7a52;font-size:.74rem;letter-spacing:.08em}
.ad-disclosure p{margin:6px 0 0}
.school-exp__title{font-size:clamp(1.5rem,3vw,2.1rem);line-height:1.6}
.school-exp__status-list{padding-left:1.3em;line-height:2.1}
.school-exp__note{font-size:.82rem;color:#7d8a80;line-height:1.9}
.school-exp__worries{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;padding:0;list-style:none}
.school-exp__worries li{background:#eef4fa;border-radius:14px;padding:12px 16px;font-size:.92rem}
.school-exp__fit{padding-left:1.3em;line-height:2.1}
.school-exp__fit--check li{color:#6b6255}
.school-exp__checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;padding:0;list-style:none}
.school-exp__checklist li{background:#f5f9ee;border-radius:12px;padding:9px 14px;font-size:.88rem}
.school-exp__checklist li:before{content:"✓ ";color:#7fa77c;font-weight:700}
.school-exp__cta{text-align:center;margin:22px 0 6px}
.school-exp__contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.school-exp__contact-card{background:#fffdf8;border-radius:20px;padding:22px 22px;box-shadow:0 8px 22px rgba(48,74,58,.08)}
.school-exp__contact-card h3{margin:0 0 10px;font-size:1rem}
.school-exp__contact-card p{font-size:.9rem;line-height:2}
.school-story-card{background:#fffdf8;border-radius:24px;padding:28px 30px;box-shadow:0 10px 26px rgba(48,74,58,.09);line-height:2.05}
.school-story-card__cta{text-align:center;margin:20px 0 6px}
.school-story-card__pr{text-align:center;font-size:.74rem;color:#8b9788;margin:8px 0 0}
@media(max-width:640px){
  .school-exp__contact-grid{grid-template-columns:1fr}
  .school-story-card{padding:22px 18px}
  .school-exp__cta .picnic-button,.school-story-card__cta .picnic-button{display:block;text-align:center}
}
