:root{
  --navy:#0f4c81;
  --navy-dark:#0a3a63;  --orange:#e07b25;
  --orange-dark:#c4651a;
  --ink:#1d2733;
  --muted:#6b7684;
  --line:#e3e8ee;
  --bg:#f4f6f9;
  --card:#ffffff;
  --ok:#0f8a4f;
  --bad:#d8452b;
  --radius:12px;
  --shadow:0 2px 10px rgba(16,32,56,.07);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.7;font-size:15px;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--navy);text-decoration:none}

/* ===== 顶栏 ===== */
.topbar{
  background:linear-gradient(135deg,#0f4c81 0%,#12578f 60%,#0d6ba8 100%);
  color:#fff;padding:16px 16px 20px;box-shadow:0 2px 12px rgba(10,38,64,.18);
  position:relative;overflow:hidden;
}
.topbar:before{
  content:"";position:absolute;width:240px;height:240px;border-radius:50%;
  background:rgba(255,255,255,.07);top:-130px;right:-80px;
}
.topbar:after{
  content:"";position:absolute;width:170px;height:170px;border-radius:50%;
  background:rgba(255,255,255,.05);bottom:-100px;left:-60px;
}
.topbar .inner{
  max-width:760px;margin:0 auto;position:relative;z-index:1;text-align:center;
}
.topbar h1{margin:0;font-size:18px;font-weight:800;letter-spacing:1.5px}
.topbar .sub{font-size:12px;opacity:.85;margin-top:4px;letter-spacing:.5px}
/* 返回首页：胶囊按钮 + 图标，视觉上更突出、更好点 */
.topbar .back{
  color:#fff;display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px 6px 11px;border-radius:999px;margin-bottom:10px;
  font-size:13px;font-weight:600;letter-spacing:.5px;line-height:1.4;
  background:rgba(255,255,255,.18);
  border:1px solid rgba(255,255,255,.32);
  box-shadow:0 2px 8px rgba(0,0,0,.14);
  backdrop-filter:blur(2px);
  transition:transform .15s ease,background .15s ease;
}
.topbar .back:active{transform:scale(.96);background:rgba(255,255,255,.32)}
/* 返回首页图标：纯 CSS 画（不用 SVG，避免外部样式没命中时 SVG 以黑色默认尺寸裸奔） */
.topbar .back .home-ic{
  position:relative;display:block;width:16px;height:15px;flex:0 0 16px;
}
.topbar .back .home-ic:before{          /* 屋顶 */
  content:"";position:absolute;left:0;top:0;width:16px;height:7px;
  background:currentColor;
  clip-path:polygon(50% 0,100% 100%,0 100%);
}
.topbar .back .home-ic:after{           /* 墙体 + 门 */
  content:"";position:absolute;left:1px;top:7px;width:14px;height:8px;
  background:currentColor;opacity:.55;
}
.topbar .back .home-ic i{               /* 门洞（透出顶栏底色，形成房子门窗感） */
  position:absolute;left:6px;top:9px;width:4px;height:6px;
  background:#0f4c81;
}

.page{max-width:760px;margin:0 auto;padding:16px 14px 60px}

/* ===== 入口 ===== */
.entry{
  display:block;background:var(--card);border-radius:var(--radius);
  padding:22px 20px;margin-bottom:14px;box-shadow:var(--shadow);
  border:1px solid var(--line);position:relative;overflow:hidden;
  transition:transform .15s ease,box-shadow .15s ease;
}
.entry:active{transform:scale(.99)}
.entry .ico{
  width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font-size:24px;background:#eaf1f9;margin-bottom:12px;
}
.entry.learn .ico{background:#eaf1f9}
.entry.exam .ico{background:#fdeee0}
.entry h2{margin:0 0 4px;font-size:17px;font-weight:700}
.entry p{margin:0;color:var(--muted);font-size:13px}
.entry .go{
  position:absolute;right:20px;top:50%;transform:translateY(-50%);
  color:var(--navy);font-size:13px;font-weight:600;
}
.entry.learn .go{color:var(--navy)}
.entry.exam .go{color:var(--orange)}

.note{
  background:#fffbe9;border:1px solid #f2e2b0;border-radius:10px;
  padding:12px 14px;font-size:13px;color:#7a5a12;margin-bottom:14px;
}

/* ===== 卡片 ===== */
.card{
  background:var(--card);border-radius:var(--radius);border:1px solid var(--line);
  box-shadow:var(--shadow);padding:18px 16px;margin-bottom:14px;
}
.card h3{margin:0 0 12px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.card h3:before{content:"";width:4px;height:16px;background:var(--orange);border-radius:2px;display:inline-block}

label.f{display:block;margin-bottom:12px}
label.f span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
input[type=text],input[type=tel],input[type=number]{
  width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:8px;
  font-size:15px;font-family:inherit;background:#fff;color:var(--ink);outline:none;
}
input:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(15,76,129,.1)}

.btn{
  display:inline-block;border:0;border-radius:8px;padding:12px 22px;
  font-size:15px;font-family:inherit;font-weight:600;cursor:pointer;
  background:var(--navy);color:#fff;
}
.btn:active{opacity:.9}
.btn.block{display:block;width:100%;text-align:center}
.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--navy)}
.btn.orange{background:var(--orange)}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ===== 答题 ===== */
.qbar{
  background:var(--navy);color:#fff;border-radius:10px;padding:10px 14px;margin-bottom:12px;
  display:flex;align-items:center;justify-content:space-between;font-size:13px;
}
.qbar .cnt{font-weight:700;font-size:15px}
.qbar .clock{font-variant-numeric:tabular-nums;font-weight:700}
.qbar .clock.warn{color:#ffcf5c}
.qbar .clock.danger{color:#ff8a75}
.qhead{font-size:13px;color:var(--muted);margin:0 0 6px}

.qcard{
  background:var(--card);border-radius:var(--radius);border:1px solid var(--line);
  box-shadow:var(--shadow);padding:18px 16px;
}
/* 阶段条：判断题 12 / 30（只显示题型与本段进度，不显示「第 N 步」） */
.qstage{
  display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:12px;color:var(--muted);margin:9px 0 10px;
}
.qstage b{color:var(--navy);font-size:13px}
.qstage .stg2{
  background:#eef2f7;color:var(--navy);font-weight:700;font-variant-numeric:tabular-nums;
  border-radius:20px;padding:2px 9px;font-size:11px;
}
.qtype{
  display:inline-block;font-size:12px;padding:2px 10px;border-radius:20px;
  background:#eef2f7;color:var(--navy);margin-bottom:10px;font-weight:600;
}
.qtype.multi{background:#fdeee0;color:var(--orange)}
.qtype.judge{background:#eaf7ef;color:var(--ok)}
.qstem{font-size:16px;font-weight:600;line-height:1.8;margin:0 0 14px}

.opts{display:flex;flex-direction:column;gap:9px}
.opt{
  display:flex;align-items:flex-start;gap:10px;padding:12px 13px;
  border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;
  font-size:15px;line-height:1.6;transition:border-color .12s,background .12s;
}
.opt .k{
  flex:0 0 auto;width:24px;height:24px;border-radius:50%;background:#eef2f7;color:var(--navy);
  font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px;
}
.opt.sel{border-color:var(--navy);background:#f2f7fd}
.opt.sel .k{background:var(--navy);color:#fff}
/* 多选题：方框复选框样式 + 选中打勾 */
.opt.mchk .k{border-radius:6px}
.opt.mchk.sel{border-color:var(--orange);background:#fff6ef}
.opt.mchk.sel .k{background:var(--orange)}
.opt.mchk.sel .k:after{content:"✓";font-size:14px}
.multihint{
  margin-top:8px;font-size:12px;color:var(--muted);text-align:right;
  display:flex;align-items:center;justify-content:flex-end;gap:8px;
}
.multihint .cnt2{
  background:#fff6ef;color:var(--orange);font-weight:700;
  border:1px solid #f6dcc4;border-radius:20px;padding:1px 10px;font-size:11px;
}
.opt.right{border-color:#9bd6b4;background:#eefaf3}
.opt.right .k{background:var(--ok);color:#fff}
.opt.wrong{border-color:#f0b3a6;background:#fdf1ee}
.opt.wrong .k{background:var(--bad);color:#fff}

.fb{margin-top:14px;border-radius:9px;padding:12px 14px;font-size:14px;line-height:1.8}
.fb.ok{background:#eefaf3;color:#0b6b3d;border:1px solid #c8e9d6}
.fb.no{background:#fdf1ee;color:#9c2d1a;border:1px solid #f2cec4}
.fb .ans{font-weight:700}

.actions{display:flex;gap:10px;margin-top:16px}
.actions .btn{flex:1;padding:12px 6px;font-size:14px}
.actions .btn.ghost{flex:0 0 34%}

/* 学习进度条 */
.progress{height:6px;background:#e7ecf2;border-radius:4px;overflow:hidden;margin:12px 0 2px}
.progress i{display:block;height:100%;background:var(--orange);transition:width .3s}

/* ===== 成绩 ===== */
.scorebox{
  background:linear-gradient(135deg,#0f4c81,#12578f);color:#fff;border-radius:14px;
  padding:28px 20px;text-align:center;margin-bottom:14px;position:relative;overflow:hidden;
}
.scorebox .who{font-size:14px;opacity:.9}
.scorebox .num{font-size:60px;font-weight:800;line-height:1.1;margin:6px 0 2px;font-variant-numeric:tabular-nums}
.scorebox .num small{font-size:20px;font-weight:600;opacity:.85}
.scorebox .meta{font-size:13px;opacity:.85;margin-top:6px}
.scorebox.pass .num{color:#ffe08a}
.badge{
  display:inline-block;margin-top:10px;padding:5px 16px;border-radius:20px;
  font-size:14px;font-weight:700;background:#fff;color:var(--navy);
}
.badge.fail{background:#ffd9d0;color:#9c2d1a}

.kv{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.kv div{flex:1 1 30%;min-width:90px;background:#f7f9fc;border-radius:9px;padding:10px;text-align:center}
.kv b{display:block;font-size:19px;color:var(--navy)}
.kv span{font-size:12px;color:var(--muted)}

.wrong{background:#fff6f4;border:1px solid #f4cdc3;border-radius:10px;padding:12px 14px;margin-bottom:10px;font-size:14px}
.wrong .t{font-weight:600;margin-bottom:6px}
.wrong .r{color:var(--ok)}
.wrong .w{color:var(--bad)}
.wrong .ex{color:var(--muted);font-size:13px;margin-top:6px;border-top:1px dashed #ecd7d1;padding-top:6px}

#saveCanvas{display:none;width:100%;max-width:420px;margin:0 auto 10px;border-radius:10px;box-shadow:var(--shadow)}
.savetip{font-size:12px;color:var(--muted);text-align:center;margin-top:6px}

.center{text-align:center}
.muted{color:var(--muted);font-size:13px}
hr.sep{border:0;border-top:1px solid var(--line);margin:16px 0}

/* ===== 首页 Hero：深蓝科技主题（参考主题图） ===== */
/* 深蓝底 + 顶部主光源 + 汇聚光束 + 透视地平线，底部渐隐到页面底色 */
.hero{
  position:relative;overflow:hidden;color:#fff;text-align:center;
  padding:58px 16px 54px;
  background:
    radial-gradient(900px 440px at 50% -34%,rgba(86,170,255,.42),transparent 64%),
    radial-gradient(620px 300px at 50% 118%,rgba(0,140,200,.28),transparent 68%),
    linear-gradient(180deg,#0d3f74 0%,#082a4d 46%,#04172e 100%);
}
.hero-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hero-bg .glow{                       /* 顶部中央主光源 */
  position:absolute;left:50%;top:-280px;width:700px;height:470px;transform:translateX(-50%);
  background:radial-gradient(ellipse at 50% 100%,rgba(104,188,255,.50),rgba(20,86,158,.16) 52%,transparent 76%);
}
.hero-bg .wire{                       /* 科技细网格（向四周渐隐） */
  position:absolute;inset:0;opacity:.62;
  background-image:
    repeating-linear-gradient(90deg,rgba(126,204,255,.13) 0 1px,transparent 1px 38px),
    repeating-linear-gradient(0deg,rgba(126,204,255,.09) 0 1px,transparent 1px 38px);
  -webkit-mask-image:radial-gradient(ellipse 76% 60% at 50% 40%,#000,transparent 78%);
  mask-image:radial-gradient(ellipse 76% 60% at 50% 40%,#000,transparent 78%);
}
.hero-bg .dots{                       /* 悬浮光点（星尘） */
  position:absolute;inset:0;opacity:.5;
  background-image:
    radial-gradient(rgba(168,222,255,.9) .9px,transparent 1.1px),
    radial-gradient(rgba(120,190,255,.7) .8px,transparent 1px);
  background-size:120px 96px,74px 62px;
  background-position:22px 40px,68px 12px;
}
.hero-bg .floor{                      /* 透视科技地网格 */
  position:absolute;left:-12%;right:-12%;bottom:0;height:48%;
  background-image:
    repeating-linear-gradient(90deg,rgba(126,204,255,.20) 0 1px,transparent 1px 46px),
    repeating-linear-gradient(0deg,rgba(126,204,255,.12) 0 1px,transparent 1px 38px);
  transform:perspective(300px) rotateX(66deg);
  transform-origin:bottom center;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 62%,transparent);
  mask-image:linear-gradient(180deg,transparent,#000 62%,transparent);
  opacity:.72;
}
.hero-bg .sweep{                      /* 斜向流光，缓慢扫过 */
  position:absolute;top:-32%;left:-36%;width:42%;height:170%;
  background:linear-gradient(90deg,transparent,rgba(120,200,255,.10) 44%,rgba(170,228,255,.20) 50%,rgba(120,200,255,.10) 56%,transparent);
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 26%,#000 74%,transparent);
  mask-image:linear-gradient(180deg,transparent,#000 26%,#000 74%,transparent);
  animation:sweepMove 12s ease-in-out infinite;
}
@keyframes sweepMove{
  0%,100%{transform:rotate(16deg) translateX(-40%)}
  50%    {transform:rotate(16deg) translateX(360%)}
}
/* 底部渐隐，与浅色页面内容自然衔接 */
.hero:after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:52px;z-index:0;
  background:linear-gradient(180deg,rgba(244,246,249,0),var(--bg));
}
.hero-inner{
  position:relative;z-index:2;max-width:960px;margin:0 auto;
  display:flex;flex-direction:column;align-items:center;
}

/* 厂名单行大标题（letter-spacing 会在末字右侧留白，用等量 padding-left 抵消） */
.hero-title{
  margin:0;font-size:clamp(27px,7.6vw,50px);font-weight:900;letter-spacing:3px;padding-left:3px;
  color:#fff;line-height:1.28;white-space:nowrap;
  text-shadow:
    0 0 16px rgba(96,186,255,.85),
    0 0 40px rgba(40,120,225,.6),
    0 4px 14px rgba(0,0,0,.55);
}
.hero-line{                            /* 标题下的蓝色短横线 */
  width:126px;height:4px;border-radius:4px;margin:15px auto 0;
  background:linear-gradient(90deg,rgba(90,180,255,0),#8fd0ff 26%,#4196ee 64%,rgba(90,180,255,0));
  box-shadow:0 0 14px rgba(90,190,255,.9);
}
.hero-sub{
  margin-top:15px;font-size:14px;letter-spacing:3.5px;
  color:rgba(216,236,255,.95);text-shadow:0 2px 10px rgba(0,0,0,.5);
}

/* ===== 首页三按钮 ===== */
.helprow{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.helpbtn{
  flex:1 1 30%;min-width:0;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 8px 17px;
  text-align:center;transition:transform .15s ease,box-shadow .15s ease;
}
.helpbtn:active{transform:scale(.98)}
.helpbtn .i{
  display:flex;align-items:center;justify-content:center;width:42px;height:42px;
  margin:0 auto 11px;border-radius:12px;font-size:22px;background:#eef3f9;
}
.helpbtn b{display:block;font-size:14px;font-weight:700;color:var(--ink)}
.helpbtn small{display:block;font-size:11px;color:var(--muted);margin-top:2px;line-height:1.5}
.helpbtn.blue .i{background:#eaf1f9}
.helpbtn.orange .i{background:#fdeee0;color:var(--orange)}
.helpbtn.green .i{background:#eaf7ef}

/* ===== 说明页正文 ===== */
.doc h2{
  margin:22px 0 10px;font-size:15px;font-weight:700;color:var(--navy);
  display:flex;align-items:center;gap:8px;
}
.doc h2:before{content:"";width:4px;height:16px;background:var(--orange);border-radius:2px}
.doc h2:first-child{margin-top:0}
.doc p,.doc li{font-size:14px;color:#48525e;line-height:1.95;margin:0 0 6px}
.doc ul{margin:0;padding-left:0;list-style:none}
.doc ul li{position:relative;padding-left:18px}
.doc ul li:before{
  content:"";position:absolute;left:4px;top:11px;width:5px;height:5px;
  border-radius:50%;background:var(--navy);opacity:.55;
}
.doc .hl{
  background:linear-gradient(180deg,transparent 62%,#ffe9b8 62%);
  color:var(--ink);font-weight:700;padding:0 2px;
}
.doc .tip{
  background:#f2f7fd;border:1px solid #d9e6f4;border-radius:10px;
  padding:12px 14px;font-size:13px;color:#3d5a72;line-height:1.9;margin-top:8px;
}
.doc .kv2{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.doc .kv2 div{
  flex:1 1 30%;min-width:90px;background:#f7f9fc;border-radius:9px;
  padding:12px 8px;text-align:center;
}
.doc .kv2 b{display:block;font-size:16px;color:var(--navy)}
.doc .kv2 span{font-size:12px;color:var(--muted)}

@media (max-width:340px){
  .hero{padding:46px 12px 44px}
  .hero-title{font-size:25px;letter-spacing:1.5px;padding-left:1.5px}
  .hero-sub{font-size:12.5px;letter-spacing:2px}
}

@media (min-width:600px){
  .hero{padding:82px 20px 76px}
  .hero-title{font-size:50px;letter-spacing:5px;padding-left:5px}
  .hero-line{width:150px;margin-top:18px}
  .hero-sub{font-size:17px;letter-spacing:4px;margin-top:18px}
  .helpbtn{flex:1 1 32%}
}

/* ===== 首页页脚管理入口（不显眼） ===== */
.admin-entry{
  text-align:center;padding:10px 0 4px;
}
.admin-entry a{
  display:inline-block;font-size:11.5px;line-height:1.6;color:#a9b3bf;
  letter-spacing:1px;padding:4px 12px;border:1px solid #e7ecf2;border-radius:999px;
  background:rgba(255,255,255,.5);
}
.admin-entry a:hover{color:#8d99a8;border-color:#d8e0e9}
