/* 研修・ワークショップ LP */

.ws-hero { padding-block: 0 48px; }
.ws-hero__inner { display: grid; grid-template-columns: 1fr; gap: 32px; align-items: center; }
.ws-hero__copy { display: flex; flex-direction: column; gap: 24px; }
.ws-hero__copy .breadcrumb { margin-bottom: -8px; }
.ws-hero__title { font-size: 32px; }
.ws-hero__lead { display: flex; flex-direction: column; gap: 8px; font-size: 16px; line-height: 28px; }
.ws-hero__image { width: 100%; aspect-ratio: 432 / 380; border-radius: 8px; object-fit: cover; }
@media (min-width: 768px) { .ws-hero__title { font-size: 42px; line-height: 60px; } }
@media (min-width: 900px) {
  .ws-hero { padding-block: 32px 48px; }
  .ws-hero__inner { grid-template-columns: minmax(0, 560px) minmax(300px, 432px); gap: 48px; justify-content: space-between; }
}

.ws-section { padding-block: 48px; }
.ws-section__inner { display: flex; flex-direction: column; gap: 24px; }
.ws-section__head { display: flex; flex-direction: column; gap: 16px; }
.ws-section .heading-2 { font-size: 26px; }
@media (min-width: 768px) { .ws-section .heading-2 { font-size: 32px; line-height: 44px; } .ws-section__inner--wide { gap: 48px; } }

/* 01 課題 */
.challenges { display: grid; grid-template-columns: 1fr; gap: 16px; }
.challenge { display: flex; align-items: center; gap: 16px; padding: 20px 24px; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 4px; }
.challenge__num { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--c-primary); color: var(--c-cream); font-family: var(--f-latin); font-weight: 600; font-size: 16px; }
.challenge__text { font-weight: 700; font-size: 15px; line-height: 1.5; color: var(--c-text-strong); }
@media (min-width: 768px) { .challenges { grid-template-columns: repeat(2, minmax(0, 1fr)); } .challenge { padding: 24px; } }

/* 02 プログラム */
.program { display: flex; flex-direction: column; gap: 24px; }
.program__title { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; font-family: var(--f-serif); font-weight: 700; font-size: 22px; line-height: 1.4; color: var(--c-text-strong); }
.program__num { font-family: var(--f-latin); font-weight: 400; font-size: 24px; color: var(--c-primary); }
.program__desc { text-align: center; font-size: 15px; line-height: 28px; }
/* プログラム 02: 左に見出しと説明、右に写真(Figma 1054:543) */
.program__head { display: grid; grid-template-columns: 1fr; gap: 24px; align-items: start; }
.program__head-copy { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.program__desc--left { text-align: left; }
.program__image { width: 100%; aspect-ratio: 276 / 213; object-fit: cover; }
.program__steps { display: grid; grid-template-columns: 1fr; gap: 8px; }
.program__step { display: flex; flex-direction: column; gap: 8px; }
.program__step-title { font-family: var(--f-serif); font-weight: 700; font-size: 18px; line-height: 1.4; color: var(--c-primary); }
.program__step-text { font-size: 14px; line-height: 26px; }
.program__gains { display: flex; flex-direction: column; gap: 10px; padding: 16px; border-radius: 8px; background: var(--c-white); }
.program__gains-title { font-weight: 500; font-size: 16px; line-height: 26px; color: var(--c-primary); }
.program__gains-list { display: flex; flex-wrap: wrap; gap: 4px 24px; }
.program__gains-list li { position: relative; padding-left: 16px; font-size: 14px; line-height: 26px; }
.program__gains-list li::before { content: ""; position: absolute; left: 2px; top: 11px; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
@media (min-width: 768px) {
  .program__title { font-size: 24px; }
  .program__desc { font-size: 16px; }
  .program__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .program__step-title { font-size: 20px; }
  .program__head { grid-template-columns: minmax(0, 1fr) 276px; }
}

/* 03 特徴 */
.feature { display: flex; flex-direction: column; gap: 16px; background: var(--c-bg); }
.feature__title { font-family: var(--f-serif); font-weight: 700; font-size: 18px; line-height: 1.4; color: var(--c-text-strong); }
.feature__text { font-size: 14px; line-height: 24px; }
@media (min-width: 768px) { .feature__title { font-size: 20px; } }

/* CTA */
.cta-band--lg { padding-block: 72px; }
@media (min-width: 768px) { .cta-band--lg { padding-block: 96px; } .cta-band--lg .cta-band__text { font-size: 15px; } }

/* ---- サービス紹介(ライフビュー・シェアリング)LP: 研修 LP と同構成 ---- */
.ws-section__sub { font-family: var(--f-serif); font-weight: 700; font-size: 16px; line-height: 28px; color: var(--c-primary); }
@media (min-width: 768px) { .ws-section__sub { font-size: 18px; } }
.cta-band__text--wide { max-width: 800px; }
.lv-steps { display: grid; grid-template-columns: 1fr; gap: 24px; }
.lv-step { display: flex; flex-direction: column; gap: 20px; }
.lv-step__title { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; font-family: var(--f-serif); font-weight: 700; font-size: 22px; line-height: 1.4; color: var(--c-text-strong); }
.lv-step__num { font-family: var(--f-latin); font-weight: 400; font-size: 24px; color: var(--c-primary); }
.lv-step__image { width: 100%; height: 160px; object-fit: cover; border-radius: 4px; }
.lv-step__text { font-size: 14px; line-height: 26px; }
/* service.html: step illustrations are 4:3 line art on white; show whole image */
.page-service .lv-step__image { object-fit: contain; background: #fff; }
@media (min-width: 900px) { .lv-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; } .lv-step__title { font-size: 24px; } }
