@charset "UTF-8";

/* リセットCSS */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    overflow-y: scroll !important;
}

html, body {
    overflow-x: hidden !important;
    width: 100% !important;
    margin: 0;
    padding: 0;
    font-family: 'Poppins', 'Noto Sans JP', sans-serif; /* 全体をゴシック体に統一 */
}

/* Lenis停止時（ハンバーガーメニュー展開時）もスクロールバーを非表示にせず常時維持 */
html.lenis-stopped,
html.lenis.lenis-stopped,
body.lenis-stopped {
    overflow-y: scroll !important;
}

.jp {
    font-family: 'Noto Sans JP', sans-serif;
}

/* 英文フォントの設定 */
.font-en {
    font-family: 'Poppins', sans-serif;
}

/* =========================================================
   ヘッダー（ロゴ・ナビゲーション）
   ========================================================= */
#header {
    position: absolute;
    top: 30px;
    /* ブラウザ上端から30px */
    left: 0;
    width: 100%;
    padding: 0 40px;
    /* 左右40pxの余白 */
    z-index: 1000;
}

.header-inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.header-logo {
    width: 280px;
    height: auto;
    display: block;
}

.header-nav {
    display: flex;
    align-items: center;
    gap: 20px;
    padding-right: 60px; /* ハンバーガーボタン(固定配置40px+余白20px)との重なりを防止 */
}

.header-menu {
    display: flex;
    align-items: center;
    gap: 32px;
    list-style: none;
}

.header-menu a {
    color: #ffffff;
    text-decoration: none;
    font-weight: 400;
    font-size: 1rem;
    letter-spacing: 0.05em;
    transition: color 0.3s ease, opacity 0.3s ease; /* colorの遷移を追加 */
}

.header-menu a:hover {
    color: #24ABE4; /* ホバー時の色を指定色に変更 */
    opacity: 1; /* 不透明度を戻す */
}

/* コンタクトボタン */
.contact-btn {
    display: flex !important;
    align-items: center;
    background-color: rgba(255, 255, 255, 0.2) !important;
    padding: 16px 40px !important;
    border-radius: 50px;
    color: #ffffff !important;
    text-decoration: none;
    transition: background-color 0.3s ease;
}

.contact-btn:hover {
    background-color: #24ABE4 !important; /* ホバー時の背景色を指定色に変更 */
    opacity: 1 !important;
}

.contact-divider {
    display: block;
    width: 2px;
    height: 16px;
    border-left: none;
    /* デフォルトの境界線を無効化 */
    background-image: repeating-linear-gradient(to bottom,
            #ffffff,
            #ffffff 2px,
            /* 縦2pxの白線 */
            transparent 2px,
            transparent 4px
            /* 縦2pxの隙間 */
        );
    margin: 0 16px;
}

/* ハンバーガーメニュー */
.hamburger-btn {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 2px;
    z-index: 1001;
    transition: transform 0.3s ease, right 0.5s cubic-bezier(0.65, 0.05, 0.36, 1);
    transform-origin: center;
}

/* ヘッダーのハンバーガーのみ固定配置に */
.header-nav > .hamburger-btn {
    position: fixed !important;
    top: 38px !important; /* メニュー・Contactボタン（中心軸58px）と垂直中心を完全一致 (58 - 20 = 38px) */
    right: 40px !important;
    left: auto !important;
    z-index: 1001 !important;
}

.hamburger-btn:hover {
    transform: scale(1.2); /* 1.2倍に拡大 */
}

/* ドロワー内の閉じるボタンはドロワー相対で配置 */
#drawer-menu .hamburger-btn {
    position: absolute !important;
    top: 20px !important;
    right: 20px !important;
    left: auto !important;
}

.hamburger-btn span {
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background-color: #ffffff;
}

/* =========================================================
   メインビジュアル（ヒーローセクション）
   ========================================================= */
#main-visual {
    position: relative;
    overflow: hidden;
    background-color: #051329;
}

.hero-bg-layer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    z-index: 0;
    pointer-events: none;
}

.hero-bg-layer picture {
    display: block;
    width: 100%;
    height: 100%;
}

.hero-bg-img {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%) scale(1.2);
    transform-origin: center top;
    width: 100%;
    min-width: 100%;
    min-height: 100%;
    height: auto;
    object-fit: cover;
    object-position: top center;
    will-change: transform, filter;
    filter: brightness(2.8) contrast(0.75); /* 初期状態：白とび */
    display: block;
}

.hero-bg-whiteout {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #ffffff;
    opacity: 0.85; /* 初期状態：ホワイトウォッシュ */
    z-index: 1;
    pointer-events: none;
    will-change: opacity;
}

.hero-container {
    position: relative;
    z-index: 2;
    height: 100vh;
    height: 100dvh; /* ブラウザのツールバーを除いた動的な高さを取得 */
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    /* 上・中央・下に配分 */
}

/* 上部グループ */
.hero-top-group {
    padding-top: 122px;
    /* 30px + ヘッダー目安60px + 32px */
    padding-left: 60px;
    padding-right: 60px;
}

.catchphrase-inner {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    min-height: 48px;
}

.header-catchphrase {
    color: #ffffff;
    line-height: 1.4;
    letter-spacing: 0.05em;
}

.header-catchphrase.jp {
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: bold;
    text-align: left;
    min-height: 48px;
}

.catchphrase-main {
    font-size: clamp(12px, 0.833vw, 16px);
    display: inline-block;
    min-height: 1.4em;
}

.catchphrase-sub {
    font-size: clamp(10px, 0.625vw, 12px);
    font-weight: 400;
    display: inline-block;
    min-height: 1.4em;
}

.header-catchphrase.en {
    font-family: 'Poppins', sans-serif;
    text-align: right;
    min-height: 48px;
}

.en-sub {
    font-size: clamp(10px, 0.625vw, 12px);
    font-weight: 400;
    display: inline-block;
    min-height: 1.4em;
}

.en-main {
    font-size: clamp(12px, 0.833vw, 16px);
    font-weight: bold;
    display: inline-block;
    min-height: 1.4em;
}

/* タイピングカーソルアニメーション */
.typing-cursor {
    display: inline-block;
    width: 2px;
    height: 1.15em;
    background-color: #ffffff;
    box-shadow: 0 0 6px rgba(255, 255, 255, 0.8);
    vertical-align: -0.15em;
    margin-left: 2px;
    animation: cursorBlink 0.6s step-end infinite;
}

@keyframes cursorBlink {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0;
    }
}

/* 中央グループ（メインコピー & サブコピー） */
.hero-middle-group {
    flex-grow: 1;
    /* 残りの空間を占有 */
    display: flex;
    flex-direction: column;
    justify-content: center;
    /* 垂直方向中央揃え */
    padding-left: 80px;
    /* 左から80pxスペース */
    color: #ffffff;
    /* 文字色を白に */
}

.hero-main-copy {
    font-size: clamp(64px, 9.375vw, 180px);
    font-weight: bold;
    line-height: 0.9;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #ffffff;
    filter: drop-shadow(0 3px 10px rgba(0, 0, 0, 0.3));
}

.copy-line {
    display: block;
    white-space: nowrap;
}

.copy-char {
    display: inline-block;
    color: transparent;
    -webkit-text-stroke: 1.5px #ffffff;
    clip-path: inset(-20% 100% -20% -20%);
    -webkit-clip-path: inset(-20% 100% -20% -20%);
    will-change: clip-path, -webkit-clip-path, color, -webkit-text-stroke;
}

.hero-sub-copy {
    margin-top: clamp(18px, 2.1vw, 40px);
    min-height: auto;
    filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.3));
}

.sub-copy-text1 {
    font-size: clamp(13px, 1.05vw, 20px);
    font-weight: bold;
    letter-spacing: 0.08em;
    margin-bottom: clamp(3px, 0.3vw, 5px);
    display: block;
    min-height: 1.4em;
}

.sub-copy-text2 {
    font-size: clamp(24px, 3.125vw, 60px);
    font-weight: bold;
    line-height: 1.2;
    display: block;
    min-height: 1.3em;
}

/* 下部グループ（サービスリストバー） */
.hero-bottom-bar {
    width: 100%;
    padding: 24px 0;
    border-top: 1px solid rgba(255, 255, 255, 0.3);
    overflow: hidden;
    position: relative;
}

.hero-service-track {
    display: flex;
    width: max-content;
    will-change: transform;
}

.hero-service-list {
    display: flex;
    justify-content: flex-start;
    gap: clamp(16px, 2.5vw, 60px);
    list-style: none;
    color: #ffffff;
    opacity: 0.9;
    font-size: clamp(10px, 0.68vw, 13px);
    font-weight: 500;
    letter-spacing: 0.05em;
    width: max-content;
    white-space: nowrap;
    margin: 0;
    padding: 0;
    flex-shrink: 0;
}

.hero-service-list li {
    min-height: 1.4em;
    display: inline-block;
    white-space: nowrap;
    flex-shrink: 0;
}

/* =========================================================
   セクション共通設定
   ========================================================= */
.section {
    height: 100vh;
    width: 100%;
}

#footer {
    position: relative;
    overflow: hidden;
    height: auto; /* コンテンツに合わせて高さを自動調整 */
    width: 100%;
    background-color: #0b0f19;
}

.footer-bg-parallax {
    position: absolute;
    top: -20%;
    left: 0;
    width: 100%;
    height: 140%;
    background-image: url('../images/Footer_bg.webp');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    z-index: 0;
    pointer-events: none;
    will-change: transform;
}

.section:nth-of-type(odd) {
    background-color: #ffffff;
}

.section:nth-of-type(even) {
    background-color: #e0e0e0;
}

/* =========================================================
   メッセージセクション
   ========================================================= */
#message {
    height: auto;
    /* コンテンツに応じた高さに変更 */
    background-color: #ffffff;
    /* 背景色を白に変更 */
}

.message-container {
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    /* 上揃え */
    padding: clamp(80px, 8.33vw, 160px) clamp(20px, 4.16vw, 80px);
}

.message-title {
    font-size: clamp(64px, 10.416vw, 200px);
    font-weight: bold;
    text-transform: uppercase;
    line-height: 0.9;
    /* 背景とクリップはスパン側で制御 */
}

.title-anim-char {
    display: inline-block;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

.message-subtitle {
    font-size: clamp(12px, 1.04vw, 20px);
    font-weight: bold;
    text-transform: uppercase;
    color: #555555;
    letter-spacing: 0.1em;
    margin-top: clamp(6px, 0.52vw, 10px);
}

.message-flex-wrapper {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: clamp(40px, 25vw, 480px);
    margin-top: clamp(40px, 4.16vw, 80px);
    width: 100%;
}

.message-body {
    font-size: clamp(15px, 1.25vw, 24px);
    line-height: 1.5;
    letter-spacing: 0;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* スクロールアニメーション用の文字スタイル */
.char {
    display: inline;
    -webkit-text-fill-color: #E9E9E9;
    transition: none;
}


.message-vertical {
    writing-mode: vertical-rl;
    font-size: clamp(24px, 2.6vw, 50px);
    font-weight: bold;
    color: #555555;
    line-height: 1.32;
    letter-spacing: 0;
    text-orientation: upright;
}

.message-body p {
    margin-bottom: 2em;
}

.message-body p:last-child {
    margin-bottom: 0;
}

/* =========================================================
   ソリューションセクション
   ========================================================= */
#solutions {
    height: auto;
    background: linear-gradient(195deg, #188ece 0%, #00458a 100%);
    position: relative;
}

.solutions-container {
    position: relative;
    padding-top: clamp(80px, 8.33vw, 160px);
    padding-bottom: clamp(80px, 8.33vw, 160px);
    padding-left: clamp(20px, 4.16vw, 80px);
    padding-right: clamp(20px, 4.16vw, 80px);
    min-height: auto;
}

.solutions-title {
    font-size: clamp(64px, 10.416vw, 200px);
    font-weight: bold;
    text-transform: uppercase;
    line-height: 0.9;
    white-space: nowrap;
    position: relative;
    z-index: 2;
    pointer-events: none;
    opacity: 0; /* マスクで背景と3Dイラストを切り抜くため透明化（SEO・レイアウト寸法は維持） */
    margin-top: 16px;
}

.solutions-cutout-svg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: clamp(180px, 20vw, 380px);
    pointer-events: none;
    z-index: 2;
    overflow: visible;
}

.solutions-subtitle {
    font-size: clamp(12px, 1.04vw, 20px);
    font-weight: bold;
    text-transform: uppercase;
    color: #FFFFFF;
    line-height: 1.5;
    letter-spacing: 0.02em;
    margin-top: clamp(6px, 0.52vw, 10px);
    position: relative;
    z-index: 2;
}

.solutions-groups-wrapper {
    position: relative;
    margin-top: clamp(60px, 8.2vw, 158px);
    margin-bottom: clamp(60px, 8.2vw, 158px);
    z-index: 2;
    display: grid;
    grid-template-columns: 1fr;
}

.solutions-group {
    grid-column: 1 / 2;
    grid-row: 1 / 2;
    display: flex;
    align-items: flex-start;
    gap: clamp(30px, 4.16vw, 80px);
    margin: 0;
    position: relative;
    z-index: 2;
}

.solutions-group-circles {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: clamp(30px, 4.16vw, 80px);
    width: 100%;
}

.solutions-group-circles .solutions-circles-wrapper {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin: 0;
    width: auto;
}

.solutions-circles-content {
    display: flex;
    flex-direction: column;
    text-align: left;
}

.solutions-circles-lead {
    font-size: clamp(24px, 2.5vw, 48px);
    font-weight: 700;
    color: #FFFFFF;
    line-height: 1.3;
    letter-spacing: 0.03em;
    margin: 0;
    min-height: 1.3em;
}

.solutions-circles-sub {
    font-size: clamp(15px, 1.51vw, 29px);
    font-weight: 500;
    color: #FFFFFF;
    line-height: 1.6;
    letter-spacing: 0.02em;
    margin-top: clamp(8px, 0.78vw, 15px);
    margin-bottom: 0;
}

.solutions-group-label {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
}

.solutions-offense-en,
.solutions-defense-en {
    font-size: clamp(36px, 3.75vw, 72px);
    font-weight: 700;
    text-transform: uppercase;
    color: #FFFFFF;
    line-height: 1;
    letter-spacing: 0.05em;
    margin: 0;
    min-height: 1.1em;
}

.solutions-offense-en .typing-cursor,
.solutions-defense-en .typing-cursor,
.solutions-circles-lead .typing-cursor {
    width: 4px;
    height: 1.05em;
    vertical-align: -0.1em;
    margin-left: 6px;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.9);
}

.solutions-offense-jp,
.solutions-defense-jp {
    font-size: clamp(24px, 2.5vw, 48px);
    font-weight: 700;
    color: #FFFFFF;
    line-height: 1.2;
    margin-top: clamp(8px, 0.78vw, 15px);
    letter-spacing: 0.05em;
}

.solutions-group-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: clamp(8px, 0.83vw, 16px);
    padding-top: 8px;
}

.solutions-group-list li {
    font-size: clamp(13px, 1.04vw, 20px);
    font-weight: 500;
    color: #FFFFFF;
    line-height: 1.6;
    letter-spacing: 0.03em;
    position: relative;
    padding-left: clamp(14px, 1.04vw, 20px);
}

.solutions-group-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 6px;
    height: 6px;
    background-color: #24ABE4;
    border-radius: 50%;
}

.solutions-description {
    font-size: clamp(16px, 1.56vw, 30px);
    font-weight: bold;
    color: #FFFFFF;
    line-height: 1.5;
    letter-spacing: 0;
    margin-top: clamp(40px, 4.16vw, 80px);
    position: relative;
    z-index: 2;
}

.solutions-circles-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: clamp(60px, 6.25vw, 120px);
    margin-bottom: clamp(60px, 6.25vw, 120px);
    margin-left: clamp(-80px, -4.16vw, -20px);
    width: calc(100% + clamp(20px, 4.16vw, 80px));
    position: relative;
    z-index: 2;
}

.solutions-circle {
    width: clamp(150px, 12.2vw, 234px);
    height: clamp(150px, 12.2vw, 234px);
    border-radius: 50%;
    background: transparent;
    flex-shrink: 0;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    position: relative;
    z-index: 1;
}

.solutions-circle-svg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    transform: rotate(-90deg); /* 12時位置から線を描画 */
}

.solutions-circle-path {
    fill: none;
    stroke: rgba(255, 255, 255, 0.5);
    stroke-width: 1px;
    stroke-dasharray: 735;
    stroke-dashoffset: 735;
}

.solutions-circle:last-of-type {
    margin-left: clamp(-36px, -1.875vw, -24px);
}

.solutions-circle-cross {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: clamp(16px, 1.15vw, 22px);
    font-weight: 300;
    color: #FFFFFF;
    line-height: 1;
    z-index: 3;
    pointer-events: none;
}

.solutions-circle-en {
    font-size: clamp(15px, 1.25vw, 24px);
    font-weight: 600;
    text-transform: uppercase;
    color: #FFFFFF;
    letter-spacing: 0.05em;
    line-height: 1.2;
    min-height: 1.2em;
    display: inline-block;
}

.solutions-circle-en .typing-cursor {
    width: 2px;
    height: 1.1em;
    vertical-align: -0.1em;
    margin-left: 3px;
    box-shadow: 0 0 6px rgba(255, 255, 255, 0.8);
}

.solutions-circle-jp {
    font-size: clamp(11px, 0.78vw, 15px);
    font-weight: 400;
    color: #FFFFFF;
    letter-spacing: 0.05em;
    margin-top: 4px;
    line-height: 1;
}

.solutions-list {
    margin-top: clamp(24px, 2.08vw, 40px);
    list-style: none;
    padding: 0;
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: clamp(12px, 1.04vw, 20px);
}

.solutions-list li {
    display: flex;
    align-items: center;
    color: #FFFFFF;
    font-size: clamp(13px, 1.04vw, 20px);
    letter-spacing: 0.05em;
    line-height: 1.5;
    min-height: clamp(36px, 3.125vw, 60px);
}

.solutions-list .num {
    font-size: clamp(20px, 1.66vw, 32px);
    color: #24ABE4;
    font-weight: 400;
    margin-right: clamp(8px, 0.78vw, 15px);
    font-family: 'Poppins', sans-serif;
}

.solutions-list .en {
    font-size: clamp(20px, 2.08vw, 40px);
    font-weight: 600;
    text-transform: uppercase;
    font-family: 'Poppins', sans-serif;
}

.solutions-list .divider {
    font-size: clamp(20px, 1.66vw, 32px);
    color: #24ABE4;
    margin: 0 clamp(8px, 0.78vw, 15px);
    font-weight: 300;
}

.solutions-list .jp {
    font-weight: 500;
    font-family: 'Noto Sans JP', sans-serif;
    font-size: clamp(13px, 1.04vw, 20px);
}

.solutions-btn {
    width: clamp(180px, 13vw, 250px);
    height: clamp(50px, 3.65vw, 70px);
    padding: 0 !important;
    justify-content: center;
    margin-top: clamp(30px, 3.125vw, 60px);
    position: relative;
    z-index: 2;
}

.solutions-btn .contact-text {
    font-size: clamp(14px, 0.94vw, 18px);
}


.solutions-object {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    min-height: 1190px;
    background: linear-gradient(195deg, #188ece 0%, #00458a 100%);
    overflow: hidden;
    z-index: 1;
}

.solutions-object canvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100% !important;
    height: 100% !important;
    display: block;
    pointer-events: none;
}

#cases {
    position: relative;
    overflow: hidden;
    height: auto;
    z-index: 2;
}

.cases-bg-parallax {
    position: absolute;
    top: -20%;
    left: 0;
    width: 100%;
    height: 140%;
    background-image: url('../images/cases-bg.webp');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    z-index: 0;
    pointer-events: none;
    will-change: transform;
}

.cases-container {
    position: relative;
    z-index: 2;
    padding-top: clamp(80px, 8.33vw, 160px);
    padding-bottom: clamp(80px, 8.33vw, 160px);
    padding-left: clamp(20px, 4.16vw, 80px);
    padding-right: clamp(20px, 4.16vw, 80px);
}

.cases-title {
    font-size: clamp(64px, 10.416vw, 200px);
    font-weight: bold;
    text-transform: uppercase;
    color: transparent;
    -webkit-text-stroke: clamp(1.5px, 0.156vw, 3px) rgba(255, 255, 255, 0.4);
    line-height: 0.9;
    margin: 0;
}

.cases-content-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: clamp(20px, 2.08vw, 40px);
}

.cases-description {
    font-size: clamp(13px, 0.833vw, 16px);
    line-height: 1.5;
    letter-spacing: 0;
    color: #CECECE;
    width: clamp(320px, 33.33vw, 640px);
    margin-top: 0;
}

.cases-btn {
    margin-top: 0;
}

/* パネルコンテナ */
.cases-panels-container {
    width: 100vw;
    margin-left: calc(-1 * clamp(20px, 4.16vw, 80px));
    overflow: hidden;
    margin-top: clamp(30px, 3.125vw, 60px);
}

.cases-panels-wrapper {
    display: flex;
    gap: clamp(20px, 2.08vw, 40px);
    padding-left: clamp(20px, 4.16vw, 80px);
    padding-right: clamp(20px, 4.16vw, 80px);
    width: fit-content;
}

.cases-panel {
    width: clamp(320px, 31.25vw, 600px);
    height: clamp(280px, 26.04vw, 500px);
    background-color: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    border-radius: clamp(8px, 0.52vw, 10px);
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 0;
    text-decoration: none;
    position: relative;
    overflow: hidden;
}

/* ホバー時のグラデーション（ハンバーガーメニューと同じ色） */
.cases-panel::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 0;
    border-radius: clamp(8px, 0.52vw, 10px);
}

.cases-panel:hover::after {
    opacity: 1;
}

.cases-panel-title {
    position: relative;
    z-index: 2;
    font-size: clamp(24px, 2.5vw, 48px);
    font-weight: 100;
    color: #ffffff;
    text-transform: uppercase;
    text-align: left;
    padding: clamp(20px, 2.08vw, 40px) clamp(16px, 1.04vw, 20px);
    margin: 0;
    line-height: 1.1;
}

.cases-panel-footer {
    width: 100%;
    position: relative;
    z-index: 2;
    padding: clamp(14px, 1.04vw, 20px);
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.footer-line {
    position: absolute;
    top: 0;
    left: clamp(14px, 1.04vw, 20px);
    right: clamp(14px, 1.04vw, 20px);
    height: 1px;
    background-color: rgba(255, 255, 255, 0.3);
    transform: scaleX(0); /* 初期状態は非表示 */
    transform-origin: left center;
}

.cases-panel-link {
    display: flex;
    align-items: center;
    gap: clamp(8px, 0.625vw, 12px);
    color: #ffffff;
    font-size: clamp(11px, 0.73vw, 14px);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    cursor: pointer;
    opacity: 0; /* 初期状態は非表示 */
    transform: translateY(10px);
}

.cases-arrow-circle {
    width: clamp(24px, 1.56vw, 30px);
    height: clamp(24px, 1.56vw, 30px);
    border: 1px solid #ffffff;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* =========================================================
   インフォメーションセクション
   ========================================================= */
#information {
    height: auto;
    /* コンテンツに合わせて高さを自動調整 */
}

.information-container {
    padding-top: clamp(80px, 8.33vw, 160px);
    padding-bottom: clamp(80px, 8.33vw, 160px); /* PC: 160pxに設定 */
    padding-left: 17.7%;
    padding-right: 17.7%;
}

.information-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* 両端揃えに配置 */
    width: 100%;
}

.information-text-group {
    display: flex;
    flex-direction: column;
}

.information-title {
    font-size: clamp(48px, 5.208vw, 100px);
    line-height: 0.9;
    /* 行間90% */
    letter-spacing: 0;
    /* 文字間隔0% */
    color: #D0D0D0;
    /* 色指定 */
    margin: 0;
}

.information-description {
    font-size: clamp(13px, 0.833vw, 16px);
    line-height: 1.5;
    /* 行間150% */
    letter-spacing: 0;
    /* 文字間隔0% */
    color: #555555;
    /* 色指定 */
    margin: 0;
    /* タイトル側のmargin-bottomを使用するためリセット */
}

.information-btn {
    background: linear-gradient(135deg, #24ABE4, #003B83);
    /* ハンバーガーメニューと同じグラデーション */
    border: none;
    /* グラデーション背景を際立たせるためボーダーを削除 */
}

/* 子供のセクション（NEWS / COLUMN） */
.information-child-section {
    margin-top: clamp(40px, 4.166vw, 80px);
    /* 前の要素との余白 */
}

.information-subtitle {
    font-size: clamp(36px, 3.645vw, 70px);
    font-weight: 100;
    /* 細い太さに変更 */
    line-height: 0.9;
    /* 行間90% */
    letter-spacing: 0;
    /* 文字間隔0% */
    color: #D0D0D0;
    margin: 0 0 clamp(20px, 2.083vw, 40px) 0;
    /* 下のリストとの間隔 */
    text-transform: uppercase;
}

/* NEWS (縦並び) */
.news-list {
    display: flex;
    flex-direction: column;
    /* 縦並び */
    border-top: 1px solid #E2DEDE;
    /* 一番上の線 */
}

.news-item {
    display: flex;
    align-items: center;
    gap: clamp(10px, 0.833vw, 16px);
    padding: clamp(16px, 1.25vw, 24px) 0;
    border-bottom: 1px solid #E2DEDE;
    /* 下線 */
    text-decoration: none;
}

.news-date {
    font-weight: normal !important;
    font-size: clamp(13px, 0.833vw, 16px);
    color: #24ABE4;
    /* 水色 */
    white-space: nowrap;
    transition: transform 0.3s ease;
    /* アニメーション追加 */
}

.news-tag {
    font-size: clamp(9px, 0.52vw, 10px);
    color: #BE1A1A;
    border: 1px solid #BE1A1A;
    padding: clamp(1px, 0.104vw, 2px) clamp(6px, 0.52vw, 10px);
    /* 上下のパディングを控えめに変更 */
    white-space: nowrap;
    border-radius: 20px;
    /* 左右を半円状にする */
    transition: transform 0.3s ease;
    /* アニメーション追加 */
    font-weight: normal !important;
}

.news-text {
    font-size: clamp(13px, 0.833vw, 16px);
    color: #555555;
    margin: 0;
    flex: 1;
    /* 余分なスペースをすべて取る */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* はみ出した分は「...」で省略 */
    transition: transform 0.3s ease;
    /* アニメーション追加 */
}

/* ホバー時のスライドアニメーション */
.news-item:hover .news-date,
.news-item:hover .news-tag,
.news-item:hover .news-text {
    transform: translateX(10px);
    /* 右に10pxスライド */
}

.news-arrow {
    flex-shrink: 0;
    /* 縮小しない */
}

/* COLUMN (横並び) */
.column-list {
    display: flex;
    flex-direction: row;
    /* 横並び */
    justify-content: flex-start;
    /* 左寄せ */
    flex-wrap: wrap;
    gap: clamp(30px, 3.125vw, 60px) clamp(20px, 2.083vw, 40px);
}

.column-item {
    display: flex;
    flex-direction: column;
    width: clamp(260px, 18.75vw, 360px);
    /* 横幅をレスポンシブに可変 */
    text-decoration: none;
    transition: transform 0.3s ease;
    /* スライドアニメーション用 */
}

.column-item:hover {
    transform: translateY(-10px);
    /* ホバー時に上に10pxスライド */
}

.column-img-wrapper {
    width: 100%;
    margin-bottom: clamp(10px, 0.833vw, 16px);
    /* 画像と下の要素の間隔 */
    overflow: hidden;
    position: relative;
    /* 画像の上のテキストを配置するための基準 */
}

.column-category-tag {
    position: absolute;
    top: clamp(6px, 0.52vw, 10px);
    left: clamp(6px, 0.52vw, 10px);
    background-color: #24ABE4;
    color: #FFFFFF;
    font-size: clamp(11px, 0.729vw, 14px);
    padding: clamp(4px, 0.312vw, 6px) clamp(10px, 0.833vw, 16px);
    border-radius: 20px;
    z-index: 3;
    font-weight: normal;
}


.column-img-wrapper img {
    width: 100%;
    height: auto;
    display: block;
}

.column-img-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
    text-align: center;
    font-size: clamp(14px, 0.937vw, 18px);
    font-weight: bold;
    /* テキストを太字に変更 */
    line-height: 1.5;
    /* 行間150% */
    letter-spacing: 0.02em;
    /* 文字間隔2% */
    color: #555555;
    z-index: 2;
    pointer-events: none;
    /* テキストがホバーの邪魔をしないようにする */
}

/* 特定の文字色を変更するクラス */
.highlight-blue {
    color: #24ABE4;
}



.column-meta {
    display: flex;
    align-items: center;
    gap: clamp(10px, 0.833vw, 16px);
    /* 日付とタグの間隔 */
    margin-bottom: clamp(8px, 0.625vw, 12px);
}

.column-text {
    font-size: clamp(13px, 0.833vw, 16px);
    color: #555555;
    margin: 0;
    line-height: 1.5;
}

/* =========================================================
   フッターコンテンツ
   ========================================================= */
.footer-container {
    position: relative;
    z-index: 1;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 120px 80px 32px; /* お問い合わせセクションの上に十分なスペースを追加 */
}

/* =========================================================
   フッター下部メニュー
   ========================================================= */
.footer-menu-group {
    width: 100%;
    display: flex;
    justify-content: space-between; /* 左右に振り分け */
    align-items: center;
    margin-top: 64px; /* コンタクトセクションとの間隔を64pxに変更 */
}

.footer-left-group {
    display: flex;
    align-items: center;
    gap: 40px; /* ロゴとPrivacy policyの間隔 */
}

.footer-bottom-logo {
    width: 280px; /* 280pxに変更 */
    height: auto;
    filter: brightness(0.81); /* 白(#FFFFFF)を#CECECEに近づけるための調整 */
}

.footer-bottom-nav {
    display: flex;
    align-items: center;
}

.privacy-link {
    font-size: 14px;
    color: #888888; /* #CECECEから変更 */
    font-weight: 300; /* 1段階太く修正 */
    text-decoration: none;
    position: relative;
    padding-bottom: 2px; /* 4pxから2pxに変更して線をテキストに近づける */
}

.footer-bottom-menu {
    display: flex;
    align-items: center;
    gap: 32px;
    list-style: none;
}

.footer-bottom-menu a {
    font-size: 16px;
    color: #CECECE; /* #ffffffから変更 */
    font-weight: 300; /* 1段階太く修正 */
    text-decoration: none;
    white-space: nowrap;
    position: relative;
    padding-bottom: 2px; /* 4pxから2pxに変更して線をテキストに近づける */
}

/* マウスオーバー時のアニメーション */
.privacy-link::after,
.footer-bottom-menu a::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 0;
    height: 1px;
    background-color: #24ABE4;
    transition: width 0.3s ease;
}

.privacy-link:hover::after,
.footer-bottom-menu a:not(.current):hover::after {
    width: 100%;
}

/* 現在のページ（.current）のスタイル */
.footer-bottom-menu a.current {
    pointer-events: none; /* マウスオーバーアクションを削除 */
}

.footer-bottom-menu a.current::after {
    width: 100%;
}

/* =========================================================
   フッターコピー & コピーライト
   ========================================================= */
.footer-bottom-group {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-top: 240px; /* メニューグループとの間隔 */
}

.footer-copy-group {
    color: #CECECE; /* #ffffffから変更 */
}

.footer-copy-sub {
    font-size: 12px;
    letter-spacing: 0.02em;
    margin-bottom: 4px;
}

.footer-copy-main {
    font-size: 18px;
    letter-spacing: 0.02em;
    font-weight: 500;
}

.footer-copyright {
    font-size: 12px;
    color: #888888;
}

/* =========================================================
   SNSアイコン
   ========================================================= */
.footer-sns-group {
    width: 100%;
    display: flex;
    justify-content: flex-start; /* 左側に配置 */
    padding-left: 50px; /* 60pxから50pxに変更（さらに10px左へ移動） */
    margin-top: 24px; /* 40pxから24pxに変更 */
}

.sns-link {
    display: flex;
    align-items: center;
    text-decoration: none;
    transition: opacity 0.3s ease;
}

.sns-link:hover {
    opacity: 0.05;
}

.sns-link svg {
    width: 20px;
    height: 20px;
    fill: #CECECE; /* #ffffffから変更 */
}

.footer-content-box {
    width: 100%;
    /* 左右80pxの余白は.footer-containerのpaddingで確保 */
    background-color: rgba(255, 255, 255, 0.05); /* 10%から5%に透明度をアップ */
    backdrop-filter: blur(2px); /* 4pxから2pxにぼかしを緩和 */
    border-radius: 30px;
    padding: 48px; /* 80pxから48pxに変更 */
    display: flex;
    flex-direction: column;
    text-decoration: none; /* アンカータグ用のリセット */
    transition: transform 0.6s ease;
    position: relative;
    overflow: hidden; /* 擬似要素のはみ出し防止 */
}

/* 背景ロゴ用の擬似要素 */
.footer-content-box::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-image: url('../images/footer_logo.webp');
    background-size: auto 80%;
    background-position: left 40px center;
    background-repeat: no-repeat;
    opacity: 1;
    z-index: 2; /* グラデーションより上に配置 */
    pointer-events: none;
}

.footer-content-box::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    opacity: 0;
    transition: opacity 0.6s ease;
    z-index: 1;
}

.footer-content-box > * {
    position: relative;
    z-index: 3; /* コンテンツをロゴ・グラデーションより上に */
    transition: color 0.6s ease;
}

.footer-content-box:hover {
    transform: translateY(-5px); /* 少し上に浮き上がる */
}

.footer-content-box:hover::before {
    opacity: 1; /* ホバー時にグラデーションをじわっと表示 */
}

.footer-content-box:hover .footer-title,
.footer-content-box:hover .footer-subtitle,
.footer-content-box:hover .footer-description {
    color: #FFFFFF; /* ホバー時に文字を白に */
}

/* メッセージセクション初期状態（アニメーション用） */
#message .message-subtitle,
#message .message-flex-wrapper {
    opacity: 0;
    transform: translateY(30px);
}


.footer-title-group {
    display: flex;
    flex-direction: column;
}

.footer-title {
    font-size: 100px;
    line-height: 1.1;
    letter-spacing: 0.02em;
    font-weight: bold;
    color: #CECECE;
    text-transform: uppercase;
    margin: 0;
}

.footer-subtitle {
    font-size: 16px;
    line-height: 1.5;
    letter-spacing: 0.02em;
    font-weight: bold;
    color: #CECECE;
    margin: 0;
}

.footer-description {
    font-size: 20px;
    line-height: 1.5;
    letter-spacing: 0.02em;
    font-weight: 400; /* normalからレギュラー(400)に変更 */
    color: #CECECE;
    margin-top: 48px;
}

.footer-contact-btn {
    width: 70px;
    height: 70px;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 80px; /* 本文との間隔を80pxに */
    align-self: flex-end; /* 右寄せに配置 */
    text-decoration: none;
    transition: transform 0.6s ease, background 0.6s ease, box-shadow 0.6s ease;
}

.footer-content-box:hover .footer-contact-btn {
    transform: scale(1.1); /* セクションホバー時にボタンを少し大きく */
    background: #FFFFFF !important; /* ホバー時にボタン背景を白に */
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
}

.footer-contact-btn svg.contact-arrow {
    stroke: #ffffff;
    transition: stroke 0.6s ease;
}

.footer-content-box:hover .contact-arrow {
    stroke: url(#arrow-grad); /* ホバー時に矢印をグラデーションに */
}
/* =========================================================
   ドロワーメニュー
   ========================================================= */
#drawer-menu {
    position: fixed;
    top: 20px;
    bottom: 20px;
    right: -40%; /* 初期状態は隠す */
    width: 30%;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    backdrop-filter: blur(10px);
    z-index: 2000;
    transition: right 0.5s cubic-bezier(0.65, 0.05, 0.36, 1);
    border-radius: 20px;
    box-shadow: -10px 0 30px rgba(0, 0, 0, 0.2);
    display: flex;
    flex-direction: column;
    overflow: hidden; /* はみ出しを隠す */
}

.drawer-contact-li {
    margin-top: 60px; /* 他のメニューと間隔を空ける */
    display: flex;
    justify-content: center;
}

.drawer-bg-mark {
    position: absolute;
    bottom: -60px; /* 右下にはみ出すように配置 */
    right: -60px;
    width: 120%; /* 大きめに配置 */
    height: auto;
    opacity: 0.3; /* 透明度を30%に調整 */
    z-index: -1;
    pointer-events: none; /* クリックを妨げない */
}

#drawer-menu.active {
    right: 20px;
}

.drawer-header {
    width: 100%;
    padding: 20px;
    display: flex;
    justify-content: flex-end;
}

#close-btn {
    background: #ffffff; /* 背景色を白に変更 */
    
    position: relative;
    gap: 0; /* ドットの間隔をリセット */
}

#close-btn span {
    background-color: #003B83; /* アイコンの色をグラデーションの濃い方に設定 */
    width: 20px;
    height: 2px;
    border-radius: 2px;
    position: absolute;
}

#close-btn span:nth-child(1) {
    transform: rotate(45deg);
}

#close-btn span:nth-child(2) {
    display: none; /* 真ん中のドットを非表示 */
}

#close-btn span:nth-child(3) {
    transform: rotate(-45deg);
}

.drawer-nav {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.drawer-nav ul {
    list-style: none;
    text-align: center;
}

.drawer-nav li {
    margin-bottom: 40px;
}

.drawer-nav a {
    color: #ffffff;
    text-decoration: none;
    transition: opacity 0.3s;
}

.drawer-nav a .en {
    display: block;
    font-size: 32px; /* 32ピクセルに変更 */
    font-weight: 600;
    letter-spacing: 0.05em;
    line-height: 1.2;
}

.drawer-nav a .jp {
    display: block;
    font-size: 12px; /* 12ピクセルに設定 */
    font-weight: 400;
    margin-top: 8px;
    opacity: 0.8;
}

.drawer-nav a:hover {
    opacity: 0.6;
}

/* =========================================================
   タブレット・中画面用レスポンシブ（ヘッダー・ドロワー）
   ロゴとテキストメニューが近づいた段階でハンバーガーメニューのみに切り替え
   ========================================================= */
@media (max-width: 1200px) {
    /* メニューとコンタクトボタンを非表示にし、ハンバーガーメニューのみにする */
    .header-menu,
    .header-nav .contact-btn,
    .hamburger-placeholder {
        display: none !important;
    }

    .header-nav {
        padding-right: 0 !important;
        gap: 0 !important;
    }

    .header-nav > .hamburger-btn {
        top: 30px !important;
        right: 30px !important;
        position: fixed !important;
    }

    #drawer-menu {
        width: 380px;
        max-width: calc(100% - 40px);
        right: -420px;
    }

    #drawer-menu.active {
        right: 20px;
    }
}

/* =========================================================
   スマートフォン用レスポンシブ（ヘッダー・フッター）
   ========================================================= */
@media (max-width: 768px) {
    /* --- ヘッダーの調整 --- */
    #header {
        top: 25px; /* 位置を少し下げて余裕を持たせる */
        padding: 0 20px;
    }

    .header-logo {
        width: 264px; /* 220pxから1.2倍に拡大修正 */
        display: block;
    }

    /* --- メインビジュアルの調整 --- */
    #main-visual {
        background-image: none !important;
    }

    .header-inner {
        align-items: center; /* 垂直センターに */
        height: 44px; /* ハンバーガーボタン(40px)に合わせた高さ */
    }

    /* ヘッダーのハンバーガーボタン位置調整 */
    /* ロゴの高さと揃えるため、topをheaderのtop + (height/2) - (btn_height/2) に調整 */
    .header-nav > .hamburger-btn {
        top: 25px !important; /* #headerのtopと合わせる（header-innerのalign-centerによりロゴと揃う） */
        right: 20px !important;
        position: fixed !important;
    }

    /* --- フッターの調整 --- */
    #footer {
        position: relative !important;
        overflow: hidden !important;
    }

    .footer-bg-parallax {
        position: absolute !important;
        top: -20% !important;
        left: 0 !important;
        width: 100% !important;
        height: 140% !important;
        background-image: url('../images/Footer_bg.webp') !important;
        background-size: cover !important;
        background-position: center !important;
        background-repeat: no-repeat !important;
        z-index: 0 !important;
    }

    .footer-container {
        position: relative !important;
        z-index: 1 !important;
        padding: 60px 20px 40px !important; /* お問い合わせセクションの上に十分なスペースを追加 */
    }

    .footer-content-box {
        width: 100% !important;
        padding: 40px 20px !important;
        box-sizing: border-box !important;
        border-radius: 8px !important;
    }

    .footer-content-box::before,
    .footer-content-box::after {
        border-radius: 8px !important;
    }

    .footer-content-box::after {
        background-position: left 20px center !important; /* ロゴ位置を調整 */
        background-size: auto 60% !important;
    }

    /* スマホ時はPCホバー時の青グラデーション背景をデフォルト適用 */
    .footer-content-box::before {
        opacity: 1 !important;
    }

    .footer-title {
        font-size: 13vw !important; /* CONTACT US が収まるサイズ */
        line-height: 1.1;
        color: #FFFFFF !important;
    }

    .footer-subtitle {
        font-size: 14px !important;
        color: #FFFFFF !important;
    }

    .footer-description {
        font-size: 15px !important;
        margin-top: 30px !important;
        line-height: 1.6;
        color: #FFFFFF !important;
    }

    .footer-content-box:hover {
        transform: none !important;
    }

    /* スマホ時のコンタクトボタン（PCホバー時の白ボタン＋グラデーションテキスト＆矢印をデフォルト適用） */
    .footer-contact-btn {
        margin-top: 40px !important;
        width: 100% !important;
        height: 60px !important;
        border-radius: 30px !important; /* 半円状に変更 */
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
        background: #FFFFFF !important;
        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2) !important;
    }

    .footer-contact-btn::before {
        content: "お問い合わせはこちら";
        font-family: 'Noto Sans JP', sans-serif;
        font-size: 16px;
        font-weight: 500;
        background: linear-gradient(135deg, #24ABE4, #003B83);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
        color: #003B83;
        margin-right: 8px;
    }

    .footer-contact-btn svg.contact-arrow {
        stroke: url(#arrow-grad) !important;
    }

    /* --- フッターの追加情報の表示 --- */
    /* .footer-container padding-top handled above */

    .footer-menu-group {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important; /* 中央揃えに変更 */
        gap: 30px !important;
        margin-top: 60px !important;
        width: 100% !important;
    }

    .footer-left-group {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        gap: 15px !important; /* 30pxから半分に短縮 */
        width: 100% !important;
    }

    .footer-bottom-logo {
        width: 100% !important; /* 表示エリアいっぱいにする */
        height: auto !important;
    }

    .privacy-link {
        display: block !important;
        text-align: center !important;
        width: 100% !important;
    }

    .privacy-link::after {
        display: none !important; /* スマホではホバー時のブルー下線を無効化 */
    }

    .footer-bottom-menu {
        display: none !important; /* 5つのメニューを非表示 */
    }

    .footer-sns-group {
        display: flex !important;
        justify-content: center !important; /* Instagramアイコンを中央揃え */
        align-items: center !important;
        margin-top: 20px !important; /* 60pxから1/3の20pxに短縮 */
        gap: 20px !important;
        width: 100% !important;
        padding: 0 !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .footer-bottom-group {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important; /* センター揃え */
        margin-top: 40px !important;
        gap: 30px !important;
        width: 100% !important;
    }

    .footer-copy-group {
        text-align: center !important; /* 英文テキストをセンター揃えに修正 */
        width: 100% !important;
    }

    .footer-copy-main {
        font-size: 16px !important;
        line-height: 1.4 !important;
    }

    .footer-copyright {
        display: block !important;
        text-align: center !important;
        width: 100% !important;
        font-size: 10px !important;
        color: #888888 !important;
        margin-top: 40px !important;
        padding-bottom: 40px !important; /* 下部に余白を追加 */
    }

    /* --- ドロワーメニューの調整 --- */
    #drawer-menu {
        width: calc(100% - 40px); /* 左右20pxずつの余白を持たせた全幅 */
        right: -100%; /* 画面外に隠す */
        top: 10px;
        bottom: 10px;
        padding: 40px 0; /* 上下の余白を確保 */
        border-radius: 8px !important;
    }

    #drawer-menu.active {
        right: 20px; /* 右端から20pxの位置（左側も結果的に20pxになる） */
    }

    .drawer-header {
        padding: 10px 50px; /* 上部隙間(40px+10px=50px)と横方向の隙間を等しく調整 */
    }

    .drawer-nav li {
        margin-bottom: 24px; /* 40pxから24pxに縮小 */
    }

    .drawer-nav a .en {
        font-size: 26px; /* 32pxから26pxに縮小 */
    }

    .drawer-nav a .jp {
        font-size: 11px; /* 12pxから11pxに縮小 */
        margin-top: 4px;
    }

    .drawer-contact-li {
        margin-top: 40px; /* 60pxから40pxに縮小 */
    }

    /* --- メインビジュアル（ヒーローセクション） --- */
    #main-visual {
        height: 100vh !important;
        height: 100svh !important;
    }

    .hero-container {
        height: 100vh !important;
        height: 100svh !important;
    }

    .hero-top-group {
        padding-top: 80px; /* 100pxから80pxに詰め、表示領域を確保 */
        padding-left: 20px;
        padding-right: 20px;
    }

    .catchphrase-inner {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
        min-height: 65px;
    }

    .header-catchphrase.jp,
    .header-catchphrase.en {
        min-height: 30px;
    }

    /* 日本語キャッチコピー */
    .catchphrase-main {
        font-size: clamp(11px, 3.4vw, 13px);
    }

    .catchphrase-sub {
        font-size: clamp(9.5px, 2.9vw, 11px);
    }

    /* 英語キャッチコピー */
    .header-catchphrase.en {
        text-align: left; /* 左揃えに統一 */
    }

    .en-sub {
        font-size: clamp(9px, 2.6vw, 10px);
    }

    .en-main {
        font-size: clamp(11px, 3.4vw, 13px);
    }

    .hero-middle-group {
        padding-left: 20px;
        flex-grow: 0;
        justify-content: flex-start;
        transform: none;
        margin-top: clamp(24px, 6vw, 32px); /* 上部キャッチコピーの直下に自然な上寄せ間隔を配置 */
        margin-bottom: auto; /* 下部コンテンツとのバランスを保ち、上寄せを維持 */
    }

    .header-nav {
        padding-right: 0;
    }

    /* 大きな英文メインコピー（1.2倍に拡大） */
    .hero-main-copy {
        font-size: clamp(45.6px, 15vw, 76.8px);
        line-height: 0.95;
    }

    .copy-char {
        -webkit-text-stroke: 1px #ffffff;
    }

    .hero-sub-copy {
        margin-top: clamp(14px, 2.5vw, 20px);
        min-height: auto;
    }

    .sub-copy-text1 {
        font-size: clamp(11px, 3.2vw, 14px);
        min-height: 1.4em;
        line-height: 1.4;
    }
    
    .sub-copy-text2 {
        font-size: clamp(16px, 5vw, 22px);
        line-height: 1.4;
        font-weight: bold;
        min-height: 2.8em;
        white-space: pre-line;
    }

    /* --- サービスリストのティッカーアニメーション --- */
    .hero-bottom-bar {
        padding: 15px 0; /* 左右パディングを消して全幅に */
        overflow: hidden;
    }

    .hero-service-list {
        gap: 40px; /* アイテム間の距離を少し詰める */
        width: max-content;
        flex-wrap: nowrap;
    }

    .hero-service-list li {
        white-space: nowrap; /* 絶対に改行させない */
        font-size: clamp(10px, 3.2vw, 12px);
    }

    /* --- メッセージセクションの調整 --- */
    .message-container {
        padding: clamp(50px, 12vw, 80px) 20px;
    }

    .message-title {
        font-size: clamp(38px, 14vw, 68px) !important;
        line-height: 1;
    }

    .message-subtitle {
        font-size: clamp(12px, 3.8vw, 18px);
        line-height: 1.2;
    }

    .message-flex-wrapper {
        flex-direction: column-reverse; /* 日本語メッセージを上に、本文を下に配置 */
        gap: clamp(24px, 6vw, 40px);
        margin-top: clamp(24px, 6vw, 40px);
    }

    .message-vertical {
        writing-mode: horizontal-tb; /* 横書きに変更 */
        font-size: clamp(18px, 5.5vw, 24px);
        line-height: 1.5;
        width: 100%;
        text-align: left;
    }

    .message-body {
        font-size: clamp(13px, 3.8vw, 16px);
        line-height: 1.7;
    }

    /* --- ソリューションセクションの調整 --- */
    .solutions-cutout-svg {
        display: block !important;
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        pointer-events: none;
        z-index: 2;
        overflow: visible;
    }

    .solutions-container {
        padding: clamp(50px, 12vw, 80px) 20px clamp(80px, 18vw, 120px);
        min-height: auto;
        position: relative;
    }

    .solutions-title {
        font-size: clamp(38px, 14vw, 68px) !important;
        font-weight: bold;
        text-transform: uppercase;
        line-height: 1;
        white-space: nowrap;
        position: relative;
        z-index: 2;
        pointer-events: none;
        opacity: 0 !important;
        display: block;
        margin-top: 0 !important;
    }

    .solutions-subtitle {
        font-size: clamp(12px, 3.8vw, 18px);
        line-height: 1.2;
        color: #FFFFFF;
        position: relative;
        z-index: 3;
        margin-top: clamp(10px, 2.5vw, 16px);
    }

    .solutions-groups-wrapper {
        margin-top: clamp(40px, 11vw, 70px);
        margin-bottom: clamp(16px, 4vw, 25px);
    }

    .solutions-group {
        flex-direction: column;
        gap: clamp(14px, 4vw, 20px);
        margin: 0;
    }

    .solutions-offense-en,
    .solutions-defense-en {
        font-size: clamp(28px, 8vw, 40px);
    }

    .solutions-offense-en .typing-cursor,
    .solutions-defense-en .typing-cursor,
    .solutions-circles-lead .typing-cursor {
        width: 3px;
        margin-left: 4px;
    }

    .solutions-offense-jp,
    .solutions-defense-jp {
        font-size: clamp(22px, 6.5vw, 32px);
        color: #FFFFFF;
        margin-top: 8px;
    }

    .solutions-group-list {
        gap: clamp(8px, 2.5vw, 12px);
        padding-top: 0;
    }

    .solutions-group-list li {
        font-size: clamp(12px, 3.5vw, 15px);
        line-height: 1.5;
        padding-left: 16px;
    }

    .solutions-description {
        font-size: clamp(15px, 4.5vw, 20px);
        margin-top: clamp(15px, 4vw, 20px);
    }

    .solutions-group-circles {
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: clamp(12px, 3.5vw, 16px);
        width: 100%;
    }

    .solutions-group-circles .solutions-circles-wrapper {
        margin: 0 auto;
        width: 100%;
        justify-content: center;
    }

    .solutions-circles-content {
        align-items: center;
        text-align: center;
        width: 100%;
    }

    .solutions-circles-lead {
        font-size: clamp(18px, 5.5vw, 26px);
        line-height: 1.3;
        text-align: center;
        margin: 0;
    }

    .solutions-circles-sub {
        font-size: clamp(13px, 3.8vw, 18px);
        line-height: 1.5;
        margin-top: 8px;
        text-align: center;
        display: block;
    }

    .solutions-circle {
        width: clamp(130px, 36vw, 180px);
        height: clamp(130px, 36vw, 180px);
    }

    .solutions-circle:last-of-type {
        margin-left: -28px;
    }

    .solutions-circle-cross {
        font-size: clamp(16px, 4.2vw, 22px);
    }

    .solutions-circle-en {
        font-size: clamp(16px, 4.2vw, 22px);
    }

    .solutions-circle-jp {
        font-size: clamp(12px, 3.2vw, 15px);
        margin-top: 4px;
    }

    .solutions-list {
        margin-top: -110px;
        position: relative;
        z-index: 3;
        gap: clamp(10px, 3vw, 15px);
    }

    .solutions-list li {
        font-size: clamp(12px, 3.5vw, 14px);
        flex-wrap: wrap;
        align-items: center;
        min-height: 42px;
    }

    .solutions-list .num {
        font-size: clamp(18px, 5.5vw, 24px);
        font-weight: 400;
        margin-right: 10px;
    }

    .solutions-list .en {
        font-size: clamp(18px, 6vw, 28px);
    }

    .solutions-list .divider {
        font-size: clamp(16px, 5vw, 24px);
        margin: 0 8px;
    }

    .solutions-object {
        top: 0 !important;
        left: 0 !important;
        width: 100% !important;
        height: 100% !important;
        min-height: auto !important;
        background: linear-gradient(195deg, #188ece 0%, #00458a 100%) !important;
        z-index: 1;
    }

    .solutions-btn {
        margin: clamp(30px, 3.125vw, 60px) auto 0;
        display: flex;
        align-self: center;
    }

    /* --- ケースセクションの調整 --- */
    #cases {
        position: relative;
        width: 100% !important;
        overflow: hidden !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    .cases-bg-parallax {
        position: absolute !important;
        top: -20% !important;
        left: 0 !important;
        width: 100% !important;
        height: 140% !important;
        background-image: url('../images/cases-bg.webp') !important;
        background-size: cover !important;
        background-position: center !important;
        background-repeat: no-repeat !important;
        z-index: 0 !important;
    }

    .cases-container {
        position: relative !important;
        z-index: 2 !important;
        padding: clamp(50px, 12vw, 80px) 20px !important;
        width: 100% !important;
        box-sizing: border-box !important;
    }

    .cases-title {
        font-size: clamp(38px, 14vw, 68px) !important;
        line-height: 1;
        -webkit-text-stroke-width: 1.5px;
    }

    .cases-content-wrapper {
        flex-direction: column;
        align-items: flex-start;
        gap: clamp(16px, 4vw, 30px);
        width: 100%;
        margin-top: clamp(16px, 4vw, 30px);
    }

    .cases-description {
        width: 100%;
        font-size: clamp(12px, 3.5vw, 14px);
    }

    .cases-btn {
        margin-left: auto;
        margin-right: auto;
        align-self: center;
    }

    .cases-panels-container {
        width: auto;
        margin-left: -20px;
        margin-right: -20px;
        overflow: hidden;
        margin-top: clamp(40px, 10vw, 80px);
    }

    .cases-panels-wrapper {
        flex-direction: row;
        padding-left: 20px;
        padding-right: 20px;
        width: fit-content;
        gap: clamp(14px, 4vw, 20px);
    }

    .cases-panel {
        width: calc(100vw - 80px) !important;
        height: calc(100vw - 80px) !important;
        min-height: auto;
        padding: 28px 24px !important;
        flex-shrink: 0;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }

    /* ホバーアクションを無効化し、常時ホバー時のデザイン（グラデーション）を表示 */
    .cases-panel::after {
        opacity: 1 !important;
    }

    .cases-panel-title {
        font-size: clamp(20px, 5.5vw, 28px) !important;
        padding: 0 !important;
        margin: 0 !important;
        line-height: 1.2 !important;
    }

    .cases-panel-footer {
        padding: 0 !important;
        padding-top: 14px !important;
        flex-direction: column;
        align-items: stretch;
    }

    .footer-line {
        position: static !important;
        width: 100% !important;
        margin-bottom: 12px !important;
        transform: scaleX(1) !important;
    }

    .cases-panel-link {
        opacity: 1 !important;
        transform: none !important;
        justify-content: flex-end;
    }


    .information-container {
        padding: 80px 20px 120px; /* スマホ: 120pxに設定 */
    }

    .information-header {
        flex-direction: column; /* 縦並びに変更 */
        align-items: flex-start;
        gap: 20px;
    }

    .information-title {
        font-size: 12.5vw !important; /* 8.5vwから引き上げ、画面幅いっぱいに収まる最大サイズに調整 */
        word-break: break-all;
    }

    .information-description {
        margin-top: 15px;
        width: 100%;
        line-height: 1.6;
        font-size: 14px; /* 少し小さくして読みやすく */
    }

    .information-btn {
        margin-top: 20px;
        width: clamp(180px, 13vw, 250px);
        margin-left: auto;
        margin-right: auto;
        align-self: center;
    }

    .information-subtitle {
        font-size: 10vw !important;
        margin-bottom: 20px;
    }

    .news-list {
        margin: 0 20px !important;
    }

    .news-item {
        display: grid;
        grid-template-columns: auto auto 1fr auto !important;
        gap: 12px 16px !important; /* 縦横の隙間 */
        align-items: center;
        padding: 20px 0 !important; /* 左右の余白は親のmarginに任せる */
    }

    .news-item > .news-date {
        grid-column: 1 / 2;
        grid-row: 1 / 2;
        font-size: 14px !important;
        font-weight: normal !important;
    }

    .news-item > .news-tag {
        grid-column: 2 / 3;
        grid-row: 1 / 2;
    }

    .news-item > .news-text {
        grid-column: 1 / 4;
        grid-row: 2 / 3;
        white-space: normal;
        word-break: break-all;
        font-size: 15px !important;
        margin: 0 !important;
        line-height: 1.4;
    }

    .news-item > .news-arrow {
        grid-column: 4 / 5;
        grid-row: 2 / 3;
        margin-top: 0 !important;
    }

    .column-list {
        flex-direction: column;
        gap: 48px; /* パネル間の縦の隙間を少し広げて見やすく */
        margin: 0 20px !important;
    }

    .column-item {
        width: 100% !important; /* 固定幅を解除 */
    }

    .contact-btn:hover,
    .contact-btn:hover * {
        background-color: inherit !important;
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        color: inherit !important;
        fill: inherit !important;
        stroke: inherit !important;
    }

    /* フッターコンタクトボタンのホバー無効化 */
    .footer-content-box:hover .footer-contact-btn {
        transform: none !important;
        background: linear-gradient(135deg, #24ABE4, #003B83) !important;
        box-shadow: none !important;
    }

    .footer-content-box:hover .contact-arrow {
        stroke: #ffffff !important;
    }
}











/* ==========================================================================
   お知らせ詳細ページ専用スタイル (ピクセルパーフェクト忠実版)
   ========================================================================== */

/* 1. ページヘッダー微調整 */
.detail-hero {
    min-height: auto !important;
    padding-bottom: 64px !important;
}

/* 一覧へ戻るボタン (上部) : 左端配置 */
.detail-back-btn-top-wrapper {
    max-width: 760px; /* 本文幅を画像に合わせて少し狭く(760px) */
    margin: 0 auto;
    padding: 0;
    display: flex;
    justify-content: flex-start;
    margin-bottom: 30px;
    position: relative;
    z-index: 10;
}

/* 枠線のないテキストリンクボタン */
.detail-back-btn-text {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 24px;
    border: 2px solid #24ABE4;
    border-radius: 25px;
    color: #24ABE4;
    font-size: 16px;
    font-weight: bold;
    text-decoration: none;
    background: transparent;
    transition: all 0.3s ease;
}

.detail-back-btn-text:hover {
    background: #24ABE4;
    color: #ffffff;
}

/* 2. 記事ヘッダー帯 (グレー背景) */
.detail-article-header {
    background-color: #F4F4F4;
    position: relative;
    overflow: hidden;
    padding: 60px 0;
}

/* 背景文字 "NEWS" */
.detail-article-header-bg {
    position: absolute;
    top: -60px;
    left: -40px;
    z-index: -1;
    pointer-events: none;
}

.detail-article-bg-text {
    font-family: 'Poppins', sans-serif;
    font-size: 120px;
    font-weight: normal;
    color: #FFFFFF;
    line-height: 1;
    opacity: 1;
    white-space: nowrap;
    margin: 0;
}

.detail-article-header-inner {
    max-width: 1240px; /* タイトルセクション幅(1240px) */
    margin: 0 auto;
    padding: 0;
    position: relative;
    z-index: 1;
}

.detail-meta {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

/* カテゴリバッジ (青背景白文字) */
.detail-category-badge {
    display: inline-block;
    padding: 6px 16px;
    background-color: #24ABE4;
    border-radius: 20px;
    font-size: 14px;
    color: #FFFFFF;
    font-weight: normal;
}

.detail-title {
    font-size: 40px;
    font-weight: bold;
    color: #333333;
    line-height: 1.6;
    margin: 0;
}

.detail-meta .news-date {
    color: #555555;
}

/* 3. 記事本文エリア (白背景) */
.detail-article-body {
    padding: 60px 0 100px;
    background-color: #FFFFFF;
}

.detail-content-inner {
    max-width: 1000px; /* 本文幅(1000px) */
    margin: 0 auto;
    padding: 0;
}

.detail-eyecatch {
    margin-bottom: 50px;
}

.detail-eyecatch img {
    width: 100%;
    height: auto;
    display: block;
}

/* H2見出し */
.detail-content-inner h2 {
    font-size: 32px;
    font-weight: bold;
    color: #555555;
    margin: 50px 0 25px;
    line-height: 1.5;
}

/* H3見出し */
.detail-content-inner h3 {
    font-size: 20px;
    font-weight: bold;
    color: #555555;
    margin: 40px 0 20px;
    line-height: 1.5;
}

.detail-content-inner p {
    font-size: 16px;
    color: #555555;
    line-height: 2.0;
    letter-spacing: 0.02em;
    margin-bottom: 25px;
    font-weight: normal;
}

/* 引用・補足ブロック (グレー背景) */
.detail-info-block {
    background-color: #F4F4F4;
    padding: 30px 40px;
    margin: 40px 0;
}

.detail-info-block ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.detail-info-block li {
    position: relative;
    padding-left: 1.2em;
    margin-bottom: 12px;
    font-size: 16px;
    color: #555555;
    letter-spacing: 0.02em;
    line-height: 1.6;
}

.detail-info-block li:last-child {
    margin-bottom: 0;
}

.detail-info-block li::before {
    content: "・";
    position: absolute;
    left: 0;
    color: #555555;
}

/* テーブルスタイル - 均一な薄いグレーの横線のみ */
.detail-table {
    width: 900px;
    max-width: 100%;
    border-collapse: collapse;
    margin: 40px auto;
    border-bottom: 1px solid #EEEEEE;
}

.detail-table th,
.detail-table td {
    padding: 16px;
    text-align: center;
    border-bottom: 1px solid #EEEEEE;
    font-size: 16px;
}

.detail-table th {
    background-color: #F9F9F9;
    font-weight: normal;
    color: #333333;
    width: 25%;
    border-bottom: 1px solid #AEAEAE;
}

.detail-table td {
    color: #555555;
}

/* 丸いリストのスタイル */
.detail-link-list-circle {
    list-style: none;
    padding: 0;
    margin: 0 0 40px 0;
}
.detail-link-list-circle li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 12px;
    color: #555555;
    letter-spacing: 0.02em;
    font-size: 16px;
    line-height: 1.8;
}
.detail-link-list-circle li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 6px; /* 少し大きくした分上に調整 */
    width: 15px; /* 現在の1.5倍の大きさ */
    height: 15px;
    background-color: #24ABE4;
    border-radius: 50%;
}
.detail-link-list-circle li.circle-gray {
    margin-left: 24px;
}
.detail-link-list-circle li.circle-gray::before {
    width: 10px;
    height: 10px;
    top: 8px; /* 元の大きさに戻した分の位置調整 */
    background-color: #AEAEAE;
}

.detail-link-list-circle li.circle-small-blue {
    margin-left: 48px;
}
.detail-link-list-circle li.circle-small-blue::before {
    width: 5px;
    height: 5px;
    top: 11px; /* 小さい丸の中央揃え用調整 */
    background-color: #24ABE4;
}

/* 番号付きリスト（水色の大丸のみ番号） */
.detail-link-list-circle.numbered {
    counter-reset: list-counter;
}
.detail-link-list-circle.numbered li:not(.circle-gray):not(.circle-small-blue) {
    counter-increment: list-counter;
    padding-left: 44px;
}
.detail-link-list-circle.numbered li:not(.circle-gray):not(.circle-small-blue)::before {
    content: counter(list-counter);
    width: 32px;
    height: 32px;
    top: -2px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    color: #ffffff;
    background-color: #24ABE4;
    border-radius: 50%;
    line-height: 1;
}

/* 青文字のリンクリスト */
.detail-link-list {
    list-style: none;
    padding: 0;
    margin: 40px 0;
}
.detail-link-list li {
    margin-bottom: 16px;
    position: relative;
    padding-left: 20px;
}
.detail-link-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 6px;
    height: 6px;
    background-color: #24ABE4;
    border-radius: 50%;
}
.detail-link-list a {
    display: inline-flex;
    align-items: center;
    color: #24ABE4;
    font-size: 16px;
    font-weight: normal;
    text-decoration: none;
    transition: opacity 0.3s ease;
}
.detail-link-list a:hover {
    opacity: 0.7;
}
.detail-link-list .external-icon,
.detail-link-list .internal-icon,
.detail-link-list .pdf-icon {
    margin-left: 8px;
    width: 16px;
    height: 16px;
}

.detail-bottom-actions {
    margin-top: 60px;
    display: flex;
    justify-content: center;
}

/* モバイル対応 (余白ゼロを防ぐ) */
@media (max-width: 768px) {
    .detail-article-header-inner,
    .detail-content-inner,
    .detail-back-btn-top-wrapper {
        padding: 0 20px;
    }
    .detail-article-bg-text {
        font-size: 100px;
    }
    .detail-title {
        font-size: 24px;
    }
    .detail-content-inner h2 {
        font-size: 20px;
    }
    .detail-content-inner h3 {
        font-size: 18px;
    }
    .detail-table th,
    .detail-table td {
        padding: 12px 8px;
        font-size: 13px;
    }
    .detail-info-block {
        padding: 20px;
    }
}

/* =========================================================
   ページ移動アクション（ホワイトアウト ＆ メッセージ表示）オーバーレイ
   ========================================================= */
.page-transition-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    background-color: #ffffff;
    z-index: 999999;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.page-transition-overlay.is-active {
    opacity: 1;
    pointer-events: auto;
}

.page-transition-content {
    text-align: center;
    padding: 0 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: opacity 0.45s cubic-bezier(0.25, 1, 0.5, 1), transform 0.45s cubic-bezier(0.25, 1, 0.5, 1);
    opacity: 1;
    transform: translateY(0);
}

.page-transition-content.is-fading-out {
    opacity: 0;
    transform: translateY(-8px);
}

.page-transition-text {
    font-family: 'Outfit', 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    font-size: 1.05rem; /* 従来の70%サイズ（1.5rem * 0.7） */
    font-weight: 600;
    letter-spacing: 0.08em;
    background: linear-gradient(135deg, #24ABE4, #003B83);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    color: #24ABE4;
    margin: 0;
    min-height: 1.5em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* ページ移動アクション時のタイピングカーソル（ブルーグラデーション対応） */
.page-transition-overlay .typing-cursor {
    display: inline-block;
    width: 2px;
    height: 1.15em;
    background: linear-gradient(180deg, #24ABE4, #003B83);
    background-color: #003B83;
    -webkit-text-fill-color: initial;
    box-shadow: 0 0 5px rgba(36, 171, 228, 0.45);
    vertical-align: -0.12em;
    margin-left: 3px;
    animation: cursorBlink 0.6s step-end infinite;
}

@media (max-width: 768px) {
    .page-transition-text {
        font-size: 0.8rem; /* モバイル時も従来の70%サイズ（1.15rem * 0.7） */
        letter-spacing: 0.06em;
    }
}

/* ヒーロー画像・コンタクト画像のpictureタグ表示設定 */
.about-hero-image-wrapper picture,
.contact-info-img-inner picture {
    display: block;
    width: 100%;
    height: 100%;
    position: relative;
}

/* スマホ表示時：アニメーション完了後に画像が拡大・位置ズレする現象を防止 */
@media (max-width: 768px) {
    body .about-hero-image-wrapper .about-hero-img,
    body .contact-info-img-inner .contact-info-img {
        top: 0 !important;
        left: 0 !important;
        width: 100% !important;
        height: 100% !important;
        transform: none !important;
        object-fit: cover !important;
    }
}

/* ヘッダー要素の垂直中央揃えの徹底 */
#header .header-inner {
    align-items: center !important;
}

#header .header-nav {
    display: flex !important;
    align-items: center !important;
}

/* 初期アクセス時のスタイル（常時100%表示で抜けを防止） */
#header,
.hero-top-group,
.hero-sub-copy,
.hero-bottom-bar {
    opacity: 1;
}



