/* ==========================================================================
   矿山自救器盲戴智能考核系统 · 整站样式
   配色沿用单机版（app.py THEME）：深钢灰 + 安全黄
   无任何外部依赖（不引 CDN），离线可完整浏览
   ========================================================================== */

:root{
  /* 与单机版 app.py THEME 逐项对应 */
  --bg:#171B1F;        /* 主背景（深钢灰） */
  --panel:#232A30;     /* 面板 / 卡片 */
  --panel2:#1E2429;    /* 次级面板 / 顶栏 */
  --field:#2A3238;     /* 输入框底色 */
  --btn:#333C44;       /* 普通按钮 */
  --btn2:#3E4952;      /* 按钮悬停 */
  --line:#38424B;      /* 描边 / 分隔线 */
  --accent:#FFC400;    /* 安全黄（主强调） */
  --accent2:#FFB020;   /* 警示橙 */
  --ok:#35C46A;        /* 合格 */
  --ok-bg:#17321F;     /* 合格底色 */
  --danger:#E5484D;    /* 不合格 */
  --danger-bg:#3A2124; /* 不合格底色 */
  --text:#DCE3E9;      /* 主文字 */
  --text2:#9AA6B2;     /* 次要文字 */
  --video:#050708;     /* 录像区底 */
  --sel:#3A444D;       /* 选中行 */

  --radius:10px;
  --radius-lg:14px;
  --maxw:1240px;

  color-scheme:dark;   /* 表单控件 / 滚动条跟随深色，避免白底下拉框 */
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--text);
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans SC",sans-serif;
  font-size:15px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;display:block}
::selection{background:var(--accent);color:#171B1F}
code{
  background:var(--field);border:1px solid var(--line);border-radius:5px;
  padding:1px 6px;font-family:Consolas,Monaco,monospace;font-size:12.8px;color:var(--accent);
}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:100;
  background:var(--panel2);
  border-bottom:1px solid var(--line);
}
.topbar-in{
  max-width:var(--maxw);margin:0 auto;
  display:flex;align-items:center;gap:18px;
  padding:10px 20px;
}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0;text-decoration:none}
.brand:hover{text-decoration:none}
.brand .logo{
  width:36px;height:36px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(140deg,var(--accent),var(--accent2));
  color:#171B1F;font-size:20px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
}
.brand .bname{color:var(--text);font-size:15px;font-weight:700;line-height:1.25;white-space:nowrap}
.brand .bname em{display:block;font-style:normal;font-size:11px;color:var(--text2);font-weight:400}
.mainnav{display:flex;gap:2px;flex-wrap:wrap;margin-left:auto}
.mainnav a{
  color:var(--text2);font-size:13.5px;padding:7px 12px;border-radius:8px;
  text-decoration:none;white-space:nowrap;transition:.15s;
}
.mainnav a:hover{background:var(--btn);color:var(--text);text-decoration:none}
.mainnav a.on{background:var(--accent);color:#171B1F;font-weight:700}

/* ---------- 布局 ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding:24px 20px 48px}
.narrow{max-width:900px}
.sec{margin-bottom:26px}
.sec-h{
  display:flex;align-items:center;gap:9px;
  font-size:16px;font-weight:700;color:var(--text);
  margin-bottom:12px;
}
.sec-h::before{
  content:"";width:4px;height:16px;border-radius:2px;
  background:var(--accent);flex-shrink:0;
}
.sec-h .sub{font-size:12.5px;font-weight:400;color:var(--text2)}

/* ---------- 卡片 ---------- */
.card{
  background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);padding:16px 18px;margin-bottom:14px;
}
.card.tight{padding:12px 14px}
.card-h{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:14.5px;font-weight:700;margin-bottom:10px;
}
.card-h .num{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:20px;height:20px;padding:0 5px;border-radius:6px;
  background:var(--accent);color:#171B1F;font-size:12px;font-weight:800;
}
.card-h .tip{font-size:12px;font-weight:400;color:var(--text2)}

/* ---------- 首屏 ---------- */
.hero{
  background:
    radial-gradient(900px 380px at 12% -10%, rgba(255,196,0,.10), transparent 62%),
    linear-gradient(180deg,#1D2429,#171B1F);
  border-bottom:1px solid var(--line);
}
.hero-in{
  max-width:var(--maxw);margin:0 auto;padding:44px 20px 40px;
  display:flex;align-items:center;gap:36px;flex-wrap:wrap;
}
.hero-txt{flex:1 1 420px;min-width:0}
.hero-kicker{
  display:inline-block;font-size:12px;letter-spacing:.08em;
  color:var(--accent);border:1px solid rgba(255,196,0,.42);
  border-radius:20px;padding:3px 12px;margin-bottom:14px;
}
.hero h1{font-size:36px;line-height:1.24;font-weight:800;letter-spacing:-.5px;margin-bottom:12px}
.hero h1 .hl{color:var(--accent)}
.hero p.lead{font-size:15px;color:var(--text2);max-width:640px;margin-bottom:20px}
.hero-acts{display:flex;gap:10px;flex-wrap:wrap}
.hero-badge{
  flex:0 0 220px;text-align:center;
  border:2px solid var(--accent);border-radius:50%;
  width:200px;height:200px;margin:0 auto;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 40%, rgba(255,196,0,.14), transparent 68%);
}
.hero-badge .big{font-size:62px;font-weight:800;color:var(--accent);line-height:1}
.hero-badge .unit{font-size:16px;font-weight:700;color:var(--accent);margin-top:2px}
.hero-badge .cap{font-size:12.5px;color:var(--text2);margin-top:8px;line-height:1.5}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid transparent;border-radius:9px;cursor:pointer;
  padding:11px 20px;font-size:14.5px;font-weight:700;
  font-family:inherit;transition:.15s;text-decoration:none;white-space:nowrap;
}
.btn:hover{text-decoration:none}
.btn-p{background:var(--accent);color:#171B1F}
.btn-p:hover{background:#FFD33D;color:#171B1F}
.btn-g{background:var(--btn);color:var(--text);border-color:var(--line)}
.btn-g:hover{background:var(--btn2);color:var(--text)}
.btn-d{background:var(--danger-bg);color:var(--danger);border-color:rgba(229,72,77,.42)}
.btn-d:hover{background:#4A2A2E;color:#FF7075}
.btn-ok{background:var(--ok-bg);color:var(--ok);border-color:rgba(53,196,106,.42)}
.btn-ok:hover{background:#1D3D27;color:#4FD97F}
.btn:disabled{opacity:.42;cursor:not-allowed}
.btn-sm{padding:7px 13px;font-size:13px;border-radius:8px}
.btn-xs{padding:5px 10px;font-size:12px;border-radius:7px}
.btn-block{width:100%}
.btn-row{display:flex;gap:9px;flex-wrap:wrap;align-items:center}

/* ---------- 表单 ---------- */
.field{
  width:100%;background:var(--field);color:var(--text);
  border:1px solid var(--line);border-radius:8px;
  padding:9px 12px;font-size:14px;font-family:inherit;
  transition:.15s;
}
.field::placeholder{color:#6C7883}
.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,196,0,.14)}
select.field{cursor:pointer}
textarea.field{resize:vertical;min-height:80px;line-height:1.6}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.form-item label{display:block;font-size:12.5px;color:var(--text2);margin-bottom:5px}
.form-item .req{color:var(--accent);font-weight:700}
.hint{font-size:12px;color:var(--text2);line-height:1.65}
.hint b{color:var(--text)}

/* ---------- 徽标 / 标签 ---------- */
.tag{
  display:inline-block;padding:2px 9px;border-radius:20px;
  font-size:11.5px;font-weight:600;
  background:var(--btn);color:var(--text2);
}
.tag.ok{background:var(--ok-bg);color:var(--ok)}
.tag.bad{background:var(--danger-bg);color:var(--danger)}
.tag.warn{background:rgba(255,176,32,.16);color:var(--accent2)}

/* 状态灯（顶栏样式） */
.lights{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:12.5px;color:var(--text2)}
.light{display:inline-flex;align-items:center;gap:6px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--text2);flex-shrink:0}
.dot.on{background:var(--ok);box-shadow:0 0 8px rgba(53,196,106,.8)}
.dot.off{background:var(--danger)}
.dot.warn{background:var(--accent2);box-shadow:0 0 8px rgba(255,176,32,.8)}

/* ---------- 统计格 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.stat{
  background:var(--panel2);border:1px solid var(--line);
  border-radius:var(--radius);padding:14px 16px;
}
.stat .k{font-size:12.5px;color:var(--text2);margin-bottom:6px}
.stat .v{font-size:28px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.stat .v small{font-size:13px;font-weight:600;color:var(--text2);margin-left:3px}
.stat .v.ok{color:var(--ok)}
.stat .v.bad{color:var(--danger)}
.stat .v.ac{color:var(--accent)}

/* ---------- 表格 ---------- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel2)}
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
table.tbl th{
  background:#1A2025;color:var(--accent);
  font-weight:700;font-size:12.5px;text-align:left;
  padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;
}
table.tbl td{padding:9px 12px;border-bottom:1px solid rgba(56,66,75,.55);vertical-align:middle}
table.tbl tbody tr:last-child td{border-bottom:none}
table.tbl tbody tr:hover{background:rgba(58,68,77,.38)}
table.tbl tbody tr.sel{background:var(--sel)}
table.tbl td.num{font-variant-numeric:tabular-nums;text-align:right}
table.tbl td.mid{text-align:center}
table.tbl .nm{font-weight:700;color:var(--text);white-space:nowrap}
table.tbl td.nw{white-space:nowrap}
table.tbl .mini{font-size:12px;color:var(--text2)}
.empty{padding:26px 16px;text-align:center;color:var(--text2);font-size:13.5px}

/* ---------- 名单页专用 ---------- */
.photo-frame{
  width:132px;height:200px;flex-shrink:0;
  border:1px solid var(--line);border-radius:8px;
  background:var(--field);overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  color:var(--text2);font-size:11.5px;text-align:center;padding:8px;
}
.photo-frame img{width:100%;height:100%;object-fit:cover}
.thumb{width:38px;height:50px;border-radius:5px;object-fit:cover;background:var(--field);border:1px solid var(--line)}
.thumb-empty{
  width:38px;height:50px;border-radius:5px;background:var(--field);
  border:1px dashed var(--line);display:inline-flex;align-items:center;justify-content:center;
  font-size:10px;color:var(--text2);
}

/* ---------- 步骤条 ---------- */
.steps{list-style:none}
.steps li{
  display:flex;gap:10px;align-items:flex-start;
  padding:9px 11px;border-radius:8px;border:1px solid transparent;
  font-size:13.5px;margin-bottom:5px;background:var(--panel2);
}
.steps li .n{
  flex-shrink:0;width:21px;height:21px;border-radius:50%;
  background:var(--btn);color:var(--text2);
  display:flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:700;
}
.steps li .txt{flex:1;min-width:0}
.steps li .txt em{font-style:normal;display:block;font-size:12px;color:var(--text2);margin-top:2px}
.steps li .sec-n{flex-shrink:0;font-size:12px;color:var(--text2);font-variant-numeric:tabular-nums}
.steps li.done{border-color:rgba(53,196,106,.5);background:var(--ok-bg)}
.steps li.done .n{background:var(--ok);color:#0C2415}
.steps li.done .sec-n{color:var(--ok);font-weight:700}

/* 可点击的步骤项（考核进行中）：整行即按钮，避免内层按钮与 li 样式脱节 */
.steps li.has-btn{padding:0;background:none;border:0;display:block}
button.steps-li{
  display:flex;gap:10px;align-items:flex-start;width:100%;
  padding:9px 11px;border-radius:8px;cursor:pointer;text-align:left;
  font-family:inherit;font-size:13.5px;line-height:1.7;
  background:var(--panel2);border:1px solid transparent;color:inherit;
  transition:.15s;
}
button.steps-li:hover{border-color:var(--accent)}
button.steps-li:disabled{cursor:default;opacity:.62}
button.steps-li.done{border-color:rgba(53,196,106,.5);background:var(--ok-bg)}
button.steps-li.done .n{background:var(--ok);color:#0C2415}
button.steps-li.done .sec-n{color:var(--ok);font-weight:700}

/* ---------- 视频 ---------- */
.videobox{
  position:relative;background:var(--video);border-radius:var(--radius);
  overflow:hidden;aspect-ratio:16/9;border:1px solid var(--line);
}
.videobox video{width:100%;height:100%;object-fit:cover;display:block}
.videobox .off{
  position:absolute;inset:0;display:flex;flex-direction:column;gap:12px;
  align-items:center;justify-content:center;text-align:center;
  color:var(--text2);font-size:13.5px;padding:20px;
}
.videobox .badge{
  position:absolute;left:12px;top:12px;
  background:rgba(5,7,8,.72);border:1px solid var(--line);
  border-radius:20px;padding:4px 12px;font-size:12.5px;color:var(--text);
}
.videobox .hud{
  position:absolute;right:12px;bottom:12px;
  background:rgba(5,7,8,.72);border:1px solid var(--line);
  border-radius:8px;padding:4px 11px;font-size:12.5px;color:var(--text2);
}
.video-native{width:100%;border-radius:var(--radius);background:var(--video);border:1px solid var(--line);display:block}

/* ---------- 考核页大计时 ---------- */
.big-timer{
  text-align:center;font-size:64px;font-weight:800;line-height:1;
  font-variant-numeric:tabular-nums;letter-spacing:-2px;
  color:var(--text);margin:6px 0 2px;transition:color .2s;
}
.big-timer.warn{color:var(--accent2)}
.big-timer.over{color:var(--danger)}
.big-timer.ok{color:var(--ok)}
.timer-cap{text-align:center;font-size:12.5px;color:var(--text2);margin-bottom:10px}

/* 单机版式左右分栏 */
.workbench{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(340px,1fr);gap:14px;align-items:start}
@media (max-width:1000px){.workbench{grid-template-columns:1fr}}

/* 单选组 */
.radios{display:flex;gap:16px;flex-wrap:wrap}
.radios label{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;cursor:pointer}
.radios input[type=radio]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}

/* ---------- 结果条 ---------- */
.result{
  border-radius:var(--radius);padding:14px 16px;border:1px solid var(--line);
  background:var(--panel2);
}
.result.pass{border-color:rgba(53,196,106,.55);background:var(--ok-bg)}
.result.fail{border-color:rgba(229,72,77,.55);background:var(--danger-bg)}
.result .flag{font-size:26px;font-weight:800;margin-bottom:6px}
.result.pass .flag{color:var(--ok)}
.result.fail .flag{color:var(--danger)}
.result .det{font-size:13.5px;color:var(--text);line-height:1.8}

/* ---------- 柱状图（纯 SVG） ---------- */
.chart-wrap{background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.chart-title{font-size:13px;color:var(--text2);margin-bottom:10px}
.chart-wrap svg{display:block;width:100%;height:auto}

/* ---------- 首页模块入口 ---------- */
.mods{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.mod{
  display:block;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);padding:18px;color:var(--text);
  text-decoration:none;transition:.18s;
}
.mod:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}
.mod .ic{
  width:38px;height:38px;border-radius:10px;margin-bottom:11px;
  background:rgba(255,196,0,.14);color:var(--accent);
  display:flex;align-items:center;justify-content:center;font-size:19px;
}
.mod h3{font-size:15px;font-weight:700;margin-bottom:6px}
.mod p{font-size:12.8px;color:var(--text2);line-height:1.65}
.mod .go{font-size:12.5px;color:var(--accent);margin-top:9px;font-weight:700}

/* ---------- 能力卡 ---------- */
.feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.feat{background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.feat .ic{font-size:22px;margin-bottom:9px}
.feat h4{font-size:14px;font-weight:700;margin-bottom:6px}
.feat p{font-size:12.8px;color:var(--text2);line-height:1.65}

/* ---------- 说明文档排版 ---------- */
.doc{max-width:860px}
.doc h2{
  font-size:19px;font-weight:800;margin:34px 0 12px;padding-bottom:9px;
  border-bottom:1px solid var(--line);
}
.doc h2:first-child{margin-top:0}
.doc h3{font-size:15.5px;font-weight:700;margin:22px 0 9px;color:var(--accent)}
.doc h4{font-size:14px;font-weight:700;margin:16px 0 7px}
.doc p{font-size:14px;color:var(--text);margin-bottom:10px}
.doc ul,.doc ol{margin:0 0 12px 22px}
.doc li{font-size:14px;margin-bottom:6px}
.doc li::marker{color:var(--accent)}
.doc .note,.note{
  border-left:3px solid var(--accent);background:var(--panel);
  padding:11px 15px;border-radius:0 8px 8px 0;margin:12px 0;
  font-size:13.5px;color:var(--text2);
}
.doc .note b,.note b{color:var(--text)}
.doc code{
  background:var(--field);border:1px solid var(--line);border-radius:5px;
  padding:1px 6px;font-family:Consolas,Monaco,monospace;font-size:12.8px;color:var(--accent);
}
.toc{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px}
.toc ol{margin-left:20px}
.toc a{font-size:13.5px}

/* ---------- 页脚 ---------- */
.foot{
  border-top:1px solid var(--line);background:var(--panel2);
  padding:24px 20px;margin-top:12px;
}
.foot-in{
  max-width:var(--maxw);margin:0 auto;
  display:flex;gap:18px;justify-content:space-between;flex-wrap:wrap;
  font-size:12.5px;color:var(--text2);line-height:1.8;
}
.foot b{color:var(--text)}
.foot-in>div{min-width:210px}
.foot-in .icp{font-family:Consolas,Monaco,monospace;letter-spacing:.3px}

/* ---------- 提示条 ---------- */
.alert{
  border:1px solid var(--line);border-left:3px solid var(--accent2);
  background:rgba(255,176,32,.07);border-radius:0 8px 8px 0;
  padding:11px 15px;font-size:13px;color:var(--text2);margin-bottom:14px;
}
.alert b{color:var(--text)}
.alert.err{border-left-color:var(--danger);background:rgba(229,72,77,.08)}
.alert.ok{border-left-color:var(--ok);background:rgba(53,196,106,.07)}

/* ---------- 工具类 ---------- */
.mt0{margin-top:0}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.mb0{margin-bottom:0}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}
.muted{color:var(--text2)}
.small{font-size:12.5px}
.mono{font-family:Consolas,Monaco,monospace;font-variant-numeric:tabular-nums}
.nowrap{white-space:nowrap}
.hide{display:none !important}
.center{text-align:center}
.right{text-align:right}
.flex{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.between{justify-content:space-between}
.divider{height:1px;background:var(--line);margin:16px 0;border:0}
.scroll-y{max-height:420px;overflow-y:auto}

@media (max-width:820px){
  .hero h1{font-size:27px}
  .hero-in{padding:30px 20px 28px;gap:24px}
  .hero-badge{width:158px;height:158px;flex-basis:158px}
  .hero-badge .big{font-size:46px}
  .big-timer{font-size:50px}
  .topbar-in{padding:9px 14px;gap:10px}
  .mainnav a{padding:6px 9px;font-size:12.5px}
  .wrap{padding:18px 14px 40px}
}

/* ---------- 动效降级 ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
}
