/* ビル情報 — リスト (/building-info/) と詳細 (/building-info/<slug>/) 共通 */
/* margin/padding のリセット・ベースフォントは base.css 側で共通定義済み */

html, body {
    color: var(--color-text-base);
}
/* iOS WebView はタップ時のネイティブハイライトが遷移後も矩形で焼き付くため無効化 */
.kajima-info-list__link,
.kajima-info-detail__back,
.kajima-category-group__title-link {
    -webkit-tap-highlight-color: transparent;
}

/* ---------- リスト画面 ---------- */
body.kajima-info-list-page,
body.kajima-info-category-page { background: var(--color-page-bg); }

.kajima-info-body {
    padding: 0.75rem 0.75rem calc(env(safe-area-inset-bottom, 0) + 4rem);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
/* カテゴリー別一覧ページ(page-building-info-category.php)には情報ウィジェットが無く、
 * .kajima-info-body がタブヘッダー直下の先頭要素になる。一覧ページでは .info-widget が
 * タブヘッダー分のpaddingを担っているため、こちらだけ追加で確保する必要がある。 */
body.kajima-info-category-page .kajima-info-body {
    padding-top: calc(env(safe-area-inset-top, 0) + var(--tabs-height) + 0.75rem);
}

/*
 * コンテンツカテゴリー単位のセクション。見出し + そのカテゴリーの記事一覧を
 * 1 枚の角丸白カードに見せる構造:
 *   .kajima-category-group が外側のカード(白背景 + 角丸 + overflow:hidden)
 *   見出し(__title)とリンク行(li > a)がそれぞれ border-bottom で区切られ、最後だけ消える
 *   ※ 見出し/リンク自体には角丸を付けない（最初/最後の行は overflow:hidden で角丸が出る）
 */
.kajima-category-group {
    background: var(--color-surface);
    border-radius: 0.5rem;
    overflow: hidden;
}
.kajima-category-group__title {
    margin: 0;
    border-bottom: 1px solid var(--color-border-subtle);
}
/* アイコン+テキストのレイアウトとクリック領域をリンク自体に持たせる（見出し全体をタップ可能にする） */
.kajima-category-group__title-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 1.25rem; /* アイコン(20x20px)の有無で見出しの高さが変わらないようにする */
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1;
    color: var(--color-text-secondary);
    text-decoration: none;
    padding: 1rem 1.25rem;
    transition: background 0.1s ease;
}
/* hover はマウス端末のみ（理由は一覧リンクと同じ） */
@media (hover: hover) {
    .kajima-category-group__title-link:hover {
        background: #f7f7f7;
    }
}
.kajima-category-group__title-link:focus-visible {
    background: #f7f7f7;
    outline: none;
}
.kajima-category-group__icon {
    display: block;
    flex-shrink: 0;
}

.kajima-info-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.kajima-info-list__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.5rem 1.25rem;
    border-bottom: 1px solid var(--color-border-subtle);
    text-decoration: none;
    color: inherit;
    transition: background 0.1s ease;
}
.kajima-info-list li:last-child .kajima-info-list__link {
    border-bottom: 0;
}
/* hover はマウス端末のみ。タッチでは hover が解除されず背景が焼き付くため除外 */
@media (hover: hover) {
    .kajima-info-list__link:hover {
        background: #f7f7f7;
    }
}
.kajima-info-list__link:focus-visible {
    background: #f7f7f7;
    outline: none;
}
.kajima-info-list__title {
    flex: 1;
    font-size: 0.85rem;
    line-height: 1.4;
    color: var(--color-text-secondary);
}
/* SVG(stroke=currentColor)にしているのは、テキスト文字(›)だとフォントのグリフ位置に依存して
   縦中央からズレて見え、線の太さも font-weight でしか近似できなかったため。
   flexの縦中央(align-items:center)はSVG自体の見た目上の矩形に対して効くので、正確に中央揃えできる。 */
.kajima-info-list__chevron {
    color: var(--color-accent);
    flex-shrink: 0;
    display: block;
}
.kajima-info-list__empty {
    padding: 3rem 1.25rem;
    text-align: center;
    color: #777;
}

/* PC breakpoint (768px) — see assets/css/variables.css --bp-pc
 * 一覧ページはカテゴリーセクション単位で2カラムグリッドにする。
 * 左右の余白は要素側のpaddingではなく、外側を囲う .kajima-info-content（コンテンツ幅1100px）に任せる。 */
@media (min-width: 768px) {
    body.kajima-info-list-page .kajima-info-body {
        padding-left: 0;
        padding-right: 0;
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        align-items: start; /* セクションごとに記事数が違い高さが不揃いなため、上揃えにする */
    }

    body.kajima-info-category-page .kajima-info-body {
        padding-left: 0;
        padding-right: 0;
    }
}

/* PC breakpoint (768px) — see assets/css/variables.css --bp-pc
 * ビル情報3画面（一覧/カテゴリー別一覧/詳細）共通のコンテンツ幅ラッパー。
 * モバイルでは max-width が画面幅より常に大きいため無効化不要（レイアウトに影響しない）。 */
@media (min-width: 768px) {
    .kajima-info-content {
        max-width: var(--layout-content-width-pc);
        margin: 0 auto;
    }
}

/* ---------- 情報ウィジェット ---------- */

/* タブヘッダー分のpaddingはここで管理。kajima-info-bodyの外に配置される。
 * --tabs-height は tabs.css の .kajima-tabs 実高さの決め打ち複製（variables.css参照）。 */
.info-widget {
    padding-top: calc(env(safe-area-inset-top, 0) + var(--tabs-height) + 0.75rem);
}

/*
 * クリップラッパー: overflow:hidden でウィジェット外への横スクロールを防ぎつつ、
 * 内側の Swiper は overflow:visible で左右カードをはみ出し表示できる。
 * kajima-info-body の外に出たので width/margin の調整は不要。
 */
.info-widget__swiper-clip {
    overflow: hidden;
}

.info-widget__swiper {
    overflow: visible;
    width: 100%;
}

/* 各スライドはレイアウト用の薄いラッパー — 見た目は .info-widget__card が担う */
.info-widget__slide {
    box-sizing: border-box;
}

/* 各スライドの独立カード */
.info-widget__card {
    border-radius: 0.75rem;
    color: #fff;
    padding: 1.1rem 1rem 0.75rem;
    height: var(--info-widget-card-height);
    overflow: hidden;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    background: #5aa9d6; /* 背景クラスが付かない場合のフォールバック */
    box-shadow: 0 0 1px rgba(0,0,0,.1);
}

/* 天気カード — 背景: 天気×時間帯 */
/* 晴れ: 早朝/昼/夕方/夜 の4パターン */
.weather-bg--sunny-morning  { background: linear-gradient(180deg, #75AED7 0%, #E29666 100%); }
.weather-bg--sunny-day      { background: linear-gradient(180deg, #0977C4 0%, #4BA6E6 100%); }
.weather-bg--sunny-evening  { background: linear-gradient(180deg, #0B7CCB 0%, #CA7B49 100%); }
.weather-bg--sunny-night    { background: linear-gradient(180deg, #0B7CCB 0%, #001B2E 100%); }
/* 晴れの早朝・夕方は背景が明るく、明色の文字/アイコンが溶ける。
   背景色(Figma)は変えず、文字とアイコン側に影を付けて視認性を確保する
   （曇り/雨/雪などは背景自体が暗いので影は不要）*/
.weather-bg--sunny-morning,
.weather-bg--sunny-evening {
    text-shadow: 0 1px 2px rgba(0, 0, 0, .45);
}
.weather-bg--sunny-morning .info-widget__weather-current-icon,
.weather-bg--sunny-morning .info-widget__weather-icon,
.weather-bg--sunny-morning .info-widget__weather-arrow,
.weather-bg--sunny-evening .info-widget__weather-current-icon,
.weather-bg--sunny-evening .info-widget__weather-icon,
.weather-bg--sunny-evening .info-widget__weather-arrow {
    filter: drop-shadow(0 1px 1.5px rgba(0, 0, 0, .5));
}
/* 曇り: 昼（早朝も同じ）/ 夜（夕方も同じ） （背景のみ暗くする：多重レイヤーで半透明オーバーレイ）*/
/* オーバーレイ値は Figma 設定に合わせて統一: 昼=#5C5C5C 60% / 夜=#111111 60% */
.weather-bg--cloudy              { background: linear-gradient(rgba(92,92,92,.6), rgba(92,92,92,.6)), url('../img/weather/backgrounds/cloudy.png') center / cover no-repeat; }
.weather-bg--cloudy-night        { background: linear-gradient(rgba(17,17,17,.6), rgba(17,17,17,.6)), url('../img/weather/backgrounds/cloudy.png') center / cover no-repeat; }
/* 雨: 昼 / 夜 */
.weather-bg--rainy               { background: linear-gradient(rgba(92,92,92,.6), rgba(92,92,92,.6)), url('../img/weather/backgrounds/rain.png') center / cover no-repeat; }
.weather-bg--rainy-night         { background: linear-gradient(rgba(17,17,17,.6), rgba(17,17,17,.6)), url('../img/weather/backgrounds/rain.png') center / cover no-repeat; }
/* 雪: 昼 / 夜 */
.weather-bg--snowy               { background: linear-gradient(rgba(92,92,92,.6), rgba(92,92,92,.6)), url('../img/weather/backgrounds/snow.png') center / cover no-repeat; }
.weather-bg--snowy-night         { background: linear-gradient(rgba(17,17,17,.6), rgba(17,17,17,.6)), url('../img/weather/backgrounds/snow.png') center / cover no-repeat; }
/* 雷雨: 昼 / 夜 */
.weather-bg--thunderstorm        { background: linear-gradient(rgba(92,92,92,.6), rgba(92,92,92,.6)), url('../img/weather/backgrounds/thunder.png') center / cover no-repeat; }
.weather-bg--thunderstorm-night  { background: linear-gradient(rgba(17,17,17,.6), rgba(17,17,17,.6)), url('../img/weather/backgrounds/thunder.png') center / cover no-repeat; }
/* 霧: 昼 / 夜 */
.weather-bg--mist                { background: linear-gradient(rgba(92,92,92,.6), rgba(92,92,92,.6)), url('../img/weather/backgrounds/mist.png') center / cover no-repeat; }
.weather-bg--mist-night          { background: linear-gradient(rgba(17,17,17,.6), rgba(17,17,17,.6)), url('../img/weather/backgrounds/mist.png') center / cover no-repeat; }

.info-widget__slide-title {
    font-size: 0.78rem;
    font-weight: 700;
    margin: 0 0 0.6rem;
}

/* 天気カード — SF Pro Rounded（ui-rounded で iOS/macOS 上では SF Pro Rounded が使われる） */
.info-widget__card {
    font-family: var(--font-family-rounded);
    font-weight: 400;
}

/* 天気カード — 上段（現在の天気） */
.info-widget__weather-upper {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex: 0 0 auto;
    gap: 0.4rem;
}
.info-widget__weather-current-temp {
    align-self: flex-start; /* 親(.info-widget__weather-upper)のalign-items:centerを打ち消し、上辺基準にする */
    font-size: 2rem;
    font-weight: 300;
    line-height: 1;
    letter-spacing: 0.05em;
    flex-shrink: 0;
}
.info-widget__weather-current-icon { display: block; flex-shrink: 0; margin-bottom: 5px;}
/* 最高/最低気温を横並びに。アイコンは行の縦中央揃え(親 .info-widget__weather-upper の
 * align-items:center)のまま変えず、この要素だけ align-self で現在気温の上辺基準に揃える。
 * ぴったり上辺に揃えると数字の見た目上のアキで現在気温より高く見えるため、少しだけ下げる。 */
.info-widget__weather-minmax {
    display: flex;
    flex-direction: row;
    align-self: flex-start;
    margin-top: 0.2rem;
    gap: 0.35rem;
    font-size: 0.75rem;
    font-weight: 300;
    letter-spacing: 0.05em;
    flex-shrink: 0;
}
.info-widget__weather-minmax-item {
    display: flex;
    align-items: center;
    gap: 0.15rem;
}
.info-widget__weather-arrow {
    display: block;
    flex-shrink: 0;
}
.info-widget__weather-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.15rem;
    flex-shrink: 0;
    margin-left: auto;
}
.info-widget__weather-area { font-size: 0.75rem; font-weight: 500; margin-top: 0.2rem;}
.info-widget__weather-time { font-size: 0.75rem; font-weight: 300; letter-spacing: 0.05em; }

/* 天気カード — 下段（時間別予報） */
.info-widget__weather-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: space-between;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    flex: 1 1 auto;
    align-items: center;
}
.info-widget__weather-list::-webkit-scrollbar { display: none; }

.info-widget__weather-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    /* flex:1 1 0 の均等幅カラムだと中身が中央寄せされ、先頭が左端(上段の開始位置)からずれる。
       中身幅にして space-between で並べると、先頭=左端 / 末尾=右端 に揃う。
       各アイテム幅は最も広い 24px アイコンで一定になるため、間隔もすべて等間隔になる */
    flex: 0 0 auto;
}
.info-widget__weather-label { font-size: 0.8125rem; font-weight: 400; }
.info-widget__weather-icon  { display: block; }
.info-widget__weather-temp  { font-size: 0.8125rem; font-weight: 300; }

/* エラー表示 */
.info-widget__card--error {
    background: linear-gradient(180deg, #0977C4 0%, #4BA6E6 100%);
    justify-content: center;
    align-items: center;
}
.info-widget__error-msg {
    font-size: 0.8rem;
    opacity: 0.85;
    text-align: center;
}

/* 交通情報 */
.info-widget__transport-card {
    background-color: #333333;
}

.info-widget__transport-title {
    font-size: 12px;
    font-weight: 700;
    margin-top: 1px;
}

.info-widget__transport-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}
.info-widget__transport-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.7rem;
}
.info-widget__transport-name   { opacity: 0.9; }
.info-widget__transport-status { font-size: 0.72rem; font-weight: 700; flex-shrink: 0; }
.info-widget__transport-status--normal { color: #a8f0c0; }
.info-widget__transport-status--delay  { color: #ffd580; }
.info-widget__transport-status--stop   { color: #ff8080; }

.info-widget__transport-error {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    padding-bottom: 0.7rem;
}
.info-widget__transport-error .info-widget__error-msg {
    color: #fff;
    opacity: 1;
    font-size: 0.73rem;
    font-weight: 400;
    line-height: 1;
    letter-spacing: 0.05em;
}

/* ニュース — 白カード。2件ずつを縦スライダーで自動切替する */
.info-widget__news-card {
    /* カード高さは固定(--info-widget-card-height)。ヘッダーを大きくした分は記事側の余白を
     * 詰めて吸収する。上パディングを厚めにしてヘッダー上の余白を確保する。 */
    padding: 0.85rem 0.9rem 0.55rem;
    color: #2A3238;
    background: #fff;
    gap: 0.4rem;   /* .info-widget__card の 0.65rem を上書きし、ヘッダー↔記事を詰める */
    /* .info-widget__card の font-family(SF Pro Rounded)を上書き。ui-rounded は和文グリフを
     * 持たずフォールバック任せになり環境で見た目が揺れるため、ニュースは明示的にNoto Sans JPにする。 */
    font-family: var(--font-family-base);
}
.info-widget__news-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.5rem;
    flex: 0 0 auto;
    padding-top: 5px;
}
.info-widget__news-heading { font-size: 12px; font-weight: 700; }
.info-widget__news-updated { font-size: 10px; color: #7A7A7A; flex-shrink: 0; }

/* 縦スライダー本体。右のドット(right:3px + 幅5px)と本文が被らないよう padding を空ける。
 * 隙間 = padding-right - (ドットのright + ドット幅) で決まり、全て px 固定なので表示幅に
 * よらず一定（PC の transform:scale 時も本文・ドットが一緒に縮むため被らない）。
 *
 * セレクタで .swiper を併記して詳細度を上げているのは必須。この要素は swiper クラスも持ち、
 * Swiper 標準の `.swiper { padding: 0 }`（同詳細度）が building-info.css より後に読まれて
 * 後勝ちするため、`.info-widget__news-swiper` 単独だと padding-right が 0 に潰される。 */
.info-widget__news-swiper.swiper {
    flex: 1 1 auto;
    min-height: 0;      /* flex 子が内容ではみ出さないように */
    width: 100%;
    overflow: hidden;
    padding-right: 1.5rem;
    box-sizing: border-box;
    position: relative;
}
/* セレクタに .swiper-slide を併記して詳細度を上げるのは必須。Swiper 標準の
 * `.swiper-slide { display: block }`（同詳細度）が building-info.css より後に読まれて
 * 後勝ちするため、`.info-widget__news-page` 単独だと display:flex が block に潰され、
 * justify-content（縦中央寄せ）が効かない。 */
.info-widget__news-page.swiper-slide {
    display: flex;
    flex-direction: column;
    height: 100%;
    box-sizing: border-box;
    /* 記事2件をスライダー枠の縦中央に配置（上詰めを解消して少し下げる）。
     * 記事が枠を満たす最悪ケースでは中央寄せが効かず単に収まるだけなので、はみ出さない。 */
    justify-content: center;
}
/* サムネイル無し・テキストのみの記事行。タイトル + 配信元を縦に並べる。 */
.info-widget__news-item {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;       /* タイトルの省略(...)を効かせる */
    text-decoration: none;
    color: inherit;
    -webkit-tap-highlight-color: transparent;
}
.info-widget__news-item + .info-widget__news-item {
    /* 1件目と2件目の間隔。各記事は min-height で高さ一定のため、この値を増やしても
     * 全ページで一定の間隔になり、2行タイトルの最悪ケースでもカード内に収まる。 */
    margin-top: 0.85rem;
}
.info-widget__news-title {
    font-size: 11px;
    line-height: 1.25;
    font-weight: 600;
    display: -webkit-box;
    -webkit-line-clamp: 2;   /* 2行で省略 */
    -webkit-box-orient: vertical;
    overflow: hidden;
    /* タイトルが1行でも常に2行分の高さを確保し、記事の縦幅を一定にしてデザインを安定させる
     * （2行 = line-height 1.25 × 2 = 2.5em。em はこの要素の font-size 基準）。 */
    min-height: 2.5em;
}
.info-widget__news-source { font-size: 9px; font-weight: 400; color: #ADADAD; }

/* 縦ページネーション（右端中央のドット）
 * Swiper 標準CSS(.swiper-pagination-vertical.swiper-pagination-bullets)が right:8px を当てるうえ、
 * swiper-bundle.css は building-info.css より後に読まれるため同詳細度では上書きされる。
 * ドットを右端に寄せて本文との間隔を確保するため right のみ !important で固定する。 */
.info-widget__news-pagination {
    position: absolute;
    right: 3px !important;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    flex-direction: column;
    gap: 5px;
    z-index: 1;
}
.info-widget__news-pagination .swiper-pagination-bullet {
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #c4c4c4;
    opacity: 1;
    transition: background 0.2s ease;
}
.info-widget__news-pagination .swiper-pagination-bullet-active { background: #333; }

/* ニュース取得失敗時（ヘッダー下・カード内中央） */
.info-widget__news-error {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
}
.info-widget__news-error .info-widget__error-msg {
    color: #2A3238;
    opacity: 1;              /* 共通ルールの 0.85 を打ち消す */
    font-size: 0.75rem;      /* 12px（ルート16px基準） */
    font-weight: 400;
    line-height: 1;          /* 100% */
    letter-spacing: 0.05em;  /* 5% */
}

/* タブ（pill/chip 型）— カード外のページ背景 #e5e7eb 上に表示 */
.info-widget__tabs {
    display: flex;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.5rem 0.25rem 0.2rem;
}
.info-widget__tab {
    padding: 0.28rem 0.75rem;
    background: rgb(170, 170, 170);
    border: none;
    border-radius: 5px;
    color: #ffffff;
    font-size: 0.78rem;
    font-weight: 500;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.15s ease, color 0.15s ease;
    font-family: inherit;
    white-space: nowrap;
}
.info-widget__tab--active {
    background: #000000;
    color: #fff;
    font-weight: 700;
}

/* PC breakpoint (768px) — see assets/css/variables.css --bp-pc
 * PC時は info-widget.js 側の matchMedia 判定で Swiper を初期化しない。
 * Swiper 由来のインライン style（width/transform）は前提にせず、
 * 素の Flexbox で3カードを常時横並びにする。 */
@media (min-width: 768px) {
    .info-widget {
        /* 左右の余白は外側を囲う .kajima-info-content（コンテンツ幅1100px）に任せる */
        padding-left: 0;
        padding-right: 0;
    }
    .info-widget__swiper-clip {
        overflow: visible;
    }
    /* 直下の .swiper-wrapper（外側3カード）だけを対象にする。子孫セレクタにすると
     * ニュースカード内の縦スライダー(.info-widget__news-swiper)の .swiper-wrapper にも
     * gap が漏れ、各ニュースページ間に 1.5rem の隙間が入る。Swiper はこの隙間を translate に
     * 含めないため、送るたびに隙間分ずつ着地位置がズレて記事が見切れる（PC限定の不具合）。
     * よって必ず直下セレクタ(>)で外側だけに限定する。 */
    .info-widget__swiper > .swiper-wrapper {
        display: flex;
        gap: 1.5rem;
    }
    .info-widget__slide {
        width: auto !important; /* モバイル→PC遷移時にSwiperが残したインラインwidthを上書き */
        flex: 1 1 0;
    }
    /* 3カード常時表示になり切替の必要がなくなるため、タブは非表示にする */
    .info-widget__tabs {
        display: none;
    }
}

/* ---------- 詳細画面 ---------- */
body.kajima-info-detail-page { background: var(--color-page-bg); line-height: 1.65; }

.kajima-info-detail {
    max-width: var(--layout-max-width-detail);
    margin: 0 auto;
    padding: calc(env(safe-area-inset-top, 0) + var(--tabs-height) + 0.5rem) 1.25rem calc(env(safe-area-inset-bottom, 0) + 2rem);
}
.kajima-info-detail__back {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    color: #555;
    text-decoration: none;
    font-size: 0.85rem;
    padding: 0.4rem 0;
    margin-bottom: 0.5rem;
}
/* hover はマウス端末のみ（理由は一覧リンクと同じ） */
@media (hover: hover) {
    .kajima-info-detail__back:hover {
        color: var(--color-text-base);
    }
}
.kajima-info-detail__back:focus-visible {
    color: var(--color-text-base);
    outline: none;
}
.kajima-info-detail__back-icon {
    font-size: 1.1rem;
    line-height: 1;
}
.kajima-info-detail__title {
    font-size: 1.15rem;
    font-weight: 700;
    text-align: center;
    margin: 0 0 1.5rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--color-border-subtle);
}
.kajima-info-detail__body h2 {
    font-size: 1.05rem;
    font-weight: 700;
    margin: 1.75rem 0 0.5rem;
}
.kajima-info-detail__body h3 {
    font-size: 0.95rem;
    font-weight: 700;
    margin: 1.25rem 0 0.4rem;
}
.kajima-info-detail__body p {
    margin: 0 0 1rem;
}
.kajima-info-detail__body ul,
.kajima-info-detail__body ol {
    padding-left: 1.25rem;
    margin: 0 0 1rem;
}
.kajima-info-detail__body li {
    margin: 0.2rem 0;
}

/* PC breakpoint (768px) — see assets/css/variables.css --bp-pc
 * 詳細画面もPCでは他の2画面と統一したコンテンツ幅にする。左右paddingは0にし、
 * 中央寄せの余白は margin:auto に任せる（.kajima-info-detail 自体が幅と中央寄せを持つ既存構造の
 * ため、一覧/カテゴリー別一覧のような .kajima-info-content ラッパーは不要）。 */
@media (min-width: 768px) {
    .kajima-info-detail {
        max-width: var(--layout-content-width-pc);
        padding-left: 0;
        padding-right: 0;
    }
}
