/**
 * Unified content rail (DADS ~1024px)
 * 見出し・カード・CTA・フッターで左右端を揃える。はみ出し防止込み。
 */

:root {
  --mc-grid-max: 64rem;
  --mc-grid-gap: 1.5rem;
  --mc-grid-pad: 1rem;
}

html {
  overflow-x: clip;
}

body {
  overflow-x: clip;
}

/* トップレベルブロック間の白い隙間（CTA↔フッターなど）をなくす */
.wp-site-blocks {
  gap: 0 !important;
  row-gap: 0 !important;
  column-gap: 0 !important;
  overflow-x: clip;
  max-width: 100%;
}

.wp-site-blocks > *,
.wp-site-blocks > * + * {
  margin-block-start: 0 !important;
  margin-block-end: 0 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  max-width: 100%;
}

.mc-main {
  overflow-x: clip;
  max-width: 100%;
  width: 100%;
  box-sizing: border-box;
}

/* トップ／B型のみ上下密着（記事・固定ページの padding は残す） */
.mc-main--flush {
  padding-block: 0 !important;
  margin-block: 0 !important;
}

/* メニュー直下ヒーロー密着 */
.mc-main--flush > .mc-hero:first-child,
.mc-main--flush > section.mc-hero:first-child,
.mc-main--flush > .wp-block-group.mc-hero:first-child {
  margin-top: 0 !important;
  margin-block-start: 0 !important;
}

.wp-site-blocks > header,
.wp-site-blocks > .mc-site-header,
.wp-site-blocks > .wp-block-template-part {
  margin-bottom: 0 !important;
  margin-block-end: 0 !important;
}

.wp-site-blocks > header + *,
.wp-site-blocks > .mc-site-header + *,
.wp-site-blocks > .wp-block-template-part + *,
.wp-site-blocks > header + .mc-main,
.wp-site-blocks > .mc-site-header + .mc-main,
.wp-site-blocks > .wp-block-template-part + main,
.wp-site-blocks > .wp-block-template-part + .wp-block-group.mc-main {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
}

.wp-site-blocks > header + .mc-main--flush,
.wp-site-blocks > .mc-site-header + .mc-main--flush,
.wp-site-blocks > .wp-block-template-part + .mc-main--flush,
.wp-site-blocks > .wp-block-template-part + .wp-block-group.mc-main--flush {
  padding-block-start: 0 !important;
  padding-top: 0 !important;
}

/*
 * WP の alignwide / alignfull ブレイクアウトを無効化。
 * トップ／B型のセクション用。記事本文には当てない。
 */
.mc-main--flush .alignwide,
.mc-main--flush .alignfull,
.mc-main--flush .wp-block-group.alignwide,
.mc-main--flush .wp-block-group.alignfull {
  margin-left: 0 !important;
  margin-right: 0 !important;
  left: auto !important;
  right: auto !important;
  position: relative !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

/* —— 共通レール：ヘッダー／フッター —— */
.mc-site-header,
.mc-site-footer {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

.mc-site-header__rail,
.mc-site-footer__rail {
  box-sizing: border-box;
  max-width: var(--mc-grid-max);
  width: 100%;
  margin-inline: auto;
}

.mc-site-header > .alignwide,
.mc-site-footer > .alignwide,
.mc-site-footer > .mc-site-footer__copy {
  box-sizing: border-box;
  max-width: var(--mc-grid-max);
  width: 100%;
  margin-inline: auto;
}

/* ブロックパターンのセクション（alignwide）＋ PHP セクション（mc-sec--rail）＋ ヒーロー */
.mc-main > .wp-block-group.mc-section.alignwide,
.mc-main > .mc-sec.mc-sec--rail,
.mc-main > section.mc-sec--rail {
  box-sizing: border-box;
  max-width: var(--mc-grid-max) !important;
  width: 100% !important;
  margin-inline: auto !important;
  padding-inline: var(--mc-grid-pad);
  overflow-x: clip;
}

/* フルブリード（背景色あり）：背景は全幅、中身は同じレール */
.mc-main > .wp-block-group.mc-section.alignfull,
.mc-main > .wp-block-group.mc-hero.alignfull,
.mc-main > .mc-sec.mc-sec--bleed,
.mc-main > section.mc-sec--bleed,
.mc-main > .mc-hero,
.mc-main > section.mc-hero {
  box-sizing: border-box;
  max-width: 100% !important;
  width: 100% !important;
  margin-inline: 0 !important;
  padding-inline: var(--mc-grid-pad);
  overflow-x: clip;
}

/*
 * 全幅ではない × 背景あり：コンテンツより少し広い角丸パネル＋左右余白。
 * 全幅（bleed）の背景はそのまま端まで伸ばす。
 */
.mc-main > .mc-sec.mc-sec--rail:is(.mc-sec-bg--soft, .mc-sec-bg--subtle, .mc-sec-bg--custom),
.mc-main > section.mc-sec--rail:is(.mc-sec-bg--soft, .mc-sec-bg--subtle, .mc-sec-bg--custom) {
  --mc-sec-band-gutter: clamp(0.75rem, 2.5vw, 1.5rem);
  --mc-sec-band-overhang: clamp(1rem, 3vw, 2.5rem);
  --mc-sec-band-pad-x: clamp(1.5rem, 4vw, 2.75rem);
  max-width: min(
    calc(100% - (var(--mc-sec-band-gutter) * 2)),
    calc(var(--mc-grid-max, 64rem) + var(--mc-sec-band-overhang))
  ) !important;
  width: 100% !important;
  margin-inline: auto !important;
  padding-inline: var(--mc-sec-band-pad-x) !important;
  border-radius: clamp(1rem, 2.2vw, 1.75rem);
  overflow-x: clip;
}

/* 全面写真は端までブリード（余白は inner 側） */
.mc-main > .mc-hero.mc-hero--cover,
.mc-main > section.mc-hero.mc-hero--cover,
.mc-main > .mc-hero.mc-hero--cover-base,
.mc-main > section.mc-hero.mc-hero--cover-base {
  padding-inline: 0;
}

.mc-main .mc-section.alignfull > .alignwide,
.mc-main .mc-sec--bleed > .mc-sec__inner,
.mc-main .mc-hero .mc-hero__grid,
.mc-main .mc-hero .mc-hero__inner {
  box-sizing: border-box;
  max-width: var(--mc-grid-max);
  width: 100%;
  margin-inline: auto;
  min-width: 0;
}

/* CTA はコンテンツ幅レール（カード型パネル） */
.mc-main > .wp-block-group.mc-cta.alignwide,
.mc-main > .wp-block-group.mc-cta {
  box-sizing: border-box;
  max-width: var(--mc-grid-max) !important;
  width: 100% !important;
  margin-inline: auto !important;
  padding-inline: var(--mc-grid-pad);
  overflow-x: clip;
  background: transparent;
}

/*
 * constrained レイアウトの contentSize(45rem) を無効化し、
 * セクション内の見出し・本文・カードを同じ幅に揃える。
 */
.mc-main .mc-section.is-layout-constrained > :where(:not(.alignfull)),
.mc-main .mc-section .alignwide.is-layout-constrained > :where(:not(.alignfull)),
.mc-main .mc-sec .alignwide.is-layout-constrained > :where(:not(.alignfull)),
.mc-main .mc-hero.is-layout-constrained > :where(:not(.alignfull)),
.mc-site-header.is-layout-constrained > :where(:not(.alignfull)),
.mc-site-footer.is-layout-constrained > :where(:not(.alignfull)) {
  max-width: 100% !important;
}

/* カード／カルーセル／グリッドは親レールいっぱいに（二重センタリングしない） */
.mc-grid,
.mc-carousel,
.mc-dads-card-list,
.mc-icon-grid {
  box-sizing: border-box;
  max-width: 100%;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
  min-width: 0;
}

.mc-icon-grid--stack {
  max-width: 100%;
}

/* Equal-width card grid (3 → 2 → 1) */
.mc-dads-card-list {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1.25rem, 2.5vw, 1.75rem);
  align-items: stretch;
  flex-wrap: unset;
}

.mc-dads-card-list > li {
  display: flex;
  min-width: 0;
  flex: unset;
  max-width: none;
  width: 100%;
  /* 影が隣カードに食い込まないよう余裕を確保 */
  padding: 2px;
}

.mc-dads-card-list .mc-dads-card {
  max-width: none;
  width: 100%;
  height: 100%;
}

@media (max-width: 64rem) {
  .mc-dads-card-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 40rem) {
  .mc-dads-card-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Carousel slides share the same column math */
.mc-carousel__track {
  align-items: stretch;
  gap: var(--mc-grid-gap, 1.5rem);
}

.mc-carousel__track > li {
  /* padding 分を差し引き、3枚が欠けずに収まるようにする */
  flex: 0 0 calc((100% - (var(--mc-grid-gap, 1.5rem) * 2) - 6px) / 3);
  max-width: calc((100% - (var(--mc-grid-gap, 1.5rem) * 2) - 6px) / 3);
  min-width: 0;
  align-self: stretch;
  display: flex;
  align-items: stretch;
}

.mc-carousel__track > li > * {
  flex: 1 1 auto;
  width: 100%;
  min-height: 100%;
  box-sizing: border-box;
}

@media (max-width: 64rem) {
  .mc-carousel__track > li {
    flex: 0 0 calc((100% - var(--mc-grid-gap, 1.5rem) - 4px) / 2);
    max-width: calc((100% - var(--mc-grid-gap, 1.5rem) - 4px) / 2);
  }
}

@media (max-width: 40rem) {
  .mc-carousel__track > li {
    flex: 0 0 calc(100% - 2px);
    max-width: calc(100% - 2px);
  }
}

.mc-carousel__track > li > .mc-dads-card {
  max-width: none;
  width: 100%;
  height: 100%;
}

/* Hero / CTA grids */
.mc-hero__grid,
.mc-hero__inner {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: center;
  width: 100%;
  max-width: var(--mc-grid-max);
  margin-inline: auto;
  min-width: 0;
}

.mc-hero--split-reverse .mc-hero__grid,
.mc-hero--split-reverse .mc-hero__inner {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
}

.mc-hero--split-reverse .mc-hero__media {
  order: -1;
}

.mc-hero--stack .mc-hero__grid,
.mc-hero--stack .mc-hero__inner,
.mc-hero--text .mc-hero__grid,
.mc-hero--text .mc-hero__inner,
.mc-hero--cover-base .mc-hero__grid,
.mc-hero--cover-base .mc-hero__inner,
.mc-hero--cover .mc-hero__grid,
.mc-hero--cover .mc-hero__inner {
  grid-template-columns: minmax(0, 1fr);
}

.mc-hero--stack .mc-hero__media {
  order: -1;
  max-width: 36rem;
  margin-inline: auto;
}

.mc-hero--text .mc-hero__copy,
.mc-hero--cover-base .mc-hero__copy,
.mc-hero--cover .mc-hero__copy {
  max-width: 40rem;
}

.mc-hero__copy {
  min-width: 0;
  overflow-wrap: anywhere;
}

.mc-hero__copy .wp-block-heading,
.mc-hero__copy p,
.mc-hero__title,
.mc-hero__lead {
  overflow-wrap: anywhere;
  word-break: normal;
  max-width: 100%;
}

.mc-cta__grid {
  display: contents;
}

@media (max-width: 48rem) {
  .mc-hero__grid,
  .mc-hero__inner,
  .mc-hero--split-reverse .mc-hero__grid,
  .mc-hero--split-reverse .mc-hero__inner {
    grid-template-columns: minmax(0, 1fr);
  }

  .mc-hero--split .mc-hero__media,
  .mc-hero--split-reverse .mc-hero__media {
    order: -1;
  }
}

/* カレンダーが親レールを突き破らないように */
.mc-sec .miraichat-calendar-section,
.mc-sec .miraichat-hours-section,
.mc-main .miraichat-calendar-section,
.mc-main .miraichat-hours-section {
  max-width: 100% !important;
  width: 100% !important;
  margin-inline: 0 !important;
  padding-inline: 0 !important;
  box-sizing: border-box;
}

.mc-sec .miraichat-calendar-section--week-board,
.mc-sec .ol-content-frame.miraichat-calendar-section--week-board {
  max-width: 100% !important;
  width: 100% !important;
  padding-inline: 0 !important;
}

.mc-sec .miraichat-wk__board,
.mc-sec .miraichat-wk__strip,
.mc-sec .miraichat-hours-section,
.mc-sec .miraichat-hours-strip {
  max-width: 100%;
  box-sizing: border-box;
  min-width: 0;
}

.mc-sec .miraichat-wk__strip,
.mc-sec .miraichat-hours-strip {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.mc-main > .mc-sec.mc-sec--schedule,
.mc-main > .mc-sec.mc-sec--corp_schedule {
  overflow-x: clip;
}

/* 記事・固定ページ本文：読み幅に揃え、画像もはみ出させない */
.mc-main--article .entry-content.is-layout-constrained > :where(:not(.alignwide):not(.alignfull)),
.mc-main--article > .wp-block-post-content.is-layout-constrained > :where(:not(.alignwide):not(.alignfull)),
.mc-main--article .wp-block-post-content > :where(:not(.alignwide):not(.alignfull):not(.wp-block-group)) {
  max-width: var(--wp--style--global--content-size, 45rem) !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}

.mc-main--article .wp-block-post-content .alignwide,
.mc-main--article .wp-block-post-content .alignfull,
.mc-main--article .wp-block-post-content .wp-block-image {
  max-width: 100% !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}

.mc-main--article .wp-block-post-content img,
.mc-main--article .wp-block-post-content figure,
.mc-main--article .wp-block-post-content .wp-block-image img {
  max-width: 100%;
  height: auto;
}

.mc-main--wide .wp-block-post-content > * {
  max-width: 100% !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}
