/* =============================================
   responsive.css — レスポンシブ対応
   ============================================= */

/* ---- グリッドクラス（ベース） ---- */
.p-index-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.4rem;
}
.p-index-service-card {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 2.4rem;
  align-items: center;
  background: #fff;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  text-decoration: none;
  transition: all var(--transition);
}
.p-index-service-card:hover { box-shadow: var(--shadow-md); }
.p-index-service-card--reverse { direction: rtl; }
.p-index-service-card--reverse > * { direction: ltr; }
.p-index-service-card__img { aspect-ratio: 4/3; overflow: hidden; height: 100%; }
.p-index-service-card__img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s ease; }
.p-index-service-card:hover .p-index-service-card__img img { transform: scale(1.04); }
.p-index-service-card__body { padding: 2rem 2rem 2rem 0; }
.p-index-service-card--reverse .p-index-service-card__body { padding: 2rem 0 2rem 2rem; }
.p-index-service-card__title { font-size: 1.8rem; font-weight: 700; color: var(--color-primary-dark); margin-bottom: 0.8rem; }
.p-index-service-card__desc { font-size: 1.4rem; color: var(--color-text-sub); line-height: 1.8; }
@media (max-width: 768px) {
  .p-index-service-card { grid-template-columns: 1fr 1.2fr; gap: 1.2rem; }
  .p-index-service-card__body { padding: 1.2rem 1.2rem 1.2rem 0; }
  .p-index-service-card--reverse .p-index-service-card__body { padding: 1.2rem 0 1.2rem 1.2rem; }
  .p-index-service-card__title { font-size: 1.4rem; }
  .p-index-service-card__desc { font-size: 1.2rem; line-height: 1.6; }
}
.p-contact-methods {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.2rem;
}
.p-index-numbers-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2.4rem;
  text-align: center;
}

/* 施設フォトギャラリー（facility.html） */
.p-facility-photo-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
}
.p-facility-photo-grid figure {
  margin: 0;
}
.p-facility-photo-grid img {
  width: 100%;
  border-radius: var(--radius-sm);
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}
.p-facility-photo-grid figcaption {
  text-align: center;
  font-size: 1.3rem;
  color: var(--color-text-sub);
  margin-top: 0.8rem;
}

/* 個室紹介グリッド（room.html） */
.p-room-intro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
.p-room-intro-grid picture img {
  width: 100%;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  display: block;
}
.p-room-intro-grid h3 {
  font-size: 2rem;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 1.6rem;
}
.p-room-intro-grid ul {
  list-style: none;
  padding: 0;
  font-size: 1.5rem;
  line-height: 2.4;
  color: var(--color-text-sub);
}

/* 共通テーブルスタイル */
.p-info-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1.5rem;
  line-height: 2;
}
.p-info-table tr {
  border-bottom: 1px solid var(--color-border);
}
.p-info-table th {
  padding: 1.4rem 1.6rem;
  background: var(--color-accent);
  color: var(--color-primary-dark);
  font-weight: 700;
  white-space: nowrap;
  width: 30%;
  vertical-align: top;
}
.p-info-table td {
  padding: 1.4rem 1.6rem;
  vertical-align: top;
}

/* ---- 1025px以上 — フッターは常に通常表示 ---- */
@media (min-width: 1025px) {
  .l-footer__nav-list { display: block !important; }
  .l-footer__inner {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr;
    gap: 4rem;
  }
  .l-footer__nav-title {
    cursor: default;
    pointer-events: none;
  }
  .js-footer-accordion::after { display: none; }
}

/* ---- 1200px以上 (大画面) ---- */
@media (min-width: 1200px) {
  .p-hero__title { font-size: 6.4rem; }
}

/* ---- 1200px以下 ---- */
@media (max-width: 1200px) {
  .l-header__nav-link { padding: 0.8rem 1rem; font-size: 1.3rem; }
  .l-footer__inner { grid-template-columns: 1.2fr 1fr 1fr 1fr 1fr; gap: 2rem; }
  .p-hero__title { font-size: 4.8rem; }
  .p-numbers__grid { grid-template-columns: repeat(3, 1fr); gap: 2rem; }
  .p-staff-cards { grid-template-columns: repeat(3, 1fr); }
}

/* ---- フッター アコーディオン（モバイル） ---- */
@media (max-width: 1024px) {
  .l-footer__inner {
    grid-template-columns: 1fr;
    gap: 0;
    margin-bottom: 3.2rem;
  }
  .l-footer__brand {
    margin-bottom: 2.4rem;
    padding-bottom: 2.4rem;
    border-bottom: 1px solid rgba(255,255,255,0.15);
  }
  .js-footer-accordion {
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    user-select: none;
    padding: 1.6rem 0;
    margin-bottom: 0;
    border-bottom: 1px solid rgba(255,255,255,0.15);
  }
  .js-footer-accordion::after {
    content: '+';
    font-size: 2rem;
    font-weight: 300;
    color: rgba(255,255,255,0.6);
  }
  .js-footer-accordion.is-open::after {
    content: '−';
  }
  .l-footer__nav-list {
    padding: 1.2rem 0 0.8rem;
  }
}

/* ---- 1024px以下 ---- */
@media (max-width: 1024px) {
  html { font-size: 58%; }
  .l-header__nav, .l-header__tel, .l-header__cta { display: none; }
  .l-header__hamburger { display: flex; }
  .l-mobile-menu { display: block; }

  .p-hero__inner { grid-template-columns: 1fr; }
  .p-hero__img { display: none; }
  .p-hero { padding: 10rem 0 8rem; }
  .p-about-intro__inner { grid-template-columns: 1fr; gap: 4rem; }
  .p-features__grid { grid-template-columns: repeat(2, 1fr); }
  .p-services__grid { grid-template-columns: repeat(2, 1fr); }
  .p-index-services-grid { grid-template-columns: repeat(2, 1fr); }
  .p-index-numbers-grid { grid-template-columns: repeat(2, 1fr); }
  .p-contact-methods { grid-template-columns: 1fr; }
  .p-recruit-preview__inner { grid-template-columns: 1fr; gap: 4rem; }
  .p-staff-cards { grid-template-columns: repeat(2, 1fr); }
  .p-facility-gallery { grid-template-columns: 1fr 1fr; }
  .p-facility-gallery__item--large { grid-row: auto; }
  .p-facility-photo-grid { grid-template-columns: repeat(2, 1fr); }
  .p-room-intro-grid { grid-template-columns: 1fr; gap: 3.2rem; }
  .p-service-item { grid-template-columns: 1fr; gap: 3.2rem; padding: 4rem 0; }
  .p-service-item--reverse { direction: ltr; }
  .p-service-item__title { font-size: 2.2rem; }
  .p-info-table th { width: 35%; font-size: 1.4rem; }
  .p-info-table td { font-size: 1.4rem; }
}

/* ---- 768px以下 ---- */
@media (max-width: 768px) {
  html { font-size: 56%; }
  .l-section { padding: 6rem 0; }
  .l-container { padding: 0 1.6rem; }

  .c-section-head__title { font-size: 2.6rem; }

  .p-hero { padding: 12rem 0 8rem; }
  .p-hero__content { padding: 0 2.4rem; }
  .p-hero__title { font-size: 3.6rem; margin-bottom: 2.4rem; }
  .p-hero__desc { font-size: 1.6rem; margin-bottom: 4rem; }
  .p-hero__btns { flex-direction: column; gap: 1.4rem; margin-bottom: 3.2rem; }
  .p-hero__btns .c-btn { width: 100%; text-align: center; }

  .p-features__grid { grid-template-columns: 1fr 1fr; gap: 1.6rem; }
  .p-services__grid { grid-template-columns: 1fr; }
  .p-index-services-grid { grid-template-columns: repeat(3, 1fr); gap: 1.2rem; }
  .p-index-numbers-grid { grid-template-columns: repeat(2, 1fr); }
  .p-numbers__grid { grid-template-columns: repeat(2, 1fr); }
  .p-staff-cards { grid-template-columns: repeat(2, 1fr); }

  .l-footer__bottom { flex-direction: column; align-items: flex-start; }
  .l-footer__bottom-links { flex-wrap: wrap; gap: 1.6rem; }

  .c-page-hero { padding: 8rem 0 4.8rem; }
  .c-page-hero__title { font-size: 3rem; }

  .p-cta__title { font-size: 2.8rem; }
  .p-cta__btns { flex-direction: column; align-items: center; }
  .p-cta__btns .c-btn { width: 100%; max-width: 360px; }
  .p-cta__tel-num { font-size: 2.8rem; }

  .p-recruit-benefits { grid-template-columns: 1fr; }
  .p-facility-gallery { grid-template-columns: 1fr; }
  .p-facility-photo-grid { grid-template-columns: 1fr; }
  .p-info-table { font-size: 1.4rem; }
  .p-info-table th, .p-info-table td { padding: 1.2rem; }
  .p-info-table th { display: block; width: 100%; white-space: normal; }
  .p-info-table td { display: block; width: 100%; }

  .l-header__inner { height: 68px; }
  .l-mobile-menu { top: 68px; height: calc(100vh - 68px); }
}

/* ---- 480px以下 ---- */
@media (max-width: 480px) {
  html { font-size: 54%; }
  .p-hero__title { font-size: 3rem; }
  .p-features__grid { grid-template-columns: 1fr; }
  .p-numbers__grid { grid-template-columns: 1fr 1fr; }
  .p-staff-cards { grid-template-columns: 1fr 1fr; }
  .c-btn { min-width: unset; padding: 1.4rem 2.8rem; }
  .p-hero__label { font-size: 1.1rem; }
  .c-page-hero__title { font-size: 2.4rem; }
  .p-timeline { padding-left: 4.8rem; }
  .p-timeline__dot { left: -3.8rem; }
}
