  :root {
    --ink: #14181b;          /* near-black slate - main text & dark accents */
    --sub: #5a6468;          /* lighter slate for secondary text */
    --gold: #b65212;          /* rust orange - accent (旧goldの置き換え) */
    --gold-light: #d97a3d;    /* lighter rust orange */
    --cream: #f5efe2;         /* warm cream background (banner-matched) */
    --cream-light: #faf6ec;
    --cream-dark: #ede4cf;
    --line: #d8d0bc;
    --bg: #ffffff;
  }
  * { box-sizing: border-box; }
  html, body { margin: 0; padding: 0; background-color: #f9f9f9 !important; }
  body {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    color: var(--ink);
    background: #f9f9f9;
    font-size: 19px;
    line-height: 1.85;
    padding-bottom: 100px;
    -webkit-font-smoothing: antialiased;
    word-break: break-word;
    margin: 0 auto;
    box-shadow: none !important;
    max-width: none;
  }
  .container {
    max-width: 480px;
    margin: 0 auto;
    padding: 0 20px;
  }
  @media (max-width: 480px) {
    body {
    }
    .sidemargin {
      padding: 0 15px;
    }
    .container { padding: 0; }
  }
  .mincho { font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif; }

  /* ====== HERO ====== */
  .hero {
    background: var(--cream);
    padding: 0;
    text-align: center;
    position: relative;
    overflow: hidden;
  }
  .hero-inner { max-width: 480px; margin: 0 auto; position: relative; }
  .hero-tag {
    color: var(--gold);
    font-weight: 700;
    letter-spacing: 0.05em;
    margin-bottom: 28px;
    font-size: 19px;
  }
  .hero-en {
    font-family: 'Georgia', 'Times New Roman', serif;
    letter-spacing: 0.15em;
    font-size: 32px;
    font-weight: 400;
    color: var(--ink);
    line-height: 1.3;
    margin: 0 0 6px;
  }
  .hero-date {
    font-family: 'Georgia', 'Times New Roman', serif;
    letter-spacing: 0.1em;
    font-size: 30px;
    color: var(--gold);
    margin-bottom: 36px;
  }
  .hero-decor {
    height: 120px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 120'><g fill='none' stroke='%23b65212' stroke-width='1.5' opacity='0.45'><path d='M30 80 Q50 50 80 65 Q100 75 110 60 Q120 50 140 60' stroke-linecap='round'/><circle cx='160' cy='40' r='3' fill='%23b65212'/></g></svg>");
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    margin-bottom: 12px;
  }
  .hero-bubble {
    display: inline-block;
    position: relative;
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 40px;
    padding: 10px 28px;
    font-size: 19px;
    color: var(--ink);
    margin-bottom: 24px;
  }
  .hero-bubble::after {
    content: '';
    position: absolute;
    bottom: -10px; left: 50%;
    transform: translateX(-50%);
    border-width: 10px 8px 0;
    border-style: solid;
    border-color: #fff transparent transparent;
  }
  .hero-sub {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 19px;
    color: var(--sub);
    margin: 8px 0 12px;
  }
  .hero-title {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 44px;
    letter-spacing: 0.18em;
    font-weight: 700;
    margin: 0 0 8px;
    line-height: 1.3;
  }
  .hero-period {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 18px;
    color: var(--gold);
    margin-bottom: 36px;
  }
  .hero-portraits {
    display: flex; gap: 24px; justify-content: center; align-items: flex-end;
    margin-top: 8px;
  }
  .hero-portrait {
    width: 130px; max-width: 42%;
  }
  .hero-portrait .ph {
    width: 100%; aspect-ratio: 3/4;
    background: #e6dec5;
    border-radius: 4px;
    display: flex; align-items: center; justify-content: center;
    color: #b8a880; font-size: 12px;
    margin-bottom: 8px;
  }
  .hero-portrait .name { font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif; font-size: 16px; color: var(--ink); margin: 2px 0; }
  .hero-portrait .role { font-size: 12px; color: var(--sub); }

  /* ====== SECTION ====== */
  section.block {
    padding: 36px 0 24px;
    background: #f9f9f9;
  }
  section.block.cream { background: #f9f9f9; }

  /* ====== Recommend list title (こんな方におすすめ) ====== */
  .reco-item { margin: 0 0 22px; }
  .reco-head { margin: 0 0 10px; }
  .reco-desc { margin: 0; }
  .reco-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    background: var(--gold);
    color: #fff;
    font-family: 'Helvetica Neue', Arial, sans-serif;
    font-size: 14px;
    font-weight: 700;
    border-radius: 50%;
    line-height: 26px;
    text-align: center;
    margin-right: 8px;
    vertical-align: middle;
    flex-shrink: 0;
    padding: 0;
  }
  .reco-ttl {
    display: inline;
    font-size: 19px;
    font-weight: 700;
    color: var(--ink);
    line-height: 1.5;
    letter-spacing: 0.02em;
    vertical-align: middle;
  }

  h2.heading {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 21px;
    font-weight: 700;
    line-height: 1.55;
    color: var(--ink);
    text-align: left;
    margin: 40px 0 28px;
    padding: 18px 18px;
    letter-spacing: 0.04em;
    background: #f2efe9;
    border-left: 6px solid var(--gold);
  }
  h2.heading:first-of-type { margin-top: 0; }
  /* ====== Duo photos (講師2人の写真をブレンド) ====== */
  .duo-photos {
    margin: 32px 0 0;
    border-radius: 4px;
    overflow: hidden;
  }
  .duo-photos img {
    display: block;
    width: 100%;
  }
  .duo-photos .duo-1 {
    aspect-ratio: 16/10;
    object-fit: cover;
    object-position: 25% 28%;
    -webkit-mask-image: linear-gradient(180deg, #000 65%, transparent 100%);
            mask-image: linear-gradient(180deg, #000 65%, transparent 100%);
  }
  .duo-photos .duo-2 {
    aspect-ratio: 16/10;
    object-fit: cover;
    object-position: 75% 18%;
    margin-top: -50px;
    -webkit-mask-image: linear-gradient(0deg, #000 65%, transparent 100%);
            mask-image: linear-gradient(0deg, #000 65%, transparent 100%);
  }

  /* ====== Story box (実話エピソード) ====== */
  .story-box {
    margin: 24px 0 0;
    padding: 28px 24px 28px;
    background: var(--cream);
    border-radius: 4px 4px 0 0;
  }
  .story-label {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 11px;
    letter-spacing: 0.3em;
    color: var(--gold);
    font-weight: 700;
    text-align: center;
    margin-bottom: 10px;
  }
  .story-title {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 19px;
    font-weight: 700;
    color: var(--ink);
    margin: 0 0 14px;
    line-height: 1.55;
    text-align: center;
    letter-spacing: 0.02em;
  }
  .story-divider {
    width: 40px;
    height: 2px;
    background: var(--gold);
    margin: 0 auto 18px;
  }
  .story-box p {
    font-size: 19px;
    line-height: 1.85;
    margin: 0 0 14px;
    color: var(--ink);
  }
  .story-box p:last-child { margin-bottom: 0; }
  .story-img-wrap {
    margin: 0 0 24px;
  }
  .story-img-wrap .story-img {
    position: relative;
    overflow: hidden;
    border-radius: 0 0 4px 4px;
  }
  .story-img-wrap .story-img::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 90px;
    background: linear-gradient(180deg, var(--cream) 0%, transparent 100%);
    pointer-events: none;
    z-index: 1;
  }
  .story-img-wrap img {
    width: 100%;
    height: auto;
    display: block;
  }
  .story-img-wrap figcaption {
    font-size: 12px;
    color: var(--sub);
    text-align: center;
    padding: 10px 16px 0;
  }

  /* ====== Overview card (講座の概要 囲み) ====== */
  .overview-card {
    background: #faf6ec;
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 8px 20px 20px;
    margin: 14px 0 0;
  }
  .overview-card h3.subhead:first-of-type { margin-top: 18px; }
  .overview-card p:last-child { margin-bottom: 0; }

  /* ====== Course heading (ベーシック/プレミアム) ====== */
  .course-heading {
    margin: 36px 0 16px;
    padding: 16px 0 12px;
    text-align: center;
    border-top: 2px solid var(--gold);
    border-bottom: 2px solid var(--gold);
  }
  .course-title {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 19px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
    letter-spacing: 0.04em;
    line-height: 1.4;
  }

  /* ====== Achievement heading (サンマーク出版の世界実績) ====== */
  .achieve-heading {
    margin: 36px 0 16px;
    padding: 16px 0 12px;
    text-align: center;
    border-top: 2px solid var(--gold);
    border-bottom: 2px solid var(--gold);
  }
  .achieve-label {
    display: block;
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 11px;
    letter-spacing: 0.3em;
    color: var(--gold);
    font-weight: 700;
    margin-bottom: 4px;
  }
  .achieve-title {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 19px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
    letter-spacing: 0.04em;
    line-height: 1.4;
  }

  /* ====== Learn heading (この講座で学ぶこと) ====== */
  h3.learn-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 32px 0 14px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--line);
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    line-height: 1.5;
  }
  .learn-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    background: var(--gold);
    color: #fff;
    font-family: 'Helvetica Neue', Arial, sans-serif;
    font-size: 14px;
    font-weight: 700;
    border-radius: 50%;
    line-height: 28px;
    text-align: center;
    flex-shrink: 0;
  }
  .learn-ttl {
    font-size: 19px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.03em;
  }

  /* ====== Common 3 things heading (二人の講師に共通する3つのこと) ====== */
  .common-item {
    display: flex;
    align-items: baseline;
    gap: 14px;
    margin: 32px 0 16px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--gold);
  }
  .common-num {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 32px;
    font-weight: 700;
    color: var(--gold);
    line-height: 1;
    letter-spacing: 0.05em;
    flex-shrink: 0;
  }
  .common-title {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
    flex: 1;
    letter-spacing: 0.03em;
    line-height: 1.5;
  }

  h3.subhead {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 18px;
    font-weight: 700;
    border-bottom: 1px solid var(--line);
    padding-bottom: 6px;
    margin: 28px 0 14px;
    line-height: 1.5;
  }
  h2.lead {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 22px;
    background: var(--cream);
    padding: 14px 20px;
    margin: 28px 0;
    border-radius: 2px;
  }
  p { margin: 0 0 18px; }
  b, strong { font-weight: 700; }
  .small { font-size: 16px; color: #888; }
  .source { font-size: 12px; color: #999; margin-top: -8px; line-height: 1.6; }
  .accent { color: var(--gold); }

  /* Photo card (cream box with portrait + bio) */
  .pcard {
    background: var(--cream-light);
    border-radius: 4px;
    padding: 20px 20px;
    margin: 20px 0 28px;
    display: grid;
    grid-template-columns: 200px 1fr;
    column-gap: 16px;
    row-gap: 10px;
  }
  .pcard .ph {
    grid-column: 1;
    grid-row: 1 / span 2;
    width: 200px;
    aspect-ratio: 1 / 1;
    background: #e6dec5;
    border-radius: 4px;
    display: flex; align-items: center; justify-content: center;
    color: #b8a880; font-size: 12px; text-align: center;
    overflow: hidden;
    align-self: start;
  }
  .pcard .ph img { object-position: center top; }
  .pcard .body { display: contents; }
  .pcard .name {
    grid-column: 2;
    grid-row: 1;
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 26px;
    font-weight: 700;
    margin: 0;
    align-self: end;
    line-height: 1.3;
    color: var(--ink);
    letter-spacing: 0.05em;
    border-bottom: 3px solid var(--gold);
    padding-bottom: 6px;
    display: inline-block;
    width: fit-content;
  }
  .pcard .role {
    grid-column: 2;
    grid-row: 2;
    color: var(--gold);
    font-size: 13px;
    margin: 0;
    align-self: start;
    line-height: 1.5;
    font-weight: 600;
    letter-spacing: 0.06em;
  }
  .pcard p {
    grid-column: 1 / -1;
    font-size: 19px;
    line-height: 1.85;
    margin: 0;
  }

  /* Highlighted quote-box */
  blockquote.q, p.q {
    margin: 18px 0;
    padding: 18px 24px;
    background: var(--cream-light);
    border-left: 3px solid var(--gold-light);
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 20px;
    color: var(--ink);
  }

  /* Quote set (個別カード版) */
  .quote-set { margin: 28px 0; display: flex; flex-direction: column; gap: 14px; }
  .q-card {
    position: relative;
    margin: 0;
    padding: 46px 24px 22px 32px;
    background: var(--cream);
    border-radius: 4px;
    font-family: '游明朝', 'Yu Mincho', 'YuMincho', 'Hiragino Mincho ProN', 'Hiragino Mincho Pro', serif;
    color: var(--ink);
  }
  .q-card::before {
    content: '\201C';
    position: absolute;
    top: 6px;
    left: 14px;
    font-family: 'Georgia', serif;
    font-size: 56px;
    color: var(--gold);
    line-height: 1;
    font-weight: 700;
  }
  .q-card .q-jp {
    font-size: 19px;
    font-weight: 700;
    line-height: 1.85;
    margin: 0 0 8px;
    letter-spacing: 0.02em;
  }
  .q-card .q-en {
    font-size: 12px;
    font-style: italic;
    color: var(--sub);
    margin: 0;
    letter-spacing: 0.04em;
    font-family: 'Georgia', 'Times New Roman', serif;
    padding-left: 22px;
    position: relative;
  }
  .q-card .q-en::before {
    content: '—';
    color: var(--gold);
    font-style: normal;
    font-weight: 700;
    position: absolute;
    left: 0;
    top: 0;
  }

  /* Numbered list */
  ol.numbered { list-style: none; padding-left: 0; counter-reset: n; }
  ol.numbered > li {
    counter-increment: n;
    padding-left: 44px;
    position: relative;
    margin-bottom: 12px;
    line-height: 1.7;
    font-size: 15px;
  }
  ol.numbered > li::before {
    content: counter(n, decimal-leading-zero);
    position: absolute;
    left: 0;
    top: 0;
    color: var(--gold);
    font-family: 'Georgia', serif;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.05em;
  }

  /* TOC anchor links */
  ol.toc-list > li a {
    color: var(--ink);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s, color 0.2s;
    display: inline-block;
    padding-bottom: 2px;
  }
  ol.toc-list > li a:hover,
  ol.toc-list > li a:active {
    color: var(--gold);
    border-bottom-color: var(--gold);
  }

  /* Smooth scroll + offset for sticky elements */
  html { scroll-behavior: smooth; }
  [id^="sec-"] { scroll-margin-top: 16px; }

  /* Bullet feature list */
  ul.feat { list-style: none; padding: 0; }
  ul.feat > li {
    padding: 14px 0 14px 22px;
    position: relative;
    border-bottom: 1px dotted var(--line);
    line-height: 1.7;
  }
  ul.feat > li:last-child { border-bottom: none; }
  ul.feat .feat-ttl {
    display: block;
    font-weight: 700;
    color: var(--gold);
    font-size: 19px;
    margin-bottom: 6px;
    letter-spacing: 0.05em;
  }
  ul.feat .feat-desc {
    display: block;
    font-size: 19px;
    color: var(--ink);
    line-height: 1.85;
  }
  ul.feat > li::before {
    content: '◆';
    position: absolute;
    left: 6px;
    top: 14px;
    color: var(--gold);
    font-size: 12px;
    line-height: 27px;
  }

  /* Bonus block (プレミアム特典) */
  .bonus {
    margin: 28px 0 18px;
  }
  .bonus .bonus-heading {
    margin: 0 0 14px;
    padding: 14px 0 12px;
    text-align: center;
    border-top: 2px solid var(--gold);
    border-bottom: 2px solid var(--gold);
  }
  .bonus .label {
    display: block;
    color: var(--gold);
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 12px;
    letter-spacing: 0.25em;
    font-weight: 700;
    margin-bottom: 4px;
  }
  .bonus h4 {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 18px;
    margin: 0;
    letter-spacing: 0.03em;
    line-height: 1.4;
    font-weight: 700;
    color: var(--ink);
    line-height: 1.5;
  }
  .bonus p { font-size: 19px; margin: 0 0 6px; line-height: 1.85; }

  /* ====== Schedule tabs (yoga reference 風) ====== */
  .sched-tabs {
    margin: 28px 0;
    padding: 24px 16px 18px;
    background: #ffffff;
    border: 2px solid var(--ink);
    border-radius: 8px;
  }
  .sched-tabs .sched-head {
    text-align: center;
    margin-bottom: 16px;
    padding-bottom: 0;
  }
  .sched-tabs .sched-head .head-en {
    display: inline-block;
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 13px;
    letter-spacing: 0.4em;
    color: #fff;
    font-weight: 700;
    padding: 5px 18px;
    border-radius: 14px;
    background: #2f6e5a;
    margin-bottom: 10px;
  }
  .sched-tabs .sched-head .head-jp {
    font-size: 13px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.08em;
  }
  .sched-tabs .year-divider {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 14px 0 10px;
  }
  .sched-tabs .year-divider::before,
  .sched-tabs .year-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(0,0,0,0.15);
  }
  .sched-tabs .year-divider span {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 12px;
    letter-spacing: 0.3em;
    color: var(--ink);
    font-weight: 700;
    padding: 2px 10px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 10px;
  }
  .sched-tabs .holiday {
    color: #d24a4a;
    font-weight: 600;
  }
  .sched-tabs .st-head {
    text-align: center;
    font-size: 14px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.1em;
    margin-bottom: 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(0,0,0,0.08);
  }
  .sched-tabs .st-card {
    position: relative;
    text-align: center;
    background: #fafafa;
    border: 1px solid #ececec;
    border-radius: 6px;
    padding: 10px 14px;
    margin: 0 0 6px;
  }
  .sched-tabs .st-card .st-datetime {
    display: block;
    text-align: center;
  }
  .sched-tabs .st-card .st-date {
    display: inline;
    font-size: 15px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.02em;
    line-height: 1.4;
  }
  .sched-tabs .st-card .st-date small {
    font-size: 12px;
    font-weight: 500;
    color: var(--sub);
    margin-left: 2px;
  }
  .sched-tabs .st-card .st-time {
    display: inline;
    font-size: 13px;
    color: var(--sub);
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.4;
    margin-left: 8px;
  }
  .sched-tabs .st-card .st-format {
    display: block;
    font-size: 11px;
    color: var(--sub);
    margin-top: 2px;
    letter-spacing: 0.02em;
  }
  .sched-tabs .st-card .st-format.online-only {
    color: #d24a4a;
    font-weight: 700;
  }
  .sched-tabs .st-card .body-fmt {
    font-size: 12px;
    color: var(--sub);
    font-weight: 500;
    letter-spacing: 0;
    margin-left: 2px;
  }
  .sched-tabs .st-card .st-body {
    display: block;
    font-size: 13px;
    color: var(--ink);
    text-align: center;
    line-height: 1.4;
    margin-top: 4px;
    font-weight: 600;
  }
  .sched-tabs .st-card.premium .st-body {
    font-size: 13px;
    letter-spacing: 0;
  }
  .sched-tabs .st-card .st-tag {
    display: inline-block;
    margin-top: 4px;
  }
  .sched-tabs .st-card .st-tag.premium-tag {
    padding: 2px 8px;
    font-size: 10px;
    margin-top: 0;
    margin-bottom: 6px;
  }
  .sched-tabs .st-card .st-tag {
    flex-shrink: 0;
    display: inline-block;
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 12px;
    font-weight: 700;
    letter-spacing: 0.05em;
    line-height: 1;
    white-space: nowrap;
  }
  .sched-tabs .st-card .st-tag.special {
    background: var(--gold);
    color: #fff;
  }
  .sched-tabs .st-card .st-tag.premium-tag {
    background: var(--gold);
    color: #fff;
  }
  .sched-tabs .st-card .st-tag.finale-tag {
    background: #2f6e5a;
    color: #fff;
  }
  .sched-tabs .st-card .st-tag.opening-tag {
    background: #2f6e5a;
    color: #fff;
  }
  .sched-tabs .st-card.opening {
    background: #d8ece4;
    border-color: #d8ece4;
  }
  .sched-tabs .st-card.opening .st-body {
    font-weight: 700;
    font-size: 15px;
    letter-spacing: 0.05em;
    color: #2f6e5a;
    text-align: center;
    margin-top: 6px;
  }
  .sched-tabs .st-card.premium {
    background: #fde4d0;
    border-color: #fde4d0;
  }
  .sched-tabs .st-card.finale {
    background: #d8ece4;
    border-color: #d8ece4;
    padding: 16px;
  }
  .sched-tabs .st-card.finale .st-body {
    font-weight: 700;
    font-size: 15px;
    letter-spacing: 0.04em;
    color: #2f6e5a;
    text-align: center;
    margin-top: 6px;
  }

  /* ====== Schedule board (legacy) ====== */
  .sched-board {
    margin: 28px 0;
    padding: 24px 16px;
    background: #fdfaf2;
    border: 1px solid var(--line);
    border-radius: 4px;
  }
  .sched-opening {
    text-align: center;
    padding-bottom: 22px;
    border-bottom: 1px dashed var(--line);
    margin-bottom: 22px;
  }
  .sched-opening .op-year {
    font-size: 14px;
    color: var(--sub);
    letter-spacing: 0.04em;
  }
  .sched-opening .op-date {
    font-size: 30px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.04em;
    margin: 4px 0 2px;
  }
  .sched-opening .op-date span { font-size: 20px; margin-left: 2px; }
  .sched-opening .op-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--gold);
    letter-spacing: 0.1em;
    margin-top: 6px;
  }
  .sched-cols {
    display: flex;
    gap: 12px;
    margin: 0 0 22px;
  }
  .sched-col { flex: 1; min-width: 0; }
  .sched-col .col-header {
    text-align: center;
    font-size: 14px;
    font-weight: 700;
    padding: 8px 4px;
    border-radius: 4px;
    letter-spacing: 0.04em;
    margin-bottom: 8px;
    line-height: 1.3;
  }
  .sched-col .col-header.basic {
    background: var(--cream);
    color: var(--ink);
  }
  .sched-col .col-header.premium {
    background: var(--gold);
    color: #fff;
  }
  .sched-col .col-plus {
    font-size: 12px;
    color: var(--gold);
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.4;
    font-weight: 600;
  }
  .sched-col .col-item {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 10px 8px;
    text-align: center;
    margin-bottom: 8px;
  }
  .sched-col .col-item .ci-date {
    display: block;
    font-size: 16px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.02em;
    line-height: 1.3;
  }
  .sched-col .col-item .ci-date small {
    font-size: 12px;
    color: var(--sub);
    font-weight: 500;
  }
  .sched-col .col-item .ci-note {
    display: block;
    font-size: 11px;
    color: var(--gold);
    margin-top: 4px;
    line-height: 1.4;
    font-weight: 600;
  }
  .sched-col .col-item.premium-item {
    border-color: var(--gold);
    background: #fff;
  }
  .sched-finale {
    text-align: center;
    padding-top: 22px;
    border-top: 1px dashed var(--line);
  }
  .sched-finale .fn-year {
    font-size: 14px;
    color: var(--sub);
    letter-spacing: 0.04em;
  }
  .sched-finale .fn-date {
    font-size: 26px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.04em;
    margin: 4px 0 12px;
  }
  .sched-finale .fn-date span { font-size: 18px; margin-left: 2px; }
  .sched-finale .fn-box {
    background: var(--ink);
    color: #fff;
    padding: 18px 16px;
    border-radius: 4px;
  }
  .sched-finale .fn-title {
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.08em;
    line-height: 1.4;
  }
  .sched-finale .fn-sub {
    font-size: 12px;
    color: var(--gold-light);
    margin-top: 6px;
    letter-spacing: 0.15em;
  }

  /* ====== Old key-dates (legacy) ====== */
  .key-dates {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 24px 0;
    padding: 18px 20px;
    background: var(--cream);
    border-radius: 4px;
    border-left: 4px solid var(--gold);
  }
  .key-date {
    display: flex;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
  }
  .key-label {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 11px;
    letter-spacing: 0.2em;
    color: var(--gold);
    font-weight: 700;
    text-transform: uppercase;
  }
  .key-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.02em;
  }
  .sched-legend {
    font-size: 13px;
    color: var(--sub);
    margin: 0 0 18px;
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
  }
  .legend-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 4px;
    vertical-align: middle;
  }
  .legend-dot.basic { background: #fff; border: 2px solid var(--gold); }
  .legend-dot.premium { background: var(--gold); }
  .sched-month { margin: 0 0 22px; }
  .month-title {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-size: 13px;
    letter-spacing: 0.15em;
    color: var(--sub);
    margin: 0 0 8px;
    font-weight: 600;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--line);
  }
  .month-title span {
    color: var(--ink);
    font-size: 17px;
    margin-left: 6px;
    letter-spacing: 0.05em;
  }
  .sched-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 10px;
    border-bottom: 1px solid #eee;
    flex-wrap: wrap;
  }
  .sched-item:last-child { border-bottom: none; }
  .sched-item.premium-row { background: #fdf6e3; border-bottom-color: #f0e6c8; }
  .sched-item.finale { background: var(--cream); }
  .sched-num {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--gold);
    color: var(--gold);
    font-family: 'Helvetica Neue', Arial, sans-serif;
    font-weight: 700;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
  }
  .sched-num.premium {
    background: var(--gold);
    color: #fff;
    border-color: var(--gold);
    font-size: 13px;
  }
  .sched-date {
    font-size: 17px;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: 0.02em;
    min-width: 84px;
  }
  .sched-date small {
    font-size: 13px;
    font-weight: 500;
    color: var(--sub);
    margin-left: 2px;
  }
  .sched-tag {
    display: inline-block;
    font-size: 12px;
    padding: 3px 10px;
    border-radius: 12px;
    letter-spacing: 0.04em;
    font-weight: 600;
  }
  .sched-tag.basic {
    background: #fff;
    color: var(--gold);
    border: 1px solid var(--gold);
  }
  .sched-tag.premium {
    background: var(--gold);
    color: #fff;
  }
  .sched-flag {
    display: inline-block;
    font-size: 12px;
    color: var(--ink);
    background: #fff7e8;
    padding: 3px 8px;
    border-radius: 2px;
    font-weight: 700;
    letter-spacing: 0.02em;
  }

  /* Old Table - schedule (legacy) */
  .schedule-wrap { overflow-x: auto; margin: 24px 0; }
  table.schedule {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    line-height: 1.5;
  }
  table.schedule th {
    background: #2f3b3f;
    color: var(--gold);
    padding: 12px 10px;
    text-align: left;
    font-weight: 600;
    border: 1px solid #2f3b3f;
  }
  table.schedule td {
    padding: 12px 10px;
    border-bottom: 1px solid var(--line);
    border-right: 1px solid var(--line);
    border-left: 1px solid var(--line);
    background: #fff;
  }
  table.schedule tr.premium td { background: #fdf6e3; }
  table.schedule .num { font-family: 'Georgia', serif; color: var(--gold); font-weight: 700; }

  /* Pricing card */
  .price-grid {
    display: grid; grid-template-columns: 1fr; gap: 16px;
    margin: 20px 0;
  }
  .price-card {
    background: var(--cream);
    border-radius: 4px;
    padding: 22px 20px;
  }
  .price-card.premium {
    background: #2f3b3f; color: #fff;
  }
  .price-card.premium .ribbon { color: var(--gold); }
  .price-card .ribbon {
    font-family: 'Georgia', serif;
    font-size: 12px;
    letter-spacing: 0.15em;
    color: var(--gold);
    margin-bottom: 8px;
  }
  .price-card .h4-mobile { font-family: '游ゴシック', sans-serif; font-size: 18px; margin: 0 0 8px; font-weight: 700; }
  .price-card h4 {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 22px;
    margin: 0 0 12px;
  }
  .price-card .price {
    font-family: 'Georgia', serif;
    font-size: 28px;
    margin: 12px 0 16px;
    font-weight: 700;
  }
  .price-card .desc { font-size: 14px; line-height: 1.7; margin: 0; }

  /* Steps */
  .steps { counter-reset: step; margin: 28px 0; }
  .step {
    position: relative;
    padding: 16px 18px 16px 72px;
    background: var(--cream-light);
    border-left: 3px solid var(--gold);
    margin-bottom: 14px;
    counter-increment: step;
  }
  .step::before {
    content: 'STEP ' counter(step);
    position: absolute;
    left: 16px; top: 18px;
    color: var(--gold);
    font-family: 'Georgia', serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.1em;
  }
  .step h4 { margin: 0 0 8px; font-size: 15px; font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif; line-height: 1.5; }
  .step ul { margin: 8px 0 0; padding-left: 18px; font-size: 14px; }

  /* FAQ */
  details.faq {
    border-bottom: 1px solid var(--line);
    padding: 18px 4px;
  }
  details.faq summary {
    cursor: pointer;
    font-weight: 700;
    font-size: 15px;
    list-style: none;
    padding-left: 26px;
    position: relative;
    line-height: 1.55;
  }
  details.faq summary::-webkit-details-marker { display: none; }
  details.faq summary::before {
    content: 'Q';
    position: absolute;
    left: 0; top: 0;
    color: var(--gold);
    font-family: 'Georgia', serif;
    font-weight: 700;
    font-size: 18px;
  }
  details.faq summary::after {
    content: '＋';
    position: absolute;
    right: 4px; top: 0;
    color: var(--gold);
    transition: transform 0.2s;
  }
  details.faq[open] summary::after { content: '−'; }
  details.faq .answer {
    margin-top: 12px;
    padding-left: 26px;
    font-size: 14px;
    line-height: 1.85;
    color: var(--sub);
  }
  details.faq .answer p { margin: 8px 0; color: var(--sub); }

  /* Final CTA banner */
  .final-cta {
    background: var(--cream);
    padding: 60px 24px;
    text-align: center;
  }
  .final-cta h2 {
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    font-size: 22px;
    margin: 0 0 14px;
    border: none;
    padding: 0;
  }

  /* Final letter style */
  .final-letter {
    background: var(--cream);
    padding: 48px 20px;
  }
  .letter-box {
    position: relative;
    max-width: 480px;
    margin: 0 auto;
    background: #fdfbf5;
    border-top: 2px solid var(--gold);
    border-bottom: 2px solid var(--gold);
    padding: 40px 28px 36px;
    font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
    color: var(--ink);
    line-height: 2;
    font-size: 17px;
  }
  .letter-box::before,
  .letter-box::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    height: 1px;
    background: var(--gold);
  }
  .letter-box::before { top: 4px; }
  .letter-box::after { bottom: 4px; }
  .letter-box p {
    margin: 0 0 18px;
    text-align: center;
  }
  .letter-box p:last-child { margin-bottom: 0; }

  /* Fixed bottom CTA */
  .fixed-cta {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    background: var(--ink);
    color: #fff;
    padding: 0;
    display: flex;
    z-index: 100;
    box-shadow: 0 -4px 20px rgba(0,0,0,0.15);
  }
  .fixed-cta a {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    text-align: center;
    padding: 18px 12px;
    border-radius: 0;
    text-decoration: none;
    font-weight: 700;
    font-size: 16px;
    letter-spacing: 0.04em;
    line-height: 1.3;
  }
  .fixed-cta a.line {
    background: #06C755;
    color: #fff;
  }
  .fixed-cta a.cta-main {
    background: var(--gold);
    color: #fff;
  }

  /* Footer */
  footer.site-footer {
    background: var(--cream);
    color: var(--sub);
    padding: 36px 20px;
    text-align: center;
    font-size: 13px;
    line-height: 1.9;
  }
  footer.site-footer a { color: var(--gold); text-decoration: none; }
  footer.site-footer .brand { color: var(--ink); font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif; font-size: 16px; margin-bottom: 16px; font-weight: 700; letter-spacing: 0.05em; }

  /* Photo placeholder */
  .img-ph {
    background: var(--cream);
    border: 1px dashed var(--line);
    color: #b8a880;
    padding: 32px 24px;
    text-align: center;
    font-size: 13px;
    margin: 18px 0;
    border-radius: 4px;
  }

  /* Image-style book placeholder horizontal */
  .book-row {
    background: var(--cream);
    border-radius: 4px;
    padding: 16px;
    margin: 14px 0 20px;
  }
  .book-row .label-en { font-family: 'Georgia', serif; color: var(--gold); font-size: 14px; letter-spacing: 0.1em; }
  .book-row h4 { font-family: '游ゴシック', 'Yu Gothic', 'Hiragino Sans', 'Noto Sans JP', sans-serif; font-size: 17px; margin: 4px 0 8px; line-height: 1.45; }
  .book-row p { font-size: 17px; margin: 4px 0; line-height: 1.8; }

  /* Goal pill */
  .goal-pill {
    display: inline-block;
    background: var(--gold);
    color: #fff;
    padding: 6px 18px;
    border-radius: 30px;
    font-size: 13px;
    letter-spacing: 0.08em;
    margin-bottom: 16px;
  }

  .side-nav, .site-header, .sky-bg {
   display: none !important;
  }


