/* ===============================================================
   Purpose Pages (Factory / Apartment / etc.)
   - Page Header (KV)
   - Problems
   - Merits
   - Recommendation
   - FAQ (Static Open)
   - CTA Banner
   - Replace（入れ替え・増設）
================================================================ */

/* ========== Page Header (KV) ========== */
.page-header {
    position: relative;
    margin-bottom: 24px;
    padding: 220px 0 120px;
    text-align: center;
    /* background: url("../image/purpose/factory/kv-bg.jpg") center / cover no-repeat; */
    color: var(--c-accent-dark);
}

.page-header__subtext {
    font-size: var(--font-size-sub-title-l);
}

/* 工場（現場） factory */
.factory .page-header {  
    background: var(--kv-bg, url("../image/purpose/factory/kv-bg.jpg")) center / cover no-repeat;
}

/* 工場（外周・共有部） factory-outer */
.factory-outer .page-header {
    background: var(--kv-bg, url("../image/purpose/factory-outer/kv-bg.jpg")) center / cover no-repeat;
}

.factory-outer .problems-heading__label::after {
    content: "";
    position: absolute;
    top: 0.2em;
    right: -96px;
    width: 70px;
    height: 101px;
    background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
}

@media (max-width: 768px) {
    .factory-outer .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        left: 40px;
        width: 30px;
        height: 28px;
        background: url(../image/purpose/icon/search-icon.png) no-repeat bottom / contain;
    }
    .factory-outer .problems-heading__label::after {
        content: "";
        position: absolute;
        top: 70%;
        transform: initial;
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -80px;
        width: 50px;
        height: 88px;
        background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
    }
}

/* 分譲マンション apartment */
.apartment .page-header {
    background: var(--kv-bg, url("../image/purpose/apartment/kv-bg.jpg")) center / cover no-repeat;
}

/* 賃貸マンション rental-apartment */
.rental-apartment .page-header {
    background: var(--kv-bg, url("../image/purpose/rental-apartment/kv-bg.jpg")) center / cover no-repeat;
}

.rental-apartment .problems-heading__label::before {
    top: 15%;
    left: -54px;
}
.rental-apartment .problems-heading__label::after {
    top: 25%;
}

@media (max-width: 768px) {
    .rental-apartment  .problems-heading__label::before {
        top: 70%;
        left: 0.2em;
    }
    .rental-apartment  .problems-heading__label::after {
        top: 70%;
        right: -60px;
        width: 60px;
        height: 88px;
        background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
    }
}

/* 幼稚園・保育園 kindergarten */
.kindergarten .page-header {
    background: var(--kv-bg, url("../image/purpose/kindergarten/kv-bg.jpg")) center / cover no-repeat;
}


/* 病院 hospital */
.hospital .page-header {
    background: var(--kv-bg, url("../image/purpose/hospital/kv-bg.jpg")) center / cover no-repeat;
}


/* 駐車場 parking */
.parking .page-header {
    background: url("../image/purpose/parking/kv-bg.jpg") center / cover no-repeat;
}

/* 福祉施設 welfare */
.welfare .page-header {
    background: var(--kv-bg, url("../image/purpose/welfare/kv-bg.jpg")) center / cover no-repeat;
}

/* オフィス office */
.office .page-header {
    background: var(--kv-bg, url("../image/purpose/office/kv-bg.jpg")) center / cover no-repeat;
}

/* 大型店舗 large-retail */
.large-retail .page-header {
    background: var(--kv-bg, url("../image/purpose/large-retail/kv-bg.jpg")) center / cover no-repeat;
}

/* 多店舗 multi-stores */
.multi-stores .page-header {
    background: var(--kv-bg, url("../image/purpose/multi-stores/kv-bg.jpg")) center / cover no-repeat;
}


.page-header::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(237, 245, 255, .8);
}

.page-header__inner {
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    z-index: 1;
}

.page-header__title {
    margin: 0;
    font-size: var(--font-size-title-p-hero);
    font-weight: 700;
    line-height: 1.45;
    color: var(--color-text-accent);
}

/* ===============================================================
   Problems
=============================================================== */
.problems {
    padding: 40px 0 100px;
}

.problems-heading__label {
    position: relative;
}

/* 見出しブロックを基準にする */
h2.section-title.problems-heading {
    position: relative; /* ← イラストの基準 */
}

/* 左の小アイコン（任意でh2基準に移行） */
h2.section-title.problems-heading::before {
    content: "";
    position: absolute;
    left: calc(50% - 8.2em);
    top: 0.15em;
    width: 0.95em;          /* 38px相当 */
    height: 0.95em;         /* 28〜38pxなら0.7〜0.95emで */
    background: url(../image/purpose/icon/search-icon.png) no-repeat center / contain;
    pointer-events: none;
}

/* 競合を避ける */
.problems-heading__label::before { content: none !important; }

/* 右側イラスト（共通） */
h2.section-title.problems-heading::after {
    content: "";
    position: absolute;
    left: calc(50% + 7.4em);
    bottom: 0;
    width: 1.75em;
    height: 2.525em;
    background: url(../image/top/solution-illust.png) no-repeat center / contain;
    pointer-events: none;
}

/* ラベル側に残っている ::after は無効化（競合回避） */
.problems-heading__label::after { content: none !important; }

.problems__lead {
    margin-bottom: 3.75em;
    padding: 0 24px;
    text-align: center;
    line-height: 1.45;
}

.problem-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    list-style: none;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    box-sizing: border-box;
}

.problem-card {
    padding: 20px;
    border-radius: 8px;
    background: var(--color-bg-card-gray);
    padding: 40px 24px;
    text-align: left;
    box-sizing: border-box;
}

/* ▼ タイトルが2行になってもアイコン段がズレないように「2行分の高さ」を確保 */
.problem-card__title {
    margin: 0;
    font-weight: 700;
    font-size: var(--font-size-sub-title-s);
    line-height: 1.45;
    min-height: calc(1.45em * 2);
    text-align: center;
    color: var(--color-text-accent);
}

.problem-card__icon {
    width: 100px;
    height: 100px;
    margin: 0 auto 20px;
    display: block;
    object-fit: contain;
}

.problem-card__text {
    margin: 0;
    font-size: var(--font-size-text-md);
    line-height: 1.8;
    color: var(--color-text-sub);
}

@media (max-width: 1024px) {
    .page-header {
        padding: 180px 0 100px;
    }
    .problem-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .problem-card__icon {
        width: 60px;
        height: 60px;
        margin: 0 auto 20px;
        display: block;
        object-fit: contain;
    }
}

@media (max-width: 768px) {
    .page-header {
        padding: 140px 0 80px;
    }
    .page-header__title {
        font-size: 2.4rem;
    }
    .problems {
        padding: 0 0 60px;
    }
    h2.section-title {
        margin-bottom: 1em;
        padding: 0 8px;
    }

    /* 旧実装を止める（競合回避） */
    .problems-heading__label::before { content: none !important; }

    /* 見出しブロック基準に配置 */
    h2.section-title.problems-heading {
        position: relative; /* アンカー */
    }
    h2.section-title.problems-heading::before {
        content: "";
        position: absolute;
        /* 中央(50%)から左へ寄せる。タイトルの長さに左右されにくい */
        left: calc(50% - 5em);  /* ←デザインに合わせて ±0.2em程度で微調整してOK */
        top: 60%;
        transform: translateY(-50%);
        width: 30px;            /* 30px相当（h2のfont-size基準） */
        height: 28px;           /* 28px相当 */
        pointer-events: none;
    }
    h2.section-title.problems-heading::after {
        left: calc(50% + 4.0em); /* 画面幅に合わせて“中心からの距離”を短く */
        top: 65%;
        transform: translateY(-50%); /* 縦センター */
        width: 50px;    /* 60px相当 */
        height: 88px;   /* 88px相当 */
    }

    /* 幼稚園・タイトル横アイコン */
    .kindergarten .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 0.5em;
        left: -1.6em;
        width: 50px;
        height: 38px;
        background: url(../image/purpose/icon/search-icon.png) no-repeat bottom / contain;
    }
    .problems-heading__label::after {
        content: "";
        position: absolute;
        top: 0.4em;
        right: -2.2em;
        width: 70px;
        height: 120px;
        background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
    }

    /* 分譲マンション・タイトル横アイコン */
    .apartment  .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 60%;
        left: 0;
        width: 30px;
        height: 28px;
    }
    .apartment .problems-heading__label::after {
        content: "";
        position: absolute;
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -50px;
        width: 60px;
        height: 88px;
        background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
    }

    /* 病院 */
    .hospital .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 60%;
        left: -10px;
        width: 30px;
        height: 28px;
    }
    .hospital .problems-heading__label::after {
        content: "";
        position: absolute;
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -50px;
        width: 60px;
        height: 88px;
        background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
    }

    /* 幼稚園・タイトル横アイコン */
    .kindergarten  .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 60%;
        left: 40px;
        width: 30px;
        height: 28px;
    }
    .kindergarten .problems-heading__label::after {
        content: "";
        position: absolute;
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -50px;
        width: 60px;
        height: 88px;
        background: url(../image/top/solution-illust.png) no-repeat bottom / contain;
    }

    /* 大型店舗・タイトル横アイコン */
    .large-retail .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 30%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        left: -44px;
        width: 30px;
        height: 28px;
    }
    .large-retail .problems-heading__label::after {
        content: "";
        position: absolute;
        top: 0%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: 0;
    }

    /* 多店舗・タイトル横アイコン */
    .multi-stores .problems-heading__label::before {
        content: "";
        position: absolute;
        top: 29%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        left: -44px;
        width: 30px;
        height: 28px;
    }
    .multi-stores .problems-heading__label::after {
        content: "";
        position: absolute;
        top: -0.4em;
        right: 1.2em;
        width: 50px;
    }

    /* オフィス */
    .office .problems-heading__label::before {
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        left: 8px;
        width: 30px;
        height: 28px;
    }
    .office .problems-heading__label::after {
        top: 60%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -50px;
        width: 50px;
        height: 88px;
    }

    /* 駐車場 */
    .parking .problems-heading__label::before {
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        left: 0;
        width: 30px;
        height: 28px;
    }
    .parking .problems-heading__label::after {
        top: 60%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -50px;
        width: 50px;
        height: 88px;
    }

    /* 福祉施設 */
    .welfare .problems-heading__label::before {
        top: 70%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        left: 0;
        width: 30px;
        height: 28px;
    }
    .welfare .problems-heading__label::after {
        top: 60%;
        transform: translateY(-50%);
        -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
        right: -50px;
        width: 50px;
        height: 88px;
    }
    .problems__lead {
        margin-bottom: 3em;
        text-align: center;
        line-height: 1.45;
    }
    .problem-grid {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .problem-card {
        padding: 24px 14px;
    }
    /* ▼ タイトルが2行になってもアイコン段がズレないように「2行分の高さ」を確保 */
    .problem-card__title {
        margin: 0 0 1em 0;
        min-height: initial;
    }
}

/* ===============================================================
   Merits
=============================================================== */
.merits {
    width: 100%;
    margin: 0 auto;
    padding: 100px 0;
    box-sizing: border-box;
    background-color: var(--color-bg-card-lightblue);
}

.merits__title {
    position: relative;
    margin: 0 0 60px;
    font-size: var(--font-size-title-xl);
    font-weight: 700;
    line-height: 1.45;
    text-align: center;
}

.merits__list {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 4.166667vw;
    list-style: none;
    box-sizing: border-box;
}

.merit {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    align-items: center;
    margin: 0 0 clamp(56px, 8vw, 120px);
}

.merit:last-child {
    margin: 0 0 0;
}

.merit--rev .merit__content {
    order: 2;
}

.merit--rev .merit__media {
    order: 1;
}

.merit__content {
    max-width: 540px;
}

.merit__head {
    margin: 0 0 8px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.merit__badge {
    width: 47px;
    height: 47px;
    background: url(../image/purpose/icon/merit-icon.png) no-repeat center / contain;
    display: inline-block;
}

.merit__no {
    font-size: var(--font-size-text-md);
    font-weight: 700;
    line-height: 1;
    color: var(--color-text-accent);
}

/* ↓ アイコンと番号だけ下揃えにする */
.merit__badge,
.merit__no {
    align-self: flex-end;
}

.merit__subtitle {
    margin: 0.2em 0 0.8em;
    font-size: var(--font-size-sub-title-l);
    font-weight: 700;
    line-height: 1.45;
    color: var(--color-text-main);
    width: 100%;
}

.merit__text {
    font-size: var(--font-size-text-md);
    line-height: 1.8;
    color: var(--color-text-main);
}

.merit__media {
    position: relative;
    width: 100%;
    max-width: 520px;
    border-radius: 10px;
}

.merit__bg {
    display: block;
    margin: 0 0 0 auto;
    width: 89.23076923%;
    height: auto;
    object-fit: cover;
    border-radius: 10px;
}

.merit__illust {
    position: absolute;
    bottom: -50px;
    left: 0;
    width: 38.461538461%;
    height: auto;
    pointer-events: none;
}

.merit--rev .merit__bg {
    margin: 0 auto 0 0;
}

.merit--rev .merit__illust {
    right: 0;
    left: initial;
}

/* --- SP: 縦積み（テキスト→画像）、イラストは常に右下 --- */
@media (max-width: 768px) {
    .merits {
        padding: 60px 0 90px;
    }
    .merits__title {
        padding: 0 24px;
    }
    .merit {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .merit__content {
        max-width: initial;
        order: 1 !important;
    }
    .merit__media {
        max-width: initial;
        order: 2 !important;
    }
    .merit__bg {
        margin: 0 auto 0 0;
    }
    .merit__illust {
        left: initial;
        right: 0;
        width: 35%;
        height: auto;
        pointer-events: none;
    }
}

/* ===============================================================
   Recommendation
=============================================================== */
.reco {
    padding: 100px 0 0;
}

.reco__title {
    position: relative;
    text-align: center;
}

.reco__title-inner {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 0 24px;
    line-height: 1.45;
}

.reco-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    box-sizing: border-box;
}

/* カード */
.reco-card {
    background: var(--color-bg-card-lightblue);
    border: 1px solid var(--color-bg-card-blue);
    border-radius: 10px;
    padding: 48px 24px;
    box-sizing: border-box;
}

.reco-card--types,
.reco-places-title {
    position: relative;
}

.reco-card--types::after {
    position: absolute;
    content: "";
    top: 24px;
    right: 0;
    width: 84px;
    height: 66px;
    background: url(../image/purpose/icon/camera-icon.png) no-repeat center / contain;
}

.reco-places-title::after {
    position: absolute;
    content: "";
    top: -0.3em;
    left: calc(50% + 4.5em );
    width: 52px;
    height: 62px;
    background: url(../image/purpose/icon/tool-icon.png) no-repeat center / contain;
}

/* 主な設置場所のカード */
.reco-card--places {
    display: flex;
    flex-direction: column;
}

/* カード見出し */
.reco-card__title {
    margin: 0 0 40px;
    font-size: var(--font-size-sub-title-l);
    font-weight: 700;
    text-align: center;
    line-height: 1.45;
}

/* カメラ種類リスト */
.reco-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 16px;
}

.reco-item {
    display: grid;
    grid-template-columns: 23px 1fr;
    gap: 12px;
    align-items: start;
}

.reco-item:last-child {
    margin-bottom: 40px;
}

.reco-item__icon {
    width: 23px;
    height: 29px;
    object-fit: contain;
}

.reco-item__body {
    min-width: 0;
}

.reco-item__name {
    margin: 0 0 8px;
    font-size: var(--font-size-text-lg);
    font-weight: 700;
    line-height: 1.45;
    color: var(--color-text-main);
}

.reco-item__desc {
    margin: 0;
    color: var(--color-text-sub);
    font-size: var(--font-size-text-md);
    line-height: 1.8;
}

/* 設置場所リスト */
.place-list {
    margin: 0 auto;
    display: grid;
    gap: 0.4em;
    color: var(--color-text-main);
    font-size: var(--font-size-text-md);
    line-height: 1.8;
    text-align: left;          /* テキスト自体は左揃え */
    width: fit-content;        /* リスト全体を内容幅に */
}

.place-list li {
    position: relative;
    list-style: none;
    margin-bottom: 1em;
    padding-left: 2em;
    font-size: var(--font-size-sub-title-s);
}

.place-list li::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    width: 20px;
    height: 20px;
    line-height: 1.45;
    background: url(../image/common/check-icon.png) no-repeat center center / contain;
}

/* アクション */
.reco-card__action {
    margin-top: 16px;
    text-align: center;
}

.btn-outline {
    display: inline-block;
    padding: 0.8em 1.1em;
    border-radius: 8px;
    border: 1px solid var(--color-text-accent);
    color: var(--color-text-accent);
    text-decoration: none;
    background: #ffffff;
    transition: background 0.2s ease, box-shadow 0.2s ease;
}

.btn-outline:hover {
    background: #eff6ff;
}

.btn-outline:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(31, 103, 255, 0.18);
}

/* ---------- Responsive ---------- */
@media (max-width: 768px) {
    .reco {
        padding: 60px 0 0;
    }
    .reco__title-inner::before {
        width: 35px;
        height: 50px;
        flex-basis: 25px;
    }
    .reco-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .reco-card {
        padding: 32px 16px;
    }
    .reco-card--types::after {
        position: absolute;
        content: "";
        top: 24px;
        right: 0;
        width: 42px;
        height: 33px;
        background: url(../image/purpose/icon/camera-icon.png) no-repeat center / contain;
    }
    .reco-card__title {
        margin: 0 0 20px;
    }
    .reco-item:last-child {
        margin-bottom: 0;
    }
    .reco-places-title::after {
        position: absolute;
        content: "";
        top: 0em;
        left: calc(50% + 4.5em);
        width: 27px;
        height: 31px;
    }
    .place-list li {
        position: relative;
        list-style: none;
        margin-bottom: 0.8em;
        padding-left: 2em;
        font-size: var(--font-size-title-s);
    }
    .place-list li::before {
        content: "";
        width: 16px;
        height: 16px;
    }
}

/* ===============================================================
   FAQ (Static Open)
=============================================================== */
.faq-static {
    padding: 100px 24px;
}

.faq-static .section-title {
    position: relative;
}

.faq-static .section-title::after {
    position: absolute;
    content: "";
    top:  -1em;
    left: calc(50% + 4em);
    width: 117px;
    height: 122px;
    background: url(../image/purpose/icon/qa-icon.png) no-repeat center / contain;
}

.faq-list {
    max-width: 1000px;
    margin: 0 auto;
    list-style: none;
    display: grid;
    gap: 32px;
    box-sizing: border-box;
}

.faq-card {
    padding: 32px;
    border-radius: 10px;
    background: var(--color-bg-card-lightblue);
}

.faq-card__q {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 24px;
    align-items: flex-start;
    margin: 0 0 24px;
}

.faq-card__a {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 24px;
    align-items: flex-start;
}

.faq-card__badge {
    display: inline-grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 999px;
    background: var(--color-text-accent);
    color: var(--color-text-white);
    font-weight: 700;
    font-size: var(--font-size-sub-title-m);
    line-height: 1;
    flex: 0 0 36px;
}

.faq-card__badge--a {
    background: initial;
    color: var(--color-text-accent);
    border: 1px solid var(--color-text-accent);
}

.faq-card__question {
    margin: 0;
    font-weight: 700;
    font-size: var(--font-size-sub-title-s);
    line-height: 1.6;
    color: var(--color-text-main);
}

.faq-card__marks {
    position: relative;
}

.faq-card__marks::after {
    content: "";
    position: absolute;
    top: -0.4em;
    right: -3em;
    width: 50px;
    height: 47px;
    background: url("../image/purpose/icon/qustion-icon.png") no-repeat center / contain; /* 任意の装飾画像 */
}

.faq-card__answer {
    margin: 0;
    color: var(--color-text-sub);
    font-size: var(--font-size-text-md);
    line-height: 1.9;
}

/* ---- Responsive ---- */
@media (max-width: 768px) {
    .faq-static {
        padding: 60px 24px;
    }
    .faq-static .section-title::after {
        top: -0.7em;
        left: calc(50% + 3.6em);
        width: 56px;
        height: 61px;
    }
    .faq-list {
        gap: 16px;
    }
    .faq-card {
        padding: 18px 16px;
        border-radius: 10px;
    }
    .faq-card__badge {
        width: 24px;
        height: 24px;
        font-size: var(--font-size-text-md);
    }
    .faq-card__marks::after {
        top: -0em;
        right: -1.8em;
        width: 25px;
        height: 23px;
    }
    .faq-card__q {
        gap: 14px;
        margin: 0 0 14px;
    }
    .faq-card__a {
        gap: 14px;
    }
}

/* ===============================================================
   CTA Banner
=============================================================== */
.cta-banner {
    padding: 60px 0;
    width: 100%;
    background: url(../image/purpose/cts-bg.jpg) no-repeat center / cover;
    color: #ffffff;
}

.cta-banner__inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 24px;
}

.cta-banner__title {
    position: relative;
    margin-bottom: 0.5em;
    font-size: var(--font-size-main-title);
    font-weight: 700;
    text-align: center;
    line-height: 1.45;
    letter-spacing: 0.04em;
}

.cta-banner__title::after {
    position: absolute;
    content: "";
    top:  0em;
    left: calc(50% + 7.6em);
    width: 110px;
    height: 155px;
    background: url(../image/purpose/icon/women-illust.png) no-repeat center / contain;
}

.cta-banner__title::before {
    position: absolute;
    content: "";
    top:  0em;
    right: calc(50% + 7.6em);
    width: 130px;
    height: 157px;
    background: url(../image/purpose/icon/men-illust.png) no-repeat center / contain;
}

.cta-banner__lead {
    margin: 0 0 16px;
    text-align: center;
    line-height: 1.8;
}

.cta-banner__actions {
    display: flex;
    gap: 7.55556%;
    justify-content: center;
}

/* 共通ボタン */
.cta-banner__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 416px;
    padding: 1.05em 1.2em;
    border-radius: 10px;
    font-size: var(--font-size-sub-title-m);
    font-weight: 700;
    text-decoration: none;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    will-change: transform, box-shadow;
}

/* ゴースト（電話） */
.cta-banner__btn--ghost {
    background: transparent;
    color: #ffffff;
    border: 2px solid #ffffff;
    box-shadow: inset 0 0 0 0 rgba(255,255,255,0);
}
.cta-banner__btn--ghost:hover,
.cta-banner__btn--ghost:focus-visible {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(0,0,0,0.18);
    outline: none;
}

/* ソリッド（フォーム） */
.cta-banner__btn--solid {
    background: #ffffff;
    color: var(--color-text-accent-dark);
    border: 2px solid #ffffff;
    box-shadow: 0 3px 12px rgba(0,0,0,0.12);
}
.cta-banner__btn--solid:hover,
.cta-banner__btn--solid:focus-visible {
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(0,0,0,0.18);
    outline: none;
}

/* アイコン */
.cta-banner__icon {
    display: inline-block;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}

/* 画像パスはプロジェクトの実体に合わせて調整してください */
.cta-banner__icon--tel {
    background-image: url("../image/common/tel-icon.png");
}
.cta-banner__icon--mail {
    background-image: url("../image/common/mail-icon.png");
}

/* Responsive */
@media (max-width: 768px) {
    .cta-banner {
        padding: 40px 0;
    }
    .cta-banner__title::before {
        top: 0.5em;
        right: calc(50% + 4em);
        width: 50px;
        height: 57px;
        background: url(../image/purpose/icon/men-illust.png) no-repeat center / contain;
    }
    .cta-banner__title::after {
        top: 0.5em;
        left: calc(50% + 4em);
        width: 40px;
        height: 60px;
        background: url(../image/purpose/icon/women-illust.png) no-repeat center / contain;
    }
    .cta-banner__lead {
        text-align: left;
    }
    .cta-banner__btn {
        width: 100%;
        max-width: 416px;
        font-size: var(--font-size-text-lg);
        padding: 0.95em 1em;
    }
    .cta-banner__icon {
        width: 22px;
        height: 22px;
        flex-basis: 22px;
    }
    .cta-banner__actions {
        flex-wrap: wrap;
        gap: 12px;
    }
}

/* ===============================================================
   Replace（入れ替え・増設）
=============================================================== */
.replace {
    padding: 80px 0;
    background: var(--color-bg-section-white);
}

.replace__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    box-sizing: border-box;
}

.replace__title {
    margin-bottom: .6em;
}

.replace__lead {
    text-align: center;
    color: var(--color-text-sub);
    line-height: 1.8;
    margin: 0 auto 40px;
    max-width: 900px;
    font-size: var(--font-size-text-md);
}

/* ==== Grid（行内で等高に） ==== */
.replace__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
    list-style: none;
    margin: 0;
    padding: 0;
}

/* li をフレックス化して中のカードを伸ばす */
.replace__item {
    display: flex;   /* ← 等高の肝 */
}

/* ==== Card ==== */
.replace__card {
    background: var(--color-bg-card-sky);
    border-radius: 10px;
    padding: 40px 28px;       /* ← 上下40pxを厳守 */
    display: flex;
    flex-direction: column;
    row-gap: 16px;            /* 子要素間の余白は gap で */
    flex: 1 1 auto;           /* ← セルいっぱいに伸びる（等高） */
    height: auto;             /* 不要な伸長を防ぐ */
}

/* 子要素の既定marginをリセット（h3/figure/p など） */
.replace__card > * {
    margin: 0;
}

.replace__card-title {
    font-size: var(--font-size-sub-title-m);
    font-weight: 700;
    color: var(--color-text-accent-dark);
    line-height: 1.4;
    letter-spacing: .02em;
    text-align: center;
}

.replace__icon {
    display: grid;
    place-items: center;
    padding: 0;               /* 余分な内側余白はゼロ */
}

.replace__icon img {
    width: 160px;
    max-width: 50%;
    height: auto;
    display: block;           /* 画像下の行間隙間を除去 */
}

.replace__text {
    line-height: 1.8;
    color: var(--color-text-main);
    text-align: left;
}

/* ==== Responsive ==== */
@media (max-width: 1024px) {
    .replace { padding: 64px 0; }
    .replace__grid { gap: 24px; }
    /* パディングは上下40pxのまま維持（変更しない） */
}

@media (max-width: 768px) {
    .replace { padding: 48px 0; }
    .replace__lead { margin-bottom: 28px; }
    .replace__grid {
        grid-template-columns: 1fr; /* ← SPは縦並び */
        gap: 16px;
    }
    .replace__icon img { max-width: 42%; }
}
