@charset "UTF-8";

/* ==========================================================================
   変数
   ========================================================================== */
:root {
  /* 色 */
  --color-white: #fff;
  --color-black: #000;
  --color-text: #333;
  --color-green: #23805f;
  --color-green-deep: #0c4731;
  --color-green-pill: #267e5c;
  --color-green-title: #227d59;
  --color-green-label: #5a9c7a;
  --color-green-mint: #a4ddc4;
  --color-green-pale: #f6fcf9;
  --color-green-burger: #119b15;
  --color-line: #06c755;
  --color-footer: #2d3830;
  --color-entrance: #d5edbb;
  --color-vision: #efefef;
  --color-tag-bg: #f7f7f7;
  --color-tag-border: #8d8d8d;
  --color-divider: #b1b1b1;
  --color-blue: #2290b5;
  --color-text-dark: #1a1a18;
  --color-green-heading: #267f5d;
  --color-gray-bg: #f2f7f5;
  --color-text-card: #1c1c1a;
  --color-text-strong: #1a1a1a;
  --color-tab-bg: #d5d5d5;
  --color-text-form: #0a0a0a;
  --color-required: #d4183d;
  --color-text-muted: #717182;
  --color-link: #40a5be;
  --color-input-bg: #f3f3f5;
  --color-border-light: #ddd;
  --color-step-off: #c8c8c8;
  --color-step-label-off: #999;
  --color-note-bg: #f5f5f5;
  --color-note-text: #545454;
  --color-line-box: #277957;
  --color-gray-light: #d1d5dc;
  --color-border-table: #e7ebea;
  --color-blue-line: #b7e2f1;
  --color-hokulea-bg: #f1f7f9;
  --color-hokulea-sky: #f0f8ff;
  --color-hokulea-company: #f5faff;
  --color-hokulea-star: #ebf5ff;
  --color-hokulea-yellow: #fff9e7;
  --color-hokulea-star-yellow: #fff3d1;
  --color-hokulea-line: #c3dde5;
  --color-hokulea-note: #4a5a4d;
  --color-hokulea-dark: #1a2b1e;
  --color-line-shadow: #356b4b;
  --color-hokulea-text: #2a3d2e;

  /* フォント */
  --font-mincho: "Zen Old Mincho", serif;
  --font-shippori: "Shippori Mincho", serif;
  --font-gothic: "Zen Kaku Gothic New", sans-serif;
  --font-en: "DM Sans", sans-serif;
  --font-goudy: "Sorts Mill Goudy", serif;
  --font-poppins: "Poppins", sans-serif;
  --font-shippori-antique: "Shippori Antique", sans-serif;
  --font-noto-sans: "Noto Sans JP", sans-serif;
  --font-noto-serif: "Noto Serif JP", serif;

  /* z-index */
  --z-index-base: 1;
  --z-index-header: 100;
  --z-index-drawer: 90;
}

/* ==========================================================================
   ベース
   ========================================================================== */
html {
  font-size: 62.5%;
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

body {
  background-color: var(--color-white);
  color: var(--color-text);
  font-family: var(--font-mincho);
  font-size: 1.6rem;
  line-height: 1.8;
}

body.is-drawer-open {
  overflow: hidden;
}

/* ==========================================================================
   ユーティリティ
   ========================================================================== */
.u-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
  white-space: nowrap;
}

/* 本文中の注釈マーク（※）。本文の約0.6倍の大きさで表示する */
.u-note-mark {
  font-size: 0.6em;
}

/* ==========================================================================
   共通コンポーネント
   ========================================================================== */

/* ---------- header ---------- */
.header {
  position: sticky;
  top: 0;
  z-index: var(--z-index-header);
  background-color: var(--color-white);
}

/* ログイン中の管理バー（WordPress版で追加）。601〜782px は高さ46px、783px以上は32px で画面上部に固定される */
@media (min-width: 601px) {
  .admin-bar .header {
    top: 46px;
  }
  .admin-bar .drawer {
    top: 106px;
    height: calc(100dvh - 106px);
  }
}
@media (min-width: 783px) {
  .admin-bar .header {
    top: 32px;
  }
  .admin-bar .drawer {
    top: 92px;
    height: calc(100dvh - 92px);
  }
}

.header__inner {
  display: flex;
  position: relative;
  z-index: var(--z-index-header);
  justify-content: space-between;
  align-items: center;
  height: 60px;
  padding-left: 16px;
  background-color: var(--color-white);
}
@media (min-width: 1080px) {
  .header__inner {
    height: 82px;
    padding: 0 80px;
  }
}

.header__logo {
  display: flex;
  width: 10.7rem;
}
@media (min-width: 1080px) {
  .header__logo {
    width: 15.3rem;
  }
}

.header__nav {
  display: none;
}
@media (min-width: 1080px) {
  .header__nav {
    display: flex;
    align-items: center;
    gap: 18px;
  }
}

.header__list {
  display: flex;
  align-items: center;
  gap: 18px;
}

.header__link {
  display: block;
  color: var(--color-text);
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.01em;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .header__link:hover {
    opacity: 0.7;
  }
}
.header__link:focus-visible {
  opacity: 0.7;
}

.header__buttons {
  display: flex;
  align-items: center;
  gap: 8px;
}

.header__button {
  display: block;
  padding: 6px 20px;
  border-radius: 30px;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.01em;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .header__button:hover {
    opacity: 0.7;
  }
}
.header__button:focus-visible {
  opacity: 0.7;
}

.header__button--contact {
  border: 1px solid var(--color-text);
  color: var(--color-text);
}

.header__button--line {
  border: 1px solid var(--color-line);
  background-color: var(--color-line);
  color: var(--color-white);
}

.header__burger {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
  width: 60px;
  height: 60px;
  background-color: var(--color-green-burger);
  transition: opacity 0.3s;
}
@media (min-width: 1080px) {
  .header__burger {
    display: none;
  }
}
@media (any-hover: hover) {
  .header__burger:hover {
    opacity: 0.7;
  }
}
.header__burger:focus-visible {
  opacity: 0.7;
}

.header__burger-line {
  display: block;
  width: 24px;
  height: 2px;
  border-radius: 1px;
  background-color: var(--color-white);
  transition: transform 0.3s, opacity 0.3s;
}

.header__burger[aria-expanded="true"] .header__burger-line:nth-child(1) {
  transform: translateY(8px) rotate(45deg);
}

.header__burger[aria-expanded="true"] .header__burger-line:nth-child(2) {
  opacity: 0;
}

.header__burger[aria-expanded="true"] .header__burger-line:nth-child(3) {
  transform: translateY(-8px) rotate(-45deg);
}

/* ---------- drawer（SPメニュー） ---------- */
.drawer {
  position: fixed;
  top: 60px;
  right: 0;
  left: 0;
  z-index: var(--z-index-drawer);
  display: flex;
  flex-direction: column;
  height: calc(100dvh - 60px);
  overflow-y: auto;
  background-color: var(--color-gray-bg);
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s, visibility 0.3s;
}
@media (min-width: 1080px) {
  .drawer {
    display: none;
  }
}

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

/* ヘッダーを除いた高さの上下中央に置く。高さが足りない時は margin auto が 0 になりスクロールできる */
.drawer__nav {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px;
  margin-block: auto;
  padding: 48px 20px;
}

.drawer__list {
  display: flex;
  flex-direction: column;
  gap: 24px;
  width: 22rem;
}

.drawer__link {
  display: flex;
  align-items: center;
  color: var(--color-text);
  font-family: var(--font-gothic);
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.02em;
  transition: opacity 0.3s;
}
.drawer__link::before {
  display: block;
  flex-shrink: 0;
  width: 10px;
  height: 2px;
  margin-right: 8px;
  background-color: var(--color-text);
  content: "";
}
@media (any-hover: hover) {
  .drawer__link:hover {
    opacity: 0.7;
  }
}
.drawer__link:focus-visible {
  opacity: 0.7;
}

.drawer__buttons {
  display: flex;
  justify-content: center;
  gap: 12px;
}

.drawer__button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 13.7rem;
  padding: 6px 0;
  border-radius: 30px;
  color: var(--color-text);
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.01em;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .drawer__button:hover {
    opacity: 0.7;
  }
}
.drawer__button:focus-visible {
  opacity: 0.7;
}

.drawer__button--contact {
  border: 1px solid var(--color-text);
}

.drawer__button--line {
  border: 1px solid var(--color-line);
  background-color: var(--color-line);
  color: var(--color-white);
}

.drawer__sns {
  display: flex;
  width: 2.4rem;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .drawer__sns:hover {
    opacity: 0.7;
  }
}
.drawer__sns:focus-visible {
  opacity: 0.7;
}

/* ---------- page-title（下層ページ見出し） ---------- */
.page-title {
  background: var(--color-green) url("../img/common/bg-page-title.webp") right top / cover no-repeat;
  color: var(--color-white);
}

.page-title__inner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  max-width: 124rem;
  min-height: 17rem;
  margin-inline: auto;
  padding: 0 20px;
}
@media (min-width: 768px) {
  .page-title__inner {
    min-height: 24rem;
  }
}
@media (min-width: 1080px) {
  .page-title__inner {
    min-height: 31.8rem;
    padding-bottom: 48px;
  }
}

.page-title__sub {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .page-title__sub {
    font-size: 2.4rem;
  }
}

.page-title__main {
  font-family: var(--font-en);
  font-size: 4rem;
  font-weight: 700;
  line-height: normal;
}
@media (min-width: 1080px) {
  .page-title__main {
    font-size: 8rem;
  }
}

/* ---------- breadcrumb ---------- */
.breadcrumb {
  max-width: 124rem;
  margin-inline: auto;
  padding: 4px 20px;
}

.breadcrumb__list {
  display: flex;
  align-items: center;
  column-gap: 8px;
}

.breadcrumb__item {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: 8px;
  color: var(--color-black);
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.08em;
}
@media (min-width: 1080px) {
  .breadcrumb__item {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.breadcrumb__item:last-child {
  flex-shrink: 1;
  min-width: 0;
}

.breadcrumb__current {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.breadcrumb__item + .breadcrumb__item::before {
  display: block;
  flex-shrink: 0;
  width: 12px;
  height: 8px;
  background: url("../img/common/icon-breadcrumb.svg") center / contain no-repeat;
  content: "";
}

.breadcrumb__link {
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .breadcrumb__link:hover {
    opacity: 0.7;
  }
}
.breadcrumb__link:focus-visible {
  opacity: 0.7;
}

/* ---------- section-title（AEI系見出し） ---------- */
.section-title {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding-bottom: 32px;
  color: var(--color-text);
}

.section-title--center {
  align-items: center;
  text-align: center;
}

.section-title--white {
  color: var(--color-white);
}

.section-title--black {
  color: var(--color-black);
}

.section-title__sub {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .section-title__sub {
    font-size: 2.4rem;
  }
}

.section-title__main {
  font-family: var(--font-en);
  font-size: 4.4rem;
  font-weight: 700;
  line-height: normal;
}
@media (min-width: 1080px) {
  .section-title__main {
    font-size: 8rem;
  }
}

/* ---------- more-link（一覧を見る） ---------- */
.more-link {
  display: inline-flex;
  align-items: center;
  gap: 19px;
  color: var(--color-text);
}
@media (min-width: 1080px) {
  .more-link {
    gap: 24px;
  }
}

.more-link__text {
  font-size: 1.44rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .more-link__text {
    font-size: 1.8rem;
  }
}

.more-link__icon {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 5.12rem;
  height: 5.12rem;
  border: 1px solid var(--color-green-deep);
  border-radius: 50%;
  background-color: var(--color-green-deep);
  color: var(--color-white);
  transition: background-color 0.3s, color 0.3s;
}
.more-link__icon::before {
  display: block;
  width: 1.84rem;
  height: 1.28rem;
  background-color: currentColor;
  mask: url("../img/common/icon-arrow.svg") center / contain no-repeat;
  content: "";
}
@media (min-width: 1080px) {
  .more-link__icon {
    width: 6.4rem;
    height: 6.4rem;
  }
  .more-link__icon::before {
    width: 2.3rem;
    height: 1.6rem;
  }
}
@media (any-hover: hover) {
  .more-link:hover .more-link__icon {
    background-color: var(--color-white);
    color: var(--color-green-deep);
  }
}
.more-link:focus-visible .more-link__icon {
  background-color: var(--color-white);
  color: var(--color-green-deep);
}

.more-link--blue .more-link__icon {
  border-color: var(--color-blue);
  background-color: var(--color-blue);
}
@media (any-hover: hover) {
  .more-link--blue:hover .more-link__icon {
    background-color: var(--color-white);
    color: var(--color-blue);
  }
}
.more-link--blue:focus-visible .more-link__icon {
  background-color: var(--color-white);
  color: var(--color-blue);
}

/* ---------- post-category（記事カテゴリ） ---------- */
.post-category {
  padding: 2px 8px;
  border: 1px solid var(--color-tag-border);
  background-color: var(--color-tag-bg);
  color: var(--color-black);
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.5;
  white-space: nowrap;
}
@media (min-width: 1080px) {
  .post-category {
    padding: 4px 10px;
    font-size: 1.6rem;
  }
}

/* ---------- news-row（横並びのお知らせ） ---------- */
.news-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 20px 0;
  transition: opacity 0.3s;
}
@media (min-width: 1080px) {
  .news-row {
    gap: 32px;
    padding: 0;
  }
}
@media (any-hover: hover) {
  .news-row:hover {
    opacity: 0.7;
  }
}
.news-row:focus-visible {
  opacity: 0.7;
}

.news-row__thumb {
  overflow: hidden;
  flex-shrink: 0;
  width: 11.2rem;
  aspect-ratio: 112 / 77;
}
@media (min-width: 1080px) {
  .news-row__thumb {
    width: 23.2rem;
    aspect-ratio: 232 / 159.5;
  }
}

.news-row__thumb img {
  height: 100%;
  object-fit: cover;
}

.news-row__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
@media (min-width: 1080px) {
  .news-row__body {
    gap: 12px;
  }
}

.news-row__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
@media (min-width: 1080px) {
  .news-row__meta {
    gap: 12px;
  }
}

.news-row__date {
  font-family: var(--font-en);
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .news-row__date {
    font-size: 1.6rem;
  }
}

.news-row__title {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .news-row__title {
    font-size: 1.8rem;
  }
}

/* ---------- post-list / post-card（記事カード） ---------- */
.post-list {
  display: grid;
  gap: 24px;
}
@media (min-width: 768px) {
  .post-list {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 1080px) {
  .post-list {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* SPでは横並びのリスト表示にするパターン */
.post-list--row-sp {
  gap: 0;
  border-top: 1px solid var(--color-divider);
}
@media (min-width: 768px) {
  .post-list--row-sp {
    gap: 24px;
    border-top: none;
  }
}

.post-list--row-sp .post-list__item {
  border-bottom: 1px solid var(--color-divider);
}
@media (min-width: 768px) {
  .post-list--row-sp .post-list__item {
    border-bottom: none;
  }
}

.post-card {
  height: 100%;
  overflow: hidden;
  border-radius: 15px;
  background-color: var(--color-white);
}

.post-card__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  color: var(--color-text-card);
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .post-card__link:hover {
    opacity: 0.7;
  }
}
.post-card__link:focus-visible {
  opacity: 0.7;
}

.post-card__thumb {
  overflow: hidden;
  aspect-ratio: 384 / 216;
}

.post-card__thumb img {
  height: 100%;
  object-fit: cover;
}

.post-card__body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 24px;
}

.post-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}

.post-card__date {
  font-family: var(--font-en);
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.5;
}

.post-card__title {
  display: -webkit-box;
  min-height: 3em;
  overflow: hidden;
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.post-card__excerpt {
  display: -webkit-box;
  overflow: hidden;
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.06em;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
}

.post-card--row-sp {
  border-radius: 0;
  background-color: transparent;
}
@media (min-width: 768px) {
  .post-card--row-sp {
    border-radius: 15px;
    background-color: var(--color-white);
  }
}

.post-card--row-sp .post-card__link {
  flex-direction: row;
  align-items: flex-start;
  gap: 14px;
  padding: 16px 0;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__link {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 0;
  }
}

.post-card--row-sp .post-card__thumb {
  flex-shrink: 0;
  width: 11.2rem;
  aspect-ratio: 112 / 77;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__thumb {
    width: auto;
    aspect-ratio: 384 / 216;
  }
}

.post-card--row-sp .post-card__body {
  flex: 1;
  gap: 6px;
  min-width: 0;
  padding: 0;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__body {
    gap: 12px;
    padding: 24px;
  }
}

.post-card--row-sp .post-card__meta {
  gap: 10px;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__meta {
    gap: 12px;
  }
}

.post-card--row-sp .post-card__date {
  font-size: 1.2rem;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__date {
    font-size: 1.6rem;
  }
}

.post-card--row-sp .post-card__title {
  min-height: 0;
  font-size: 1.4rem;
  -webkit-line-clamp: 3;
  line-clamp: 3;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__title {
    min-height: 3em;
    font-size: 1.8rem;
    -webkit-line-clamp: 2;
    line-clamp: 2;
  }
}

.post-card--row-sp .post-card__excerpt {
  display: none;
}
@media (min-width: 768px) {
  .post-card--row-sp .post-card__excerpt {
    display: -webkit-box;
  }
}

/* ---------- pagination ---------- */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
  color: var(--color-text-strong);
  font-family: var(--font-gothic);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 20px;
}

.pagination__prev,
.pagination__next {
  display: flex;
  align-items: center;
  gap: 8px;
  transition: opacity 0.3s;
}
.pagination__prev::before,
.pagination__next::after {
  display: block;
  width: 14px;
  height: 14px;
  background-color: currentColor;
  mask: url("../img/common/icon-chevron.svg") center / contain no-repeat;
  content: "";
}
.pagination__prev::before {
  transform: scaleX(-1);
}
@media (any-hover: hover) {
  .pagination__prev:hover,
  .pagination__next:hover {
    opacity: 0.7;
  }
}
.pagination__prev:focus-visible,
.pagination__next:focus-visible {
  opacity: 0.7;
}

.pagination__list {
  display: flex;
  align-items: center;
  gap: 4px;
}

.pagination__link {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  color: var(--color-green-heading);
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  a.pagination__link:hover {
    opacity: 0.7;
  }
}
a.pagination__link:focus-visible {
  opacity: 0.7;
}

.pagination__link--current {
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

/* ページが多い時に離れたページ番号を省略する「…」 */
.pagination__dots {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 24px;
  height: 36px;
}

/* ---------- cycle-circle（AEIモデルの円） ---------- */
.cycle-circle {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
  /* 中身の位置を円自身の幅（cqw）基準で指定するためのコンテナ */
  container-type: inline-size;
  aspect-ratio: 1;
  border: 3.8px solid var(--color-green-mint);
  border-radius: 50%;
  background-color: var(--color-white);
}
@media (min-width: 1080px) {
  .cycle-circle {
    gap: 9px;
    border-width: 6.8px;
  }
}

.cycle-circle--pale {
  background-color: var(--color-green-pale);
}

/* Figma に合わせ、中身のまとまりを円の中心より少し下に置く */
.cycle-circle__title {
  margin-top: 10cqw;
  color: var(--color-green-title);
  font-family: var(--font-shippori);
  font-size: 2rem;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.03em;
  white-space: nowrap;
}
@media (min-width: 768px) {
  .cycle-circle__title {
    font-size: 2.8rem;
  }
}
@media (min-width: 1080px) {
  .cycle-circle__title {
    margin-top: 9.2cqw;
    font-size: 3.04rem;
  }
}

.cycle-circle__text {
  padding: 3.7px 11px;
  border-radius: 22px;
  background-color: var(--color-green-pill);
  color: var(--color-white);
  font-family: var(--font-shippori);
  font-size: 1.1rem;
  font-weight: 500;
  line-height: normal;
  text-align: center;
  white-space: nowrap;
}
@media (min-width: 768px) {
  .cycle-circle__text {
    padding: 5px 16px;
    font-size: 1.5rem;
  }
}
@media (min-width: 1080px) {
  .cycle-circle__text {
    min-width: 72%;
    padding: 5.6px 16.9px;
    border-radius: 34px;
    font-size: 1.58rem;
  }
}

/* ---------- photo-card（円形写真付きの緑カード） ---------- */
.photo-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 28px 20px;
  border-radius: 15px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
}
@media (min-width: 1080px) {
  .photo-card {
    gap: 32px;
    padding: 32px;
  }
}

.photo-card--link {
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .photo-card--link:hover {
    opacity: 0.7;
  }
}
.photo-card--link:focus-visible {
  opacity: 0.7;
}

.photo-card__image {
  width: 17rem;
  overflow: hidden;
  border-radius: 50%;
  aspect-ratio: 277 / 274;
}
@media (min-width: 1080px) {
  .photo-card__image {
    width: 27.7rem;
  }
}

.photo-card__image img {
  height: 100%;
  object-fit: cover;
}

.photo-card__body {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
  text-align: center;
}

.photo-card__label {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .photo-card__label {
    font-size: 2.4rem;
  }
}

.photo-card__title {
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .photo-card__title {
    font-size: min(3.2rem, 2.22vw);
    white-space: nowrap;
  }
}

.photo-card__label + .photo-card__title {
  margin-top: -8px;
}

.photo-card__title--external {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 2rem;
  line-height: 1.8;
  letter-spacing: 0.05em;
}
@media (min-width: 1080px) {
  .photo-card__title--external {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}
.photo-card__title--external::after {
  display: none;
  flex-shrink: 0;
  width: 2.8rem;
  height: 2.8rem;
  background: url("../img/common/icon-window.svg") center / contain no-repeat;
  content: "";
}
@media (min-width: 768px) {
  .photo-card__title--external::after {
    display: block;
  }
}
@media (min-width: 1080px) {
  .photo-card__title--external::after {
    width: 3.5rem;
    height: 3.5rem;
  }
}

.photo-card__text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .photo-card__text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- link-card（矢印付きの案内カード） ---------- */
.link-card {
  display: flex;
  align-items: center;
  gap: 12px;
  height: 100%;
  padding: 24px 16px 24px 20px;
  border: 1.275px solid var(--color-green-heading);
  border-radius: 15px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
}
@media (min-width: 1080px) {
  .link-card {
    gap: 32px;
    padding: 32px 24px;
  }
}

.link-card--outline {
  background-color: var(--color-white);
  color: var(--color-green-heading);
}

.link-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.link-card__title {
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .link-card__title {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.link-card__br-pc {
  display: none;
}
@media (min-width: 1080px) {
  .link-card__br-pc {
    display: inline;
  }
}

.link-card__text {
  padding-bottom: 8px;
  color: var(--color-gray-light);
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.08em;
}
@media (min-width: 1080px) {
  .link-card__text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.link-card--outline .link-card__text {
  color: var(--color-green-heading);
}

.link-card__icon {
  display: flex;
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  width: 4.48rem;
  height: 4.48rem;
  border: 1px solid var(--color-green-deep);
  border-radius: 50%;
  background-color: var(--color-white);
  color: var(--color-green-deep);
  transition: background-color 0.3s, color 0.3s;
}
@media (min-width: 1080px) {
  .link-card__icon {
    width: 6.4rem;
    height: 6.4rem;
  }
}
.link-card__icon::before {
  display: block;
  width: 36%;
  height: 25%;
  background-color: currentColor;
  mask: url("../img/common/icon-arrow.svg") center / contain no-repeat;
  content: "";
}

.link-card--outline .link-card__icon {
  border-color: var(--color-green-heading);
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

/* カード背景ごと反転すると2枚が入れ替わって見えるため、右の丸だけを色反転する */
@media (any-hover: hover) {
  .link-card:hover .link-card__icon {
    background-color: var(--color-green-deep);
    color: var(--color-white);
  }
  .link-card--outline:hover .link-card__icon {
    background-color: var(--color-white);
    color: var(--color-green-heading);
  }
}
.link-card:focus-visible .link-card__icon {
  background-color: var(--color-green-deep);
  color: var(--color-white);
}
.link-card--outline:focus-visible .link-card__icon {
  background-color: var(--color-white);
  color: var(--color-green-heading);
}

/* ---------- info-table（会社概要・施設情報の表） ---------- */
.info-table__row {
  display: flex;
}

.info-table__term {
  flex-shrink: 0;
  width: 9.2rem;
  padding: 14px 0;
  border-bottom: 1px solid var(--color-green-label);
  color: var(--color-green-label);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .info-table__term {
    width: 25rem;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.info-table__desc {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
  padding: 14px 0 14px 8px;
  border-bottom: 1px solid var(--color-border-table);
  color: var(--color-black);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .info-table__desc {
    gap: 28px;
    padding-left: 10px;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.info-table__strong {
  font-weight: 700;
}

/* ---------- heading-hokulea（ホークレアの見出し） ---------- */
.heading-hokulea {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  padding-bottom: 32px;
  letter-spacing: 0.06em;
  text-align: center;
}

.heading-hokulea__sub {
  color: var(--color-hokulea-text);
  font-family: var(--font-shippori);
  font-size: 1.3rem;
  line-height: normal;
}
@media (min-width: 1080px) {
  .heading-hokulea__sub {
    font-size: 1.6rem;
  }
}

.heading-hokulea__note {
  color: var(--color-hokulea-text);
  font-size: 1.1rem;
  font-weight: 500;
  line-height: normal;
  letter-spacing: 0;
}
@media (min-width: 1080px) {
  .heading-hokulea__note {
    font-size: 1.3rem;
  }
}

.heading-hokulea--dark-sub .heading-hokulea__sub {
  color: var(--color-text);
}

/* 長い英字見出し用（SPで1行に収める） */
.heading-hokulea--long .heading-hokulea__main {
  font-size: 2.8rem;
}
@media (min-width: 768px) {
  .heading-hokulea--long .heading-hokulea__main {
    font-size: 3.6rem;
  }
}
@media (min-width: 1080px) {
  .heading-hokulea--long .heading-hokulea__main {
    font-size: 5.6rem;
  }
}

.heading-hokulea--large-sub .heading-hokulea__sub {
  font-size: 1.6rem;
  font-weight: 700;
}
@media (min-width: 1080px) {
  .heading-hokulea--large-sub .heading-hokulea__sub {
    font-size: 2.3rem;
  }
}

.heading-hokulea__main {
  color: var(--color-blue);
  font-family: var(--font-goudy);
  font-size: 3.6rem;
  font-weight: 400;
  line-height: normal;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
@media (min-width: 1080px) {
  .heading-hokulea__main {
    font-size: 5.6rem;
  }
}

/* ---------- voice-list / voice-card（利用者の声） ---------- */
.voice-list {
  display: flex;
  flex-direction: column;
  gap: 32px;
  max-width: 40rem;
  margin-inline: auto;
}
@media (min-width: 1080px) {
  .voice-list {
    flex-direction: row;
    align-items: stretch;
    max-width: 111rem;
    margin-inline: auto;
  }
}

/* SPでは横スクロールで並べるパターン。スクロール領域は画面幅いっぱいに取る */
.voice-list--scroll-sp {
  flex-direction: row;
  gap: 12px;
  max-width: none;
  margin-inline: 0;
  overflow-x: auto;
  padding: 0 20px;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
@media (min-width: 1080px) {
  .voice-list--scroll-sp {
    gap: 32px;
    max-width: 111rem;
    margin-inline: auto;
    overflow-x: visible;
    padding: 0;
  }
}
.voice-list--scroll-sp::-webkit-scrollbar {
  display: none;
}

.voice-list__item {
  display: flex;
}
@media (min-width: 1080px) {
  .voice-list__item {
    flex: 1;
  }
}

.voice-list--scroll-sp .voice-list__item {
  flex-shrink: 0;
  width: 28rem;
  scroll-snap-align: center;
}
@media (min-width: 1080px) {
  .voice-list--scroll-sp .voice-list__item {
    flex: 1;
    width: auto;
  }
}

.voice-card {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
  padding: 16px;
  background-color: var(--color-hokulea-bg);
  color: var(--color-text);
}

.voice-card__head {
  display: flex;
  align-items: flex-end;
  gap: 13px;
}

.voice-card__avatar {
  flex-shrink: 0;
  width: 8.9rem;
  overflow: hidden;
  border-radius: 50%;
}

.voice-card__name {
  font-family: var(--font-shippori-antique);
  font-size: 1.6rem;
  line-height: 1.8;
  letter-spacing: 0.05em;
}

.voice-card__text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .voice-card__text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- line-button（公式LINEボタン） ---------- */
.line-button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  padding: 16px 32px;
  border: 1px solid var(--color-line);
  border-radius: 50px;
  background-color: var(--color-line);
  color: var(--color-white);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.01em;
  filter: drop-shadow(3px 4px 3px color-mix(in srgb, var(--color-line-shadow) 26%, transparent));
  transition: opacity 0.3s;
}
@media (min-width: 1080px) {
  .line-button {
    font-size: 1.6rem;
  }
}
@media (any-hover: hover) {
  .line-button:hover {
    opacity: 0.7;
  }
}
.line-button:focus-visible {
  opacity: 0.7;
}

/* ---------- partner-list / partner-card（パートナー） ---------- */
.partner-list {
  display: grid;
  gap: 16px;
}

.partner-list--large {
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .partner-list--large {
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
  }
}

.partner-list--medium {
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
@media (min-width: 1080px) {
  .partner-list--medium {
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
  }
}

.partner-list--small {
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
@media (min-width: 1080px) {
  .partner-list--small {
    grid-template-columns: repeat(8, 1fr);
    gap: 16px;
  }
}

.partner-list__item {
  display: flex;
}

.partner-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  overflow: hidden;
  border-radius: 15px;
  background-color: var(--color-white);
  color: var(--color-text);
}

a.partner-card {
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  a.partner-card:hover {
    opacity: 0.7;
  }
}
a.partner-card:focus-visible {
  opacity: 0.7;
}

.partner-card--small {
  border-radius: 8px;
}
@media (min-width: 1080px) {
  .partner-card--small {
    border-radius: 15px;
  }
}

.partner-card__logo {
  display: flex;
  justify-content: center;
  align-items: center;
  aspect-ratio: 237 / 100;
  /* ロゴ画像は余白なしで登録し、余白はここで統一する */
  padding: 4% 8%;
  overflow: hidden;
}

.partner-card__logo img {
  height: 100%;
  object-fit: contain;
}

.partner-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  font-family: var(--font-shippori);
  line-height: 1.8;
  letter-spacing: 0.06em;
}

.partner-card__name {
  font-size: 1.4rem;
  font-weight: 700;
}
@media (min-width: 1080px) {
  .partner-card__name {
    font-size: 1.6rem;
  }
}

.partner-card__text {
  display: -webkit-box;
  overflow: hidden;
  font-size: 1.2rem;
  font-weight: 500;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}
@media (min-width: 1080px) {
  .partner-card__text {
    font-size: 1.4rem;
  }
}

.partner-card--medium .partner-card__body {
  padding: 12px;
}
@media (min-width: 1080px) {
  .partner-card--medium .partner-card__body {
    padding: 16px;
  }
}

.partner-card--medium .partner-card__text {
  font-size: 1.2rem;
  font-weight: 700;
  -webkit-line-clamp: 3;
  line-clamp: 3;
}
@media (min-width: 1080px) {
  .partner-card--medium .partner-card__text {
    font-size: 1.6rem;
  }
}

/* ---------- plan-card（共創プラン） ---------- */
.plan-card {
  display: flex;
  position: relative;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  height: 100%;
  padding: 24px;
  border-radius: 15px;
  background-color: var(--color-white);
  color: var(--color-text);
  text-align: center;
}

.plan-card__badge {
  position: absolute;
  top: -26px;
  left: 50%;
  z-index: var(--z-index-base);
  font-size: 2rem;
  line-height: normal;
  letter-spacing: 0.05em;
  white-space: nowrap;
  transform: translateX(-50%);
}
@media (min-width: 1080px) {
  .plan-card__badge {
    font-size: 2.3rem;
  }
}
.plan-card__badge::before {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: -1;
  width: 22.5rem;
  height: 4.2rem;
  background: url("../img/hokulea/brush.svg") center / 100% 100% no-repeat;
  opacity: 0.52;
  transform: translate(-50%, -50%) rotate(-3.87deg);
  content: "";
}

.plan-card__title {
  font-family: var(--font-noto-serif);
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.04em;
}
@media (min-width: 1080px) {
  .plan-card__title {
    letter-spacing: 0;
  }
}
@media (min-width: 1080px) {
  .plan-card__title {
    font-size: min(2.6rem, 1.8vw);
  }
}

.plan-card__price {
  font-family: var(--font-noto-serif);
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .plan-card__price {
    font-size: 1.8rem;
  }
}

.plan-card__price-num {
  font-size: 2.2rem;
}
@media (min-width: 1080px) {
  .plan-card__price-num {
    font-size: 2.4rem;
  }
}

.plan-card__lead {
  font-family: var(--font-shippori);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .plan-card__lead {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.plan-card__list {
  flex: 1;
  width: 100%;
  padding: 6px 24px;
  border-radius: 15px;
  background-color: var(--color-hokulea-yellow);
  text-align: left;
}

.plan-card__list-item {
  display: flex;
  gap: 12px;
  padding: 6px 0;
  border-bottom: 1px dashed var(--color-blue-line);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .plan-card__list-item {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}
.plan-card__list-item::before {
  display: flex;
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  width: 20px;
  height: 20px;
  margin-top: 4px;
  border-radius: 50%;
  background-color: var(--color-blue);
  color: var(--color-white);
  font-family: var(--font-noto-sans);
  font-size: 1.2rem;
  line-height: 1;
  content: "✓";
}

.plan-card__note {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .plan-card__note {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- cta（CONTACT） ---------- */
.cta {
  background: var(--color-green) url("../img/common/bg-green.webp") center / cover no-repeat;
}

.cta__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px;
  padding: 64px 20px 72px;
}
@media (min-width: 1080px) {
  .cta__inner {
    gap: 0;
    padding: 130px 20px;
  }
}

.cta__list {
  display: flex;
  flex-direction: column;
  gap: 56px;
  width: 100%;
  max-width: 50rem;
}
@media (min-width: 768px) {
  .cta__list {
    flex-direction: row;
    justify-content: center;
    gap: 32px;
    max-width: none;
  }
}

.cta__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
@media (min-width: 768px) {
  .cta__item {
    justify-content: space-between;
    width: 35rem;
  }
}
@media (min-width: 1080px) {
  .cta__item {
    gap: 24px;
  }
}

.cta__text {
  color: var(--color-white);
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}
@media (min-width: 1080px) {
  .cta__text {
    font-size: 2.4rem;
  }
}

.cta__text-pc {
  display: none;
}
@media (min-width: 1080px) {
  .cta__text-pc {
    display: inline;
  }
}

.cta__button {
  display: block;
  width: 100%;
  padding: 18px 32px;
  border: 1px solid color-mix(in srgb, var(--color-white) 30%, transparent);
  border-radius: 10px;
  background-color: color-mix(in srgb, var(--color-white) 23%, transparent);
  color: var(--color-white);
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  transition: background-color 0.3s;
}
@media (min-width: 1080px) {
  .cta__button {
    padding: 24px 32px;
    font-size: 2.4rem;
  }
}
@media (any-hover: hover) {
  .cta__button:hover {
    background-color: color-mix(in srgb, var(--color-white) 50%, transparent);
  }
}
.cta__button:focus-visible {
  background-color: color-mix(in srgb, var(--color-white) 50%, transparent);
}

/* ---------- footer ---------- */
.footer {
  background-color: var(--color-footer);
  color: var(--color-white);
}

.footer__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 24px;
}
@media (min-width: 1080px) {
  .footer__inner {
    padding-top: 56px;
  }
}

.footer__top {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  padding-bottom: 32px;
  border-bottom: 1px solid color-mix(in srgb, var(--color-white) 20%, transparent);
}
@media (min-width: 768px) {
  .footer__top {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    padding-bottom: 56px;
    border-bottom: none;
  }
}

.footer__info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
@media (min-width: 768px) {
  .footer__info {
    align-items: flex-start;
  }
}

.footer__logo {
  display: flex;
  width: 15.3rem;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .footer__logo:hover {
    opacity: 0.7;
  }
}
.footer__logo:focus-visible {
  opacity: 0.7;
}

.footer__address {
  display: flex;
  flex-direction: column;
  font-size: 1.2rem;
  font-weight: 500;
  font-style: normal;
  line-height: 1.8;
  letter-spacing: 0.05em;
  text-align: center;
}
@media (min-width: 768px) {
  .footer__address {
    text-align: left;
  }
}

.footer__sns {
  display: flex;
  width: 1.8rem;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .footer__sns:hover {
    opacity: 0.7;
  }
}
.footer__sns:focus-visible {
  opacity: 0.7;
}

.footer__menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
}
@media (min-width: 768px) {
  .footer__menu {
    flex-direction: row;
    align-items: flex-start;
  }
}

.footer__list {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 18.9rem;
}

.footer__link {
  display: flex;
  align-items: center;
  font-family: var(--font-gothic);
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.02em;
  transition: opacity 0.3s;
}
.footer__link::before {
  display: block;
  flex-shrink: 0;
  width: 10px;
  height: 2px;
  margin-right: 8px;
  background-color: var(--color-white);
  content: "";
}
@media (any-hover: hover) {
  .footer__link:hover {
    opacity: 0.7;
  }
}
.footer__link:focus-visible {
  opacity: 0.7;
}

.footer__link-pc {
  display: none;
}
@media (min-width: 768px) {
  .footer__link-pc {
    display: inline;
  }
}

.footer__buttons {
  display: flex;
  gap: 12px;
}
@media (min-width: 768px) {
  .footer__buttons {
    flex-direction: column;
    gap: 16px;
  }
}

.footer__button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 13.7rem;
  padding: 6px 0;
  border-radius: 30px;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.01em;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .footer__button:hover {
    opacity: 0.7;
  }
}
.footer__button:focus-visible {
  opacity: 0.7;
}

.footer__button--contact {
  border: 1px solid var(--color-white);
}

.footer__button--line {
  border: 1px solid var(--color-line);
  background-color: var(--color-line);
}

.footer__copyright {
  padding-top: 32px;
  font-family: var(--font-poppins);
  font-size: 1.1rem;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
}
@media (min-width: 768px) {
  .footer__copyright {
    padding-top: 0;
    font-size: 1.4rem;
  }
}

.footer__copyright-text {
  font-size: inherit;
}

/* ==========================================================================
   TOP
   ========================================================================== */

/* ---------- mv ---------- */
.mv {
  position: relative;
  overflow: hidden;
  background: var(--color-green) url("../img/top/mv-bg.webp") center bottom / cover no-repeat;
}
@media (min-width: 1080px) {
  .mv::before {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 50px;
    background: linear-gradient(color-mix(in srgb, #99bf8c 39%, transparent), transparent);
    content: "";
  }
}

.mv__content {
  position: relative;
  z-index: var(--z-index-base);
  padding: 52px 20px 38px;
  color: var(--color-white);
  text-align: center;
  text-shadow: 0 0 7px color-mix(in srgb, #063914 18%, transparent);
}
@media (min-width: 768px) {
  .mv__content {
    padding: 72px 20px 48px;
  }
}
@media (min-width: 1080px) {
  .mv__content {
    padding: 90px 20px 55px;
  }
}

.mv__lead {
  font-size: 1.1rem;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.07em;
}
@media (min-width: 768px) {
  .mv__lead {
    font-size: 1.4rem;
  }
}
@media (min-width: 1080px) {
  .mv__lead {
    font-size: 1.7rem;
    font-weight: 900;
    letter-spacing: 0.09em;
  }
}

.mv__catch {
  margin-top: 10px;
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 768px) {
  .mv__catch {
    margin-top: 0;
    font-size: 3.4rem;
  }
}
@media (min-width: 1080px) {
  .mv__catch {
    font-size: 4.2rem;
  }
}

.mv__catch-line {
  display: block;
}

@media (min-width: 1080px) {
  .mv__catch-large {
    font-size: 5.2rem;
  }
}

@media (min-width: 1080px) {
  .mv__catch-medium {
    font-size: 4.8rem;
  }
}

.mv__catch-narrow {
  letter-spacing: -0.2em;
}

.mv__catch-tight {
  letter-spacing: -0.1em;
}

.mv__text {
  margin-top: 14px;
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.9;
  letter-spacing: 0.04em;
}
@media (min-width: 768px) {
  .mv__text {
    margin-top: 18px;
    font-size: 1.8rem;
    line-height: 1.9;
  }
}
@media (min-width: 1080px) {
  .mv__text {
    font-size: 2.2rem;
    font-weight: 900;
    letter-spacing: 0.08em;
  }
}

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

.mv__note {
  margin-top: 4px;
  font-size: 1.1rem;
  font-weight: 500;
  line-height: normal;
}
@media (min-width: 768px) {
  .mv__note {
    margin-top: 12px;
    font-size: 1.3rem;
  }
}
@media (min-width: 1080px) {
  .mv__note {
    margin-top: 18px;
    font-size: 1.4rem;
  }
}

.mv__slider {
  position: relative;
  overflow: hidden;
}

.mv__track {
  display: flex;
  width: max-content;
  animation: mv-slide 50s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
  .mv__track {
    animation: none;
  }
}

@keyframes mv-slide {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}

.mv__slide {
  flex-shrink: 0;
  height: 23.5rem;
  aspect-ratio: 673 / 511;
  margin-right: 7px;
}
@media (min-width: 768px) {
  .mv__slide {
    height: 36rem;
    margin-right: 12px;
  }
}
@media (min-width: 1080px) {
  .mv__slide {
    height: 51.1rem;
    margin-right: 16px;
  }
}

.mv__slide--narrow {
  aspect-ratio: 587 / 511;
}

.mv__slide img {
  height: 100%;
  object-fit: cover;
}

/* ---------- model（AEI MODEL） ---------- */
.model {
  position: relative;
  overflow: hidden;
  background: var(--color-green) url("../img/top/model-bg.webp") center / cover no-repeat;
  color: var(--color-white);
}

.model__inner {
  position: relative;
  max-width: 60rem;
  margin-inline: auto;
  padding: 56px 20px 66px;
}
@media (min-width: 1080px) {
  .model__inner {
    max-width: 144rem;
    aspect-ratio: 1440 / 1048;
    padding: 0;
  }
}

.model__line {
  display: none;
}
@media (min-width: 1080px) {
  .model__line {
    display: block;
    position: absolute;
    top: -12.03%;
    left: -36.94%;
    width: 168.75%;
  }
}

.model__body {
  position: relative;
  z-index: var(--z-index-base);
}
@media (min-width: 1080px) {
  .model__body {
    position: absolute;
    top: 14.98%;
    left: 58.54%;
  }
}

.model__heading {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.model__label {
  font-family: var(--font-goudy);
  font-size: 1.4rem;
  line-height: normal;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.model__title {
  font-size: 3.2rem;
  font-weight: 700;
  line-height: 1.3;
}
@media (min-width: 1080px) {
  .model__title {
    font-size: min(5.6rem, 3.89vw);
  }
}

.model__text {
  margin-top: 24px;
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 2.1;
}
@media (min-width: 1080px) {
  .model__text {
    margin-top: min(10rem, 6.94vw);
    font-size: min(2rem, 1.39vw);
    line-height: 3;
  }
}

.model__cycle {
  position: relative;
  margin-top: 40px;
}
@media (min-width: 1080px) {
  .model__cycle {
    position: absolute;
    top: 13.84%;
    left: 12.5%;
    width: 46.07%;
    margin-top: 0;
  }
}

.model__line-sp {
  position: absolute;
  top: -4.16%;
  left: -42.3%;
  width: 264.5%;
}
@media (min-width: 1080px) {
  .model__line-sp {
    display: none;
  }
}

.model__list {
  position: relative;
  aspect-ratio: 335 / 538.5;
}
@media (min-width: 1080px) {
  .model__list {
    aspect-ratio: 663.45 / 842.45;
  }
}

.model__item {
  position: absolute;
  width: 53.28%;
}
@media (min-width: 1080px) {
  .model__item {
    width: 40.76%;
  }
}

.model__item:nth-child(1) {
  top: 0;
  left: 0;
}

.model__item:nth-child(2) {
  top: 22.28%;
  left: 46.72%;
}
@media (min-width: 1080px) {
  .model__item:nth-child(2) {
    top: 19.94%;
    left: 39.79%;
  }
}

.model__item:nth-child(3) {
  top: 44.57%;
  left: 0;
}
@media (min-width: 1080px) {
  .model__item:nth-child(3) {
    top: 50.92%;
    left: 17.18%;
  }
}

.model__item:nth-child(4) {
  top: 66.85%;
  left: 46.72%;
}
@media (min-width: 1080px) {
  .model__item:nth-child(4) {
    top: 67.89%;
    left: 59.23%;
  }
}

/* PCでは円がビューポート幅に応じて縮むため文字も追従させる */
@media (min-width: 1080px) {
  .model__item .cycle-circle__title {
    font-size: min(3.04rem, 2.11vw);
  }
}

@media (min-width: 1080px) {
  .model__item .cycle-circle__text {
    font-size: min(1.58rem, 1.1vw);
  }
}

/* ---------- top-news ---------- */
.top-news__inner {
  display: flex;
  flex-direction: column;
  max-width: 124rem;
  margin-inline: auto;
  padding: 56px 20px 64px;
}
@media (min-width: 1080px) {
  .top-news__inner {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    padding: 56px 20px;
  }
}

.top-news__head {
  display: contents;
}
@media (min-width: 1080px) {
  .top-news__head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 56px;
  }
}

.top-news__more {
  order: 1;
  align-self: flex-end;
  margin-top: 28px;
}
@media (min-width: 1080px) {
  .top-news__more {
    align-self: flex-start;
    margin-top: 0;
  }
}

.top-news__list {
  border-top: 1px solid var(--color-divider);
}
@media (min-width: 1080px) {
  .top-news__list {
    display: flex;
    flex-direction: column;
    gap: 42px;
    width: 67.67%;
    max-width: 81.2rem;
    padding-top: 80px;
    border-top: none;
  }
}

.top-news__item {
  border-bottom: 1px solid var(--color-divider);
}
@media (min-width: 1080px) {
  .top-news__item {
    padding-bottom: 42px;
  }
}

/* ---------- entrance ---------- */
.entrance {
  padding: 24px 20px 40px;
}
@media (min-width: 1080px) {
  .entrance {
    padding: 106px 0 102px;
  }
}

.entrance__inner {
  position: relative;
  max-width: 56rem;
  margin-inline: auto;
  padding: 48px 17px 76px;
}
@media (min-width: 1080px) {
  .entrance__inner {
    max-width: 144rem;
    padding: 66px 0 98px;
  }
}
.entrance__inner::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: var(--color-entrance);
  content: "";
}
@media (min-width: 1080px) {
  .entrance__inner::before {
    right: 11.39%;
    left: 11.39%;
  }
}

.entrance__title {
  position: relative;
}

.entrance__list {
  display: flex;
  position: relative;
  flex-direction: column;
  gap: 32px;
}
@media (min-width: 1080px) {
  .entrance__list {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0;
    margin-top: 14px;
  }
}

@media (min-width: 1080px) {
  .entrance__item {
    width: 46.18%;
  }
}

@media (min-width: 1080px) {
  .entrance__item--family {
    width: 46.04%;
    margin-top: 119px;
  }
}

.entrance-card {
  display: block;
  overflow: hidden;
  background-color: var(--color-white);
  box-shadow: 4.6px 4.6px 9.6px 0 color-mix(in srgb, #495821 21%, transparent);
  transition: box-shadow 0.3s, transform 0.3s;
}
@media (min-width: 1080px) {
  .entrance-card {
    box-shadow: 9px 9px 18.6px 0 color-mix(in srgb, #495821 21%, transparent);
  }
}
@media (any-hover: hover) {
  .entrance-card:hover {
    box-shadow: none;
    transform: translate(4px, 4px);
  }
}
.entrance-card:focus-visible {
  box-shadow: none;
  transform: translate(4px, 4px);
}

.entrance-card__image {
  overflow: hidden;
  aspect-ratio: 665 / 329;
}

.entrance-card--family .entrance-card__image {
  aspect-ratio: 301 / 124.5;
}
@media (min-width: 1080px) {
  .entrance-card--family .entrance-card__image {
    aspect-ratio: 663 / 294.8;
  }
}

.entrance-card__image img {
  height: 100%;
  object-fit: cover;
}

.entrance-card__body {
  display: flex;
  align-items: center;
  padding: 10px 16px;
  background-color: var(--color-white);
  transition: background-color 0.3s, color 0.3s;
}
@media (min-width: 1080px) {
  .entrance-card__body {
    padding: 22.6px 36px;
  }
}
@media (any-hover: hover) {
  .entrance-card:hover .entrance-card__body {
    background-color: var(--color-green-deep);
    color: var(--color-white);
  }
}
.entrance-card:focus-visible .entrance-card__body {
  background-color: var(--color-green-deep);
  color: var(--color-white);
}

.entrance-card--family .entrance-card__body {
  padding: 11.7px 18.7px;
}
@media (min-width: 1080px) {
  .entrance-card--family .entrance-card__body {
    padding: 22.6px 36px;
  }
}

.entrance-card__title {
  display: flex;
  flex: 1;
  flex-direction: column;
  font-size: 1.64rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}
@media (min-width: 1080px) {
  .entrance-card__title {
    font-size: min(3.625rem, 2.52vw);
  }
}

.entrance-card--family .entrance-card__title {
  font-size: 1.87rem;
}
@media (min-width: 1080px) {
  .entrance-card--family .entrance-card__title {
    font-size: min(3.614rem, 2.51vw);
  }
}

.entrance-card__sub {
  font-size: 1.24rem;
}
@media (min-width: 1080px) {
  .entrance-card__sub {
    font-size: min(2.4rem, 1.67vw);
  }
}

.entrance-card__icon {
  display: flex;
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  width: 2.05rem;
  height: 2.05rem;
  border: 1px solid var(--color-green-deep);
  border-radius: 50%;
  background-color: var(--color-green-deep);
  color: var(--color-white);
  transition: background-color 0.3s, border-color 0.3s;
}
.entrance-card__icon::before {
  display: block;
  width: 42%;
  height: 30%;
  background-color: currentColor;
  mask: url("../img/common/icon-arrow.svg") center / contain no-repeat;
  content: "";
}
@media (min-width: 1080px) {
  .entrance-card__icon {
    width: 4.53rem;
    height: 4.53rem;
  }
}
@media (any-hover: hover) {
  .entrance-card:hover .entrance-card__icon {
    border-color: var(--color-white);
    background-color: transparent;
  }
}
.entrance-card:focus-visible .entrance-card__icon {
  border-color: var(--color-white);
  background-color: transparent;
}

.entrance-card--family .entrance-card__icon {
  width: 2.34rem;
  height: 2.34rem;
}
@media (min-width: 1080px) {
  .entrance-card--family .entrance-card__icon {
    width: 4.52rem;
    height: 4.52rem;
  }
}

/* ---------- vision ---------- */
.vision {
  overflow: hidden;
  background-color: var(--color-vision);
}

.vision__inner {
  position: relative;
  max-width: 60rem;
  min-height: 51.5rem;
  margin-inline: auto;
  padding: 56px 20px;
}
@media (min-width: 1080px) {
  .vision__inner {
    max-width: 144rem;
    min-height: 64.5rem;
    padding: 154px 0 0 11.53%;
  }
}

.vision__body {
  position: relative;
  z-index: var(--z-index-base);
}

.vision__text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .vision__text {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

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

.vision__more {
  margin-top: 28px;
}
@media (min-width: 1080px) {
  .vision__more {
    margin-top: 56px;
  }
}

/* SPは右端基準（375pxで Figma と同じ位置）。768px以上は上下中央に置き、1440pxではセクションより高くなって上下が少し切れる */
.vision__map {
  position: absolute;
  top: 112px;
  right: -11px;
  width: 32.8rem;
}
@media (min-width: 768px) {
  .vision__map {
    top: 50%;
    right: 0;
    width: 36rem;
    transform: translateY(-50%);
  }
}
@media (min-width: 1080px) {
  .vision__map {
    right: auto;
    left: 43.33%;
    width: 45.52%;
    max-width: 65.6rem;
  }
}

/* ==========================================================================
   AEI事業について
   ========================================================================== */

/* ---------- about-model ---------- */
.about-model {
  overflow: hidden;
}

.about-model__inner {
  display: flex;
  flex-direction: column;
  gap: 40px;
  max-width: 60rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-model__inner {
    gap: 56px;
    max-width: 124rem;
    padding: 56px 20px;
  }
}

.about-model__inner > .section-title {
  margin-bottom: -40px;
}
@media (min-width: 1080px) {
  .about-model__inner > .section-title {
    margin-bottom: -56px;
  }
}

.about-model__list {
  display: grid;
  position: relative;
  grid-template-columns: repeat(2, 1fr);
  gap: 11.67px 15.66px;
}
@media (min-width: 1080px) {
  .about-model__list {
    grid-template-columns: repeat(4, 1fr);
    gap: 45px;
  }
}
.about-model__list::before,
.about-model__list::after {
  position: absolute;
  height: 28px;
  background-color: var(--color-blue-line);
  content: "";
}
.about-model__list::before {
  top: 20.2%;
  right: -20px;
  left: 7.8%;
}
@media (min-width: 1080px) {
  .about-model__list::before {
    top: calc(50% - 14px);
    right: 10.37%;
    left: 6.86%;
  }
}
.about-model__list::after {
  top: 74.5%;
  right: 8.7%;
  left: -20px;
}
@media (min-width: 1080px) {
  .about-model__list::after {
    display: none;
  }
}

.about-model__item {
  position: relative;
  z-index: var(--z-index-base);
}

.about-model__item .cycle-circle__title {
  font-size: 1.83rem;
}
@media (min-width: 768px) {
  .about-model__item .cycle-circle__title {
    font-size: 2.8rem;
  }
}
@media (min-width: 1080px) {
  .about-model__item .cycle-circle__title {
    font-size: 3.04rem;
  }
}

.about-model__item .cycle-circle__text {
  font-size: 1.05rem;
}
@media (min-width: 768px) {
  .about-model__item .cycle-circle__text {
    font-size: 1.5rem;
  }
}
@media (min-width: 1080px) {
  .about-model__item .cycle-circle__text {
    font-size: 1.58rem;
  }
}

.about-model__cards {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
@media (min-width: 1080px) {
  .about-model__cards {
    flex-direction: row;
    gap: 32px;
  }
}

@media (min-width: 1080px) {
  .about-model__card {
    flex: 1;
    /* 見出しの nowrap でカード幅が広がらないようにし、3枚の幅を揃える */
    min-width: 0;
  }
}

.about-model__catch {
  color: var(--color-green-heading);
  font-size: 2.4rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}
@media (min-width: 1080px) {
  .about-model__catch {
    font-size: 4.6rem;
  }
}

.about-model__note {
  color: var(--color-green-heading);
  font-size: 1.2rem;
  font-weight: 500;
  line-height: normal;
  text-align: center;
}
@media (min-width: 1080px) {
  .about-model__note {
    font-size: 1.6rem;
  }
}

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

/* ---------- about-why ---------- */
.about-why {
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

.about-why__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-why__inner {
    padding: 56px 20px;
  }
}

.about-why__label {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.5;
}
@media (min-width: 1080px) {
  .about-why__label {
    font-size: 2.4rem;
  }
}

.about-why__title {
  font-family: var(--font-en), var(--font-gothic);
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.7;
}
@media (min-width: 1080px) {
  .about-why__title {
    font-size: 4.2rem;
    line-height: 1.8;
  }
}

.about-why__body {
  display: flex;
  flex-direction: column;
  gap: 30px;
  margin-top: 24px;
}
@media (min-width: 1080px) {
  .about-why__body {
    gap: 36px;
    margin-top: 42px;
  }
}

.about-why__text {
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 2;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .about-why__text {
    font-size: 2rem;
    line-height: 1.8;
    letter-spacing: 0.05em;
  }
}

/* ---------- about-business ---------- */
.about-business__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-business__inner {
    padding: 56px 20px;
  }
}

.about-business__catch {
  color: var(--color-black);
  font-size: 2.8rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}
@media (min-width: 1080px) {
  .about-business__catch {
    font-size: 5.6rem;
  }
}

.about-business__list {
  display: flex;
  position: relative;
  flex-direction: column;
  align-items: center;
  gap: 78px;
  margin-top: 24px;
}
@media (min-width: 768px) {
  .about-business__list {
    flex-direction: row;
    justify-content: center;
    align-items: stretch;
    gap: 18.7rem;
  }
}
@media (min-width: 1080px) {
  .about-business__list {
    margin-top: 32px;
  }
}
.about-business__list::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 4.3rem;
  height: 5.4rem;
  background: url("../img/about/icon-cross.svg") center / contain no-repeat;
  transform: translate(-50%, -50%);
  content: "";
}
@media (min-width: 768px) {
  .about-business__list::after {
    width: 12.3rem;
    height: 15.4rem;
  }
}

.about-business__item {
  width: 100%;
}
@media (min-width: 768px) {
  .about-business__item {
    flex: 1;
    max-width: 39.2rem;
  }
}

/* li 内の a がカード本体のため、li の高さいっぱいに伸ばして2枚の高さを揃える */
.about-business__card {
  height: 100%;
}

.about-business__card .photo-card__text {
  font-weight: 700;
  text-align: left;
}

/* ---------- about-philosophy ---------- */
.about-philosophy__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-philosophy__inner {
    padding: 56px 20px;
  }
}

.about-philosophy__lead {
  color: var(--color-black);
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .about-philosophy__lead {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.about-philosophy__box {
  margin-top: 24px;
  padding: 32px 24px;
  border-radius: 15px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
}
@media (min-width: 1080px) {
  .about-philosophy__box {
    margin-top: 56px;
    padding: 56px;
  }
}

.about-philosophy__list {
  display: flex;
  flex-direction: column;
  gap: 28px;
  max-width: 90rem;
  margin-inline: auto;
}
@media (min-width: 1080px) {
  .about-philosophy__list {
    gap: 32px;
  }
}

.about-philosophy__row {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
@media (min-width: 1080px) {
  .about-philosophy__row {
    flex-direction: row;
    gap: 0;
  }
}

.about-philosophy__term {
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .about-philosophy__term {
    flex-shrink: 0;
    width: 25rem;
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.about-philosophy__desc {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .about-philosophy__desc {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- about-nationwide ---------- */
.about-nationwide {
  scroll-margin-top: 60px;
}
@media (min-width: 1080px) {
  .about-nationwide {
    scroll-margin-top: 82px;
  }
}

.about-nationwide__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-nationwide__inner {
    padding: 56px 20px;
  }
}

.about-nationwide__lead {
  color: var(--color-black);
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .about-nationwide__lead {
    max-width: 104.7rem;
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.about-nationwide__lead-strong {
  font-weight: 700;
}

.about-nationwide__body {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-top: 24px;
}
@media (min-width: 1080px) {
  .about-nationwide__body {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    margin-top: 0;
  }
}

.about-nationwide__map {
  width: 30rem;
  max-width: 100%;
  margin-inline: auto;
}
@media (min-width: 1080px) {
  .about-nationwide__map {
    flex-shrink: 0;
    width: 44.48%;
    max-width: 50rem;
    margin: 32px 0 0 1.9%;
  }
}

.about-nationwide__list {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
@media (min-width: 1080px) {
  .about-nationwide__list {
    width: 50.3%;
  }
}

/* ---------- about-message ---------- */
.about-message {
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

.about-message__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-message__inner {
    padding: 56px 20px;
  }
}

.about-message__body {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
@media (min-width: 768px) {
  .about-message__body {
    flex-direction: row;
    align-items: flex-start;
    gap: 56px;
  }
}

.about-message__profile {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
@media (min-width: 768px) {
  .about-message__profile {
    flex-shrink: 0;
    align-items: flex-start;
    gap: 8px;
    width: 38%;
    max-width: 38rem;
  }
}

.about-message__photo {
  width: 26rem;
  aspect-ratio: 380 / 431.5;
  overflow: hidden;
}
@media (min-width: 768px) {
  .about-message__photo {
    width: 100%;
  }
}

.about-message__photo img {
  height: 100%;
  object-fit: cover;
}

.about-message__name {
  display: flex;
  flex-direction: column;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.05em;
  text-align: center;
}
@media (min-width: 768px) {
  .about-message__name {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
    text-align: left;
  }
}

.about-message__org {
  font-size: 1.2rem;
  font-weight: 500;
}
@media (min-width: 768px) {
  .about-message__org {
    font-size: 1.6rem;
  }
}

.about-message__text-wrap {
  display: flex;
  flex-direction: column;
  gap: 28px;
}
@media (min-width: 768px) {
  .about-message__text-wrap {
    flex: 1;
    gap: 29px;
    max-width: 65.5rem;
  }
}

.about-message__text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 2;
  letter-spacing: 0.07em;
}
@media (min-width: 768px) {
  .about-message__text {
    font-size: 1.6rem;
    line-height: 1.8;
    letter-spacing: 0.06em;
  }
}

/* ---------- about-company ---------- */
.about-company__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 56px;
}
@media (min-width: 1080px) {
  .about-company__inner {
    padding: 56px 20px;
  }
}

/* ==========================================================================
   ホークレア
   ========================================================================== */

/* ---------- hokulea-mv ---------- */
.hokulea-mv {
  display: flex;
  position: relative;
  align-items: center;
  height: 36rem;
  overflow: hidden;
  background-color: var(--color-blue);
}
@media (min-width: 768px) {
  .hokulea-mv {
    height: 48rem;
  }
}
@media (min-width: 1080px) {
  .hokulea-mv {
    height: 58rem;
  }
}
.hokulea-mv::after {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: linear-gradient(transparent, color-mix(in srgb, #001a26 45%, transparent));
  content: "";
}
@media (min-width: 1080px) {
  .hokulea-mv::after {
    display: none;
  }
}

.hokulea-mv__video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hokulea-mv__content {
  position: relative;
  z-index: var(--z-index-base);
  width: 100%;
  max-width: 124rem;
  margin-inline: auto;
  padding: 0 20px;
  color: var(--color-white);
  text-shadow: 0 0 7.1px color-mix(in srgb, #04595e 55%, transparent);
}
@media (min-width: 1080px) {
  .hokulea-mv__content {
    max-width: none;
    padding: 0 0 0 11.8%;
  }
}

.hokulea-mv__label {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 1.2rem;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.08em;
}
@media (min-width: 1080px) {
  .hokulea-mv__label {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}
.hokulea-mv__label::before,
.hokulea-mv__label::after {
  display: block;
  width: 24px;
  height: 1px;
  background-color: var(--color-white);
  content: "";
}
@media (min-width: 1080px) {
  .hokulea-mv__label::before,
  .hokulea-mv__label::after {
    width: 33px;
  }
}

.hokulea-mv__title {
  margin-top: 6px;
  font-size: 2.8rem;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.03em;
}
@media (min-width: 768px) {
  .hokulea-mv__title {
    font-size: 4.8rem;
  }
}
@media (min-width: 1080px) {
  .hokulea-mv__title {
    margin-top: 0;
    font-size: 6.8rem;
    letter-spacing: 0.01em;
  }
}

.hokulea-mv__catch {
  margin-top: 40px;
  font-size: 1.9rem;
  line-height: normal;
  letter-spacing: 0.04em;
}
@media (min-width: 1080px) {
  .hokulea-mv__catch {
    margin: 80px 0 0 33px;
    font-size: 2.8rem;
    letter-spacing: 0.03em;
  }
}

.hokulea-mv__text {
  margin-top: 8px;
  font-size: 1.3rem;
  line-height: 1.8;
  letter-spacing: 0.04em;
}
@media (min-width: 1080px) {
  .hokulea-mv__text {
    margin-top: 11px;
    font-size: 2rem;
  }
}

.hokulea-mv__text-line {
  display: block;
}
@media (min-width: 1080px) {
  .hokulea-mv__text-line {
    margin-left: 98px;
  }
  .hokulea-mv__text-line + .hokulea-mv__text-line {
    margin-left: 189px;
  }
}

/* ---------- hokulea-voice-intro ---------- */
.hokulea-voice-intro {
  background: url("../img/hokulea/bg-watercolor-voice.webp") left top / 60% auto no-repeat;
}
@media (min-width: 1080px) {
  .hokulea-voice-intro {
    background-size: 47.6% auto;
  }
}

.hokulea-voice-intro__inner {
  padding: 40px 0;
}
@media (min-width: 1080px) {
  .hokulea-voice-intro__inner {
    padding: 50px 20px;
  }
}

/* ---------- hokulea-about ---------- */
/* 写真は左右だけ切り、上は Figma どおり前のセクションに重ねる */
/* 水彩はSP・PCとも専用画像をセクション下端基準・幅100%で敷く（セクションが高くなっても下端まで届く） */
.hokulea-about {
  position: relative;
  overflow-x: clip;
  background: url("../img/hokulea/bg-watercolor-about-sp.webp") center bottom / 100% auto no-repeat;
}
@media (min-width: 1080px) {
  .hokulea-about {
    background-image: url("../img/hokulea/bg-watercolor-about.webp");
  }
}

/* 写真のレイヤーは上端基準。下端基準にすると狭いPC幅で写真が本文に重なるため */
.hokulea-about__decor {
  display: none;
}
@media (min-width: 1080px) {
  .hokulea-about__decor {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    aspect-ratio: 1440 / 867;
  }
}

.hokulea-about__photo {
  position: absolute;
}

.hokulea-about__photo--flower {
  top: -16.15%;
  left: 0;
  width: 34.03%;
}

.hokulea-about__photo--tent {
  top: -17.19%;
  left: 69.31%;
  width: 30.69%;
}

.hokulea-about__photo--feet {
  top: 64.48%;
  left: 2.01%;
  width: 26.6%;
}

.hokulea-about__photo--hands {
  top: 44.52%;
  left: 70.62%;
  width: 29.03%;
}

.hokulea-about__inner {
  position: relative;
  max-width: 60rem;
  margin-inline: auto;
  padding: 48px 20px 0;
}
@media (min-width: 1080px) {
  .hokulea-about__inner {
    max-width: none;
    /* 1440px超では写真レイヤー（1440:867）に合わせて高さも伸ばす */
    min-height: max(86.7rem, 60.21vw);
    padding: 30px 20px 116px;
  }
}

.hokulea-about__body {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: var(--color-text);
  text-align: center;
}

.hokulea-about__text {
  max-width: 47.4rem;
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 2.1;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-about__text {
    font-size: 1.6rem;
    line-height: 1.8;
    letter-spacing: 0.06em;
  }
}

.hokulea-about__text + .hokulea-about__text {
  margin-top: 2.1em;
}
@media (min-width: 1080px) {
  .hokulea-about__text + .hokulea-about__text {
    margin-top: 1.8em;
  }
}

.hokulea-about__text--spaced.hokulea-about__text--spaced {
  margin-top: 4.2em;
}
@media (min-width: 1080px) {
  .hokulea-about__text--spaced.hokulea-about__text--spaced {
    margin-top: 3.6em;
  }
}

.hokulea-about__catch {
  margin-top: 48px;
  font-family: var(--font-shippori);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 2.7;
}
@media (min-width: 1080px) {
  .hokulea-about__catch {
    margin-top: 32px;
    font-size: 2.258rem;
    line-height: 1.8;
  }
}

@media (min-width: 1080px) {
  .hokulea-about__br-sp {
    display: none;
  }
}

/* Figma（375px基準）どおり、上は本文に16px重ね、下は14pxの余白を幅基準の比率で取る */
.hokulea-about__photos-sp {
  margin-top: -4.27%;
  padding-bottom: 3.73%;
}
@media (min-width: 1080px) {
  .hokulea-about__photos-sp {
    display: none;
  }
}

/* ---------- hokulea-instagram ---------- */
.hokulea-instagram__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px;
}
@media (min-width: 1080px) {
  .hokulea-instagram__inner {
    padding: 56px 20px;
  }
}

.hokulea-instagram__feed {
  max-width: 76.2rem;
  margin-inline: auto;
}

/* Instagram 未連携時の案内（ログイン中の管理者にだけ表示。WordPress版で追加） */
.hokulea-instagram__notice {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 24px;
  border: 2px dashed var(--color-required);
  background-color: var(--color-white);
  color: var(--color-text);
  font-size: 1.4rem;
  line-height: 1.8;
}

.hokulea-instagram__notice-title {
  color: var(--color-required);
  font-weight: 700;
}

.hokulea-instagram__notice a {
  color: var(--color-link);
  text-decoration: underline;
}

/* ---------- hokulea-howto ---------- */
.hokulea-howto {
  background-color: var(--color-hokulea-sky);
}

.hokulea-howto__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px;
}
@media (min-width: 1080px) {
  .hokulea-howto__inner {
    padding: 56px 20px;
  }
}

.hokulea-howto__list {
  display: flex;
  flex-direction: column;
  gap: 40px;
  max-width: 60rem;
  margin-inline: auto;
}
@media (min-width: 1080px) {
  .hokulea-howto__list {
    flex-direction: row;
    gap: 0;
    max-width: none;
  }
}

.hokulea-howto__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: var(--color-text);
}
@media (min-width: 1080px) {
  .hokulea-howto__item {
    flex: 1;
    gap: 16px;
  }
}

.hokulea-howto__image {
  width: 100%;
  overflow: hidden;
  border-radius: 15px;
  aspect-ratio: 380 / 264;
}
@media (min-width: 1080px) {
  .hokulea-howto__image {
    width: 95%;
  }
}

.hokulea-howto__image img {
  height: 100%;
  object-fit: cover;
}

.hokulea-howto__label {
  position: relative;
  font-size: 2.2rem;
  font-weight: 400;
  line-height: normal;
  letter-spacing: 0.05em;
}
@media (min-width: 1080px) {
  .hokulea-howto__label {
    font-size: 2.8rem;
    letter-spacing: 0.04em;
  }
}
.hokulea-howto__label::before {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: -1;
  width: calc(100% + 6rem);
  min-width: 13.4rem;
  max-width: 22.3rem;
  height: 4.2rem;
  background: url("../img/hokulea/brush.svg") center / 100% 100% no-repeat;
  opacity: 0.52;
  transform: translate(-50%, -50%) rotate(-3.87deg);
  content: "";
}

.hokulea-howto__item .hokulea-howto__label {
  isolation: isolate;
}

.hokulea-howto__lead {
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.06em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-howto__lead {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.hokulea-howto__text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-howto__text {
    width: 30rem;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- hokulea-facility ---------- */
/* SPは SP専用の水彩を上端基準・幅100%で敷く */
.hokulea-facility {
  background: url("../img/hokulea/bg-watercolor-facility-sp.webp") center top / 100% auto no-repeat;
}
@media (min-width: 768px) {
  .hokulea-facility {
    background: url("../img/hokulea/bg-watercolor-facility.webp") center / cover no-repeat;
  }
}

.hokulea-facility__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px;
}
@media (min-width: 1080px) {
  .hokulea-facility__inner {
    padding: 56px 20px;
  }
}

.hokulea-facility__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}
@media (min-width: 768px) {
  .hokulea-facility__list {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
  }
}

.hokulea-facility__item {
  aspect-ratio: 389 / 282;
  overflow: hidden;
}

.hokulea-facility__item img {
  height: 100%;
  object-fit: cover;
}

/* ---------- hokulea-people（スタッフ・声の共通背景） ---------- */
/* 砂浜は上端が白に溶ける画像。VOICE の下端に合わせて置き、高さが変わっても途切れないようにする */
.hokulea-people {
  background: url("../img/hokulea/bg-sand.webp") center bottom / 300% auto no-repeat;
}
@media (min-width: 768px) {
  .hokulea-people {
    background-size: max(100%, 1440px) auto;
  }
}

/* ---------- hokulea-staff ---------- */
/* 水彩の装飾は画面端で左右だけ切り、横スクロールを出さない */
.hokulea-staff {
  overflow-x: clip;
}

.hokulea-staff__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 39px 30px 0;
}
@media (min-width: 1080px) {
  .hokulea-staff__inner {
    padding: 56px 20px;
  }
}

.hokulea-staff__list {
  display: flex;
  flex-direction: column;
  gap: 32px;
}
@media (min-width: 1080px) {
  .hokulea-staff__list {
    flex-direction: row;
    align-items: center;
    gap: 56px;
  }
}

/* 1列表示のタブレット幅で本文と水彩が広がりすぎないよう最大幅を設ける */
.hokulea-staff__item {
  display: flex;
  position: relative;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  width: 100%;
  max-width: 40rem;
  margin-inline: auto;
}
@media (min-width: 1080px) {
  .hokulea-staff__item {
    flex: 1;
    flex-direction: row;
    max-width: none;
    margin-inline: 0;
  }
}
/* SP・タブレットは Figma（カード幅315px基準）の比率で、カード下端に合わせて配置する */
.hokulea-staff__item::before {
  position: absolute;
  bottom: 0;
  left: -23.2%;
  z-index: 0;
  width: 140%;
  aspect-ratio: 515 / 326;
  background: url("../img/hokulea/staff-watercolor01.webp") center / contain no-repeat;
  mix-blend-mode: multiply;
  transform: translateY(11%);
  content: "";
}
@media (min-width: 1080px) {
  .hokulea-staff__item::before {
    top: 0;
    bottom: auto;
    left: 118px;
    width: 51.5rem;
    transform: none;
  }
}

.hokulea-staff__item--second::before {
  left: -25.4%;
  background-image: url("../img/hokulea/staff-watercolor02.webp");
  aspect-ratio: 515 / 306;
  transform: translateY(6.7%);
}
@media (min-width: 1080px) {
  .hokulea-staff__item--second::before {
    top: -39px;
    left: 118px;
    transform: none;
  }
}

.hokulea-staff__photo {
  position: relative;
  flex-shrink: 0;
  width: 20rem;
  overflow: hidden;
  border-radius: 50%;
}

.hokulea-staff__body {
  display: flex;
  position: relative;
  flex-direction: column;
  align-items: center;
  color: var(--color-text);
}
@media (min-width: 1080px) {
  .hokulea-staff__body {
    flex: 1;
    align-items: flex-start;
  }
}

.hokulea-staff__role {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-staff__role {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.hokulea-staff__name {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 4px;
  color: var(--color-hokulea-text);
  font-family: var(--font-shippori);
  font-size: 2rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.05em;
}
@media (min-width: 1080px) {
  .hokulea-staff__name {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.hokulea-staff__name-en {
  color: var(--color-blue);
  font-family: var(--font-noto-sans);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 20px;
  letter-spacing: 0;
}

.hokulea-staff__text {
  padding-top: 16px;
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-staff__text {
    font-size: 1.6rem;
    letter-spacing: 0.04em;
  }
}

/* ---------- hokulea-voice ---------- */
/* スタッフの水彩装飾より手前に描き、カードの上に重ならないようにする */
.hokulea-voice {
  position: relative;
}

.hokulea-voice__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 39px 30px;
}
@media (min-width: 1080px) {
  .hokulea-voice__inner {
    padding: 56px 20px;
  }
}

/* ---------- hokulea-access ---------- */
.hokulea-access {
  background-color: var(--color-hokulea-bg);
}

.hokulea-access__inner {
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px;
}
@media (min-width: 1080px) {
  .hokulea-access__inner {
    padding: 56px 20px;
  }
}

.hokulea-access__body {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
@media (min-width: 1080px) {
  .hokulea-access__body {
    flex-direction: row;
  }
}

.hokulea-access__map {
  height: 26rem;
}
@media (min-width: 1080px) {
  .hokulea-access__map {
    flex: 1;
    height: auto;
  }
}

.hokulea-access__iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.hokulea-access__info {
  padding: 32px 20px;
  border-radius: 15px;
  background-color: var(--color-white);
  color: var(--color-hokulea-text);
}
@media (min-width: 1080px) {
  .hokulea-access__info {
    flex-shrink: 0;
    width: 49%;
    padding: 32px;
  }
}

.hokulea-access__heading {
  font-size: 1.6rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .hokulea-access__heading {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.hokulea-access__list {
  padding-top: 24px;
}

.hokulea-access__row {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 0;
  border-bottom: 1px solid var(--color-hokulea-line);
  font-size: 1.4rem;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-access__row {
    flex-direction: row;
    gap: 24px;
    padding: 6px 0;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.hokulea-access__term {
  flex-shrink: 0;
  color: var(--color-blue);
  font-family: var(--font-shippori);
  font-weight: 700;
}
@media (min-width: 1080px) {
  .hokulea-access__term {
    width: 10rem;
  }
}

.hokulea-access__desc {
  font-weight: 500;
}

.hokulea-access__desc-note {
  margin-left: 1em;
  font-size: 1.1rem;
}
@media (min-width: 1080px) {
  .hokulea-access__desc-note {
    font-size: 1.2rem;
  }
}

.hokulea-access__note {
  margin-top: 16px;
  padding: 24px;
  border-radius: 16px;
  background-color: var(--color-hokulea-bg);
  color: var(--color-hokulea-note);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-access__note {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- hokulea-calendar ---------- */
/* 下の写真群（PC）が上に重なってくるため、文字やボタンを手前に描く */
.hokulea-calendar {
  position: relative;
  z-index: var(--z-index-base);
}

.hokulea-calendar__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px;
}
@media (min-width: 1080px) {
  .hokulea-calendar__inner {
    padding: 56px 20px;
  }
}

.hokulea-calendar__inner > .heading-hokulea {
  margin-bottom: -24px;
}

.hokulea-calendar__frame {
  width: 100%;
  max-width: 90rem;
  height: 49.1rem;
  margin-top: 40px;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, #3b5240 15%, transparent);
  border-radius: 16px;
}

.hokulea-calendar__iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.hokulea-calendar__text {
  color: var(--color-hokulea-note);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-calendar__text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

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

/* ---------- hokulea-photos ---------- */
.hokulea-photos__picture {
  display: block;
}
/* PC画像は Figma のはみ出し（上に138.8px / 1440px）を含むため、幅基準の比率で上に重ねる */
@media (min-width: 768px) {
  .hokulea-photos__picture {
    margin-top: -9.64%;
  }
}

/* ---------- hokulea-company（企業・自治体の皆さまへ） ---------- */
.hokulea-company {
  position: relative;
  overflow: hidden;
  background-color: var(--color-hokulea-company);
  scroll-margin-top: 60px;
}
@media (min-width: 1080px) {
  .hokulea-company {
    scroll-margin-top: 82px;
  }
}
.hokulea-company::before,
.hokulea-company::after {
  position: absolute;
  width: 69.8%;
  max-width: 100.5rem;
  aspect-ratio: 1005 / 1154;
  background-color: var(--color-hokulea-star);
  mask: url("../img/hokulea/bg-star.svg") center / contain no-repeat;
  content: "";
}
.hokulea-company::before {
  top: -101px;
  left: -7.4%;
}
.hokulea-company::after {
  top: 1529px;
  left: 47.7%;
}

.hokulea-company > * {
  position: relative;
  z-index: var(--z-index-base);
}

.hokulea-company__intro {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 72rem;
  margin-inline: auto;
  padding: 48px 20px 0;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-company__intro {
    padding-top: 56px;
  }
}

.hokulea-company__badge {
  padding: 1px 20px;
  border-radius: 50px;
  background-color: var(--color-white);
  color: var(--color-blue);
  font-size: 1.3rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-company__badge {
    padding: 1px 32px;
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.hokulea-company__intro > .heading-hokulea {
  margin-top: 16px;
  padding-bottom: 0;
}
@media (min-width: 1080px) {
  .hokulea-company__intro > .heading-hokulea {
    margin-top: 24px;
  }
}

.hokulea-company__lead {
  margin-top: 16px;
  color: var(--color-text);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-company__lead {
    margin-top: 24px;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.hokulea-company__chevron {
  display: block;
  width: 8.4rem;
  height: 3.1rem;
  margin-top: 40px;
  background: url("../img/hokulea/icon-chevron-down.svg") center / contain no-repeat;
}
@media (min-width: 1080px) {
  .hokulea-company__chevron {
    width: 14rem;
    height: 5.2rem;
    margin-top: 56px;
  }
}

/* ---------- hokulea-numbers ---------- */
.hokulea-numbers {
  max-width: 120rem;
  margin: 40px 20px 0;
  padding: 32px 16px;
  border-radius: 15px;
  background-color: var(--color-white);
  color: var(--color-text);
}
@media (min-width: 1240px) {
  .hokulea-numbers {
    margin: 56px auto 0;
  }
}
@media (min-width: 1080px) {
  .hokulea-numbers {
    padding: 32px;
  }
}

.hokulea-numbers__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px 8px;
}
@media (min-width: 1080px) {
  .hokulea-numbers__list {
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
  }
}

.hokulea-numbers__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
@media (min-width: 1080px) {
  .hokulea-numbers__item {
    gap: 16px;
  }
}

.hokulea-numbers__label {
  font-size: 1.3rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.08em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-numbers__label {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.hokulea-numbers__value {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.hokulea-numbers__icon {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 6rem;
  margin-bottom: -4px;
}
@media (min-width: 1080px) {
  .hokulea-numbers__icon {
    height: 10.8rem;
    margin-bottom: -16px;
  }
}

.hokulea-numbers__icon img {
  width: auto;
  height: 100%;
  padding: 4px 0;
}
@media (min-width: 1080px) {
  .hokulea-numbers__icon img {
    padding: 12px 0;
  }
}

.hokulea-numbers__num {
  font-size: 3.2rem;
  line-height: normal;
  letter-spacing: 0.035em;
}
@media (min-width: 1080px) {
  .hokulea-numbers__num {
    font-size: 6rem;
  }
}

.hokulea-numbers__unit {
  font-size: 1.8rem;
}
@media (min-width: 1080px) {
  .hokulea-numbers__unit {
    font-size: 3.31rem;
  }
}

.hokulea-numbers__note {
  margin-top: 4px;
  color: var(--color-blue);
  font-family: var(--font-noto-sans);
  font-size: 0.8rem;
  line-height: 1.4;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-numbers__note {
    margin-top: 8px;
    font-size: 1.2rem;
    line-height: 16px;
  }
}

.hokulea-numbers__basis {
  margin-top: 24px;
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.08em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-numbers__basis {
    margin-top: 56px;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- hokulea-partners ---------- */
.hokulea-partners {
  display: flex;
  flex-direction: column;
  gap: 16px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 72px 20px 62px;
}
@media (min-width: 1080px) {
  .hokulea-partners {
    gap: 56px;
    padding: 88px 52px 62px;
  }
}

.hokulea-partners > .heading-hokulea {
  margin-bottom: 16px;
}
@media (min-width: 1080px) {
  .hokulea-partners > .heading-hokulea {
    margin-bottom: -56px;
  }
}

/* ---------- hokulea-report ---------- */
.hokulea-report {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 124rem;
  margin-inline: auto;
  padding: 72px 20px 0;
}
@media (min-width: 1080px) {
  .hokulea-report {
    padding: 56px 52px 88px;
  }
}

.hokulea-report--lecture {
  padding: 56px 20px 64px;
}
@media (min-width: 1080px) {
  .hokulea-report--lecture {
    padding: 32px 52px 64px;
  }
}

.hokulea-report__lead {
  color: var(--color-text);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-report__lead {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.hokulea-report .post-list {
  width: 100%;
  margin-top: 20px;
}
@media (min-width: 1080px) {
  .hokulea-report .post-list {
    margin-top: 24px;
  }
}

.hokulea-report__more {
  margin-top: 20px;
}
@media (min-width: 1080px) {
  .hokulea-report__more {
    margin-top: 24px;
  }
}

/* ---------- hokulea-plan ---------- */
.hokulea-plan {
  max-width: 124rem;
  margin-inline: auto;
  padding: 72px 20px 64px;
}
@media (min-width: 1080px) {
  .hokulea-plan {
    padding: 88px 52px 88px;
  }
}

.hokulea-plan__list {
  display: flex;
  flex-direction: column;
  gap: 40px;
  margin-top: 8px;
}
@media (min-width: 1080px) {
  .hokulea-plan__list {
    flex-direction: row;
    gap: 24px;
    margin-top: 24px;
  }
}

@media (min-width: 1080px) {
  .hokulea-plan__item {
    flex: 1;
  }
}

.hokulea-plan__note {
  margin-top: 24px;
  color: var(--color-text);
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.08em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-plan__note {
    margin-top: 56px;
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- hokulea-lecture（講演・セミナー） ---------- */
.hokulea-lecture {
  position: relative;
  overflow: hidden;
  background-color: var(--color-hokulea-yellow);
}
.hokulea-lecture::before {
  position: absolute;
  top: -72px;
  left: 44.3%;
  width: 59.6%;
  max-width: 85.9rem;
  aspect-ratio: 1005 / 1154;
  background-color: var(--color-hokulea-star-yellow);
  mask: url("../img/hokulea/bg-star.svg") center / contain no-repeat;
  content: "";
}

.hokulea-lecture > * {
  position: relative;
}

.hokulea-lecture__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 124rem;
  margin-inline: auto;
  padding: 48px 20px 0;
}
@media (min-width: 1080px) {
  .hokulea-lecture__inner {
    padding: 88px 52px;
  }
}

.hokulea-lecture__lead,
.hokulea-lecture__note {
  color: var(--color-hokulea-dark);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-lecture__lead,
  .hokulea-lecture__note {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.hokulea-lecture__note {
  margin-top: 24px;
  font-size: 1.2rem;
}
@media (min-width: 1080px) {
  .hokulea-lecture__note {
    font-size: 1.6rem;
  }
}

.hokulea-lecture__body {
  display: flex;
  flex-direction: column;
  gap: 20px;
  width: 100%;
  margin-top: 20px;
}
@media (min-width: 1080px) {
  .hokulea-lecture__body {
    flex-direction: row-reverse;
    align-items: flex-start;
    gap: 24px;
    margin-top: 24px;
  }
}

.hokulea-lecture__photo {
  overflow: hidden;
  border-radius: 15px;
  aspect-ratio: 335 / 230;
}
@media (min-width: 1080px) {
  .hokulea-lecture__photo {
    flex-shrink: 0;
    width: 48.94%;
    margin-top: 37px;
    aspect-ratio: 556 / 448;
  }
}

/* 画像はPCの枠比率で作成。横長になるSPでは上端基準で切り、頭が切れないようにする */
.hokulea-lecture__photo img {
  height: 100%;
  object-fit: cover;
  object-position: center top;
}

.hokulea-lecture__themes {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
@media (min-width: 1080px) {
  .hokulea-lecture__themes {
    align-items: flex-start;
  }
}

.hokulea-lecture__badge {
  padding: 0 32px;
  border-radius: 32px;
  background-color: var(--color-blue);
  color: var(--color-white);
  font-size: 1.4rem;
  font-weight: 900;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-lecture__badge {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.hokulea-lecture__list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
}

.hokulea-lecture__item {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 24px 20px;
  border-radius: 15px;
  background-color: var(--color-white);
}
@media (min-width: 1080px) {
  .hokulea-lecture__item {
    padding: 24px;
  }
}

.hokulea-lecture__title {
  color: var(--color-blue);
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
  text-align: center;
}
@media (min-width: 1080px) {
  .hokulea-lecture__title {
    font-size: 2rem;
    letter-spacing: 0.05em;
    text-align: left;
  }
}

.hokulea-lecture__topic {
  color: var(--color-black);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .hokulea-lecture__topic {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}
.hokulea-lecture__topic::before {
  content: "・";
}

/* ==========================================================================
   お知らせ一覧
   ========================================================================== */
.news-archive__inner {
  display: flex;
  flex-direction: column;
  gap: 32px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 40px 20px 64px;
}
@media (min-width: 1080px) {
  .news-archive__inner {
    padding: 56px 20px;
  }
}

@media (min-width: 768px) {
  .news-archive__list {
    row-gap: 24px;
  }
}

.news-archive__pagination {
  padding-top: 8px;
}
@media (min-width: 1080px) {
  .news-archive__pagination {
    padding-top: 56px;
  }
}

/* 記事が1件もない時の表示（WordPress版で追加） */
.news-archive__empty {
  padding: 40px 0;
  font-size: 1.6rem;
  line-height: 1.8;
  text-align: center;
}

/* ---------- category-nav（カテゴリ絞り込み） ---------- */
.category-nav__list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 6px;
}
@media (min-width: 1080px) {
  .category-nav__list {
    gap: 16px;
  }
}

.category-nav__link {
  display: block;
  padding: 8px 12px;
  border-radius: 50px;
  background-color: var(--color-tab-bg);
  color: var(--color-black);
  font-family: var(--font-gothic);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.5;
  transition: opacity 0.3s;
}
@media (min-width: 1080px) {
  .category-nav__link {
    padding: 12px 32px;
    font-size: 1.5rem;
  }
}
@media (any-hover: hover) {
  .category-nav__link:hover {
    opacity: 0.7;
  }
}
.category-nav__link:focus-visible {
  opacity: 0.7;
}

.category-nav__link--current {
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

/* ==========================================================================
   お知らせ詳細
   ========================================================================== */
.article__inner {
  display: flex;
  flex-direction: column;
  gap: 48px;
  max-width: 94rem;
  margin-inline: auto;
  padding: 32px 20px 56px;
  color: var(--color-text-dark);
}
@media (min-width: 1080px) {
  .article__inner {
    gap: 88px;
    padding: 96px 20px 56px;
  }
}

.article__header {
  display: flex;
  flex-direction: column;
}
@media (min-width: 1080px) {
  .article__header {
    padding-bottom: 32px;
  }
}

.article__meta {
  display: flex;
  align-items: center;
  gap: 16px;
}

.article__category {
  padding: 4px 12px;
  border-radius: 4px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
  font-family: var(--font-gothic);
  font-size: 1.2rem;
  line-height: 18px;
  letter-spacing: 0.08em;
}

.article__date {
  color: var(--color-black);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .article__date {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.article__title {
  padding-top: 10px;
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.05em;
}
@media (min-width: 1080px) {
  .article__title {
    padding-top: 16px;
    font-size: 3.2rem;
    line-height: 1.8;
    letter-spacing: 0.03em;
  }
}

.article__thumb {
  margin-top: 24px;
  overflow: hidden;
  border-radius: 10px;
  aspect-ratio: 335 / 173;
}
@media (min-width: 1080px) {
  .article__thumb {
    margin-top: 32px;
    aspect-ratio: 900 / 466;
  }
}

.article__thumb img {
  height: 100%;
  object-fit: cover;
}

/* 本文はWordPressのエディタ出力（クラスなし）を想定して要素セレクタで装飾 */
.article__body > * + * {
  margin-top: 16px;
}

.article__body > * + h2 {
  margin-top: 48px;
}
@media (min-width: 1080px) {
  .article__body > * + h2 {
    margin-top: 88px;
  }
}

.article__body > h2 + * {
  margin-top: 20px;
}
@media (min-width: 1080px) {
  .article__body > h2 + * {
    margin-top: 32px;
  }
}

.article__body h2 {
  padding-bottom: 10px;
  border-bottom: 2px solid var(--color-green-heading);
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .article__body h2 {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.article__body p {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .article__body p {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ---------- post-nav（前後の記事） ---------- */
.post-nav {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding-top: 8px;
  color: var(--color-text-strong);
}
@media (min-width: 1080px) {
  .post-nav {
    padding-top: 56px;
  }
}

.post-nav__prev,
.post-nav__next {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-gothic);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 20px;
  transition: opacity 0.3s;
}
.post-nav__prev::before,
.post-nav__next::after {
  display: block;
  width: 14px;
  height: 14px;
  background-color: currentColor;
  mask: url("../img/common/icon-chevron.svg") center / contain no-repeat;
  content: "";
}
.post-nav__prev::before {
  transform: scaleX(-1);
}

.post-nav__next {
  justify-self: end;
}

.post-nav__back {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
  transition: opacity 0.3s;
}
@media (min-width: 1080px) {
  .post-nav__back {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

@media (any-hover: hover) {
  .post-nav__prev:hover,
  .post-nav__next:hover,
  .post-nav__back:hover {
    opacity: 0.7;
  }
}
.post-nav__prev:focus-visible,
.post-nav__next:focus-visible,
.post-nav__back:focus-visible {
  opacity: 0.7;
}

/* ---------- recommend（おすすめ記事） ---------- */
.recommend__inner {
  display: flex;
  flex-direction: column;
  gap: 20px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 24px 20px 64px;
}
@media (min-width: 1080px) {
  .recommend__inner {
    gap: 32px;
    padding: 56px 20px;
  }
}

.recommend__title {
  color: var(--color-green-heading);
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .recommend__title {
    font-size: 2.2rem;
    letter-spacing: 0.06em;
  }
}

/* ==========================================================================
   お問い合わせ（入力）
   ========================================================================== */
.contact__inner {
  display: flex;
  flex-direction: column;
  gap: 40px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 32px 20px 56px;
  color: var(--color-text-form);
}
@media (min-width: 1080px) {
  .contact__inner {
    gap: 32px;
    padding: 56px 20px;
  }
}

.contact__line {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 24px 20px;
  border-radius: 15px;
  background-color: color-mix(in srgb, var(--color-line-box) 8%, transparent);
}
@media (min-width: 768px) {
  .contact__line {
    flex-direction: row;
    gap: 24px;
    padding: 40px 32px;
  }
}

.contact__line-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 6px;
}
@media (min-width: 768px) {
  .contact__line-body {
    gap: 4px;
  }
}

.contact__line-lead {
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .contact__line-lead {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.contact__line-note {
  color: var(--color-text-muted);
  font-size: 1.3rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.08em;
}
@media (min-width: 1080px) {
  .contact__line-note {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.contact__line-button {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 20px;
  width: 100%;
  padding: 16px;
  border-radius: 50px;
  background-color: var(--color-line);
  color: var(--color-white);
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.5;
  transition: opacity 0.3s;
}
@media (min-width: 768px) {
  .contact__line-button {
    flex-shrink: 0;
    width: 30rem;
    padding: 16px 16px 16px 32px;
  }
}
.contact__line-button::after {
  display: block;
  flex-shrink: 0;
  width: 15px;
  height: 15px;
  background: url("../img/common/icon-external.svg") center / contain no-repeat;
  content: "";
}
@media (any-hover: hover) {
  .contact__line-button:hover {
    opacity: 0.7;
  }
}
.contact__line-button:focus-visible {
  opacity: 0.7;
}

.contact__heading {
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.05em;
  text-align: center;
}
@media (min-width: 1080px) {
  .contact__heading {
    padding-top: 48px;
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

/* ---------- contact-form ---------- */
.contact-form {
  display: flex;
  flex-direction: column;
  gap: 24px;
  max-width: 90rem;
  margin: 16px auto 0;
  padding: 16px 16px 32px;
}
@media (min-width: 1080px) {
  .contact-form {
    margin-top: 80px;
    padding: 0 0 48px;
  }
}

.contact-form__field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.contact-form__field--group {
  gap: 12px;
}

.contact-form__label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .contact-form__label {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.contact-form__field--group .contact-form__label {
  margin-bottom: 12px;
}

.contact-form__required {
  color: var(--color-required);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.08em;
}

.contact-form__options {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
@media (min-width: 1080px) {
  .contact-form__options {
    gap: 16px;
  }
}

.contact-form__option {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  cursor: pointer;
}

.contact-form__radio,
.contact-form__checkbox {
  flex-shrink: 0;
  width: 13px;
  height: 13px;
  margin: 0;
  border: 1px solid var(--color-black);
  background-color: var(--color-white);
  cursor: pointer;
}

.contact-form__radio {
  margin-top: 8px;
  border-radius: 50%;
}

.contact-form__radio:checked,
.contact-form__checkbox:checked {
  background-color: var(--color-green-heading);
  box-shadow: inset 0 0 0 2px var(--color-white);
}

.contact-form__radio:focus-visible,
.contact-form__checkbox:focus-visible {
  outline: 2px solid var(--color-green-heading);
  outline-offset: 2px;
}

.contact-form__option-body {
  display: flex;
  flex-direction: column;
}

.contact-form__option-title {
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .contact-form__option-title {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.contact-form__option-text {
  color: var(--color-black);
  font-size: 1.3rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.08em;
}
@media (min-width: 1080px) {
  .contact-form__option-text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.contact-form__input,
.contact-form__textarea {
  width: 100%;
  padding: 9px 17px;
  border: 1px solid color-mix(in srgb, var(--color-black) 10%, transparent);
  border-radius: 10px;
  background-color: var(--color-input-bg);
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.06em;
}

.contact-form__textarea {
  height: 16.1rem;
  padding: 13px 17px;
}

.contact-form__input::placeholder,
.contact-form__textarea::placeholder {
  color: color-mix(in srgb, var(--color-text-form) 50%, transparent);
}

.contact-form__input:focus-visible,
.contact-form__textarea:focus-visible {
  outline: 2px solid var(--color-green-heading);
  outline-offset: 0;
}

.contact-form__agree {
  display: flex;
  align-items: center;
  gap: 12px;
}

.contact-form__agree-label {
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
}

.contact-form__agree-text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .contact-form__agree-text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.contact-form__agree-link {
  color: var(--color-link);
  text-decoration: underline;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .contact-form__agree-link:hover {
    opacity: 0.7;
  }
}
.contact-form__agree-link:focus-visible {
  opacity: 0.7;
}

.contact-form__actions {
  display: flex;
  justify-content: center;
  padding-top: 8px;
}
@media (min-width: 1080px) {
  .contact-form__actions {
    padding-top: 0;
  }
}

.contact-form__submit {
  width: 25rem;
  padding: 16px 10px;
  border-radius: 50px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
  font-weight: 700;
  line-height: 24px;
  transition: opacity 0.3s;
}
@media (any-hover: hover) {
  .contact-form__submit:hover {
    opacity: 0.7;
  }
}
.contact-form__submit:focus-visible {
  opacity: 0.7;
}

/* 入力エラー（WordPress版で追加） */
.contact-form__error,
.contact-form__error-summary {
  color: var(--color-required);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.6;
}

.contact-form__error-summary {
  margin-bottom: 24px;
  padding: 12px 16px;
  border: 1px solid var(--color-required);
  background-color: var(--color-white);
}

.contact-form__input[aria-invalid="true"],
.contact-form__textarea[aria-invalid="true"] {
  outline: 1px solid var(--color-required);
}

/* ハニーポット（機械的な送信の検出用。人には見せない） */
.contact-form__trap {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ---------- form-steps（入力・確認・完了） ---------- */
.form-steps {
  display: flex;
  justify-content: center;
}

.form-steps__item {
  display: flex;
  position: relative;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  color: var(--color-green-heading);
}

.form-steps__item + .form-steps__item {
  margin-left: 48px;
}
@media (min-width: 1080px) {
  .form-steps__item + .form-steps__item {
    margin-left: 80px;
  }
}

.form-steps__item + .form-steps__item::before {
  position: absolute;
  top: 15.25px;
  right: 100%;
  width: 48px;
  height: 1.5px;
  background-color: var(--color-green-heading);
  content: "";
}
@media (min-width: 1080px) {
  .form-steps__item + .form-steps__item::before {
    top: 19.25px;
    width: 80px;
  }
}

.form-steps__item--upcoming {
  color: var(--color-step-off);
}

.form-steps__item--upcoming + .form-steps__item::before,
.form-steps__item + .form-steps__item--upcoming::before {
  background-color: var(--color-step-off);
}

.form-steps__number {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 32px;
  height: 32px;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  background-color: var(--color-white);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1;
}
@media (min-width: 1080px) {
  .form-steps__number {
    width: 40px;
    height: 40px;
    font-size: 1.6rem;
  }
}

.form-steps__item--current .form-steps__number {
  border-color: var(--color-green-heading);
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

.form-steps__label {
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.08em;
}
@media (min-width: 1080px) {
  .form-steps__label {
    font-size: 1.4rem;
    letter-spacing: 0.07em;
  }
}

.form-steps__item--upcoming .form-steps__label {
  color: var(--color-step-label-off);
}

/* ==========================================================================
   お問い合わせ（確認）
   ========================================================================== */
.confirm__inner {
  display: flex;
  flex-direction: column;
  gap: 28px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 40px 20px 64px;
  color: var(--color-text-form);
}
@media (min-width: 1080px) {
  .confirm__inner {
    gap: 32px;
    padding: 56px 20px;
  }
}

.confirm__section {
  padding-top: 16px;
}

.confirm__heading {
  font-size: 1.9rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.05em;
  text-align: center;
}
@media (min-width: 1080px) {
  .confirm__heading {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.confirm__lead {
  margin-top: 16px;
  color: var(--color-text);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
  text-align: center;
}
@media (min-width: 1080px) {
  .confirm__lead {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.confirm__form {
  max-width: 90rem;
  margin: 16px auto 0;
  padding: 8px 16px 32px;
}
@media (min-width: 1080px) {
  .confirm__form {
    margin-top: 80px;
    padding: 0 0 48px;
  }
}

.confirm__row {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 24px 0 25px;
  border-bottom: 1px solid var(--color-border-light);
}

.confirm__term {
  color: var(--color-green-heading);
  font-size: 1.4rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .confirm__term {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.confirm__desc {
  color: var(--color-text-strong);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
  /* URL など区切りのない長い入力で枠からはみ出さないように折り返す（WordPress版で追加） */
  overflow-wrap: anywhere;
}
@media (min-width: 1080px) {
  .confirm__desc {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

.confirm__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding-top: 48px;
}
@media (min-width: 768px) {
  .confirm__actions {
    flex-direction: row;
    justify-content: center;
    gap: 24px;
  }
}

.confirm__back,
.confirm__submit {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  padding: 16px 10px;
  border: 1.5px solid var(--color-green-heading);
  border-radius: 50px;
  font-weight: 700;
  line-height: 24px;
  transition: opacity 0.3s;
}
@media (min-width: 768px) {
  .confirm__back,
  .confirm__submit {
    width: 25rem;
  }
}
@media (any-hover: hover) {
  .confirm__back:hover,
  .confirm__submit:hover {
    opacity: 0.7;
  }
}
.confirm__back:focus-visible,
.confirm__submit:focus-visible {
  opacity: 0.7;
}

.confirm__back {
  background-color: var(--color-white);
  color: var(--color-green-heading);
}

.confirm__submit {
  background-color: var(--color-green-heading);
  color: var(--color-white);
}

/* ==========================================================================
   お問い合わせ（完了）
   ========================================================================== */
.thanks__inner {
  display: flex;
  flex-direction: column;
  gap: 28px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 40px 20px 64px;
  color: var(--color-text-form);
}
@media (min-width: 1080px) {
  .thanks__inner {
    gap: 32px;
    padding: 56px 20px;
  }
}

.thanks__section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  max-width: 90rem;
  margin: 0 auto;
  padding: 40px 16px 32px;
}
@media (min-width: 1080px) {
  .thanks__section {
    width: 100%;
    padding: 96px 0 48px;
  }
}

.thanks__heading {
  font-size: 1.9rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.05em;
  text-align: center;
}
@media (min-width: 1080px) {
  .thanks__heading {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.thanks__text {
  color: var(--color-text);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 2;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .thanks__text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
    text-align: center;
  }
}

.thanks__br-pc {
  display: none;
}
@media (min-width: 1080px) {
  .thanks__br-pc {
    display: inline;
  }
}

.thanks__note {
  width: 100%;
  padding: 16px;
  border-radius: 10px;
  background-color: var(--color-note-bg);
}
@media (min-width: 1080px) {
  .thanks__note {
    padding: 20px 28px;
  }
}

.thanks__note-text {
  color: var(--color-note-text);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: 0.07em;
}

.thanks__button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin-top: 24px;
  padding: 16px 10px;
  border-radius: 50px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
  font-weight: 700;
  line-height: 24px;
  transition: opacity 0.3s;
}
@media (min-width: 768px) {
  .thanks__button {
    width: 25rem;
  }
}
@media (any-hover: hover) {
  .thanks__button:hover {
    opacity: 0.7;
  }
}
.thanks__button:focus-visible {
  opacity: 0.7;
}

/* ==========================================================================
   プライバシーポリシー
   ========================================================================== */
.privacy__inner {
  display: flex;
  flex-direction: column;
  gap: 48px;
  max-width: 94rem;
  margin-inline: auto;
  padding: 40px 20px 64px;
  color: var(--color-text-dark);
}
@media (min-width: 1080px) {
  .privacy__inner {
    gap: 64px;
    padding: 88px 20px 120px;
  }
}

.privacy__section {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
@media (min-width: 1080px) {
  .privacy__section {
    gap: 32px;
  }
}

.privacy__heading {
  padding-bottom: 10px;
  border-bottom: 2px solid var(--color-green-heading);
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
}
@media (min-width: 1080px) {
  .privacy__heading {
    font-size: 2rem;
    letter-spacing: 0.05em;
  }
}

.privacy__body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
@media (min-width: 1080px) {
  .privacy__body {
    gap: 16px;
  }
}

.privacy__text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .privacy__text {
    font-size: 1.6rem;
    line-height: 1.8;
    letter-spacing: 0.06em;
  }
}

.privacy__subheading {
  color: var(--color-green-heading);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .privacy__subheading {
    font-size: 1.7rem;
    letter-spacing: 0.06em;
  }
}

.privacy__list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.privacy__list-item {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .privacy__list-item {
    font-size: 1.6rem;
    line-height: 1.8;
    letter-spacing: 0.06em;
  }
}
.privacy__list-item::before {
  content: "・";
}

.privacy__info {
  padding: 20px 16px;
  border-radius: 12px;
  background-color: var(--color-gray-bg);
}
@media (min-width: 1080px) {
  .privacy__info {
    padding: 24px 32px;
  }
}

.privacy__info-text {
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 2;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .privacy__info-text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
  }
}

/* ==========================================================================
   404
   ========================================================================== */
.not-found__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
  max-width: 124rem;
  margin-inline: auto;
  padding: 40px 20px 64px;
  color: var(--color-text-form);
}
@media (min-width: 1080px) {
  .not-found__inner {
    gap: 24px;
    padding: 96px 20px 120px;
  }
}

.not-found__code {
  color: var(--color-green-heading);
  font-family: var(--font-en);
  font-size: 8.8rem;
  font-weight: 700;
  line-height: normal;
  letter-spacing: 0.045em;
}
@media (min-width: 1080px) {
  .not-found__code {
    font-size: 14rem;
    letter-spacing: 0.03em;
  }
}

.not-found__heading {
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.06em;
  text-align: center;
}
@media (min-width: 1080px) {
  .not-found__heading {
    font-size: 2.4rem;
    letter-spacing: 0.04em;
  }
}

.not-found__text {
  color: var(--color-text);
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 2;
  letter-spacing: 0.07em;
}
@media (min-width: 1080px) {
  .not-found__text {
    font-size: 1.6rem;
    letter-spacing: 0.06em;
    text-align: center;
  }
}

.not-found__br-pc {
  display: none;
}
@media (min-width: 1080px) {
  .not-found__br-pc {
    display: inline;
  }
}

.not-found__button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin-top: 24px;
  padding: 16px 10px;
  border-radius: 50px;
  background-color: var(--color-green-heading);
  color: var(--color-white);
  font-weight: 700;
  line-height: 24px;
  transition: opacity 0.3s;
}
@media (min-width: 768px) {
  .not-found__button {
    width: 25rem;
  }
}
@media (any-hover: hover) {
  .not-found__button:hover {
    opacity: 0.7;
  }
}
.not-found__button:focus-visible {
  opacity: 0.7;
}
