:root {
  --course-ink: #18312e;
  --course-muted: #66736f;
  --course-orange: #c96831;
  --course-orange-soft: #f4dfd1;
  --course-cream: #f8f2e9;
  --course-paper: #fffdf9;
  --course-sage: #dfeae5;
  --course-line: rgba(24,49,46,.12);
  --course-shadow: 0 18px 50px rgba(33,48,44,.08);
}

html { scroll-behavior: smooth; }
body { color: var(--course-ink); background: var(--course-paper); }
body, button, input, select, textarea { font-family: "Zen Kaku Gothic New", "Noto Sans JP", sans-serif; }
h1, h2, h3, .card__price, .section-heading, .contact-cta h2 {
  font-family: "Shippori Mincho", "Noto Serif JP", "Yu Mincho", serif;
}

.page-hero {
  position: relative;
  overflow: hidden;
  min-height: 430px;
  display: grid;
  place-items: center;
  text-align: center;
  background:
    radial-gradient(circle at 17% 22%, rgba(201,104,49,.13) 0 2px, transparent 3px),
    radial-gradient(circle at 82% 76%, rgba(24,49,46,.10) 0 2px, transparent 3px),
    linear-gradient(135deg, #fbf3e8 0%, #f7eee1 55%, #f1e3d2 100%);
}
.page-hero::before {
  content: "COURSES & PRICING";
  display: block;
  margin-bottom: 18px;
  color: var(--course-orange);
  font: 700 .72rem/1 "Zen Kaku Gothic New", sans-serif;
  letter-spacing: .22em;
}
.page-hero::after {
  content: "";
  position: absolute;
  width: 270px;
  height: 270px;
  right: -65px;
  top: -90px;
  border: 1px solid rgba(201,104,49,.18);
  border-radius: 50%;
  box-shadow: 0 0 0 44px rgba(255,255,255,.14), 0 0 0 88px rgba(255,255,255,.09);
}
.page-hero .container { position: relative; z-index: 1; }
.page-hero h1 { margin: 0 0 24px; font-size: clamp(2.6rem, 6vw, 4.9rem); line-height: 1.18; letter-spacing: .08em; }
.page-hero .hero-lead {
  margin: 0;
  color: var(--course-muted);
  font-size: clamp(.98rem, 1.6vw, 1.12rem);
  line-height: 2.1;
  letter-spacing: 0;
}

.course-jump { position: relative; z-index: 5; margin: -54px auto 0; padding: 0 24px; max-width: 1080px; }
.course-jump__inner { display: grid;
  /* 項目数に合わせて列を作る。3列固定だと、AI×3D講座を外したとき
     右に1列ぶんの空白が残った（2026-08-17）。増減しても崩れない。 */
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); background: #fff; border: 1px solid var(--course-line); border-radius: 24px; box-shadow: var(--course-shadow); overflow: hidden; }
.course-jump a { position: relative; padding: 28px 30px 26px; color: var(--course-ink); text-decoration: none; transition: background .2s, transform .2s; }
.course-jump a + a { border-left: 1px solid var(--course-line); }
.course-jump a:hover { background: #fff8f2; }
.course-jump small { display: block; margin-bottom: 7px; color: var(--course-orange); font-weight: 700; font-size: .68rem; letter-spacing: .12em; }
.course-jump strong { display: block; font-family: "Shippori Mincho", serif; font-size: 1.16rem; }
.course-jump span { display: block; margin-top: 8px; color: var(--course-muted); font-size: .78rem; }

.section-space { padding: clamp(92px, 11vw, 150px) 0 !important; }
.section-space:nth-of-type(odd) { background: #fbfaf6; }
.section-space .container { max-width: 1080px; }
.section-kicker { margin: 0 0 14px !important; color: var(--course-orange) !important; font-size: .72rem !important; font-weight: 700; letter-spacing: .16em; }
.section-heading { margin: 0 !important; font-size: clamp(2rem, 4vw, 3.25rem) !important; line-height: 1.35; letter-spacing: .05em; }
.sec__note { display: inline-flex; margin: 18px 0 40px; padding: 9px 15px; border-radius: 999px; color: var(--course-muted); background: var(--course-sage); font-size: .78rem; font-weight: 700; }

.card-grid { display: grid !important; grid-template-columns: repeat(12, 1fr) !important; gap: 26px !important; align-items: stretch; }
.card-grid > .card { grid-column: span 6; }
.card-grid > .card:nth-child(1) { grid-column: span 7; }
.card-grid > .card:nth-child(2) { grid-column: span 5; }
.card {
  display: flex !important;
  flex-direction: column;
  min-width: 0;
  padding: 18px 18px 26px !important;
  border: 1px solid var(--course-line) !important;
  border-radius: 24px !important;
  background: rgba(255,255,255,.94) !important;
  box-shadow: 0 10px 35px rgba(33,48,44,.06) !important;
  overflow: hidden;
}
.card__img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 16px !important; margin: 0 0 24px !important; }
.card__badge { align-self: flex-start; margin: -10px 6px 13px; padding: 6px 11px; border-radius: 99px; }
.card__title { margin: 0 8px 18px !important; font-size: clamp(1.35rem, 2.3vw, 1.8rem) !important; letter-spacing: .03em; }
.card__text { margin: 0 8px 16px !important; color: var(--course-muted); font-size: .9rem !important; line-height: 1.95 !important; }
.card__text strong { color: var(--course-ink); }
.card__price { margin: auto 8px 0 !important; padding-top: 22px; border-top: 1px solid var(--course-line); color: var(--course-ink) !important; font-size: clamp(1.35rem, 2.4vw, 1.85rem) !important; font-weight: 700; }
.card__price span { margin-left: 5px; color: var(--course-muted); font: 500 .72rem/1.5 "Zen Kaku Gothic New", sans-serif; }

.ai3d { gap: 26px !important; }
.ai3d__box, .ai3d__fee, .admission-card { border: 1px solid var(--course-line) !important; border-radius: 24px !important; box-shadow: var(--course-shadow); }
.ai3d__box, .ai3d__fee { padding: clamp(28px, 4vw, 44px) !important; }
.ai3d h3 { font-size: 1.45rem; margin-bottom: 24px; }
.ai3d__fee { border-top: 4px solid var(--course-orange) !important; }

.info-table { border-collapse: separate !important; border-spacing: 0; min-width: 720px; overflow: hidden; border: 1px solid var(--course-line); border-radius: 18px; background: #fff; }
.info-table th { padding: 18px 20px !important; background: var(--course-ink) !important; color: #fff; text-align: left; }
.info-table td { padding: 18px 20px !important; border-color: var(--course-line) !important; }
.info-table tbody tr:nth-child(even) { background: #faf6f0; }

.contact-cta { position: relative; overflow: hidden; padding: 110px 24px !important; background: var(--course-ink) !important; text-align: center; }
.contact-cta::before { content: ""; position: absolute; inset: 18px; border: 1px solid rgba(255,255,255,.13); border-radius: 28px; pointer-events: none; }
.contact-cta h2 { color: #fff; font-size: clamp(2rem, 4vw, 3.2rem); letter-spacing: .06em; }
.contact-cta p { color: rgba(255,255,255,.72); }
.contact-cta .btn--primary { background: var(--course-orange) !important; color: #fff !important; }

@media (max-width: 820px) {
  .page-hero { min-height: 390px; padding: 74px 20px 100px; }
  .course-jump { margin-top: -64px; }
  .course-jump__inner { grid-template-columns: 1fr; border-radius: 20px; }
  .course-jump a { padding: 20px 24px; }
  .course-jump a + a { border-left: 0; border-top: 1px solid var(--course-line); }
  .course-jump span { display: none; }
  .card-grid > .card, .card-grid > .card:nth-child(1), .card-grid > .card:nth-child(2) { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
  .page-hero h1 { font-size: 2.45rem; }
  .page-hero .hero-lead br { display: none; }
  .section-space { padding: 84px 0 !important; }
  .card { padding: 14px 14px 24px !important; border-radius: 20px !important; }
  .card__img { border-radius: 14px !important; }
  .contact-cta { padding: 90px 22px 110px !important; }
}


/* ============================================================
   ★シニア向けの文字サイズ底上げ（他ページと同じ基準）
   本文16px以上・補助14px以上・行間2.0。11〜13pxを一掃する。
   ============================================================ */
.cs-lead, .cs-desc, .cs-card p, .cs-note, .cs-table td, .cs-table th,
.cs-price, .cs-meta, .cs-list li, .cs-tag, .cs-caption, .cs-sub,
p, li, dd, td, th { font-size: 16px !important; line-height: 2 !important; }
.cs-kicker, .cs-badge, .cs-small, small, figcaption, .cs-annotation
{ font-size: 14px !important; line-height: 1.85 !important; }
.cs-price strong, .cs-price b { font-size: 20px !important; }
a, button, .cs-btn { font-size: 16px !important; }
input, select, textarea { font-size: 16px !important; }


/* ★最終の底上げ（rem指定などの取りこぼし）
   0.7〜0.85rem や 11〜13px の指定が残っていたため、下限を14pxで揃える。 */
* { font-size: max(1em, 0.875rem); }
body, main, section, div, p, li, td, th, dd, span, a { }
.section-kicker, .cs-kicker, [class*="kicker"], [class*="tag"], [class*="badge"],
[class*="note"], [class*="small"], [class*="caption"], [class*="annotation"], small
{ font-size: 14px !important; }
main p, main li, main td, main th, main dd { font-size: 16px !important; }


/* （税込）などの極小文字も14px以上に */
.cs-tax, .tax, [class*="tax"], sup, sub,
.cs-price small, .cs-price span, [class*="price"] span, [class*="price"] small
{ font-size: 14px !important; vertical-align: baseline !important; }


/* ★全体の下限（最終）
   クラス名の無い span なども14px未満にしない。見出しは対象外。 */
main *:not(h1):not(h2):not(h3):not(h4) { font-size: max(14px, 1em) !important; }
