/* 基本スタイル */
body {
    font-family: 'Noto Sans JP', sans-serif;
    scroll-behavior: smooth;
}

/* カスタムアニメーション */
.fade-in-up {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.fade-in-up.visible {
    opacity: 1;
    transform: translateY(0);
}

/* グラデーションテキスト */
.text-gradient {
    background: linear-gradient(to right, #2563eb, #06b6d4);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* 背景パターン */
.bg-grid-pattern {
    background-image: linear-gradient(to right, #f1f5f9 1px, transparent 1px),
                      linear-gradient(to bottom, #f1f5f9 1px, transparent 1px);
    background-size: 40px 40px;
}


/* フォームページ */
/* 入力フォーカス時のアニメーション */
.input-group:focus-within label {
    color: #1e40af;
}
.input-group:focus-within i {
    color: #1e40af;
}

/* ローディングスピナー */
.spinner {
    border: 3px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    border-top: 3px solid #ffffff;
    width: 20px;
    height: 20px;
    animation: spin 1s linear infinite;
    display: inline-block;
}
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}