/* =============================================================================
   评教 · 学生端样式（第 195 轮）
   =============================================================================
   ★ 独立文件、独立命名空间（.pjs / .pjm / .pjc），**不复用后台 assets/app.css** ——
     学生端是「干净 UI」，后台改主题色 / 改栅格都不该波及学生看到的这一屏。
   ★ 配色沿用原型：暖青 #0f766e + 暖橙 #f59e0b + 米白 #fffaf3。
   ★ 两套布局同文件：手机 .pjs-m（默认）、电脑 .pjs-pc（矩阵）。
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
:root{
  --sp:#0f766e;--sp-d:#0b5d56;--sp-w:#e7f5f3;--sp-b:#cdeee6;
  --acc:#f59e0b;--sbg:#fffaf3;--ink:#2b2118;--ink2:#5c4f42;--dim:#9a8a74;
  --line:#f0e4cf;--line2:#eee2cd;--card:#fff;
  --r:12px;--r2:16px;
  --sh:0 2px 10px rgba(15,118,110,.07);
}
html,body{margin:0;padding:0}
body.pjs{
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--sbg);color:var(--ink);-webkit-font-smoothing:antialiased;
  min-height:100vh;
}
body.pjs.pjs-pc{background:#f4f5f3}
.pjs a{color:var(--sp);text-decoration:none}
.pjs a:hover{text-decoration:underline}
/* ★ 用 <a> 当按钮时必须把字色抢回来：`.pjs a`(0,1,1) 会盖掉 `.pjs-btn`(0,1,0) 的白字，
   结果墨绿按钮上是墨绿字 —— 肉眼看就是「一颗空按钮」（第 195 轮真机截图抓到） */
.pjs a.pjs-btn{color:#fff}
.pjs a.pjs-btn:hover{text-decoration:none}
.pjs a.pjs-btn.ghost{color:var(--sp)}
.pjs button{font:inherit;cursor:pointer}
.pjs .dim{color:var(--dim)}
.pjs .tiny{font-size:12px}
.pjs .hide{display:none!important}

/* ---------- 顶栏 ---------- */
.pjs-top{position:sticky;top:0;z-index:20;background:var(--sp);color:#fff;
  display:flex;align-items:center;gap:10px;padding:10px 14px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.pjs-top .lg{width:26px;height:26px;border-radius:8px;background:rgba(255,255,255,.2);
  display:grid;place-items:center;font-weight:700;font-size:13px;flex:0 0 26px}
.pjs-top b{font-size:15px;font-weight:600}
.pjs-top .sp{flex:1}
.pjs-top .who{font-size:12.5px;opacity:.92;white-space:nowrap}
.pjs-top a.out{color:#fff;opacity:.85;font-size:12.5px;border:1px solid rgba(255,255,255,.45);
  border-radius:99px;padding:2px 9px}
.pjs-top a.out:hover{opacity:1;text-decoration:none}

/* ---------- 手机端外壳 ---------- */
.pjs-m .pjs-body{padding:14px 14px 26px;max-width:560px;margin:0 auto}
/* 电脑端的回执 / 阻断页仍是单栏卡片：限宽居中，别摊满 1440 */
.pjs-pc .pjs-body{padding:22px 16px 46px;max-width:560px;margin:0 auto}
.pjs-m h1.pjs-h1{font-size:18px;margin:2px 0 4px}
.pjs-m .lead{color:var(--dim);font-size:12.5px;margin:0 0 12px}

/* ---------- 登录 ---------- */
.pjs-login-wrap{min-height:100vh;display:flex;flex-direction:column}
.pjs-hero{background:linear-gradient(150deg,#0f766e,#0e9f8e);color:#fff;padding:34px 20px 26px;
  border-radius:0 0 24px 24px}
.pjs-hero.pc{max-width:none}
.pjs-hero .logo2{width:46px;height:46px;border-radius:13px;background:rgba(255,255,255,.18);
  display:grid;place-items:center;font-size:22px;margin-bottom:12px}
.pjs-hero h1{margin:0 0 5px;font-size:20px}
.pjs-hero p{margin:0;font-size:12.5px;opacity:.9;line-height:1.65}
.pjs-form{padding:18px 16px 26px;max-width:460px;margin:0 auto;width:100%}
.pjs-form label{display:block;font-size:12.5px;color:var(--ink2);margin:0 0 5px}
.pjs-in{width:100%;border:1px solid #e8dcc9;background:#fff;border-radius:11px;
  padding:11px 13px;font:inherit;font-size:15px;color:var(--ink);outline:none;margin-bottom:12px}
.pjs-in:focus{border-color:var(--sp);box-shadow:0 0 0 3px var(--sp-w)}
.pjs-btn{display:block;width:100%;border:0;background:var(--sp);color:#fff;padding:13px;
  border-radius:12px;font-size:15px;font-weight:600;box-shadow:0 6px 14px -6px rgba(15,118,110,.6)}
.pjs-btn:active{transform:translateY(1px)}
.pjs-btn[disabled]{opacity:.6;box-shadow:none}
.pjs-btn.ghost{background:#fff;color:var(--sp);border:1px solid var(--sp-b);box-shadow:none}
.pjs-err{background:#fdecec;border:1px solid #f7c9c9;color:#b42318;border-radius:10px;
  padding:9px 12px;font-size:12.5px;margin-bottom:12px;line-height:1.6}
.pjs-anon{display:flex;gap:8px;align-items:flex-start;background:#eefaf7;border:1px solid var(--sp-b);
  color:var(--sp-d);border-radius:10px;padding:9px 11px;font-size:11.5px;line-height:1.65}
.pjs-anon svg{flex:0 0 13px;margin-top:2px}
.pjs-slogan{font-size:12px;color:var(--dim);text-align:center;line-height:1.75;margin-top:14px}

/* ---------- 进度 ---------- */
.pjs-prog{background:#fff;border:1px solid var(--line);border-radius:13px;padding:11px 13px;margin-bottom:13px}
.pjs-prog .t{display:flex;justify-content:space-between;font-size:12px;color:var(--dim);margin-bottom:7px}
.pjs-prog .t b{color:var(--sp)}
.pjs-bar{height:7px;background:#f3ece0;border-radius:99px;overflow:hidden}
.pjs-bar>i{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#14b8a6);border-radius:99px;
  transition:width .25s}

/* ---------- 活动 chips ---------- */
.pjs-chips{display:flex;gap:7px;overflow:auto;padding:0 0 4px;margin-bottom:11px;-webkit-overflow-scrolling:touch}
.pjs-chip{flex:0 0 auto;padding:5px 11px;border-radius:99px;
  border:1px solid #eee2cd;background:#fff;font-size:12px;color:var(--ink2);white-space:nowrap}
.pjs-chip.on{background:var(--sp);border-color:var(--sp);color:#fff;font-weight:600}
.pjs-chip small{opacity:.75;margin-left:4px}

/* ---------- 老师卡 ---------- */
.pjs-tcard{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:12px 13px;margin-bottom:9px;box-shadow:var(--sh)}
.pjs-tcard .ava{width:40px;height:40px;flex:0 0 40px;border-radius:11px;background:var(--sp-w);
  color:var(--sp-d);display:grid;place-items:center;font-weight:700;font-size:15px}
.pjs-tcard .nm{font-size:14.5px;font-weight:600}
.pjs-tcard .sub{font-size:11.5px;color:var(--dim);margin-top:2px}
.pjs-tcard .go{margin-left:auto;font-size:12.5px;color:var(--sp);font-weight:600;white-space:nowrap}
.pjs-tcard.done{opacity:.62;background:#fbfaf7}
.pjs-tcard.done .go{color:var(--sp-d)}
.pjs-tcard.doing{border-color:var(--sp);background:var(--sp-w)}

/* ---------- 作答页 ---------- */
.pjs-ebar{position:sticky;top:46px;z-index:15;background:#fff;border-bottom:1px solid var(--line);
  padding:9px 14px;display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;color:var(--dim)}
.pjs-ebar b{color:var(--ink)}
.pjs-q{padding:14px 0;border-bottom:1px dashed #efe2cc}
.pjs-q:last-of-type{border-bottom:0}
.pjs-q .qt{font-size:14px;font-weight:600;line-height:1.55;margin-bottom:4px}
.pjs-q .req{color:#e0533d;margin-left:2px}
.pjs-q .qh{font-size:11.5px;color:var(--dim);margin-bottom:9px;line-height:1.6}
.pjs-q .qno{display:inline-block;min-width:20px;height:20px;line-height:20px;text-align:center;
  border-radius:6px;background:var(--sp-w);color:var(--sp-d);font-size:11.5px;font-weight:700;margin-right:6px}
.pjs-stars{display:flex;gap:9px;font-size:27px;color:#e6d9c4;user-select:none}
.pjs-stars span{cursor:pointer;transition:transform .1s;line-height:1}
.pjs-stars span.on{color:var(--acc)}
.pjs-stars span:active{transform:scale(1.15)}
.pjs-starlab{font-size:11.5px;color:var(--dim);margin-top:5px}
.pjs-opt{display:flex;align-items:flex-start;gap:9px;padding:9px 11px;border:1px solid var(--line2);
  border-radius:10px;margin-bottom:7px;font-size:13px;color:#3a2e22;background:#fff;line-height:1.55}
.pjs-opt .rd{width:16px;height:16px;flex:0 0 16px;margin-top:2px;border:1.5px solid #d6c6ad;border-radius:50%}
.pjs-opt .rd.sq{border-radius:5px}
.pjs-opt.on{border-color:var(--sp);background:var(--sp-w)}
.pjs-opt.on .rd{border-color:var(--sp);background:var(--sp);box-shadow:inset 0 0 0 2.5px #fff}
.pjs-sb{display:inline-block;background:#fff2d9;color:#a15c00;border-radius:6px;padding:0 6px;
  font-size:11px;font-weight:700;margin-left:5px;white-space:nowrap}
.pjs-ta{width:100%;border:1px solid #e8dcc9;background:#fff;border-radius:11px;padding:10px 12px;
  font:inherit;font-size:13.5px;color:var(--ink);outline:none;min-height:78px;resize:vertical}
.pjs-ta:focus{border-color:var(--sp);box-shadow:0 0 0 3px var(--sp-w)}

/* ---------- 二次确认弹层 ---------- */
.pjs-mask{position:fixed;inset:0;background:rgba(11,18,32,.42);display:flex;align-items:flex-end;
  z-index:60;padding:0}
.pjs-sheet{background:#fff;width:100%;border-radius:18px 18px 0 0;padding:18px 16px 18px;
  box-shadow:0 -8px 24px rgba(0,0,0,.2);max-width:560px;margin:0 auto}
.pjs-sheet .st{font-size:15.5px;font-weight:700;margin-bottom:7px}
.pjs-sheet .sb2{font-size:12.5px;color:var(--dim);line-height:1.75;margin-bottom:11px}
.pjs-sheet .warn{background:#fff6e8;border:1px solid #f3ddb4;color:#8a5a00;border-radius:9px;
  padding:9px 10px;font-size:11.5px;line-height:1.65;margin-bottom:12px}
.pjs-sheet .btns{display:flex;gap:9px}
.pjs-sheet .btns button{flex:1;border-radius:11px;padding:11px;font-size:14px;font-weight:600;
  border:1px solid #e8dcc9;background:#fff;color:#3a2e22}
.pjs-sheet .btns button.pri{background:var(--sp);border-color:var(--sp);color:#fff}

/* ---------- 回执 ---------- */
.pjs-done{text-align:center;padding:34px 8px 12px}
.pjs-done .ok{width:64px;height:64px;border-radius:50%;background:var(--sp-w);color:var(--sp);
  display:grid;place-items:center;margin:0 auto 14px;font-size:30px}
.pjs-done h2{margin:0 0 6px;font-size:19px}
.pjs-done p{margin:0;font-size:12.5px;color:var(--dim)}
.pjs-note{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;
  font-size:12px;color:#8a7a66;line-height:1.75;margin-top:14px}
.pjs-empty{text-align:center;padding:52px 16px;color:var(--dim);font-size:13px;line-height:1.9}
.pjs-empty .pje{color:var(--sp);opacity:.55;margin-bottom:6px}

/* =============================================================================
   电脑端（逐题作答）：主区一次一题 / 右侧答题卡
   ========================================================================== */
.pjs-pc .pjs-wrap{display:grid;grid-template-columns:minmax(0,1fr) 236px;
  gap:14px;max-width:1180px;margin:0 auto;padding:14px;align-items:start}
.pjs-pc .pjs-aside{position:sticky;top:60px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r2);padding:13px;max-height:calc(100vh - 76px);overflow:auto}
.pjs-pc .pjs-aside .ttl{font-size:13px;font-weight:700;margin-bottom:9px}
.pjs-pc .pjs-main{min-width:0}
.pjs-pc .pjs-shead{background:#fff;border:1px solid var(--line);border-radius:var(--r2);
  padding:12px 16px;margin-bottom:12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pjs-pc .pjs-shead b{font-size:15px}
.pjs-pc .pjs-shead .meta{font-size:12.5px;color:var(--dim);line-height:1.7}
.pjs-pc .pjs-shead .sp{flex:1}
.pjs-pc .pjs-switch{color:var(--sp);font-size:12px;text-decoration:none}
.pjs-pc .pjs-switch:hover{text-decoration:underline}

/* 一题一屏 */
.pjs-pc .pjs-mx{display:none}
.pjs-pc .pjs-mx{background:#fff;border:1px solid var(--line);border-radius:var(--r2);padding:16px 18px;
  overflow:hidden}
.pjs-pc .pjs-mx.is-cur{display:block;min-height:calc(100vh - 210px);animation:pjsIn .2s ease-out}
@keyframes pjsIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.pjs-mx .mxq{font-size:15px;font-weight:600;line-height:1.6;margin:0 0 5px;color:var(--ink)}
.pjs-mx .mxq .qno{display:inline-block;min-width:22px;height:22px;line-height:22px;text-align:center;
  border-radius:7px;background:var(--sp-w);color:var(--sp-d);font-size:12px;font-weight:700;margin-right:7px}
.pjs-mx .mxq .req{color:#e0533d;margin-left:2px}
.pjs-mx .mxh{font-size:11.5px;color:var(--dim);margin:0 0 12px;line-height:1.65}
.pjs-mx .scroller{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px}
table.pjs-t{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px}
table.pjs-t th,table.pjs-t td{border-bottom:1px solid #f4ecdf;padding:0}
table.pjs-t thead th{position:sticky;top:0;background:#fcfaf6;z-index:2;
  font-weight:600;color:var(--ink2);font-size:12px;padding:8px 6px;text-align:center;
  border-bottom:1px solid var(--line2);white-space:nowrap}
table.pjs-t thead th.rl{text-align:left;left:0;z-index:3}
table.pjs-t tbody th{position:sticky;left:0;background:#fff;z-index:1;text-align:left;
  font-weight:500;color:var(--ink2);padding:9px 10px 9px 8px;min-width:196px;max-width:300px;
  border-right:1px solid #f6efe3;line-height:1.5}
table.pjs-t tbody th .lb{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--ink)}
table.pjs-t tbody th .lbn{width:20px;height:20px;flex:0 0 20px;border-radius:6px;background:var(--sp-w);
  color:var(--sp-d);display:grid;place-items:center;font-size:11px}
table.pjs-t tbody th .lbt{display:block;color:var(--ink2);font-size:12px;margin-top:2px}
table.pjs-t tbody td{text-align:center;padding:7px 4px;min-width:86px}
table.pjs-t tbody tr:hover td{background:#fcfdfc}
table.pjs-t tbody td.hl,table.pjs-t tbody th.hl{background:#f2faf8}
table.pjs-t tbody td.dim{color:#cfc2ad}
.pjs-cell{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:34px;
  border:1px solid transparent;border-radius:8px;cursor:pointer;user-select:none;padding:4px 6px}
.pjs-cell:hover{background:#f6fbfa;border-color:var(--sp-b)}
.pjs-cell .dot{width:18px;height:18px;border:1.6px solid #d6c6ad;border-radius:50%;background:#fff}
.pjs-cell .dot.sq{border-radius:5px}
.pjs-cell.on{background:var(--sp-w);border-color:var(--sp-b)}
.pjs-cell.on .dot{border-color:var(--sp);background:var(--sp);box-shadow:inset 0 0 0 2.5px #fff}
.pjs-cell input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.pjs-cell.dis{background:#faf8f4;cursor:not-allowed}
.pjs-cell.dis .dot{background:#f0ece3;border-color:#e5dbc8}
.pjs-txt{width:100%;border:1px solid var(--line2);border-radius:8px;padding:8px 10px;font:inherit;
  font-size:12.5px;color:var(--ink);outline:none;min-height:36px}
.pjs-txt:focus{border-color:var(--sp);box-shadow:0 0 0 3px var(--sp-w)}
.pjs-txt::placeholder{color:#c9bda9}

/* 右侧答题卡 */
.pjs-card{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.pjs-card a{height:33px;border-radius:8px;border:1px solid #eee2cd;background:#fff;
  display:grid;place-items:center;font-size:13px;color:#a99b86;font-variant-numeric:tabular-nums;
  text-decoration:none;transition:background .15s,border-color .15s;cursor:pointer}
.pjs-card a:hover{border-color:var(--sp-b);color:var(--sp-d)}
.pjs-card a.done{background:var(--sp-w);border-color:var(--sp-b);color:var(--sp-d);font-weight:600}
.pjs-card a.cur{border-color:var(--sp);box-shadow:inset 0 0 0 1px var(--sp)}
.pjs-cdone{font-size:12.5px;color:var(--dim);margin:12px 0 13px;font-variant-numeric:tabular-nums}
.pjs-cdone b{color:var(--sp-d);font-weight:700}
.pjs-pc .pjs-aside .pjs-btn{margin-top:0;padding:12px;font-size:14px}
.pjs-hintx{font-size:11.5px;color:#b3a58e;text-align:center;margin-top:8px;line-height:1.5}
.pjs-pc .pjs-aside .pjs-anon{margin-top:14px;font-size:11px;line-height:1.65}

/* 电脑端二次确认：居中卡片 */
.pjs-pc .pjs-mask{align-items:center;justify-content:center;padding:24px}
.pjs-pc .pjs-sheet{border-radius:16px;max-width:400px;margin:0;padding:20px 20px 18px;
  box-shadow:0 18px 44px rgba(11,18,32,.24)}
.pjs-pc .pjs-sheet .st{font-size:17px}
.pjs-pc .pjs-sheet .btns button{padding:10px}

/* toast */
.pjs-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:90;
  background:rgba(30,41,59,.94);color:#fff;border-radius:10px;padding:10px 16px;font-size:13px;
  max-width:88vw;line-height:1.6;box-shadow:0 10px 24px rgba(0,0,0,.22)}
.pjs-toast.bad{background:#b42318}

@media (max-width:1080px){
  .pjs-pc .pjs-wrap{grid-template-columns:minmax(0,1fr)}
  .pjs-pc .pjs-aside{position:static;max-height:none}
  .pjs-pc .pjs-mx.is-cur{min-height:0}
  .pjs-card{grid-template-columns:repeat(10,1fr)}
}
@media (max-width:820px){
  .pjs-pc .pjs-wrap{padding:10px}
  .pjs-pc .pjs-mx{padding:13px 12px}
  .pjs-card{grid-template-columns:repeat(7,1fr)}
}
