  :root {
    --bg: #FAF8F3;
    --bg-alt: #F2EEE3;
    --primary: #7CC55C;
    --primary-light: #A8E063;
    --primary-soft: #C5EE8C;
    --primary-text: #3D6B2E;     /* 濃い緑：文字用 */
    --primary-deep: #2D5320;     /* さらに濃い緑：強調文字用 */
    --accent: #FFD93D;
    --accent-warm: #E8862E;      /* 文字背景用：もっと濃いオレンジ */
    --text: #1F2A26;             /* より濃い：黒に近い緑 */
    --text-light: #4A5651;       /* 濃く：可読性UP */
    --border: #E8E2D5;
    --danger: #C84545;
    --info: #2E6B7A;
  }

  /* ========== Reveal Theme Override ========== */
  .reveal {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 30px;
    color: var(--text);
    background: var(--bg);
  }

  .reveal .slides {
    text-align: left;
  }

  .reveal .slides section {
    padding: 70px 80px 160px 80px;  /* 上：ヘッダーとの重なり対策 ／ 下：教室の後ろの席対応 */
    height: 100%;
    box-sizing: border-box;
  }

  .reveal h1, .reveal h2, .reveal h3, .reveal h4 {
    font-family: 'Zen Maru Gothic', sans-serif;
    color: var(--text);
    text-transform: none;
    text-align: left;
    letter-spacing: 0.02em;
    margin-bottom: 0.5em;
  }

  .reveal h1 { font-size: 2em; line-height: 1.3; font-weight: 900; }
  .reveal h2 { font-size: 1.5em; line-height: 1.4; font-weight: 700; color: var(--primary-deep); }
  .reveal h3 { font-size: 1.15em; line-height: 1.5; font-weight: 700; }

  .reveal p {
    line-height: 1.7;
    margin-bottom: 0.6em;
  }

  .reveal strong { color: var(--primary-deep); font-weight: 700; }
  /* 濃い背景の上では明るい色で強調 */
  .reveal .slide-end strong,
  .reveal .slide-section strong {
    color: #FFD93D;
  }

  .reveal ul, .reveal ol { margin-left: 0.5em; }
  .reveal li { margin-bottom: 0.4em; line-height: 1.6; }
  /* リストのデフォルト点を無効化 */
  .reveal .quiz-choices,
  .reveal .quiz-choices li,
  .reveal .key-points,
  .reveal .key-points li {
    list-style: none !important;
    margin-left: 0;
    padding-left: 0;
  }

  .reveal .progress { color: var(--primary-deep); height: 4px; }
  .reveal .controls { color: var(--primary-light); }

  .reveal .slide-number {
    background: rgba(124, 197, 92, 0.15);
    color: var(--text);
    padding: 4px 12px;
    border-radius: 12px;
    font-size: 24px;
    font-family: 'Zen Maru Gothic', sans-serif;
  }

  /* ========== Common Layouts ========== */
  .header-strip {
    position: absolute;
    top: 24px;
    left: 80px;
    right: 80px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 28px;
    font-weight: 700;
    color: var(--text);
    font-family: 'Zen Maru Gothic', sans-serif;
  }

  .clover-mini {
    display: inline-flex;
    align-items: center;
    gap: 10px;
  }
  .clover-mini svg { width: 38px; height: 38px; }

  .section-tag {
    display: inline-block;
    background: var(--primary-soft);
    color: #3D5A20;
    padding: 8px 20px;
    border-radius: 22px;
    font-size: 26px;
    font-weight: 700;
    letter-spacing: 0.05em;
    margin-bottom: 24px;
  }

  /* 日本語の自然な改行（意味単位を保つ） */
  .reveal blockquote, .reveal .definition-box .text, .reveal p, .reveal li,
  .reveal .hint, .reveal .gw-task, .reveal .promise-card {
    line-break: strict;
    word-break: keep-all;     /* 単語の途中で切らない */
    overflow-wrap: break-word; /* どうしても入らない時のみ折り返す */
    word-wrap: break-word;
  }

  /* ========== Specific Slide Styles ========== */
  .slide-title {
    background: linear-gradient(135deg, #FAF8F3 0%, #F2EEE3 100%);
    text-align: center;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }

  .slide-title h1 {
    font-size: 2.6em;
    text-align: center;
    color: var(--primary-deep);
  }
  .slide-title .subtitle {
    font-size: 1em;
    color: var(--text-light);
    margin-top: 0.5em;
    font-family: 'Zen Maru Gothic', sans-serif;
    text-align: center;
  }
  .slide-title .meta {
    margin-top: 60px;
    font-size: 1em;
    color: var(--text-light);
  }

  .slide-section {
    background: linear-gradient(135deg, #2D5320 0%, #4F7264 100%);
    color: white;
    text-align: center;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  .slide-section h1 {
    font-size: 3em;
    color: white;
    text-align: center;
  }
  .slide-section .section-num {
    font-size: 1em;
    color: white;
    opacity: 0.9;
    font-weight: 700;
    letter-spacing: 0.3em;
    margin-bottom: 0.5em;
  }
  .slide-section .section-sub {
    font-size: 1em;
    color: white;
    opacity: 0.95;
    margin-top: 0.5em;
  }

  /* Question slide */
  .slide-quiz {
    background: linear-gradient(135deg, #FFF8E7 0%, #FFD93D 200%);
  }
  .quiz-header {
    background: #FFD93D;
    color: #5C2E00;
    padding: 8px 24px;
    border-radius: 20px;
    display: inline-block;
    font-weight: 700;
    font-size: 1em;
    margin-bottom: 24px;
  }
  .quiz-question {
    font-size: 1.3em;
    font-weight: 700;
    line-height: 1.6;
    margin-bottom: 1em;
    color: var(--text);
  }
  .quiz-choices {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .quiz-choices li {
    background: white;
    padding: 18px 28px;
    border-radius: 16px;
    margin-bottom: 12px;
    border: 2px solid var(--border);
    font-size: 1em;
    line-height: 1.5;
  }
  .quiz-choices li.correct {
    background: var(--primary-soft);
    border-color: var(--primary-deep);
    font-weight: 700;
  }
  .quiz-choices .num {
    display: inline-block;
    width: 32px;
    height: 32px;
    background: var(--primary-soft);
    color: var(--text);
    border-radius: 50%;
    text-align: center;
    line-height: 32px;
    margin-right: 12px;
    font-weight: 700;
    font-size: 1em;
  }
  .quiz-choices li.correct .num {
    background: var(--primary);
    color: white;
  }

  /* Story slide */
  .story-card {
    background: white;
    border-radius: 24px;
    padding: 32px 40px;
    box-shadow: 0 8px 30px rgba(0,0,0,0.08);
    border-left: 8px solid var(--primary);
    width: 100%;
    box-sizing: border-box;
  }
  .story-card .who {
    font-size: 1em;
    color: var(--text-light);
    margin-bottom: 0.5em;
  }
  .story-card blockquote {
    font-size: 1em;
    font-weight: 700;
    color: var(--text);
    line-height: 1.6;
    margin: 0;
    padding: 0;
    border: none;
    quotes: '「' '」';
  }
  .story-card blockquote::before { content: open-quote; color: var(--primary-deep); }
  .story-card blockquote::after { content: close-quote; color: var(--primary-deep); }

  /* Big number */
  .big-number {
    font-family: 'Zen Maru Gothic', sans-serif;
    font-size: 8em;
    font-weight: 900;
    color: var(--primary-deep);
    line-height: 1;
    text-align: center;
    margin: 0.2em 0;
  }
  .big-number-label {
    text-align: center;
    font-size: 1.1em;
    color: var(--text-light);
    margin-bottom: 0.5em;
  }

  /* Compare layout */
  .compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
    margin-top: 24px;
  }
  .compare-card {
    padding: 28px;
    border-radius: 20px;
    border: 2px solid var(--border);
  }
  .compare-card.old {
    background: #FAF3F0;
    border-color: #E8C5B0;
  }
  .compare-card.new {
    background: #F0F8E8;
    border-color: var(--primary-deep);
  }
  .compare-card h3 {
    margin-bottom: 16px;
  }
  .compare-card.old h3 { color: #B85450; }
  .compare-card.new h3 { color: #4F7264; }

  /* 4 quadrant */
  .quadrant {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-top: 24px;
  }
  .quadrant-cell {
    background: white;
    padding: 28px;
    border-radius: 20px;
    border: 2px solid var(--border);
  }
  .quadrant-cell .icon {
    font-size: 2em;
    margin-bottom: 12px;
  }
  .quadrant-cell h3 {
    color: var(--primary-deep);
    margin-bottom: 8px;
    font-size: 1.1em;
  }
  .quadrant-cell p {
    font-size: 1em;
    margin: 0;
  }

  /* Ask slide */
  .slide-ask {
    background: linear-gradient(135deg, #FFE9F0 0%, #FFD9E5 100%);
    text-align: center;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  .slide-ask .ask-icon {
    font-size: 3em;
    margin-bottom: 0.3em;
  }
  .slide-ask h2 {
    font-size: 2em;
    color: #B83A6F;
    text-align: center;
  }
  .slide-ask .ask-sub {
    font-size: 1em;
    color: var(--text-light);
    margin-top: 24px;
    text-align: center;
  }
  .slide-ask .timer {
    font-size: 2em;
    font-family: 'Zen Maru Gothic';
    margin-top: 20px;
    color: var(--accent-warm);
  }

  /* Quote box */
  .definition-box {
    background: var(--bg-alt);
    padding: 32px 40px;
    border-radius: 20px;
    border-left: 8px solid var(--primary);
    margin: 24px 0;
  }
  .definition-box .label {
    font-size: 1em;
    color: var(--primary-deep);
    font-weight: 700;
    margin-bottom: 12px;
    letter-spacing: 0.1em;
  }
  .definition-box .text {
    font-size: 1.05em;
    line-height: 1.8;
    margin-bottom: 12px;
  }
  .definition-box .source {
    font-size: 1em;
    color: var(--text-light);
    text-align: right;
  }

  /* Bullet emphasis */
  .key-points {
    list-style: none;
    margin: 24px 0;
    padding: 0;
  }
  .key-points li {
    background: white;
    padding: 18px 24px;
    border-radius: 14px;
    margin-bottom: 12px;
    border-left: 6px solid var(--primary);
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
    font-size: 1em;
  }

  /* Before/after voice */
  .voice-pair {
    background: white;
    padding: 24px 28px;
    border-radius: 16px;
    margin-bottom: 16px;
    border: 1px solid var(--border);
  }
  .voice-pair .bad {
    color: #B85450;
    font-size: 1em;
    margin-bottom: 8px;
  }
  .voice-pair .good {
    color: var(--primary-deep);
    font-weight: 700;
    font-size: 1em;
  }
  .voice-pair .label {
    display: inline-block;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    text-align: center;
    line-height: 24px;
    margin-right: 8px;
    font-weight: 700;
    font-size: 1em;
  }
  .voice-pair .label.x { background: #FAD9D5; color: #B85450; }
  .voice-pair .label.o { background: var(--primary-soft); color: var(--primary-deep); }

  /* Closing */
  .slide-end {
    background: linear-gradient(135deg, #4F7264 0%, #6B8E7F 100%);
    color: white;
    text-align: center;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  .slide-end h1 {
    color: white;
    font-size: 3em;
    text-align: center;
  }
  .slide-end p { color: white; opacity: 0.95; }

  /* Keyword summary */
  .keyword-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 16px;
    margin-top: 32px;
  }
  .keyword-pill {
    background: white;
    padding: 20px 16px;
    border-radius: 16px;
    text-align: center;
    border: 2px solid var(--primary);
    box-shadow: 0 4px 12px rgba(124, 197, 92, 0.2);
  }
  .keyword-pill .num {
    color: var(--primary-deep);
    font-weight: 700;
    font-size: 1em;
    margin-bottom: 6px;
  }
  .keyword-pill .word {
    font-family: 'Zen Maru Gothic';
    font-weight: 700;
    font-size: 1em;
  }

  /* Strengths grid (横並び5カード) */
  .strengths-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 14px;
    margin-top: 16px;
  }
  .strength-card {
    background: white;
    border-radius: 14px;
    padding: 18px 10px;
    text-align: center;
    border: 2px solid var(--primary-soft);
    box-shadow: 0 2px 8px rgba(0,0,0,0.05);
  }
  .strength-card .num {
    font-size: 1.4em;
    color: var(--primary-deep);
    font-weight: 700;
    font-family: 'Zen Maru Gothic', sans-serif;
    margin-bottom: 4px;
    line-height: 1;
  }
  .strength-card h3 {
    font-size: 1em;
    color: var(--primary-deep);
    margin: 6px 0 4px 0;
    text-align: center;
  }
  .strength-card p {
    font-size: 1em;
    color: var(--text-light);
    margin: 0;
  }

  /* Hint message */
  .hint {
    background: rgba(255, 217, 61, 0.2);
    border-left: 6px solid var(--accent);
    padding: 16px 20px;
    border-radius: 12px;
    font-size: 1em;
    margin-top: 16px;
    color: var(--text);
  }

  /* Group Work slide */
  .slide-group {
    text-align: center;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  .slide-group.pair {
    background: linear-gradient(135deg, #E8F4F8 0%, #C8E6F0 100%);
  }
  .slide-group.four {
    background: linear-gradient(135deg, #FFE9F0 0%, #FFD6E2 100%);
  }
  .slide-group .gw-icon {
    font-size: 2.5em;
    margin-bottom: 0;
    line-height: 1;
  }
  .slide-group .gw-label {
    display: inline-block;
    padding: 6px 24px;
    border-radius: 20px;
    font-weight: 700;
    font-size: 1em;
    letter-spacing: 0.15em;
    margin-bottom: 12px;
    color: white;
  }
  .slide-group.pair .gw-label { background: #2E6B7A; }
  .slide-group.four .gw-label { background: #8B2750; }
  .slide-group h2 {
    font-size: 1.7em;
    text-align: center;
    margin-bottom: 12px;
  }
  .slide-group.pair h2 { color: #1F4F58; }
  .slide-group.four h2 { color: #6B1A3A; }
  .slide-group .gw-task {
    background: white;
    padding: 24px 32px;
    border-radius: 20px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.1);
    margin: 16px auto;
    max-width: 760px;
    text-align: left;
    font-size: 1em;
    line-height: 1.6;
  }
  .slide-group .gw-task p { margin-bottom: 0.4em; }
  .slide-group .gw-time {
    background: #FFD93D;
    color: var(--text);
    padding: 8px 20px;
    border-radius: 16px;
    display: inline-block;
    font-weight: 700;
    margin-top: 12px;
    font-family: 'Zen Maru Gothic', sans-serif;
    font-size: 1em;
  }

  /* Think Pause prompt */
  .think-pause {
    background: rgba(255, 217, 61, 0.25);
    border: 2px dashed #C49500;
    padding: 20px 28px;
    border-radius: 16px;
    margin-top: 24px;
    text-align: center;
    font-size: 1em;
  }
  .think-pause strong { color: #8B6500; }

  /* 3つのお願い */
  .promise-card {
    background: white;
    padding: 24px 32px;
    border-radius: 20px;
    margin-bottom: 16px;
    border-left: 8px solid var(--primary);
    box-shadow: 0 4px 12px rgba(0,0,0,0.06);
    text-align: left;
    display: flex;
    align-items: center;
    gap: 20px;
  }
  .promise-card .promise-num {
    background: var(--primary);
    color: white;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    text-align: center;
    line-height: 48px;
    font-family: 'Zen Maru Gothic';
    font-weight: 700;
    font-size: 1.3em;
    flex-shrink: 0;
  }
  .promise-card h3 {
    margin: 0 0 4px 0;
    color: var(--primary-deep);
    font-size: 1.05em;
  }
  .promise-card p { margin: 0; font-size: 1em; color: var(--text-light); }

  /* Reveal fragment fade */
  .reveal .fragment.fade-up {
    opacity: 0;
    transform: translateY(20px);
    transition: all 0.4s;
  }
  .reveal .fragment.fade-up.visible {
    opacity: 1;
    transform: translateY(0);
  }

  /* Speaker notes hidden, but available via 'S' key */
