*====================全般設定====================*/
/* ====================

CSSリセット

==================== */

*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {

    /* 主要な色を定義 */

    --main-color: #00A69D;

    --accent-color: #FF6F00;

    --text-color: #1D2B53;

    --background-color: #FAFAFA;

    --background-keycolor: #e3fffc;

}



body {
    font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', sans-serif;
    font-weight: 400;
    line-height: 1.6;
    color: var(--text-color);
    background-color: var(--background-color);
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}



a {
    text-decoration: none;
    color: inherit;
}


p {
    margin: 0;
    color: var(--text-color);
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

html,
body,
div,
span,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    vertical-align: baseline;
}

/* ====================

共通

==================== */

.section {
    flex-direction: column;
    padding: 150px 50px;
    gap: 50px;
}

.container {
    max-width: 1140px;
    margin: 0 auto;
}

.section__header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.section__title-and-icon {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding-bottom: 150px;
}

.section-title,
.section-title h2 {
    font-size: 96px;
    font-weight: 300;
    color: #00A69D;
    line-height: 1;
    display: inline-block;
    margin: 0;
}

.section__icon {
    width: 164px;
    height: 57px;
    background-image: url('/assets/images/kumo@4x.png');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center bottom;
}

.section-subtitle {
    font-size: 30px;
    font-weight: 400;
    line-height: 170%;
    letter-spacing: 0.05em;
    color: #1D2B53;
    margin: 0;
    padding-bottom: 30px;
}

.section-description {
    font-size: 20px;
    font-weight: 400;
}

/* すべてのボタンに共通のスタイル */
.btn {
    display: inline-block;
    padding: 20px 80px;
    border-radius: 50px;
    font-size: 18px;
    font-weight: 500;
    color: #FFFFFF;
    text-decoration: none;
    letter-spacing: 0.05em;
    white-space: nowrap;
    margin-top: 50px;
    transition: background-color 0.3s ease;
    /* ホバー時の変化を滑らかに */
}

/* オレンジ色のボタンのスタイルとホバーエフェクト */
.btn--orange {
    background-color: #FF6F00;
    /* 通常時はオレンジ色 */
    transition: background-color 0.3s ease;
    /* ホバーを滑らかに */
    z-index: 10;
}

.btn--orange:hover {
    background-color: #00A69D;
    /* ホバーすると緑色 */
}

/* 緑色のボタンのスタイルとホバーエフェクト */
.btn--green {
    background-color: #00A69D;
    /* 通常時は緑色 */
    transition: background-color 0.3s ease;
    /* ホバーを滑らかに */
}

.btn--green:hover {
    background-color: #FF6F00;
    /* ホバーするとオレンジ色 */
}

.fv__button {
    width: 100%;
    max-width: 1140px;
    display: flex;
    justify-content: flex-end;
}

margin-top: 50px;

.btn:hover {
    opacity: 0.8;
}

/* ====================
   Pages共通タイトル
==================== */

.pages.fv {
    height: 300px;
    background-position: center bottom;
    padding-top: 80px;
}

.pages.section-title {
    color: #FFFFFF;
    line-height: 120%;
    font-size: 36px;
}

.pages.fv {
    padding: 0;
    padding-top: 80px;
    display: flex;
}

.pages.fv__container {
    padding: 0px 50px;
    margin: 0 auto;
    width: 100%;
    justify-content: center;
    max-width: 1140px;
}

.about-page .concept__text {
    padding-bottom: 50px;
}

/* ====================

ヘッダー

==================== */

/* --- Header / Navigation (Desktop First) --- */
.header {
    /* PC表示ではヘッダーの幅を画面いっぱいに設定 */
    display: flex;
    justify-content: center;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
    background: rgba(29, 43, 83, 0.5);
}

/* PC用のナビゲーションコンテナ */
.global-header {
    display: flex;
    backdrop-filter: blur(15px);
    width: 100%;
    height: 80px;
    max-width: 1440px;
    margin: 0 20x;
}

.global-header__container {
    display: flex;
    align-items: center;
    max-width: 1440px;
    width: 100%;
    margin: 0 auto;
    justify-content: space-between;
    padding: 0 20px;
}

.menu-btn {
    display: none;
}

.logo img {
    width: 200px;
}

/*ナビゲーション*/
.global-nav__menu {
    /*ナビゲーション天地中央揃え*/
    z-index: 999;
    display: flex;
    margin: 0;
    padding: 0;
    gap: 30px;
    align-items: flex-start;
}

/*リストのレイアウト設定*/
.global-nav__menu li {
    list-style: none;
    text-align: center;
}

.global-nav__menu li a {
    color: #fff;
    text-decoration: none;
    padding: 10px;
    display: block;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: bold;
}

.global-nav__menu li a:hover {
    text-decoration: underline;
}

/* ====================

ファーストビュー (FV)

==================== */

.fv {
    background-color: #00A69D;
    background-image: url('/assets/images/top_bg_l01.png');
    background-size: cover;
    background-repeat: no-repeat;
    color: #FFFFFF;
    position: relative;
    padding: 80px 50px 50px 50px;
    max-height: 800px;
    /* fvセクションの背景画像に揺らぎ効果を適用 */
    animation: background-pan 10s infinite alternate;
}

/* アニメーションの定義 */
@keyframes background-pan {
    0% {
        background-position: 0% 0%;
    }

    100% {
        background-position: 0% 50%;
    }
}

/* アニメーション用の疑似要素を追加 */
.fv::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: transparent;
    animation: blur-pan 8s infinite alternate;
}

@keyframes blur-pan {
    0% {
        filter: blur(0px) brightness(1);
    }

    50% {
        filter: blur(2px) brightness(1.2);
    }

    100% {
        filter: blur(0px) brightness(1);
    }
}

.fv__container {
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    max-width: 1440px;
    margin: 0 auto;
    padding: 50px 0 0;
}

.fv__content {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    width: 100%;
    margin: 0 auto;
}

.fv__text-content {
    width: 615px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;

}

.fv__subcopy {
    font-weight: 400;
    font-size: 28px;
    line-height: 150%;
    color: #F2F2F7;
    text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
    padding-bottom: 30px;
    letter-spacing: 0.1em;
}

.fv__text {
    font-weight: 400;
    font-size: 20px;
    line-height: 150%;
    color: #F2F2F7;
    text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
}

.fv__lead {
    font-weight: 500;
    font-size: 40px;
    line-height: 250%;
    letter-spacing: 0.01em;
    text-shadow: 0px 2px 3px rgba(29, 43, 83, 0.5);
    padding-top: 150px;
}

/* fv__leadをふわっと表示させるアニメーション */
.fv__lead span {
    opacity: 0;

}

.fv__illustration {
    width: 70%;
}

.fv .btn--green {
    margin-top: 20px;
}

/* ====================

コンセプト

==================== */

.concept {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 30px 50px 100px;
    gap: 50px;
    background: #FAFAFA;
}

.concept__container {
    max-width: 1140px;
    margin: 0 auto;

    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.concept__container .section-title {
    font-size: 34px;
    font-weight: 500;
    line-height: 170%;
    color: #00A69D;
}


.concept__illustration {
    max-width: 250px;
}

/* ====================

3つの強み (Strength)

==================== */

.strength {
    background-color: var(--background-keycolor);
}

.strength__container {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    flex-direction: column;
}

.strength__cards {
    display: flex;
    justify-content: space-between;
    gap: 30px;
    padding-top: 20px;
}

.strength__card-outline {
    width: 350px;
    min-height: 350px;
    padding: 10px;
    /* 枠線の太さ */
    background: url('../assets/images/top_bg_s.png') no-repeat center center / cover;
    border-radius: 0 70px 70px 70px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

.strength__card {
    background-color: #FFFFFF;
    border-radius: 0 67px 67px 67px;
    padding: 20px;
    height: 350px;
    display: flex;
    flex-direction: column;
    gap: 50px;
}

.strength__card-title {

    font-size: 20px;

    font-weight: 500;

    line-height: 170%;

    letter-spacing: 0.05em;

    color: #1D2B53;

}

.strength__card-text {

    font-size: 16px;

    font-weight: 500;

    line-height: 200%;

    color: #000000;

}

/* ====================

Service セクション

==================== */

.service {
    background-color: #F2F2F7;
}

.service__header {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    margin: 0;
}

.service__description {
    font-size: 26px;
    /* h4と同じサイズ */
    margin: 0;
}

.service__steps {
    display: flex;
    flex-direction: column;
    gap: 150px;
}

.service__step {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    background-color: var(--background-color);
    padding: 100px;
}

.service__step-content-box {
    display: flex;
    justify-content: space-between;
    justify-content: space-evenly;
    width: 100%;
    align-items: flex-end;
    gap: 50px;
}

.service__step:nth-child(even) .service__step-content-box {

    flex-direction: row-reverse;

}

.service__step-text-box {
    display: flex;
    flex-direction: column;
    width: 586px;
    gap: 30px;
}

.service__step-number {
    font-weight: 400;
    font-size: 50px;
    line-height: 1;
    color: rgba(0, 166, 157, 0.8);
    padding-bottom: 50px;
}

.service__step-title {
    font-weight: 500;
    font-size: 24px;
    line-height: 1.7;
    color: #1D2B53;
    width: 90%;
}

.service__step-text {
    font-weight: 500;
    font-size: 16px;
    line-height: 2;
    color: #000000;
    width: 90%;
}

.service__step-image {

    width: 274px;

    height: 224px;

    border-radius: 10px;

}

.service.section-description {
    padding-bottom: 50px;
}

/*シンプルなテキストリンク（矢印が右へスライド）*/
.link-arrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    text-decoration: none;
    /* 下線を消す */
    color: var(--text-color);
    font-weight: 400;
    transition: color .15s ease;
    padding-top: 50px;
    font-size: 20px;
}

.link-arrow__icon {
    width: 1rem;
    height: 1rem;
    transition: transform .18s ease, opacity .18s;
    transform: translateX(0);
    opacity: 0.95;
}

/* ホバー・フォーカスで矢印が右へ */
.link-arrow:hover .link-arrow__icon,
.link-arrow:focus .link-arrow__icon {
    transform: translateX(6px);
}

/* キーボード用フォーカス可視化 */
.link-arrow:focus {
    outline: 3px solid rgba(0, 166, 157, 0.12);
    outline-offset: 4px;
    border-radius: 4px;
}

/* ====================

Works セクション

==================== */

/* Worksセクション全体のレイアウト */
.works {
    background-color: #F6FFFE;
}

.works__container {

    display: flex;

    flex-direction: column;

    align-items: center;

    gap: 150px;

    background-color: ;

}

/* Worksギャラリーのレイアウト */
.works__gallery {
    display: flex;
    /* カードを横並びにする */
    flex-wrap: wrap;
    /* 画面幅が狭いときに折り返す */
    gap: 50px;
    /* カード間の隙間 */


}

/* 作品カードのスタイル */
.works__card {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    gap: 8px;
    width: 284px;
    /* Figmaのデザインに合わせた固定幅 */
    height: auto;
    text-decoration: none;
    color: #000000;
}

/* カード内の画像のスタイル */

.works__card-image {
    width: 300px;
    height: 250px;
    background: #C7C7CC;
    object-fit: cover;
}

/* カード内のテキストのスタイル */

.works__card-text {
    width: 100%;
    height: 96px;
    font-size: 14px;
    line-height: 24px;
}



/* ====================

About セクション

==================== */

.about__description {
    font-size: 18px;
    /* 必要であれば他のスタイルも追加 */
}



/* Aboutセクションのコンテナ */

.about__container {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    /* 要素を水平方向の左端に配置 */
    gap: 30px;
    /* 必要に応じて調整 */
}

/* ====================

Cta セクション

==================== */

/* CTAセクション */

.cta.section {
    background: url('../assets/images/top_bg_l.png') no-repeat center center / cover;
    gap: 30px;
    /* Figmaデザインに合わせて調整 */
    align-items: center;
    /* CTAセクション全体を水平方向に中央揃え */
    padding: 100px 50px;
    /* Figmaデザインに合わせて調整 */
}

.cta__container {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.cta__title {
    color: var(--text-color);
    font-size: 36px;
    font-weight: 500;
    padding-bottom: 30px;
}

.cta__description {
    color: var(--text-color);
    font-size: 20px;
    font-weight: 700;
}



/* CTAセクションのボタン */

.btn--cta {
    margin-top: 0px;
}

/* ====================

Footerセクション

==================== */

.footer {
    background: #1D2B53;
    text-align: center;
}


.footer__container {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    /* 要素を水平方向の左端に配置 */
    padding: 100px 50px 50px 50px;
}

.footer__contents {
    display: flex;
    justify-content: flex-start;
    gap: 100px;
    align-items: flex-start;
    flex-wrap: nowrap;
}

.footer__logo img {
    height: 25px;
    /* ロゴの高さに合わせて調整 */

}

.footer__nav-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    gap: 40px;
    flex-direction: column;
    align-items: flex-start;
}

.footer__nav-list a {
    text-decoration: none;
    color: var(--main-color);
    font-weight: 700;
    font-size: 24px;
    display: block;
    text-align: left;
    line-height: 1;
}

.footer__copyright {
    font-size: 14px;
    color: var(--main-color);
    text-align: center;
    width: 100%;
    margin-top: auto;
    /* 他の要素から離すため */
    padding-top: 50px;
}

/* ====================
メディアクエリ
==================== */

/* タブレット（1024px以下）*/
@media screen and (max-width: 1024px) {
    .global-header {
        padding: 0 40px;
        justify-content: space-between;
        position: relative;
        margin: 0;
        /* モバイルでも背景を維持 */
    }

    .logo {
        position: absolute;
        top: 50%;
        left: 40px;
        transform: translateY(-50%);
    }

    .menu-btn {
        display: flex;
        position: fixed;
        z-index: 9999;
        top: 15px;
        right: 20px;
        cursor: pointer;
        width: 50px;
        height: 50px;
        background-color: transparent;
        border: none;
    }

    /*×に変化*/
    .menu-btn span {
        display: inline-block;
        transition: all .4s;
        position: absolute;
        left: 14px;
        height: 3px;
        border-radius: 2px;
        background-color: #fff;
        width: 45%;
    }

    .menu-btn span:nth-of-type(1) {
        top: 15px;
    }

    .menu-btn span:nth-of-type(2) {
        top: 23px;
    }

    .menu-btn span:nth-of-type(3) {
        top: 31px;
    }

    .menu-btn.active span:nth-of-type(1) {
        top: 18px;
        left: 18px;
        transform: translateY(6px) rotate(-45deg);
        width: 30%;
    }

    .menu-btn.active span:nth-of-type(2) {
        opacity: 0;
    }

    .menu-btn.active span:nth-of-type(3) {
        top: 30px;
        left: 18px;
        transform: translateY(-6px) rotate(45deg);
        width: 30%;
    }

    #global-nav {
        display: none;
    }

    .global-nav__menu {
        /*ナビゲーション天地中央揃え*/
        position: absolute;
        z-index: 999;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        flex-direction: column;
    }

    /*アクティブクラスがついたら位置を0に*/
    #global-nav.panelactive {
        position: fixed;
        top: 0;
        left: 0;
        display: flex;
        z-index: 999;
        width: 50%;
        height: 60vh;
        /*ナビの高さ*/
        background: #1D2B53;
        opacity: 0.8;
        /*動き*/
        transition: all 0.6s;
    }

    /* モバイル用のナビゲーションスタイル */
    #global-nav {
        position: fixed;
        top: 0;
        right: 0;
        width: 100%;
        height: 100vh;
        background-color: rgba(255, 255, 255, 0.95);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        transform: translateX(100%);
        transition: transform 0.3s ease;
        z-index: 999;
        display: none;
    }

    .fv {
        background-position: 0% 50%;
        height: auto;
    }

    .fv__container {
        justify-content: space-between;
        max-width: 900px;
    }

    .fv__lead {
        font-size: 36px;
        line-height: 1.7;
    }

    .fv__subcopy {
        font-size: 24px;
    }

    .fv__text {
        font-size: 16px;

    }

    .fv__illustration {
        width: 70%;
        height: auto;
    }

    .btn--orange {
        font-size: 12px;
        padding: 15px 50px;
    }

    .btn {
        font-size: 12px;
        padding: 10px 50px;
    }

    .concept {
        padding: 30px 50px 100px;
    }

    .section {
        padding: 150px 50px;
    }

    .concept__container .section-title {
        font-size: 24px;
    }

    .section__header.section-title {
        font-size: 72px;
    }

    .strength__cards {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
    }

    .strength__card-outline {
        height: 280px;
    }

    .strength__card {
        padding: 20px;
        height: 280px;
        min-height: 0;
    }

    .strength__card-title {
        font-size: 18px;
    }

    .strength__card-text {
        font-size: 14px;
        font-weight: 500;
    }

    .section-description {
        font-size: 20px;
    }

    .service__step-title {
        font-size: 20px;
    }

    .service__step-text {
        font-weight: 500;
        font-size: 14px;
    }

    .works__gallery {
        flex-direction: column;
    }

    .works__card {
        width: 200px;
    }

    .works__card-image {
        width: 100%;
        height: auto;
    }

    .works__card-text {
        width: auto;
    }

    .section.cta.section {
        padding: 50px 150px;
    }

    .cta__title {
        font-size: 24px;
    }

    .cta__description {
        font-size: 16px;
        padding-bottom: 30px;
    }

    .footer {
        flex-direction: column;
        align-items: center;
    }

    .footer__nav-list {
        gap: 10px;
    }

    .footer__social-links {
        margin-top: 40px;
    }

    .footer__copy {
        text-align: center;
        margin-top: 40px;
    }

}

/* スマートフォン（768px以下）*/
@media screen and (max-width: 768px) {
    .section {
        padding: 50px 20px;
    }

    .section-title,
    .section-title h2 {
        font-size: 48px;
    }

    .section-subtitle {
        font-size: 30px;
        padding-bottom: 20px;
    }

    .section__icon {
        width: 80px;
    }

    .section-description {
        font-size: 14px;
        font-weight: 500;
    }

    .global-nav__container {
        width: 355px;
        padding: 0;
    }

    .fv {
        background-image: url('/assets/images/top_bg_s.png');
        padding: 80px 20px 50px;
    }

    .fv__container {
        flex-direction: column;
        justify-content: center;
        height: auto;
        padding: 50px 0 0;
    }

    .fv__content {
        flex-direction: column;
        flex-wrap: wrap;
        display: flex;
        align-items: flex-start;
        height: auto;
    }

    .fv__text-content {
        width: 100%;
        gap: 0;
    }

    .fv__lead {
        font-size: 28px;
        padding-top: 30px;
    }

    .fv__subcopy {
        font-size: 18px;
        padding-bottom: 5px;
    }

    .fv__text {
        font-size: 14px;
    }

    .fv__illustration {
        width: 100%;

    }

    .fv__button {
        justify-content: flex-start;
        margin-top: -20px;
    }

    .concept__container .section-title {
        font-size: 20px;
    }

    .concept__illustration {
        width: 30%;
    }

    .section-subtitle {
        font-weight: 400;
        font-size: 20px;
    }

    .section__title-and-icon {
        padding-bottom: 50px;
        width: 100%;
    }

    .strength__card-text {
        font-size: 14px;
    }

    .service__step {
        padding: 20px;
    }

    .service__step-title {
        font-size: 18px;
    }

    .service__step-content-box {
        flex-direction: column;
    }

    .service__step-text-box {
        width: 100%;
        gap: 20px;
    }

    .service__step-number {
        display: block;
        font-size: 32px;
    }


    .service__step:nth-child(even) .service__step-content-box {
        flex-direction: column;
    }

    .works__gallery {
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-start;
        flex-direction: row;
        padding-bottom: 50px;
    }

    .works__card {
        width: 129px;
    }

    .strength__card-outline {
        min-height: 200px;
    }

    .strength__card {
        height: 200px;
    }

    .works__card-image {
        width: 129px;
        height: 152px;
    }

    .works__card-text {
        width: 120px;
    }

    .section.cta.section {
        padding: 20px;
    }

    .cta.section {
        background: url('../assets/images/top_bg_s.png') no-repeat center center / cover;
    }

    .footer {
        padding: 60px 20px;
    }

    .footer__container {
        padding: 0px;
    }

    .footer__contents {
        flex-direction: column;
        gap: 50px;
    }

    .footer__logo img {
        height: 15px;
    }

    .footer__nav-list a {
        font-size: 16px;
    }

    .pages.fv {
        height: 300px;
        padding: 0;
        padding-top: 80px;
        display: flex;
    }

    .pages.fv__container {
        justify-content: center;
        margin: 0;
    }

    .service__steps {
        gap: 50px;
    }
}

/* --- AOS 初期化 --- */
.aos-init {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.aos-animate {
    opacity: 1;
    transform: translateY(0);
}