body, html {
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif;
    overflow-x: hidden;
}

body {
    font-family: 'Noto Sans JP', 'M PLUS 1p', 'Zen Kaku Gothic New', 'Kosugi Maru', 'Sawarabi Gothic', sans-serif;
    padding-top: 100px;
}

main {
    position: relative;
    overflow: hidden;
}

header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background-color: #f5f5f5;
    padding: 20px 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 1000; /* より高いz-index値を設定 */
    height: 30px;
    padding-bottom: 30px;
    margin-bottom: 0;
}

h1, h2, h3, h4, h5, h6 {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    /* 必要に応じて他のスタイル */
}

/* ハンバーガーメニューボタン */
.menu-toggle, .mobile-nav {
    display: none;
}

.logo {
    display: flex; /* これを追加 */
    justify-content: center;
    margin-right: 120px;
    flex: 0 0 auto;
	text-decoration: none; /* リンクの下線を削除 */
    cursor: pointer; /* カーソルをポインターに */
}

.logo-image {
    height: 140px;
    width: auto;
    max-width: 100%;
}

.header-nav {
    display: flex;
    justify-content: center; /* 中央寄せに変更 */
    align-items: center;
	margin-right: 20px; /* 右側のマージンを追加して全体を左に移動 */
}

.header-nav ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: center; /* 中央寄せ */
}

.header-nav li {
    margin: 0 20px; /* 項目間の間隔を調整 */
}

.header-nav a {
    text-decoration: none;
    color: #333;
    font-weight: bold;
    font-size: 20px;
    position: relative;
    transition: color 0.3s ease;
    z-index: 1;
}

/* ホバーエフェクト用の疑似要素 */
.header-nav a::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    background-color: #09163a;
    border-radius: 50px;
    transform: translate(-50%, -50%);
    transition: width 0.4s ease, height 0.4s ease;
    z-index: -1;
    opacity: 0;
    padding: 10px 25px;
}

/* 粒子エフェクト用の疑似要素 */
.header-nav a::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 5px;
    height: 5px;
    background-color: #09163a;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    pointer-events: none;
    z-index: -1;
}

.header-nav a:hover {
    color: #968242;
    text-decoration: none;
}

.header-nav a:hover::before {
    width: 100%;
    height: 100%;
    border-radius: 4px;
    opacity: 1;
    animation: popIn 0.4s ease forwards;
}

.header-nav a:hover::after {
    animation: particleBurst 0.5s ease-out forwards;
}

@keyframes popIn {
    0% {
        transform: translate(-50%, -50%) scale(0);
        opacity: 0;
        border-radius: 50px;
    }
    50% {
        transform: translate(-50%, -50%) scale(1.1);
        border-radius: 50px;
    }
    100% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 1;
        border-radius: 50px;
    }
}

@keyframes particleBurst {
    0% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0; /* 1から0に変更して中央の点を非表示に */
        box-shadow: 
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a,
            0 0 0 0 #09163a;
    }
    50% {
        opacity: 0.8;
    }
    100% {
        transform: translate(-50%, -50%) scale(1.2);
        opacity: 0;
        box-shadow: 
            -50px -50px 0 0 #09163a,
            50px -50px 0 0 #09163a,
            -50px 50px 0 0 #09163a,
            50px 50px 0 0 #09163a,
            -70px 0 0 0 #09163a,
            70px 0 0 0 #09163a,
            0 -70px 0 0 #09163a,
            0 70px 0 0 #09163a,
            -35px -65px 0 0 #09163a,
            35px -65px 0 0 #09163a,
            -65px -35px 0 0 #09163a,
            65px 35px 0 0 #09163a;
    }
}

.header-nav li:first-child {
    margin-left: 0; /* 最初の項目の左マージンを0に */
}

.header-nav .news-link {
    position: relative;
    top: 5px; /* この値を調整して、NEWSを下に移動させます */
}

.hero {
    position: relative;
    height: calc(100vh - 80px + 10vw); /* ヘッダーの高さを引いた値 + 追加の高さ */
	background-color: #f5f5f5;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden; /* overflowをvisibleに変更 */
    z-index: 1; /* z-indexを追加 */
    margin-top: -25px;
    margin-bottom: 100px; /* 負のマージンを追加 */
    padding-bottom: 100px;
}

.hero-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 330vh;
    z-index: 1;
}

.logo-animation {
    position: absolute;
    top: 0;
    width: 50%;
    height: 50%;
    z-index: 2;
	left: 25%;
	margin-top: 220px; /* この行を追加してロゴだけを下げる */
}

.logo-part {
    position: absolute;
    width: 33%; /* 50%から33%に変更 */
    height: auto;
    opacity: 0;
    transition: all 2s ease-in-out;
}

.logo1 {
    top: -50%;
    left: -50%;
    transform: rotate(-45deg) scale(0.5);
}

.logo2 {
    top: 150%;
    right: -50%;
    transform: rotate(45deg) scale(0.5);
}

.logo3 {
    bottom: -50%;
    left: 50%;
    transform: translateX(-50%) rotate(180deg) scale(0.5);
}

.logo-part.active {
    opacity: 1;
    top: calc(50% + 300px); /* 50%から調整して下に移動 */
    left: 50%;
    transform: translate(-50%, -50%) rotate(0deg) scale(1);
}

.scroll-text {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: calc(50% + 450px);
    color: #09163a;
    font-size: 20px;
    font-weight: bold;
    letter-spacing: 0.2em;
    z-index: 2;
    opacity: 0;
    padding: 0 8px;  /* 左右のみ少しパディングを持たせる */
    animation: fadeInScroll 2s ease-out 1s forwards,
               floatScroll 2s ease-in-out infinite;
    background-color: #f5f5f5;
    border-radius: 12px;  /* 角丸を少し小さく */
    line-height: 1;  /* ライン高を最小に */
    display: inline-block;
}

/* フェードインのアニメーション */
@keyframes fadeInScroll {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* 上下に浮かぶアニメーション */
@keyframes floatScroll {
    0%, 100% {
        transform: translateX(-50%) translateY(0);
    }
    50% {
        transform: translateX(-50%) translateY(-10px);
    }
}

/* hero-contentの基本スタイル */
.hero-content {
    position: relative;
    z-index: 2;
    transform: translateY(-5px);
    width: 100%;
    max-width: none;
    padding-left: 150px;
    box-sizing: border-box;
}

/* h2とh3のスタイル */
.hero-content h2, .hero-content h3 {
    text-align: left;
    margin-right: 0;
    font-size: 80px;
    position: relative;
    z-index: 3;
    color: #000;
    display: inline-block;
    line-height: 1.2;
    margin-top: 130px;
    opacity: 0;
    transform: translateX(-100%);
    background-color: #f5f5f5; /* 背景色を追加 */
    padding: 0 0.02em;
    border-radius: 100px;
    background-clip: padding-box;
    box-decoration-break: clone;
    white-space: nowrap;
}

.comma {
    margin-right: -0.6em; /* この値を調整して句読点後のスペースを制御 */
}

/* 背景用の疑似要素を追加 */
.hero-content h2::before, .hero-content h3::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #f5f5f5;
    border-radius: 12px;
    z-index: -1;
    opacity: 0;
}

.hero-content h2 {
    margin-top: 140px;
    opacity: 0;
    animation: slideInFromLeft 1.2s ease-out forwards;
}

.hero-content h3 {
    margin-top: -10px;
    margin-left: 0;
    margin-right: 0;
    opacity: 0;
    perspective: 1000px;
    transform-style: preserve-3d;
    display: block;
    width: auto;
    text-align: left;
}

.hero-content h3.hero-line-2 {
    animation: slideInFromLeft 1.2s ease-out 0.8s forwards; /* 2行目: 0.8秒遅延 */
}

.hero-content h3.hero-line-3 {
    animation: slideInFromLeft 1.2s ease-out 1.6s forwards; /* 3行目: 1.6秒遅延 */
}

/* メインタイトル専用のスタイル */
.hero-content > h1.main-title {
    font-size: 80px;
    line-height: 1.4;
    margin: 20px 0;
    position: relative;
    z-index: 3;
}

/* メインタイトルのハイライト部分 */
.hero-content > h1.main-title .highlight {
    background-color: #f5f5f5;
    padding: 15px 30px;
    display: inline-block;
    line-height: 1.2;
    border-radius: 20px;
}

/* アニメーション用のキーフレーム */
@keyframes slideInFromLeft {
    0% {
        opacity: 0;
        transform: translateX(-100%);
    }
    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

/* この設定は上記の個別設定で上書きされるため削除 */

/* この設定は上記の個別設定で上書きされるため削除 */

/* 背景用の別のアニメーション */
@keyframes fadeInBackground {
    0% {
        opacity: 0;
    }
    45% {
        opacity: 0.6;
    }
    100% {
        opacity: 1;
    }
}

/* ロゴアニメーション部分のスタイル */
.hero-content .logo-animation {
    font-size: 36px;
}

/* その他のテキスト要素 */
.hero-content p {
    position: relative;
    z-index: 3;
    font-size: 36px;
}

.fixed-content {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 2;
}

.scrollable-content::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: -1;
}

.fade-in {
    opacity: 0;
    animation: fadeIn 3s ease-out forwards; /* 1sから2sに変更 */
}

.hero-content h1.fade-in {
    animation-delay: 3s; /* 0.5sから1sに変更 */
}

.hero-content p.fade-in {
    animation-delay: 5s; /* 1sから2sに変更 */
}

.fade-in.active {
    animation: fadeIn 4s ease-out forwards;
}

.fade-in-up {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 3s ease-out, transform 3s ease-out;
}

.fade-in-up.visible {
    opacity: 1;
    transform: translateY(0);
}

.about {
    padding: 120px 0;
    text-align: center;
    position: relative;
    clip-path: polygon(0 0, 50% 17%, 100% 0, 100% 90%, 50% 100%, 0 90%);
    padding-top: calc(-10px + 45vw); /* 上部の余白をさらに増やす */
    margin-bottom: -370px;
    padding-bottom: 210px;
    margin-top: 280px;
    z-index: 3;
    min-height: 50vh;
    top: -10px;
	transform-style: preserve-3d;
    backface-visibility: hidden;
    will-change: clip-path;
}


.about::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: -1; /* z-indexを負の値に変更 */
    clip-path: inherit; /* 親要素のclip-pathを継承 */
    background-color: white;
}

.about-paragraph {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-weight: 700;
    text-align: center;
    display: inline-block;
    margin-left: auto;
    margin-right: auto;
    font-size: 0.4em; /* フォントサイズを調整 */
    line-height: 1.5;
    letter-spacing: 0.07em; /* 文字間隔を少し広げる */
}

/* 「AI時代に欠かせない存在」だけのスタイル */
.about-paragraph strong {
    font-family: "Zen Kaku Gothic New", sans-serif;
    font-weight: bold !important;
    font-feature-settings: "palt";
    letter-spacing: 0.05em;
    font-size: 23px;
    color: #968242;
}

.about-paragraph p {
    margin-bottom: 0.8em !important; /* 1.8emから0.8emに変更 */
    text-indent: 0;
    padding-left: 0;
    font-size: 0.6em; /* 追加 */
    line-height: 1.6; /* 追加 */
}

.about-paragraph .signature {
    margin-top: 4em;
}

.about-paragraph .indent-left {
    margin-left: 0;
}

.about .container {
    max-width: 800px;
    margin: 0 auto;
    position: relative;
    z-index: 2; /* コンテンツを背景オーバーレイの上に配置 */
    padding-top: 20px;
}

.about-content {
    position: relative;
    z-index: 2;
	top: 10px;
}

.about-subtitle {
    margin-top: 30px; /* この値を調整して、サブタイトルの上の余白を増やす */
}

.about-text {
    position: relative;
}

.about h1 {
    margin-top: -300px;
}

.about h2 {
    font-size: 30px;
    margin-bottom: 30px;
}

.about p {
    font-size: 17px;
    margin-bottom: 30px;
}

.about .quote {
    font-style: italic;
    font-size: 1.4em;
    color: #000000;
    margin-bottom: 30px;
}

.about-title {
    text-align: center;
    margin-bottom: 70px;
    font-size: 36px;
}

.about-title span {
    display: inline-block;
    transition: transform 0.3s ease;
}

.floating-text.about-title {
    position: relative;
    top: 25px; /* この値を調整して上下位置を変更（より上に移動させたい場合は -150px や -200px など） */
}

@keyframes floatAnimation {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

/* PCではABOUTセクションの改行を非表示 */
.sp-only {
    display: none;
}

/* PCでは住所の改行を非表示 */
.company-info .address-break-mobile {
    display: none; /* PCでは非表示 */
}

.clients-section {
    position: relative;
    padding: 80px 20px;
    background-color: #f5f5f5;
    clip-path: polygon(0 0, 50% 20%, 100% 0, 100% 75%, 50% 96%, 0 75%);
    padding-top: 380px;
    padding-bottom: 330px; /* 下部のパディングを増やして、V字の形状をより強調 */
    margin-top: -50px;
    margin-bottom: -70px; /* マージンも調整して、次のセクションとの重なりを調整 */
    z-index: 4;
}

/* 取引先企業スライダーのスタイル */
.clients-slider-container {
    width: 100%;
    overflow: hidden;
    margin: 30px 0;
    position: relative;
}

.clients-slider {
    display: flex;
    align-items: center;
    white-space: nowrap;
}

/* スライダーの基本設定 */
.clients-slider {
    display: flex;
    position: relative;
    width: auto; /* 幅はJavaScriptで動的に設定 */
    will-change: transform; /* パフォーマンス最適化 */
}

/* コンテナは幅を固定し、オーバーフローを隠す */
.clients-slider-container {
    overflow: hidden;
    position: relative;
    width: 100%;
    margin: 30px 0;
}

/* 個々のロゴが適切に整列するようにする */
.client-logo {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    flex-shrink: 0; /* ロゴが縮むのを防止 */
}

.clients-title {
    text-align: center; /* テキストを中央揃えに */
    font-size: 30px; /* フォントサイズを設定（必要に応じて調整） */
    margin: 0 auto 40px; /* 上下左右のマージンを設定（下部に40pxのマージン） */
    position: relative; /* 相対位置指定（装飾を追加する場合に必要） */
}

.client-logo {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 200px;  /* 横幅を固定 - 必要に応じて調整 */
    min-width: 200px; /* 最小幅も同じ値に設定（これが重要）*/
    height: 80px;  /* 縦幅を固定 - 必要に応じて調整 */
    margin: 0 20px; /* 左右の間隔を追加 */
    padding: 10px;
    background-color: white; /* 背景色を白に */
    border-radius: 4px; /* 角を少し丸く */
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    border-top: 2px solid #09163a;    /* 上部: 青色 */
    border-right: 2px solid #09163a;  /* 右側: 青色 */
    border-bottom: 2px solid #968242; /* 下部: 金色 */
    border-left: 2px solid #09163a;   /* 左側: 青色 */
    flex-shrink: 0; /* ロゴが縮むのを防止 */
}

.client-logo img {
    max-width: 200px; /* 最大幅 - コンテナより少し小さく */
    max-height: 75px; /* 最大高さ - コンテナより少し小さく */
    width: auto;
    height: auto;
    object-fit: contain; /* アスペクト比を保持しながらコンテナに収める */
    transition: transform 0.3s ease; /* ホバーエフェクト用 */
}

.vision {
    position: relative;
    padding: 80px 20px;
    background-color: #f5f5f5;
    position: relative;
    clip-path: polygon(0 0, 50% 16%, 100% 0, 100% 83%, 50% 100%, 0 83%);
    padding-top: calc(80px + 12vw); /* 上部の余白 */
    padding-bottom: calc(90px + 10vw); /* 下部の余白を追加 */
    z-index: 3;
    margin-bottom: -22vw; /* 下のセクションと重なるように */
    margin-top: 100px; /* 50pxから150pxに増やして下に移動 */
    transform-style: preserve-3d;
    backface-visibility: hidden;
    will-change: clip-path;
}

.vision::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #f5f5f5;
    z-index: -1;
    clip-path: inherit;
}

.services-title {
    margin-top: 80px;
    position: relative;
    z-index: 5;
}

.vision h1 {
    text-align: center;
    margin-bottom: 40px;
    font-size: 36px;
}

.vision-content {
    flex: 1;
    display: flex;
    justify-content: flex-start;
    align-items: center;
}

.vision-content h1 {
    font-size: 2.5em;
    margin-bottom: 20px;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); /* テキストに影を追加 */
}

.vision-content h2 {
    font-size: 0.8em;
    margin-bottom: 5px;
}

.vision-content h3 {
    font-size: 1.3em;
    margin-bottom: 10px;
}

.vision-content p {
    flex: 1;
    font-size: 0.9em;
    line-height: 1.4;
    margin-left: 20px;
}

.vision-list {
    max-width: 1200px;
    margin: 0 auto;
}

.vision-title {
    flex: 0 0 250px;
    margin-right: 20px;
    padding-left: 20px; /* この行を追加 */
}

.vision-title h2 {
    font-size: 0.8em;
    margin-bottom: 5px;
    margin-left: 10px; /* この行を追加 */
}

.vision-title h3 {
    font-size: 1.3em;
    margin-bottom: 10px;
    margin-left: 10px; /* この行を追加 */
}

.vision-description {
    flex: 1;
}

.vision-description p {
    font-size: 0.9em;
    line-height: 1.4;
}

.vision-item {
    display: flex;
    align-items: center;
    background-color: #ffffff;
    margin-bottom: 20px;
    padding: 20px;
    border-radius: 10px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.vision-logo {
    flex: 0 0 150px;
    margin-right: 20px;
    margin-left: 20px; /* この行を追加 */
}

.vision-logo img {
    max-width: 100%;
    height: auto;
    margin-left: 10px; /* この行を追加 */
}

.vision::before,
.vision::after {
    display: none;
}

.vision::after {
    content: none; /* または display: none; */
}

.vision-text {
    font-weight: bold;
    font-size: 1.5em; /* フォントサイズを10%大きく */
    line-height: 1.6;
    text-align: center;
    max-width: 900px;
    margin: 0 auto;
}

.vision-text h3 {
    margin-bottom: 15px;
}

.vision-indent {
    padding-left: 2em;
    display: inline-block;
}

.vision p {
    font-size: 14px;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
}

.no-highlight {
    background-color: transparent !important;
}

.smaller-text {
    font-size: 1em; /* smaller-textクラスのサイズを調整 */
    line-height: 1.6;
}

.floating-text span {
    display: inline-block;
    transition: transform 0.3s ease;
}

@keyframes floatUp {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

.smaller-text {
    font-size: 14px;
    line-height: 1.6;
}

.community-title {
    background-color: #d4b95f; /* 黄色 */
}

.news {
    position: relative;
    padding: 50px 30px;
    background-color: #f5f5f5;
    text-align: center;
    clip-path: polygon(0 0, 50% 15%, 100% 0, 100% 85%, 50% 100%, 0 85%);
    padding-top: calc(60px + 15vw); /* 上部の余白を増やす */
    padding-bottom: calc(120px + 8vw); /* 下部の余白を増やす */
    margin-bottom: -6vw; /* 負のマージンを追加または調整 */
    z-index: 3;
    margin-top: 280px;
	transform-style: preserve-3d;
    backface-visibility: hidden;
    will-change: clip-path;
}

.news::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #f5f5f5;
    z-index: -1;
    clip-path: inherit;
}

.news h1 {
    text-align: center;
    font-size: 36px;
    margin-bottom: 40px;
    color: #000000;
}

.news-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    margin: 0 auto;
    padding: 0 20px;
    max-width: 1500px;
}

.news-item {
    background-color: #ffffff;
    border-radius: 10px;
    box-shadow: 0 2px 5px rgba(255, 255, 255, 0.1);
    height: 360px;
	position: relative; /* 追加 */
    display: flex; /* 追加 */
    flex-direction: column; /* 追加 */
}

.news-item img {
    width: 100%;
    height: 200px;
    object-fit: cover;
}

.news-item-content {
    padding: 15px;
    flex-grow: 1; /* 追加 */
    display: flex; /* 追加 */
    flex-direction: column; /* 追加 */
}

.news-item-content h3 {
    font-size: 1em;
    margin-bottom: 10px;
    display: -webkit-box;
    -webkit-line-clamp: 2;  /* 2行に制限 */
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;  /* 省略記号を表示 */
    line-height: 1.5;  /* 行間を調整 */
    max-height: 3em;  /* line-height × 行数 */
}

.news-item-content p {
    font-size: 0.8em;
    color: #666;
    margin-bottom: 5px; /* 変更 */
    position: absolute;
    bottom: 45px;
    left: 50%; /* 変更 */
    transform: translateX(-50%); /* 追加 */
    width: 100%; /* 追加 */
    text-align: center; /* 追加 */
}

.view-button {
    display: inline-block;
    background-color: #09163a;
    color: white;
    padding: 5px 15px;
    border-radius: 5px;
    text-decoration: none;
    font-size: 0.8em;
    position: absolute;
    bottom: 15px;
    left: 50%;
    transform: translateX(-50%);
    transition: color 0.3s ease;  /* 色の変化のみトランジションを設定 */
    z-index: 1;  /* 追加 */
}

.view-button:hover {
    color: #968242; /* ホバー時のテキスト色を変更 */
    background-color: #09163a; /* 背景色は維持 */
	animation: buttonWiggle 0.5s ease;
}

/* Viewボタンの揺れるアニメーション */
@keyframes buttonWiggle {
    0%, 100% { transform: translateX(-50%) rotate(0deg); }
    25% { transform: translateX(-50%) rotate(-3deg); }  /* -2degから-3degに変更 */
    75% { transform: translateX(-50%) rotate(3deg); }   /* 2degから3degに変更 */
}

/* Viewボタンクリック時のアニメーション */
.view-button::after {
    content: '';
    position: absolute;
    top: 30%;
    left: 50%;
    width: 5px;
    height: 5px;
    background-color: #09163a;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    pointer-events: none;
    z-index: 1000;
}

.view-button:hover::after {
    animation: particleBurst 0.5s ease-out forwards;
}

@keyframes linesBurst {
    0% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 1;
        box-shadow: 
            0 0 0 0 #968242,
            0 0 0 0 #968242,
            0 0 0 0 #968242,
            0 0 0 0 #968242;
    }
    100% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
        box-shadow: 
            -80px -30px 0 0 #968242,  /* 左上：横100→80px, 縦40→30px */
            80px -30px 0 0 #968242,   /* 右上：横100→80px, 縦40→30px */
            80px 30px 0 0 #968242,    /* 右下：横100→80px, 縦40→30px */
            -80px 30px 0 0 #968242;   /* 左下：横100→80px, 縦40→30px */
    }
}

.more-link {
    /* 位置を調整 */
    text-align: center;
    margin-top: 60px; /* NEWS項目との間隔をさらに増やす */
}

.more-link a {
    display: inline-block;
    padding: 10px 20px;
    color: #000;
    text-decoration: none;
    font-weight: bold;
    font-size: 1em;
    transition: color 0.3s ease;
    background-color: transparent;
    position: relative;
    overflow: visible; /* 変更：粒子が見えるように */
	z-index: 1;
}

/* 紺色の背景効果用の疑似要素（新規追加） */
.more-link a::before {
    content: '';
    position: absolute;
    top: 60%;
    left: 50%;
    width: 0;
    height: 0;
    background-color: #09163a;
    border-radius: 50px;
    transform: translate(-50%, -50%);
    transition: width 0.4s ease, height 0.4s ease;
    z-index: -1;
    opacity: 0;
    padding: 7px 13px; /* Moreの後ろに出現する紺色の背景のサイズ */
}

/* 下線用の新しい疑似要素 */
.more-link a span::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 2px;
    bottom: 0;
    left: 0;
    background-color: #000;
    transform: scaleX(1);
    transform-origin: left;
    transition: transform 0.3s ease, background-color 0.3s ease;
}

/* ホバー時の下線色変更 */
.more-link a:hover span::after {
    background-color: #968242;
}

/* 粒子アニメーション用の疑似要素（既存のafter） */
.more-link a::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 5px;
    height: 5px;
    background-color: transparent;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    pointer-events: none;
    z-index: 1000;
}

/* ホバー時のスタイル */
.more-link a:hover {
    color: #968242;
}

/* ホバー時の粒子アニメーション */
.more-link a:hover::after {
    animation: particleBurst 0.5s ease-out forwards;
}

/* ホバー時の背景アニメーション（新規追加） */
.more-link a:hover::before {
    width: 100%;
    height: 100%;
    border-radius: 4px;
    opacity: 1;
    animation: popIn 0.4s ease forwards;
}

.view-button::after,
.more-link a::after {
    content: '';
    position: absolute;
    top: 30%;
    left: 50%;
    width: 5px;
    height: 5px;
    background-color: transparent; /* #09163aからtransparentに変更 */
    border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    pointer-events: none;
    z-index: 1000000000000000000000000000000000000;
}

@keyframes pulseText {
    0% { transform: scale(1); }
    50% { transform: scale(1.1); }
    100% { transform: scale(1); }
}

.news-divider {
    height: 200px;
    position: relative;
    overflow: hidden;
}

.news-divider canvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.news-item.no-thumbnail {
    padding: 0; /* パディングを追加 */
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    height: 100%; /* 高さを100%に設定 */
}

.news-item.no-thumbnail .news-item-content {
    position: static; /* 絶対位置指定を解除 */
    padding-bottom: 140px; /* 下部にパディングを追加 */
}

/* ニュースアーカイブページ専用のスタイル */
.news-archive-grid {
    display: flex;
    flex-direction: column;
    gap: 20px;
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px;
}

.news-archive-grid .news-item {
    display: flex;
    background-color: #ffffff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    height: 150px;
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.3s ease, transform 0.3s ease; /* トランジションを追加 */
    transform: scale(1); /* 初期スケールを設定 */
}

.news-archive-grid .news-item:hover {
    box-shadow: 0 6px 12px rgba(0,0,0,0.2); /* シャドウをより強調 */
    transform: scale(1.05); /* ホバー時に5%拡大 */
}

.news-archive-grid .news-item img {
    width: 180px;
    height: 110px;
    object-fit: contain;
    object-position: center;
    padding: 20px 10px 10px 40px;
}

.news-archive-grid .news-item-content {
    flex: 1;
    display: flex;
    flex-direction: row;
    align-items: center;
    padding: 15px;
    margin-left: -10px;
}

.news-archive-grid .news-item-content h3 {
    flex: 1;
    margin: 0;
    font-size: 18px;
    text-align: center;
    margin-right: 5px;
}

.news-archive-grid .news-item-content p {
    margin: 0;
    color: #666;
    font-size: 14px;
    white-space: nowrap;
    margin-left: 60px;
}

.news-archive-page .news-grid {
    display: flex;
    flex-direction: column;
    gap: 10px; /* 項目間の縦の間隔 */
    max-width: 1200px; /* ニュース一覧の最大幅 */
    margin: 0 auto;
    padding: 20px;
}

.news-archive-page .news-item {
    display: flex;
    background-color: #ffffff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    width: 100%; /* 横幅を100%に設定 */
    height: 200px; /* 縦幅を200pxに設定（必要に応じて調整） *
}

.news-archive-page .news-item img {
    width: 200px; /* サムネイル画像の幅 */
    height: 100%; /* 親要素の高さに合わせる */
    object-fit: cover;
}

.news-archive-page .news-item-content {
    flex: 1;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.news-archive-page .news-item-content h3 {
    margin: 0 0 10px 0;
    font-size: 18px;
}

.news-archive-page .news-item-content p {
    margin: 0 0 10px 0;
    color: #666;
}

.contact {
    position: relative;
    padding: 10px 0 30px;
    background-color: #f5f5f5;
    clip-path: polygon(0 0, 50% 57%, 100% 0, 100% 100%, 0 100%);
    padding-top: calc(180px + 22vw); /* 上部の余白をさらに増やす */
    z-index: 3;
    margin-top: -20px;  /* 上に移動させる */
    padding-top: 120px;  /* 上部のパディングを増やす */
    padding-bottom: 60px;  /* 下部のパディングを減らす */
}

.contact::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #f5f5f5;
    z-index: -1;
    clip-path: inherit;
}

.contact-container {
    display: flex;
    justify-content: flex-start; /* 左寄せに変更 */
    align-items: flex-start;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    position: relative;
    z-index: 1;
    padding-right: 250px;
}

.contact-logo {
    position: static; /* 絶対位置指定を解除 */
    flex-shrink: 0;
    margin-right: 40px; /* ロゴと会社情報の間隔を調整 */
    left: 0;
    top: 15px;
    margin-top: 40px;
}

.contact-logo img {
    width: 150px;
    height: auto;
}

.contact-content {
    flex: 1; /* フレックスグロー設定 */
    padding: 10px 0;
    text-align: left; /* 左寄せに変更 */
}

.company-info {
    font-size: 14px;
    line-height: 1.3;
    display: table;
    margin: 0; /* 中央寄せを解除 */
    margin-top: 50px; /* 上部マージンを解除 */
}

.contact-title {
    position: absolute;
    font-size: 22px;
    font-weight: bold;
    color: #333;
    letter-spacing: 0.1em;
    top: 43%; /* 上から40%の位置に変更 */
    right: 300px; /* 右端からの距離を指定 */
    transform: translateY(-50%); /* 自身の高さの半分だけ上に移動 */
    text-align: center; /* テキストを中央揃えに */
    margin-top: 30px;
    bottom: -40px;
}

.contact-title span {
    display: block; /* CONTACTテキストを独立した行に */
    margin-bottom: 15px; /* ボタンとの間隔 */
}

.contact-button {
    display: inline-block;
    padding: 10px 20px;
    background-color: #000; /* 黒色の背景を維持 */
    color: #fff; /* 白色のテキストを維持 */
    text-decoration: none;
    border-radius: 5px;
    font-size: 14px;
    transition: all 0.3s ease; /* transitionを全体に適用 */
    margin-top: 10px;
    position: relative;
    overflow: visible;
    z-index: 1;
}

/* 紺色の背景効果用の疑似要素 */
.contact-button::before {
    content: '';
    position: absolute;
    top: 0;           /* 変更: 50%から0に */
    left: 0;          /* 変更: 50%から0に */
    width: 100%;      /* 変更: 0から100%に */
    height: 100%;     /* 変更: 0から100%に */
    background-color: #09163a;
    border-radius: 5px;
    transform: scale(0); /* 変更: translateからscaleに */
    transition: transform 0.4s ease;
    z-index: -1;
    opacity: 0;
}

/* ホバー時のスタイル */
.contact-button:hover {
    background-color: transparent;
    color: #968242;
}

/* ホバー時の背景アニメーション */
.contact-button:hover::before {
    transform: scale(1); /* 変更: scaleで拡大 */
    opacity: 1;
}

.footer-links {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: 22px; /* コンタクトボタンとの間隔を調整 */
}

.footer-link {
    margin: 1px 0; /* リンク間の間隔を調整 */
    font-size: 12px; /* フォントサイズを調整 */
    color: #333; /* リンクの色を調整 */
    text-decoration: none; /* 下線を削除 */
	transition: color 0.3s ease;  /* 色の変化をスムーズに */
}

.footer-link:hover {
    color: #968242;  /* 黄色に変更 */
    text-decoration: none;  /* 下線を削除 */
}

.tokushoho-link {
    display: block;
    margin-top: 15px;
    font-size: 12px;
    color: #333;
    text-decoration: underline;
    transition: color 0.3s ease;
    display: inline-block;
}

.tokushoho-link:hover {
    color: #1a3a8f;
}

.tokushoho-wrapper {
    margin-top: 15px; /* この値を調整して、希望の位置に配置します */
}

.company-info p {
    display: table-row;
    margin: 0;
    font-size: 1em;
}

.company-info strong {
    display: table-cell; /* 項目名をテーブルのセルとして扱う */
    text-align: right; /* 右揃え */
    padding-right: 50px; /* 項目名と内容の間隔 */
    white-space: nowrap; /* 項目名が折り返されないようにする */
}

.company-info span {
    display: table-cell; /* 内容をテーブルのセルとして扱う */
    text-align: left;
}



/* お問い合わせボタン、プライバシーポリシー、特商法のリンクに共通のスタイル */
.contact-button,
.footer-links a[href*="privacy-policy"],
.footer-link {
    position: relative;
    overflow: visible;
}

.contact-button::after,
.footer-links a[href*="privacy-policy"]::after,
.footer-link::after {
    content: '';
    position: absolute;
    top: 30%;
    left: 50%;
    width: 5px;
    height: 5px;
    background-color: transparent;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: 0;
    pointer-events: none;
    z-index: 1000000000000000000000000000000000000;
}

.contact-button:hover::after,
.footer-links a[href*="privacy-policy"]:hover::after,
.footer-link:hover::after {
    animation: particleBurst 0.5s ease-out forwards;
}



.animated-background {
    position: absolute;
    top: 330vh !important; /* ビューポートの高さの40%から開始 */
    left: 0;
    width: 100%;
    height: 620vh; /* ビューポートの高さの60%に設定 */
    background-color: white;
    z-index: -222;
    overflow: hidden;
    perspective: 1000px;
}

.fade-out-on-scroll {
    transition: opacity 0.3s ease-out;
}

.background-transition {
    background-color: #f5f5f5;
    transition: background-color 0.3s ease-out;
}

.background-transition.white-background {
    background-color: white;
}

.scrollable-content {
    position: relative;
    z-index: 3;
    padding-top: 65vh;
}

.js-dynamic-height {
    height: auto;
}

.cube {
    position: absolute;
    transform-style: preserve-3d;
}

.cube-wrapper {
    position: absolute;
    transform-style: preserve-3d;
}

.cube-face {
    position: absolute;
    border: 2px solid;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: bold;
}

/* コンテナの最大幅を設定 */
.container {
    max-width: 1200px;
    width: 90%;
    margin: 0 auto;
}

/* フレックスボックスを使用してレイアウトを調整 */
.flex-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}

.about-title span, .services-title span, .news-title span {
    display: inline-block;
    transition: transform 0.3s ease;
}

.about-title span:hover, .services-title span:hover, .news-title span:hover {
    transform: translateY(-10px);
}

@keyframes rotate {
    0% { transform: rotateX(0) rotateY(0) rotateZ(0); }
    100% { transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg); }
}

@keyframes float {
    0%, 100% { transform: translate3d(0, 0, 0); }
    25% { transform: translate3d(50px, -50px, 100px); }
    50% { transform: translate3d(-50px, 50px, -100px); }
    75% { transform: translate3d(50px, 50px, 50px); }
}

@media (max-width: 768px) {
    header {
        position: fixed; /* staticからfixedに変更 */
        top: 0;
        left: 0;
        width: 100%;
        height: 60px; /* 固定の高さを設定 */
        padding: 0; /* パディングを調整 */
        z-index: 1000;
        background-color: #f5f5f5;
    }

    body {
        padding-top: 80px; /* ヘッダーの高さ分のパディングを追加 */
    }
	
	/* ロゴのスタイルを調整 */
    .logo {
        margin-right: 0;
    }
	
	/* ロゴのサイズ調整 */
    .logo-image {
        height: 90px; /* モバイル用にロゴサイズを調整 */
    }
	
	/* ナビゲーションの調整 */
    .header-nav {
        margin-right: 10px;
    }

    .header-nav a {
        font-size: 16px; /* フォントサイズを調整 */
    }
	
	/* 通常のナビゲーションを非表示 */
    .header-nav ul {
        display: none;
    }

    /* ハンバーガーメニューボタンのスタイル */
    .menu-toggle {
        display: block;
        position: fixed;
        right: 20px;
        top: 16px;
        width: 30px;
        height: 24px;
        cursor: pointer;
        z-index: 10000;
    }

    /* ハンバーガーメニューの線 */
    .menu-toggle span {
        display: block;
        position: absolute;
        width: 100%;
        height: 2px;
        background-color: #09163a;
        transition: all 0.4s ease;
    }

    .menu-toggle span:nth-child(1) { top: 0; }
    .menu-toggle span:nth-child(2) { top: 11px; }
    .menu-toggle span:nth-child(3) { bottom: 0; }
	
	/* メニューオープン時のハンバーガーボタン */
    .menu-toggle.active span {
        background-color: #ffffff; /* 白色に変更 */
        z-index: 1002; /* z-indexを上げる */
    }

    .menu-toggle.active span:nth-child(1) {
        transform: translateY(11px) rotate(-45deg);
    }
    .menu-toggle.active span:nth-child(2) {
        opacity: 0;
    }
    .menu-toggle.active span:nth-child(3) {
        transform: translateY(-11px) rotate(45deg);
    }

    /* モバイルメニュー */
    .mobile-nav {
		position: fixed;
		top: 0;
		right: -100%;
		width: 100%;
		height: 100vh;
		background-color: #09163a; /* 立方体と同じ紺色 */
		transition: all 0.5s cubic-bezier(0.8, 0, 0.2, 1);
		z-index: 9999;
		display: flex;
		justify-content: center;
		align-items: center;
		overflow-y: hidden;
		transform: translateZ(0); /* ハードウェアアクセラレーションを有効化 */
		backface-visibility: hidden; /* レンダリングの問題を防ぐ */
		will-change: transform; /* ブラウザに変更を事前に通知 */
	}
	
	.mobile-nav a {
		display: block;
		padding: 20px;
		color: #968242; /* 立方体と同じ金色 */
		font-size: 24px;
		text-decoration: none;
		transition: color 0.3s ease;
	}
	
	/* ホバー時の色も同じ金色を維持 */
	.mobile-nav a:hover {
		color: #968242;
	}

    .mobile-nav.active {
        right: 0;
    }

    .mobile-nav ul {
        list-style: none;
        padding: 0;
        margin: 0;
        text-align: center;
    }

    .mobile-nav li {
        opacity: 0;
        transform: translateX(50px);
        transition: all 0.5s ease;
    }

    .mobile-nav.active li {
        opacity: 1;
        transform: translateX(0);
    }

    /* 各メニュー項目の遅延アニメーション */
    .mobile-nav li:nth-child(1) { transition-delay: 0.2s; }
    .mobile-nav li:nth-child(2) { transition-delay: 0.3s; }
    .mobile-nav li:nth-child(3) { transition-delay: 0.4s; }
    .mobile-nav li:nth-child(4) { transition-delay: 0.5s; }
    .mobile-nav li:nth-child(5) { transition-delay: 0.6s; }
	
	/* 各セクションの clip-path を保持するための追加設定 */
	.about, .vision, .news, .contact {
		transform: translateZ(0);
		backface-visibility: hidden;
		will-change: clip-path;
		-webkit-transform: translateZ(0); /* Safari対応 */
		-webkit-backface-visibility: hidden;
	}

    /* スクロール時のヘッダーアニメーションがある場合、それも無効化 */
    .header-scrolled {
        position: static !important;
        /* その他の必要なスタイル調整 */
    }

    .hero {
        margin-bottom: 120px; /* この値を増やして下の余白を増やす */
    }

    .hero-content h1 {
        font-size: 28px; /* モバイル用に少し小さくする */
    }

    .hero-content p {
        font-size: 18px; /* モバイル用に少し小さくする */
    }
	
	.hero-content h2, .hero-content h3 {
        font-size: 30px; /* デスクトップの80pxから40pxに変更 */
        margin-right: 0; /* 右マージンを削除 */
        margin-left: 0; /* 左マージンも削除 */
        white-space: nowrap; /* 改行を防ぐ */
        padding-left: 10px; /* 左側に余白を追加 */
        display: block; /* モバイルでも3行表示 */
        text-align: left; /* 左寄せを維持 */
    }

    .hero-content {
        padding-left: 75px; /* モバイルでは左余白を75pxに調整（デスクトップの半分） */
    }

    .hero-content h2 {
        margin-top: 100px; /* 上部マージンを調整 */
    }

    .hero-content h3 {
        margin-top: -5px; /* h2とh3の間隔を調整 */
    }

    .hero-content h3.hero-line-2 {
        animation: slideInFromLeft 1.2s ease-out 0.8s forwards; /* 2行目: 0.8秒遅延 */
    }

    .hero-content h3.hero-line-3 {
        animation: slideInFromLeft 1.2s ease-out 1.6s forwards; /* 3行目: 1.6秒遅延 */
    }

    .comma {
        margin-right: -0.3em; /* モバイルでの句読点の位置を調整 */
    }

    .logo-animation {
        transform: translateY(30px);
        width: 80%;
        left: 10%;
    }

    .logo-part {
        width: 33%;
    }

    /* より詳細な指定で上書き */
    .hero .logo-animation .logo-part.active {
        top: calc(50% - 50px) !important; /* !importantを追加して確実に上書き */
        transform: translate(-50%, -50%) rotate(0deg) scale(1.2);
    }
	
	.scroll-text {
        top: calc(50% + 343px); /* モバイルでの位置調整 */
        font-size: 14px;
    }

    .about {
        margin-bottom: 0; /* この値を調整して、ABOUTとSERVICESの間隔を調整 */
        margin-top: 250px; /* この値を調整して上に移動 */
        padding-top: 310px;
        clip-path: polygon(0 0, 50% 10%, 100% 0, 100% 97%, 50% 100%, 0 97%);
    }

    .about-title {
        text-align: left;
        padding-left: 145px; /* 左側の余白を追加 */
        padding-right: -50px; /* 右側の余白を削除 */
        margin-bottom: 30px; /* この値を小さくして間隔を狭める */
        margin-top: 100px;
    }
	

    .about-content {
        flex-direction: column;
        margin-top: 2rem;
    }

    .about-image {
        margin-right: 0;
        margin-bottom: 10px;
    }

    .about-text {
        font-size: 10px;
    }

    .about h1 {
        font-size: 1.9em;
        padding-top: 150px;
    }

    .about h2 {
        font-size: 1.1em;
        padding-top: 0;
    }
	
	.about p {
        font-size: 1.9em;
    }
	
	/* モバイルでのみ改行を表示 */
    .sp-only {
        display: block;
    }
	
	/* data-delay="4"の段落の上マージンを0に */
    .about-paragraph p[data-delay="4"] {
        margin-top: -10px;
    }

    .about .quote {
        font-size: 1em;
    }

    .about-paragraph {
        margin-bottom: 20px;
    }
	
	.about-paragraph strong {
        font-size: 14px; /* 23pxから14pxに変更 */
    }

    /* モバイル表示の調整 */
@media (max-width: 768px) {
    .clients-section {
        margin-top: -250px; /* 上に移動させるために負の値を設定 */
        padding-top: 250px; /* 上部のパディングも調整 */
        padding-bottom: 150px; /* 下部の余白を減らす */
        margin-bottom: 70px; /* SERVICESセクションとの距離を増やす */
        clip-path: polygon(0 0, 50% 10%, 100% 0, 100% 90%, 50% 100%, 0 90%);
    }

    .client-logo {
        width: 110px !important; /* 120pxから110pxに減らす */
        height: 50px; /* 80pxから50pxに減らす */
        margin: 0 6px; /* マージンも少し減らす */
        min-width: auto !important; /* min-widthを解除して確実に幅を小さくする */
    }
    
    .client-logo img {
        max-width: 110px;
        max-height: 50px;
    }
    
    /* モバイル用のスタイル調整 */
    .clients-slider-container {
        overflow: hidden;
    }
    
    .clients-slider {
        position: relative;
    }
}

    .vision {
        padding-top: calc(138px + 5vw);
        margin-top: -10px; /* -280pxから-150pxに変更してセクションを下に移動 */
        clip-path: polygon(0 0, 50% 5%, 100% 0, 100% 95%, 50% 100%, 0 95%); /* 下部のV字角度を1%鈍角に */
        margin-bottom: -230px;
    }

    .vision h1 {
        font-size: 30px;
        text-align: left;
        padding-left: 110px;
        padding-right: 0;
    }
    
    .vision-indent {
        padding-left: 1em;
    }
    
    .vision p {
        font-size: 8px;
    }

    .small-font-mobile {
        font-size: 0.8em !important; /* この値を調整してフォントサイズを変更 */
    }

    .vision-item {
        flex-direction: column;
        align-items: center; /* centerからflex-startに変更 */
        text-align: left; /* centerからleftに変更 */
        margin-bottom: 30px;
    }

    .vision-logo {
        margin-right: 0;
        margin-bottom: -90px;
    }

    .vision-logo img {
        max-width: 140px;
        height: auto;
        align-items: center;
        padding-right: 10px;
    }

    .vision-content {
        width: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .vision-title {
        width: 100%;
        margin-bottom: -160px;
    }

    .vision-title h3 {
        margin-bottom: 10px;
        text-align: center;
    }

    .vision-description {
        width: 100%;
    }

    .vision-description p {
        font-size: 14px;
        line-height: 1.4;
        margin-bottom: 0;
    }

    .vision-description br {
        display: none; /* モバイル表示時に<br>タグを非表示にする */
    }

    .vision-description p {
        white-space: normal; /* テキストを自動的に折り返す */
        text-align: left;
    }

    .parallax {
        background-attachment: scroll;
    }

    .animated-background {
        position: absolute;
        top: 302vh !important; /* ビューポートの高さの40%から開始 */
        left: 0;
        width: 100%;
        height: 900vh; /* ビューポートの高さの60%に設定 */
        background-color: white;
        z-index: -20;
        overflow: hidden;
        perspective: 1000px;
    }


    .animated-background, .hero-background {
        will-change: transform;
    }
    
    .cube-wrapper {
        will-change: transform, opacity;
    }

    .cube-wrapper.hidden {
        opacity: 0;
    }

    @keyframes simpleFade {
        0%, 100% { opacity: 0.3; }
        50% { opacity: 0.7; }
    }

    .news {
        padding-top: calc(130px + 5vw); /* 上部のパディングを増やす */
        margin-top: 85px; /* 上のマージンを追加 */
        clip-path: polygon(0 0, 50% 5%, 100% 0, 100% 95%, 50% 100%, 0 95%); /* クリップパスを調整 */
        margin-bottom: 150px;
    }

    .news-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }
    
    .news h1 {
        font-size: 30px; /* モバイル表示時は少し小さくする */
    }

    .news-item {
        height: 170px;
        display: flex;
        flex-direction: column;
        margin-bottom: 15px; /* 項目間の間隔 */
		padding-bottom: 90px;
    }

    .news-item img {
        width: 100%; /* 横幅を100%に保つ */
        height: 100px; /* 縦のサイズを指定（この値は調整可能） */
        object-fit: cover; /* 画像のアスペクト比を保ちつつ、指定したサイズに合わせる */
        object-position: center; /* 画像を中央に配置 */
    }

    .news-item-content {
        padding: 1px; /* コンテンツの内側の余白を調整（必要に応じて） */
    }

    .news-item-content h3 {
        font-size: 14px; /* タイトルのフォントサイズを調整（必要に応じて） */
        margin-bottom: 2px; /* タイトルの下マージンを調整 */
		-webkit-line-clamp: 3;  /* モバイルでは3行に制限 */
		line-height: 1.4;
        max-height: 4.2em;  /* line-height × 行数 */
    }

    .news-item-content p {
        font-size: 11px; /* 日付のフォントサイズを調整（必要に応じて） */
        margin-bottom: 5px; /* 日付の下マージンを調整 */
    }

    .news-item:last-child {
        margin-bottom: 0;
    }

    .more-link {
        position: static;
        text-align: center;
        margin-top: 20px;
    }

    .more-link a {
        font-size: 16px; /* モバイル表示時は少し小さくする */
    }

    .contact {
        position: relative;
        padding: 10px 0 30px;
        background-color: #f5f5f5;
        clip-path: polygon(0 0, 50% 9%, 100% 0, 100% 100%, 0 100%);
        padding-top: calc(50px + 15vw); /* 上部の余白をさらに増やす */
        z-index: 3;
        margin-top: -295px;  /* 上に移動させる */
        padding-bottom: 90px;
		margin-bottom : 0;
    }
    
    .contact-container {
        flex-direction: column;
        align-items: center; /* 子要素を中央揃えにする */
        display: flex;
        padding-right: 0;
    }

    .contact-logo {
        text-align: center; /* インライン要素の中央揃え */
        margin-bottom: 20px; /* ロゴの下に余白を追加 */
    }

    .contact-logo img {
        max-width: 100%; /* 画像が親要素からはみ出ないようにする */
        height: auto; /* アスペクト比を維持 */
        padding-right: 10px;
        padding-left: 30px; /* 左側に余白を追加（必要に応じて調整） */
    }

    .contact-logo,
    .contact-content {
        width: 100%;
        margin-bottom: 10px;
    }

    .contact-title {
        position: static; /* モバイル表示時は通常のフローに戻す */
        transform: none;
        text-align: center;
        margin-top: 70px;
    }

    .contact-title span {
        font-size: 27px; /* フォントサイズを大きくする */
        display: block;
        margin-bottom: 50px;
    }

    .company-info {
        font-size: 14px; /* モバイル用にフォントサイズを小さく */
        padding-left: 40px; /* 左側に余白を追加（必要に応じて調整） */
        margin-top: -20px; /* 上に移動させる（この値は調整可能） */
        margin-bottom: 50px; /* 会社情報の下の余白を増やす */
    }

    .company-info strong {
        width: 50px; /* モバイル用に項目名の幅を調整 */
    }

    .company-info .address-break {
        display: block;
		margin-top: -1.5px; /* 行間のスペースを調整 */
    }
    
    .company-info .address-break-mobile {
        display: block; /* モバイル画面では改行として表示 */
        margin-top: -1.5px; /* 行間のスペースを調整 */
    }

    .footer-link + .footer-link {
        margin-top: 35px; /* 2つ目のリンク（特商法取引に関する表記）の上の余白を増やす */
		font-size: 15px;
    }
	
	.footer-links {
        position: relative;
        bottom: 30px; /* この値を調整して希望の位置に合わせてください */
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 100%;
    }
	
	.footer-links a[href*="privacy-policy"] {
        font-size: 15px; /* プライバシーポリシーのリンクのみさらに大きくする */
    }

    .contact-button {
        font-size: 18px; /* フォントサイズを大きくする */
        padding: 15px 30px; /* パディングを増やしてボタンを大きくする */
        width: 80%; /* ボタンの幅を画面の80%に設定 */
        max-width: 300px; /* 最大幅を設定 */
        margin: 20px auto; /* 上下のマージンを追加し、左右を中央揃え */
        display: block; /* ブロック要素として表示 */
        text-align: center; /* テキストを中央揃え */
        margin-left: auto;
        margin-right: auto;
        transform: translateX(-10px); /* 左に20px移動 */
        margin-bottom: 60px; /* さらに余白を増やす */
    }

    .address-indent {
        padding-left: 50px; /* モバイル用にインデントを調整 */
    }

    .mobile-break {
        display: block;
    }

    .fixed-content {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100vh;
        z-index: 2;
        overflow: hidden;
        transition: opacity 0.3s ease-out;
    }

    .fixed-content.hide {
        opacity: 0;
        pointer-events: none;
    }

    .fixed-content .cube-wrapper {
        transition: opacity 0.3s ease-out;
    }

    .fixed-content.hide-bottom-cubes .cube-wrapper:nth-child(n+6) {
        opacity: 0;
    }
}

@media (max-width: 1024px) {
    .news-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 1200px) {
    .news-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
