/**
  * style-overrides.css
  * 既存のスタイルを上書きするためのCSSファイル
  * 追加のスタイルはここに記述してください。
  */

/* ベースのCSSを上書き */

p {
  word-break: break-all;
}

/* 長い URL をリンクテキストにしている箇所（プライバシーポリシー等）で、
 * 折り返されずに画面幅を超え、ページ全体へ横スクロールが出るのを防ぐ。
 * 上の word-break は p だけに効くため、li 直下のリンクはリンク側で折り返す。
 */
a {
  overflow-wrap: break-word;
}

/* 左アイコン付きテキストリンクの折り返し崩れ対策。
 * アイコンは :before の絶対配置＋ padding-left（2em）で作られているため、
 * インラインのままだと折り返した 2 行目以降がアイコンの下へ潜り込む。
 * inline-block にして padding-left を全行へ効かせる。
 * block にするとリスト（li）のマーカーとリンクが別行に割れるため使わない。
 * overflow-wrap: anywhere は折り返し許可に加えて min-content も縮めるため、
 * 長い URL でも inline-block の shrink-to-fit が画面幅を超えない。
 * word-break は p 由来の break-all を打ち消し、[PDF：94KB] のような
 * 塊が途中で切れるのを防ぐ（必要なときだけ overflow-wrap で折る）。
 * ボタン（.c-btn）と「→」型リンク（.u-icon-roundRight）は
 * 幅・配置が別設計のため対象外。
 */
a.u-icon.u-icon-left:not(.c-btn):not(.u-icon-roundRight) {
  display: inline-block;
  vertical-align: top;
  word-break: normal;
  overflow-wrap: anywhere;
}

/* 基底の :before は上下中央寄せのため、2 行になるとアイコンが行間に来る。
 * テーマ自身の top: .1em（.c-card_title.u-icon-left）に合わせて 1 行目へ揃える。
 */
a.u-icon.u-icon-left:not(.c-btn):not(.u-icon-roundRight)::before {
  top: 0.1em;
  bottom: auto;
  margin: 0;
}

/* 表（.c-table は table を包む div）は列幅の下限で画面幅を超えることがあるため、
 * ページ全体ではなく表の中で横スクロールさせる（サイトポリシーの動作環境表）。
 */
div.c-table {
  overflow-x: auto;
}

.u-ta-right {
  margin-top: 2em;
}

.c-news_item {
  padding-left: 0 !important;
  text-indent: 0 !important;
}

.c-news_item::before {
  display: none !important;
}

/* トップページ メインビジュアル（mainvisual.js 用カルーセル）
 * 全スライドをグリッドの同一セルへ重ね、表示中（aria-hidden="false"）だけを
 * フェードインさせる。切り替えは mainvisual.js が aria-hidden を付け替えて行う。
 */
.p-mainVisual .c-carousel_main {
  display: grid;
}

.p-mainVisual .c-carousel_main::before,
.p-mainVisual .c-carousel_main::after {
  display: none;
}

.p-mainVisual .c-carousel_item {
  position: relative;
  grid-area: 1 / 1;
  float: none;
  max-width: 100%;
  margin-top: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.8s ease;
  will-change: opacity;
}

.p-mainVisual .c-carousel_item[aria-hidden="false"] {
  opacity: 1;
  pointer-events: auto;
}

/* 表示中のスライドだけ画像をゆっくり拡大する（はみ出しは枠でクリップ）。
 * aria-hidden が false へ変わるたびにアニメーションが掛け直され、頭から再生される。
 * 再生時間は表示間隔と同じ 4 秒。短いと途中で終わり、長いと切り替え時に
 * 再生中の値から静止値（scale(1.06)）へ飛んでカクつくため、必ず揃える。
 */
.p-mainVisual .c-visual_image {
  overflow: hidden;
}

/* 非表示側は拡大後の状態で置く。フェードアウト中に等倍へ戻って見えるのを防ぐ。 */
.p-mainVisual .c-visual_image img {
  transform: scale(1.06);
  will-change: transform;
  backface-visibility: hidden;
}

.p-mainVisual .c-carousel_item[aria-hidden="false"] .c-visual_image img {
  animation: mainVisualZoom 4s linear forwards;
}

@keyframes mainVisualZoom {
  /* 等倍だと合成レイヤーから外れて再生開始時にちらつくため、わずかに拡大した値から始める */
  from {
    transform: scale(1.00001);
  }

  to {
    transform: scale(1.06);
  }
}

@media (prefers-reduced-motion: reduce) {
  .p-mainVisual .c-carousel_item {
    transition: none;
  }

  .p-mainVisual .c-visual_image img {
    transform: none;
  }

  .p-mainVisual .c-carousel_item[aria-hidden="false"] .c-visual_image img {
    animation: none;
  }
}

/* 画像右下の物件名 */
.p-mainVisual_property {
  position: absolute;
  right: 24px;
  bottom: 12px;
  margin: 0;
  color: #fff;
  font-size: 10px;
  line-height: 1.5;
  text-shadow: 0 0 4px rgba(0, 0, 0, 0.6);
}

/* トップページ Message セクション */
.p-topMessage {
  margin-top: 80px;
  margin-bottom: 40px;
  text-align: center;
}

.p-topMessage_label {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
}

.p-topMessage_heading {
  margin-top: 8px;
  padding-bottom: 0;
  border-bottom: 0;
  font-size: 32px;
  font-weight: 700;
}

.p-topMessage_heading::after {
  display: none;
}

.p-topMessage_text {
  margin-top: 40px;
  font-size: 16px;
  line-height: 2.6;
}

@media only screen and (max-width: 599px) {
  .p-topMessage {
    margin-top: 48px;
  }

  .p-topMessage_heading {
    font-size: 22px;
  }

  .p-topMessage_text {
    line-height: 2;
  }

  /* SP はカンプの改行位置を解除し、自然な折り返しにする */
  .p-topMessage_text br {
    display: none;
  }
}

/* メインビジュアルのキャッチコピーのスタイルを上書き */
.main-visual-catch {
  position: absolute;
  top: 10%;
  width: 100%;
}

.main-visual-catch__background {
  background-color: rgba(0, 0, 0, 0.6);
  font-family: serif;
  display: inline-block;
  padding: min(3vw, 30px) min(3vw, 30px) min(2.4vw, 22px);
}

.main-visual-catch__text {
  font-family: serif;
  color: white;
  margin: 8px 0 0;
  font-size: min(2vw, 14px);
  line-height: 1.8;
  font-family:"Noto Sans JP","-Hiragino",Meiryo,sans-serif;
}

.main-visual-catch__heading {
  font-family: serif;
  color: white;
  margin: 0;
  font-size: min(3.6vw, 32px);
  line-height: 1.5;
}

.main-visual-catch__heading span,
.main-visual-catch__text span {
  display: inline-block;
}

@media only screen and (max-width: 599px) {
  .c-carousel_body {
    padding-bottom: 156px;
  }

  /* SP は正方形画像に切り替わるため、キャッチを画像下の余白へ回す */
  .p-mainVisual .c-visual_image img {
    aspect-ratio: 1 / 1;
  }

  .p-mainVisual .main-visual-catch {
    top: auto;
    bottom: 0;
  }

  .p-mainVisual .main-visual-catch__background {
    display: block;
    padding: 16px;
  }

  .p-mainVisual .main-visual-catch__heading {
    font-size: 17px;
    letter-spacing: -0.02em;
  }

  .p-mainVisual .main-visual-catch__text {
    font-size: 12px;
  }

  .p-mainVisual_property {
    right: 16px;
    bottom: 8px;
    font-size: 10px;
  }
}

.main-visual-catch-small {
  position: absolute;
  bottom: 0;
  width: 100%;
}

.main-visual-catch-small__background {
  background-color: rgba(0, 0, 0, 0.6);
  padding: 16px;
}

.main-visual-catch-small__text {
  font-family: serif;
  color: white;
  margin: 0 0 4px;
  font-size: 14px;
  line-height: 1.8;
}

.main-visual-catch-small__heading {
  font-family: serif;
  color: white;
  margin: 0;
  font-size: 24px;
  line-height: 1.5;
}

.main-visual-catch-small__heading span,
.main-visual-catch-small__text span {
  display: inline-block;
}

/* メインビジュアル下のお悔やみ・お見舞い文 */
.main-visual-condolence {
  background-color: #f9f7f6;
  padding: 16px 0;
  display: flex;
  justify-content: center;
}

.main-visual-condolence__text {
  margin: 0;
  font-size: 14px;
  line-height: 1.8;
  word-break: normal;
}

@media only screen and (max-width: 599px) {
  .main-visual-condolence {
    margin: 16px 20px;
  }

  .main-visual-condolence__text {
    text-align: justify;
  }
}

/* トップページのツリー画像を上書き */
.top-group-tree .is-mobile {
  display: none;
}

@media only screen and (max-width: 599px) {
  .top-group-tree .is-mobile {
    display: inline;
  }

  .top-group-tree .is-desktop {
    display: none;
  }
}

/* フッターのスタイルを上書き */

.g-footerBottom {
  display: flex;
  flex-direction: row-reverse;
  justify-content: space-between;
  padding: 20px 0;
}

.g-footerBottom_before {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
}

.g-footerSubNav_list,
.g-footerSubNav_listItem,
.g-siteFooter_copyright {
  margin: 0;
}

.g-footerSubNav_list {
  display: flex;
  gap: 16px;
}

.g-footerSubNav_listItem {
  font-size: 12px;
}

.g-footerSubNav_listItem .u-icon.u-icon-linkBlank:before {
  background-size: 14px 14px;
  width: 14px;
  height: 14px;
}

.g-siteFooter_copyright {
  font-size: 11px;
}

.g-footerBottom_after {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 32px;
}

@media only screen and (max-width: 960px) {
  .g-footerBottom {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 16px;
    padding: 40px 0;
  }

  .g-footerBottom_before {
    align-items: center;
    justify-content: center;
    gap: 16px;
  }
}

@media only screen and (max-width: 599px) {
  .g-footerBottom {
    gap: 36px;
  }

  .g-footerBottom_after {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 16px;
  }
}

/**
  * footer upper style
  */

.g-footerUpper {
  background-color: #f9f7f6;
}

.g-footerUpper_inner {
  max-width: 1300px;
  margin: 0 auto;
  padding: 20px;
  display: flex;
  flex-direction: row-reverse;
  justify-content: space-between;
  align-items: center;
}

@media only screen and (max-width: 599px) {
  .g-footerUpper_inner {
    flex-direction: column-reverse;
    justify-content: center;
    align-items: start;
    gap: 24px;
  }
}

/**
  * footer group link style
  */

.g-footerGroupLink {
  padding: 40px 20px;
  border-bottom: 1px solid #ccc;
}

@media only screen and (max-width: 599px) {
  .g-footerGroupLink_box {
    padding: 20px;
  }
}

.g-footerGroupLink_inner {
  max-width: 823px;
  margin: 0 auto;
}

.g-footerGroupLink_title {
  margin-bottom: 4px;
  margin-top: 0;
}

.g-footerGroupLink_box {
  background-color: #f9f7f6;
  width: 100%;
  max-width: 819px;

  padding: 32px;
  margin: 0 auto;
}

@media only screen and (max-width: 599px) {
  .g-footerGroupLink_box {
    padding: 24px;
  }
}

.g-footerGroupLink_hhh {
  width: 100%;
  max-width: 342.24px;
  padding: 0 8px;
  margin: 0 auto 16px;
}

.g-footerGroupLink_hhh img {
  width: 100%;
}

@media only screen and (max-width: 599px) {
  .g-footerGroupLink_hhh {
    margin-bottom: 24px;
  }
}

.g-footerGroupLink_links {
  display: grid;
  grid-template-rows: auto;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;

  width: 100%;
}

@media only screen and (max-width: 599px) {
  .g-footerGroupLink_links {
    grid-template-columns: repeat(1, 1fr);
    gap: 8px;
  }
}

.g-footerGroupLink_link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 64px;
  background-color: white;
  border: 1px solid #e4e4e4;
  max-width: 250px;
  padding: 0 16px;
}

@media only screen and (max-width: 599px) {
  .g-footerGroupLink_link {
    max-width: 100%;
    padding: 0;
  }
}

.g-footerGroupLink_link:hover {
  border-color: #00418f;
}

.g-footerGroupLink_img {
  display: block;
  width: 100%;
}
.g-footerGroupLink_img--hhm {
  position: relative;
  top: 3.5px;
  max-width: 147.3px;
}
.g-footerGroupLink_img--hsd {
  max-width: 152.37px;
}
.g-footerGroupLink_img--wf {
  max-width: 154.2px;
}

/* ヘッダーメインナビの外部リンクアイコン
 * テーマ標準は :before に外部リンクアイコンを「左」表示（PC幅では !important で非表示）。
 * 本サイトはテキストの「右」に出す方針のため、自動の :before アイコンを抑止し、
 * markup 側の <i class="u-icon u-icon-linkBlank"> でテキスト右に表示する。
 * （抑止しないとモバイルで左右2つ出るため） 
 */
.g-headerNav_listItemLink[href^="http"][target="_blank"]::before {
  display: none !important;
}

.g-headerNav_listItemLink i.u-icon.u-icon-linkBlank {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
}

/**
  * pdf-link
  */
.pdf-link {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  margin-top: 32px;
}

small {
  font-size: 12px;
}

/**
  * c-groupBusiness（グループの総合力 3x3 マップ）
  */
.c-groupBusiness {
  margin: 32px 0 8px;
}

.c-groupBusiness_list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.c-groupBusiness_item {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 4 / 2;
  padding: 8px !important;
  text-indent: 0 !important;
  color: #fff;
  font-weight: 700;
  line-height: 1.6;
  text-align: center;
  background: linear-gradient(135deg, #3a7bd5 0%, #00418f 100%);
  border-radius: 8px;
  
}

.c-groupBusiness_item::before {
  display: none !important;
}

.c-groupBusiness_item-logo {
  background: none;
  border-radius: 0;
}

.c-groupBusiness_item-hhh {
  flex-direction: column;
  gap: 8px;
  background: linear-gradient(135deg, #d4d63a 0%, #b2b61e 100%);
}

.c-groupBusiness_item-hhh img {
  width: 60%;
  height: auto;
  max-width: 240px;
}

.c-groupBusiness_item-logo img {
  width: 100%;
  height: auto;
  max-width: 220px;
}

@media only screen and (max-width: 599px) {
  .c-groupBusiness_list {
    gap: 8px;
  }

  .c-groupBusiness_item {
    padding: 4px !important;
    font-size: 11px;
    aspect-ratio: 4 / 3;
  }

  .c-groupBusiness_item-hhh {
    gap: 4px;
  }

  .c-groupBusiness_item-hhh img {
    width: 95%;
  }
}

/**
  * c-groupList（グループ会社一覧：左固定画像＋右スクロールリスト）
  */
.c-groupList {
  display: flex;
  align-items: flex-start;
  gap: 40px;
  margin-top: 24px;
}

.c-groupList_visual {
  position: sticky;
  top: 24px;
  flex: 1 1 0;
  height: calc(100vh - 48px);
  overflow: hidden;
}

.c-groupList_figure {
  position: relative;
  width: 100%;
  height: 100%;
  margin: 0;
}

.c-groupList_figure-sp {
  display: none;
}

.c-groupList_image {
  /* 下端固定：画像下端を枠の下端に合わせ、はみ出す上側を親の overflow:hidden で切る */
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: auto;
  opacity: 0;
  transition: opacity 0.6s ease;
}

.c-groupList_image.is-active {
  opacity: 1;
}

.c-groupList_body {
  flex: 1 1 0;
  min-width: 0;
  margin: 40px 0;
}

.c-groupList_body > *:first-child {
  margin-top: 0;
}

.c-groupList_body > ul li {
  margin: 8px 0;
}

@media only screen and (max-width: 959px) {
  .c-groupList {
    display: block;
    margin-top: 16px;
  }

  .c-groupList_visual {
    position: static;
    width: 100%;
    height: auto;
    margin-bottom: 24px;
  }

  .c-groupList_figure {
    height: auto;
  }

  .c-groupList_figure-pc {
    display: none;
  }

  .c-groupList_figure-sp {
    display: block;
  }

  /* モバイルは1枚目のみ表示・切り替えなし */
  .c-groupList_figure-sp .c-groupList_image {
    position: relative;
    height: auto;
    opacity: 0;
  }

  .c-groupList_figure-sp .c-groupList_image[data-index="0"] {
    opacity: 1;
  }

  .c-groupList_figure-sp .c-groupList_image:not([data-index="0"]) {
    display: none;
  }
}

/**
  * c-resultCards（主な分譲実績：画像＋名称のカードグリッド）
  */
.c-resultCards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px 16px;
  margin: 24px 0 0;
  padding: 0;
  list-style: none;
}

.c-resultCards_item {
  padding: 0 !important;
  text-indent: 0 !important;
}

.c-resultCards_item::before {
  display: none !important;
}

.c-resultCards_img {
  aspect-ratio: 540 / 352;
  overflow: hidden;
  border-radius: 4px;
}

.c-resultCards_img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.c-resultCards_name {
  margin: 12px 0 0;
  font-size: 15px;
  line-height: 1.6;
}

@media only screen and (max-width: 599px) {
  .c-resultCards {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px 12px;
  }
}

/**
  * c-prefList（分譲物件一覧：県バッジ＋物件名の2カラムリスト）
  */
.c-prefList {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px 40px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
}

.c-prefList_item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 0 !important;
  text-indent: 0 !important;
  font-size: 15px;
  line-height: 1.6;
}

.c-prefList_item::before {
  display: none !important;
}

.c-prefBadge {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 72px;
  padding: 3px 12px;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  background-color: #1b50a1;
  border-radius: 3em;
}

@media only screen and (max-width: 599px) {
  .c-prefList {
    grid-template-columns: 1fr;
    gap: 12px;
  }
}

/**
  * 事業案内 イントロ・画像キャプション
  */
.c-mediaCaption {
  margin-top: 8px;
  color: #757575;
  font-size: 12px;
  text-align: right;
}