@charset "utf-8";
/* CSS Document */

        :root { --primary-color: #0091ff; }

        /* --- ヒーローエリア全体 --- */
        .hero {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 80px 10%;
            min-height: 80vh;
            overflow: hidden;
            position: relative;
            /* 背景グラデーションとドットパターンの重ね合わせ */
            background:
                radial-gradient(circle, rgba(0, 145, 255, 0.6) 1px, transparent 1px), /* ドットパターン */
                linear-gradient(135deg, #fff 0%, #f0f8ff 100%); /* ベースのグラデーション */
            background-size: 20px 20px, 100% 100%; /* ドットの間隔を設定 */
        }

        /* --- アニメーション定義 --- */
        /* 左からスライドイン */
        @keyframes slideInLeft {
            from { opacity: 0; transform: translateX(-30px); }
            to { opacity: 1; transform: translateX(0); }
        }
        /* 下からふわっとフェードイン */
        @keyframes fadeInUp {
            from { opacity: 0; transform: translateY(30px); }
            to { opacity: 1; transform: translateY(0); }
        }

        /* --- テキストエリア --- */
        .hero-content { flex: 1; max-width: 600px; z-index: 2; }

        .hero-content h1 {
            font-size: 3.5rem;
            line-height: 1.4;
            margin-bottom: 24px;
            font-weight: 800;
            color: #333;
            /* アニメーション適用 */
            opacity: 0; /* 初期状態は非表示 */
            animation: slideInLeft 0.8s ease-out forwards;
        }

        .hero-content p {
            font-size: 1.2rem;
            color: #666;
            margin-bottom: 40px;
            /* アニメーション適用 (少し遅らせる) */
            opacity: 0;
            animation: slideInLeft 0.8s ease-out 0.3s forwards;
        }

        /* --- CTAボタン --- */
        .btn {
            display: inline-block;
            padding: 18px 48px;
            background-color: var(--primary-color);
            color: #fff;
            text-decoration: none;
            border-radius: 50px;
            font-weight: bold;
            box-shadow: 0 10px 20px rgba(0,145,255,0.3);
            transition: transform 0.3s, box-shadow 0.3s;
            /* アニメーション適用 (さらに遅らせる) */
            opacity: 0;
            animation: fadeInUp 0.8s ease-out 0.6s forwards;
        }
        .btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 15px 25px rgba(0,145,255,0.4);
        }

        /* --- 画像エリア --- */
        .hero-image {
            flex: 1;
            position: relative;
            display: flex;
            justify-content: flex-end;
            /* アニメーション適用 (画像はゆっくりと) */
            opacity: 0;
            animation: fadeInUp 1s ease-out 0.4s forwards;
        }

        /* 画像のコンテナ（有機的なシェイプ） */
        .image-container {
            width: 110%;
            height: 500px;
            /* アップロードされた画像を指定 */
            background: url('../images/top-hero.jpg') center/cover;
            border-radius: 60% 40% 70% 30% / 40% 50% 60% 70%; /* 有機的な形 */
            box-shadow: 20px 20px 60px rgba(0,0,0,0.05);
        }

        /* --- レスポンシブ対応 --- */
        @media (max-width: 1024px) {
            .hero {
                flex-direction: column;
                padding: 60px 5%;
                text-align: center;
                /* スマホでは背景パターンを少し控えめに */
                background-size: 15px 15px, 100% 100%;
            }
            .hero-content { max-width: 100%; }
            .hero-content h1 { font-size: 2.5rem; }
            /* スマホではアニメーションをシンプルに下からフェードインのみにする調整も可能 */
            .hero-content h1, .hero-content p { animation-name: fadeInUp; }

            .hero-image {
                width: 100%;
                margin-top: 50px;
                justify-content: center;
                animation-delay: 0.8s; /* スマホでの表示タイミング調整 */
            }
            .image-container {
                width: 100%;
                height: 350px;
                border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; /* スマホ向けに形を少し調整 */
            }
            .btn { width: 80%; max-width: 300px; box-sizing: border-box; }
        }
