        body {
            /* Use Noto Sans JP as the primary font, fallback to Inter and sans-serif */
            font-family: 'Noto Sans JP', 'Inter', sans-serif;
            background-color: #f8fafc; /* Tailwind: bg-slate-50 */
            /* Added padding-top to body to prevent content from hiding behind fixed header */
            padding-top: 80px; /* Adjust this value if header height changes */
        }
        /* Custom scrollbar for better aesthetics, but primarily using Tailwind */
        ::-webkit-scrollbar {
            width: 8px;
        }
        ::-webkit-scrollbar-track {
            background: #e2e8f0; /* Tailwind: bg-slate-200 */
        }
        ::-webkit-scrollbar-thumb {
            background: #64748b; /* Tailwind: bg-slate-500 */
            border-radius: 4px;
        }
        ::-webkit-scrollbar-thumb:hover {
            background: #475569; /* Tailwind: bg-slate-600 */
            }
        /* Animation for fade-in-down and fade-in-up */
        @keyframes fadeInDown {
            from {
                opacity: 0;
                transform: translate3d(0, -20px, 0);
            }
            to {
                opacity: 1;
                transform: translate3d(0, 0, 0);
            }
        }
        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translate3d(0, 20px, 0);
            }
            to {
                opacity: 1;
                transform: translate3d(0, 0, 0);
            }
        }
        .animate-fade-in-down {
            animation: fadeInDown 1s ease-out forwards;
        }
        .animate-fade-in-up {
            animation: fadeInUp 1s ease-out forwards;
        }

        /* Sticky CTA for mobile - always visible at the bottom */
        @media (max-width: 767px) {
            .sticky-mobile-cta {
                position: fixed;
                bottom: 0;
                left: 0;
                width: 100%;
                z-index: 1000;
                background-color: #1e3a8a; /* メインカラーの青 (濃いめ) */
                padding: 1rem 0;
                box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.2);
                display: flex;
                justify-content: space-around; /* Space out buttons */
                align-items: center;
            }
            .sticky-mobile-cta a {
                flex: 1; /* Make buttons take equal width */
                margin: 0 5px; /* Small margin between buttons */
            }
        }
         .loading-spinner {
            border: 4px solid rgba(255, 255, 255, 0.3);
            border-top: 4px solid #fff;
            border-radius: 50%;
            width: 30px;
            height: 30px;
            animation: spin 1s linear infinite;
        }

        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
