/* =============================================
   メインスタイルシート - ニュースでやさしい日本語
   ============================================= */

/* 共通スタイル */
:root {
    --entry-color:        #6366f1;   /* インディゴ — 入門 */
    --beginner-color:     #0ea5e9;   /* スカイブルー — 初級 */
    --intermediate-color: #f59e0b;   /* アンバー — 中級 */
    --advanced-color:     #10b981;   /* エメラルド — 上級 */
    --brand-primary:      #1d4ed8;   /* ブランドブルー */
}

body {
    font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Meiryo', sans-serif;
    line-height: 1.6;
    color: #0f172a;
}

/* ═══ 読了後CTA ═══════════════════════════════════════════════════ */
.sn-after-read {
    border-top: 1px solid #e2e8f0;
    padding-top: 1.25rem;
}
.sn-after-read__title {
    font-size: .8rem; font-weight: 600;
    letter-spacing: .06em; text-transform: uppercase;
    color: #94a3b8; margin-bottom: .75rem;
}
.sn-after-card {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    color: #0f172a;
    transition: border-color .2s, box-shadow .2s, background .2s;
}
.sn-after-card:hover {
    border-color: #3b82f6;
    box-shadow: 0 4px 16px rgba(59,130,246,.12);
    background: #fff; color: #0f172a;
}
.sn-after-card--up {
    border-color: #bfdbfe;
    background: #eff6ff;
}
.sn-after-card--up:hover { border-color: #1d4ed8; }
.sn-after-card__label { font-size: .72rem; color: #94a3b8; margin-bottom: .3rem; }
.sn-after-card__title { font-size: .95rem; font-weight: 700; line-height: 1.4; margin-bottom: .3rem; }
.sn-after-card__hint  { font-size: .78rem; color: #94a3b8; }

/* ─── Bootstrap primary 上書き ─── */
.btn-primary, .bg-primary:not(.navbar) { background-color: var(--brand-primary) !important; border-color: var(--brand-primary) !important; }
.btn-primary:hover                     { background-color: #1744b5 !important; border-color: #1744b5 !important; }
.text-primary                          { color: var(--brand-primary) !important; }
.border-primary                        { border-color: var(--brand-primary) !important; }
.nav-tabs .nav-link.active             { color: var(--brand-primary); }
.page-link                             { color: var(--brand-primary); }
.page-item.active .page-link           { background-color: var(--brand-primary); border-color: var(--brand-primary); }

/* ヘッダー・ブランドロゴ */
.sn-navbar-brand {
    display: flex;
    align-items: center;
    text-decoration: none;
    white-space: nowrap;
}
.sn-logo-mark {
    flex-shrink: 0;
    border-radius: 5px;
    box-shadow: 0 1px 5px rgba(0,0,0,.22);
    display: block;
    margin-right: .55rem; /* gap fallback for Safari < 14.1 */
}
.sn-brand-wordmark {
    display: flex;
    flex-direction: column;
    line-height: 1.1;
}
.sn-brand-kicker {
    font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', sans-serif;
    font-size: .58rem;
    font-weight: 400;
    color: rgba(255,255,255,.65);
    letter-spacing: .08em;
}
.sn-brand-name {
    font-family: 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
    font-size: .98rem;
    font-weight: 700;
    color: #fff;
    letter-spacing: -.01em;
}

/* 記事カード */
.article-card {
    transition: transform 0.2s, box-shadow 0.2s;
}

.article-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15) !important;
}

.article-card .card-title a {
    transition: color 0.2s;
}

.article-card .card-title a:hover {
    color: var(--brand-primary) !important;
}

/* レベル別バッジ */
.badge.bg-success { background-color: var(--entry-color)        !important; }
.badge.bg-primary { background-color: var(--beginner-color)     !important; }
.badge.bg-warning { background-color: var(--intermediate-color) !important; color: #fff; }
.badge.bg-danger  { background-color: var(--advanced-color)     !important; }

/* 記事本文 */
.article-body {
    font-size: 1.1rem;
    line-height: 2;
}

.article-body ruby {
    ruby-position: over;
}

.article-body rt {
    font-size: 0.6em;
    color: #666;
}

/* レベル切替タブ */
.nav-tabs .nav-link {
    color: #6c757d;
    font-weight: 500;
}

.nav-tabs .nav-link.active {
    color: #007bff;
    font-weight: 700;
}

/* ページネーション */
.pagination {
    justify-content: center;
}

.pagination .page-link {
    color: var(--brand-primary);
}

.pagination .page-item.active .page-link {
    background-color: var(--brand-primary);
    border-color: var(--brand-primary);
}

/* 広告プレースホルダー */
.ad-placeholder {
    min-height: 100px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #999;
    font-size: 0.9rem;
}

/* シェアボタン */
.share-btn {
    transition: transform 0.2s;
}

.share-btn:hover {
    transform: scale(1.05);
}

/* フッター */
footer {
    margin-top: auto;
}

footer a:hover {
    text-decoration: underline !important;
}

/* ユーティリティ */
.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.text-truncate-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Bootstrap Icons の代替 */
.bi::before {
    display: inline-block;
    font-style: normal;
    font-variant: normal;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
}

/* アニメーション */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fade-in {
    animation: fadeIn 0.5s ease-in-out;
}

/* ═══ Hero ═══════════════════════════════════════════════════════ */
.sn-hero {
    background: linear-gradient(135deg, #eff6ff 0%, #ffffff 55%, #f0fdf4 100%);
    border-radius: 1.5rem;
    padding: 3rem 2.5rem;
    position: relative;
    overflow: hidden;
}
.sn-hero::after {
    content: '';
    position: absolute;
    /* hero 内に収まるよう縮小・再配置 */
    width: 300px; height: 300px;
    background: radial-gradient(circle, rgba(59,130,246,.09) 0%, transparent 65%);
    top: -80px; right: -40px;
    border-radius: 50%;
    pointer-events: none;
}

/* ── Eyebrow: アクセントライン + ラベルで視線の起点を明確化 ── */
.sn-hero__eyebrow-wrap {
    display: flex;
    align-items: center;
    margin-bottom: .75rem;
}
.sn-hero__accent-line {
    display: inline-block;
    width: 2.5rem; height: 3px;
    background: linear-gradient(90deg, #1d4ed8, #38bdf8);
    border-radius: 3px;
    flex-shrink: 0;
    margin-right: .6rem; /* gap fallback for Safari < 14.1 */
}
.sn-hero__eyebrow {
    font-size: .78rem; font-weight: 700;
    letter-spacing: .12em; text-transform: uppercase;
    color: var(--brand-primary, #1d4ed8);
    margin-bottom: 0;
}

/* ── H1 ── */
.sn-hero__h1 {
    font-family: 'Inter', 'Noto Serif JP', sans-serif;
    font-size: clamp(1.75rem, 4vw, 2.75rem);
    font-weight: 800; line-height: 1.25;
    letter-spacing: -.02em; color: #0f172a;
    margin-bottom: 1.5rem;
    word-break: break-word;      /* Safari < 15.4 fallback */
    overflow-wrap: anywhere;
}

/* ── 特徴グリッド: アイコン付き2列で即スキャン ── */
.sn-hero__features {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .55rem 2rem;
    margin-bottom: 2rem;
}
.sn-hero__feature {
    display: flex;
    align-items: center;
    font-size: .95rem;
    color: #475569;
}
.sn-hero__fi {
    font-size: 1rem;
    color: var(--brand-primary, #1d4ed8);
    flex-shrink: 0;
    margin-right: .5rem; /* gap fallback for Safari < 14.1 */
}
.sn-hero__feature strong {
    color: #0f172a;
    font-weight: 700;
}

/* ── CTA ── */
.sn-hero__cta-wrap {
    display: flex; align-items: center;
    flex-wrap: wrap;
    margin-bottom: .25rem;
}
.sn-hero__cta-wrap > .sn-btn-hero {
    margin-right: 1.25rem; /* gap fallback for Safari < 14.1 */
}
.sn-hero__sub-link { font-size: .875rem; color: #94a3b8; }
.sn-hero__sub-link a { color: var(--brand-primary, #1d4ed8); }

.sn-btn-hero {
    background: linear-gradient(135deg, #1d4ed8, #3b82f6);
    color: #fff !important; border: none; border-radius: 100px;
    padding: .875rem 2.25rem; font-weight: 600;
    box-shadow: 0 4px 18px rgba(59,130,246,.35);
    transition: transform .2s, box-shadow .2s;
    text-decoration: none;
}
.sn-btn-hero:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 28px rgba(59,130,246,.45);
}
.sn-btn-hero__arrow { transition: transform .2s; }
.sn-btn-hero:hover .sn-btn-hero__arrow { transform: translateX(4px); }

/* ── 信頼バー: アイコン付きで数字の意味を即理解 ── */
.sn-trust-bar {
    display: flex; flex-wrap: wrap;
    align-items: center;
    border-top: 1px solid #e2e8f0;
    padding-top: 1.25rem;
}
/* gap fallback for Safari < 14.1 */
.sn-trust-bar > * { margin-right: 1.25rem; margin-bottom: .75rem; }
.sn-trust-item         { display: flex; align-items: center; }
.sn-trust-icon         { font-size: .85rem; color: var(--brand-primary, #1d4ed8); margin-right: .3rem; }
.sn-trust-num {
    font-family: 'Inter', 'Noto Sans JP', sans-serif;
    font-size: 1.3rem; font-weight: 800;
    color: var(--brand-primary, #1d4ed8); line-height: 1;
}
.sn-trust-label        { font-size: .75rem; color: #94a3b8; }
.sn-trust-sep          { color: #e2e8f0; font-size: 1.4rem; }
.sn-trust-item--free   { display: flex; align-items: center; }
.sn-trust-icon--free   { font-size: .95rem; color: #10b981; margin-right: .35rem; }
.sn-trust-label--free  { font-size: .9rem; font-weight: 700; color: #10b981; }

@media (max-width: 576px) {
    .sn-hero { padding: 2rem 1.25rem; }
    .sn-hero__features { grid-template-columns: 1fr; gap: .4rem; }
    .sn-hero__cta-wrap { flex-direction: column; align-items: flex-start; }
}

/* ═══ 記事カード：4レベル並列「〇〇で読む」ボタン ══════════════════ */
.sn-card-read-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .3rem;
}
.sn-card-read-btn {
    display: block;
    text-align: center;
    font-size: .72rem;
    font-weight: 600;
    padding: .38rem .4rem;
    border-radius: 6px;
    border: 1.5px solid var(--lc);
    color: var(--lc);
    background: transparent;
    text-decoration: none;
    transition: background .15s, color .15s;
    opacity: .75;
    line-height: 1.3;
    white-space: nowrap;
}
.sn-card-read-btn[data-level="entry"]        { --lc: var(--entry-color); }
.sn-card-read-btn[data-level="beginner"]     { --lc: var(--beginner-color); }
.sn-card-read-btn[data-level="intermediate"] { --lc: var(--intermediate-color); }
.sn-card-read-btn[data-level="advanced"]     { --lc: var(--advanced-color); }
.sn-card-read-btn:hover,
.sn-card-read-btn--current {
    background: var(--lc);
    color: #fff;
    opacity: 1;
}

/* ─── フォーカスリング（キーボードナビ） ─── */
a:focus-visible,
button:focus-visible,
[tabindex="0"]:focus-visible,
input:focus-visible,
select:focus-visible {
    outline: 2px solid var(--brand-primary, #1d4ed8) !important;
    outline-offset: 3px !important;
    border-radius: 3px;
}

/* ─── 記事メタ情報フレックスレイアウト ─── */
.sn-article-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}
.sn-article-meta > * { margin-right: .75rem; margin-bottom: .3rem; }

/* ローディング */
.loading {
    text-align: center;
    padding: 2rem;
    color: #999;
}

.loading::after {
    content: '...';
    animation: dots 1.5s steps(4, end) infinite;
}

@keyframes dots {
    0%, 20% {
        content: '.';
    }
    40% {
        content: '..';
    }
    60%, 100% {
        content: '...';
    }
}
