@charset "UTF-8";

:root {
    /* ==========================================================================
     1. Spacing (余白)
     ========================================================================== */

/* --- Content Spacing (sp-) --- */
    --sp-xs: clamp(8px, 6.432px + 0.43vw, 12px);
    /* 8px - 12px */
    --sp-sm: clamp(16px, 12.864px + 0.87vw, 24px);
    /* 16px - 24px */
    --sp-md: clamp(24px, 20.864px + 0.87vw, 32px);
    /* 24px - 32px */
    --sp-lg: clamp(40px, 30.608px + 2.61vw, 64px);
    /* 40px - 64px */
    --sp-xl: clamp(64px, 49.904px + 3.91vw, 100px);
    /* 64px - 100px */

    /* --- Section Vertical (section-v-) --- */

    --section-v-sm: clamp(56px, 53.328px + 0.83vw, 64px);
    /* 56px - 64px */
    --section-v-md: clamp(80px, 64.352px + 4.35vw, 120px);
    /* 80px - 120px */
    --section-v-lg: clamp(120px, 104.352px + 4.35vw, 160px);
    /* 120px - 160px */
    
    --section-v: var(--section-v-md);

    /* --- Section Horizontal (section-h-) --- */
    --section-h-sm: clamp(12px, 7.312px + 1.3vw, 24px);
    /* 12px - 24px */
    --section-h-md: clamp(18px, 6.256px + 3.26vw, 48px);
    /* 18px - 48px */
    --section-h-lg: clamp(24px, 2.08px + 6.09vw, 80px);
    /* 24px - 80px */

    --section-h: var(--section-h-md);

    /* ==========================================================================
     2. Colors (カラー)
     ========================================================================== */

    --cl-base-10: #F9F9F8;
    --cl-base-20: #F5F5F4;
    --cl-base-30: #F0F0EE;
    --cl-base-40: #E6E6E3;
    --cl-base-50: #9E9F90;
    --cl-base-60: #55564B;
    --cl-base-70: #42433A;
    --cl-base-80: #2E2E28;
    --cl-base-90: #161613;
    --cl-base-base: #F5F5F4;

  --cl-primary-10: #F5F8FC;
  --cl-primary-20: #EBF1FA;
  --cl-primary-30: #DAE7F8;
  --cl-primary-40: #BED6F6;
  --cl-primary-50: #90BAF5;
  --cl-primary-60: #448EF2;
  --cl-primary-70: #3064AC;
  --cl-primary-80: #214679;
  --cl-primary-90: #132C4E;
  --cl-primary-base: #214679;

    /* --- Gray (テキスト等) --- */
    --cl-gray-0: #FFFFFF;
    --cl-gray-10: #F8F8F9;
    --cl-gray-20: #F1F2F2;
    --cl-gray-30: #E7E8E8;
    --cl-gray-40: #D7D7D8;
    --cl-gray-50: #BDBEBE;
    /* サブテキスト */
    --cl-gray-60: #989899;
    --cl-gray-70: #717172;
    --cl-gray-80: #545556;
    --cl-gray-90: #363637;
    /* メインテキスト */


    /* ==========================================
     3. Typography (タイポグラフィ)
     ========================================== */

    --size-offset: 0px;
    --jump-scale: 1.0;

    --fs-base: calc(clamp(14px, 0.22vw + 13.2px, 16px) + var(--size-offset));
    --fs-base-sub: calc(clamp(12px, 0.22vw + 11.2px, 14px) + var(--size-offset));

    /* 各サイズ定義 */
    --fs-xxl: calc(var(--fs-base) * 3.0 * var(--jump-scale));
    /* 48px */
    --fs-xl: calc(var(--fs-base) * 2.25 * var(--jump-scale));
    /* 36px */
    --fs-lg: calc(var(--fs-base) * 1.625 * var(--jump-scale));
    /* 26px */
    --fs-md: calc(var(--fs-base) * 1.25 * var(--jump-scale));
    /* 20px */
    --fs-sm: calc(var(--fs-base) * 1.125 * var(--jump-scale));
    /* 18px */
    --fs-xs: var(--fs-base);
    /* 16px */
    --fs-xxs: var(--fs-base-sub);
    /* 14px */

    --lh-base: 1.8;
    /* 読みやすさ重視で少し広めに */
    --lh-tight: 1.4;
    /* 見出し用 */

    /* ==========================================================================
     4. Layout & Others (レイアウト・共通)
     ========================================================================== */
    /* --- Widths --- */
    --wd-container-xl: 1536px;
    --wd-container-lg: 1440px;
    --wd-container-md: 1280px;
    --wd-container-sm: 768px;
    --wd-container-xs: 560px;
    --wd-container-section: calc(var(--wd-container-md) - (var(--section-h) * 2));

    /* --- Heights --- */
    /* ht-header: 360px(56px) 〜 1280px(80px) で可変 */
    --ht-header: clamp(56px, 2.61vw + 46.6px, 80px);

    /* --- Z-index (階層レイヤー) --- */
    --zi-level-1: 10;
    /* 装飾要素 */
    --zi-level-2: 100;
    /* ヘッダー本体（Sticky） */
    --zi-level-3: 200;
    /* ★オーバーレイ・ぼかしレイヤー（背景を遮断） */
    --zi-level-4: 300;
    /* ★ナビゲーション・ドロップダウン（操作対象） */
    --zi-level-5: 1000;
    /* モーダル・最上層 */



    /* --- Box Shadow (影) --- */
    /* sm: カードやボタンなど、わずかに浮かせたい時 */
    --sd-sm: 0 0 8px rgba(51, 51, 51, 0.08);

    /* md: ナビゲーションメニューやドロップダウン用 */
    --sd-md: 0 0 24px rgba(51, 51, 51, 0.12);

    /* lg: モーダルや強調したい浮遊コンテンツ用 */
    --sd-lg: 0 0 48px rgba(51, 51, 51, 0.16);


    /* ------------------------------------------
     Box Shadows (Bottom)
     ------------------------------------------ */
    /* 標準的な下方向の影（カードなど） */
    --sd-sm: 0 0 24px 0px rgb(0 0 0 / 6%);

    /* 少し深い影（ホバー時や浮き出しを強調したい時） */
    --sd-md: 0 0 24px 0px rgb(0 0 0 / 6%);

    /* 強調したいフローティング要素用 */
    --sd-lg: 0 0 32px 0px rgb(0 0 0 / 6%);


    /* 標準的な下方向の影（カードなど） */
    --sd-bottom-sm: 0 4px 24px 0px rgb(0 0 0 / 6%);

    /* 少し深い影（ホバー時や浮き出しを強調したい時） */
    --sd-bottom-md: 0 8px 24px 0px rgb(0 0 0 / 6%);

    /* 強調したいフローティング要素用 */
    --sd-bottom-lg: 0 12px 32px 0px rgb(0 0 0 / 6%);


    --radius-sm: 6px;
    --radius-md: 8px;
    --radius-lg: 16px;
}

@media (max-width: 768px) {
    :root {
        --radius-sm: 6px;
        --radius-md: 8px;
        --radius-lg: 16px;
    }
}


/* common
 * *********************************** */
body {
    font-family: "Poppins", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "游ゴシック Medium", YuGothic, YuGothicM, "Hiragino Kaku Gothic ProN", メイリオ, Meiryo, sans-serif;
    -webkit-font-smoothing: antialiased;
    min-height: 100vh;
    -webkit-text-size-adjust: 100%;
    text-rendering: optimizeSpeed;
    letter-spacing: .08em;
    background: var(--cl-base-20);
    font-weight: 400;
    font-feature-settings: 'palt';
    color: var(--cl-gray-80);
    font-size: var(--fs-base);
    line-height: var(--lh-base);
    margin: 0;
    overflow-x: hidden;
}

/* すべての要素に対して、アンカー位置をヘッダーの高さ分下にずらす */
html {
    scroll-behavior: smooth;
    scrollbar-gutter: stable;
    scroll-padding-top: var(--ht-header);
}

h1,
h2,
h3 {
    line-height: var(--lh-tight);

    font-weight: 700;
}

h1 {
    font-size: var(--fs-xxl);
    letter-spacing: .06em;
    color: var(--cl-primary-base);
}

h2 {
    font-size: var(--fs-xl);
    letter-spacing: .06em;
    color: var(--cl-primary-base);
}

h3 {
    font-size: var(--fs-lg);
}

h4 {
    font-size: var(--fs-md);
}

h5 {
    font-size: var(--fs-md);
}

small {
    font-size: var(--fs-base-sub);
}

p+p {
    margin-top: 0.8em;
}


p a {
    display: inline;
    color: var(--cl-primary-base);
    position: relative;
    font-weight: 700;
    transition: 0.3s ease;
}

a:hover {
    opacity: .7;
}


picture img {
    width: 100%;
}


input:focus-visible {
    outline: none;
}

/* すべての入力欄のプレイスホルダーの色を変える */
input::placeholder,
textarea::placeholder {
    color: var(--c-white-darkest);
    /* 文字色 */
    opacity: 1;
    /* Firefox対策（デフォルトで薄くなっているため） */
    font-weight: inherit;
}




/* Base Styles */
body.is-scroll-lock {
    overflow: hidden;
}



/* =========================================
   Header & Navigation Styles
   ========================================= */

/* --- Header 本体 --- */
.bl-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--ht-header);
    z-index: var(--zi-level-2);
    /* ヘッダー本体の階層 */
    display: flex;
    align-items: center;
    background-color: var(--cl-gray-0);
    transition: background-color 0.3s ease, box-shadow 0.3s ease;
    padding: 0 var(--section-h);
}

/* スクロール前（透明状態） */
.bl-header.is-transparent {
    background-color: transparent;
    box-shadow: none;
}

/* --- 背景ぼかしレイヤー (オーバーレイ) --- */
/* メニュー展開時に背後を遮断するレイヤー */
.bl-header::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.4s ease, visibility 0.4s;
    z-index: var(--zi-level-3);
    /* 背景を遮断する階層 */
}

/* メニュー展開時のみ表示 */
.bl-header.is-open::before {
    opacity: 1;
    visibility: visible;
}

/* --- ヘッダー内部コンテナ --- */
.bl-header_container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    max-width: var(--wd-container-section);
    margin: 0 auto;
    position: relative;
    height: 56%;
}

/* ロゴの固定 */
.bl-header_logo {
    flex-shrink: 0;
    height: 100%;
    width: auto;
}

.bl-header_logo a img {
    height: 100%;
    width: auto;
}

.bl-header_actions {
    display: flex;
    align-items: center;
    gap: 1vw;
    /* ボタンとメニューの間の距離 */
}



/* --- ハンバーガーメニューボタン --- */
.bl-header_menu {
    width: 48px;
    height: 48px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    /* 中央配置 */
    align-items: center;
    /* 中央配置 */
    gap: 6px;
    /* 線の間隔 */
    border-radius: 50%;
    /* 円形にする */
    background-color: transparent;
    transition: background-color 0.3s ease;
    z-index: var(--zi-level-5);
    cursor: pointer;
    border: none;
    padding: 0;
    position: relative;
}

/* 線のサイズを固定（ボタンが大きくなった分、線が広がらないようにする） */
.bl-header_menu-line {
    width: 24px;
    height: 2px;
    background-color: var(--cl-gray-90);
    transition: transform 0.3s, opacity 0.3s, background-color 0.3s;
}

/* ホバー時の背景色：薄いグレー */
.bl-header_menu:hover {
    background-color: var(--cl-primary-30);
    /* デザインシステムの薄いグレー */
}

/* メニュー展開時のホバー（背景が濃い色になるため、円の色を調整） */
.bl-header.is-open .bl-header_menu:hover {
    background-color: var(--cl-primary-70);
}

/* 1. 線を白くする（背景が濃い色になるため必須） */
.bl-header.is-open .bl-header_menu-line {
    background-color: var(--cl-gray-0);
    /* 白 */
}

/* メニュー展開時の線の位置微調整（中央配置に変更したため、数値調整） */
.bl-header.is-open .bl-header_menu-line:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
}

.bl-header.is-open .bl-header_menu-line:nth-child(2) {
    opacity: 0;
}

.bl-header.is-open .bl-header_menu-line:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
}

/* --- ナビゲーションメニュー (ドロワー本体) --- */
.bl-header_nav {
    position: fixed;
    top: 0;
    right: calc(50% - (var(--wd-container-section) / 2 + var(--section-h)));
    width: 100%;
    max-width: 480px;
    height: 100vh;
    background-color: var(--cl-primary-base);
    z-index: var(--zi-level-4);
    /* 操作対象：オーバーレイより上 */

    /* 上からスライド + フェード */
    transform: translateY(-100%);
    opacity: 0;
    visibility: hidden;
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, visibility 0.3s;
    overflow-y: auto;
    box-shadow: var(--shd-md);
}

@media (max-width: 1280px) {
    .bl-header_nav {
        right: 0;
    }
}

.bl-header.is-open .bl-header_nav {
    transform: translateY(0);
    opacity: 1;
    visibility: visible;
}

/* ナビ内部コンテンツ */
.bl-header_nav-container {
    padding: var(--sp-lg) var(--sp-md) var(--sp-md);
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100%;
}

.bl-header_nav-list {
    margin: 0 0 var(--sp-lg);
    width: 100%;
}

.bl-header_nav-list a {
    display: block;
    padding: var(--sp-xs);
    font-size: var(--fs-md);
    color: var(--cl-gray-0);
    border-bottom: 1px solid var(--cl-primary-70);
    position: relative;
    transition: color 0.3s;
}

/* --- ナビゲーションメニュー内のリンクホバー演出 --- */

/* 共通設定：矢印の土台 */
.bl-header_nav-list a::before,
.bl-header_nav-list a::after {
    content: "";
    position: absolute;
    top: 50%;
    right: var(--sp-xs);
    /* 位置の基準 */
    background-color: var(--cl-gray-0);
    opacity: 0;
    pointer-events: none;
    transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

/* 矢印の「棒」部分 */
.bl-header_nav-list a::after {
    width: 32px;
    height: 1px;
    transform: translateY(-50%) translateX(20px);
}

/* 矢印の「先端」部分 */
.bl-header_nav-list a::before {
    width: 10px;
    height: 1px;
    transform: translateY(-50%) translateX(20px) rotate(45deg);
    transform-origin: right center;
}

/* ホバー時の挙動 */
.bl-header_nav-list a:hover {
    opacity: 1;
    /* a自体の透明度変化を無効化し、矢印を目立たせる */
}

/* 棒のスライドイン */
.bl-header_nav-list a:hover::after {
    opacity: 1;
    transform: translateY(-50%) translateX(0);
}

/* 先端のスライドイン */
.bl-header_nav-list a:hover::before {
    opacity: 1;
    transform: translateY(-50%) translateX(0) rotate(45deg);
}

/* SNSアイコンエリア */

.bl-header_sns {
    justify-content: center;
    margin-bottom: 40px;
}

/* ナビゲーション内お問い合わせボタン */
.bl-header_nav-btn {}




/* Section Head */
.bl-section-head {
    margin-bottom: var(--sp-lg);
    text-align: center;
}

.bl-section-head_ttl {}

.bl-section-head_sub {
    font-size: var(--fs-xxs);
    color: var(--cl-gray-50);
    display: block;
    margin-top: var(--sp-xs);
    text-transform: uppercase;
    letter-spacing: 0.4em;
}

.bl-section-head_lead {
    margin-top: var(--sp-md);
    max-width: var(--wd-container-sm);
    margin-right: auto;
    margin-left: auto;
    width: fit-content;
    text-align: left;
}


/* Note Card */
.bl-note-card {
    background: var(--cl-gray-0);
    /* カンプ通り白背景 */
}

/* 命名修正: thumbWrapper -> thumb-wrapper */
.bl-note-card_thumb-wrapper {
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 4px;
    background: var(--cl-primary-20);
    margin-bottom: var(--sp-sm);
}

.bl-note-card_thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s;
}

.bl-note-card:hover .bl-note-card_thumb {
    transform: scale(1.05);
}

.bl-note-card_cat {
    font-size: 10px;
    color: var(--cl-gray-50);
    display: block;
    margin-bottom: var(--sp-xs);
}

.bl-note-card_ttl {
    font-size: var(--fs-sm);
    margin: 0 0 var(--sp-xs);
    line-height: var(--lh-tight);
}

.bl-note-card_excerpt {
    font-size: var(--fs-xxs);
    color: var(--cl-gray-70);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}


/* Timeline (Profile) */
/* タイムライン全体のコンテナ */
.bl-timeline {}

/* 各項目のブロック */
.bl-timeline_item {}


/* 年号（見出し） */
.bl-timeline_year {
    margin: var(--sp-xs) 0;
    color: var(--cl-primary-base);
}

/* 縦線とコンテンツをまとめるラッパー */
.bl-timeline_content {
    border-left: 1px solid var(--cl-primary-base);
    padding: var(--sp-md) 0 var(--sp-md) var(--sp-md);
    margin-left: 0.5em;
}

/* コンテンツ内のタイトル */
.bl-timeline_ttl {
    margin-bottom: var(--sp-xs);
}

/* コンテンツ内のテキスト */
.bl-timeline_txt {
    line-height: 1.8;
    margin: 0;
}

/* コンテンツ内のリスト */
.bl-timeline_list {
    list-style: none;
    /* デフォルトの黒丸を消す */
    padding: 0;
    margin: 0;
}

/* リストアイテム */
.bl-timeline_list li {
    line-height: 1.8;
    position: relative;
    padding-left: 1em;
    text-indent: -1em;
    /* 2行目以降のインデントを揃える */
}

/* リストの先頭に「・」をつける */
.bl-timeline_list li::before {
    content: "・";
}

/* Contact Block */
.bl-contact-block {
    margin-bottom: var(--sp-lg);
}

.bl-contact-block_ttl {
    font-size: var(--fs-sm);
    margin: 0 0 var(--sp-sm);
    display: flex;
    align-items: center;
}

/* 見出し左の斜め線装飾 */
.bl-contact-block_ttl::before {
    content: "";
    display: inline-block;
    width: 12px;
    height: 1px;
    background-color: var(--cl-gray-90);
    transform: rotate(-45deg);
    margin-right: 10px;
}


/* Footer */
.bl-footer {
    background-color: var(--cl-primary-base);
    /* 濃色 */
    color: var(--cl-gray-0);

}

.bl-footer_container {
    max-width: var(--wd-container-sm);
    padding: var(--section-v-sm) var(--section-h);
    margin: 0 auto;
    display: grid;
    gap: var(--sp-md);
}

.bl-footer_logo {
    margin: 0 auto;
    display: block;
    width: fit-content;
}

.bl-footer_logo img {
    max-width: 240px;
    filter: brightness(0) invert(1);
}

.bl-footer_info {
    display: grid;
    gap: var(--sp-md);
}

.bl-footer_sns {
    display: flex;
    justify-content: center;
    gap: var(--sp-md);
}

.bl-footer_sns img {
    width: 20px;
}

.bl-footer_nav {
    margin-right: auto;
    margin-left: auto;
    width: fit-content;
    text-align: left;
}

.bl-footer_copy {
    display: block;
    background-color: var(--cl-primary-90);
    font-size: var(--fs-xxs);
    color: var(--cl-gray-0);
    padding: var(--sp-xs) var(--section-h);
    text-align: center;
}


.bl-card {
    display: flex;
    flex-direction: column;
    gap: var(--sp-sm);
    transition: all 0.3s ease;
}

.bl-card_body {
    display: flex;
    flex-direction: column;
    gap: var(--sp-xs);
}

.bl-card--bg {
    border-radius: var(--radius-md);
    background-color: var(--cl-gray-0);
    box-shadow: var(--sd-md);
    border: 1px solid var(--cl-gray-30);
}

.bl-card--bg .bl-card_cat span {
    background-color: var(--cl-primary-10);
}

.bl-card_link:hover {
    opacity: 1;
}

.bl-card_link:hover .bl-card--bg {
    box-shadow: var(--sd-bottom-md);
    transform: translateY(-8px);
    opacity: 1;
}

.bl-card--bg .bl-card_img {
    border-radius: var(--radius-md) var(--radius-md) 0 0;
    /* 必要に応じて */
}

.bl-card--bg .bl-card_body {
    padding: 0 var(--sp-sm) var(--sp-sm);
    /* root定義の余白（例: 24px） */
    border-radius: 0 0 var(--radius-md) var(--radius-md);
}

.bl-card_img {
    max-width: 400px;
    margin: auto;
}

.bl-card_cat {
    display: flex;
    margin-bottom: -0.3em;
    flex-wrap: wrap;
    font-size: var(--fs-xxs);
    color: var(--cl-primary-base);
}

.bl-card_cat span {

    display: block;
    background-color: var(--cl-primary-20);
    padding: 0px 8px;
    border-radius: 40px;
    width: fit-content;
}

.bl-card_ttl {}

.bl-card_sub-ttl {
    font-size: var(--fs-xxs);
    color: var(--cl-gray-70);
    display: block;
    letter-spacing: 0.16em;
    margin-bottom: -0.8em;
}

.bl-column_ttl {
    margin-bottom: 0.4em;
}



/* =========================================
   2. Patterns (pt-)
   ========================================= */



   .pt-list li {
    padding-left: 1.2em;
    position: relative;
   }

.pt-list li::before {
    content: "•";
    margin-left: -0.8em;
    margin-right: 0.4em;
}

/* カード全体を「執筆中」の状態にする場合 */
.pt-card--inactive {
    cursor: default;
    pointer-events: none;
    position: relative;
}

/* 「執筆中」などのラベルを出す場合のスタイル（任意） */
.pt-card--inactive::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: var(--radius-md);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

/* Backdrop blur and distortion layer */
.pt-card--inactive::after {
    content: "執筆中";
    position: absolute;
    display: block;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    font-size: var(--fs-xl);
    font-weight: bold;
    text-shadow: 0 0 24px var(--cl-gray-0);
}

.pt-center-box {
    margin-right: auto;
    margin-left: auto;
    width: fit-content;
    /* 中身の幅に合わせる */
    text-align: left;
    /* 内部のテキストは左寄せ */
}

.pt-line-vertical {
    position: relative;
}

.pt-line-vertical::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 1px;
    height: calc(var(--section-v) - 18px);
    background-color: var(--cl-primary-base);
}

/* Container */
.pt-container--section {
    max-width: var(--wd-container-section);
    margin: 0 auto;
}

.pt-container--md {
    max-width: var(--wd-container-md);
    margin: 0 auto;
}

.pt-container--sm {
    max-width: var(--wd-container-sm);
    margin: 0 auto;
}

/* Buttons */
.pt-btn {
    max-width: 320px;
    padding: 0.6em 1.6em;
    border-radius: 999px;
    font-size: var(--fs-base-sub);
    font-weight: bold;
    text-align: center;
    border: 2px solid var(--cl-primary-base);
    transition: all 0.3s ease;
    background-color: var(--cl-primary-base);
    color: var(--cl-gray-0);
    margin-left: auto;
    margin-right: auto;
}

.pt-btn--lg {
    width: 100%;
    padding: 0.8em 1.6em;
}

.pt-btn:hover {
    opacity: 1;
}

.pt-btn:hover {
    background-color: var(--cl-gray-0);
    color: var(--cl-primary-base);
}

.pt-btn--reversal {
    background-color: var(--cl-gray-0);
    color: var(--cl-primary-base);
    border-color: var(--cl-gray-0);
}

.pt-btn--reversal:hover {
    background-color: var(--cl-primary-base);
    color: var(--cl-gray-0);
    border-color: var(--cl-gray-0);
}

.pt-btn--outline {
    border: 2px solid var(--cl-primary-base);
    background-color: var(--cl-gray-0);
    color: var(--cl-primary-base);
}

.pt-btn--outline:hover {
    background-color: var(--cl-primary-base);
    color: var(--cl-gray-0);
}

.pt-btn--white {
    background-color: var(--cl-gray-0);
}

.pt-btn--sm {
    padding: 8px 20px;
    min-width: auto;
}


/* Grid */
.pt-grid {
    display: grid;
    gap: var(--sp-xl) var(--sp-lg);
}

.pt-grid--3col {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

/* 基本形：2カラム・レスポンシブ（767px以下で縦積み） */
.pt-grid--2col-stack {
    display: grid;
    grid-template-columns: 1fr 1fr;
    /* PCでは50%ずつ */
    gap: var(--sp-md);
    /* rootの変数を使用 */
}

@media (max-width: 767px) {
    .pt-grid--2col-stack {
        grid-template-columns: 1fr;
        /* スマホでは1列（積み上げ） */
    }
}

/* 逆転バリエーション：スマホ時に順序を入れ替える */
.pt-grid--2col-stack-rev {
    display: grid;
    grid-template-columns: 1fr 1fr;
    /* PCでは50%ずつ */
    gap: var(--sp-md);
}

@media (max-width: 767px) {
    .pt-grid--2col-stack-rev>*:nth-child(1) {
        order: 2;
        /* 1番目の要素を下へ */
    }

    .pt-grid--2col-stack-rev>*:nth-child(2) {
        order: 1;
        /* 2番目の要素（右側だったもの）を上へ */
    }
}

@media (max-width: 767px) {
    .pt-grid--2col-stack-rev {
        grid-template-columns: 1fr;
        /* スマホでは1列（積み上げ） */
    }
}

/* アイコンを横に並べるベース機能 */
.pt-icon-list {
    display: flex;
    align-items: center;
    gap: var(--sp-md);
    /* 既存の gap を反映 */
}

/* アイコンリンク単体のスタイル */
.pt-icon-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 24px;
    /* 高さを24pxに固定 */
    width: auto;
    transition: opacity 0.3s;
}

.pt-icon-link:hover {
    opacity: 0.7;
}

/* アイコン画像：白抜きにする設定をPatternに含める */
.pt-icon-link img {
    height: 24px;
    width: auto;
    filter: brightness(0) invert(1);
}


/* Icons / Links */

.pt-link-arrow {
    position: relative;
    padding-right: 2em;
    display: block;
    line-height: 1;
    text-align: right;
    color: var(--cl-primary-base);
}

.pt-link-arrow::before,
.pt-link-arrow::after {
    content: "";
    position: absolute;
    bottom: 0;
    right: 0;
    background-color: var(--cl-gray-60);
    transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.pt-link-arrow::before {
    width: 0.6em;
    height: 1px;
    transform: translateX(0px) rotate(45deg);
    transform-origin: right center;
}

.pt-link-arrow::after {
    width: 1.6em;
    height: 1px;
    transform: translateX(0px);
}

a.pt-link-arrow:hover {
    opacity: 1;
}

.pt-link-arrow:hover::after {
    transform: translateX(0.4em);
}

.pt-link-arrow:hover::before {
    transform: translateX(0.4em) rotate(45deg);
}

/* 余白 */

.pt-p-section--sm {
    padding: var(--section-v-sm) var(--section-h-sm);
}

.pt-p-section--md {
    padding: var(--section-v-md) var(--section-h-md);
}

.pt-p-section--lg {
    padding: var(--section-v-lg) var(--section-h-lg);
}

.pt-p-section {
    padding: var(--section-v) var(--section-h);
}

.pt-m-section--sm {
    margin: var(--section-v-sm) 0;
    padding: 0 var(--section-h-sm);
}

.pt-m-section--md {
    margin: var(--section-v-md) 0;
    padding: 0 var(--section-h-md);
}

.pt-m-section--lg {
    margin: var(--section-v-lg) 0;
    padding: 0 var(--section-h-lg);
}

.pt-m-section {
    margin: var(--section-v) 0;
    padding: 0 var(--section-h);
}

.pt-full-width {
    /* 変数 --section-h の分だけ外側に広げる */
    margin-left: calc(var(--section-h) * -1);
    margin-right: calc(var(--section-h) * -1);

    /* 中身が画像などの場合、親の幅を突き破るための設定
  width: auto;
  max-width: none; */
}

/* ==========================================
   Pattern: Stack (Vertical layout)
   要素を大きな間隔で縦に積み上げるルール
   ========================================== */
.pt-stack {
    display: flex;
    flex-direction: column;
    gap: var(--sp-lg);
    /* セクション級の大きな間隔 */
}

/* ==========================================
   Pattern: Title with Slash
   斜線（スラッシュ）装飾付きの見出し
   ========================================== */
.pt-ttl-slash {
    position: relative;
}

.pt-ttl-slash::before {
    content: "";
    position: absolute;
    left: 0.3em;
    top: -0.4em;
    width: 1px;
    height: 1.8em;
    background-color: var(--cl-primary-base);
    transform: rotate(45deg);
    border-radius: 2px;
    z-index: 0;
}


/* =========================================
   3. Pages (pg-)
   ========================================= */

/* Top Hero */
.pg-top-hero {
    margin-top: calc(var(--section-v-sm) + var(--ht-header));
    padding: 0 var(--section-h);
}

.pg-top-hero_grid {}

.pg-top-hero_lead {
    line-height: 2.2;
}

.pg-top-hero_content {
    margin-bottom: var(--section-v-sm);
    position: relative;
}

.pg-top-hero_wind {
    position: absolute;
    top: -8px;
    right: 0px;
    max-width: 160px;
}

/* メイン人物イラスト：下に配置 */
.pg-top-hero_illust-main picture {}

.pg-top-hero_illust-main img {
    max-width: 500px;
    /* カンプの人物サイズに合わせて調整 */
    margin-left: auto;
    /* 右寄せ */
}


.pg-top-hero_main-copy {
    margin: 0 0 var(--sp-md);
    max-width: 560px;
}


/* --- ヒーローエリア専用ボタンユニット --- */
.pg-top-hero_btn-unit {
    position: relative;
    display: inline-block;
}

/* 吹き出しテキスト */
.pg-top-hero_balloon {
    position: absolute;
    top: -45px;
    /* ボタンの上に配置 */
    left: 50%;
    transform: translateX(-50%);
    font-size: 14px;
    font-weight: bold;
    color: var(--cl-primary-80);
    /* 濃いグレー */
    white-space: nowrap;
    display: flex;
    align-items: center;
    gap: 12px;
}

/* テキスト両脇の二本線あしらい（擬似要素） */
.pg-top-hero_balloon::before,
.pg-top-hero_balloon::after {
    content: "";
    display: inline-block;
    width: 14px;
    height: 12px;
    /* SVGで二本線を再現 */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 12'%3E%3Cline x1='4' y1='10' x2='10' y2='2' stroke='%23D6A8A8' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='10' y1='10' x2='14' y2='2' stroke='%23D6A8A8' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}





/* Profile Section */


/* Contact Section (背景色追加) */
.pg-top-contact {}

@media (max-width: 767px) {
    .pg-top-hero_content {
        margin-bottom: 0px;
    }

    .pg-top-hero_illust-main img {
        max-width: 280px;
    }
}

/* =========================================
   4. Helpers (hp-)
   ========================================= */
.hp-align-self-end {
    align-self: end;
}

.hp-fs-xs {
    font-size: var(--fs-xs);
}

.hp-fs-sm {
    font-size: var(--fs-sm);
}

.hp-fs-md {
    font-size: var(--fs-md);
}

.hp-fs-lg {
    font-size: var(--fs-lg);
}

.hp-fs-xl {
    font-size: var(--fs-xl);
}

.hp-fs-xxl {
    font-size: var(--fs-xxl);
}

.hp-tac {
    text-align: center;
}

.hp-tar {
    text-align: right;
}

.hp-mt-sm {
    margin-top: var(--sp-sm);
}

.hp-mt-md {
    margin-top: var(--sp-md);
}

.hp-mt-lg {
    margin-top: var(--sp-lg);
}

.hp-mt-xl {
    margin-top: var(--sp-xl);
}

.hp-mt-section-v-lg {
    margin-top: var(--section-v-lg);
}

.hp-mb-sm {
    margin-bottom: var(--sp-sm);
}

.hp-mb-md {
    margin-bottom: var(--sp-md);
}

.hp-mb-lg {
    margin-bottom: var(--sp-lg);
}

.hp-mb-xl {
    margin-bottom: var(--sp-xl);
}

.hp-mb-section-v-lg {
    margin-bottom: var(--section-v-lg);
}

.hp-mh-sm {
    margin-top: var(--section-h-sm);
    margin-bottom: var(--section-h-sm);
}

.hp-mh-md {
    margin-top: var(--section-h-md);
    margin-bottom: var(--section-h-md);
}

.hp-mh-lg {
    margin-top: var(--section-h-lg);
    margin-bottom: var(--section-h-lg);
}

.hp-ph-sm {
    padding-top: var(--section-h-sm);
    padding-bottom: var(--section-h-sm);
}

.hp-ph-md {
    padding-top: var(--section-h-md);
    padding-bottom: var(--section-h-md);
}

.hp-ph-lg {
    padding-top: var(--section-h-lg);
    padding-bottom: var(--section-h-lg);
}

.hp-w-full {
    width: 100% !important;
    box-sizing: border-box;
}

.hp-bgc-base-10 {
    background-color: var(--cl-base-10);
}

.hp-bgc-base-20 {
    background-color: var(--cl-base-20);
}

.hp-bgc-base-30 {
    background-color: var(--cl-base-30);
}

.hp-bgc-base-40 {
    background-color: var(--cl-base-40);
}

.hp-bgc-base-50 {
    background-color: var(--cl-base-50);
}

.hp-bgc-base-60 {
    background-color: var(--cl-base-60);
}

.hp-bgc-base-70 {
    background-color: var(--cl-base-70);
}

.hp-bgc-base-80 {
    background-color: var(--cl-base-80);
}

.hp-bgc-base-90 {
    background-color: var(--cl-base-90);
}

.hp-bgc-base-base {
    background-color: var(--cl-base-base);
}

.hp-bgc-gray-0 {
    background-color: var(--cl-gray-0);
}

.hp-bgc-gray-10 {
    background-color: var(--cl-gray-10);
}

.hp-bgc-gray-20 {
    background-color: var(--cl-gray-20);
}

.hp-bgc-gray-30 {
    background-color: var(--cl-gray-30);
}

.hp-bgc-gray-40 {
    background-color: var(--cl-gray-40);
}

.hp-bgc-gray-50 {
    background-color: var(--cl-gray-50);
}

.hp-bgc-gray-60 {
    background-color: var(--cl-gray-60);
}

.hp-bgc-gray-70 {
    background-color: var(--cl-gray-70);
}

.hp-bgc-gray-80 {
    background-color: var(--cl-gray-80);
}

.hp-bgc-gray-90 {
    background-color: var(--cl-gray-90);
}

.hp-bgc-gray-100 {
    background-color: var(--cl-gray-100);
}

.hp-radius-sm {
    border-radius: var(--radius-sm);
}

.hp-radius-md {
    border-radius: var(--radius-md);
}

.hp-radius-lg {
    border-radius: var(--radius-lg);
}

@media (max-width: 767px) {
    .hp-hide-sp {
        display: none !important;
    }
}