/* ===== Reset & Base ===== */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
}

body {
  font-family: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Hiragino Sans", sans-serif;
  line-height: 1.6;
  color: #374151;
  overflow-x: hidden;
}

/* 共通：日本語の改行位置を自然に保ちつつはみ出し防止 */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  word-break: keep-all;
  overflow-wrap: anywhere;
  text-wrap: pretty;
}

/* 単語・フレーズ単位で改行させたいときに使用 */
.no-wrap {
  display: inline-block;
}

/* スマホ：文章の改行・読みやすさ（HP全体） */
@media (max-width: 767px) {
  body {
    line-height: 1.75;
    overflow-wrap: break-word;
    word-wrap: break-word;
    /* 320px未満でも改行を揃えるため横スクロールを許可 */
    overflow-x: auto;
    min-width: 320px;
  }
  p, li, .section-desc, .section-sub, .worry-box-a, .hero-description,
  .about-intro-overview, .about-page-overview, .about-info-card-text,
  .about-board-text, .about-board-note, .rework-feature-desc, .rework-feature-note,
  .rework-intro p, .rework-closing-sub, .curriculum-card-inner > p,
  .about-infographic-box-body, .about-infographic-list li, .about-infographic-note, .worry-card-solution-body,
  .target-note, .info-badge-desc {
    line-height: 1.8;
    overflow-wrap: anywhere;
    word-break: keep-all;
    text-wrap: pretty;
  }
  h1, h2, h3, h4, .section-title, .worry-box-q, .curriculum-card-item h3,
  .about-info-card-title, .about-board-title, .rework-feature-title {
    line-height: 1.5;
    overflow-wrap: anywhere;
    word-break: keep-all;
    text-wrap: pretty;
  }
  .container, .container-narrow, .container-small {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  /* モバイル：改行位置を全端末で統一（320px未満も同じ改行にするため幅を固定） */
  .container-narrow,
  .container-small,
  .hero-content,
  .hero-description-section .hero-description-inner,
  .hero-nav-grid-section .container,
  #faq .container-narrow,
  #contact .container-small {
    width: 320px;
    min-width: 320px;
    max-width: 320px;
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }
  /* 320px未満で横スクロールさせるため、ラッパーも最小幅・はみ出し許可 */
  .min-h-screen {
    min-width: 320px;
    overflow-x: auto;
  }
}

img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

button {
  font-family: inherit;
  cursor: pointer;
  border: none;
  background: none;
}

a {
  color: inherit;
  text-decoration: none;
}

/* ===== Layout ===== */
.min-h-screen {
  min-height: 100vh;
  max-width: 100vw;
  overflow-x: hidden;
}
.bg-white { background-color: #fff; }
.font-sans { font-family: inherit; }

p.text-slate-600 {
  color: rgba(15, 23, 42, 1);
}

/* ===== Container ===== */
.container { max-width: 75rem; margin: 0 auto; padding: 0 1.5rem; }
.container-narrow { max-width: 70rem; margin: 0 auto; padding: 0 1.5rem; }
.container-small { max-width: 64rem; margin: 0 auto; padding: 0 1.5rem; }
/* 481px以上：1024px以上と同じデザイン（メインコンテンツ幅1200px・中央寄せ） */
@media (min-width: 481px) {
  .container,
  #support .container { max-width: 1200px; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; }
  .container-narrow { max-width: min(70rem, 1200px); margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; }
  .container-small { max-width: min(64rem, 1200px); margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; }
  .hero-content { max-width: 1200px; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; }
  .hero-inner { max-width: 1200px; margin-left: auto; margin-right: auto; }
}

/* ===== Navbar ===== */
#navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
  background: #fff;
  transition: box-shadow 0.3s, background 0.3s;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);
}

.nav-inner {
  max-width: 75rem;
  margin: 0 auto;
  padding: 0.75rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}
@media (min-width: 481px) {
  .nav-inner { max-width: 1200px; margin-left: auto; margin-right: auto; }
}

/* ===== スマホ表示（480px以下を基準としたレイアウト） ===== */
@media (max-width: 480px) {
  .container, .container-narrow, .container-small {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
  .section { padding: 3rem 0.75rem; }
  .section.section-py12 { padding-top: 2rem; padding-bottom: 2rem; }
  .hero-content { padding-left: 0.75rem; padding-right: 0.75rem; }
  .nav-inner { padding-left: 0.75rem; padding-right: 0.75rem; }
}

.logo-img { height: 2.5rem; width: auto; }

.nav-links {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

.nav-link {
  color: #374151;
  font-size: 0.875rem;
  font-weight: 500;
  white-space: nowrap;
  transition: color 0.3s;
}

.nav-link:hover { color: #0d9488; }

a.nav-link {
  text-decoration: none;
  background: none;
  border: none;
  cursor: pointer;
}

a.nav-link-active { color: #0d9488; font-weight: 600; }

.nav-cta {
  background: rgba(0, 160, 0, 1);
  color: #fff;
  padding: 0.625rem 1.5rem;
  border-radius: 9999px;
  font-size: 0.875rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  transition: background 0.3s;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
}

.nav-cta:hover { background: #115e59; }

a.nav-cta { text-decoration: none; }

.mobile-menu-btn {
  display: none;
  width: 2.5rem;
  height: 2.5rem;
  align-items: center;
  justify-content: center;
  color: #374151;
}

.mobile-menu-btn i { font-size: 1.5rem; }

.mobile-menu {
  display: none;
  background: #fff;
  border-top: 1px solid #e5e7eb;
  padding: 1rem 1.5rem;
}

.mobile-menu.open { display: block; }

.mobile-nav-link {
  display: block;
  padding: 0.5rem 0;
  color: #374151;
  font-size: 0.875rem;
  width: 100%;
  text-align: left;
  transition: color 0.3s;
}

.mobile-nav-link:hover { color: #0d9488; }

@media (max-width: 1023px) {
  .desktop-only { display: none !important; }
  .mobile-menu-btn { display: flex; }
}

/* ===== Hero ===== */
.hero {
  position: relative;
  min-height: 100vh;
  height: 100vh;
  display: flex;
  align-items: flex-start;
}

/* 768px以上：ヒーロー要素を非表示（スマホ表示は変更しない） */
@media (min-width: 768px) {
  .hero {
    min-height: 100vh;
    height: 100vh;
    display: block;
  }
  .hero-content .hero-catchphrase,
  .hero-content .hero-brand-img,
  .hero-content .hero-inner {
    display: none !important;
  }
  .hero-content {
    position: absolute;
    inset: 0;
    z-index: 10;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
  }
  .hero-content > * {
    pointer-events: auto;
  }
  .hero-content .hero-right-text {
    display: none;
  }
}
@media (min-width: 1024px) {
  .hero { min-height: 100vh; height: 100vh; }
  .hero-content {
    padding: clamp(2.5rem, 5vh, 3.5rem) clamp(1.5rem, 4vw, 2rem);
  }
}

.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}

@media (max-width: 767px) {
  .hero-bg { overflow: visible; }
  /* スマホ：ヒーロー背景を少し広く映す（中央寄せで横も見せる） */
  .hero-bg-img {
    object-fit: cover;
    object-position: center center;
  }
}

.hero-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
}

/* 768px以上：背景を横に伸ばして上下を切らない（スマホは変更なし） */
@media (min-width: 768px) {
  .hero-bg-img {
    object-fit: fill;
  }
}

.hero-content {
  position: relative;
  z-index: 10;
  width: 100%;
  padding: 8rem 1.5rem 4rem;
}

/* ヒーロー右側テキスト（デフォルト・スマホ以外で768px用グリッドに上書き） */
.hero-right-text {
  position: absolute;
  right: 1rem;
  left: auto;
  top: 40%;
  transform: translateY(-50%);
  text-align: right;
}

/* ヒーロー：スマホ最適化（3つのボックスを非表示＝背景のみ表示） */
@media (max-width: 767px) {
  .hero-content .hero-catchphrase,
  .hero-content .hero-brand-img,
  .hero-content .hero-right-text,
  .hero-content .hero-inner {
    display: none !important;
  }
  .hero {
    min-height: 100vh;
    height: 100vh;
    overflow: hidden;
  }
  .hero-content {
    padding: 5.5rem 0.75rem 2.75rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100vh;
    position: relative;
    overflow: visible;
  }
  .hero-catchphrase { order: 1; }
  /* キャッチコピーをヒーロー背景の扉の下に絶対配置 */
  .hero-content .hero-inner {
    order: 2;
    position: absolute !important;
    left: 50%;
    transform: translateX(-50%);
    bottom: 6% !important;
    width: 100%;
    max-width: 20rem;
    margin: 0 !important;
    padding: 0 0.75rem;
    box-sizing: border-box;
  }
  .hero-right-text {
    order: 3;
    display: flex;
    position: absolute;      /* 絶対配置（hero-content 基準） */
    top: 1rem;               /* 上端付近に配置（テキストと重ならない位置） */
    left: 50%;
    transform: translateX(-50%);
    margin: 0;
    justify-content: center;
    text-align: center;
    z-index: 5;
  }
  .hero-right-vertical {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.1rem;
  }
  .hero-right-img {
    height: 5.5rem;
    width: auto;
  }
  /* スマホ：キャッチフレーズを下にずらすだけ（大きさ・色はグローバルをそのまま使用） */
  .hero-content .hero-catchphrase {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    margin-top: 12rem !important;
    margin-bottom: 0.75rem !important;
    white-space: normal;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
  }
  /* スマホ：1行目・2行目で改行（働くことへの不安を / 可能性に変える） */
  .hero-content .hero-catchphrase span {
    display: block !important;
    width: 100%;
    text-align: center;
  }
  .hero-inner .hero-grid {
    display: block;
  }
  .hero-left {
    width: 100%;
    max-width: none;
    text-align: center;
    margin: 0;
    padding: 0;
  }
  .hero-catch-copy {
    background: none;
    border: none;
    box-shadow: none;
    padding: 0.5rem 0;
    border-radius: 0;
  }
  .hero-badge {
    margin-top: 0.25rem;
    margin-bottom: 1rem;
    padding: 0.5rem 1.125rem;
    font-size: 0.8125rem;
  }
  .hero-buttons {
    width: 100%;
    gap: 0.625rem;
  }
  .hero-buttons .btn-primary,
  .hero-buttons .btn-outline {
    width: 100%;
    justify-content: center;
  }
  .hero-description {
    position: relative;
    bottom: auto;
    left: auto;
    transform: none;
    margin-top: 0;
    padding: 0;
    font-size: 0.875rem;
    line-height: 1.7;
    width: 100%;
    max-width: 100%;
    text-align: center;
    color: #334155;
    background: transparent;
    border-radius: 0;
    box-shadow: none;
    border: none;
  }
}

@keyframes hero-catchphrase-float {
  from {
    opacity: 0;
    transform: translate(-50%, -50%) translateY(48px);
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%) translateY(0);
  }
}

@keyframes hero-catchphrase-float-mobile {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

/* スマホのみ改行を表示（PCは1行のまま） */
.hero-br { display: none; }

@media (max-width: 767px) {
  .hero-br { display: block !important; }
}

/* キャッチコピー：スマホは4行、PC（768px以上）は2行 */
.hero-br-sp { display: none; }
.hero-br-pc { display: block; }
@media (max-width: 767px) {
  .hero-br-sp { display: block; }
  .hero-br-pc { display: block; }
}

/* キャッチフレーズを2行で固定（1行目：働くことへの不安を / 2行目：可能性に変える） */
.hero-catchphrase-line1,
.hero-catchphrase-line2 {
  display: block !important;
  width: 100%;
  text-align: center;
}

/* キャッチフレーズ「働くことへの不安を / 可能性に変える」は非表示 */
.hero-catchphrase {
  display: none !important;
}

.hero-description-section {
  width: 100%;
  background: #fff;
  padding: 2.5rem 1.5rem;
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero-description-inner {
  width: 100%;
  max-width: 48rem;
  margin: 0 auto;
}

.hero-description {
  position: relative;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  font-size: 1rem;
  line-height: 1.85;
  text-align: center;
  color: #334155;
  font-family: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Hiragino Sans", sans-serif;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  border: none;
  opacity: 1;
  visibility: visible;
}

.hero-right-img {
  display: block;
  width: 350px;
  height: 300px;
  object-fit: contain;
}

@media (min-width: 768px) {
  .hero-description-section { padding: 3rem 2rem; }
  .hero-description-inner { max-width: 52rem; }
  .hero-description { font-size: 1.125rem; }
}

.hero-right-vertical {
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  gap: 0.75rem;
}

.hero-right-vertical .hero-right-sub,
.hero-right-vertical .hero-right-brand {
  writing-mode: vertical-rl;
  text-orientation: upright;
  letter-spacing: 0.1em;
  font-family: "Noto Serif JP", serif;
  color: #6b4423;
}

.hero-right-sub {
  font-size: 1.5rem;
  font-weight: 600;
}

.hero-right-brand {
  font-size: 3rem;
  font-weight: 700;
}

@media (min-width: 768px) {
  .hero-right-sub { font-size: 1.75rem; }
  .hero-right-brand { font-size: 3.5rem; }
}

@media (min-width: 1024px) {
  .hero-right-sub { font-size: 1.875rem; }
  .hero-right-brand { font-size: 4.5rem; }
}

@media (min-width: 768px) {
  .hero-inner { max-width: 75rem; margin: 0 auto; position: relative; display: flex; flex-direction: column; min-height: 80vh; }
}

.hero-grid {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
}
.hero-left {
  margin-top: -2rem;
  margin-right: auto;
  margin-left: -12rem;
}

.hero-badge {
  display: inline-block;
  background: linear-gradient(to right, #fbbf24, #eab308);
  color: #111827;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  margin-bottom: 1rem;
}


.hero-title {
  font-size: 2.25rem;
  font-weight: 900;
  color: #000;
  margin-bottom: 1.5rem;
  line-height: 1.2;
}

.hero-title-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  text-align: center;
}

.hero-accent { color: #fbbf24; }

@media (min-width: 768px) {
  .hero-title { font-size: 3rem; }
}

@media (min-width: 1024px) {
  .hero-title { font-size: 3.75rem; }
}

.hero-catch-copy {
  margin: 0;
  font-size: 1rem;
  line-height: 1.8;
  color: #1f2937;
  font-weight: 600;
  max-width: 28em;
  letter-spacing: 0.02em;
  padding: 0.75rem 0;
  font-family: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Hiragino Sans", sans-serif;
  background: none;
  border: none;
  box-shadow: none;
  border-radius: 0;
}

.hero-catch-br-sp,
.br-sp {
  display: none;
}

.br-pc {
  display: none;
}

@media (min-width: 768px) {
  .br-pc {
    display: block !important;
  }
}

@media (max-width: 767px) {
  .hero-catch-br-sp,
  .br-sp {
    display: block !important;
  }
  .br-pc {
    display: none !important;
  }
  .hero-brand-img {
    display: none !important;
  }
  .hero-catch-copy {
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0.5rem 0.75rem !important;
    border-radius: 0 !important;
  }
  .hero-left {
    margin-top: 0 !important;
    margin-left: 0.75rem !important;
    margin-right: 0.75rem !important;
  }
}

.hero-buttons {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-bottom: 2rem;
}

@media (min-width: 640px) {
  .hero-buttons { flex-direction: row; align-items: flex-start; }
}

.btn-primary {
  background: #0f766e;
  color: #fff;
  padding: 0.75rem 1.5rem;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  transition: all 0.3s;
}

.btn-primary:hover { background: #115e59; }

.btn-outline {
  background: rgba(255,255,255,0.9);
  backdrop-filter: blur(4px);
  border: 2px solid #6b4423;
  color: #6b4423;
  padding: 0.75rem 1.5rem;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  font-weight: 700;
  transition: all 0.3s;
}

.btn-outline:hover {
  background: #6b4423;
  color: #fff;
}

.btn-primary { box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25); }

.hero-badges {
  margin-top: auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}

@media (min-width: 768px) {
  .hero-badges { grid-template-columns: repeat(3, 1fr); }
}

.hero-badge-card {
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
  border-radius: 1rem;
  padding: 1.5rem;
  box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);
  display: flex;
  align-items: center;
  gap: 1rem;
}

.hero-badge-icon {
  width: 4rem;
  height: 4rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.875rem;
}

.hero-badge-icon.blue-dark {
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff;
}

.hero-badge-icon.blue {
  background: linear-gradient(135deg, #60a5fa, #3b82f6);
  color: #111827;
}

.hero-badge-card:nth-child(2) .hero-badge-icon { color: #111827; }

.hero-badge-card h3 { font-size: 1.125rem; font-weight: 900; color: #111827; margin-bottom: 0.25rem; }
.hero-badge-card p { font-size: 0.875rem; color: #4b5563; }

/* ===== Concept (みらいろ) ===== */
.concept-section {
  position: relative;
  padding: 5rem 1.5rem;
  overflow: hidden;
}

@media (min-width: 768px) {
  .concept-section { padding: 6rem 1.5rem; }
}

.concept-bg {
  position: absolute;
  inset: 0;
  background: none;
  background-image: none;
  color: rgba(55, 65, 81, 1);
  z-index: 0;
}

.concept-gradient-text {
  background: linear-gradient(135deg, #0f766e 0%, #0d9488 40%, #14b8a6 70%, #0ea5e9 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.concept-highlight {
  display: inline;
  padding: 0 0.125em;
  border-left: 3px solid #0d9488;
  padding-left: 0.5rem;
  margin-left: 0.125rem;
}

.concept-inner {
  position: relative;
  z-index: 1;
  max-width: 56rem;
  margin: 0 auto;
}

.concept-catch {
  text-align: center;
  margin-bottom: 3rem;
}

@media (min-width: 768px) {
  .concept-catch { margin-bottom: 4rem; }
}

.concept-catch-title {
  font-size: 1.75rem;
  font-weight: 900;
  color: #1e293b;
  line-height: 1.4;
  margin-bottom: 1.25rem;
  letter-spacing: 0.02em;
}

@media (min-width: 768px) {
  .concept-catch-title { font-size: 2.5rem; }
}

.concept-catch-lead {
  font-size: 1rem;
  color: #475569;
  line-height: 1.8;
  max-width: 32rem;
  margin: 0 auto;
}

@media (min-width: 768px) {
  .concept-catch-lead { font-size: 1.125rem; }
}

.concept-story {
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .concept-story { margin-bottom: 2.5rem; }
}

.concept-card {
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(8px);
  border-radius: 1rem;
  padding: 2rem 1.5rem;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.8);
}

@media (min-width: 768px) {
  .concept-card { padding: 2.5rem 2.5rem; }
}

.concept-card-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: #0f172a;
  margin-bottom: 1rem;
}

@media (min-width: 768px) {
  .concept-card-title { font-size: 1.25rem; }
}

.concept-story-text {
  font-size: 0.9375rem;
  color: #334155;
  line-height: 1.9;
  margin: 0;
}

.concept-message {
  margin-bottom: 2.5rem;
}

@media (min-width: 768px) {
  .concept-message { margin-bottom: 3rem; }
}

.concept-worry {
  font-size: 1rem;
  color: #64748b;
  line-height: 1.8;
  margin-bottom: 1.25rem;
}

.concept-answer {
  font-size: 0.9375rem;
  color: #334155;
  line-height: 1.9;
  margin: 0;
}

.concept-answer strong {
  color: #0f766e;
  font-weight: 700;
}

.concept-cta {
  text-align: center;
}

.concept-cta-text {
  font-size: 1rem;
  color: #475569;
  margin-bottom: 1rem;
}

.concept-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: linear-gradient(135deg, #0d9488, #0f766e);
  color: #fff;
  padding: 1rem 2rem;
  border-radius: 9999px;
  font-size: 1rem;
  font-weight: 700;
  border: none;
  cursor: pointer;
  box-shadow: 0 10px 25px rgba(13, 148, 136, 0.35);
  transition: transform 0.2s, box-shadow 0.2s;
}

.concept-cta-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(13, 148, 136, 0.4);
}

.concept-cta-btn i {
  font-size: 1.25rem;
}

/* Concept scroll-in (fade-in up) */
.concept-scroll-in {
  transform: translateY(24px);
}

.concept-scroll-in.is-visible {
  opacity: 1 !important;
  transform: translateY(0);
}

@media (min-width: 768px) {
  .sp-only { display: none; }
}

/* ===== Sections ===== */
.section { padding: 4rem 1.5rem; }
.section.section-py12 { padding-top: 3rem; padding-bottom: 3rem; }
.section-white { background: #fff; }
.section-gray { background: linear-gradient(to bottom, #f9fafb, #fff); }

/* ===== リワーク（復職支援）プログラム専用 ===== */
.section-rework-program {
  background: linear-gradient(180deg, #f0f9ff 0%, #faf8f5 50%, #f5f5f0 100%);
  padding: 4rem 1.5rem 5rem;
}
@media (min-width: 768px) {
  .section-rework-program { padding: 5rem 1.5rem 6rem; }
}

.rework-program-header {
  margin-bottom: 2.5rem;
}
@media (min-width: 768px) {
  .rework-program-header { margin-bottom: 3.5rem; }
}

.rework-catch {
  font-family: "Noto Serif JP", "Noto Sans JP", sans-serif;
  font-size: 1.75rem;
  font-weight: 700;
  color: #0f766e;
  margin: 1rem 0 0.5rem;
  letter-spacing: 0.02em;
  line-height: 1.4;
}
@media (max-width: 767px) {
  .rework-catch {
    font-size: 1.375rem;
    white-space: nowrap;
  }
}
@media (min-width: 768px) {
  .rework-catch {
    font-size: 2.5rem;
    margin: 1.25rem 0 0.75rem;
  }
}

.rework-catch-sub {
  font-size: 1rem;
  color: #4b5563;
  max-width: 32rem;
  margin: 0 auto;
  line-height: 1.7;
}
@media (min-width: 768px) {
  .rework-catch-sub { font-size: 1.125rem; }
}

.rework-intro {
  max-width: 42rem;
  margin: 0 auto 3rem;
  padding: 0 0.5rem;
}
.rework-intro p {
  font-size: 0.9375rem;
  color: #374151;
  line-height: 1.8;
}
@media (min-width: 768px) {
  .rework-intro {
    margin-bottom: 4rem;
  }
  .rework-intro p { font-size: 1rem; }
}

.rework-features-grid {
  display: grid;
  gap: 2rem;
  margin-bottom: 4rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .rework-features-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
  }
}
@media (min-width: 1024px) {
  .rework-features-grid {
    gap: 2.25rem;
    margin-bottom: 5rem;
  }
}

/* リワーク詳細カード：独立カード形式・余白多め・淡いブルー/グリーンアクセント */
.rework-feature-card {
  background: #fff;
  border-radius: 1rem;
  padding: 1.75rem 1.25rem;
  box-shadow: 0 4px 20px rgba(13, 148, 136, 0.08);
  border: 1px solid rgba(14, 165, 233, 0.15);
  border-left: 4px solid #0d9488;
  display: flex;
  flex-direction: column;
  gap: 0;
  text-align: left;
}
@media (min-width: 768px) {
  .rework-feature-card {
    padding: 2.25rem 1.75rem;
  }
}

.rework-feature-icon {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  color: #fff;
  background: linear-gradient(135deg, #0ea5e9 0%, #0d9488 100%);
  margin-bottom: 1.25rem;
  flex-shrink: 0;
}
@media (min-width: 768px) {
  .rework-feature-icon {
    width: 3.5rem;
    height: 3.5rem;
    font-size: 1.625rem;
    margin-bottom: 1.5rem;
  }
}

.rework-feature-title {
  font-size: 1.125rem;
  font-weight: 900;
  color: #0f766e;
  line-height: 1.45;
  margin-bottom: 1rem;
  letter-spacing: 0.01em;
}
@media (min-width: 768px) {
  .rework-feature-title {
    font-size: 1.25rem;
    margin-bottom: 1.25rem;
  }
}

.rework-feature-desc {
  font-size: 0.875rem;
  color: #374151;
  line-height: 1.75;
  margin-bottom: 1rem;
}
@media (min-width: 768px) {
  .rework-feature-desc {
    font-size: 0.9375rem;
    margin-bottom: 1.25rem;
  }
}

.rework-feature-list {
  list-style: none;
  padding: 0;
  margin: 0 0 1rem;
}
.rework-feature-list li {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.8125rem;
  color: #4b5563;
  line-height: 1.6;
  padding: 0.35em 0;
}
.rework-feature-list li i {
  color: #0d9488;
  flex-shrink: 0;
  margin-top: 0.2em;
  font-size: 1.125em;
}
.rework-feature-list li span {
  flex: 1;
}
@media (min-width: 768px) {
  .rework-feature-list li {
    font-size: 0.875rem;
    padding: 0.4em 0;
  }
}

.rework-feature-note {
  font-size: 0.9375rem;
  color: #374151;
  font-weight: 600;
  line-height: 1.7;
  margin: 0;
  padding-top: 0.5rem;
  border-top: 1px solid rgba(14, 165, 233, 0.2);
}
@media (min-width: 768px) {
  .rework-feature-note {
    font-size: 1rem;
    padding-top: 0.75rem;
  }
}

.rework-closing {
  text-align: center;
  max-width: 36rem;
  margin: 0 auto 2.5rem;
  padding: 1.5rem 1rem;
}
.rework-closing-main {
  font-size: 1.125rem;
  font-weight: 700;
  color: #111827;
  margin-bottom: 0.75rem;
  line-height: 1.6;
}
@media (min-width: 768px) {
  .rework-closing-main { font-size: 1.25rem; }
}
.rework-closing-sub {
  font-size: 0.9375rem;
  color: #4b5563;
  line-height: 1.7;
  margin: 0;
}

/* ヒーローとコンセプトの間：ヘッダー風ナビグリッド（写真形式・HP色） */
.hero-nav-grid-section {
  padding: 2rem 1.5rem;
  background: #f3f4f6;
}

.hero-nav-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 1fr;
  gap: 1rem;
  max-width: 56rem;
  margin: 0 auto;
}

.hero-nav-grid-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 1rem 1rem;
  min-height: 3.5rem;
  background: #fff;
  border: 2px solid #0d9488;
  border-radius: 0.25rem;
  color: #111827;
  font-size: 0.9375rem;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
  font-family: inherit;
}

.hero-nav-grid-item:hover {
  background: #f0fdfa;
  border-color: #0f766e;
  color: #0f766e;
}

a.hero-nav-grid-item {
  text-decoration: none;
}

.hero-nav-grid-chevron {
  flex-shrink: 0;
  font-size: 1.25rem;
  color: #0d9488;
  transition: color 0.2s;
}

.hero-nav-grid-item:hover .hero-nav-grid-chevron {
  color: #0f766e;
}

@media (max-width: 767px) {
  .hero-nav-grid {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 1fr;
    gap: 0.75rem;
  }
  .hero-nav-grid-item {
    font-size: 0.8125rem;
    padding: 0.875rem;
    min-height: 3.25rem;
  }
}

.section-stone {
  background: #f0fdf4;
  padding: 6rem 1.5rem;
  border-top: 4px solid #34C759;
  border-bottom: 4px solid #34C759;
}

#support {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.section-header { text-align: center; margin-bottom: 3rem; }
.section-badge {
  display: inline-block;
  padding: 0.375rem 1rem;
  border-radius: 0.375rem;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  margin-bottom: 0.75rem;
}

.section-badge.teal { background: #0f766e; color: #fff; }
.section-badge.blue { background: #2563eb; color: #fff; }
.section-badge.amber { background: #f59e0b; color: #111827; }
.section-badge.gray { background: #374151; color: #fff; }
.section-badge.large { padding: 0.5rem 1.5rem; font-size: 0.875rem; }
.support-header .section-badge.large { padding: 0.5rem 1.5rem; }
#support .section-badge.teal { background: #2db84d; color: #fff; }
#support .container {
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  max-width: 75rem;
  box-sizing: border-box;
}

.section-title {
  font-size: 1.875rem;
  font-weight: 900;
  color: #111827;
  margin-bottom: 0.75rem;
}

.section-header .section-title.worry-title { margin-bottom: 1rem; }

.section-title.large { font-size: 2.25rem; }
@media (min-width: 768px) { .section-title.large { font-size: 3rem; } }

@media (min-width: 768px) {
  .section-title { font-size: 2.25rem; }
  .section-title.large { font-size: 2.5rem; }
}

.section-desc { font-size: 1.125rem; color: #374151; font-weight: 500; }
.section-desc.text-gray-700 { color: #374151; }
.section-sub { font-size: 0.875rem; color: #6b7280; max-width: 48rem; margin: 0 auto; line-height: 1.6; }
.section-sub.curriculum-sub { color: #6b7280; max-width: 48rem; margin: 0 auto 1.5rem; }
.text-teal { color: #0d9488; }
.text-teal-600 { color: #0d9488; }
.text-blue { color: #2563eb; }
.text-blue-600 { color: #2563eb; }
.text-emerald-700 { color: #047857; }

.mb-12 { margin-bottom: 3rem; }

/* ===== About ===== */
.about-grid {
  display: grid;
  gap: 1.5rem;
  margin-bottom: 3rem;
}

@media (min-width: 768px) {
  .about-grid { grid-template-columns: repeat(3, 1fr); }
}

.about-card {
  background: linear-gradient(135deg, #f0fdfa, #fff);
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
  border: 2px solid #99f6e4;
  transition: all 0.3s;
  text-align: center;
}

.about-card:hover { box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1); }

.about-icon {
  width: 4rem;
  height: 4rem;
  border-radius: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.25rem;
  font-size: 1.875rem;
}

.about-icon.teal { background: linear-gradient(135deg, #14b8a6, #0d9488); color: #fff; }
.about-card h3 { font-size: 1.5rem; font-weight: 900; color: #111827; margin-bottom: 0.75rem; }
.about-card p { font-size: 0.875rem; color: #374151; line-height: 1.6; }

/* ===== 就労移行支援とはページ（about）専用 ===== */
.section-about-page {
  padding: 4rem 1.5rem 5rem;
}
@media (min-width: 768px) {
  .section-about-page { padding: 5rem 1.5rem 6rem; }
}

.about-page-header {
  text-align: center;
  margin-bottom: 2.5rem;
}
@media (min-width: 768px) {
  .about-page-header { margin-bottom: 3rem; }
}

.about-page-title {
  font-size: 1.75rem;
  font-weight: 900;
  color: #111827;
  margin: 0.75rem 0 1rem;
  line-height: 1.35;
}
@media (min-width: 768px) {
  .about-page-title {
    font-size: 2.25rem;
    margin: 1rem 0 1.25rem;
  }
}

.about-page-overview {
  font-size: 1rem;
  color: #374151;
  line-height: 1.75;
  max-width: 40rem;
  margin: 0 auto;
}
@media (min-width: 768px) {
  .about-page-overview { font-size: 1.125rem; }
}

.about-info-cards {
  display: grid;
  gap: 1.5rem;
  margin-bottom: 3rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .about-info-cards {
    grid-template-columns: repeat(3, 1fr);
    gap: 1.75rem;
    margin-bottom: 4rem;
  }
}

.about-info-card {
  background: #fff;
  border-radius: 1rem;
  padding: 1.5rem;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
  border: 1px solid #e5e7eb;
  border-top: 4px solid #0d9488;
}
@media (min-width: 768px) {
  .about-info-card { padding: 1.75rem; }
}

.about-info-card-icon {
  width: 3rem;
  height: 3rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  color: #fff;
  background: linear-gradient(135deg, #14b8a6, #0d9488);
  margin-bottom: 1rem;
}
@media (min-width: 768px) {
  .about-info-card-icon {
    width: 3.5rem;
    height: 3.5rem;
    font-size: 1.625rem;
  }
}

.about-info-card-title {
  font-size: 1.125rem;
  font-weight: 900;
  color: #111827;
  margin: 0 0 0.75rem;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .about-info-card-title { font-size: 1.25rem; }
}

.about-info-card-text {
  font-size: 0.9375rem;
  color: #374151;
  line-height: 1.7;
  margin: 0 0 0.75rem;
}
@media (min-width: 768px) {
  .about-info-card-text { font-size: 1rem; }
}

.about-info-note {
  font-size: 0.8125rem;
  color: #1e40af;
  line-height: 1.65;
  margin: 0;
  padding: 0.5rem 0 0;
  border-top: 1px solid #dbeafe;
}
@media (min-width: 768px) {
  .about-info-note {
    font-size: 0.875rem;
    padding-top: 0.75rem;
  }
}

/* ===== 就労移行支援とは：モダン・アシンメトリレイアウト ===== */
.section-about-modern {
  position: relative;
  overflow: hidden;
  padding: 4rem 1.5rem 5rem;
  background: #fafbfc;
}
@media (min-width: 768px) {
  .section-about-modern { padding: 5rem 1.5rem 6rem; }
}

.about-modern-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}

.about-modern-shape {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(13, 148, 136, 0.06) 0%, transparent 70%);
}
.about-modern-shape-1 {
  width: clamp(12rem, 80vw, 32rem);
  height: clamp(12rem, 80vw, 32rem);
  top: -8%;
  left: -15%;
}
.about-modern-shape-2 {
  width: clamp(10rem, 60vw, 24rem);
  height: clamp(10rem, 60vw, 24rem);
  bottom: 10%;
  right: -10%;
  background: radial-gradient(circle, rgba(37, 99, 235, 0.05) 0%, transparent 70%);
}
.about-modern-shape-3 {
  width: clamp(8rem, 40vw, 16rem);
  height: clamp(8rem, 40vw, 16rem);
  top: 50%;
  left: 40%;
  background: radial-gradient(circle, rgba(13, 148, 136, 0.04) 0%, transparent 70%);
}
@media (min-width: 1024px) {
  .about-modern-shape-1 { width: 32rem; height: 32rem; }
  .about-modern-shape-2 { width: 24rem; height: 24rem; }
  .about-modern-shape-3 { width: 16rem; height: 16rem; }
}

.about-modern-container {
  position: relative;
  z-index: 1;
}

.about-modern-layout {
  display: grid;
  gap: 2.5rem;
  margin-bottom: 3rem;
  grid-template-columns: 1fr;
}
@media (min-width: 900px) {
  .about-modern-layout {
    grid-template-columns: 0.95fr 1.05fr;
    gap: 3rem;
    align-items: start;
  }
}

.about-intro-block {
  padding: 0 0.25rem;
}
.about-intro-block .section-badge {
  display: inline-block;
  margin-bottom: 0.75rem;
}
.about-intro-title {
  font-size: 1.875rem;
  font-weight: 900;
  color: #111827;
  line-height: 1.35;
  margin: 0 0 1.25rem;
  letter-spacing: 0.02em;
}
@media (min-width: 768px) {
  .about-intro-title { font-size: 2.5rem; }
}
@media (min-width: 900px) {
  .about-intro-title {
    font-size: 2.75rem;
    margin-bottom: 1.5rem;
  }
}
.about-intro-overview {
  font-size: 1rem;
  color: #374151;
  line-height: 1.8;
  margin: 0;
}
@media (min-width: 768px) {
  .about-intro-overview { font-size: 1.125rem; }
}

.about-boards {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
@media (min-width: 768px) {
  .about-boards { gap: 1.75rem; }
}

/* インフォボード：立体感・ずらし（PCのみ） */
.about-board {
  position: relative;
}
@media (min-width: 900px) {
  .about-board-1 { margin-left: 0; transform: translateY(0) rotate(-0.8deg); }
  .about-board-2 { margin-left: 2rem; transform: translateY(0) rotate(0.6deg); }
  .about-board-3 { margin-left: 4rem; transform: translateY(0) rotate(-0.4deg); }
}

.about-board-inner {
  background: #fff;
  border-radius: 1.25rem;
  padding: 1.5rem 1.25rem;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06), 0 2px 8px rgba(13, 148, 136, 0.08);
  border: 1px solid rgba(229, 231, 235, 0.8);
  position: relative;
  overflow: hidden;
}
.about-board-inner::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, #0d9488, #14b8a6);
  border-radius: 1.25rem 1.25rem 0 0;
}
@media (min-width: 768px) {
  .about-board-inner {
    padding: 1.75rem 1.5rem;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.07), 0 4px 12px rgba(13, 148, 136, 0.06);
  }
}

.about-board-head {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.875rem;
}
.about-board-icon {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.375rem;
  color: #fff;
  background: linear-gradient(135deg, #14b8a6, #0d9488);
  flex-shrink: 0;
}
@media (min-width: 768px) {
  .about-board-icon {
    width: 3rem;
    height: 3rem;
    font-size: 1.5rem;
  }
}
.about-board-title {
  font-size: 1.125rem;
  font-weight: 900;
  color: #0f766e;
  margin: 0;
  line-height: 1.35;
}
@media (min-width: 768px) {
  .about-board-title { font-size: 1.25rem; }
}

.about-board-text {
  font-size: 0.9375rem;
  color: #374151;
  line-height: 1.7;
  margin: 0 0 0.5rem;
}
@media (min-width: 768px) {
  .about-board-text { font-size: 1rem; }
}

.about-board-note {
  font-size: 0.8125rem;
  color: #1e40af;
  line-height: 1.65;
  margin: 0;
  padding-top: 0.5rem;
  border-top: 1px solid #dbeafe;
}
@media (min-width: 768px) {
  .about-board-note {
    font-size: 0.875rem;
    padding-top: 0.75rem;
  }
}

/* スマホ：ずらし・回転なしで縦一列 */
@media (max-width: 899px) {
  .about-board {
    margin-left: 0 !important;
    transform: none !important;
  }
}

.about-modern-cta {
  text-align: center;
}

/* ===== 就労移行支援とは：インフォグラフィック型（中央見出し＋枠付きボックス横並び） ===== */
.section-about-infographic {
  padding: 4rem 1.5rem 5rem;
  background: #fafbfc;
}
@media (min-width: 768px) {
  .section-about-infographic { padding: 5rem 1.5rem 6rem; }
}

.about-infographic-header {
  text-align: center;
  margin-bottom: 2.5rem;
}
@media (min-width: 768px) {
  .about-infographic-header { margin-bottom: 3rem; }
}

.about-infographic-title {
  font-size: 1.875rem;
  font-weight: 900;
  color: #111827;
  margin: 0 0 1rem;
  line-height: 1.35;
}
@media (min-width: 768px) {
  .about-infographic-title {
    font-size: 2.25rem;
    margin-bottom: 1.25rem;
  }
}

.about-infographic-overview {
  font-size: 1rem;
  color: #374151;
  line-height: 1.75;
  max-width: 40rem;
  margin: 0 auto;
}
@media (min-width: 768px) {
  .about-infographic-overview { font-size: 1.125rem; }
}

.about-infographic-boxes {
  display: grid;
  gap: 1.5rem;
  margin-bottom: 3rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .about-infographic-boxes {
    gap: 1.75rem;
    margin-bottom: 4rem;
  }
}

.about-infographic-box {
  background: #fff;
  border: 1px dashed #cbd5e1;
  border-radius: 0.75rem;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.about-infographic-box-label {
  font-size: 1rem;
  font-weight: 900;
  color: #0f766e;
  margin: 0;
  padding: 0.875rem 1rem;
  background: rgba(13, 148, 136, 0.08);
  border-bottom: 1px solid #e2e8f0;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .about-infographic-box-label {
    font-size: 1.0625rem;
    padding: 1rem 1.25rem;
  }
}

.about-infographic-box-body {
  padding: 1rem 1rem 1.25rem;
  flex: 1;
}
@media (min-width: 768px) {
  .about-infographic-box-body {
    padding: 1.25rem 1.25rem 1.5rem;
  }
}

.about-infographic-list {
  list-style: none;
  padding: 0;
  margin: 0 0 0.75rem;
}
.about-infographic-list li {
  position: relative;
  padding-left: 1.25rem;
  font-size: 0.9375rem;
  color: #374151;
  line-height: 1.7;
  margin-bottom: 0.35em;
}
.about-infographic-list li::before {
  content: "・";
  position: absolute;
  left: 0;
  color: #0d9488;
  font-weight: 700;
}
@media (min-width: 768px) {
  .about-infographic-list li { font-size: 1rem; }
}

.about-infographic-note {
  font-size: 0.8125rem;
  color: #475569;
  line-height: 1.65;
  margin: 0;
  padding-top: 0.5rem;
  border-top: 1px dotted #cbd5e1;
}
@media (min-width: 768px) {
  .about-infographic-note {
    font-size: 0.875rem;
    padding-top: 0.75rem;
  }
}

/* ご利用対象：対象となる障がいのみ（ページのティール色に合わせる） */
.target-box {
  margin-bottom: 2.5rem;
  max-width: 36rem;
  margin-left: auto;
  margin-right: auto;
}

.target-col {
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.target-col-title {
  background: #0f766e;
  color: #fff;
  font-size: 1.125rem;
  font-weight: 700;
  text-align: center;
  padding: 0.625rem 1rem;
  margin: 0 0 -1px;
  border-radius: 0.5rem 0.5rem 0 0;
  flex-shrink: 0;
}

.target-col-inner {
  background: #f0fdfa;
  border: 2px dashed #0d9488;
  border-radius: 0 0 0.5rem 0.5rem;
  padding: 1.5rem;
  flex: 1;
  min-height: 8rem;
}

.target-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: center;
  margin-bottom: 1rem;
}

.target-pill {
  display: inline-block;
  background: #fff;
  color: #0d9488;
  border: 2px solid #0d9488;
  border-radius: 0.375rem;
  padding: 0.5rem 1rem;
  font-size: 0.9375rem;
  font-weight: 700;
}

.target-note {
  font-size: 0.8125rem;
  color: #374151;
  line-height: 1.6;
  margin: 0;
  text-align: center;
}

@media (max-width: 767px) {
  .target-col-inner {
    min-height: auto;
  }
}

.badge-grid {
  display: grid;
  gap: 1.25rem;
  margin-bottom: 2.5rem;
}

@media (min-width: 768px) {
  .badge-grid { grid-template-columns: repeat(3, 1fr); }
}

.info-badge {
  background: #fff;
  border-radius: 0.75rem;
  padding: 1.5rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  border: 2px solid #e5e7eb;
  display: flex;
  align-items: center;
  gap: 1rem;
}

.info-badge-icon {
  width: 3.5rem;
  height: 3.5rem;
  background: #ccfbf1;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.5rem;
  color: #0d9488;
}

.info-badge-title { font-size: 0.875rem; font-weight: 900; color: #111827; margin-bottom: 0.25rem; }
.info-badge-desc { font-size: 0.75rem; color: #4b5563; }

.section-cta { text-align: center; }

.btn-teal {
  background: #0f766e;
  color: #fff;
  padding: 1rem 2.5rem;
  border-radius: 9999px;
  font-weight: 900;
  font-size: 1rem;
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  transition: all 0.3s;
  box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);
}

.btn-teal:hover { background: #115e59; }

.btn-blue {
  background: #2563eb;
  color: #fff;
  padding: 1rem 2.5rem;
  border-radius: 9999px;
  font-weight: 900;
  font-size: 1rem;
  transition: all 0.3s;
  box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);
}

.btn-blue:hover { background: #1d4ed8; }

.btn-blue-gradient {
  background: linear-gradient(to right, #2563eb, #1d4ed8);
  color: #fff;
  padding: 1rem 2.5rem;
  border-radius: 9999px;
  font-weight: 900;
  font-size: 1rem;
  transition: all 0.3s;
  box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);
}

.btn-blue-gradient:hover { background: linear-gradient(to right, #1d4ed8, #1e40af); }

.btn-dark {
  background: #111827;
  color: #fff;
  padding: 1rem 2.5rem;
  border-radius: 9999px;
  font-weight: 900;
  font-size: 1rem;
  transition: all 0.3s;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
}

.btn-dark:hover { background: #1f2937; }

.btn-amber {
  background: linear-gradient(to right, #fbbf24, #eab308);
  color: #111827;
  padding: 1rem 2.5rem;
  border-radius: 9999px;
  font-weight: 900;
  font-size: 1rem;
  transition: all 0.3s;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
}

.btn-amber:hover { background: linear-gradient(to right, #f59e0b, #d97706); }

/* ===== Worry ===== */
#worry {
  color: rgba(55, 65, 81, 1);
}

.section-worry {
  padding-top: 4rem;
  padding-bottom: 4rem;
}

@media (min-width: 768px) {
  .section-worry { padding-top: 5rem; padding-bottom: 5rem; }
}

.worry-boxes {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
}

/* みらいろの特長：スマホで6つ1画面に収めつつボックスを大きく */
@media (max-width: 767px) {
  #features.section-worry {
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
    min-height: auto;
  }
  #features .section-header { margin-bottom: 0.4rem; }
  #features .section-title { font-size: 1.0625rem; }
  #features .worry-boxes {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: repeat(3, 1fr);
    gap: 0.5rem;
    margin-bottom: 0.5rem;
    min-height: 0;
    align-items: stretch;
  }
  #features .worry-box {
    border-radius: 0.6rem;
    border-width: 2px;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
  #features .worry-box-trigger {
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    flex: 1 1 auto;
    text-align: left;
  }
  #features .worry-box-img {
    aspect-ratio: 2 / 1;
    min-height: 0;
    object-fit: cover;
    flex-shrink: 0;
    width: 100%;
  }
  #features .worry-box-q {
    padding: 0.5rem 0.5rem 0.25rem;
    font-size: 0.6875rem;
    line-height: 1.3;
    min-height: 0;
    display: block;
    align-self: stretch;
  }
  #features .worry-box-hint {
    padding: 0.2rem 0.5rem 0.4rem;
    font-size: 0.625rem;
    flex-shrink: 0;
  }
  #features .section-cta { margin-top: 0.4rem; }
  #features .section-cta .btn-blue-gradient {
    padding: 0.5rem 1rem;
    font-size: 0.8125rem;
  }
}

@media (min-width: 768px) {
  .worry-boxes {
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
  }
  /* みらいろの特長：3列2行・ボックス高さ統一 */
  #features .worry-boxes {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(2, 1fr);
    align-items: stretch;
  }
  #features .worry-box-trigger {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
  }
  #features .worry-box-q {
    display: block;
  }
}

@media (min-width: 1024px) {
  .worry-boxes { gap: 1.25rem; }
}

.worry-box {
  background: #ffffff;
  border-radius: 1rem;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
  border: 2px solid #93C5FD;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 0;
}

.worry-box-trigger {
  width: 100%;
  padding: 0;
  margin: 0;
  border: none;
  background: none;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  position: relative;
  transition: background-color 0.2s;
}

.worry-box-trigger:hover {
  background-color: rgba(147, 197, 253, 0.08);
}

.worry-box-trigger:focus {
  outline: 2px solid #3b82f6;
  outline-offset: 2px;
}

.worry-box-hint {
  display: block;
  padding: 0.25rem 1rem 0.5rem;
  margin: 0;
  font-size: 0.8125rem;
  color: #6b7280;
}

.worry-box-img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: 1rem 1rem 0 0;
  display: block;
}

@media (min-width: 768px) {
  .worry-box-img { aspect-ratio: 2 / 1; }
}

.worry-box-q {
  padding: 0.6rem 2rem 0.35rem 1rem;
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 700;
  color: #1d4ed8;
  line-height: 1.5;
}

@media (min-width: 768px) {
  .worry-box-q { padding: 0.875rem 2rem 0.5rem 1.25rem; font-size: 1.125rem; }
}

.worry-box-detail { display: none; }

/* お悩みセクション：FAQ と同じ js-faq-trigger / js-faq-body で開閉（デザインはそのまま） */
#worry .worry-chevron-hidden {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}
#worry .worry-box .worry-box-detail.js-faq-body {
  display: block;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out;
}

#worry .worry-box.is-open .worry-box-detail {
  padding: 1rem 1.25rem 1.25rem;
  border-top: 2px solid #93c5fd;
  background: #f8fafc;
}

#worry .worry-box.is-open .worry-box-a {
  font-size: 0.9375rem;
  line-height: 1.7;
  color: #374151;
}

.worry-box-a strong {
  color: #111827;
  font-weight: 700;
}

#worry .worry-box-a-title {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  color: #0f766e;
  margin-bottom: 0.35rem;
  line-height: 1.4;
}
@media (min-width: 768px) {
  #worry .worry-box-a-title {
    font-size: 1.0625rem;
    margin-bottom: 0.5rem;
  }
}

/* お悩みモーダル（ココルポートの特徴風オーバーレイ） */
.worry-modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

.worry-modal.is-open {
  opacity: 1;
  visibility: visible;
}

.worry-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  cursor: pointer;
}

.worry-modal-inner {
  position: relative;
  width: 100%;
  max-width: 560px;
  max-height: clamp(400px, 90vh, 800px);
  background: #fff;
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transform: scale(0.95);
  transition: transform 0.3s ease;
}

.worry-modal.is-open .worry-modal-inner {
  transform: scale(1);
}

.worry-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 2;
  width: 2.5rem;
  height: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: rgba(255, 255, 255, 0.95);
  color: #374151;
  font-size: 1.5rem;
  border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  transition: background 0.2s, color 0.2s;
}

.worry-modal-close:hover {
  background: #f3f4f6;
  color: #111827;
}

.worry-modal-content {
  overflow-y: auto;
  padding-bottom: 2rem;
}

.worry-modal-img-wrap {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #f3f4f6;
}

.worry-modal-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.worry-modal-title {
  margin: 0;
  padding: 1.5rem 1.75rem 0.75rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: #1d4ed8;
  line-height: 1.4;
}

.worry-modal-body {
  padding: 0 1.75rem 1.5rem;
  font-size: 0.9375rem;
  color: #374151;
  line-height: 1.8;
}

.worry-modal-body strong { color: #111827; font-weight: 700; }

.support-message { font-size: 1.25rem; font-weight: 700; color: #111827; margin-bottom: 1rem; }

/* ===== Curriculum ===== */
.section-curriculum {
  background: #f9fafb;
  padding: 4rem 1.5rem 5rem;
}
@media (min-width: 768px) {
  .section-curriculum { padding: 5rem 1.5rem 6rem; }
}

/* カリキュラムページのセクションヘッダー：縦並び */
#curriculum .section-header.curriculum-header {
  display: block;
  margin-bottom: 2.5rem;
}
#curriculum .section-header.curriculum-header > * + * {
  margin-top: 0.75rem;
}
@media (min-width: 768px) {
  #curriculum .section-header.curriculum-header { margin-bottom: 3rem; }
  #curriculum .section-header.curriculum-header > * + * { margin-top: 1rem; }
}

.curriculum-intro {
  font-size: 1rem;
  color: #374151;
  max-width: 36rem;
  margin: 0 auto;
  line-height: 1.75;
  font-weight: 500;
}
@media (min-width: 768px) {
  .curriculum-intro { font-size: 1.125rem; }
}

/* 9項目グリッド：PC 3列×3行、スマホ 1列 */
.curriculum-grid-9 {
  display: grid;
  gap: 1.5rem;
  margin-bottom: 3rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .curriculum-grid-9 {
    grid-template-columns: repeat(3, 1fr);
    gap: 1.75rem;
    margin-bottom: 4rem;
  }
}

/* 9項目カード：色を統一（.curriculum-card のスタイルより優先） */
.curriculum-grid-9 .curriculum-card-item {
  background: #fff;
  border-radius: 1rem;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
  border: 1px solid #e5e7eb;
  transition: box-shadow 0.3s, border-color 0.3s;
}
.curriculum-grid-9 .curriculum-card-item:hover {
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.1);
  border-color: #d1d5db;
}

.curriculum-card-inner {
  padding: 1.5rem;
}
@media (min-width: 768px) {
  .curriculum-card-inner { padding: 1.75rem; }
}

.curriculum-card-item .curriculum-header {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin-bottom: 0.875rem;
}
.curriculum-card-item .curriculum-header h3 {
  font-size: 1.0625rem;
  font-weight: 900;
  color: #111827;
  line-height: 1.4;
  margin: 0;
  flex: 1;
  min-width: 0;
}
@media (min-width: 768px) {
  .curriculum-card-item .curriculum-header h3 { font-size: 1.125rem; }
}

.curriculum-card-item .curriculum-icon {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  flex-shrink: 0;
}
@media (min-width: 768px) {
  .curriculum-card-item .curriculum-icon {
    width: 3rem;
    height: 3rem;
    font-size: 1.375rem;
  }
}

.curriculum-card-item .curriculum-icon.blue {
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff;
}

.curriculum-card-item > .curriculum-card-inner > p {
  font-size: 0.875rem;
  color: #4b5563;
  line-height: 1.7;
  margin: 0;
}
@media (min-width: 768px) {
  .curriculum-card-item > .curriculum-card-inner > p { font-size: 0.9375rem; }
}

/* 従来のカリキュラムカード（画像付き）用 - 他ページで使用時用 */
.curriculum-visual {
  border-radius: 1rem;
  overflow: hidden;
  box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);
  position: relative;
}
.curriculum-visual img {
  width: 100%;
  height: 16rem;
  object-fit: cover;
  object-position: top;
  display: block;
}
@media (min-width: 768px) {
  .curriculum-visual img { height: 20rem; }
}

.curriculum-grid {
  display: grid;
  gap: 2rem;
  margin-bottom: 3rem;
}
@media (min-width: 768px) {
  .curriculum-grid { grid-template-columns: repeat(2, 1fr); }
}

.curriculum-card {
  background: linear-gradient(135deg, #eff6ff, #fff);
  border-radius: 1rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
  border: 2px solid #93c5fd;
  overflow: hidden;
  transition: all 0.3s;
}
.curriculum-card.amber {
  background: linear-gradient(135deg, #fffbeb, #fff);
  border-color: #fde68a;
}
.curriculum-card:hover { box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1); }

.curriculum-img {
  width: 100%;
  height: 12rem;
}
.curriculum-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
}

.curriculum-body { padding: 1.5rem; }
.curriculum-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.curriculum-icon {
  width: 3rem;
  height: 3rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
}
.curriculum-icon.blue { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: #fff; }
.curriculum-icon.amber { background: linear-gradient(135deg, #fbbf24, #eab308); color: #111827; }
.curriculum-body h3 { font-size: 1.25rem; font-weight: 900; color: #111827; }
.curriculum-sub { font-size: 0.75rem; font-weight: 500; }
.curriculum-card .curriculum-sub { color: #2563eb; }
.curriculum-card.amber .curriculum-sub { color: #d97706; }
.curriculum-body > p { font-size: 0.875rem; color: #4b5563; margin-bottom: 1rem; }

.skill-tags {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.5rem;
}
.skill-tags span {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: #eff6ff;
  border-radius: 0.5rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.75rem;
  color: #374151;
}
.skill-tags span i { color: #2563eb; }
.skill-tags.amber span { background: #fffbeb; }
.skill-tags.amber span i { color: #d97706; }

/* ===== Schedule ===== */
.schedule-box {
  background: linear-gradient(135deg, #f9fafb, #fff);
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
  border: 2px solid #e5e7eb;
  margin-bottom: 3rem;
}

.schedule-box h3 { font-size: 1.5rem; font-weight: 900; color: #111827; margin-bottom: 0.5rem; text-align: center; }
.schedule-sub { font-size: 0.875rem; color: #4b5563; text-align: center; margin-bottom: 2rem; }

.schedule-grid {
  display: grid;
  gap: 1rem;
}

@media (min-width: 768px) {
  .schedule-grid { grid-template-columns: repeat(5, 1fr); }
}

.schedule-item {
  background: #fff;
  border-radius: 0.75rem;
  padding: 1rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  text-align: center;
  border-top: 4px solid #2563eb;
}

.schedule-item.gray { border-top-color: #9ca3af; }
.schedule-item.gray .schedule-time { color: #4b5563; }

.schedule-time { font-size: 1.125rem; font-weight: 900; color: #2563eb; margin-bottom: 0.25rem; }
.schedule-title { font-size: 0.875rem; font-weight: 700; color: #111827; margin-bottom: 0.25rem; }
.schedule-item p { font-size: 0.75rem; color: #4b5563; }
.schedule-note { text-align: center; font-size: 0.75rem; color: #6b7280; margin-top: 1rem; }

/* ===== Team ===== */
.team-box {
  background: linear-gradient(135deg, #f9fafb, #fff);
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
  border: 2px solid #e5e7eb;
  margin-bottom: 3rem;
}

.team-box h3 { font-size: 1.5rem; font-weight: 900; color: #111827; margin-bottom: 0.5rem; text-align: center; }
.team-box > p { font-size: 0.875rem; color: #4b5563; text-align: center; margin-bottom: 2rem; }

.team-grid {
  display: grid;
  gap: 1.5rem;
}

@media (min-width: 768px) {
  .team-grid { grid-template-columns: repeat(3, 1fr); }
}

.team-item {
  background: #fff;
  border-radius: 0.75rem;
  padding: 1.25rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  text-align: center;
  border-top: 4px solid #f59e0b;
}

.team-icon {
  width: 3.5rem;
  height: 3.5rem;
  background: #fef3c7;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 0.75rem;
  font-size: 1.5rem;
  color: #d97706;
}

.team-item h4 { font-size: 1rem; font-weight: 900; color: #111827; margin-bottom: 0.5rem; }
.team-item p { font-size: 0.75rem; color: #4b5563; }

.cta-box {
  border-radius: 1rem;
  padding: 2rem;
  text-align: center;
}

.cta-box.amber {
  background: linear-gradient(to right, #f59e0b, #eab308);
  color: #111827;
}

.cta-box h3 { font-size: 1.5rem; font-weight: 900; margin-bottom: 0.75rem; }
.cta-box p { font-size: 1rem; margin-bottom: 1rem; }

/* ===== Features ===== */
.features-grid {
  display: grid;
  gap: 1.25rem;
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .features-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
  .features-grid { grid-template-columns: repeat(3, 1fr); }
}

.feature-card {
  background: linear-gradient(135deg, #eff6ff, #fff);
  border-radius: 0.75rem;
  padding: 1.5rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  border: 2px solid #93c5fd;
}

.feature-icon {
  width: 3.5rem;
  height: 3.5rem;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1rem;
  font-size: 1.5rem;
  color: #fff;
}

.feature-card h3 { font-size: 1.125rem; font-weight: 900; color: #111827; margin-bottom: 0.5rem; }
.feature-card p { font-size: 0.875rem; color: #4b5563; line-height: 1.6; }

/* Reasons (Features update) */
.reasons-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .reasons-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
  .reasons-grid { grid-template-columns: repeat(12, 1fr); }
}

.reason-card {
  background: #ffffff;
  border-radius: 0.75rem;
  box-shadow: 0 6px 16px rgba(0,0,0,0.08);
  border: 1px solid #dbeafe;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 100%;
}

@media (min-width: 1024px) {
  .reason-card.span-4 { grid-column: span 4; }
  .reason-card.span-6 { grid-column: span 6; }
}

.reason-img img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  display: block;
}

.reason-title {
  padding: 1.25rem 1.25rem 0.5rem;
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 900;
  color: #0f172a;
  line-height: 1.4;
}

.reason-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  height: 2rem;
  padding: 0 0.5rem;
  border-radius: 9999px;
  background: linear-gradient(135deg, #14b8a6, #0ea5e9);
  color: #ffffff;
  font-weight: 900;
  margin-right: 0.5rem;
}

.reason-desc {
  padding: 0 1.25rem 1.25rem;
  margin: 0;
  font-size: 0.875rem;
  color: #475569;
  line-height: 1.7;
}

/* ===== Support section ===== */
.support-header { margin-bottom: 4rem; }
.support-header .section-title.large { font-weight: 700; }
.support-desc {
  font-size: 1.25rem;
  color: #374151;
  margin-bottom: 1rem;
  font-family: "Noto Serif JP", serif;
  line-height: 1.6;
}
@media (min-width: 768px) {
  .support-desc { font-size: 1.5rem; }
  .support-header .section-title.large { font-size: 3rem; }
}
.support-sub { font-size: 1rem; color: #4b5563; }
@media (min-width: 768px) { .support-sub { font-size: 1.125rem; } }

.target-messages {
  display: grid;
  gap: 2rem;
  margin-bottom: 5rem;
  max-width: 72rem;
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 768px) {
  .target-messages { grid-template-columns: repeat(2, 1fr); }
}

#support .target-msg-card {
  background: #fff;
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  border-left: 4px solid #34C759;
}

.target-msg-header {
  display: flex;
  gap: 1rem;
  margin-bottom: 1rem;
}

#support .target-msg-icon {
  width: 3.5rem;
  height: 3.5rem;
  background: #dcfce7;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.875rem;
  color: #34C759;
}

.target-msg-card h3 { font-size: 1.5rem; font-weight: 700; color: #1f2937; margin-bottom: 0.5rem; }
#support .target-msg-card .target-msg-header p { font-size: 0.875rem; color: #2db84d; font-weight: 600; }
.target-msg-card > p { font-size: 1rem; color: #374151; line-height: 1.6; }

/* Step program items (STEP 3) */
.step-programs { margin-bottom: 1.5rem; }
.step-program-item {
  background: #f0fdf4;
  border-radius: 0.75rem;
  padding: 1.25rem 1.25rem 1.25rem 1.25rem;
  border: 1px solid #bbf7d0;
  margin-bottom: 1rem;
  display: flex;
  flex-direction: row;
  gap: 1rem;
  align-items: flex-start;
}
.step-program-item:last-child { margin-bottom: 0; }
.step-program-icon {
  width: 3rem;
  height: 3rem;
  min-width: 3rem;
  min-height: 3rem;
  background: #34C759;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 1.5rem;
  color: #fff;
}
.step-program-item > div:not(.step-program-icon) {
  flex: 1;
  min-width: 0;
}
.step-program-item h5 {
  font-size: 1.125rem;
  font-weight: 700;
  color: #1f2937;
  margin-bottom: 0.5rem;
  line-height: 1.4;
}
.step-program-item p {
  font-size: 0.875rem;
  color: #374151;
  line-height: 1.6;
  margin: 0;
}

/* Step grid 4 items (STEP 4) */
.step-grid-4 {
  display: grid;
  gap: 1rem;
  margin-top: 1rem;
}
@media (min-width: 768px) { .step-grid-4 { grid-template-columns: repeat(2, 1fr); } }
.step-grid-item {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
}
.step-grid-icon {
  width: 2rem;
  height: 2rem;
  background: #34C759;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 0.25rem;
  font-size: 1.125rem;
  color: #fff;
}
.step-grid-title { font-size: 0.875rem; font-weight: 700; color: #1f2937; margin-bottom: 0.25rem; }
.step-grid-desc { font-size: 0.875rem; color: #374151; }

.steps-section { margin-bottom: 5rem; }
.steps-section h3 { font-size: 1.875rem; font-weight: 700; color: #1f2937; margin-bottom: 1rem; text-align: center; }
@media (min-width: 768px) { .steps-section h3 { font-size: 2.25rem; } }
.steps-section > p { font-size: 1.125rem; color: #4b5563; text-align: center; margin-bottom: 3rem; }

.steps-list { max-width: 64rem; margin-left: auto; margin-right: auto; }
.steps-list .step-card { margin-bottom: 1.5rem; }
.steps-list .step-card:last-child { margin-bottom: 0; }
#support .step-card {
  background: #fff;
  border-radius: 1rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
  overflow: visible;
  margin-bottom: 1.5rem;
  margin-left: -1.5rem;
  border-left: 8px solid #34C759;
}

.step-card .step-content { padding: 2rem; }
@media (min-width: 768px) { .step-card .step-content { padding: 2.5rem; } }
.step-card { transition: box-shadow 0.3s; }
.step-card:hover { box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1); }

.step-inner { display: flex; flex-direction: column; gap: 0; }
@media (min-width: 768px) {
  .step-inner { flex-direction: row; gap: 0; }
  .step-number { flex-shrink: 0; }
  /* STEP 01 を STEP 02 と同じ配置（番号を左側に） */
  #support .steps-list .step-card:first-child .step-inner { flex-direction: row; }
  #support .steps-list .step-card:first-child .step-number { order: 0; }
  #support .steps-list .step-card:first-child .step-content { order: 1; }
}

#support .step-number {
  width: 6rem;
  height: 6rem;
  background: linear-gradient(135deg, #34C759, #2db84d);
  border-radius: 1rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
}

.step-number span:first-child { font-size: 0.875rem; font-weight: 700; color: #fff; }
.step-number span:last-child { font-size: 2.25rem; font-weight: 900; color: #fff; }

.step-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; }
#support .step-icon {
  width: 4rem;
  height: 4rem;
  background: #dcfce7;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.875rem;
  color: #34C759;
}

.step-content h4 { font-size: 1.5rem; font-weight: 700; color: #1f2937; }
@media (min-width: 768px) { .step-content h4 { font-size: 1.875rem; } }
#support .step-header p { font-size: 1.125rem; color: #2db84d; font-weight: 600; }

.step-img {
  width: 100%;
  height: 16rem;
  border-radius: 0.75rem;
  overflow: hidden;
}

.step-img img { width: 100%; height: 100%; object-fit: cover; object-position: top; }

#support .step-body { background: #f0fdf4; border-radius: 0.75rem; padding: 1.5rem; }
.step-body p { font-size: 1rem; color: #1f2937; line-height: 1.6; margin-bottom: 1rem; }
.step-check {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin-top: 0.5rem;
}

#support .step-check-icon {
  flex-shrink: 0;
  width: 2rem;
  height: 2rem;
  background: #34C759;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 0.25rem;
}

.step-check-icon i { color: #fff; font-size: 1.125rem; }
.step-check p { flex: 1; }
#support .step-check strong { color: #2db84d; }
#support .step-check .text-emerald-700 { color: #2db84d; }

/* ===== Flow ===== */
.flow-grid {
  display: grid;
  gap: 1rem;
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .flow-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
  }
}

.flow-item-wrap {
  position: relative;
}

.flow-item {
  background: #fff;
  border-radius: 0.75rem;
  padding: 1.5rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  text-align: center;
  border-top: 4px solid #2563eb;
}

.flow-arrow {
  display: none;
  position: absolute;
  top: 50%;
  right: -0.5rem;
  transform: translateY(-50%);
  z-index: 10;
  color: #2563eb;
  font-size: 1.875rem;
}

.flow-item-last .flow-arrow { display: none !important; }

@media (min-width: 768px) {
  .flow-arrow { display: flex; align-items: center; justify-content: center; }
}

.flow-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
}

.flow-num {
  width: 3rem;
  height: 3rem;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-weight: 900;
  font-size: 1.25rem;
  margin: 0 auto 0.75rem;
}

.flow-item h4 { font-size: 1rem; font-weight: 900; color: #111827; margin-bottom: 0.5rem; }
.flow-item p { font-size: 0.75rem; color: #4b5563; margin-bottom: 0.5rem; }
.flow-item span { font-size: 0.75rem; color: #2563eb; font-weight: 500; }

/* 利用の流れ：まずはお気軽にご相談ください（写真形式・HP色に合わせる） */
.flow-consult-section {
  position: relative;
  padding: 3rem 1.5rem;
  overflow: hidden;
}

.flow-consult-bg {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 0;
  bottom: 0;
  width: 100%;
  max-width: 72rem;
  background: #f0fdfa;
  opacity: 1;
}

.flow-consult-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(13, 148, 136, 0.08) 1px, transparent 1px);
  background-size: 20px 20px;
  pointer-events: none;
}

.flow-consult-inner {
  position: relative;
  z-index: 1;
}

.flow-consult-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  margin-bottom: 2rem;
  text-align: center;
}

.flow-consult-text {
  text-align: center;
  width: 100%;
  max-width: 100%;
}

.flow-consult-title {
  font-size: 1.75rem;
  font-weight: 900;
  color: #111827;
  margin-bottom: 0.5rem;
  line-height: 1.4;
}

.flow-consult-accent {
  color: #0d9488;
}

.flow-consult-sub {
  font-size: 1rem;
  color: #4b5563;
  margin: 0;
}

.flow-consult-img {
  display: block;
  width: 500px;
  max-width: 100%;
  height: auto;
  margin: 0 auto;
}

.flow-consult-buttons {
  display: flex;
  justify-content: center;
}

.flow-consult-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1rem 2rem;
  font-size: 1rem;
  font-weight: 700;
  text-decoration: none;
  color: #fff;
  border-radius: 2rem;
  transition: background 0.2s, transform 0.2s;
}

.flow-consult-btn:hover {
  color: #fff;
  transform: translateY(-2px);
}

.flow-consult-btn .flow-consult-btn-line-icon {
  font-size: 1.25rem;
  flex-shrink: 0;
}

.flow-consult-btn-line {
  background: #00B900;
}

.flow-consult-btn-line:hover {
  background: #00a000;
}

.flow-consult-btn-line-icon {
  width: 1.25rem;
  height: 1.25rem;
  fill: #fff;
}

@media (max-width: 767px) {
  .flow-consult-title { font-size: 1.375rem; }
  .flow-consult-content { flex-direction: column; }
}

/* ===== Eligibility ===== */
.eligibility-grid {
  display: grid;
  gap: 1.5rem;
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .eligibility-grid { grid-template-columns: repeat(2, 1fr); }
}

.eligibility-single {
  width: 100%;
}

.eligibility-single .eligibility-card {
  width: 100%;
  max-width: none;
  padding: 2.25rem 2rem;
  box-shadow: 0 10px 25px -12px rgba(0,0,0,0.18);
}

@media (min-width: 768px) {
  .eligibility-single .eligibility-card { padding: 2.75rem 2.5rem; }
}

.eligibility-single .eligibility-icon {
  width: 3.5rem;
  height: 3.5rem;
  font-size: 1.5rem;
}

.eligibility-single .eligibility-card h3 {
  font-size: 1.5rem;
}

.eligibility-single .eligibility-card li {
  padding: 1rem;
  border-radius: 0.75rem;
}

.eligibility-single .eligibility-card li p { font-size: 1rem; }
.eligibility-single .eligibility-card li p:last-child { font-size: 0.875rem; }

.eligibility-single .eligibility-note {
  font-size: 0.875rem;
  padding: 1rem;
  border-radius: 0.75rem;
}

.eligibility-single .price-box {
  padding: 2.5rem 2rem;
  border-radius: 1rem;
}

.eligibility-single .price-box p { font-size: 1rem; }

.eligibility-single .price-amount {
  font-size: 42px;
}

.eligibility-single .price-list li {
  font-size: 0.875rem;
  margin-bottom: 0.75rem;
}

.eligibility-single .btn-amber-full {
  padding: 1rem;
  font-size: 1rem;
  border-radius: 0.75rem;
}

.eligibility-card {
  border-radius: 1rem;
  padding: 1.5rem;
  border: 2px solid;
}

.eligibility-card.blue {
  background: linear-gradient(135deg, #eff6ff, #fff);
  border-color: #93c5fd;
}

.eligibility-card.amber {
  background: linear-gradient(135deg, #fffbeb, #fff);
  border-color: #fde68a;
}

.eligibility-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.eligibility-icon {
  width: 3rem;
  height: 3rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
}

.eligibility-icon.blue { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: #fff; }
.eligibility-icon.amber { background: linear-gradient(135deg, #fbbf24, #eab308); color: #111827; }

.eligibility-card h3 { font-size: 1.25rem; font-weight: 900; color: #111827; }

.eligibility-card ul { list-style: none; }
.eligibility-card li {
  display: flex;
  gap: 0.5rem;
  background: #fff;
  border-radius: 0.5rem;
  padding: 0.875rem;
  margin-bottom: 0.75rem;
}

.check {
  width: 1.5rem;
  height: 1.5rem;
  background: #2563eb;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: #fff;
  font-size: 0.875rem;
}

.eligibility-card li p { font-size: 0.9375rem; }
.eligibility-card li p:first-child { font-weight: 700; color: #1f2937; }
.eligibility-card li p:last-child { font-size: 0.75rem; color: #4b5563; }

.eligibility-note {
  margin-top: 1rem;
  background: #fffbeb;
  border-left: 4px solid #f59e0b;
  border-radius: 0.5rem;
  padding: 0.75rem;
  font-size: 0.75rem;
  color: #374151;
}

.price-box {
  background: #fff;
  border-radius: 0.75rem;
  padding: 2rem 1.5rem;
  margin-bottom: 1rem;
  border: 2px solid #FFA000;
  text-align: center;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.price-box p { font-size: 0.875rem; color: #374151; margin-bottom: 0.25rem; }
.price-box p:last-of-type { margin-bottom: 0; }
.price-amount {
  font-size: 35px;
  font-weight: 900;
  color: rgba(255, 136, 0, 1);
  margin: 0.5rem 0 !important;
  line-height: 1.2;
}
.price-list { list-style: none; margin-bottom: 1rem; }
.price-list li {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.75rem;
  color: #374151;
  margin-bottom: 0.5rem;
}

.price-list li i { color: #d97706; margin-top: 0.125rem; }

.btn-amber-full {
  width: 100%;
  background: linear-gradient(to right, #fbbf24, #eab308);
  color: #111827;
  padding: 0.75rem;
  border-radius: 0.5rem;
  font-weight: 700;
  font-size: 0.875rem;
  transition: all 0.3s;
}

.btn-amber-full:hover { background: linear-gradient(to right, #f59e0b, #d97706); }

/* ===== About Us ===== */
.about-us-grid {
  display: grid;
  gap: 2.5rem;
  align-items: center;
}

@media (min-width: 768px) {
  .about-us-grid { grid-template-columns: repeat(2, 1fr); }
}

.about-us-grid .section-badge { margin-bottom: 1rem; }
.about-us-grid .section-title { margin-bottom: 1rem; }
.about-us-grid p { margin-bottom: 1rem; font-size: 1rem; color: #374151; line-height: 1.6; }

.stats-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
}

.stat-card {
  border-radius: 0.75rem;
  padding: 1.25rem;
  text-align: center;
}

.stat-card.blue { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: #fff; }
.stat-card.amber { background: linear-gradient(135deg, #fbbf24, #eab308); color: #111827; }

.stat-num { font-size: 1.875rem; font-weight: 900; margin-bottom: 0.25rem; }
.stat-card p { font-size: 0.875rem; margin: 0; }
.stat-card.blue p { color: rgba(255,255,255,0.9); }

.about-us-img-wrap {
  width: 100%;
  height: 20rem;
  border-radius: 1rem;
  overflow: hidden;
  box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);
  border: 4px solid #93c5fd;
}

.about-us-img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
}

/* ===== CTA Section ===== */
.cta-section {
  background: linear-gradient(to right, #2563eb, #1d4ed8);
  padding: 4rem 1.5rem;
}

.cta-inner { max-width: 56rem; margin: 0 auto; text-align: center; color: #fff; }
.cta-icon {
  width: 4rem;
  height: 4rem;
  background: rgba(255,255,255,0.2);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.5rem;
  font-size: 1.875rem;
}

.cta-inner h2 { font-size: 1.875rem; font-weight: 900; margin-bottom: 1rem; }
@media (min-width: 768px) { .cta-inner h2 { font-size: 2.25rem; } }
.cta-inner p { font-size: 1.125rem; margin-bottom: 2rem; opacity: 0.95; }

/* ===== Info Table ===== */
.info-table {
  background: linear-gradient(135deg, #f9fafb, #fff);
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
  border: 2px solid #e5e7eb;
}

.info-row {
  display: grid;
  gap: 0.75rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #e5e7eb;
}

.info-row:last-of-type { border-bottom: none; }

@media (min-width: 768px) {
  .info-row { grid-template-columns: 1fr 3fr; }
}

.info-label { font-weight: 900; color: #111827; font-size: 0.875rem; }
.info-value { color: #374151; font-size: 0.875rem; }

/* ===== Contact Form ===== */
.contact-form-wrapper {
  background: #fff;
  border-radius: 1rem;
  padding: 2rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
  border: 2px solid #93c5fd;
}

/* ===== Contact (Phone / LINE) ===== */
.contact-direct {
  display: grid;
  gap: 1rem;
  max-width: 28rem;
  margin: 0 auto;
}

@media (min-width: 768px) {
  .contact-direct { max-width: 32rem; }
}

.contact-direct-card {
  background: #fff;
  border-radius: 1rem;
  padding: 1.5rem;
  box-shadow: 0 10px 20px rgba(0,0,0,0.08);
  border: 2px solid rgba(15, 118, 110, 0.18);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1rem;
  text-decoration: none;
  color: inherit;
  transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}

.contact-direct-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(0,0,0,0.12);
  border-color: rgba(13, 148, 136, 0.35);
}

.contact-direct-icon {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 0.9rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(13, 148, 136, 0.12);
  color: #0f766e;
  font-size: 1.5rem;
  flex-shrink: 0;
}

.contact-direct-icon-line {
  background: rgba(0,185,0,0.10);
  color: #00B900;
}

.contact-direct-icon-phone {
  background: rgba(13, 148, 136, 0.12);
  color: #0f766e;
}

.contact-direct-body { min-width: 0; }
.contact-direct-title { margin: 0 0 0.25rem; font-weight: 900; color: #111827; }
.contact-direct-main { margin: 0 0 0.25rem; font-size: 1.125rem; font-weight: 900; color: #0f766e; }
.contact-direct-line .contact-direct-main { color: #00B900; }
.contact-direct-sub { margin: 0; font-size: 0.8125rem; color: #4b5563; line-height: 1.5; }

.contact-direct-cta {
  font-weight: 800;
  color: #0f766e;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}

.contact-direct-line .contact-direct-cta { color: #00B900; }

@media (max-width: 767px) {
  .contact-direct-card {
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto;
  }
  .contact-direct-cta {
    grid-column: 1 / -1;
    justify-self: end;
  }
}

.form-group { margin-bottom: 1rem; }
.form-group label {
  display: block;
  font-weight: 700;
  color: #111827;
  margin-bottom: 0.375rem;
  font-size: 0.875rem;
}

.required { color: #ef4444; }

.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  padding: 0.625rem 1rem;
  border: 2px solid #d1d5db;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  font-family: inherit;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 2px rgba(37,99,235,0.2);
}

.form-note { font-size: 0.75rem; color: #4b5563; margin-top: 0.375rem; }

.btn-submit {
  width: 100%;
  background: linear-gradient(to right, #2563eb, #1d4ed8);
  color: #fff;
  padding: 0.875rem;
  border-radius: 0.5rem;
  font-weight: 900;
  font-size: 1rem;
  transition: all 0.3s;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
}

.btn-submit:hover { background: linear-gradient(to right, #1d4ed8, #1e40af); }

/* ===== FAQ ===== */
.faq-section .section-header { margin-bottom: 2.5rem; }

.faq-category {
  margin-bottom: 2.5rem;
}

.faq-category:last-of-type { margin-bottom: 0; }

.faq-category-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: #0f766e;
  margin-bottom: 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid #99f6e4;
}

@media (min-width: 768px) {
  .faq-category-title { font-size: 1.25rem; }
}

.faq-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.faq-item {
  background: #fff;
  border-radius: 0.75rem;
  border: 1px solid #e5e7eb;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.faq-q {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem 1.25rem;
  text-align: left;
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 700;
  color: #1e293b;
  background: none;
  border: none;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}

.faq-q:hover {
  background: #f8fafc;
  color: #0d9488;
}

.faq-q-icon {
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: #e0f2fe;
  color: #0284c7;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  line-height: 1;
  font-weight: 400;
  transition: transform 0.3s ease, background 0.2s, color 0.2s;
}

.faq-q-icon::before {
  content: '+';
}

.faq-item.is-open .faq-q-icon {
  transform: rotate(45deg);
  background: #0d9488;
  color: #fff;
}

.faq-q-text {
  flex: 1;
}

.faq-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.35s ease-out;
}

.faq-item.is-open .faq-a {
  grid-template-rows: 1fr;
}

.faq-a-inner {
  min-height: 0;
  overflow: hidden;
}

.faq-a-inner {
  padding: 0 1.25rem 1.25rem 3.25rem;
  font-size: 0.9375rem;
  color: #475569;
  line-height: 1.75;
}

@media (min-width: 768px) {
  .faq-a-inner { padding-left: 3.5rem; }
}

.faq-a-inner::before {
  content: 'A.';
  display: inline-block;
  font-weight: 700;
  color: #0d9488;
  margin-right: 0.35em;
}

/* ===== Footer ===== */
.footer {
  background: linear-gradient(135deg, #111827, #1f2937);
  color: #fff;
  padding: 3rem 1.5rem;
}

.footer-grid {
  display: grid;
  gap: 2rem;
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .footer-grid { grid-template-columns: repeat(4, 1fr); }
}

.footer h3 { font-size: 1.25rem; font-weight: 900; margin-bottom: 0.75rem; }
.footer h4 { font-size: 1rem; font-weight: 900; margin-bottom: 0.75rem; }
.footer p { font-size: 0.875rem; color: #9ca3af; line-height: 1.6; margin-bottom: 1rem; }

.footer-social {
  display: flex;
  gap: 0.75rem;
}

.footer-social a {
  width: 2.25rem;
  height: 2.25rem;
  border: 1px solid #4b5563;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s;
}

.footer-social a:hover { background: #2563eb; border-color: #2563eb; }
.footer-social i { font-size: 0.875rem; }

.footer-link {
  display: block;
  color: #9ca3af;
  font-size: 0.875rem;
  padding: 0.375rem 0;
  transition: color 0.3s;
  width: 100%;
  text-align: left;
}

.footer-link:hover { color: #fff; }

a.footer-link { text-decoration: none; }

.footer-logo {
  display: flex;
  align-items: center;
  justify-content: center;
}

@media (min-width: 768px) {
  .footer-logo { justify-content: flex-end; }
}

.footer-logo img { width: 12rem; height: 12rem; object-fit: contain; }

.footer-bottom {
  border-top: 1px solid #374151;
  padding-top: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

@media (min-width: 768px) {
  .footer-bottom { flex-direction: row; justify-content: space-between; align-items: center; }
}

.footer-bottom p { font-size: 0.75rem; color: #6b7280; margin: 0; }
.footer-links { display: flex; gap: 1rem; }
.footer-links a { font-size: 0.75rem; color: #6b7280; transition: color 0.3s; }
.footer-links a:hover { color: #fff; }

/* ===== Subpage (separate pages for about, curriculum, features) ===== */
.subpage-main {
  padding-top: 6rem;
}

/* ===== Scroll offset for fixed nav ===== */
section[id] {
  scroll-margin-top: 4rem;
}

/* ===== 固定：LINEで見学申込・お問合せ（常に画面下に表示） ===== */
.fixed-contact-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.12);
  padding: 0.5rem 0.75rem;
  padding-bottom: max(0.5rem, env(safe-area-inset-bottom));
}

/* 一番上にスクロールしている時は固定バーを非表示（全画面サイズ） */
body.at-top .fixed-contact-bar {
  display: none !important;
}

.fixed-contact-line-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  max-width: 24rem;
  padding: 0.75rem 1.25rem;
  font-size: 1rem;
  font-weight: 700;
  text-decoration: none;
  color: #fff;
  background: #00B900;
  border-radius: 0.5rem;
  transition: background 0.2s, transform 0.2s;
}

.fixed-contact-line-btn:hover {
  background: #00a000;
  color: #fff;
  transform: translateY(-1px);
}

.fixed-contact-line-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
}

.fixed-contact-line-icon svg {
  width: 1.5rem;
  height: 1.5rem;
  fill: #fff;
}

/* キャッチフレーズ「働くことへの不安を / 可能性に変える」を確実に非表示 */
body .hero .hero-content h1.hero-catchphrase {
  display: none !important;
  visibility: hidden !important;
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  margin: 0 !important;
  padding: 0 !important;
}
