﻿@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;900&family=BIZ+UDPGothic:wght@400;700&display=swap");

/* =========================================
   COLOR SYSTEM - AI Day in Shibuya 2026（v4）
   ソフトクリエイト CI "Speed & Change" を反映
   ブルー（Primary）+ シアン（Teal）+ レッドオレンジ（Red）+ アンバー（Accent）の4軸設計
   背景画像パレットに合わせてv3から拡張
   ========================================= */
:root {
  /* ==============================
     PRIMARY: Blue-Gray Scale
     ============================== */
  --c-bg-base: #F4F6F9;
  /* ページ地色：白より僅かに青み */
  --c-bg-section: #EAEDF3;
  /* セクション区別用 */
  --c-primary-900: #0F1E38;
  /* 最深部・フッター文字 */
  --c-primary-700: #1B40BE;
  /* ヘッダー・見出し（KV ブルーに合わせて彩度調整） */
  --c-primary-500: #2364D0;
  /* メインブルー・UIアクセント（背景画像ブルーに合わせ彩度UP） */
  --c-primary-300: #4F87E0;
  /* ホバー・サブUI */
  --c-primary-100: #C8D5EE;
  /* ライン・ボーダー */
  --c-primary-50: #EBF0F8;
  /* カード背景 */

  /* ==============================
     ACCENT: Amber-Yellow（Speed & Change）
     ============================== */
  --c-accent-500: #F5B200;
  --c-accent-300: #FFCF54;
  --c-accent-700: #C88E00;

  /* ==============================
     TEAL（背景画像より正式復活）
     ============================== */
  --c-teal-500: #00C4D4;
  --c-teal-300: #5DDCE8;
  --c-teal-700: #008A99;

  /* ==============================
     RED-ORANGE（背景画像より正式復活）
     ============================== */
  --c-red-500: #F04A2A;
  --c-red-300: #FF7A5A;

  /* ==============================
     NEUTRAL
     ============================== */
  --c-white: #FFFFFF;
  --c-ink-900: #141C2C;
  /* 本文テキスト */
  --c-ink-600: #4D5C74;
  /* サブテキスト */
  --c-ink-300: #9AABBD;
  /* キャプション・注記 */
  --c-border: #D0D8E8;
  /* 1px ボーダー */

  /* ==============================
     SEMANTIC ALIASES（HTML内変数との互換）
     ============================== */
  --brand-blue: var(--c-primary-500);
  --brand-blue-deep: var(--c-primary-700);
  --brand-blue-hover: var(--c-primary-300);
  --brand-teal: var(--c-teal-500);
  /* 背景画像パレットに合わせて正式復活 */
  --accent-yellow: var(--c-accent-500);
  --accent-red: var(--c-red-500);
  /* 背景画像パレットに合わせて正式復活 */
  --text-dark: var(--c-ink-900);
  --text-mute: var(--c-ink-600);
  --text-on-dark: var(--c-white);
  --bg-white: var(--c-white);
  --bg-soft: var(--c-bg-base);
  --bg-info: var(--c-primary-50);
  --border-color: var(--c-border);

  /* ==============================
     GRADIENTS（最小限に絞る）
     ============================== */
  /* ヒーロー: ブルー単色グラデ */
  --gradient-hero: linear-gradient(135deg, var(--c-primary-700) 0%, var(--c-primary-500) 100%);
  /* CTAは単色イエロー（グラデなし） */
  --gradient-cta: var(--c-accent-500);
  /* ウェーブ: アクセントイエロー単色 */
  --gradient-wave: var(--c-accent-500);
  /* ソフト背景 */
  --gradient-soft: linear-gradient(180deg, var(--c-bg-base) 0%, var(--c-bg-section) 100%);
  /* タイトルテキスト用（廃止 → primary-700 単色） */
  --gradient-title: var(--c-primary-700);

  /* LEGACY ALIASES（後方互換） */
  --primary-blue: var(--brand-blue);
  --primary-blue-hover: var(--brand-blue-hover);
  --bg-gradient: var(--gradient-hero);
  --bg-gradient-hero: var(--gradient-hero);
  --bg-gradient-cta: var(--gradient-cta);
  --bg-gradient-soft: var(--gradient-soft);
  --bg-light: var(--bg-soft);
  --bg-time: var(--bg-info);

  /* ==============================
     TYPOGRAPHY
     ============================== */
  --font-base: "Noto Sans JP", "BIZ UDPGothic", "游ゴシック体", YuGothic, sans-serif;
  --font-heading: "BIZ UDPGothic", "Noto Sans JP", "游ゴシック体", YuGothic, sans-serif;
  --ls-heading: -0.02em;
  --ls-body: 0.01em;
  --ls-label: -0.01em;

  /* ==============================
     SPACING（Stripe/Linear ベース）
     ============================== */
  --space-xs: 8px;
  --space-sm: 16px;
  --space-md: 32px;
  --space-lg: 64px;
  --space-xl: 96px;
  --space-2xl: 128px;
}

/* =========================================
   RESET
   ========================================= */
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
fieldset,
input,
textarea,
p,
blockquote,
th,
td {
  margin: 0;
  padding: 0;
}

address,
caption,
cite,
code,
dfn,
em,
strong,
th,
var {
  font-style: normal;
}

ul {
  list-style: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

caption,
th {
  text-align: left;
}

q:before,
q:after {
  content: "";
}

object,
embed {
  vertical-align: top;
}

legend {
  display: none;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: 100%;
}

img,
abbr,
acronym,
fieldset {
  border: 0;
}

/* =========================================
   BASE
   ========================================= */
body {
  font-family: var(--font-base);
  font-size: 17px;
  line-height: 1.75;
  font-weight: 400;
  letter-spacing: var(--ls-body);
  -webkit-text-size-adjust: 100%;
  overflow-x: hidden;
  color: var(--c-ink-900);
  background: var(--c-bg-base);
}

a {
  color: var(--c-primary-500);
  text-decoration: none;
}

a:hover,
.active {
  text-decoration: underline;
}

a:visited {
  color: var(--c-primary-700);
}

a:active,
a:focus,
input:active,
input:focus {
  outline: 0;
}


img {
  width: 100%;
  height: auto;
}

/* =========================================
   LAYOUT
   ========================================= */
section {
  clear: both;
  padding: var(--space-xl) 0;
  scroll-margin-top: 80px;
}

.inner {
  clear: both;
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--space-md);
  box-sizing: border-box;
}


.pc_none {
  display: none;
}

/* =========================================
   SECTION HEADING（共通見出しスタイル）
   Apple HIG タイポ階層 + Stripe 余白
   ========================================= */
h2.section-heading,
.section-heading {
  font-family: var(--font-heading);
  font-size: 32px;
  font-weight: 700;
  letter-spacing: var(--ls-heading);
  color: var(--c-primary-700);
  text-align: left;
  margin-bottom: var(--space-md);
  position: relative;
  padding-left: 20px;
  line-height: 1.25;
}

/* 左ボーダーアクセント（シアン → アンバー グラデ） */
h2.section-heading::before,
.section-heading::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.08em;
  height: 0.9em;
  width: 4px;
  background: linear-gradient(to bottom, var(--c-teal-500), var(--c-accent-500));
  border-radius: 2px;
}

/* ::after リセット（旧 h2::after 全幅線は使わない） */
h2.section-heading::after,
.section-heading::after {
  display: none;
}

/* =========================================
   SECTION ALTERNATING PATTERN
   交互背景をドットパターンで表現
   ========================================= */

/* 奇数セクション: 白半透明（コーナーシェイプを透かす） */
.forcms_block:nth-child(odd) {
  background-color: rgba(255, 255, 255, 0.88);
}

/* 偶数セクション: 淡青半透明 + ティールドットパターン */
.forcms_block:nth-child(even) {
  background-color: rgba(235, 240, 250, 0.82);
  background-image: radial-gradient(rgba(0, 196, 212, 0.18) 1px, transparent 1px);
  background-size: 24px 24px;
}

/* =========================================
   CIRCUIT LINE DIVIDER
   セクション間の回路ライン装飾
   ========================================= */
.section-circuit-accent {
  position: relative;
}

.section-circuit-accent::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 80%;
  max-width: 900px;
  height: 1px;
  background: var(--c-border);
  mask-image: linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%);
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%);
}

/* =========================================
   HEADER
   ========================================= */
.header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 80px;
  background-color: rgba(240, 245, 255, 0.96);
  border-bottom: 1px solid var(--c-border);
  z-index: 1000;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.header-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  max-width: 1200px;
  height: 100%;
  margin: 0 auto;
  padding: 0 var(--space-md);
  box-sizing: border-box;
}

.header-logo img {
  height: 32px;
  width: auto;
  vertical-align: middle;
}

.gnav-list {
  display: flex;
  gap: 24px;
}

.gnav-list a {
  color: var(--c-ink-900) !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: var(--ls-label);
  text-decoration: none;
  transition: color 0.2s ease;
}

.gnav-list a:hover {
  color: var(--c-primary-500) !important;
  text-decoration: none;
}

/* ヘッダー内 CTA ミニボタン */
.header-cta .btn-cta-mini {
  display: inline-block;
  padding: 8px 20px;
  background: var(--c-accent-500);
  color: var(--c-primary-900) !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: var(--ls-label);
  border-radius: 4px;
  border: 1px solid var(--c-accent-300);
  transition: background 0.2s ease, transform 0.15s ease;
}

.header-cta .btn-cta-mini:hover {
  background: var(--c-accent-300);
  text-decoration: none;
  transform: translateY(-1px);
}

/* ハンバーガーボタン */
.nav-toggle {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: 10px;
  z-index: 1001;
}

.nav-toggle span {
  display: block;
  width: 25px;
  height: 2px;
  background-color: var(--c-ink-900);
  margin-bottom: 6px;
  transition: all 0.3s ease;
}

.nav-toggle span:last-child {
  margin-bottom: 0;
}

/* =========================================
   HERO SECTION (Reconfigured)
   ========================================= */
#hero {
  position: relative;
  min-height: 580px;
  /* PCでの快適な表示高さ */
  padding-top: 80px;
  /* ヘッダー高さ分の余白 */
  padding-bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background-color: var(--c-primary-900);
}

/* 背景画像ラッパー */
.hero-bg-wrap {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}

.hero-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}


/* インナーコンテンツ */
.hero-inner {
  position: relative;
  z-index: 3;
  /* 画像とオーバーレイより前面 */
  width: 100%;
  max-width: 960px;
  margin: 0 auto;
  padding: var(--space-xl) var(--space-md) var(--space-lg);
  text-align: center;
  color: var(--c-white);
  box-sizing: border-box;
}

/* メインビジュアル画像 */
.hero-kv-title {
  margin: 0 auto var(--space-md);
  max-width: 800px;
  /* PCでの最適サイズ */
  width: 100%;
}

.hero-kv-img {
  width: 100%;
  height: auto;
  display: block;
  /* 画像文字の可読性を上げるためのドロップシャドウ */
  filter: drop-shadow(0 4px 12px rgba(15, 30, 56, 0.5));
}

/* CTAエリア調整 */
.hero-cta-wrapper {
  background: transparent !important;
  /* 既存の白い背景をリセット */
  padding: 0 !important;
  margin-top: var(--space-md);
}

/* モバイル用改行制御 */
.sp-only {
  display: none;
}

@media (max-width: 768px) {
  #hero {
    min-height: 420px;
  }

  .sp-only {
    display: inline;
  }
    
    /* ハンバーガーメニュー内のお申し込みボタン */
  .gnav-cta {
    padding: 24px 20px;
    text-align: center;
    border-top: 1px solid var(--c-border);
  }

  .gnav-cta .btn-cta {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 14px 20px;
  }
}

/* =========================================
   WAVE DIVIDER（KV ウェーブモチーフ：温存）
   ========================================= */
.wave-divider {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  line-height: 0;
  overflow: hidden;
  z-index: 4;
  pointer-events: none;
  /* CTAボタンのクリックエリアを妨げないよう無効化 */
}

.wave-divider svg {
  display: block;
  width: 100%;
  height: auto;
}

/* =========================================
   CTA BUTTON（グラデ廃止→イエロー単色）
   ========================================= */
.btn-cta {
  display: inline-block;
  padding: 18px 52px;
  background: var(--c-accent-500);
  color: var(--c-primary-900) !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 18px;
  line-height: 1.0;
  letter-spacing: var(--ls-label);
  border-radius: 6px;
  border: 1px solid var(--c-accent-300);
  text-align: center;
  transition: background 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}

.btn-cta:hover {
  background: var(--c-accent-300);
  border-color: var(--c-accent-500);
  transform: translateY(-2px);
  text-decoration: none;
}


/* =========================================
   ABOUT セクション（#about）
   ========================================= */
#about {
  padding: var(--space-xl) 0;
}

#about h2.section-heading {
  margin-bottom: var(--space-md);
}

.about-subtitle {
  font-family: var(--font-heading);
  font-size: clamp(18px, 2.5vw, 26px);
  font-weight: 700;
  letter-spacing: var(--ls-heading);
  color: var(--c-primary-700);
  text-align: center;
  margin-bottom: var(--space-sm);
  line-height: 1.5;
}

.about-lead {
  font-size: 18px;
  line-height: 1.7;
  font-weight: 500;
  color: var(--c-ink-600);
  text-align: center;
  max-width: 720px;
  margin: 0 auto var(--space-md);
}

/* =========================================
   EVENT BOX（開催概要・アクセス共通）
   Flexbox 化 + border 1px（box-shadow 廃止）
   ========================================= */
.event-box {
  width: 100%;
  max-width: 1090px;
  margin: 0 auto;
  border: 1px solid var(--c-primary-500);
  border-radius: 8px;
  overflow: hidden;
  background-color: var(--c-white);
}

.event-row {
  display: flex;
  border-bottom: 1px solid var(--c-border);
}

.event-row:last-child {
  border-bottom: none;
}

.event-label {
  background: var(--c-primary-50);
  color: var(--c-primary-700);
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: var(--ls-label);
  width: 160px;
  flex-shrink: 0;
  padding: var(--space-sm) var(--space-md);
  border-right: 1px solid var(--c-border);
  display: flex;
  align-items: center;
  line-height: 1.5;
}

.event-content {
  padding: var(--space-sm) var(--space-md);
  font-size: 15px;
  line-height: 1.8;
  color: var(--c-ink-900);
  flex: 1;
}

.event-content a {
  color: var(--c-primary-500);
  text-decoration: none;
}

.event-content a:hover {
  text-decoration: underline;
  color: var(--c-primary-700);
}

/* MAP埋め込み: padding なし（iframeコンテナ） */
.event-content:has(iframe) {
  padding: 0;
}

/* スケジュールコンテナ */
.schedule {
  background-color: var(--c-primary-700);
  border-radius: 8px;
  overflow: hidden;
  color: var(--c-ink-900);
  border: 1px solid var(--c-primary-500);
}

/* スケジュールテーブル */
.schedule-table {
  width: 100%;
  border-collapse: collapse;
  background-color: var(--c-white);
}

.schedule-table th,
.schedule-table td {
  border: 1px solid var(--c-border);
  padding: var(--space-sm);
  vertical-align: top;
}

.schedule-table th {
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: var(--ls-label);
  text-align: center;
  width: 25%;
  font-size: 1rem;
  color: var(--c-primary-700);
}

.schedule-table td {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--c-ink-900);
}


/* 時間セル */
.schedule-table .time-up,
.schedule-table .time-down {
  width: 28%;
  background-color: var(--c-primary-50);
  text-align: center;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: var(--ls-label);
  color: var(--c-primary-700);
  vertical-align: middle;
}

/* セッションセル */
.schedule-table .session-up,
.schedule-table .session-down {
  background-color: var(--c-white);
}

.schedule-table .session-down hr {
  margin: var(--space-sm) 0;
  border: none;
  border-top: 1px solid var(--c-border);
}

.schedule-table:not(:last-child) {
  margin-bottom: var(--space-sm);
}


/* =========================================
   PROGRAM セクション 背景画像
   ========================================= */
#program {
  background-image: url('/cms/sc/img/event/ai-ready-day-2026/bg-program-pc.webp');
  background-position: right bottom;
  background-repeat: no-repeat;
  background-size: auto;
}

/* =========================================
   TIMETABLE セクション 背景画像
   ========================================= */
#timetable {
  background-image: url('/cms/sc/img/event/ai-ready-day-2026/bg-timetable-pc.webp');
  background-position: left top;
  background-repeat: no-repeat;
  background-size: auto;
}

/* =========================================
   ACCESS セクション 背景画像
   ========================================= */
#access {
  background-image: url('/cms/sc/img/event/ai-ready-day-2026/bg-access-pc.webp');
  background-position: left bottom;
  background-repeat: no-repeat;
  background-size: auto;
}


.program-note {
  font-size: 13px;
  color: var(--c-ink-600);
  margin-top: var(--space-sm);
  text-align: left;
  line-height: 1.5;
  font-weight: 500;
}

/* SP: セクション背景画像 */
@media screen and (max-width: 768px) {
  #program {
    background-image: url('/cms/sc/img/event/ai-ready-day-2026/bg-program-sp.webp');
    background-size: auto;
  }

  #timetable {
    background-image: url('/cms/sc/img/event/ai-ready-day-2026/bg-timetable-sp.webp');
    background-size: auto;
  }

  #access {
    background-image: url('/cms/sc/img/event/ai-ready-day-2026/bg-access-sp.webp');
    background-size: auto;
  }

  .program-note {
    font-size: 12px;
    margin-top: 12px;
  }
}

/* =========================================
   PROGRAM SESSIONS（新レイアウト：縦積みブロック）
   講演者情報付き
   ========================================= */
.program-sessions {
  display: flex;
  flex-direction: column;
  gap: 28px;
  margin-bottom: var(--space-md);
}

/* セッションブロック本体 */
.program-session-block {
  background-color: var(--c-white);
  border: 1px solid var(--c-border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(15, 30, 56, 0.04);
}



/* セッションヘッダー（バッジ＋タイトル） */
.psb-header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  background-color: var(--c-primary-50);
  border-bottom: 1px solid var(--c-border);
  padding: 22px 28px;
}

/* セッション番号バッジ */
.psb-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  padding: 4px 12px;
  background: var(--c-primary-500);
  color: var(--c-white);
  font-family: var(--font-heading);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  border-radius: 4px;
  line-height: 1.4;
  margin-top: 4px;
}

/* セッションタイトル */
.psb-title {
  font-family: var(--font-heading);
  font-size: clamp(17px, 2vw, 22px);
  font-weight: 700;
  color: var(--c-primary-700);
  letter-spacing: var(--ls-heading);
  line-height: 1.4;
  margin: 0;
}

/* セッション概要エリア */
.psb-body {
  padding: 22px 28px 18px;
}

.psb-description {
  font-size: 15px;
  line-height: 1.75;
  color: var(--c-ink-600);
  margin: 0;
}

/* セクション区切り線 */
.psb-divider {
  height: 1px;
  background: linear-gradient(to right, transparent 0%, var(--c-border) 15%, var(--c-border) 85%, transparent 100%);
  margin: 0 28px;
}

/* 講演者エリア */
.psb-speaker {
  display: flex;
  align-items: flex-start;
  gap: 24px;
  padding: 24px 28px;
}

/* 顔写真ラッパー（円形） */
.psb-speaker-photo-wrap {
  flex-shrink: 0;
  width: 96px;
  height: 96px;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid var(--c-primary-100);
  box-shadow: 0 2px 8px rgba(15, 30, 56, 0.12);
}

.psb-speaker-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* 講演者テキスト情報 */
.psb-speaker-info {
  flex: 1;
  min-width: 0;
}

.psb-speaker-name {
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 700;
  color: var(--c-primary-900);
  letter-spacing: var(--ls-heading);
  margin: 0 0 4px;
  line-height: 1.3;
}

.psb-speaker-title {
  font-size: 13px;
  font-weight: 500;
  color: var(--c-primary-500);
  letter-spacing: 0.02em;
  margin: 0 0 10px;
  line-height: 1.5;
}

.psb-speaker-bio {
  font-size: 14px;
  line-height: 1.75;
  color: var(--c-ink-600);
  margin: 0;
}


/* SP対応 */
@media screen and (max-width: 768px) {
  .psb-header {
    flex-direction: column;
    gap: 8px;
    padding: 18px 20px;
  }

  .psb-badge {
    margin-top: 0;
    font-size: 11px;
  }

  .psb-title {
    font-size: 17px;
  }

  .psb-body {
    padding: 16px 20px 14px;
  }

  .psb-divider {
    margin: 0 20px;
  }

  .psb-speaker {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    padding: 18px 20px;
  }

  .psb-speaker-photo-wrap {
    width: 76px;
    height: 76px;
  }

  .psb-speaker-name {
    font-size: 16px;
  }

	.hero-inner{
		padding: 0;
	}

	#about{
		padding: var(--space-lg) 0;
	}
    
}

/* =========================================
   CONTACT セクション
   グラデ廃止 → ブルーグレー単色深
   ========================================= */
.contact {
  background: var(--c-primary-700);
  /* 背景画像に透けないよう不透明を維持 */
  color: var(--c-white);
  text-align: center;
  padding: var(--space-xl) var(--space-sm);
  position: relative;
  overflow: hidden;
}

/* ドット装飾（コンタクト背景に重ねる） */
.contact::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px);
  background-size: 28px 28px;
  pointer-events: none;
}

.contact-inner {
  position: relative;
  z-index: 1;
}

.contact h2 {
  font-family: var(--font-heading);
  font-size: clamp(20px, 2.5vw, 32px);
  font-weight: 700;
  letter-spacing: var(--ls-heading);
  margin-bottom: var(--space-sm);
  color: var(--c-white);
}

.contact-line {
  width: 40px;
  height: 3px;
  background-color: var(--c-accent-500);
  border: none;
  border-radius: 2px;
  margin: 0 auto var(--space-md);
}

.contact p {
  font-size: 1rem;
  line-height: 1.9;
  margin: 4px 0;
  color: rgba(255, 255, 255, 0.85);
}

.contact a {
  color: var(--c-accent-300);
  text-decoration: none;
}

.contact a:hover {
  text-decoration: underline;
  color: var(--c-accent-500);
}


/* =========================================
   COMMON h1, h2 フォント適用
   ========================================= */
h1,
h2 {
  font-family: var(--font-heading);
}

/* =========================================
   Responsive (SP: 768px 以下)
   ========================================= */
@media screen and (max-width: 768px) {
  body {
    font-size: 16px;
    line-height: 1.75;
  }

  table,
  th,
  td {
    word-wrap: break-word;
    overflow-wrap: break-word;
    white-space: normal;
  }

  section {
    padding: var(--space-lg) var(--space-sm);
    scroll-margin-top: 70px;
  }

  .inner {
    max-width: 100%;
    width: auto;
    padding: 0 var(--space-sm);
  }

  /* Section heading SP */
  h2.section-heading,
  .section-heading {
    font-size: 22px;
    line-height: 1.3;
    margin-bottom: var(--space-sm);
    padding-left: 16px;
  }


  .hero-cta-wrapper {
    padding: var(--space-sm) var(--space-sm) var(--space-md);
  }


  /* about & entry */
  #about .about-subtitle,
  #entry .about-subtitle {
    text-align: left;
  }

  #about .about-lead,
  #entry .about-lead,
  #exhibition .about-lead {
    text-align: left;
    font-size: 15px;
    line-height: 1.7;
	  margin: 0 auto;
  }


  /* Event box SP */
  .event-box {
    border-radius: 6px;
  }

  .event-row {
    flex-direction: column;
  }

  .event-label {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid var(--c-border);
    padding: var(--space-xs) var(--space-sm);
    font-size: 13px;
  }

  .event-content {
    padding: var(--space-sm);
    font-size: 14px;
    word-wrap: break-word;
    overflow-wrap: break-word;
  }

  /* Schedule SP */
  .schedule {
    border: 1px solid var(--c-primary-500);
    border-radius: 6px;
  }

  .schedule-table {
    display: block;
    width: 100%;
    overflow-x: auto;
  }

  .schedule-table tbody,
  .schedule-table tr {
    display: block;
    width: 100%;
  }

  .schedule-table th,
  .schedule-table td {
    display: block;
    width: 100% !important;
    box-sizing: border-box;
  }

  .schedule-table th {
    font-size: 0.9rem;
    padding: var(--space-xs) var(--space-sm);
    background-color: var(--c-primary-50);
  }

  .schedule-table td {
    font-size: 14px;
    line-height: 1.6;
    padding: var(--space-xs) var(--space-sm);
  }

  .schedule-table .time-up,
  .schedule-table .time-down {
    text-align: left;
    font-weight: bold;
    font-size: 12px;
  }

  .schedule-table .session-up,
  .schedule-table .session-down {
    word-wrap: break-word;
    overflow-wrap: break-word;
  }

  .schedule-table .session-down hr {
    margin: var(--space-xs) 0;
  }

  .schedule-table:not(:last-child) {
    margin-bottom: var(--space-xs);
  }

  /* CTA SP */
  .btn-cta {
    padding: 14px 36px;
    font-size: 16px;
    line-height: 1.0;
  }

  /* Contact SP */
  .contact {
    padding: var(--space-lg) var(--space-sm);
  }

  .contact h2 {
    font-size: 22px;
  }

  .contact-line {
    width: 32px;
    margin-bottom: var(--space-md);
  }

  /* Footer SP */
  #footer {
    padding: var(--space-lg) 0;
  }

  #footer img {
    width: 160px;
  }

  #footer .footer_logo,
  #footer .footer_box {
    text-align: center;
    display: block;
    margin-bottom: var(--space-sm);
  }

  /* Header SP */
  .header {
    height: 70px;
  }

  .header-logo img {
    height: 18px;
  }

  .gnav {
    position: absolute;
    top: 70px;
    left: 0;
    width: 100%;
    background-color: rgba(240, 245, 255, 0.98);
    border-bottom: 1px solid var(--c-border);
    display: none;
  }

  .gnav.active {
    display: block;
  }

  .gnav-list {
    flex-direction: column;
    gap: 0;
  }

  .gnav-list li {
    border-bottom: 1px solid var(--c-border);
  }

  .gnav-list a {
    display: block;
    padding: var(--space-sm);
    text-align: center;
    font-size: 16px;
  }

  .header-cta {
    display: none;
  }

  .nav-toggle {
    display: block;
  }

  .nav-toggle.active span:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
  }

  .nav-toggle.active span:nth-child(2) {
    opacity: 0;
  }

  .nav-toggle.active span:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
  }

  #hero {
    padding-top: 70px;
  }

  .pc_none {
    display: block;
  }
}

/* =========================================
   FLOATING CTA BUTTON (Pure CSS Scroll-aware)
   ========================================= */

/* コンテンツラッパー */
/* timeline-scope: #entry の view-timeline を子孫から参照可能にする */
.content-wrapper {
  position: relative;
  timeline-scope: --entry-section;
}

/* #entry に view-timeline を割り当て */
/* スクロールで #entry が表示領域に入るとタイムラインが進行する */
#entry {
  view-timeline: --entry-section block;
  text-align: center;
}

/* お申し込みセクション内テキスト余白（インラインスタイル廃止分） */
#entry .about-subtitle {
  margin-bottom: 12px;
}

#entry .about-lead {
  margin-bottom: 32px;
}

/* 1. コンテナは位置の基準とするだけ（fixedで画面に固定） */
.sticky-cta-container {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 0;
  z-index: 999;
  pointer-events: none;
}

/* 2. ボタン本体の位置指定をシンプルに */
.btn-floating-cta {
  pointer-events: auto;
  position: absolute;
  bottom: 32px; /* ★ここで下からの位置を直接指定 */
  right: 32px;  /* ★ここで右からの位置を直接指定 */
  /* 不要になった top: 100vh や複雑な transform は削除しました */
  
  display: inline-flex;
  align-items: center;
  padding: 16px 32px;
  background-color: var(--c-accent-500);
  color: var(--c-primary-900) !important;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 16px;
  letter-spacing: var(--ls-label);
  border: 1px solid var(--c-accent-300);
  border-radius: 50px;
  text-decoration: none;
  box-shadow: 0 8px 24px rgba(245, 178, 0, 0.35), 0 4px 8px rgba(15, 30, 56, 0.15);
  transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s ease;
  
  /* #entry セクション到達時のフェードアウトアニメーションは維持 */
  animation: cta-fade-out linear both;
  animation-timeline: --entry-section;
  animation-range: entry 0% entry 60%;
}

/* ホバー時の動き（少し上に浮く動きに変更） */
.btn-floating-cta:hover {
  background-color: var(--c-accent-300);
  border-color: var(--c-accent-500);
  text-decoration: none;
  transform: scale(1.02) translateY(-4px); 
  box-shadow: 0 12px 32px rgba(245, 178, 0, 0.45), 0 6px 12px rgba(15, 30, 56, 0.2);
}

.btn-floating-cta:active {
  transform: scale(0.98) translateY(0);
  box-shadow: 0 6px 16px rgba(245, 178, 0, 0.25), 0 2px 4px rgba(15, 30, 56, 0.15);
}

/* 3. スマホ対応（768px以下） */
@media screen and (max-width: 768px) {
  .btn-floating-cta {
    right: 50%;
    bottom: 24px; /* スマホ時の下からの距離 */
    transform: translateX(50%); /* 中央寄せのみ */
    width: 90%;
    max-width: 340px;
    justify-content: center;
    font-size: 14px;
    padding: 12px 24px;
    box-shadow: 0 8px 20px rgba(15, 30, 56, 0.25);
  }
	.hero-cta-wrapper{
		display: none;
	}

  .btn-floating-cta:hover {
    transform: translateX(50%) translateY(-4px);
    box-shadow: 0 10px 24px rgba(15, 30, 56, 0.3);
  }

  .btn-floating-cta:active {
    transform: translateX(50%) scale(0.98);
  }
}

/* =========================================
   TIMETABLE SESSIONS (Structured Layout)
   ========================================= */
.timetable-sessions {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.timetable-session-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-xs) 0;
}

.timetable-session-item:not(:last-child) {
  border-bottom: 1px dashed var(--c-border);
  padding-bottom: var(--space-sm);
}

.timetable-session-item .session-label {
  display: inline-block;
  background-color: var(--c-primary-50);
  color: var(--c-primary-700);
  font-family: var(--font-heading);
  font-size: 12px;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 4px;
  width: fit-content;
  flex-shrink: 0;
  border: 1px solid var(--c-primary-100);
}

.timetable-session-item .session-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--c-ink-900);
  line-height: 1.5;
}

@media (min-width: 769px) {
  .timetable-session-item {
    flex-direction: row;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-xs) 0;
  }
}

/* =========================================
   UTILITY CLASSES (改行制御)
   ========================================= */
/* PCでのみ改行（SPでは非表示） */
@media screen and (max-width: 768px) {
  .br-pc {
    display: none;
  }
}


/* ==================================================
   フッター (.l-footer) - イベントデザイン調整版
================================================== */
.l-footer { 
  background-color: #f9f9f9; /* コンテンツエリアとの区別をつけるため極薄いグレーに */
  color: #1e1e1e; 
  position: relative;
}

/* 特設サイトのテーマカラーグラデーションを上部のボーダーとして追加 */
.l-footer::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, #ffd01c, #199fd7 50%, #8a50d8);
}

@media screen and (max-width: 768px) { 
  .l-footer { padding: 60px 20px 40px; } 
}
@media screen and (min-width: 769px) { 
  .l-footer { padding: 80px 40px 30px; } 
}

/* ロゴの調整 */
.l-footer__logo { 
  margin: 0 auto; 
  text-align: center;
}
.l-footer__logo img {
  width: 100%;
  height: auto;
}
@media screen and (max-width: 768px) { 
  .l-footer__logo { max-width: 200px; margin-bottom: 40px; } 
}
@media screen and (min-width: 769px) { 
  .l-footer__logo { max-width: 220px; margin-bottom: 60px; } 
}

/* お問い合わせエリア（スッキリと中央に配置） */
#contact { 
  text-align: center; 
  margin: 0 auto 50px;
}

.l-footer__contact-ttl { 
  font-weight: 700; 
  margin-bottom: 16px; 
  font-size: 13px;
  color: #7d7d7d; /* 見出しは目立ちすぎないようにトーンダウン */
  letter-spacing: 0.1em;
}

.l-footer__contact-office { 
  font-weight: 600;
  margin-bottom: 12px; 
}
@media screen and (max-width: 768px) { 
  .l-footer__contact-office { font-size: 15px; } 
}
@media screen and (min-width: 769px) { 
  .l-footer__contact-office { font-size: 16px; } 
}

.l-footer__contact-info { 
  display: flex; 
  justify-content: center; 
  font-size: 15px;
}
.l-footer__contact-info a {
  color: #199fd7; /* メールアドレスにテーマカラーのブルーを適用 */
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s ease;
}
.l-footer__contact-info a:hover {
  text-decoration: underline;
  opacity: 0.7;
}

/* コピーライト */
.l-footer__copyright { 
  text-align: center; 
  color: #a0a0a0;
}
.l-footer__copyright small {
  font-size: 11px;
  font-family: "Roboto", sans-serif;
  letter-spacing: 0.05em;
}