/* ============================================================
   Layout width overrides (LINK FINANCE)
   元: --max-width: max(1440 * var(--px), 90 * var(--rem));
        --offset: clamp(20*--px, ..., 60*--px)
   ------------------------------------------------------------
   問題: 1440px基準で左右にも大きな offset (最大80px) が入り、
         画面が広くてもコンテンツの見える幅が広がらない。
   修正:
     - max-width を viewport に追従（最大 2400px まで）
     - 左右の余白を控えめに（最大40px）
     - content area を一律 ~80〜130px ずつ拡張
   ============================================================ */
/* ============================================================
   プリローダー中は FV / bodyCopy を完全に隠して、トランジションを無効化。
   プリローダー終了後に JS が -shown を付け直してイントロを再生する。
   ============================================================ */
html.lf-preloading .fv,
html.lf-preloading .bodyCopy,
html.lf-preloading .fv *,
html.lf-preloading .bodyCopy * {
    transition: none !important;
    animation: none !important;
}
html.lf-preloading .fv,
html.lf-preloading .bodyCopy {
    opacity: 0 !important;
    pointer-events: none !important;
}

/* ============================================================
   プリローダー（Outline Fill アニメ）
   ページ表示時に「LINK FINANCE」が線画 → 塗りつぶしの順で現れ、
   その後フェードアウトしてページが見える
   - 0.2s: 線画状態で表示開始
   - 0.2〜1.0s: 文字がじわっと塗りつぶされる
   - 1.0〜1.3s: 塗り完了で一瞬とどまる
   - 1.3〜1.8s: 全体フェードアウト
   ============================================================ */
#link-finance-preloader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    background: var(--color-background, #eff0ee);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: preloader-out 0.5s ease 1.3s forwards;
}
@keyframes preloader-out {
    to {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }
}
#link-finance-preloader .text {
    font-family: var(--ff-en, "Noto Sans JP", "Hiragino Sans", sans-serif);
    font-size: clamp(2.5rem, 8vw, 7rem);
    font-weight: 800;
    color: transparent;
    -webkit-text-stroke: 1.5px var(--color-black, #222);
    letter-spacing: 0.06em;
    line-height: 1;
    margin: 0;
    animation: preloader-text-fill 0.8s ease 0.2s forwards;
}
@keyframes preloader-text-fill {
    to {
        color: var(--color-black, #222);
    }
}
@media (prefers-reduced-motion: reduce) {
    #link-finance-preloader {
        animation: preloader-out 0.2s linear 0.4s forwards;
    }
    #link-finance-preloader .text {
        color: var(--color-black, #222);
        animation: none;
    }
}

:root {
    /* セクションは viewport 幅まで広げる（超ワイドだけ 2400px で頭打ち） */
    --max-width: min(100vw, 2400px);
    /* 左右の余白を抑えてコンテンツエリアを広げる
       1280px:  20px / 1440px:  24px / 1920px: 36px / 2560px: 40px */
    --offset: clamp(16px, calc((100vw - 1280px) * 0.025 + 20px), 40px);
    /* ====== アクセントカラーを #c4d8a8 系（セージグリーン）に変更 ====== */
    --color-lightgreen: #c4d8a8;   /* メインアクセント */
    --color-darkgreen:  #9aaa84;   /* フォーカス・濃い補助 */
    --color-green:      #a8bb88;   /* 中間 */
    --color-sub-green:  #b5c898;   /* sub */
    --color-sub-lightgreen: #cce0b4; /* sub light */
}

/* ============================================================
   横スクロール防止
   元サイトは FV ヒーロー英字が意図的に viewport 幅を超え、
   横スクロールバーが出る状態だった。
   - body / html / main / FV section に overflow-x: clip を付け、
     画面幅 = viewport 幅にぴったり合わせる
   - clip は scrollbar を出さず・スクロール禁止
   ============================================================ */
html, body {
    overflow-x: clip;
    max-width: 100vw;
}
main {
    overflow-x: clip;
}
.fv,
[data-astro-cid-mnynwuyc].fv {
    overflow-x: clip;
}

/* ============================================================
   FV ヒーローテキストの調整
   元: 巨大フォント (max 7.375rem * scale ≈ 157px @1920) +
       line-height:1ch + gap:1.875rem で行が詰めすぎ、
       "BUSINESS" が viewport 右端で見切れていた
   修正:
     - フォントサイズの上限を抑えて画面内に収める
     - flex column の gap を増やして行間を確保
     - line-height:1ch を少し緩める
   ============================================================ */
.fv_textEnText[data-astro-cid-mnynwuyc] {
    /* 上下の余白（flex column gap） */
    gap: clamp(1.5rem, calc(2vw + 0.75rem), 4.5rem);
    /* 「Empowering BUSINESS」(19 chars) が viewport - 余白に収まるサイズで計算
       (100vw - 120px) / 13.5 ≒ 19文字分の幅 ÷ 文字ピッチ比率
       これで全 viewport で見切れない */
    font-size: clamp(2.25rem, calc((100vw - 120px) / 13.5), 7.5rem);
    line-height: 1.15;
    /* 念のため最大幅も viewport に追随させる */
    max-width: calc(100vw - 80px);
    /* 単語が長すぎる場合の折り返し（保険） */
    overflow-wrap: break-word;
}
.fv_textJaText[data-astro-cid-mnynwuyc] {
    /* 日本語キャッチを少し大きく + 余白も */
    margin-top: clamp(1.25rem, 2vw, 2.5rem);
    font-size: clamp(1.25rem, 1.6vw, 2rem);
}

/* ============================================================
   非FV セクションの中央寄せ
   元: section.container が 6 列フルワイド grid で image を左端・
       text/heading/button を右端に張り付け → 端寄りで間延び
   修正: section.container を最大 1400px に絞って margin-inline:auto で
       画面中央に配置。内側の grid 構造はそのまま、見え方だけ中央寄せ
   対象: data-astro-cid-m54o4cta（about/work/people等プレビュー）
        他の同種 layout cid も含めて network 内全部
   ============================================================ */
section.container[data-astro-cid-m54o4cta],
section.container[data-astro-cid-4xhrpwox],
[data-components-modules-sectionbase]:not(.fv) {
    max-width: min(calc(100vw - 60px), 1400px);
    margin-inline: auto;
}

/* bodyCopy セクション（リード文セクション）も同じく中央寄せに */
section.bodyCopy {
    max-width: min(calc(100vw - 60px), 1400px);
    margin-inline: auto;
}

/* TOPページのお問い合わせ・会社案内セクション中央寄せは撤回（元のレイアウトに戻す） */

/* ============================================================
   ② ナビバー・フッター・モバイルメニューのロゴを「LINK FINANCE」テキストに差し替え
       元の SVG ロゴは「CrowdLoan」のパスデータなので非表示にして、
       同じ位置に LINK FINANCE のテキスト型ロゴを表示
   ============================================================ */
.siteName_link[data-astro-cid-xbstl6g3] svg[data-icon="logo"],
.siteName[data-astro-cid-mtxgg6pp] svg[data-icon="logo-white"],
.header_siteName[data-astro-cid-52d4wjy7] svg[data-icon="logo-white"] {
    display: none !important;
}
.siteName_link[data-astro-cid-xbstl6g3]::before {
    content: "LINK FINANCE";
    font-family: var(--ff-en, "Noto Sans JP", sans-serif);
    font-weight: 700;
    font-size: clamp(1.05rem, 1.1vw + 0.6rem, 1.6rem);
    letter-spacing: 0.08em;
    color: var(--color-black);
    line-height: 1;
    display: inline-block;
    white-space: nowrap;
}
.siteName[data-astro-cid-mtxgg6pp]::before {
    content: "LINK FINANCE";
    font-family: var(--ff-en, "Noto Sans JP", sans-serif);
    font-weight: 700;
    font-size: clamp(1rem, 1vw + 0.5rem, 1.5rem);
    letter-spacing: 0.08em;
    color: var(--color-white);
    line-height: 1;
    display: inline-block;
    white-space: nowrap;
}
.header_siteName[data-astro-cid-52d4wjy7]::before {
    content: "LINK FINANCE";
    font-family: var(--ff-en, "Noto Sans JP", sans-serif);
    font-weight: 700;
    font-size: clamp(1.05rem, 1.1vw + 0.6rem, 1.6rem);
    letter-spacing: 0.08em;
    color: var(--color-white);
    line-height: 1;
    display: inline-block;
    white-space: nowrap;
}

/* サブページのヒーローを背景画像化する override は撤回（元のレイアウトに戻す） */

/* TOP「お問い合わせ」「会社案内」: 画像とテキストの間の空列(-)を削除して隣接させる */
section[data-astro-cid-7mrmaqjl] .inner {
    grid-template-areas:
        "heading heading heading image image image"
        "text    text    text    image image image"
        "button  button  button  image image image" !important;
}
section[data-astro-cid-4xhrpwox] {
    grid-template-areas:
        "heading heading heading heading heading heading"
        "image image image text   text   text"
        "image image image button button button" !important;
}

/* ============================================================
   ① コンタクトページ「お問い合わせの流れについて」section
       元: 2列grid(heading 左 / 内容 右に縦並び)
       新: 単一列スタック。見出しを上に、各ステップを下に縦並びで
           h3 と そのすぐ下の説明文/リスト が必ずペアで表示される
       注意: 4列grid化すると h3 と内容が別カラムに分散して壊れる
   ============================================================ */
section[data-astro-cid-rnqwip2c] {
    --_content-column: 1 / -1 !important;
    grid-template-columns: minmax(0, 1fr) !important;
}
/* ステップ群を内包する div は元の vertical stack のまま（block レイアウト） */
section[data-astro-cid-rnqwip2c] > div:not(:is(intersector-component, [class*="heading"])) {
    display: block;
    margin-top: clamp(1.5rem, 3vw, 3rem);
}
/* h3 見出しは元のスタイル（横線セパレータ + 余白）のまま使う */

/* ============================================================
   ② コンタクトページ お問い合わせフォーム「送信する」テキストを
      ボタン内の右側に寄せる
   ============================================================ */
[data-astro-cid-fngpnsyf] a[href*="application"] .text,
.button[data-astro-cid-fngpnsyf] a .text {
    text-align: right;
    justify-self: end;
}

/* ============================================================
   ③ トップページ以外のフッターの aside CTA
      Careers / Contact の矢印アイコン「中の色（背景塗りつぶし）」を
      互いに逆色にして、hover で入れ替わるように
      - 通常時: Careers=黄緑塗り,  Contact=ダークグレー塗り
      - hover時: 互いに反転 (Careers→ダークグレー, Contact→黄緑)
   ============================================================ */
/* インライン <style> より後に効くよう、icon 要素に直接 bg-color 指定 + !important */
.button[data-astro-cid-phv5inm3].-career [data-components-modules-linkicon] {
    background-color: var(--color-lightgreen) !important;  /* 通常: 黄緑 */
    border: 0 !important;
}
.button[data-astro-cid-phv5inm3].-casualvisit [data-components-modules-linkicon] {
    background-color: #3d3d3d !important;                  /* 通常: ダークグレー */
    border: 0 !important;
}
@media (hover: hover) {
    /* Careers ボタン全体を hover でお問い合わせの色（黄緑）と同じに */
    .button[data-astro-cid-phv5inm3].-career:hover {
        background-color: var(--color-lightgreen) !important;
        color: var(--color-black) !important;
    }
    /* hover時のアイコン中の色（互いに反転） */
    .button[data-astro-cid-phv5inm3].-career:hover [data-components-modules-linkicon] {
        background-color: #3d3d3d !important;              /* hover: ダークグレー */
    }
    .button[data-astro-cid-phv5inm3].-casualvisit:hover [data-components-modules-linkicon] {
        background-color: var(--color-lightgreen) !important;  /* hover: 黄緑 */
    }
    /* Careers hover時、矢印自体の色を白に */
    .button[data-astro-cid-phv5inm3].-career:hover [data-components-modules-linkicon] svg {
        background-color: var(--color-white) !important;
    }
}

/* ============================================================
   ① ナビバー（ヘッダー）の CTA も同じ挙動に
       - Careers アイコン中: 通常=黄緑, hover=ダークグレー (+ボタン全体も黄緑、矢印は白)
       - Contact  アイコン中: 通常=ダークグレー, hover=黄緑
   ============================================================ */
.navigation_ctaButton[data-astro-cid-xbstl6g3].-career .navigation_ctaButtonIcon {
    background-color: var(--color-lightgreen) !important;
}
.navigation_ctaButton[data-astro-cid-xbstl6g3].-casualvisit .navigation_ctaButtonIcon {
    background-color: #3d3d3d !important;
}
@media (hover: hover) {
    /* Careers ボタン全体を hover で黄緑に (元 dark → 黄緑) */
    .navigation_ctaButton[data-astro-cid-xbstl6g3].-career:hover {
        background-color: var(--color-lightgreen) !important;
        color: var(--color-black) !important;
    }
    .navigation_ctaButton[data-astro-cid-xbstl6g3].-career:hover .navigation_ctaButtonIcon {
        background-color: #3d3d3d !important;
    }
    .navigation_ctaButton[data-astro-cid-xbstl6g3].-career:hover .navigation_ctaButtonIcon svg {
        background-color: var(--color-white) !important;
    }
    /* Contact ボタン全体を hover で dark に反転 (元 黄緑 → dark) */
    .navigation_ctaButton[data-astro-cid-xbstl6g3].-casualvisit:hover {
        background-color: var(--color-black) !important;
        color: var(--color-white) !important;
    }
    .navigation_ctaButton[data-astro-cid-xbstl6g3].-casualvisit:hover .navigation_ctaButtonIcon {
        background-color: var(--color-lightgreen) !important;
    }
    /* Contact 矢印は hover で白維持 */
    .navigation_ctaButton[data-astro-cid-xbstl6g3].-casualvisit:hover .navigation_ctaButtonIcon svg,
    .button[data-astro-cid-phv5inm3].-casualvisit:hover [data-components-modules-linkicon] svg {
        background-color: var(--color-white) !important;
    }
}

/* ============================================================
   ② results ページの phase_heading 列幅を広げる
       元: 249px の sticky h3 で「事業拡大期 〜 累計成約100億円」が
            2 行に折り返してバランスが悪い
       修正: phase grid の見出し列を 360px まで広げる
   ============================================================ */
.phase[data-astro-cid-sv2pryxn] {
    grid-template-columns: clamp(220px, 26%, 360px) minmax(0, 1fr) !important;
}

/* ============================================================
   ① business ページ hero の「サービス紹介動画」ボタンを削除
   ============================================================ */
button.image_button[data-astro-cid-57l5znwr] {
    display: none !important;
}

/* ============================================================
   ③ ナビバー / フッター / モバイルメニューの「コーポレートサイト」
       ロゴ横テキストを非表示に
   ============================================================ */
.siteName_link[data-astro-cid-xbstl6g3] > span[data-astro-cid-xbstl6g3],
.siteName[data-astro-cid-mtxgg6pp] > span[data-astro-cid-mtxgg6pp],
.header_siteName[data-astro-cid-52d4wjy7] > span[data-astro-cid-52d4wjy7] {
    display: none !important;
}

/* ============================================================
   about ページ「大切にしている価値観」section の日本語見出しを 1 行に
       元: <strong>早く<br>動く</strong> のように <br> で改行
       修正: section 内の <br> を非表示にして 1 行表示
   ============================================================ */
.value_ja[data-astro-cid-grjwxoo7] br,
.value[data-astro-cid-grjwxoo7] br {
    display: none !important;
}

/* ============================================================
   ② contact ページの「お問い合わせの流れについて」をコンパクトに
       元: 各ステップに大きめの margin (1.5〜3rem) があって縦に間延び
       修正: 余白と padding を 1/2 程度に圧縮
   ============================================================ */
section[data-astro-cid-rnqwip2c] > div:not(intersector-component) {
    margin-top: clamp(1rem, 1.5vw, 1.75rem) !important;
}
section[data-astro-cid-rnqwip2c] .heading[data-astro-cid-rnqwip2c] {
    padding-top: clamp(0.6rem, 1vw, 1rem) !important;
    margin-bottom: clamp(0.5rem, 1vw, 0.875rem) !important;
}
section[data-astro-cid-rnqwip2c] .heading[data-astro-cid-rnqwip2c]:not(:first-child) {
    margin-top: clamp(0.6rem, 1.2vw, 1.25rem) !important;
}

/* ============================================================
   画像プレースホルダ可視化（シンプル枠線のみ）
   - ストライプ柄や中央ラベルを削除して、破線の枠だけ表示
   - 画像が読み込まれたら通常表示（プレースホルダ消える）
   ============================================================ */
img[src^="/images/"] {
    background: transparent;
    outline: none;
    color: transparent;            /* alt 文字を非表示 */
    font-size: 0;
    box-sizing: border-box;
    min-height: 120px;
}

/* 画像コンポーネント (Astro Image) の背景塗りを無効化、枠線も削除 */
[data-components-modules-image] {
    --image-background-color: transparent;
}
[data-components-modules-image].-hidden,
[data-components-modules-image]:not(.-hidden) {
    background: transparent !important;
    outline: none !important;
}

/* 中央 "画像" ラベルは表示するがコンテナ枠線は無し */
[data-components-modules-image]::after {
    content: "画像";
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--accent, #5e7440);
    font-family: var(--ff-base);
    font-size: clamp(14px, 1.2vw, 18px);
    font-weight: 500;
    letter-spacing: .1em;
    pointer-events: none;
    z-index: 1;
    opacity: 0.5;
}

/* FV ヒーローの画像アニメ用ボックス (.fv_imageInner) は
   実画像（Unsplash）を入れたので枠・ラベルを撤去 */
.fv_imageInner[data-astro-cid-mnynwuyc] {
    background-color: transparent !important;
    outline: none !important;
    position: relative;
}
.fv_imageInner[data-astro-cid-mnynwuyc]::after {
    content: none !important;
}

/* 実画像が入った画像コンポーネントは「画像」ラベル・破線を消す
   （src 属性のパターンで判定） */
[data-components-modules-image]:has(img[src*="careers-home-fv"]),
[data-components-modules-image]:has(img[src*="careers-home-copy"]),
[data-components-modules-image]:has(img[src*="careers-home-environment"]),
[data-components-modules-image]:has(img[src*="careers-home-work"]),
[data-components-modules-image]:has(img[src*="careers-home-interview"]),
[data-components-modules-image]:has(img[src*="careers-home-crosstalk"]),
[data-components-modules-image]:has(img[src*="careers-home-casualvisit"]),
[data-components-modules-image]:has(img[src*="careers-home-companydeck"]),
[data-components-modules-image]:has(img[src*="careers-about-message"]),
[data-components-modules-image]:has(img[src*="careers-about-hero"]),
[data-components-modules-image]:has(img[src*="careers-about-service"]),
[data-components-modules-image]:has(img[src*="careers-environment-hero"]),
[data-components-modules-image]:has(img[src*="careers-environment-so"]),
[data-components-modules-image]:has(img[src*="careers-environment-hav"]),
[data-components-modules-image]:has(img[src*="careers-work-hero"]),
[data-components-modules-image]:has(img[src*="careers-work-crowdloan"]),
[data-components-modules-image]:has(img[src*="careers-recruitment-hero"]),
[data-components-modules-image]:has(img[src*="careers-casualvisit-hero"]),
[data-components-modules-image]:has(img[src*="careers-casualvisit-image"]),
[data-components-modules-image]:has(img[src*="careers-people-hero"]),
[data-components-modules-image]:has(img[src*="careers-flow-hero"]),
[data-components-modules-image]:has(img[src*="crosstalk_"]),
[data-components-modules-image]:has(img[src*="KV_pc"]),
[data-components-modules-image]:has(img[src*="2b26d4fd64734179b015efc9b1c48b86"]),
[data-components-modules-image]:has(img[src*="b48b6f78759a43d69048cb8e266eb62e"]),
[data-components-modules-image]:has(img[src*="3663cf918e0e4d82b767583e1bee3cfc"]),
[data-components-modules-image]:has(img[src*="15bbef90d75a49a796dbf8fb71b812b4"]),
[data-components-modules-image]:has(img[src*="aee12838f9704534b1b9ebc55158a732"]) {
    outline: none !important;
}
[data-components-modules-image]:has(img[src*="careers-home-fv"])::after,
[data-components-modules-image]:has(img[src*="careers-home-copy"])::after,
[data-components-modules-image]:has(img[src*="careers-home-environment"])::after,
[data-components-modules-image]:has(img[src*="careers-home-work"])::after,
[data-components-modules-image]:has(img[src*="careers-home-interview"])::after,
[data-components-modules-image]:has(img[src*="careers-home-crosstalk"])::after,
[data-components-modules-image]:has(img[src*="careers-home-casualvisit"])::after,
[data-components-modules-image]:has(img[src*="careers-home-companydeck"])::after,
[data-components-modules-image]:has(img[src*="careers-about-message"])::after,
[data-components-modules-image]:has(img[src*="careers-about-hero"])::after,
[data-components-modules-image]:has(img[src*="careers-about-service"])::after,
[data-components-modules-image]:has(img[src*="careers-environment-hero"])::after,
[data-components-modules-image]:has(img[src*="careers-environment-so"])::after,
[data-components-modules-image]:has(img[src*="careers-environment-hav"])::after,
[data-components-modules-image]:has(img[src*="careers-work-hero"])::after,
[data-components-modules-image]:has(img[src*="careers-work-crowdloan"])::after,
[data-components-modules-image]:has(img[src*="careers-recruitment-hero"])::after,
[data-components-modules-image]:has(img[src*="careers-casualvisit-hero"])::after,
[data-components-modules-image]:has(img[src*="careers-casualvisit-image"])::after,
[data-components-modules-image]:has(img[src*="careers-people-hero"])::after,
[data-components-modules-image]:has(img[src*="careers-flow-hero"])::after,
[data-components-modules-image]:has(img[src*="crosstalk_"])::after,
[data-components-modules-image]:has(img[src*="KV_pc"])::after,
[data-components-modules-image]:has(img[src*="2b26d4fd64734179b015efc9b1c48b86"])::after,
[data-components-modules-image]:has(img[src*="b48b6f78759a43d69048cb8e266eb62e"])::after,
[data-components-modules-image]:has(img[src*="3663cf918e0e4d82b767583e1bee3cfc"])::after,
[data-components-modules-image]:has(img[src*="15bbef90d75a49a796dbf8fb71b812b4"])::after,
[data-components-modules-image]:has(img[src*="aee12838f9704534b1b9ebc55158a732"])::after {
    content: none !important;
}

/* ============================================================
   サブページ (TOP以外) FV 背景デザイン刷新
   元: 巨大 outlined "C" SVG (.background > svg) — Crowdloan template名残
   新: sage-green 柔円アクセント（右上オーブ） + 下部水平アクセント線
   ※ TOPは .background 要素自体無し → 影響なし
   ============================================================ */
.background > svg {
    display: none !important;
}
.background,
.background[data-astro-cid-f62gaufh] {
    position: absolute !important;
    top: -200px !important;
    right: -240px !important;
    left: auto !important;
    width: 720px !important;
    height: 720px !important;
    max-height: none !important;
    border-radius: 50% !important;
    background: radial-gradient(circle at center,
        rgba(196, 216, 168, 0.55) 0%,
        rgba(196, 216, 168, 0.28) 50%,
        rgba(196, 216, 168, 0) 78%) !important;
    overflow: visible !important;
    pointer-events: none;
    z-index: -1 !important;
}
/* FVセクション下部に細いsage水平アクセント線 */
[data-components-modules-standardsection]:has(.background) {
    position: relative;
}
[data-components-modules-standardsection]:has(.background)::after {
    content: '';
    position: absolute;
    left: 5%;
    right: 5%;
    bottom: 0;
    height: 1px;
    background: linear-gradient(to right,
        transparent 0%,
        rgba(196, 216, 168, 0.7) 25%,
        rgba(196, 216, 168, 0.7) 75%,
        transparent 100%);
    pointer-events: none;
}

/* ============================================================
   各ページのヒーロー下フルワイド画像（width=1440 height=600 指定）
   元: 画像 natural aspect が優先され縦 800-960px に膨らむ
   修正: 1440/600 (2.4:1) を強制し object-fit:cover で切り抜き
        → about / results / business / members 等で縦をテンプレ本来の高さに揃える
   ============================================================ */
[data-components-modules-image] img[width="1440"][height="600"] {
    aspect-ratio: 1440 / 600 !important;
    object-fit: cover !important;
    height: auto !important;
}

/* ============================================================
   実績(/results/) ページの sticky 画像を viewport 内に収める
   元: .image{position:sticky; top:var(--header-height); height:848px}
        画面高さが 1080 未満だと image が viewport を超えて隠れる
   修正: max-height を viewport - header - 余白に制限
        aspect-ratio で width も自動縮小
   ============================================================ */
.image[data-astro-cid-r7b5hakj] {
    max-height: calc(100dvh - var(--header-height) - 2rem);
    aspect-ratio: 637 / 848;
    width: auto !important;
    margin-inline: auto;
    overflow: hidden;
    /* 画像を少し右に寄せる（Partners / 経営者の声 sections 共通） */
    translate: clamp(40px, 6vw, 100px) 0;
}
.image[data-astro-cid-r7b5hakj] [data-components-modules-image] {
    height: 100% !important;
    width: 100% !important;
    max-width: none;
    max-height: 100%;
}
.image[data-astro-cid-r7b5hakj] img {
    height: 100% !important;
    width: 100% !important;
    max-height: none;
    max-width: none;
    object-fit: contain;
}

/* ============================================================
   Scroll-reveal system (Lenis + IO)
   .reveal を IO で観測し -hidden → -shown へ
   data-reveal: fade-up (default) | fade | mask | text
   data-reveal-stagger 親で子に --i 自動付与 → transition-delay
   ============================================================ */

/* 共通 transition. cubic-bezier(.22,.61,.36,1) は ease-out cinematic */
.reveal {
    --reveal-delay: calc(var(--i, 0) * 80ms);
    transition:
        opacity .8s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
        transform .8s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
        clip-path 1s cubic-bezier(.22,.61,.36,1) var(--reveal-delay);
}

/* -hidden 初期状態（バリアント毎） */
.reveal.-hidden {
    opacity: 0;
}
.reveal.-hidden[data-reveal="fade-up"],
.reveal.-hidden:not([data-reveal]) {
    transform: translateY(40px);
}
.reveal.-hidden[data-reveal="fade"] {
    transform: none;
}
.reveal.-hidden[data-reveal="mask"] {
    clip-path: inset(0 0 100% 0);
    transform: translateY(20px);
}
.reveal.-hidden[data-reveal="text"] {
    transform: translateY(24px);
}

/* -shown 終端状態 */
.reveal.-shown {
    opacity: 1;
    transform: translateY(0);
    clip-path: inset(0);
}

/* will-change は実際にアニメする要素にだけ */
.reveal.-hidden[data-reveal="mask"],
.reveal.-hidden[data-reveal="fade-up"],
.reveal.-hidden:not([data-reveal]) {
    will-change: opacity, transform;
}
.reveal.-hidden[data-reveal="mask"] {
    will-change: opacity, transform, clip-path;
}
/* shown 後は will-change を外す（メモリ節約） */
.reveal.-shown {
    will-change: auto;
}

/* text バリアント: 子の単語/span 1個ずつスタガー
   markup 例: <h2 class="reveal" data-reveal="text"><span>...</span><span>...</span></h2> */
.reveal[data-reveal="text"] > span,
.reveal[data-reveal="text"] > .word {
    display: inline-block;
    transition: opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1);
    transition-delay: calc(var(--wi, 0) * 60ms);
}
.reveal.-hidden[data-reveal="text"] > span,
.reveal.-hidden[data-reveal="text"] > .word {
    opacity: 0;
    transform: translateY(24px);
}
.reveal.-shown[data-reveal="text"] > span,
.reveal.-shown[data-reveal="text"] > .word {
    opacity: 1;
    transform: translateY(0);
}

/* prefers-reduced-motion: 全アニメ無効化＆即可視 */
@media (prefers-reduced-motion: reduce) {
    .reveal,
    .reveal.-hidden,
    .reveal.-shown,
    .reveal[data-reveal="text"] > span,
    .reveal[data-reveal="text"] > .word {
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
        clip-path: inset(0) !important;
        will-change: auto !important;
    }
}

