/* =============================================================
   寿光市人民政府门户网站（静态演示样板）
   文件：assets/css/accessibility.css
   职责：字号档位、关怀模式组件细化、高对比度补充、
         偏好开关控件、键盘按键样式、焦点增强。
   依赖：tokens.css、base.css、components.css
   ============================================================= */

/* ---------- 字号档位（JS 切换 html 类） ---------- */
html.fs-l  { font-size: 18px; }
html.fs-xl { font-size: 20px; }

/* ---------- 关怀模式：链接可辨识（不只靠颜色） ---------- */
body.care-mode main a:not(.btn):not(.entry-card):not(.card-link):not(.filter-chip) {
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---------- 关怀模式：控件放大 ---------- */
body.care-mode .btn { min-height: 52px; font-size: var(--fs-md); }
body.care-mode .btn--sm { min-height: 44px; }
body.care-mode .form-input,
body.care-mode .form-select,
body.care-mode .form-textarea,
body.care-mode .sort-select select { min-height: 52px; font-size: var(--fs-md); }
body.care-mode .filter-chip { min-height: 44px; font-size: var(--fs-base); }
body.care-mode .tab-btn,
body.care-mode .mini-tab { min-height: 52px; }
body.care-mode .pagination__btn { min-width: 52px; min-height: 52px; }
body.care-mode .choice { min-height: 52px; }
body.care-mode .seg-btn { min-height: 48px; }
body.care-mode .main-nav__link { min-height: 68px; }
body.care-mode .entry-card { min-height: 108px; }
body.care-mode .doc-list__title,
body.care-mode .hot-list a,
body.care-mode .policy-mini__title { white-space: normal; }
body.care-mode .doc-list__item { padding: var(--sp-3) var(--sp-1); }
body.care-mode .chat-msg__bubble { font-size: var(--fs-base); }
body.care-mode .chat-panel { width: 440px; }

/* ---------- 关怀模式：简化非必要视觉 ---------- */
body.care-mode .site-header::before,
body.care-mode .site-header::after,
body.care-mode .ai-intro::after,
body.care-mode .feature-band::before,
body.care-mode .feature-band::after { display: none; }
body.care-mode .card--soft,
body.care-mode .card--soft-green,
body.care-mode .headline-card,
body.care-mode .search-hero { background: #fff; }
body.care-mode .map-canvas {
  background:
    linear-gradient(160deg, #F4FAF8 0%, #EDF4F9 100%);
}

/* ---------- 高对比度补充 ---------- */
body.high-contrast a:not(.btn) { text-decoration: underline; }
body.high-contrast .btn {
  border-width: 2px;
  border-color: #000;
}
body.high-contrast .btn--primary,
body.high-contrast .btn--green,
body.high-contrast .btn--warm { color: #fff; }
body.high-contrast .tag,
body.high-contrast .status-badge,
body.high-contrast .demo-badge {
  border-color: #000;
  color: #000;
  background: #fff;
}
body.high-contrast .filter-chip { border-color: #000; color: #000; }
body.high-contrast .filter-chip[aria-pressed="true"] {
  background: #000;
  border-color: #000;
  color: #fff;
}
body.high-contrast .seg-btn[aria-pressed="true"] { background: #000; }
body.high-contrast .headline-card,
body.high-contrast .card--soft,
body.high-contrast .card--soft-green,
body.high-contrast .search-hero,
body.high-contrast .ai-summary { background: #fff; }
body.high-contrast .main-nav { background: #002244; }
body.high-contrast .demo-banner {
  background: #fff;
  border-color: #000;
  color: #000;
}
body.high-contrast .chat-msg--user .chat-msg__bubble { background: #002244; }
body.high-contrast .map-pin__dot { border-color: #000; }
body.high-contrast img:not(.keep-color),
body.high-contrast .brand-card__logo { filter: none; }

/* ---------- 偏好开关（switch） ---------- */
.pref-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--sp-3) var(--sp-5);
  padding: var(--sp-4) 0;
  border-bottom: 1px solid var(--c-border-light);
}
.pref-row:last-child { border-bottom: 0; }
.pref-row__info { flex: 1 1 260px; min-width: 0; }
.pref-row__info h3 { font-size: var(--fs-base); margin: 0 0 2px; }
.pref-row__info p {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--c-text-muted);
}

.switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--sp-3);
  min-height: var(--tap-min);
  cursor: pointer;
  flex: 0 0 auto;
}
.switch input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  margin: 0;
  cursor: pointer;
}
.switch__track {
  flex: 0 0 auto;
  width: 56px;
  height: 30px;
  border-radius: 999px;
  background: #C2CCD6;
  border: 1px solid var(--c-border);
  position: relative;
  transition: background var(--dur-fast) var(--ease);
}
.switch__thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #fff;
  box-shadow: var(--shadow-sm);
  transition: left var(--dur-fast) var(--ease);
}
.switch input:checked ~ .switch__track { background: var(--c-gov-blue); }
.switch input:checked ~ .switch__track .switch__thumb { left: calc(100% - 26px); }
.switch input:focus-visible ~ .switch__track {
  outline: 3px solid var(--focus-color);
  outline-offset: 3px;
}
.switch__state {
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--c-text-muted);
  min-width: 2.5em;
}
.switch input:checked ~ .switch__state { color: var(--c-gov-blue); }
/* 开关状态文字由 CSS 生成，避免静态文字与勾选状态不一致 */
.switch__state::before { content: "关闭"; }
.switch input:checked ~ .switch__state::before { content: "开启"; }
body.care-mode .switch__track { width: 64px; height: 34px; }
body.care-mode .switch__thumb { width: 28px; height: 28px; }
body.care-mode .switch input:checked ~ .switch__track .switch__thumb { left: calc(100% - 30px); }
body.high-contrast .switch__track { border-color: #000; }
body.high-contrast .switch input:checked ~ .switch__track { background: #000; }

/* ---------- 字号档位按钮组 ---------- */
.fs-group { display: inline-flex; gap: var(--sp-2); flex-wrap: wrap; }
.fs-group .seg-like {
  min-height: var(--tap-min);
  min-width: 72px;
  padding: 0 var(--sp-4);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-md);
  background: #fff;
  font-weight: 600;
  color: var(--c-text-secondary);
}
.fs-group .seg-like:hover { border-color: var(--c-gov-blue); color: var(--c-gov-blue); }
.fs-group .seg-like[aria-pressed="true"] {
  background: var(--c-gov-blue);
  border-color: var(--c-gov-blue);
  color: #fff;
}
body.high-contrast .fs-group .seg-like[aria-pressed="true"] { background: #000; border-color: #000; }

/* ---------- 键盘按键样式 ---------- */
.kbd {
  display: inline-block;
  min-width: 30px;
  padding: 2px 8px;
  border: 1px solid var(--c-border);
  border-bottom-width: 3px;
  border-radius: 5px;
  background: var(--c-bg-soft);
  font-size: var(--fs-sm);
  font-weight: 600;
  text-align: center;
  color: var(--c-text-secondary);
}
body.high-contrast .kbd { border-color: #000; color: #000; background: #fff; }

/* ---------- 朗读功能提示态 ---------- */
.tts-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sp-3);
}
.tts-unavailable {
  font-size: var(--fs-sm);
  color: var(--c-text-muted);
}

/* ---------- 焦点增强：卡片内链获得焦点时卡片描边 ---------- */
.entry-card:focus-visible,
.card-link:focus-visible,
.journey-card:focus-visible,
.brand-card:focus-visible,
.headline-card:focus-visible {
  outline-offset: 0;
}
