/**
 * 前台状态色统一（只由 view/header.html 引入，不影响 console/adm 后台骨架）
 * 引用的 admin-lte/3.0.5 镜像把 .alert-* 改成了实心底白字（白字压 #28a745 仅 2.9:1），
 * .callout 是纯白底、.tag-* 根本没定义，小字压上去既看不清也没有状态区分。
 * 这里统一换成浅底深字，色板与支付页 pay-* 卡片保持一致（Ant Design 的次要 Tag 风格）。
 */
.alert-success { color: #155724; background-color: #d4edda; border-color: #c3e6cb; }
.alert-info    { color: #004085; background-color: #cce5ff; border-color: #b8daff; }
.alert-warning { color: #664d03; background-color: #fff3cd; border-color: #ffeeba; }
.alert-danger  { color: #721c24; background-color: #f8d7da; border-color: #f5c6cb; }

/* alert 的标题、正文与关闭按钮原本按白字配色，这里跟随前景色 */
.alert h4, .alert .h4, .alert h5, .alert .h5 { color: inherit; }
.alert .close { color: inherit; text-shadow: none; opacity: .55; }
.alert .icon { color: inherit; }

/* 实心按钮压白字对比度不足（绿 2.9:1），统一加深；
   前景色必须挂在 a.btn 上：Bootstrap 的 a:not([href]):not([tabindex]){color:inherit}
   特异度是 (0,2,1)，只写 .btn.btn-success (0,2,0) 会被它盖成黑字压实心底色 */
.btn.btn-success, a.btn.btn-success { color: #fff; background-color: #145c2a; border-color: #145c2a; }
.btn.btn-success:hover, .btn.btn-success:focus, .btn.btn-success:active,
a.btn.btn-success:hover, a.btn.btn-success:focus, a.btn.btn-success:active { color: #fff; background-color: #0f4a21; border-color: #0f4a21; }
.btn.btn-danger, a.btn.btn-danger { color: #fff; background-color: #a51d2d; border-color: #a51d2d; }
.btn.btn-danger:hover, .btn.btn-danger:focus, .btn.btn-danger:active,
a.btn.btn-danger:hover, a.btn.btn-danger:focus, a.btn.btn-danger:active { color: #fff; background-color: #8a1c1c; border-color: #8a1c1c; }
/* 主色按钮：#007bff 压白字只有 3.98:1，加深到同色系的 #0069d9（5.22:1） */
.btn.btn-primary, a.btn.btn-primary { color: #fff; background-color: #0069d9; border-color: #0069d9; }
.btn.btn-primary:hover, .btn.btn-primary:focus, .btn.btn-primary:active,
a.btn.btn-primary:hover, a.btn.btn-primary:focus, a.btn.btn-primary:active { color: #fff; background-color: #0056b3; border-color: #0056b3; }
.btn.btn-dark, a.btn.btn-dark { color: #fff; }

/* callout：补上真正的前景/底色，保留左边框的重量感 */
.callout-success { background-color: #d4edda; border-color: #c3e6cb; border-left-color: #1e7e34; color: #155724; }
.callout-info    { background-color: #cce5ff; border-color: #b8daff; border-left-color: #00448c; color: #004085; }
.callout-warning { background-color: #fff3cd; border-color: #ffeeba; border-left-color: #d39e00; color: #664d03; }
.callout-danger  { background-color: #f8d7da; border-color: #f5c6cb; border-left-color: #a51d2d; color: #721c24; }

/* bg-* 工具类带 !important，覆盖必须同级带 !important；徽标改成浅底深字 + 描边 */
.badge.bg-success { background-color: #d4edda !important; color: #155724 !important; border: 1px solid #c3e6cb; }
.badge.bg-danger  { background-color: #f8d7da !important; color: #721c24 !important; border: 1px solid #f5c6cb; }
.badge.bg-warning { background-color: #fff3cd !important; color: #664d03 !important; border: 1px solid #ffeeba; }
.badge.bg-info    { background-color: #cce5ff !important; color: #004085 !important; border: 1px solid #b8daff; }
.badge.bg-secondary { background-color: #e9ecef !important; color: #3b4045 !important; border: 1px solid #dee2e6; }

/* tag-* 在本镜像里不存在，兜底给个和徽标一致的样式 */
.tag { display: inline-block; padding: .25em .5em; font-size: 75%; font-weight: 700; line-height: 1;
    border-radius: .25rem; border: 1px solid #dee2e6; color: #3b4045; background-color: #e9ecef; }
.tag-success { color: #155724; background-color: #d4edda; border-color: #c3e6cb; }
.tag-danger  { color: #721c24; background-color: #f8d7da; border-color: #f5c6cb; }
.tag-warning { color: #664d03; background-color: #fff3cd; border-color: #ffeeba; }
.tag-info    { color: #004085; background-color: #cce5ff; border-color: #b8daff; }

/* 考试列表的报名状态徽标（ksstatus() 输出） */
.badge-status { display: inline-block; padding: .25em .6em; font-size: 12px; font-weight: 700; line-height: 1.25;
    border-radius: .75rem; border: 1px solid; white-space: nowrap; }
.badge-status.is-open    { color: #155724; background-color: #d4edda; border-color: #c3e6cb; }
.badge-status.is-pending { color: #004085; background-color: #cce5ff; border-color: #b8daff; }
.badge-status.is-closed  { color: #3b4045; background-color: #e9ecef; border-color: #dee2e6; }

/* 列表空态 */
.ks-empty { padding: 18px 16px; font-size: 14px; color: #6c757d; text-align: center;
    background-color: #f8f9fa; border: 1px dashed #dee2e6; border-radius: 4px; }

/* 公告/常见问题列表：原先是 float + 2.5rem 行高 + CDN 圆点图，标题一换行日期就被挤到下一行单独右对齐 */
.ks-infolist { margin: 0; padding: 0; list-style: none; }
.ks-infolist li { display: flex; align-items: baseline; gap: 0 .5rem; padding: .5rem 0;
    line-height: 1.6; border-bottom: 1px dashed #e9ecef; }
.ks-infolist li:last-child { border-bottom: 0; }
.ks-infolist li::before { content: ""; flex: 0 0 auto; align-self: flex-start; margin-top: .6em;
    width: 5px; height: 5px; border-radius: 50%; background-color: #b1b7bd; }
.ks-infolist a { flex: 1 1 auto; color: #212529; word-break: break-word; }
.ks-infolist a:hover, .ks-infolist a:focus { color: #0069d9; text-decoration: none; }
.ks-infolist time { flex: 0 0 auto; font-size: 12px; color: #6c757d; font-variant-numeric: tabular-nums; }
