/* ===========================================================================
   duanyu.org — 主题微调层
   在 AdminLTE (default.min.css) 之上叠加：保持原有的蓝色调与卡片风格，
   但改善中文排版、可读性、可访问性与移动端表现。
   =========================================================================== */

:root{
  --dy-blue:#3c8dbc;
  --dy-blue-dark:#2b6d94;
  --dy-ink:#25323c;
  --dy-muted:#6b7b87;
  --dy-line:#e3e9ee;
  --dy-bg:#f4f6f9;
  --dy-card:#ffffff;
  --dy-accent:#00a65a;
  --dy-warn:#f39c12;
  --dy-radius:6px;
  --dy-shadow:0 1px 2px rgba(0,0,0,.06),0 2px 8px rgba(23,43,58,.06);
}

/* ---------- 基础排版：中文优先的字体栈 ---------- */
body,.content-wrapper,.main-sidebar,.main-footer{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",
              "PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",
              "Source Han Sans SC","Noto Sans CJK SC",sans-serif;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body{ color:var(--dy-ink); }
.content-wrapper{ background:var(--dy-bg); }

h1,h2,h3,h4,h5{ font-weight:600; letter-spacing:.01em; color:var(--dy-ink); }
h1{ font-size:1.9rem; line-height:1.3; }
h2{ font-size:1.45rem; line-height:1.35; margin-top:1.8em; }
h3{ font-size:1.2rem; }
p,li{ font-size:16px; line-height:1.85; }
.lead{ font-size:17px; line-height:1.9; font-weight:400; color:#39474f; }
.content p,.content li,.dy-article p,.dy-article li{ text-wrap:pretty; }

a{ color:var(--dy-blue-dark); }
a:hover,a:focus{ color:#1c5578; }

/* ---------- 可访问性 ---------- */
.dy-skip{
  position:absolute; left:-9999px; top:0; z-index:9999;
  background:var(--dy-blue-dark); color:#fff; padding:10px 18px;
  border-radius:0 0 var(--dy-radius) 0; font-size:15px;
}
.dy-skip:focus{ left:0; color:#fff; }
a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,summary:focus-visible{
  outline:3px solid #ffbf47; outline-offset:2px; border-radius:3px;
}

/* ---------- 页头 ---------- */
.content-header{ padding:18px 20px 6px; }
.content-header > h1{ margin:.2em 0 .1em; }
.content-header .direct-chat-img{ width:44px; height:44px; vertical-align:-10px; margin-right:10px; }
.content-header small{ color:var(--dy-muted); font-weight:400; }

.dy-crumbs{ margin:0 0 10px; }
.dy-crumbs ol{ list-style:none; margin:0; padding:0; }
.dy-crumbs li{ display:inline; font-size:13.5px; line-height:1.6; color:var(--dy-muted); }
.dy-crumbs li + li:before{ content:"\203A"; margin:0 .5em; color:#aab6bf; }
.dy-crumbs a{ color:var(--dy-muted); }
.dy-crumbs a:hover{ color:var(--dy-blue-dark); text-decoration:underline; }
.dy-crumbs [aria-current]{ color:var(--dy-ink); }

/* ---------- 内容区 ---------- */
.content,.content.body{ padding:12px 20px 30px; }
.box{
  border-top:3px solid var(--dy-blue);
  border-radius:var(--dy-radius);
  box-shadow:var(--dy-shadow);
  margin-bottom:22px;
}
.box-header{ border-bottom:1px solid var(--dy-line); }
.box-header .box-title{ font-size:17px; font-weight:600; }
.box-body{ padding:12px 14px; }

.callout{ border-radius:var(--dy-radius); box-shadow:none; border-left-width:5px; padding:14px 18px; }
.callout h4{ margin-top:0; font-size:16px; }
.callout p:last-child{ margin-bottom:0; }

/* ---------- 表格 ---------- */
.table{ margin-bottom:0; }
.table > thead > tr > th{
  background:#f0f4f7; border-bottom:2px solid var(--dy-line);
  font-size:13.5px; font-weight:600; color:var(--dy-muted);
  letter-spacing:.04em; white-space:nowrap;
}
.table > tbody > tr > td{ padding:9px 12px; vertical-align:middle; font-size:15.5px; line-height:1.7; }
.table-striped > tbody > tr:nth-of-type(odd){ background:#fafcfd; }
.table-hover > tbody > tr:hover{ background:#eef6fb; }
.table > tbody > tr > td strong{ font-weight:600; color:#12313f; }
.dy-vocab td:nth-child(2){ font-size:17px; }
.dy-vocab td:last-child{ width:64px; text-align:center; }
.dy-tablewrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* ---------- 发音按钮 ---------- */
.dy-play{
  display:inline-flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:50%;
  background:var(--dy-accent); color:#fff; border:0; cursor:pointer;
  transition:transform .12s ease, background .12s ease;
}
.dy-play:hover,.dy-play:focus{ background:#008d4c; color:#fff; transform:scale(1.08); }
.dy-play[aria-pressed="true"]{ background:var(--dy-warn); }
.dy-play .fa{ font-size:14px; }
.dy-play-big{ width:auto; height:auto; background:none; border-radius:0; padding:0; }
.dy-play-big:hover,.dy-play-big:focus{ background:none; transform:none; }

/* ---------- 顶栏 ---------- */
.main-header .logo img{ max-height:38px; width:auto; }
.dy-navsearch{ padding:8px 10px 0; }
.dy-navsearch form{ position:relative; }
.dy-navsearch input{
  width:190px; max-width:44vw; height:34px; padding:0 34px 0 12px;
  border:1px solid rgba(255,255,255,.35); background:rgba(255,255,255,.12);
  color:#fff; border-radius:17px; font-size:14px;
}
.dy-navsearch input::placeholder{ color:rgba(255,255,255,.75); }
.dy-navsearch input:focus{ background:#fff; color:var(--dy-ink); }
.dy-navsearch input:focus::placeholder{ color:#9aa7b0; }
.dy-navsearch button{
  position:absolute; right:4px; top:0; height:34px; width:30px;
  background:none; border:0; color:rgba(255,255,255,.9);
}
.dy-navsearch input:focus + button{ color:var(--dy-muted); }

/* ---------- 侧栏 ---------- */
.main-sidebar{ padding-top:0; }
.sidebar{ padding-bottom:30px; }
.sidebar-menu > li.header{
  font-size:11.5px; letter-spacing:.12em; text-transform:uppercase;
  padding:14px 15px 6px; color:#8aa4b5;
}
.sidebar-menu > li > a{ padding:9px 12px; font-size:14.5px; }
.sidebar-menu > li.active > a{ border-left-color:var(--dy-accent); font-weight:600; }
.dy-flagmini{ width:16px; height:11px; margin-right:8px; vertical-align:1px;
              box-shadow:0 0 0 1px rgba(255,255,255,.25); }

/* ---------- 快捷入口 ---------- */
.dy-quicklinks{ margin-bottom:6px; }
.dy-quicklinks .info-box{ box-shadow:var(--dy-shadow); border-radius:var(--dy-radius); min-height:74px; }
.dy-quicklinks .info-box-icon{ height:74px; line-height:74px; width:74px; border-radius:var(--dy-radius) 0 0 var(--dy-radius); }
.dy-quicklinks .info-box-content{ margin-left:74px; padding:14px 10px; }
.dy-quicklinks .info-box-number{ font-size:15px; font-weight:600; }
.dy-quicklinks .info-box-number a{ color:var(--dy-ink); }

/* ---------- 语言卡片 ---------- */
.dy-langgrid{ display:grid; gap:14px; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); margin:18px 0 26px; }
.dy-langcard{
  display:flex; align-items:center; gap:12px; padding:14px 16px;
  background:var(--dy-card); border:1px solid var(--dy-line);
  border-radius:var(--dy-radius); box-shadow:var(--dy-shadow);
  transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;
  text-decoration:none;
}
.dy-langcard:hover{ transform:translateY(-2px); border-color:#bcd6e6;
                    box-shadow:0 4px 16px rgba(23,43,58,.12); text-decoration:none; }
.dy-langcard img{ width:40px; height:27px; flex:0 0 auto; box-shadow:0 0 0 1px var(--dy-line); }
.dy-langcard b{ display:block; font-size:16px; color:var(--dy-ink); }
.dy-langcard span span{ display:block; font-size:12.5px; color:var(--dy-muted); }

/* ---------- 文章 ---------- */
.dy-article{ background:var(--dy-card); border-radius:var(--dy-radius);
             box-shadow:var(--dy-shadow); padding:26px 30px; margin-bottom:22px; }
.dy-article h2{ border-bottom:1px solid var(--dy-line); padding-bottom:.35em; }
.dy-article h3{ margin-top:1.6em; color:var(--dy-blue-dark); }
.dy-article ul,.dy-article ol{ padding-left:1.5em; }
.dy-article li{ margin-bottom:.45em; }
.dy-article blockquote{ border-left:4px solid var(--dy-blue); background:#f2f8fb;
                        padding:12px 18px; margin:1.2em 0; font-size:16px; }
.dy-meta{ font-size:13.5px; color:var(--dy-muted); margin-bottom:1.4em; }
.dy-meta span + span:before{ content:"\00B7"; margin:0 .6em; }
.dy-toc{ background:#f7fafc; border:1px solid var(--dy-line); border-radius:var(--dy-radius);
         padding:14px 20px; margin:0 0 1.8em; }
.dy-toc p{ margin:0 0 .4em; font-weight:600; font-size:14.5px; }
.dy-toc ol{ margin:0; padding-left:1.3em; }
.dy-toc li{ font-size:15px; margin-bottom:.2em; }

.dy-faq details{ border:1px solid var(--dy-line); border-radius:var(--dy-radius);
                 padding:12px 16px; margin-bottom:10px; background:var(--dy-card); }
.dy-faq summary{ font-weight:600; cursor:pointer; font-size:16px; }
.dy-faq details[open] summary{ margin-bottom:.6em; color:var(--dy-blue-dark); }
.dy-faq p{ margin:0; }

.dy-cards{ display:grid; gap:14px; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); }
.dy-card{ background:var(--dy-card); border:1px solid var(--dy-line);
          border-radius:var(--dy-radius); padding:16px 18px; box-shadow:var(--dy-shadow); }
.dy-card h3{ margin:0 0 .4em; font-size:16px; }
.dy-card p{ font-size:14.5px; color:var(--dy-muted); margin:0; line-height:1.7; }
.dy-card ul{ margin:0; padding-left:1.2em; }
.dy-card li{ font-size:14.5px; line-height:1.9; }
.dy-tagline{ display:inline-block; font-size:12px; padding:2px 9px; border-radius:11px;
             background:#eaf3f8; color:var(--dy-blue-dark); margin-bottom:.6em; }

/* ---------- 练习工具 ---------- */
.dy-tool{ background:var(--dy-card); border-radius:var(--dy-radius);
          box-shadow:var(--dy-shadow); padding:22px; margin-bottom:22px; }
.dy-toolbar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:16px; }
.dy-toolbar select,.dy-toolbar button{
  height:38px; border-radius:var(--dy-radius); border:1px solid #c5d2db;
  padding:0 14px; font-size:14.5px; background:#fff; color:var(--dy-ink); cursor:pointer;
}
.dy-toolbar button.dy-primary{ background:var(--dy-blue); border-color:var(--dy-blue); color:#fff; font-weight:600; }
.dy-toolbar button.dy-primary:hover{ background:var(--dy-blue-dark); }

.dy-flash{
  position:relative; min-height:230px; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:14px; text-align:center;
  border:2px dashed #cddbe4; border-radius:10px; padding:28px 20px; background:#fbfdfe;
  cursor:pointer; user-select:none;
}
.dy-flash:focus-visible{ border-color:var(--dy-blue); }
.dy-flash .dy-front{ font-size:26px; font-weight:600; line-height:1.4; }
.dy-flash .dy-back{ font-size:22px; color:var(--dy-blue-dark); line-height:1.5; min-height:1.5em; }
.dy-flash .dy-hint{ font-size:13px; color:var(--dy-muted); }
.dy-progress{ height:6px; background:#e6edf2; border-radius:3px; overflow:hidden; margin:14px 0 6px; }
.dy-progress i{ display:block; height:100%; background:var(--dy-accent); width:0; transition:width .25s ease; }
.dy-stats{ font-size:14px; color:var(--dy-muted); }

.dy-quiz-q{ font-size:20px; font-weight:600; margin:0 0 18px; line-height:1.5; }
.dy-quiz-opts{ display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); }
.dy-quiz-opts button{
  text-align:left; padding:13px 16px; font-size:16px; border:1px solid #c5d2db;
  border-radius:var(--dy-radius); background:#fff; cursor:pointer; line-height:1.5;
}
.dy-quiz-opts button:hover:not(:disabled){ border-color:var(--dy-blue); background:#f2f8fb; }
.dy-quiz-opts button.dy-right{ background:#e6f6ee; border-color:var(--dy-accent); color:#12693f; font-weight:600; }
.dy-quiz-opts button.dy-wrong{ background:#fdecea; border-color:#dd4b39; color:#9d2418; }
.dy-quiz-opts button:disabled{ cursor:default; }

/* ---------- 搜索 ---------- */
.dy-searchbox{ display:flex; gap:10px; margin-bottom:18px; flex-wrap:wrap; }
.dy-searchbox input[type=search]{ flex:1 1 260px; height:44px; padding:0 14px; font-size:16px;
  border:1px solid #c5d2db; border-radius:var(--dy-radius); }
.dy-searchbox select{ height:44px; border:1px solid #c5d2db; border-radius:var(--dy-radius); padding:0 10px; }
.dy-searchbox button{ height:44px; padding:0 22px; background:var(--dy-blue); color:#fff;
  border:0; border-radius:var(--dy-radius); font-size:16px; font-weight:600; cursor:pointer; }
mark{ background:#fff2b2; padding:0 2px; border-radius:2px; }

/* ---------- 广告位 ---------- */
.dy-ad{ margin:20px 0; min-height:1px; text-align:center; }

/* ---------- 表单 ---------- */
.dy-form{ max-width:620px; background:var(--dy-card); border:1px solid var(--dy-line);
          border-radius:var(--dy-radius); padding:22px 24px; box-shadow:var(--dy-shadow); }
.dy-form label{ display:block; font-weight:600; margin:14px 0 6px; font-size:15px; }
.dy-form .dy-req{ color:#dd4b39; }
.dy-form input[type=text],.dy-form input[type=email],.dy-form textarea{
  width:100%; border:1px solid #c5d2db; border-radius:var(--dy-radius);
  padding:10px 12px; font-size:16px; font-family:inherit; background:#fff; color:var(--dy-ink); }
.dy-form textarea{ min-height:150px; resize:vertical; }
.dy-form input:focus,.dy-form textarea:focus{ border-color:var(--dy-blue); outline:none;
  box-shadow:0 0 0 3px rgba(60,141,188,.18); }
.dy-form small{ display:block; color:var(--dy-muted); font-size:13px; margin-top:4px; }
.dy-form button[type=submit]{ margin-top:20px; background:var(--dy-blue); color:#fff; border:0;
  border-radius:var(--dy-radius); padding:12px 28px; font-size:16px; font-weight:600; cursor:pointer; }
.dy-form button[type=submit]:hover{ background:var(--dy-blue-dark); }
.dy-hp{ position:absolute; left:-9999px; }
.dy-note{ padding:14px 18px; border-radius:var(--dy-radius); margin:16px 0; font-size:15.5px; }
.dy-note.ok{ background:#e6f6ee; border:1px solid #9fd9bb; color:#12693f; }
.dy-note.err{ background:#fdecea; border:1px solid #f0b0a8; color:#9d2418; }
.dy-errors{ margin:.4em 0 0; padding-left:1.3em; }

/* ---------- 页脚 ---------- */
.dy-footer{ background:#fff; border-top:1px solid var(--dy-line); padding:0; color:var(--dy-muted); }
.dy-footer-cols{ display:grid; gap:20px; grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
                 padding:26px 24px 12px; }
.dy-footer-cols h2{ font-size:13px; letter-spacing:.1em; text-transform:uppercase;
                    color:#93a3ae; margin:0 0 .7em; }
.dy-footer-cols ul{ list-style:none; margin:0; padding:0; }
.dy-footer-cols li{ font-size:14.5px; line-height:2; }
.dy-footer-cols a{ color:#4a5b66; }
.dy-footer-cols a:hover{ color:var(--dy-blue-dark); text-decoration:underline; }
.dy-footer-bar{ border-top:1px solid var(--dy-line); padding:14px 24px;
                display:flex; align-items:center; gap:14px; flex-wrap:wrap; font-size:13.5px; }
.dy-footer-logo img{ max-height:28px; width:auto; }

/* ---------- 小屏 ---------- */
@media (max-width:767px){
  .content,.content.body{ padding:10px 12px 24px; }
  .content-header{ padding:14px 12px 4px; }
  h1{ font-size:1.5rem; }
  h2{ font-size:1.25rem; }
  p,li{ font-size:15.5px; }
  .dy-article{ padding:18px 16px; }
  .table > tbody > tr > td{ padding:8px 9px; font-size:15px; }
  .dy-vocab td:nth-child(2){ font-size:16px; }
  .dy-navsearch{ display:none; }
  .dy-flash .dy-front{ font-size:22px; }
}

/* ---------- 打印 ---------- */
@media print{
  .main-header,.main-sidebar,.dy-ad,.dy-crumbs,.dy-footer-cols,
  .dy-quicklinks,.dy-toolbar,.dy-play,.dy-skip{ display:none !important; }
  .content-wrapper{ margin-left:0 !important; background:#fff; }
  .box{ box-shadow:none; border:1px solid #ccc; page-break-inside:avoid; }
}

/* ---------- 尊重「减少动态效果」偏好 ---------- */
@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}
