/* ==========================================================================
   共通フォントインポート
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;700&family=Roboto+Mono:wght@400;500&family=Noto+Serif+JP:wght@400;700&display=swap');

/* ==========================================================================
   ベーススタイル (Body)
   ========================================================================== */
body {
    font-family: 'Inter', 'Noto Sans JP', sans-serif;
    background-color: #f1f5f9; /* Estimate/Dashboard基準。Flightsは個別で上書き可能 */
    scroll-behavior: smooth;
    color: #1e293b; /* slate-800相当 */
}

/* ==========================================================================
   タイポグラフィ / フォントクラス
   ========================================================================== */
.font-serif {
    font-family: 'Noto Serif JP', serif;
}

.gds-font {
    font-family: 'Roboto Mono', 'Courier New', monospace;
}

.text-tiny {
    font-size: 0.65rem;
}

.text-xs-quote {
    font-size: 0.75rem;
}

/* ==========================================================================
   フォーム部品共通スタイル
   ========================================================================== */
.form-label-sm {
    display: block;
    font-size: 11px;
    font-weight: 700;
    color: #64748b;
    margin-bottom: 4px;
    text-transform: uppercase;
    letter-spacing: 0.025em;
}

.input-focus:focus {
    outline: none;
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.custom-checkbox:checked {
    background-color: #2563eb;
    border-color: #2563eb;
}

/* ==========================================================================
   共通コンポーネント
   ========================================================================== */

/* 汎用カスタムスクロールバー (幅6px) */
.custom-scrollbar::-webkit-scrollbar {
    width: 0px;
}
.custom-scrollbar::-webkit-scrollbar-track {
    background: transparent;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 10px;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}

/* 非表示補助 */
.hidden {
    display: none;
}


/* ==========================================================================
   アニメーション定義
   ========================================================================== */

/* スピナー（ローディング） */
.spinner {
    border: 3px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    border-top: 3px solid #fff;
    width: 20px;
    height: 20px;
    animation: spin 1s linear infinite;
}

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

/* フェードイン */
.animate-fadeIn {
    animation: fadeIn 0.3s ease-out forwards;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}