/* スムーススクロールの設定（メニューを押したときに滑らかに移動します） */
html {
    scroll-behavior: smooth;
}

/* サイト全体の基本的な設定 */
body {
    font-family: sans-serif;
    /* 読みやすい一般的なフォントを指定 */
    background-color: #fcfbf8;
    /* 心安らぐアイボリー系の背景色 */
    color: #444444;
    /* 真っ黒より少し柔らかい文字色 */
    margin: 0;
    /* ページの外側の余白をなくす */
    padding: 0;
    /* ページの内側の余白をなくす */
    text-align: center;
    /* テキストをすべて中央揃えにする */
}

/* ヘッダーのスタイル */
header {
    background-color: #d8e2d2;
    /* 優しい淡いグリーンの背景 */
}

/* ヘッダーの上部（ロゴとInstagram） */
.header-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 40px 0px;
}

/* ヘッダーの下部（メニュー） */
.header-bottom {
    display: flex;
    justify-content: flex-end;
    /* メニューを右寄せにする */
    padding: 0 40px 15px;
}

/* Instagramのリンク */
.instagram-link {
    display: flex;
    align-items: center;
    text-decoration: none;
    color: #4a5d3f;
    font-size: 14px;
    font-weight: bold;
    transition: opacity 0.3s ease;
}

.instagram-link:hover {
    opacity: 0.7;
}

.sns-icon-top {
    width: 20px;
    height: 20px;
    margin-left: 6px;
    color: #4a5d3f;
}

/* ヘッダー内のH1見出しとロゴ画像 */
header h1 {
    margin: 0;
    /* 最初からある不要な余白を消す */
    line-height: 0;
    /* 画像の下にできる不要な隙間をなくす */
}

.header-logo {
    height: 55px;
    /* ヘッダーにきれいにおさまる高さ（少し控えめ）に指定 */
    width: auto;
    /* 高さに合わせて横幅は自動で調整 */
}

/* ナビゲーションメニューのスタイル */
nav ul {
    list-style: none;
    /* リストの「・」のマークを消す */
    margin: 0;
    /* 余白をなくす */
    padding: 0;
    /* 余白をなくす */
    display: flex;
    /* メニュー項目を横に並べる */
}

nav li {
    margin: 0 0 0 30px;
    /* 左側のみに間隔をあける */
}

nav a {
    text-decoration: none;
    /* リンクの下線を消す */
    color: #4a5d3f;
    /* ヘッダーに馴染む色にする */
    font-weight: bold;
    /* 文字を少し太くする */
    transition: color 0.3s ease;
    /* ホバー時に色がフワッと変わるアニメーション */
}

/* ナビゲーションリンクにマウスを乗せた時（ホバー）のスタイル */
nav a:hover {
    color: #a7baab;
    /* 少し明るい優しい緑色に変わる */
}

/* メインコンテンツ全体のスタイル */
main {
    padding: 0;
    /* セクションごとに余白をとるため、全体の余白はゼロに */
}

/* === トップページ（ヒーローセクション）のスタイル === */
#hero {
    padding: 0;
    /* 余白をなくして画面いっぱいにする */
    position: relative;
    width: 100%;
    height: 600px;
    /* スライダーの高さを指定（パソコン向け） */
    overflow: hidden;
}

/* スライダーの画像を重ねる枠 */
.slider-container {
    width: 100%;
    height: 100%;
    position: relative;
}

/* 1枚1枚のスライド画像 */
.slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    /* 枠に合わせて画像を拡大・縮小 */
    background-position: center;
    /* 画像の中心を表示 */
    opacity: 0;
    /* 最初は透明にしておく */
    transition: opacity 1.5s ease-in-out;
    /* 1.5秒かけてフワッと切り替わるアニメーション */
}

/* 「active」というクラスがついた画像だけを表示する */
.slide.active {
    opacity: 1;
    /* 透明度をなくして表示 */
}

/* 画像の上に重なる文字のスタイル */
.hero-text-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    /* 画面のど真ん中に配置する呪文 */
    color: #ffffff;
    text-align: center;
    z-index: 10;
    /* 画像よりも手前に表示する */
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
    /* 文字が読みやすいように影をつける */
    width: 90%;
}

.hero-text-overlay h2 {
    font-size: 42px;
    margin-bottom: 20px;
    letter-spacing: 0.1em;
    color: #ffffff !important;
    /* 他のH2の設定を上書きして白にする */
}

.hero-text-overlay p {
    font-size: 18px;
    line-height: 2 !important;
    text-shadow: 0 1px 5px rgba(0, 0, 0, 0.8);
    color: #ffffff !important;
}

/* 各セクション共通のスタイル */
section {
    padding: 60px 20px;
    /* 各セクションの上下に広い余白、左右に少し余白をとる */
}

/* セクションごとに背景色を変えてメリハリをつける */
#about {
    background-color: #fcfbf8;
}

#menu {
    background-color: #f4f7f2;
    /* 薄い緑色の背景 */
}

#access {
    background-color: #fcfbf8;
}

#contact {
    background-color: #f4f7f2;
}

/* 見出し（H2）のスタイル */
section h2 {
    color: #4a5d3f;
    /* 見出しの色（ヘッダーと合わせる） */
    margin-bottom: 30px;
    font-size: 24px;
}

/* 左寄せのセクションタイトル */
.section-title-left {
    text-align: left;
    margin-bottom: 30px;
    font-size: 24px;
    color: #4a5d3f;
    padding-bottom: 10px;
}

/* 段落（p）のスタイル */
section p {
    line-height: 1.8;
    /* 文章の行間を広げて読みやすくする */
    margin-bottom: 30px;
    /* 段落の下にスペースをとる */
}

/* === About（事業内容）セクションの専用レイアウト === */
.about-container {
    display: block;
    /* 縦に並べるためにflexからblockに変更 */
    max-width: 1000px;
    margin: 0 auto;
    text-align: left;
    /* 中のテキストは左揃えを基本とする */
    padding-bottom: 40px;
}

/* テキストと画像のエリアを含む枠 */
.about-content {
    display: flex;
    width: 100%;
    border-top: 1px solid #cbd5e1;
    /* 上部に細い線を引く */
    padding-top: 40px;
    position: relative;
}

/* 左側のテキストエリア */
.about-text-area {
    flex: 1;
    /* 画像と同じ比率で幅を取る */
    padding-right: 40px;
}

.about-title {
    font-size: 22px !important;
    /* H2の標準サイズを上書き */
    color: #2c3b4e !important;
    margin-bottom: 10px !important;
    line-height: 1.5;
}

/* 見出し内の大きな文字部分 */
.about-title span {
    font-size: 32px;
}

/* 英語のサブタイトル */
.about-subtitle {
    font-size: 14px;
    color: #7f8c8d;
    font-family: serif;
    /* セリフ体（明朝体風）にする */
    margin-bottom: 40px !important;
    letter-spacing: 0.05em;
}

.about-text-area p {
    font-size: 15px;
    color: #444444;
    line-height: 2 !important;
    margin-bottom: 20px !important;
}

/* 右側の画像エリア */
.about-image-area {
    flex: 1;
    /* テキストと同じ比率で幅を取る */
    position: relative;
    border-radius: 4px;
    overflow: hidden;
    min-height: 300px;
}

.about-image-area img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* 画像が歪まないように枠に合わせる */
}

/* 画像の上に重なる英語テキスト */
.bg-text {
    position: absolute;
    top: 20px;
    left: 20px;
    font-family: serif;
    color: rgba(255, 255, 255, 0.85);
    /* 少し透けた白色 */
    font-size: 16px;
    letter-spacing: 0.1em;
    z-index: 10;
}

/* スマホなど画面が狭い場合への対応 */
@media (max-width: 768px) {
    .header-top {
        padding: 15px 20px 5px;
    }

    .header-bottom {
        padding: 0 20px 15px;
        justify-content: center;
        /* メニューを中央にする */
    }

    nav ul {
        flex-wrap: wrap;
        /* メニューがはみ出る場合は折り返す */
        justify-content: center;
    }

    nav li {
        margin: 5px 15px;
        /* メニューの間隔を狭める */
    }

    #hero {
        height: 400px;
        /* スマホではスライダーの高さを少し低くする */
    }

    .hero-text-overlay h2 {
        font-size: 28px;
    }

    .hero-text-overlay p {
        font-size: 15px;
    }

    .about-container {
        flex-direction: column;
        /* 縦並びにする */
    }

    .about-content {
        flex-direction: column;
        /* テキストと画像も縦並びに */
    }

    .about-text-area {
        padding-right: 0;
        margin-bottom: 30px;
    }
}

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

/* ボタンとメッセージを囲うエリアのスタイル */
.message-area {
    background-color: #ffffff;
    /* 白色の背景 */
    border-radius: 10px;
    /* 枠の四隅の角を丸くする */
    padding: 30px;
    /* 内側に余裕のある余白をとる */
    max-width: 500px;
    /* 横幅が広くなりすぎないように制限 */
    margin: 0 auto;
    /* 要素を画面の左右「中央」に配置する */
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    /* ふんわりとした薄い影をつける */
}

/* 動的に変わるテキストのスタイル */
#dynamic-text {
    font-size: 18px;
    /* 文字を少し大きくする */
    font-weight: bold;
    /* 文字を太字にする */
    color: #b07c6f;
    /* 温かみのあるテラコッタ色（赤茶系） */
    margin-bottom: 25px;
}

/* ボタンのスタイル */
button {
    background-color: #a7baab;
    /* 優しい緑色のボタン */
    color: #ffffff;
    /* ボタンの文字は白 */
    border: none;
    /* ボタンの枠線を消す */
    padding: 12px 25px;
    /* ボタンの内側に余白を作る（縦 横） */
    font-size: 16px;
    /* 文字の大きさ */
    border-radius: 5px;
    /* ボタンの角を丸くする */
    cursor: pointer;
    /* マウスを乗せた時に「指マーク」にする */
}

/* フッターのスタイル */
footer {
    background-color: #2c3e24;
    /* 深緑よりさらに暗い、落ち着いた色 */
    color: #ffffff;
    text-align: center;
    padding: 30px 0;
    font-size: 14px;
}

/* フッター内のSNSアイコン */
.footer-sns {
    margin-bottom: 15px;
    display: flex;
    justify-content: center;
}

.footer-instagram-link {
    display: flex;
    align-items: center;
    text-decoration: none;
    color: #ffffff;
    font-size: 14px;
    font-weight: bold;
    transition: opacity 0.3s ease;
}

.footer-instagram-link:hover {
    opacity: 0.7;
}

.sns-icon-footer {
    width: 24px;
    height: 24px;
    margin-left: 8px;
    /* アイコンとテキストの隙間 */
    color: #ffffff;
    /* フッターの文字色に合わせる（SVGならfill:currentColorで白になる） */
}

/* 新しいサービスレイアウト（交互・ジグザグ）のスタイル */
.services-list {
    max-width: 1000px;
    /* 全体の横幅を制限して見やすくする */
    margin: 50px auto 0;
}

/* 1つ1つのサービスの枠組み */
.service-item {
    display: flex;
    /* 横に並べる */
    align-items: center;
    /* 縦方向の中心をそろえる */
    justify-content: space-between;
    gap: 50px;
    /* 画像と文字の間の隙間 */
    padding: 20px 0;
}

/* 2段目のように「左に画像、右に文字」にするための設定（reverse） */
.service-item.reverse {
    flex-direction: row-reverse;
    /* 並び順を逆にする */
}

/* 文字エリアのスタイル */
.service-text {
    flex: 1;
    /* 画像と同じ比率で幅をとる */
    text-align: left;
    /* 文字を左揃えにする */
}

.service-number {
    display: inline-block;
    color: #a7baab;
    /* 淡い緑のアクセントカラー */
    font-size: 14px;
    font-weight: bold;
    letter-spacing: 0.1em;
    margin-bottom: 5px;
}

.service-text h3 {
    color: #4a5d3f;
    font-size: 26px;
    margin-bottom: 20px;
    line-height: 1.4;
}

/* サービスタイトルの下のリード文（キャッチコピー） */
.service-lead {
    color: #4a5d3f;
    /* 見出しと同じ落ち着いた緑色 */
    font-size: 16px;
    font-weight: bold;
    line-height: 1.6;
    margin-bottom: 20px !important;
    position: relative;
    padding-bottom: 15px;
}

/* リード文の下におしゃれな短い線を引く */
.service-lead::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 40px;
    height: 2px;
    background-color: #a7baab;
    /* 少し明るい緑色でアクセント */
}

/* サービスの詳細説明文 */
.service-desc {
    color: #666666;
    font-size: 15px;
    line-height: 2 !important;
    /* 行間をさらに広げてエレガントに */
    letter-spacing: 0.03em;
    /* 文字と文字の間を少し開ける */
    margin-bottom: 0 !important;
}

/* 画像エリアのスタイル */
.service-image {
    flex: 1;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08);
    /* おしゃれな少し強めの影を落とす */
}

.service-image img {
    width: 100%;
    height: 300px;
    /* 画像の高さを統一 */
    object-fit: cover;
    /* 画像が歪まないように調整 */
    transition: transform 0.5s ease;
    /* ホバー時のアニメーション設定 */
}

/* 画像にホバーした時に少しズームするおしゃれな動き */
.service-item:hover .service-image img {
    transform: scale(1.05);
    /* 5%拡大 */
}

/* サービス間の下線（区切り線）のスタイル */
.service-divider {
    border: none;
    height: 1px;
    background: linear-gradient(to right, transparent, #cbd5e1, transparent);
    /* 中央が濃く端が消えるグラデーション線 */
    margin: 40px 0;
}

/* スクロールでふわっと表示されるアニメーションの設定 */
.fade-in {
    opacity: 0;
    /* 最初は透明 */
    transform: translateY(30px);
    /* 少し下にずらしておく */
    transition: opacity 1s ease, transform 1s ease;
    /* 1秒かけて元に戻る */
}

/* JavaScriptでこのクラスが追加されたらフェードインする */
.fade-in.show {
    opacity: 1;
    transform: translateY(0);
}

/* スマホ用のサービスレイアウト調整 */
@media (max-width: 768px) {

    .service-item,
    .service-item.reverse {
        flex-direction: column;
        /* スマホでは画像と文字を縦に並べる */
        gap: 20px;
    }

    .service-image {
        width: 100%;
    }

    .service-image img {
        height: 250px;
    }
}

/* === お問い合わせボタンのスタイル === */
.contact-btn {
    background-color: #4a5d3f;
    /* 濃い緑の目立つボタン */
    color: #ffffff;
    font-size: 18px;
    padding: 15px 40px;
    border-radius: 30px;
    /* 丸みのあるボタン */
    transition: background-color 0.3s;
    margin-top: 10px;
}

.contact-btn:hover {
    background-color: #3b4b32;
    /* ホバー時に少し暗く */
}

/* フォームの各項目のスタイル */
.form-group {
    margin-bottom: 25px;
}

.form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: bold;
    color: #444;
}

.required {
    color: white;
    background-color: #e74c3c;
    /* 赤色で必須を強調 */
    font-size: 12px;
    padding: 2px 6px;
    border-radius: 4px;
    margin-left: 10px;
    font-weight: normal;
}

.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 12px;
    border: 1px solid #ccc;
    border-radius: 6px;
    font-size: 16px;
    font-family: inherit;
    box-sizing: border-box;
    /* 追加: はみ出しを防ぐ */
}

.submit-btn {
    width: 100%;
    background-color: #a7baab;
    /* 優しい緑の送信ボタン */
    color: white;
    font-size: 18px;
    font-weight: bold;
    padding: 15px;
    border-radius: 6px;
    margin-top: 10px;
}

.submit-btn:hover {
    background-color: #8da491;
}