/* ============================================================
   familign. index.css
   - トップページ固有のスタイル
   - common.css（フォント・変数・リセット・背景・ヘッダー・
     ドロワー・フッター等）を先に読み込んでからこのファイルを読み込む
   ============================================================ */

/* ============================================================
   MV
   ============================================================ */
.mv {
    padding-top: clamp(1.32rem, 0.99rem + 1.32vw, 2.64rem);
    padding-bottom: clamp(2rem, 1.5rem + 2vw, 4rem);
}

/* .mv__innerにはJS制御用クラス（js-reveal-group等）が付与されており、
   common.cssの`[class$="__inner"]`（クラス属性が"__inner"で終わる要素に
   コンテンツ幅を当てる共通ルール）が末尾一致しなくなりマッチしない。
   そのため他セクションと同じ考え方（コンテンツ幅+中央寄せ）をここで個別に指定する。
   MVは他セクションより見た目にゆとりを持たせたいので、通常のコンテンツ幅
   （--container-width: 1400px）の25%増しを上限にする */
.mv__inner {
    display: flex;
    align-items: center;
    gap: clamp(1rem, 0.5rem + 2vw, 3rem);
    width: min(calc(var(--container-width) * 1.25), 92%);
    margin-inline: auto;
}

.mv__visual {
    position: relative;
    flex: 1 1 48%;
    aspect-ratio: 1 / 1;
}

/* 外側の円（擬似要素・1px線） */
/* %指定にすることで.mv__visual自体のサイズに対して常に同じ比率になり、
   画面幅が変わってもバランス（1300px基準で-1.05rem相当）を保ったまま可変する */
.mv__visual::before {
    content: "";
    position: absolute;
    inset: -2.3%;
    border: 1px solid var(--color-accent-circle);
    border-radius: 50%;
    pointer-events: none;
}

/* クリッピングする円（6px線） */
.mv__visual-swiper {
    width: 100%;
    height: 100%;
    border: 6px solid var(--color-accent-circle);
    border-radius: 50%;
    overflow: hidden;
}

.mv__visual-list,
.mv__visual-item {
    width: 100%;
    height: 100%;
}

.mv__visual-item picture {
    display: block;
    width: 100%;
    height: 100%;
}

.mv__visual-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.15);
    transform-origin: center;
    will-change: transform;
}

/* じわっと引いていく（ズームアウト）動き。再生の開始/リスタートはJS側で制御 */
@keyframes mvVisualZoom {
    from {
        transform: scale(1.15);
    }
    to {
        transform: scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv__visual-image {
        animation: none !important;
    }
}

.mv__body {
    flex: 1 1 60%;
    container-type: inline-size;
}

.mv__lead {
    display: inline-block;
    font-size: clamp(1.8rem, 0.36rem + 1.6vw, 2.6rem);
    color: var(--color-text);
    margin-bottom: 0.4em;
}

.mv__title {
    padding: 0 .4em;
    display: inline-block;
    font-family: var(--font-serif);
    font-size: clamp(3.2rem, -0.76rem + 4.4vw, 5.6rem);
    line-height: 1.5;
    font-weight: 500;
    background: #fff;
    white-space: nowrap;
}

/* 2カラムになる幅（~48em〜90em付近）はvwだけだと.mv__bodyの実幅とズレて
   はみ出すため、コンテナクエリで実際の幅に収まる方をmin()で採用する */
@supports (container-type: inline-size) {
    .mv__title {
        font-size: min(clamp(3.2rem, -0.76rem + 4.4vw, 5.6rem), 6.5cqi);
    }
}

/* 499px以下：1カラム表示になり.mv__bodyの実幅がそのままコンテナ幅になるため、
   上のclamp()の下限(3.2rem)より.mv__titleを大きくできる。
   「事業に貢献できるデザインを」(13文字+左右padding.4em=13.8em分)が
   コンテナ幅を超えない上限比率が約7.25cqiのため、少し余裕を見て7cqiを採用。
   コンテナクエリ非対応ブラウザ向けには同等のvw値をフォールバックとして用意 */
@media (max-width: 499px) {
    .mv__title {
        font-size: 6.6vw;
    }
}

@supports (container-type: inline-size) {
    @media (max-width: 499px) {
        .mv__title {
            font-size: 7cqi;
        }
    }
}

/* 500px〜768px（48em）：この幅では.mv__inner/.mv__bodyの実幅が500px固定に
   なるため、上と同じ7%比率を固定値（500px×7%=35px）として適用。
   h2/h3見出しより確実に大きいサイズを維持する */
@media (min-width: 500px) and (max-width: 48em) {
    .mv__title {
        font-size: 3.5rem;
    }
}

.mv__title-accent {
    font-style: normal;
    color: var(--color-primary);
}

.mv__text {
    display: block;
    margin-top: .8em;
    font-size: clamp(1.8rem, 0.36rem + 1.6vw, 2.6rem);
}

.mv__text>span{
    display: inline-block;
}

.mv__cta {
    margin-top: 1.4em;
}

.mv__cta-link {
    display: inline-block;
    padding: .4em 3em;
    background-image: url(../img/common/cta-bg.jpg);
    background-image: -webkit-image-set(
        url(../img/common/cta-bg.webp) 1x,
        url(../img/common/cta-bg.jpg) 1x
    );
    background-image: image-set(
        url(../img/common/cta-bg.webp) type("image/webp"),
        url(../img/common/cta-bg.jpg) type("image/jpeg")
    );
    background-size: cover;
    background-repeat: no-repeat;
    color: var(--color-white);
    border-radius: var(--radius-full);
    font-weight: 700;
    font-size: clamp(1.8rem, 0.36rem + 1.6vw, 2.6rem);
    text-shadow: none;
    box-shadow: 0 0.2rem 0.6rem rgba(0, 0, 0, 0.15);
}

/* PC（左右2カラム）ではビジュアルとテキストを同時にふわっとさせる。
   スマホ〜タブレット（ビジュアルが上に積み上がる幅）は
   common.cssの.js-reveal-group標準どおり、ビジュアル→テキストの順のまま */
@media (min-width: 48.0625em) {
    .js .mv__inner.js-reveal-group.is-visible > *:nth-child(2) {
        transition-delay: 0s;
    }
}

@media (max-width: 48em) {
    .mv__inner {
        flex-direction: column;
        text-align: center;
        width: 92.5%;
        max-width: 500px;
    }
    .mv__visual {
        flex-basis: auto;
        width: 92%;
    }
    .mv__body {
        width: 100%;
    }
    .mv__cta-link {
        max-width: 450px;
        width: 74%;
    }
    .mv__cta {
        margin-top: .5em;
    }
    .mv__text {
        margin-top: .5em;
        font-size: 1.08em;
    }

}

/* ============================================================
   Works Swiper
   ============================================================ */
/* common.cssの `.main section + section` による余白を通常の50%に */
.main .works-swiper {
    margin-top: 0;
}

/* このスワイパーだけ画面幅いっぱいに広げる */
/* Swiper本体のCSS（.swiper { margin-left:auto; margin-right:auto; }）に
   詳細度で負けないよう、2クラス指定で上書きする */
.works-swiper__container.swiper {
    width: 100vw;
    margin-left: 50%;
    transform: translateX(-50%);
    /* 既定のease系イージングだと1枚分移動するたびに減速・加速して
       「止まりかけてまた動き出す」ように見えるため、常に一定速度で流す */
    --swiper-wrapper-transition-timing-function: linear;
}

/* 正方形（300px × 300px）で並べる */
.works-swiper__item {
    width: 14.29vw !important; /* 1400px幅のとき 200px 相当。画面が狭くなるほど比例して縮む */
    min-width: 120px;
    max-width: 200px;
    aspect-ratio: 1;
    overflow: hidden;
    background-color: var(--color-white); /* ホバー時に a:hover の opacity で下が透けないよう白背景を敷く */
    box-shadow: 0 0.2rem 1rem rgba(0, 0, 0, 0.08);
}

/* Swiper.js（公式CDN / jsdelivr）を works-swiper__container(.swiper) /
   works-swiper__list(.swiper-wrapper) / works-swiper__item(.swiper-slide)
   に適用。初期化は script.js を参照 */

/* ============================================================
   Features
   ============================================================ */
.features__inner {
    text-align: center;
}

.features__title,
.services__title,
.promise__title,
.flow__title,
.case-study__title,
.about__title,
.news__title {
    font-family: var(--font-serif);
    /* PCデザインはh1と別サイズに戻す。1280px幅で40px相当になるよう
       h1の式（clamp(3.2rem, -0.76rem + 4.4vw, 5.6rem)）と同じ曲線を
       0.821倍にスケールしたもの（900px付近で下限、1440px付近で上限） */
    font-size: clamp(2.63rem, -0.62rem + 3.61vw, 4.6rem);
    font-weight: 500;
    text-align: center;
    margin-bottom: clamp(2rem, 1.6rem + 1.5vw, 4rem);
    position: relative;
}

/* h1（.mv__title）と同じサイズ感にするため、h1と同じ式（320〜499pxは6.6vw、
   500〜768pxは3.5rem固定）をそのまま適用する */
@media (max-width: 499px) {
    .features__title,
    .services__title,
    .promise__title,
    .flow__title,
    .case-study__title,
    .about__title,
    .news__title {
        font-size: 6.6vw;
    }
}

@media (min-width: 500px) and (max-width: 48em) {
    .features__title,
    .services__title,
    .promise__title,
    .flow__title,
    .case-study__title,
    .about__title,
    .news__title {
        font-size: 3.5rem;
    }
}

/* 見出し上下のドットライン */
.features__title::before,
.services__title::before,
.promise__title::before,
.flow__title::before,
.case-study__title::before,
.about__title::before,
.news__title::before,
.features__title::after,
.services__title::after,
.promise__title::after,
.flow__title::after,
.case-study__title::after,
.about__title::after,
.news__title::after {
    content: "";
    display: block;
    width: clamp(6rem, 5rem + 4vw, 10rem);
    height: 0.3rem;
    margin: 0 auto;
    background-image: radial-gradient(circle, var(--color-primary) 32%, rgba(0,0,0,0) 33%);
    background-size: 0.7rem 0.7rem;
    background-position: center;
    background-repeat: repeat-x;
}

.features__title::before,
.services__title::before,
.promise__title::before,
.flow__title::before,
.case-study__title::before,
.about__title::before,
.news__title::before {
    margin-bottom: .5em;
}

.features__title::after,
.services__title::after,
.promise__title::after,
.flow__title::after,
.case-study__title::after,
.about__title::after,
.news__title::after {
    margin-top: .5em;
}

.features__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.6rem, 1rem + 2vw, 4rem);
    text-align: center;
}

.features__item {
    position: relative;
    padding: clamp(2rem, 1.6rem + 1.5vw, 3.2rem) clamp(1.2rem, 1vw, 2rem);
}

/* 白いブロブはテキストとは独立した疑似要素にして、
   テキストの折り返し・レイアウトに影響を与えずに形だけ小さくする */
.features__item::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 75%;
    aspect-ratio: 1;
    background-color: var(--color-bg-card-alt);
    box-shadow: 0 0.2rem 1.2rem rgba(0, 0, 0, 0.06);
    transform: translate(-50%, -50%);
    z-index: 0;
}

/* 3つそれぞれ違う丸みで、流体っぽい不規則ブロブ形状に */
.features__item:nth-child(1)::before {
    border-radius: 62% 38% 43% 57% / 55% 40% 60% 45%;
}
.features__item:nth-child(2)::before {
    border-radius: 40% 60% 55% 45% / 45% 55% 45% 55%;
}
.features__item:nth-child(3)::before {
    border-radius: 55% 45% 38% 62% / 40% 60% 40% 60%;
}

.features__item-title,
.features__item-text {
    position: relative;
    z-index: 1;
}

.features__item-number {
    font-family: var(--font-serif);
    font-size: clamp(3.2rem, 2.56rem + 1.4vw, 4.8rem);
    color: var(--color-primary);
    font-weight: 500;
    margin-bottom: 0.5em;
}

.features__item-title {
    font-size: clamp(1.8rem, 0.54rem + 1.4vw, 2.5rem);
    font-family: var(--font-serif);
    font-weight: 500;
    margin-bottom: 0.6em;
    min-height: 1em;
    white-space: nowrap;
}
.features__item-titleBigger{
    color: var(--color-primary);
    font-size: 2em;
}
.features__item-titleBiggerBig{
    color: var(--color-primary);
    font-size: 2em;
    letter-spacing: .3em;
}
.features__item-titleBiggerSmall{
    color: var(--color-primary);
    font-size: 1.7em;
}

.features__item-text {
    color: var(--color-text-sub);
}

.features__link,
.services__link,
.about__link {
    text-align: center;
    margin-top: clamp(1.12rem, 0.9rem + 0.84vw, 1.8rem);
}

/* ゴールドボタン（共通） */
.features__link-anchor,
.services__link-anchor,
.about__link-anchor,
.case-study__more-link,
.news__more-link {
    position: relative;
    display: inline-block;
    width: 86%;
    max-width: 480px;
    padding: .7em 1.6em .7em 1.0em;
    background-color: var(--color-accent);
    border-radius: 0;
    font-weight: 700;
    color: var(--color-white);
    text-align: center;
    box-shadow: 0 0.2rem 0.6rem rgba(0, 0, 0, 0.15);
    transition: background-color 0.3s ease, opacity 0.3s ease;
    text-shadow: none;
}

.features__link-anchor:hover,
.services__link-anchor:hover,
.about__link-anchor:hover,
.case-study__more-link:hover,
.news__more-link:hover {
    background-color: var(--color-accent-dark);
    opacity: 1;
}

/* ボタン右下の三角アイコン */
.features__link-anchor::before,
.services__link-anchor::before,
.about__link-anchor::before,
.case-study__more-link::before,
.news__more-link::before {
    content: "";
    position: absolute;
    right: 4px;
    bottom: 4px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 0 1.2rem 1.2rem;
    border-color: rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0);
}

@media (min-width: 1500px) {
    .features__link {
        margin-top: clamp(2.24rem, 1.8rem + 1.68vw, 3.6rem);
    }
}

@media (max-width: 48em) {
    .features__list {
        grid-template-columns: 1fr;
        gap: clamp(0.5rem, 0.375rem + 0.75vw, 1rem);
    }
    .features__item {
        /* ::beforeの実サイズ（inner幅min(92.5vw,500px)の65%、最大250px）に
           上下1emずつの余白を足し、コンテンツが短くてもブロブ同士が重ならないようにする */
        min-height: calc(min(60.125vw, 250px) + 2em);
    }
    .features__item::before{
        width: 65%;
        max-width: 250px;
    }
    .features__link,
    .services__link,
    .about__link {
        margin-top: clamp(4rem, 3.2rem + 3vw, 6.4rem);
    }
}

/* ============================================================
   Services（できること）
   ============================================================ */
.services__list {
    display: flex;
    flex-direction: column;
    gap: clamp(2rem, 1.6rem + 2vw, 5rem);
}

.services__item {
    display: flex;
    align-items: center;
    gap: clamp(2rem, 1vw, 4rem);
}

.services__item-image {
    width: 33%;
    border-radius: var(--radius-m);
    overflow: hidden;
}

.services__item-body {
    width: 66%;
}

.services__item-title {
    display: inline-block;
    padding: .2em .4em;
    font-size: clamp(2.56rem, 2.24rem + 0.6vw, 3.2rem);
    font-family: var(--font-serif);
    font-weight: 500;
    line-height: 1.1;
    margin-bottom: 0.8em;
    background: #fff;
}
.services__item-title>.services__item-title{
    margin-bottom: 0;
    padding: 0;
}
.service__item-titleSmaller{
    font-size: .5em;
}

.services__item-title::first-letter{
    color: var(--color-primary);
}

.services__item-text {
    color: var(--color-text-sub);
}

@media (max-width: 48em) {
    .services__title{
        margin-bottom: 0;
    }
    .services__item {
        flex-direction: column;
    }
    .services__item-image {
        flex-basis: auto;
        width: 100%;
    }
    .services__item-body{
        width: 100%;
    }
}

/* ============================================================
   Promise（約束）
   ============================================================ */
.promise__list {
    display: flex;
    flex-direction: column;
    gap: clamp(3rem, 2rem + 3vw, 6rem);
}

.promise__item {
    display: flex;
    align-items: center;
    gap: clamp(2rem, 1vw, 5rem);
}

.promise__item--reverse {
    flex-direction: row-reverse;
}

.promise__item-body {
    flex: 1 1 65%;
}

.promise__item-image {
    flex: 1 1 35%;
    border-radius: var(--radius-m);
    overflow: hidden;
}

.promise__item-title {
    display: inline-block;
    padding: .1em .4em;
    font-family: var(--font-serif);
    font-size: clamp(2.88rem, 2.4rem + 0.8vw, 3.84rem);
    font-weight: 500;
    margin-bottom: 0.8em;
    background: #fff;
    line-height: 1.3;
}

.promise__item-title::first-letter {
    color: var(--color-primary);
}

/* 768px（48em）以下：既定のclamp()の下限(2.88rem)だとh2（h1>h2>h3の
   階層調整。上のfeatures__title等のmedia参照）を上回ってしまうため、
   確実にh2より小さくなるよう調整する */
@media (max-width: 499px) {
    .promise__item-title {
        font-size: 4.6vw;
    }
}

@media (min-width: 500px) and (max-width: 48em) {
    .promise__item-title {
        font-size: 2.4rem;
    }
}

.promise__item-text {
    color: var(--color-text-sub);
}

@media (max-width: 48em) {
    .promise__item,
    .promise__item--reverse {
        flex-direction: column;
    }
}

/* ============================================================
   Flow（ご依頼のながれ）
   ============================================================ */
.flow__inner {
    text-align: center;
}

/* SPで横スクロールさせるラッパー（Scroll Hintの対象要素）
   overflow-x:autoだけを指定するとoverflow-yが自動でauto扱いになり、
   ①バッジ（上にはみ出す部分）が見切れる ②フロー内で縦スクロールが発生する
   ため、overflow-yは明示的にhiddenにし、はみ出す分はpadding-topで確保する。
   バッジ幅は.flow__itemの25%（=はみ出し量はアイテム幅の12.5%）なので、
   アイテム幅が最大になる場面（コンテナ上限1400px時）でも隠れないよう
   padding-topを確保しておく */
.flow__scroll {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    padding-top: 3.6rem;
    padding-bottom: 1rem;
    text-shadow: none;
}

.flow__list {
    --flow-gap: clamp(1.6rem, 1rem + 2vw, 3.2rem);
    /* 矢印のサイズ・間隔はgapに対する比率で決める。
       gapと独立したclamp()にすると画面幅によっては矢印がgapより
       大きくなり、右側のボックスの下に隠れてしまうため */
    --flow-arrow-size: calc(var(--flow-gap) * 0.55);
    --flow-arrow-gap: calc(var(--flow-gap) * 0.28);
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    gap: var(--flow-gap);
    text-shadow: none;
}

.flow__item {
    position: relative;
    flex: 1 1 0;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 13rem;
    height: clamp(11rem, 9rem + 5vw, 15rem);
    padding: 0.5em 1em;
    border-radius: 0;
    background-color: var(--color-bg-card-alt);
    box-shadow: 0 0.2rem 1rem rgba(0, 0, 0, 0.08);
    font-family: var(--font-serif);
    font-weight: 500;
    text-align: center;
}

/* 「>>」の矢印：線幅1pxのシェブロンを2つ、疑似要素でgapの中央に配置 */
.flow__item:not(:last-child)::before,
.flow__item:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 50%;
    width: var(--flow-arrow-size);
    height: var(--flow-arrow-size);
    margin-top: calc(var(--flow-arrow-size) / -2);
    border-top: 1px solid var(--color-primary);
    border-right: 1px solid var(--color-primary);
    transform: rotate(45deg);
}

.flow__item:not(:last-child)::before {
    left: calc(100% + var(--flow-gap) * 0.34 - var(--flow-arrow-size) / 2 - var(--flow-arrow-gap) / 2);
}

.flow__item:not(:last-child)::after {
    left: calc(100% + var(--flow-gap) * 0.34 - var(--flow-arrow-size) / 2 + var(--flow-arrow-gap) / 2);
}

.flow__item-text {
    font-weight: 700;
    text-align: center;
}

/* 「無料」バッジ：円形・縦書きゴシック体 */
.flow__item-badge {
    position: absolute;
    top: 0;
    right: 1.4em;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 25%;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    background-color: var(--color-primary);
    box-shadow: 0 0.1rem 0.4rem rgba(0, 0, 0, 0.15);
    color: var(--color-white);
    font-family: var(--font-sans);
    font-size: .8em;
    font-weight: 700;
    line-height: 1.2;
    writing-mode: vertical-rl;
    text-orientation: upright;
    letter-spacing: 0;
}

.flow__note {
    position: relative;
    margin-top: clamp(4.5rem, 3.6rem + 3vw, 7rem);
    padding: 0 1em .6em;
    border: 1px solid var(--color-text);
    border-radius: 0;
    background-color: rgba(255, 255, 255, 0.2);
}

.flow__note-title {
    display: table;
    margin: -.7em auto .7rem;
    padding: 0.2em 3em;
    border-radius: 0;
    background-color: #b29872;
    color: var(--color-white);
    font-family: var(--font-serif);
    font-weight: 500;
    line-height: 1;
    white-space: nowrap;
    text-align: center;
    text-shadow: none;
}

.flow__note-text {
    font-family: var(--font-sans);
    font-size: clamp(1.6rem, 1.5rem + 0.2vw, 1.84rem);
    color: var(--color-text-sub);
}

@media (max-width: 36em) {
    .flow__note-title {
        white-space: normal;
        max-width: 90%;
        text-align: center;
    }
}

/* SP：横スクロールで見せる。初期表示で2ステップ全体＋3ステップ目が
   20%程度見えるよう、gapとアイテム幅をvw基準で算出（2.2w + 2gap = 92vw） */
@media (max-width: 48em) {
    .flow__scroll {
        /* アイテム幅37vw×バッジ25%÷2＝はみ出し量4.625vw分を確保 */
        padding-top: calc(4.625vw + 0.4rem);
    }

    .flow__list {
        --flow-gap: 5vw;
        justify-content: flex-start;
    }

    .flow__item {
        flex: 0 0 37vw;
        width: 37vw;
        min-width: 0;
    }

    .flow__item-badge {
        font-size: .8em;
        right: 1em;
    }
}

/* ============================================================
   Case Study（制作実績一例）
   ============================================================ */
.case-study__article {
    display: flex;
    gap: clamp(4rem, 2vw, 8rem);
    align-items: flex-start;
}

.case-study__image {
    position: relative;
    z-index: 0;
    flex: 1 1 35%;
}

.case-study__image::before {
    content: "";
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: -1;
    width: 100%;
    height: 100%;
    background-image:
        radial-gradient(circle, var(--color-white) 1.5px, transparent 1.65px),
        radial-gradient(circle, var(--color-white) 1.5px, transparent 1.65px);
    background-size: 10.5px 10.5px, 10.5px 10.5px;
    background-position: 0 0, 5.25px 5.25px;
}

.case-study__body {
    flex: 1 1 65%;
}

.case-study__client {
    font-size: clamp(2.56rem, 2.24rem + 0.6vw, 3.2rem);
    font-family: var(--font-serif);
    font-weight: 500;
    margin-bottom: 0.8em;
}

/* 499px以下：既定のclamp()の下限(2.56rem)だとh2（h1>h2>h3の階層調整。
   上のfeatures__title等のmedia参照）を上回ってしまうため、
   確実にh2より小さくなるよう調整する。500〜768pxは既定のformulaのまま
   でもh2(3rem固定)を下回るため変更不要 */
@media (max-width: 499px) {
    .services__item-title,
    .case-study__client {
        font-size: 4.8vw;
    }
}

.case-study__text {
    color: var(--color-text-sub);
}

.case-study__link {
    margin-top: 1.5em;
    text-align: right;
}

.case-study__link-anchor {
    text-decoration: underline;
}
.case-study__link-anchor:hover{
    text-decoration: none;
}

.case-study__more {
    text-align: center;
    margin-top: clamp(2rem, 1.6rem + 1.5vw, 3.2rem);
}

@media (max-width: 48em) {
    .case-study__article {
        flex-direction: column;
    }
}

/* ============================================================
   About（familign.について）
   ============================================================ */
.about__body {
    display: flex;
    gap: clamp(4rem, 2vw, 8rem);
    align-items: center;
}

.about__image {
    position: relative;
    z-index: 0;
    flex: 1 1 35%;
}

.about__image::before {
    content: "";
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: -1;
    width: 100%;
    height: 100%;
    background-image:
        radial-gradient(circle, var(--color-white) 1.5px, transparent 1.65px),
        radial-gradient(circle, var(--color-white) 1.5px, transparent 1.65px);
    background-size: 10.5px 10.5px, 10.5px 10.5px;
    background-position: 0 0, 5.25px 5.25px;
}

.about__text-block {
    flex: 1 1 65%;
    display: flex;
    flex-direction: column;
    gap: 1em;
}

.about__text {
    color: var(--color-text-sub);
}

@media (max-width: 48em) {
    .about__body {
        flex-direction: column;
    }
}

/* ============================================================
   News（お知らせ・ブログ）
   ============================================================ */
.news__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.6rem, 1rem + 2vw, 3rem);
}

.news__item {
    overflow: hidden;
}

.news__item-image {
    margin-bottom: 0.3em;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border: .45rem solid #fff;
}

.news__item-image img{
    width: auto;
    height: 100%;
    object-fit: cover;
}

.news__item-date,
.news__item-text {
    padding-inline: .2em;
}

.news__item-date {
    margin-bottom: 0.1em;
    font-size: .95em;
    color: var(--color-text-sub);
    line-height: 1.5;
}

.news__item-text {
    margin-block: 0em 1.2em;
    font-size: 1.1em;
    line-height: 1.6;
}

.news__more {
    text-align: center;
    margin-top: clamp(2rem, 1.6rem + 1.5vw, 3.2rem);
}

@media (max-width: 48em) {
    .news__list {
        grid-template-columns: 1fr;
    }
}
