@charset "utf-8";

/* ===== トップページ =====
   Figma: PC_TOP（1440px 基準）。コンテンツ幅 1080px、左右余白 180px。 */

/* --- 共通カード --- */
.p-card {
  border-radius: var(--r-card);
  background: var(--c-white);
  box-shadow: 0 6px 24px rgba(3, 9, 70, 0.08);
}

/* ===== MV ===== */

.p-mv {
  position: relative;
  padding-top: var(--mv-offset);
}

/* PC は mv.png にバッジと最寄駅ボックスが焼き込まれているので、
   同じ文言は視覚的にだけ隠す（読み上げ・SEO のため DOM には残す）。 */
.p-mv__badge,
.p-mv__access {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.p-mv__visual {
  position: relative;
}

.p-mv__frame {
  position: relative;
}

.p-mv__img {
  display: block;
  width: 100%;
  height: auto;
}

.p-mv__catch {
  position: absolute;
  top: 33%;
  left: 0;
  right: 0;
  color: var(--c-navy);
  text-align: center;
}

.p-mv__catch-line {
  display: block;
  font-size: 60px;
  font-weight: 500;
  line-height: 1.65;
  letter-spacing: var(--ls);
  opacity: 0.9;
}

.p-mv__lead {
  position: absolute;
  top: 64.5%;
  left: 0;
  right: 0;
  color: var(--c-navy);
  font-size: var(--fs-20);
  font-weight: 500;
  line-height: 1.7;
  text-align: center;
  opacity: 0.9;
}

/* --- 当院の3つの特長（MVに重なる白カード） --- */

.p-points {
  position: relative;
  z-index: 2;
  margin-top: -126px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  padding: 42px 28px 32px;
  border-radius: var(--r-card);
  background: var(--c-white);
  box-shadow: 0 6px 24px rgba(3, 9, 70, 0.08);
}

.p-points__item {
  padding: 0 38px 0 25px;
}

.p-points__item + .p-points__item {
  border-left: 1px solid var(--c-rule);
}

.p-points__head,
.p-points__body {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 24px;
  align-items: center;
}

.p-points__body {
  margin-top: 27px;
  align-items: start;
}

.p-points__num {
  width: 64px;
  height: 64px;
}

.p-points__icon {
  width: 56px;
  height: 56px;
  margin-inline: auto;
}

.p-points__title {
  font-size: var(--fs-20);
  font-weight: 700;
  line-height: 1.55;
  white-space: nowrap;
}

.p-points__text {
  font-size: var(--fs-16);
  line-height: 2;
}

/* ===== 採用情報 / お知らせ ===== */

.p-pickup {
  margin-top: 48px;
}

.p-pickup__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  align-items: stretch;
}

/* --- 採用情報 --- */

.p-recruit {
  padding: 31px 20px 20px;
}

.p-recruit__pill {
  height: 44px;
  border-radius: 999px;
  background: var(--c-cyan);
  color: var(--c-white);
  font-size: var(--fs-20);
  font-weight: 700;
  line-height: 44px;
  text-align: center;
}

.p-recruit__body {
  display: flex;
  gap: 24px;
  padding: 21px 26px 0 24px;
}

.p-recruit__text {
  flex: 1;
}

.p-recruit__title {
  font-size: var(--fs-24);
  font-weight: 700;
  line-height: 1.6;
}

.p-recruit__lead {
  margin-top: 8px;
  font-size: var(--fs-16);
  line-height: 2;
}

.p-recruit__link {
  margin-top: 16px;
}

.p-recruit__figure {
  flex: none;
  width: 188px;
}

.p-recruit__figure img {
  display: block;
  width: 188px;
  height: 243px;
  object-fit: cover;
}

/* --- お知らせ --- */

.p-news {
  padding: 32px 20px 24px;
}

.p-news__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0 4px;
}

.p-news__title {
  display: flex;
  align-items: baseline;
  gap: 16px;
  font-size: var(--fs-24);
  font-weight: 700;
  line-height: 1.4;
}

.p-news__en {
  color: var(--c-cyan);
  font-size: var(--fs-en);
  font-weight: 700;
  letter-spacing: 0.08em;
}

.p-news__list {
  margin-top: 20px;
}

.p-news__item {
  border-bottom: 1px solid var(--c-rule);
}

.p-news__link {
  display: grid;
  grid-template-columns: auto auto 1fr;
  align-items: center;
  gap: 10px;
  padding: 21px 4px;
  font-size: var(--fs-16);
  line-height: 1.6;
}

.p-news__date {
  color: var(--c-date);
  white-space: nowrap;
}

.p-news__cat {
  display: grid;
  place-items: center;
  min-width: 90px;
  height: 30px;
  padding: 0 12px;
  border: 1px solid var(--c-cyan);
  border-radius: 999px;
  color: var(--c-cyan);
  font-size: var(--fs-14);
  line-height: 1;
}

.p-news__cat--orange {
  border-color: var(--c-orange);
  color: var(--c-orange);
}

.p-news__text {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* ===== 当院の特徴 ===== */

.p-features {
  margin-top: 96px;
}

.p-features__list {
  margin-top: 40px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
}

.p-features__figure img {
  display: block;
  width: 100%;
  height: 209px;
  border-radius: var(--r-sm);
  object-fit: cover;
}

.p-features__title {
  margin-top: 20px;
  font-size: var(--fs-20);
  font-weight: 700;
  line-height: 1.6;
}

.p-features__text {
  margin-top: 8px;
  font-size: var(--fs-16);
  line-height: 2;
}

.p-features .c-more--center {
  margin-top: 56px;
}

/* ===== 診療時間・アクセス（Figma書き出し1枚） ===== */

.p-information {
  position: relative;
  margin-top: 64px;
}

/* 書き出し画像に焼き込まれた地図枠の位置に、準備中プレースホルダを重ねる */
.p-information__map {
  position: absolute;
  left: 44.58%;
  top: 26.91%;
  width: 42.88%;
  height: 64.7%;
}

.p-information__img {
  display: block;
  width: 100%;
  height: auto;
}

/* ===== 診療案内 ===== */

.p-medical {
  margin-top: 64px;
}

.p-medical__list {
  margin-top: 40px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px 40px;
}

.p-medical__cell {
  display: flex;
}

.p-medical__item {
  display: block;
  width: 100%;
  padding: 32px 24px;
  border-radius: var(--r-sm);
  background: var(--c-cream);
  text-align: center;
}

.p-medical__icon {
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  margin-inline: auto;
  border-radius: 50%;
  background: var(--c-white);
  color: var(--c-cyan);
}

.p-medical__icon svg {
  width: 44px;
  height: 44px;
}

.p-medical__title {
  margin-top: 16px;
  font-size: var(--fs-20);
  font-weight: 700;
  line-height: 1.6;
}

.p-medical__text {
  margin-top: 8px;
  font-size: var(--fs-16);
  line-height: 2;
  text-align: left;
}

/* ===== よくある症状 / よくある疾患 ===== */

.p-symptoms {
  margin-top: 96px;
}

.p-symptoms__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  align-items: start;
}

.p-symptoms__panel {
  padding: 44px 18px 32px;
  border-radius: var(--r-card);
  background: var(--c-cream);
}

.p-symptoms__list {
  margin-top: 28px;
  display: grid;
  gap: 18px;
}

.p-symptoms__list--2col {
  grid-template-columns: repeat(2, 1fr);
}

.p-symptoms__list--3col {
  grid-template-columns: repeat(3, 1fr);
}

.p-symptoms__chip {
  display: grid;
  place-items: center;
  min-height: 72px;
  padding: 8px 10px;
  border-radius: var(--r-chip);
  background: var(--c-white);
  font-size: var(--fs-16);
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
}

.p-symptoms .c-more--center {
  margin-top: 32px;
}

/* ===== 院長あいさつ ===== */

.p-greeting {
  margin-top: 96px;
}

.p-greeting__body {
  max-width: var(--w-design);
  margin: 56px auto 0;
  display: flex;
  gap: 68px;
  align-items: flex-start;
}

.p-greeting__figure {
  flex: none;
  width: 684px;
}

.p-greeting__figure img {
  display: block;
  width: 684px;
  height: 543px;
  border-radius: 0 var(--r-card) var(--r-card) 0;
  object-fit: cover;
}

.p-greeting__text {
  flex: none;
  width: 506px;
}

.p-greeting__title {
  font-size: var(--fs-28);
  font-weight: 700;
  line-height: 1.7;
}

.p-greeting__lead {
  margin-top: 24px;
  font-size: var(--fs-16);
  line-height: 2;
}

.p-greeting__name {
  margin-top: 24px;
  font-size: var(--fs-20);
  font-weight: 700;
  line-height: 1.7;
}

.p-greeting__career {
  margin-top: 8px;
  font-size: var(--fs-16);
  line-height: 2;
}

.p-greeting .c-more--center {
  margin-top: 32px;
}

/* ===== 写真バナー ===== */

.p-gallery {
  margin-top: 80px;
  overflow: hidden;
}

.p-gallery__row {
  display: flex;
  justify-content: center;
}

.p-gallery__img {
  flex: none;
  width: 460px;
  height: 261px;
  object-fit: cover;
}

/* ===== ご予約・お問い合わせ ===== */

.p-contact {
  margin-top: 88px;
}

.p-contact__lead {
  margin-top: 20px;
  font-size: var(--fs-16);
  line-height: 1.9;
  text-align: center;
}

.p-contact__btns {
  margin-top: 32px;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  gap: 40px;
}

.p-contact__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.p-contact__note {
  line-height: 1;
}

.p-contact__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  width: 380px;
  height: 120px;
  border: 1px solid var(--c-border);
  border-radius: var(--r-sm);
  background: var(--c-white);
}

.p-contact__icon {
  flex: none;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  color: var(--c-white);
}

.p-contact__icon svg {
  width: 28px;
  height: 28px;
}

.p-contact__icon--tel {
  background: var(--c-cyan);
}

.p-contact__icon--web {
  background: var(--c-orange);
}

.p-contact__label {
  font-size: var(--fs-24);
  font-weight: 700;
  line-height: 1.4;
}

/* ===== SP（Figma: SP_TOP / 375px 基準） ===== */
@media (max-width: 767px) {

  /* --- MV --- */
  .p-mv__badge {
    position: static;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: auto;
    height: 40px;
    clip-path: none;
    background: var(--c-cyan);
    color: var(--c-white);
    font-size: 15px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.04em;
  }

  .p-mv__badge-em {
    color: var(--c-yellow);
  }

  .p-mv__badge-slash {
    font-weight: 400;
  }

  .p-mv__badge-text {
    white-space: nowrap;
  }

  /* キャッチコピーは縦書き（右の列が1行目）。
     Figma は右寄せ配置だが、指示により横方向は中央寄せにしている。
     縦書きなので幅＝列の合計幅。fit-content ＋ auto マージンで中央に置く。 */
  .p-mv__catch {
    top: 20px;
    left: 0;
    right: 0;
    width: fit-content;
    /* 縦書きだと margin-inline は上下に効いてしまうので物理プロパティで指定する */
    margin-left: auto;
    margin-right: auto;
    writing-mode: vertical-rl;
  }

  .p-mv__catch-line {
    font-size: 30px;
    line-height: 1.2;
  }

  .p-mv__access {
    /* 中央寄せに transform を使わない（アニメーションと競合させないため） */
    position: absolute;
    left: 0;
    right: 0;
    bottom: 23px;
    margin-inline: auto;
    width: 296px;
    max-width: calc(100% - 80px);
    height: auto;
    padding: 13px 12px;
    clip-path: none;
    overflow: visible;
    white-space: normal;
    border-radius: 10px;
    background: var(--c-white);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.5;
    text-align: center;
  }

  .p-mv__lead {
    position: static;
    margin-top: 20px;
    font-size: var(--fs-20);
  }

  /* --- 3つの特長（縦積み） --- */
  .p-points {
    margin-top: 88px;
    grid-template-columns: 1fr;
    padding: 0 16px;
  }

  .p-points__item {
    padding: 22px 0;
  }

  .p-points__item + .p-points__item {
    border-left: 0;
    border-top: 1px solid var(--c-rule);
  }

  .p-points__body {
    margin-top: 14px;
  }

  .p-points__title {
    white-space: normal;
  }

  /* --- 採用情報 / お知らせ --- */
  .p-pickup {
    margin-top: 40px;
  }

  .p-pickup__grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .p-recruit {
    padding: 16px;
  }

  .p-recruit__pill {
    height: 40px;
    font-size: 18px;
    line-height: 40px;
  }

  .p-recruit__body {
    display: block;
    padding: 18px 4px 4px;
  }

  .p-recruit__title {
    font-size: 22px;
    text-align: center;
  }

  .p-recruit__link {
    margin-top: 12px;
    display: flex;
    justify-content: center;
  }

  .p-recruit__figure {
    width: 100%;
    margin-top: 16px;
  }

  .p-recruit__figure img {
    width: 100%;
    height: auto;
    aspect-ratio: 300 / 187;
    border-radius: 10px;
  }

  .p-news {
    padding: 20px 16px 12px;
  }

  .p-news__head {
    padding: 0;
  }

  .p-news__title {
    font-size: 18px;
    gap: 12px;
  }

  .p-news__list {
    margin-top: 12px;
  }

  .p-news__link {
    grid-template-columns: auto 1fr;
    grid-template-areas:
      "date cat"
      "text text";
    gap: 4px 12px;
    padding: 12px 0;
  }

  .p-news__date { grid-area: date; }

  .p-news__cat {
    grid-area: cat;
    justify-self: start;
    min-width: 84px;
    height: 26px;
  }

  .p-news__text {
    grid-area: text;
    white-space: normal;
  }

  /* --- 当院の特徴 --- */
  .p-features {
    margin-top: 56px;
  }

  .p-features__list {
    width: 300px;
    max-width: 100%;
    margin: 32px auto 0;
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .p-features__figure img {
    height: auto;
    aspect-ratio: 300 / 187;
  }

  .p-features__title {
    margin-top: 14px;
  }

  .p-features .c-more--center {
    margin-top: 36px;
  }

  /* --- 診療時間・アクセス（SP書き出し1枚） --- */
  .p-information {
    margin-top: 48px;
  }

  .p-information__map {
    left: 0;
    top: 61.89%;
    width: 100%;
    height: 35.53%;
  }

  .p-information__map .c-mapprep {
    border-radius: 0;
  }

  /* --- 診療案内（アイコン左・テキスト右） --- */
  .p-medical {
    margin-top: 48px;
  }

  .p-medical__list {
    margin-top: 32px;
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .p-medical__item {
    display: grid;
    grid-template-columns: 60px 1fr;
    grid-template-areas:
      "icon title"
      "icon text";
    column-gap: 14px;
    align-items: center;
    padding: 14px;
    text-align: left;
  }

  .p-medical__icon {
    grid-area: icon;
    width: 60px;
    height: 60px;
    margin: 0;
  }

  .p-medical__icon svg {
    width: 36px;
    height: 36px;
  }

  .p-medical__title {
    grid-area: title;
    align-self: end;
    margin-top: 0;
  }

  .p-medical__text {
    grid-area: text;
    align-self: start;
    margin-top: 2px;
  }

  /* --- よくある症状 / 疾患（画面幅いっぱいのパネル） --- */
  .p-symptoms {
    margin-top: 48px;
  }

  .p-symptoms > .l-container {
    width: 100%;
    max-width: none;
  }

  .p-symptoms__grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .p-symptoms__panel {
    padding: 32px 18px 24px;
  }

  .p-symptoms__list {
    margin-top: 24px;
    gap: 10px;
  }

  .p-symptoms__list--2col,
  .p-symptoms__list--3col {
    grid-template-columns: 1fr 1fr;
  }

  .p-symptoms__chip {
    min-height: 80px;
    font-size: 16px;
  }

  .p-symptoms .c-more--center {
    margin-top: 24px;
  }

  /* --- 院長あいさつ --- */
  .p-greeting {
    margin-top: 48px;
  }

  .p-greeting__body {
    display: block;
    margin-top: 24px;
  }

  .p-greeting__figure {
    width: 100%;
  }

  .p-greeting__figure img {
    width: 100%;
    height: auto;
    aspect-ratio: 375 / 297;
    border-radius: 0;
  }

  .p-greeting__text {
    width: min(335px, calc(100% - 40px));
    margin: 24px auto 0;
  }

  .p-greeting__title {
    text-align: center;
  }

  .p-greeting__lead {
    margin-top: 16px;
  }

  .p-greeting__name {
    margin-top: 16px;
  }

  .p-greeting .c-more--center {
    margin-top: 24px;
  }

  /* --- 写真バナー --- */
  .p-gallery {
    margin-top: 32px;
  }

  .p-gallery__img {
    width: 276px;
    height: 157px;
  }

  /* --- ご予約・お問い合わせ --- */
  .p-contact {
    margin-top: 48px;
  }

  .p-contact__lead {
    margin-top: 16px;
  }

  .p-contact__btns {
    margin-top: 24px;
    flex-direction: column;
    align-items: stretch;
    gap: 18px;
  }

  .p-contact__btn {
    width: 100%;
    height: 118px;
    gap: 16px;
  }
}


/* ===== WEB予約 準備中ページ ===== */

.p-prep {
  padding: 72px 0 96px;
}

.p-prep__box {
  max-width: 720px;
  margin-inline: auto;
  padding: 56px 40px 48px;
  border-radius: var(--r-card);
  background: var(--c-cream);
  text-align: center;
}

.p-prep__icon {
  display: grid;
  place-items: center;
  width: 80px;
  height: 80px;
  margin: 0 auto 24px;
  border-radius: 50%;
  background: var(--c-white);
  color: var(--c-orange);
}

.p-prep__icon svg {
  width: 38px;
  height: 38px;
}

.p-prep__title {
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.5;
}

.p-prep__box .c-badge {
  margin-top: 16px;
}

.p-prep__text {
  margin-top: 24px;
  font-size: var(--fs-16);
  line-height: 2;
}

.p-prep__text p + p {
  margin-top: 12px;
}

.p-prep__cta {
  margin-top: 32px;
}

.p-prep__cta .p-contact__btn {
  margin-inline: auto;
}

.p-prep__hours {
  margin-top: 12px;
  font-size: var(--fs-14);
  line-height: 1.8;
  opacity: 0.8;
}

.p-prep .c-more--center {
  margin-top: 32px;
}

@media (max-width: 767px) {
  .p-prep {
    padding: 40px 0 56px;
  }

  .p-prep__box {
    padding: 40px 20px 32px;
  }

  .p-prep__icon {
    width: 64px;
    height: 64px;
    margin-bottom: 20px;
  }

  .p-prep__icon svg {
    width: 30px;
    height: 30px;
  }
}
