/* =====================================================================
 * a11y.css — UI-P3-3 无障碍（WCAG 2.1 AA）叠加层，最后加载
 * 只做可访问性增强，不改变业务布局与亮色视觉：
 *   1) 键盘焦点环达到 AA 非文本对比度（≥3:1）且厚度≥2px
 *   2) “跳到主内容”跳转链接（键盘 Tab 首个出现）
 *   3) 屏幕阅读器专用文本 .sr-only
 *   4) 尊重系统“减弱动态效果”
 *   5) aria-invalid / 必填 的可感知标识（不只靠颜色）
 * 证件管理中心为冻结模块，本文件不对其做任何定向覆盖。
 * ===================================================================== */

:root {
    /* AA 焦点环：亮色用深橙（对白底对比≈4.9:1），暗色用亮橙（对深底对比高） */
    --focus-ring: #b45309;
    --focus-ring-soft: rgba(180, 83, 9, 0.18);
}
[data-theme="dark"] {
    --focus-ring: #ffab5e;
    --focus-ring-soft: rgba(255, 171, 94, 0.22);
}

/* ---- 1. 键盘焦点可见（鼠标点击不显示，由 :focus-visible 保证） ---- */
:focus-visible {
    outline: 2px solid var(--focus-ring) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 4px var(--focus-ring-soft);
    border-radius: var(--ui-radius-xs, 6px);
}
/* 焦点环不被容器裁切 */
.sidebar, .modal, .dropdown-menu, .command-palette, .tk-sticky { scroll-padding: 8px; }

/* ---- 2. 跳到主内容 ---- */
.skip-link {
    position: fixed;
    top: 8px;
    left: 8px;
    z-index: 3000;
    transform: translateY(-160%);
    background: #0b2a6b;
    color: #fff;
    padding: 10px 16px;
    border-radius: 8px;
    font-size:var(--fs-base);
    font-weight: 600;
    text-decoration: none;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .25);
    transition: transform var(--motion-base, 0.2s) var(--ease-standard, ease);
}
.skip-link:focus-visible,
.skip-link:focus { transform: translateY(0); outline: 2px solid #ffd9a8; outline-offset: 2px; }
/* 跳转目标短暂高亮，让用户确认落点 */
.main-content.skip-target { animation: skipTargetPulse 1.2s ease 1; }
@keyframes skipTargetPulse {
    0% { box-shadow: inset 0 0 0 3px var(--focus-ring); }
    100% { box-shadow: inset 0 0 0 0 transparent; }
}

/* ---- 3. 仅供屏幕阅读器 ---- */
.sr-only {
    position: absolute !important;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0);
    white-space: nowrap; border: 0;
}

/* ---- 4. 减弱动态效果：系统要求时关闭非必要动画/过渡 ---- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
}

/* ---- 5. 表单状态不只靠颜色：无效加图标位描边、必填星号保持可读 ---- */
[aria-invalid="true"] {
    border-color: var(--danger, #e02424) !important;
    box-shadow: 0 0 0 3px rgba(224, 36, 36, .14);
}
[aria-invalid="true"]:focus-visible {
    outline: 2px solid var(--danger, #e02424) !important;
    outline-offset: 2px !important;
}
/* 禁用态保证对比度与 not-allowed 光标 */
:disabled, [disabled], .is-disabled { cursor: not-allowed; }

/* ---- 6. 纯图标按钮确保最小可点尺寸（AA 触控/点击目标建议≥24px，移动≥44 由 mobile.css 负责） ---- */
.header-bell, .page-help-btn, .hamburger-btn { min-width: 34px; }

/* ---- 7. 模态/抽屉出现时锁定背景滚动由 JS 负责；这里保证焦点环在深色弹层内可见 ---- */
[data-theme="dark"] :focus-visible { outline-color: var(--focus-ring) !important; }

/* ---- 8. WCAG AA 文本对比度提升（仅亮色；暗色已由 dark-theme 重映射到足够亮的文字色） ---- */
/* 表头：#8a93a5 on #F7F9FC 仅 2.9:1，提升到约 5.3:1 */
:root:not([data-theme="dark"]) .data-table thead th,
:root:not([data-theme="dark"]) .tk-table thead th { color: #5b6573; }
/* 辅助说明文字 #9ca3af on 白 仅 2.54:1 → 4.8:1（仅提升承载真实信息的文本；图标/占位符/禁用态/hover 态不强制，保持原样） */
:root:not([data-theme="dark"]) .sub-text,
:root:not([data-theme="dark"]) .text-muted,
:root:not([data-theme="dark"]) .empty-state,
:root:not([data-theme="dark"]) .ui-empty,
:root:not([data-theme="dark"]) .ui-empty-desc,
:root:not([data-theme="dark"]) .placeholder-page,
:root:not([data-theme="dark"]) .search-result-sub,
:root:not([data-theme="dark"]) .search-no-result,
:root:not([data-theme="dark"]) .search-loading,
:root:not([data-theme="dark"]) .bell-empty,
:root:not([data-theme="dark"]) .bell-loading,
:root:not([data-theme="dark"]) .dropdown-badge,
:root:not([data-theme="dark"]) .tk-colpanel-title,
:root:not([data-theme="dark"]) .dash-news-date,
:root:not([data-theme="dark"]) .ui-loading,
:root:not([data-theme="dark"]) .ui-loading-inline,
:root:not([data-theme="dark"]) .cmdp-item-right,
:root:not([data-theme="dark"]) .cmdp-empty,
:root:not([data-theme="dark"]) .cmdp-footer-hint,
:root:not([data-theme="dark"]) .cl-date,
:root:not([data-theme="dark"]) .onb-item.is-done .onb-name,
:root:not([data-theme="dark"]) .onb-tip,
:root:not([data-theme="dark"]) .ph-foot,
:root:not([data-theme="dark"]) .login-tagline { color: #6b7280; }
/* 头像下角色徽标 4.39:1 → 约 7:1 */
:root:not([data-theme="dark"]) .user-role-badge { color: #4b5563; }
/* 浅彩底语义徽章：danger 4.02 / warning 2.86 → 均 ≥5.5:1（success/info/blue 实测已达标，不动） */
:root:not([data-theme="dark"]) .badge-danger { color: #b91c1c; }
:root:not([data-theme="dark"]) .badge-warning { color: #92400e; }
