/* 学生管理表格里的姓名 → 可点开档案 */
.stu-link{cursor:pointer;color:#2f7cf6;border-bottom:1px dashed #bcd0f5;font-weight:700}
@media(min-width:901px){ .stu-link{white-space:nowrap;display:inline-block} }
.stu-link:hover{color:#1d63d8;border-bottom-style:solid}
@media(max-width:900px){ .stu-link{border-bottom-color:#9fc0f2} }

/* ============ 学生档案抽屉 v1.82.0 ============
   老师端：学生管理点姓名 → 电脑右侧抽屉 / 手机底部上滑全屏面板
   所有选择器带 pf- 前缀，避免和 style.css 撞车 */

.pf-mask{position:fixed;inset:0;background:rgba(15,23,42,.46);z-index:900;opacity:0;visibility:hidden;
  transition:opacity .2s;-webkit-tap-highlight-color:transparent}
.pf-mask.on{opacity:1;visibility:visible}

.pf-drawer{position:fixed;top:0;right:0;bottom:0;width:min(1020px,94vw);background:#f4f6fa;z-index:901;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:-14px 0 44px rgba(15,23,42,.2);
  transform:translateX(102%);visibility:hidden;transition:transform .26s cubic-bezier(.4,0,.2,1)}
.pf-drawer.on{transform:none;visibility:visible}

.pf-head{flex:none;display:flex;align-items:center;gap:10px;padding:11px 18px;
  background:#fff;border-bottom:1px solid #e8edf4}
.pf-head .pf-t{flex:1;min-width:0}
.pf-head b{font-size:15px;color:#1f2937;letter-spacing:.2px}
.pf-head small{display:block;font-size:12px;color:#8a94a6;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-x{flex:none;width:32px;height:32px;border:0;border-radius:9px;background:#f1f4f9;color:#6b7280;
  font-size:15px;cursor:pointer;line-height:1}
.pf-x:hover{background:#e6ebf3}
.pf-tool{flex:none;height:32px;padding:0 12px;border:0;border-radius:9px;background:#eef4ff;
  color:#2f7cf6;font-size:12.5px;font-weight:600;cursor:pointer;margin-right:6px}
.pf-tool:hover{background:#e2ecff}

.pf-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px 18px 20px}
.pf-body::-webkit-scrollbar{width:8px}
.pf-body::-webkit-scrollbar-thumb{background:#d7dee9;border-radius:4px}
.pf-body::-webkit-scrollbar-track{background:transparent}

.pf-load{padding:70px 0;text-align:center;color:#8a94a6;font-size:13px}
.pf-err{padding:60px 20px;text-align:center;color:#c2410c;font-size:13.5px}

/* 关闭/复制 操作栏（手机固定底部） */
.pf-bar{display:none;flex:none;gap:9px;padding:10px 14px 14px;background:rgba(255,255,255,.97);
  border-top:1px solid #e8edf4}
.pf-bar button{border:0;border-radius:12px;padding:11px 0;font-size:13.5px;font-weight:600;cursor:pointer}
.pf-bar .s{flex:0 0 38%;background:#eef2f8;color:#374151}
.pf-bar .p{flex:1;background:linear-gradient(135deg,#3f76e6,#2f7cf6);color:#fff;
  box-shadow:0 4px 12px rgba(47,124,246,.3)}

/* ---------------- 电脑版 ---------------- */
.pf-pc{max-width:100%}
.pf-m{display:none}
.pf-c{background:#fff;border:1px solid #e8edf4;border-radius:14px;padding:15px 17px;margin-bottom:13px}
.pf-ch{display:flex;align-items:baseline;gap:8px;margin-bottom:11px}
.pf-ch h3{margin:0;font-size:14.5px;color:#1f2937;display:flex;align-items:center;gap:7px;font-weight:700}
.pf-ch .sub{font-size:12px;color:#9aa4b2;font-weight:400}
.pf-ch .rt{margin-left:auto;display:flex;background:#f1f4f9;border-radius:9px;padding:2px}
.pf-ch .rt button{border:0;background:transparent;font-size:11.5px;color:#6b7280;padding:3px 10px;
  border-radius:7px;font-weight:600;cursor:pointer}
.pf-ch .rt button.on{background:#fff;color:#2f7cf6;box-shadow:0 1px 4px rgba(31,41,55,.12)}

.pf-top{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.pf-ava{width:60px;height:60px;border-radius:17px;background:linear-gradient(135deg,#5b8def,#7b6cf6);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:25px;font-weight:700;
  box-shadow:0 6px 16px rgba(91,141,239,.3);flex:none}
.pf-who{flex:1;min-width:200px}
.pf-who h1{margin:0;font-size:20px;color:#1f2937;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pf-pill{font-size:11.5px;padding:2px 9px;border-radius:20px;background:#eef4ff;color:#2f7cf6;font-weight:600}
.pf-pill.gray{background:#f2f4f8;color:#6b7280}
.pf-meta{font-size:12.5px;color:#6b7280;margin-top:5px;line-height:1.7}
.pf-meta span+span:before{content:"·";margin:0 7px;color:#cbd5e1}
.pf-tags{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.pf-tags i{font-style:normal;font-size:11.5px;padding:2px 9px;border-radius:6px;background:#f0f7f5;color:#06b795;font-weight:600}
.pf-tags i.warn{background:#fff4ec;color:#c2410c}
.pf-tags i.cool{background:#f4f2ff;color:#5b4fd6}

.pf-kpis{display:flex;gap:10px;flex-wrap:wrap}
.pf-kpi{min-width:100px;padding:9px 13px;border-radius:12px;background:#f7f9fc;border:1px solid #f1f4f9;text-align:center}
.pf-kpi b{display:block;font-size:20px;line-height:1.25;color:#1f2937;font-weight:700;letter-spacing:-.4px}
.pf-kpi b small{font-size:12px;color:#9aa4b2;font-weight:600;margin-left:1px}
.pf-kpi i{font-style:normal;font-size:11.5px;color:#6b7280}
.pf-kpi.up b{color:#04957a}
.pf-kpi.down b{color:#c2410c}

.pf-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:13px;align-items:start}
@media(max-width:1100px){ .pf-grid{grid-template-columns:1fr} }

.pf-bars{display:flex;align-items:flex-end;gap:3px;height:96px;margin:6px 0 4px;
  border-bottom:1px solid #e8edf4}
.pf-bars .b{flex:1;background:#eef2f7;border-radius:3px 3px 0 0;min-height:2px;transition:.2s;cursor:default}
.pf-bars .b.on{background:linear-gradient(180deg,#5b8def,#2f7cf6)}
.pf-bars .b.pk{background:linear-gradient(180deg,#7b6cf6,#6a5ae0)}
.pf-bars .b:hover{filter:brightness(.94)}
.pf-bars-x{display:flex;justify-content:space-between;font-size:11px;color:#9aa4b2;margin-top:3px}
.pf-mini{display:flex;gap:18px;margin-top:12px;padding-top:12px;border-top:1px dashed #e8edf4;flex-wrap:wrap}
.pf-mini div{font-size:12px;color:#6b7280}
.pf-mini b{display:block;font-size:15.5px;color:#1f2937;font-weight:700}

.pf-prac{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.pf-ring{position:relative;width:104px;height:104px;flex:none}
.pf-ring svg{transform:rotate(-90deg)}
.pf-ring .txt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pf-ring .txt b{font-size:21px;letter-spacing:-.5px;color:#1f2937}
.pf-ring .txt i{font-style:normal;font-size:11px;color:#9aa4b2}
.pf-nums{flex:1;min-width:190px;display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}
.pf-nums div{font-size:12px;color:#6b7280}
.pf-nums b{display:block;font-size:15px;color:#1f2937}
.pf-tops{margin-top:12px}
.pf-row{display:flex;align-items:center;gap:9px;margin:7px 0;font-size:12.5px}
.pf-row .nm{width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#374151}
.pf-track{flex:1;height:7px;background:#eef2f7;border-radius:4px;overflow:hidden}
.pf-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#5b8def,#2f7cf6)}
.pf-fill.low{background:linear-gradient(90deg,#fbbf24,#f59e0b)}
.pf-row .v{width:100px;text-align:right;color:#6b7280;font-variant-numeric:tabular-nums;font-size:11.5px;white-space:nowrap}
.pf-row .v b{color:#374151;font-weight:600}

.pf-tb{width:100%;border-collapse:collapse;font-size:12.5px}
.pf-tb th{text-align:left;color:#9aa4b2;font-weight:600;font-size:11.5px;padding:6px 8px;border-bottom:1px solid #e8edf4}
.pf-tb td{padding:9px 8px;border-bottom:1px solid #f1f4f9;color:#374151}
.pf-tb tr:last-child td{border-bottom:0}
.pf-tb td.n{font-variant-numeric:tabular-nums}
.pf-sc{font-weight:700;font-size:13.5px}
.pf-sc.g{color:#04957a} .pf-sc.r{color:#dc2626} .pf-sc.y{color:#c2820b}
.pf-delta{font-size:11px;margin-left:4px}
.pf-delta.up{color:#04957a} .pf-delta.dn{color:#dc2626}
.pf-badge{font-size:11px;padding:1px 7px;border-radius:5px;background:#f2f4f8;color:#6b7280;white-space:nowrap}
.pf-badge.first{background:#fff7e6;color:#c2820b}

.pf-diag{display:flex;gap:10px;padding:11px 12px;border-radius:11px;margin-bottom:9px;align-items:flex-start}
.pf-diag:last-child{margin-bottom:0}
.pf-diag .dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex:none}
.pf-diag.ok{background:#f0fdf9;border:1px solid #c9f0e6} .pf-diag.ok .dot{background:#06b795}
.pf-diag.warn{background:#fffbf0;border:1px solid #fde9bf} .pf-diag.warn .dot{background:#f59e0b}
.pf-diag.bad{background:#fff5f5;border:1px solid #fbd5d5} .pf-diag.bad .dot{background:#ef4444}
.pf-diag b{display:block;font-size:12.8px;margin-bottom:1px;color:#1f2937}
.pf-diag span{font-size:12px;color:#6b7280;line-height:1.55}

.pf-pgs .it{margin:10px 0}
.pf-pgs .lbl{display:flex;justify-content:space-between;font-size:12.5px;color:#374151;margin-bottom:5px}
.pf-pgs .lbl em{font-style:normal;color:#6b7280;font-variant-numeric:tabular-nums}
.pf-pgs .track{height:8px;background:#eef2f7;border-radius:5px;overflow:hidden}
.pf-pgs .fill{height:100%;border-radius:5px;background:linear-gradient(90deg,#34d399,#06b795)}
.pf-pgs .fill.low{background:linear-gradient(90deg,#fbbf24,#f59e0b)}

.pf-adv{list-style:none;margin:0;padding:0}
.pf-adv li{display:flex;gap:9px;font-size:12.5px;color:#374151;padding:9px 0;border-bottom:1px dashed #e8edf4}
.pf-adv li:last-child{border-bottom:0;padding-bottom:0}
.pf-adv li b{flex:none;width:18px;height:18px;border-radius:5px;background:#eef4ff;color:#2f7cf6;
  font-size:11px;display:flex;align-items:center;justify-content:center;margin-top:1px}

/* ---------------- 手机版 ---------------- */
.pf-note{display:flex;align-items:center;gap:9px;margin:12px 0 0;padding:11px 13px;border-radius:14px;
  background:#fff;border:1px solid #e8edf4}
.pf-note .d{width:8px;height:8px;border-radius:50%;flex:none}
.pf-note.bad{background:#fff5f5;border-color:#fbd5d5} .pf-note.bad .d{background:#ef4444}
.pf-note.warn{background:#fffbf0;border-color:#fde9bf} .pf-note.warn .d{background:#f59e0b}
.pf-note.ok{background:#f0fdf9;border-color:#c9f0e6} .pf-note.ok .d{background:#06b795}
.pf-note span{flex:1;min-width:0;font-size:12.5px;color:#374151;font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-note em{font-style:normal;font-size:11px;color:#9aa4b2;flex:none}

.pf-hero{background:linear-gradient(155deg,#3f76e6 0%,#5b8def 46%,#7b6cf6 100%);
  padding:14px 16px 16px;color:#fff;border-radius:16px;position:relative;overflow:hidden}
.pf-hero:after{content:"";position:absolute;right:-52px;top:-60px;width:170px;height:170px;
  border-radius:50%;background:rgba(255,255,255,.1)}
.pf-h-top{display:flex;gap:12px;align-items:center;position:relative}
.pf-mava{width:52px;height:52px;flex:none;border-radius:16px;background:rgba(255,255,255,.24);
  border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;
  font-size:22px;font-weight:700}
.pf-h-top h1{margin:0;font-size:18px;line-height:1.35;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pf-h-top h1 .pf-pill{background:rgba(255,255,255,.24);color:#fff;font-size:11px;padding:1.5px 8px}
.pf-h-meta{font-size:11.5px;opacity:.88;margin-top:5px;line-height:1.6}
.pf-mtags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;position:relative}
.pf-mtags i{font-style:normal;font-size:11px;padding:2.5px 9px;border-radius:20px;
  background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.26);font-weight:600}
.pf-mtags i.warn{background:rgba(255,224,178,.94);color:#9a3412;border-color:transparent}
.pf-mkpis{display:flex;gap:7px;margin-top:12px;position:relative}
.pf-mk{flex:1;min-width:0;background:rgba(255,255,255,.95);border-radius:12px;padding:8px 4px 7px;
  text-align:center;box-shadow:0 4px 12px rgba(23,42,84,.16)}
.pf-mk b{display:block;font-size:16px;line-height:1.2;color:#1f2937;font-weight:700;letter-spacing:-.5px}
.pf-mk b small{font-size:10.5px;color:#9aa4b2;font-weight:600;margin-left:1px;letter-spacing:0}
.pf-mk i{font-style:normal;font-size:10.5px;color:#6b7280;display:block;margin-top:2px}
.pf-mk.down b{color:#c2410c} .pf-mk.up b{color:#04957a}

.pf-mc{background:#fff;border-radius:16px;padding:14px 14px 15px;margin-top:12px;
  box-shadow:0 2px 10px rgba(31,41,55,.045)}
.pf-mch{display:flex;align-items:baseline;gap:7px;margin-bottom:10px}
.pf-mch h3{margin:0;font-size:14px;font-weight:700;color:#1f2937}
.pf-mch .sub{font-size:10.5px;color:#9aa4b2}
.pf-mch .rt{margin-left:auto;display:flex;background:#f1f4f9;border-radius:9px;padding:2px}
.pf-mch .rt button{border:0;background:transparent;font-size:11px;color:#6b7280;padding:3px 9px;
  border-radius:7px;font-weight:600;cursor:pointer}
.pf-mch .rt button.on{background:#fff;color:#2f7cf6;box-shadow:0 1px 4px rgba(31,41,55,.12)}

.pf-mbars{display:flex;align-items:flex-end;gap:2px;height:96px;margin:4px 0 3px;
  border-bottom:1px solid #e8edf4}
.pf-mbars .b{flex:1;min-width:0;background:#eaeff7;border-radius:2px 2px 0 0;min-height:2px}
.pf-mbars .b.on{background:linear-gradient(180deg,#6a9cf5,#2f7cf6)}
.pf-mbars .b.pk{background:linear-gradient(180deg,#8b7bf7,#6a5ae0)}
.pf-mbars.w7{gap:8px;justify-content:space-around}
.pf-mbars.w7 .bw{flex:1;max-width:34px;height:100%;display:flex;align-items:flex-end;
  background:#f4f7fc;border-radius:7px 7px 0 0}
.pf-mbars.w7 .bw .b{width:100%;flex:none;border-radius:7px 7px 0 0}
.pf-mbars-x{display:flex;justify-content:space-between;font-size:10px;color:#9aa4b2}
.pf-mnums{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px;padding-top:12px;
  border-top:1px dashed #e8edf4}
.pf-mnums div{font-size:11px;color:#6b7280;background:#f8fafc;border-radius:10px;padding:8px 10px}
.pf-mnums b{display:block;font-size:14px;color:#1f2937;font-weight:700;margin-bottom:1px}

.pf-mring{display:flex;align-items:center;gap:14px}
.pf-mring .pf-ring{width:92px;height:92px}
.pf-mring .pf-ring svg{width:92px;height:92px}
.pf-mring .nums{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:8px 10px}
.pf-mring .nums div{font-size:10.5px;color:#6b7280}
.pf-mring .nums b{display:block;font-size:14px;color:#1f2937;letter-spacing:-.2px}

.pf-mtops{margin-top:13px;padding-top:11px;border-top:1px dashed #e8edf4}
.pf-mrow{margin:9px 0}
.pf-mrow .t1{display:flex;align-items:baseline;gap:8px;font-size:12px;margin-bottom:4px}
.pf-mrow .t1 em{font-style:normal;color:#374151;flex:1;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.pf-mrow .t1 span{flex:none;font-size:11px;color:#6b7280;white-space:nowrap}
.pf-mrow .t1 span b{color:#374151;font-weight:700}
.pf-mrow .pf-track{height:6px}
.pf-mrow .pf-fill{height:100%}

.pf-exm{padding:10px 0;border-bottom:1px solid #f1f4f9}
.pf-exm:last-child{border-bottom:0;padding-bottom:0}
.pf-exm:first-child{padding-top:0}
.pf-exm .e1{display:flex;align-items:baseline;gap:8px}
.pf-exm .e1 .en{flex:1;min-width:0;font-size:12.5px;color:#1f2937;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.pf-exm .e1 .es{flex:none;font-variant-numeric:tabular-nums}
.pf-exm .e1 .pf-sc{font-size:17px;letter-spacing:-.3px}
.pf-exm .e1 small{font-size:10.5px;color:#cbd5e1;margin-left:1px}
.pf-exm .e2{display:flex;align-items:center;gap:8px;margin-top:3px;font-size:11px;color:#6b7280}
.pf-exm .e2 .et{margin-left:auto;color:#9aa4b2;font-variant-numeric:tabular-nums}

.pf-mstat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;padding-top:11px;
  border-top:1px dashed #e8edf4;text-align:center}
.pf-mstat div{font-size:10.5px;color:#6b7280}
.pf-mstat b{display:block;font-size:15px;color:#1f2937;font-weight:700;margin-bottom:1px}

/* 断点：手机 = 底部上滑面板 + 单列版式 */
@media(max-width:900px){
  .pf-drawer{top:auto;left:0;right:0;width:auto;max-width:none;height:92vh;height:92dvh;
    border-radius:18px 18px 0 0;transform:translateY(102%);
    box-shadow:0 -10px 40px rgba(15,23,42,.24)}
  .pf-drawer.on{transform:none}
  .pf-head{padding:10px 12px;background:linear-gradient(180deg,#2f63d6,#3f76e6);
    border-bottom:0;border-radius:18px 18px 0 0;color:#fff;justify-content:center;position:relative}
  .pf-head .pf-t{flex:none;text-align:center}
  .pf-head b{color:#fff;font-size:15px}
  .pf-head small{color:rgba(255,255,255,.82);text-align:center}
  .pf-x{position:absolute;right:10px;top:50%;transform:translateY(-50%);
    background:rgba(255,255,255,.18);color:#fff;width:30px;height:30px;border-radius:10px}
  .pf-body{padding:0 12px 12px;background:#f4f6fa}
  .pf-pc{display:none}
  .pf-m{display:block;padding-top:0}
  .pf-bar.on{display:flex}
  .pf-bar{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
  .pf-tool{display:none}
}
@media(max-width:900px){
  .pf-hero{border-radius:0 0 16px 16px;margin:0 -12px 0;padding-left:16px;padding-right:16px}
}
@media(max-width:420px){
  .pf-mkps{gap:5px}
  .pf-mk b{font-size:15px}
}

/* ============ v1.84.0 自考本科「个人信息」 ============
   和现有卡片同一套视觉：浅底字段块 + 虚分隔 + 6 档状态色。
   电脑一行 4 格 / 3 格，手机两列；进度那段在手机上也保持横向三段。 */
.pf-pi{border-color:#dbe6fb;background:linear-gradient(180deg,#fbfdff 0%,#fff 44%)}
.pf-pi-h{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.pf-pi-h h3{margin:0;font-size:14.5px;color:#1f2937;font-weight:700;display:flex;align-items:center;gap:7px}
.pf-pi-h h3:before{content:"";width:3px;height:13px;border-radius:2px;background:#2f7cf6}
.pf-pi-src{font-size:11px;color:#9aa4b2;background:#f2f5fa;padding:2px 8px;border-radius:20px}
.pf-pi-edit{margin-left:auto;border:0;background:#eef4ff;color:#2f7cf6;font-size:11.5px;font-weight:600;
  border-radius:7px;padding:4px 10px;cursor:pointer}
.pf-pi-edit:hover{background:#e2ecff}

.pf-pi-g{padding:10px 0}
.pf-pi-g+.pf-pi-g{border-top:1px dashed #e6ecf5}
.pf-pi-gl{font-size:11px;color:#9aa4b2;letter-spacing:.4px;margin-bottom:6px}
.pf-pi-grid{display:grid;gap:9px}
.pf-pi-grid.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.pf-pi-grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}

.pf-fld{background:#f7f9fc;border:1px solid #f1f4f9;border-radius:10px;padding:8px 11px;min-width:0}
.pf-fld .k{font-size:11px;color:#9aa4b2}
.pf-fld .v{font-size:13px;font-weight:600;color:#1f2937;margin-top:3px;line-height:1.45;
  display:flex;align-items:center;gap:5px;flex-wrap:wrap;word-break:break-all}
.pf-fld .v.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;letter-spacing:.2px;color:#0f172a}
.pf-fld .v .tel{color:#2f7cf6;text-decoration:none;font-family:ui-monospace,Menlo,monospace;font-size:12.5px}
.pf-fld .v .nil,.pf-cnt b.nil,.pf-prog-top b.nil{color:#b6bfcc;font-weight:500}
.pf-no{background:#fff;border:1px solid #e2eaf7;border-radius:5px;padding:0 5px;line-height:17px;font-size:11.5px}
.pf-cp{border:0;background:#e6eefc;color:#5b8def;border-radius:5px;width:18px;height:18px;font-size:10px;
  line-height:1;padding:0;cursor:pointer;flex:none}
.pf-tch{display:inline-flex;align-items:center;gap:5px;background:#eef4ff;color:#1d63d8;border-radius:20px;
  padding:2px 9px 2px 3px;font-size:12px;font-weight:600}
.pf-tch i{width:17px;height:17px;border-radius:50%;background:linear-gradient(135deg,#5b8def,#7b6cf6);
  color:#fff;font-style:normal;font-size:9.5px;display:flex;align-items:center;justify-content:center;flex:none}

/* 学位英语 6 档 */
.pf-deg{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;
  border-radius:8px;padding:4px 10px;white-space:nowrap}
.pf-deg:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.pf-deg.d-nofill{background:#f4f6fa;color:#aab3c0}
.pf-deg.d-wait{background:#f2f4f8;color:#77808f}
.pf-deg.d-book{background:#eef4ff;color:#1d63d8}
.pf-deg.d-pass{background:#e9f8f4;color:#059178}
.pf-deg.d-retake{background:#fff3ea;color:#c2410c}
.pf-deg.d-free{background:#f5f3ff;color:#5b4fd6}
.pf-deg-note{display:block;font-size:10.5px;color:#9aa4b2;margin-top:4px;line-height:1.4;word-break:break-all}

/* 本科进度三段 */
.pf-prog3{display:grid;grid-template-columns:130px auto 1fr;gap:14px;align-items:center}
.pf-prog3 .seg{min-width:0}
.pf-prog3 .seg+.seg{border-left:1px dashed #e3eaf4;padding-left:14px}
.pf-prog3 .k{font-size:11px;color:#9aa4b2;margin-bottom:4px}
.pf-cnt{display:flex;gap:18px}
.pf-cnt div{text-align:center}
.pf-cnt b{display:block;font-size:18px;line-height:1.25;letter-spacing:-.3px;color:#1f2937}
.pf-cnt b.o{color:#c2410c} .pf-cnt b.g{color:#059178}
.pf-cnt i{font-style:normal;font-size:11px;color:#9aa4b2}
.pf-prog-top{display:flex;align-items:baseline;gap:7px;margin-bottom:5px}
.pf-prog-top b{font-size:17px;letter-spacing:-.4px;color:#1f2937}
.pf-prog-top b.o{color:#c2410c} .pf-prog-top b.g{color:#06b795} .pf-prog-top b.b{color:#2f7cf6}
.pf-prog-top span{font-size:11.5px;color:#6b7280}
.pf-track2{height:9px;border-radius:6px;background:#eef1f7;overflow:hidden}
.pf-track2>i{display:block;height:100%;border-radius:6px;background:#d7dee9}
.pf-track2>i.g{background:linear-gradient(90deg,#08c39c,#06b795)}
.pf-track2>i.o{background:linear-gradient(90deg,#f0a95a,#e07a35)}
.pf-track2>i.b{background:linear-gradient(90deg,#5b9bf8,#2f7cf6)}
.pf-rest{font-size:10.5px;color:#9aa4b2;margin-top:4px}

/* 科目明细 */
.pf-subj{margin-top:9px;border-top:1px dashed #e6ecf5;padding-top:8px}
.pf-subj summary{font-size:12px;color:#2f7cf6;font-weight:600;cursor:pointer;list-style:none;outline:none}
.pf-subj summary::-webkit-details-marker{display:none}
.pf-subj summary:before{content:"▸ ";color:#9aa4b2}
.pf-subj[open] summary:before{content:"▾ "}
.pf-subj-list{margin-top:8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px 18px}
.pf-sj{display:flex;align-items:center;gap:7px;font-size:11.5px;color:#374151;padding:3px 0;min-width:0}
.pf-sj .dot{width:6px;height:6px;border-radius:50%;flex:none;background:#d3dae4}
.pf-sj.p .dot{background:#06b795} .pf-sj.w .dot{background:#e0a33e}
.pf-sj .nm{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-sj .st{font-size:10.5px;color:#9aa4b2;flex:none}
.pf-sj.p .st{color:#059178} .pf-sj.w .st{color:#b45309}
.pf-subj-empty{margin-top:9px;border-top:1px dashed #e6ecf5;padding-top:8px;font-size:11.5px;color:#b6bfcc}

/* 赠送权益 */
.pf-gift{display:flex;gap:9px;flex-wrap:wrap}
.pf-gt{display:flex;align-items:center;gap:7px;border:1px solid #e2eaf7;background:#f8fbff;
  border-radius:10px;padding:6px 11px;font-size:12px;min-width:0}
.pf-gt .nm{font-weight:700;color:#1d63d8}
.pf-gt .free{font-size:10px;font-weight:700;color:#c2410c;background:#fff4e8;border:1px solid #fbdcbb;
  border-radius:4px;padding:0 5px;line-height:15px}
.pf-gt .cls{font-size:11px;color:#6b7280}
.pf-gt .cls b{color:#374151;font-weight:600}
.pf-gt.miss{border-color:#fbdcc4;background:#fffbf6}
.pf-gt.miss .free{color:#b45309;background:#fff7ed}
.pf-gt.miss .cls b{color:#c2410c}

/* 编辑态 */
/* 编辑表单：标签在上、输入框在下，电脑 3 列 / 手机 2 列，怎么窄都不会挤 */
.pf-pie-box{padding-top:2px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px 11px}
.pf-pie-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.pf-pie-f label{font-size:11px;color:#9aa4b2}
.pf-pie-f input,.pf-pie-f select{height:32px;border:1px solid #dfe6f0;border-radius:8px;
  padding:0 9px;font-size:12.5px;color:#1f2937;background:#fff;outline:none;min-width:0;width:100%}
.pf-pie-f input:focus,.pf-pie-f select:focus{border-color:#2f7cf6;box-shadow:0 0 0 3px rgba(47,124,246,.12)}
.pf-pie-act{display:flex;gap:9px;margin-top:3px;grid-column:1/-1}
.pf-pie-act button{flex:1;height:34px;border:0;border-radius:9px;font-size:12.5px;font-weight:600;cursor:pointer}
.pf-pie-act .s{background:#eef2f8;color:#374151}
.pf-pie-act .p{background:linear-gradient(135deg,#3f76e6,#2f7cf6);color:#fff}
.pf-pie-act .p:disabled{opacity:.6}

/* ---- 手机：两列，进度段保持横向 ---- */
@media(max-width:900px){
  .pf-pi-h h3{font-size:13.5px}
  .pf-pi-grid.g4,.pf-pi-grid.g3{grid-template-columns:1fr 1fr;gap:7px}
  .pf-pi-grid .pf-fld{padding:7px 9px;border-radius:9px}
  .pf-pi-grid .pf-fld .k{font-size:10px}
  .pf-pi-grid .pf-fld .v{font-size:12.5px;margin-top:2px}
  .pf-pi-grid .pf-fld .v.mono{font-size:10.5px;letter-spacing:0;gap:4px;flex-wrap:nowrap}
  .pf-pi-grid .pf-fld .v.mono .pf-no{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pf-pi-grid .g3 .pf-fld:nth-child(3){grid-column:1/-1}
  .pf-prog3{grid-template-columns:1fr;gap:9px}
  .pf-prog3 .seg+.seg{border-left:0;padding-left:0;border-top:1px dashed #e6ecf5;padding-top:8px}
  /* 学位英语：标题和徽章并一行，省掉一整行高度 */
  .pf-prog3 .seg:nth-child(1){display:flex;align-items:center;gap:9px}
  .pf-prog3 .seg:nth-child(1) .k{margin-bottom:0}
  /* 三个数字：均分三列，标题藏在每格自己的小字里，不再重复一遍 */
  .pf-prog3 .seg:nth-child(2) .k{display:none}
  .pf-cnt{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
  .pf-cnt b{font-size:17px}
  .pf-cnt i{font-size:10.5px}
  .pf-subj-list{grid-template-columns:1fr 1fr;gap:2px 12px}
  /* 赠送权益：并排两个，班级名折到第二行 */
  .pf-gift{flex-wrap:wrap;gap:7px}
  .pf-gt{flex:1 1 46%;flex-wrap:wrap;justify-content:flex-start;row-gap:1px;padding:6px 9px}
  .pf-gt .nm{font-size:11.5px}
  .pf-gt .cls{width:100%;font-size:10px;line-height:1.3}
  .pf-pie-box{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 9px}
  .pf-pie-f input,.pf-pie-f select{height:34px;font-size:13px}
}
/* v1.86.0 学生档案：课程与回放 + 播放层 */

.pf-course { padding: 10px 0; border-bottom: 1px dashed #eef1f6; }
.pf-course:last-child { border-bottom: 0; padding-bottom: 0; }
.pf-course-h { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 13px; }
.pf-course-h b { color: #1f2937; font-weight: 600; flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-cat { font-size: 10.5px; padding: 1px 6px; border-radius: 4px; background: #eef4ff;
  color: #2f7cf6; font-weight: 600; flex: none; }
.pf-cn { font-size: 11.5px; color: #8a94a6; font-variant-numeric: tabular-nums; flex: none; }
.pf-arrow { font-size: 10px; color: #b6c0cf; transition: transform .15s; flex: none; }
.pf-course-h.open .pf-arrow { transform: rotate(180deg); }
.pf-course .pf-track { margin: 7px 0 4px; }
.pf-course .pf-fill.low { background: #e3e9f3; }
.pf-course-m { font-size: 11.5px; color: #9aa4b2; line-height: 1.6; }

.pf-les-list { margin-top: 8px; background: #f7f9fc; border-radius: 8px; padding: 4px;
  max-height: 250px; overflow-y: auto; }
.pf-les { display: flex; align-items: center; gap: 7px; padding: 6px 8px; border-radius: 6px;
  font-size: 12px; color: #4a5568; cursor: pointer; }
.pf-les:hover { background: #eaf1fd; color: #2f7cf6; }
.pf-les i { width: 14px; text-align: center; font-style: normal; font-size: 10px;
  color: #b6c0cf; flex: none; }
.pf-les.done i { color: #17a673; }
.pf-les span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-les em { font-style: normal; font-size: 10px; color: #8a94a6; background: #eef1f5;
  border-radius: 3px; padding: 0 4px; flex: none; }

/* 播放层：盖在档案抽屉里，不新开窗口 */
.pf-play { position: absolute; inset: 0; z-index: 20; }
.pf-play-mask { position: absolute; inset: 0; background: rgba(15, 23, 42, .62); }
.pf-play-box { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: min(880px, 92%); height: min(560px, 82%); background: #0f172a; border-radius: 12px;
  overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 20px 60px rgba(0, 0, 0, .45); }
.pf-play-h { display: flex; align-items: center; gap: 10px; padding: 10px 14px;
  background: #151f33; color: #e2e8f0; font-size: 13px; flex: none; }
.pf-play-h b { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; font-weight: 600; }
.pf-play-h button { border: 0; background: transparent; color: #94a3b8; font-size: 16px;
  cursor: pointer; padding: 0 4px; }
.pf-play-body { flex: 1; min-height: 0; background: #000; }

@media (max-width: 800px) {
  .pf-play-box { width: 96%; height: 72%; }
  .pf-les-list { max-height: 200px; }
}
