/* ============================================================
 * Luxemon360 学习平台 · 应用区 v4「树语」— 2026-09-27
 * 与首页复刻区同一设计语言:Fahkwang / Manrope / Noto Sans SC · 品牌绿 #3A9F48
 * 核心元素 = 尊茂学习与发展中心「树」剪影(资产与来源见 design/theme/README.md)
 * 树影强度 A = 16%(超哥 2026-09-27 拍板)
 * ============================================================ */

/* ---------- 功能页 Hero 绿带 ---------- */
.phero{position:relative;overflow:hidden;color:#fff;background:linear-gradient(108deg,#1F6130 0%,#2A7A36 34%,#379B45 68%,#4AA854 100%)}
.phero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 190% at 88% -30%,rgba(255,255,255,.16),rgba(255,255,255,0) 58%)}
.phero .ph-in{position:relative;z-index:2;max-width:none;margin:0 auto;padding:36px clamp(20px,2.4vw,88px) 38px;min-height:148px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.phero .peyebrow{display:flex;align-items:center;gap:9px;font-family:var(--disp);font-size:11.5px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:rgba(255,255,255,.92)}
.phero .peyebrow svg{width:13px;height:13px;fill:rgba(255,255,255,.92);flex:0 0 auto}
.phero h1{font-family:var(--disp);font-size:clamp(23px,3vw,33px);font-weight:600;letter-spacing:.02em;line-height:1.42;text-shadow:0 2px 18px rgba(12,40,18,.16)}
.phero .psub{font-size:13px;line-height:1.95;color:rgba(255,255,255,.87);max-width:640px}
.phero .ptree{position:absolute;z-index:1;right:-28px;top:50%;transform:translateY(-50%);height:256%;opacity:.16;pointer-events:none;user-select:none}
.phero .pcrumb{font-size:12px;color:rgba(255,255,255,.75)}
.phero .pcrumb a{color:rgba(255,255,255,.82)}
.phero .pcrumb a:hover{color:#fff}
.phero .ph-meta{display:flex;gap:18px;flex-wrap:wrap;align-items:center;font-size:12.5px;color:rgba(255,255,255,.92);margin-top:2px}
.phero .ph-cta{margin-left:auto}
.phero .ph-cta .btn{box-shadow:0 10px 26px rgba(0,0,0,.16)}
body.app-hero .page{padding:0;max-width:none}
.pwrap{max-width:none;margin:0 auto;padding:24px clamp(20px,2.4vw,88px) 72px}

/* ---------- 课程卡:封面树影 / 筹备占位卡 ---------- */
.cov{height:118px}
.cov .ctree{position:absolute;right:-8px;bottom:-36px;height:170px;opacity:.16;pointer-events:none}
.cc{border-radius:12px}
.cc.gc{border-style:dashed;background:#FBFDF9;cursor:default}
.cc.gc .cov{background:#F1F8EE}
.cc.gc .cov .ctree{opacity:.2}
.cc.gc .cov-t2{color:#9DB39B;font-weight:700;font-size:13px;letter-spacing:.14em;position:relative;z-index:1}
.cc.gc .tt{color:#8FA38D;font-weight:600}
.cat{transition:.18s}
.cat.on{box-shadow:0 8px 18px rgba(58,159,72,.24)}

/* ---------- 区块标题绿杠 ---------- */
.card h3{display:flex;align-items:center;gap:9px}
.card h3::before,.setcard h4::before{content:"";width:4px;height:14px;border-radius:2px;background:var(--p);flex:0 0 auto}

/* ---------- 即将上线卡片树影 ---------- */
.coming{position:relative;overflow:hidden}
.coming::after{content:"";position:absolute;right:-34px;bottom:-58px;width:230px;height:230px;background:url('../img/theme/tree-green.png') no-repeat center/contain;opacity:.07;pointer-events:none}
.coming>*{position:relative;z-index:1}

/* ---------- 响应式 ---------- */
@media (max-width:980px){
  .phero .ptree{right:-120px;height:236%;opacity:.12}
}
@media (max-width:720px){
  .phero .ph-in{padding:26px 16px 28px;min-height:0;gap:6px}
  .phero .ptree{right:-140px;opacity:.1}
  .pwrap{padding:16px 16px 56px}
  .phero .ph-cta{margin-left:0}
}

/* ---------- 账号设置：通知偏好 + 站内消息（2026-09-28 B8） ---------- */
/* ⚠️ 顺带修真 bug：site.css 的 .setcard h4 没设 display:flex，
   而这里给它的 ::before 用了 flex:0 0 auto → 绿杠根本没法按预期成块显示。
   .card h3 有 display:flex，.setcard h4 漏了。补上。 */
.setcard h4{display:flex;align-items:center;gap:9px}

/* 三行偏好开关：左文字右开关，图标区宽度固定 → 三行严格对齐 */
.preflist{display:flex;flex-direction:column}
.prefrow{display:flex;align-items:center;gap:18px;padding:14px 2px;border-bottom:1px dashed #E7EFE4;cursor:pointer}
.prefrow:last-child{border-bottom:0}
.prefrow .pfl{flex:1 1 auto;min-width:0}
.prefrow .pfl b{display:block;font-size:13.5px;font-weight:600;color:var(--dg);margin-bottom:3px}
.prefrow .pfl i{display:block;font-style:normal;font-size:12px;line-height:1.6;color:var(--mut2)}
.prefrow .pfl em{font-style:normal;color:var(--pd);font-weight:600}
/* 原生 checkbox 只做无障碍承载，视觉用 .pfsw 画 —— 保证三家浏览器一致 */
.prefrow input[type=checkbox]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.prefrow .pfsw{flex:0 0 auto;position:relative;width:42px;height:24px;border-radius:999px;
  background:#DDE3DA;border:1px solid #D2DACF;transition:background .18s,border-color .18s}
.prefrow .pfsw::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .18s}
.prefrow input:checked + .pfsw{background:var(--p);border-color:var(--p)}
.prefrow input:checked + .pfsw::after{transform:translateX(18px)}
.prefrow input:focus-visible + .pfsw{box-shadow:0 0 0 3px rgba(58,159,72,.28)}

/* 表单提示条（messages） */
.msgs{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.msg{font-size:12.5px;line-height:1.6;border-radius:12px;padding:10px 14px;
  background:var(--soft);color:var(--pd);border:1px solid #D6E8D2}
.msg.warning{background:#FDF7E8;color:#8A6100;border-color:#F0E2BC}
.msg.error{background:#FDEDEC;color:#A32318;border-color:#F3D2CE}

/* 侧栏「通知偏好」未读数小圆点 */
.setmenu .sm{display:flex;align-items:center;gap:8px}
.setmenu .sdot{margin-left:auto;font-style:normal;font-size:10.5px;font-weight:700;line-height:1;
  min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--p);color:#fff;
  display:inline-flex;align-items:center;justify-content:center}

/* 最近消息列表 */
.noteblk{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}
.nb-h{font-size:12.5px;font-weight:600;color:var(--dg);margin-bottom:10px}
.nlist{display:flex;flex-direction:column}
.nrow{display:flex;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px dashed #E7EFE4;font-size:12.5px}
.nrow:last-child{border-bottom:0}
.nrow.un .nt{font-weight:600;color:var(--dg)}
.nrow .nk{flex:0 0 48px;font-size:10.5px;font-weight:600;color:var(--pd);background:var(--soft);
  border-radius:4px;padding:3px 0;text-align:center}
.nrow .nt{flex:1 1 auto;min-width:0;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nrow .nd{flex:0 0 auto;font-size:11px;color:var(--mut2);font-variant-numeric:tabular-nums}
.nempty{font-size:12.5px;color:var(--mut2);padding:14px 2px}

/* ================= 认证项目 B5（2026-09-28） ================= */

/* ---- 通用应用内弹窗（设计硬规则：禁原生 confirm/alert；原生还会阻塞 CDP） ---- */
.dlg{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center}
.dlg[hidden]{display:none}
.dlg-mask{position:absolute;inset:0;background:rgba(20,36,24,.42);backdrop-filter:blur(2px)}
.dlg-card{position:relative;width:min(420px,calc(100vw - 40px));background:#fff;border-radius:16px;
  padding:22px 24px;box-shadow:0 24px 60px rgba(16,40,22,.28);border:1px solid var(--line)}
.dlg-card h4{font-size:15.5px;font-weight:700;color:var(--dg);margin:0 0 8px}
.dlg-card p{font-size:13px;line-height:1.7;color:var(--mut2);margin:0 0 18px}
.dlg-foot{display:flex;justify-content:flex-end;gap:10px}

/* ---- 面包屑（phero 深绿底上的浅色文字） ---- */
.pcrumb{font-size:12.5px;color:rgba(255,255,255,.82);margin-bottom:8px}
.pcrumb a{color:rgba(255,255,255,.82);text-decoration:none;border-bottom:1px solid rgba(255,255,255,.32)}
.pcrumb a:hover{color:#fff}

.hint{font-size:12px;line-height:1.7;color:var(--mut2);margin:14px 0 0}
.hint b{color:var(--pd)}

.sec-head{display:flex;align-items:baseline;gap:12px;margin:8px 0 14px}
.sec-head h2{font-size:16px;font-weight:700;color:var(--dg);margin:0}
.sec-head .cnt,.sec-head .more{margin-left:auto;font-size:12.5px;color:var(--mut2)}
.sec-head .more{color:var(--pd);font-weight:600;text-decoration:none}

/* ---- 我的证书·横条 ---- */
.certstrip{display:flex;flex-direction:column;gap:8px;margin-bottom:26px}
.certchip{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;
  border:1px solid var(--line);border-radius:12px;text-decoration:none;transition:border-color .16s,box-shadow .16s}
.certchip:hover{border-color:var(--p);box-shadow:0 6px 18px rgba(58,159,72,.12)}
.certchip.dead{opacity:.55}
.certchip .ci{flex:0 0 auto;font-size:20px;line-height:1}
.certchip .cb{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.certchip .cb b{font-size:13.5px;color:var(--dg)}
.certchip .cb i{font-style:normal;font-size:11.5px;color:var(--mut2);font-variant-numeric:tabular-nums}
.certchip .cv{flex:0 0 auto;font-size:13px;font-weight:700;color:var(--pd);font-variant-numeric:tabular-nums}

.cert-cov{position:relative}
.cert-cov .certseal{position:absolute;right:14px;bottom:12px;font-size:11px;font-weight:600;
  color:#fff;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.4);
  border-radius:999px;padding:3px 10px;backdrop-filter:blur(2px)}

/* ---- 系列课程列表 ---- */
.pclist{display:flex;flex-direction:column}
.pcrow{display:flex;align-items:center;gap:14px;padding:13px 2px;border-bottom:1px dashed #E7EFE4}
.pcrow:last-child{border-bottom:0}
.pcrow .pn{flex:0 0 26px;height:26px;border-radius:50%;background:var(--soft);color:var(--pd);
  font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.pcrow.done .pn{background:var(--p);color:#fff}
.pcrow .pb{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.pcrow .pb b{font-size:13.5px;font-weight:600;color:var(--dg)}
/* 「必修」小标（2026-10-03）：系列课 28 门里只有 5 门是必修，详情页要一眼分得清 */
.pcrow .pb b .pbadge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;
  background:var(--p);color:#fff;font-size:10.5px;font-style:normal;font-weight:600;
  vertical-align:1px;letter-spacing:.02em}
.pcrow .pb i{font-style:normal;font-size:11.5px;color:var(--mut2)}
.pcrow .ps{flex:0 0 auto;font-size:11px;font-weight:600;color:var(--mut2);
  background:#F0F3EE;border-radius:999px;padding:3px 10px}
.pcrow.done .ps{background:var(--soft);color:var(--pd)}
.pcrow .pgo{flex:0 0 auto;font-size:12px;font-weight:600;color:var(--pd);text-decoration:none}
.pcrow .pgo:hover{text-decoration:underline}

/* ---- 考核记录 ---- */
.atlist{display:flex;flex-direction:column}
.atrow{display:flex;align-items:center;gap:14px;padding:12px 2px;border-bottom:1px dashed #E7EFE4;font-size:12.5px}
.atrow:last-child{border-bottom:0}
.atrow .ad{flex:0 0 auto;color:var(--mut2);font-variant-numeric:tabular-nums}
.atrow .asc{flex:0 0 auto;font-weight:700;color:#A32318;font-variant-numeric:tabular-nums}
.atrow .asc.ok{color:var(--pd)}
.atrow .as{flex:0 0 auto;color:var(--mut2)}
.atrow .ago{margin-left:auto;color:var(--pd);font-weight:600;text-decoration:none}
.atrow .ago:hover{text-decoration:underline}

/* ---- 考核答题 ---- */
.examlist{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}
.exq{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 24px;
  border-left:3px solid transparent;transition:border-color .16s}
.exq.answered{border-left-color:var(--p)}
.eqh{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.eqh .eqn{flex:0 0 26px;height:26px;border-radius:50%;background:var(--soft);color:var(--pd);
  font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.exq.answered .eqh .eqn{background:var(--p);color:#fff}
.eqh .eqt{flex:1 1 auto;min-width:0;font-size:14px;line-height:1.75;color:var(--dg);font-weight:600}
.eqh .eqk{flex:0 0 auto;font-size:11px;font-weight:600;color:var(--mut2);white-space:nowrap}
.eqo{display:flex;flex-direction:column;gap:8px}
.optl{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);
  border-radius:12px;cursor:pointer;transition:border-color .14s,background .14s}
.optl:hover{border-color:var(--p);background:#FAFCF8}
.optl input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.omark{flex:0 0 18px;height:18px;border:1.5px solid #C3CFC0;background:#fff;position:relative}
.optl input[type=radio] + .omark{border-radius:50%}
.optl input[type=checkbox] + .omark{border-radius:4px}
.optl input:checked + .omark{border-color:var(--p);background:var(--p)}
.optl input:checked + .omark::after{content:"";position:absolute;left:5px;top:2px;width:5px;height:9px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.optl input[type=checkbox]:checked + .omark::after{left:4px;top:1px}
.optl input:focus-visible + .omark{box-shadow:0 0 0 3px rgba(58,159,72,.28)}
.otxt{flex:1 1 auto;min-width:0;font-size:13.5px;line-height:1.6;color:var(--ink)}
.optl:has(input:checked){border-color:var(--p);background:#F4FAF2}

.exambar{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:16px 24px;position:sticky;bottom:16px;box-shadow:0 10px 30px rgba(16,40,22,.08)}
.exambar .einfo{flex:1 1 auto;font-size:12.5px;color:var(--mut2)}
.exambar .einfo b{color:var(--dg);font-size:14px;font-variant-numeric:tabular-nums}
.exambar .warn{color:#8A6100;margin-left:6px}

/* ---- 答卷回顾 ---- */
.rvlist{display:flex;flex-direction:column;gap:14px}
.rv{border:1px solid var(--line);border-radius:12px;padding:16px 20px;background:#fff;
  border-left:3px solid #C3CFC0}
.rv.ok{border-left-color:var(--p)}
.rv.no{border-left-color:#C6473A}
.rvh{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}
.rvh .rvn{flex:0 0 24px;height:24px;border-radius:50%;background:#F0F3EE;color:var(--mut2);
  font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.rv.ok .rvh .rvn{background:var(--soft);color:var(--pd)}
.rv.no .rvh .rvn{background:#FDEDEC;color:#A32318}
.rvh .rvt{flex:1 1 auto;min-width:0;font-size:13.5px;line-height:1.7;color:var(--dg);font-weight:600}
.rvh .rvs{flex:0 0 auto;font-size:11.5px;font-weight:600;color:#A32318;white-space:nowrap}
.rv.ok .rvh .rvs{color:var(--pd)}
.rvo{display:flex;flex-direction:column;gap:6px}
.ro{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:12px;
  background:#FAFBF9;border:1px solid #EDF1EA;font-size:13px;color:var(--ink)}
.ro .omark{flex:0 0 16px;height:16px;border-radius:50%;border:1.5px solid #D3DBD0;background:#fff;position:relative}
.ro.picked .omark{border-color:#8A9A86;background:#8A9A86}
.ro.picked .omark::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.ro.right{background:#F2FAF0;border-color:#CDE6C6}
.ro.right .omark{border-color:var(--p);background:var(--p)}
.ro.right .omark::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.ro .otxt{flex:1 1 auto;min-width:0;line-height:1.6}
.olab{flex:0 0 auto;font-size:10.5px;font-weight:600;color:var(--pd);background:var(--soft);
  border-radius:999px;padding:2px 8px}
.olab.bad{color:#A32318;background:#FDEDEC}
.rve{margin-top:10px;font-size:12px;line-height:1.7;color:var(--mut2);background:#FAFBF9;
  border-radius:12px;padding:10px 12px}

.actrow{display:flex;align-items:center;gap:12px;margin-top:18px}
.actrow form{margin-left:auto}
.passcard{border-left:3px solid var(--p)}
.passcard .cr{display:flex;align-items:center;gap:14px}
.passcard .ci{font-size:24px;line-height:1}
.passcard .cb{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.passcard .cb b{font-size:14px;color:var(--dg)}
.passcard .cb i{font-style:normal;font-size:12px;color:var(--mut2);font-variant-numeric:tabular-nums}

/* ---- 我的证书·卡片 ---- */
.certgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.certgrid > *{min-width:0}
.certcard{position:relative;display:flex;flex-direction:column;gap:8px;background:#fff;
  border:1px solid var(--line);border-radius:16px;padding:20px 22px;text-decoration:none;
  transition:border-color .16s,box-shadow .16s}
.certcard:hover{border-color:var(--p);box-shadow:0 10px 26px rgba(58,159,72,.13)}
.certcard.dead{opacity:.55}
.certcard .ct{font-size:15px;font-weight:700;color:var(--dg);line-height:1.5}
.certcard .cs{font-size:11.5px;color:var(--mut2);font-variant-numeric:tabular-nums;letter-spacing:.02em}
.certcard .cm{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.certcard .cm i{font-style:normal;font-size:11.5px;color:var(--mut2)}
.certcard .cseal-sm{position:absolute;right:16px;top:16px;font-size:10.5px;font-weight:600;
  color:var(--pd);background:var(--soft);border-radius:999px;padding:2px 9px}
.certcard.dead .cseal-sm{color:#8A6100;background:#FDF7E8}

/* ---- 电子证书页（可打印） ---- */
.certwrap{max-width:1000px;margin:0 auto}
.certactions{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.certactions .btn:last-child{margin-left:auto}
.certsheet{position:relative;overflow:hidden;background:#fff;border:1px solid #DCE6D8;
  border-radius:16px;padding:44px 52px 36px;box-shadow:0 16px 44px rgba(16,40,22,.1)}
/* ⚠️ 水印（2026-09-30 修）：原来 right:-70px;bottom:-110px —— **故意伸出纸面**，
   结果 ① 被纸边裁断（像导出没收干净）② 压在右下的核验区文字上（实测与 .cverify/.certfoot/
   .cmeta 三块重叠）③ 让"下内边距"算成 -109px。
   改为**收在纸面内**、放在左下角的空白处（不覆盖任何文字），透明度也降一点。 */
.certsheet .ctree{position:absolute;left:-40px;bottom:-40px;width:320px;opacity:.05;pointer-events:none}
.certsheet.revoked{filter:grayscale(1);opacity:.75}
.certhead{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  padding-bottom:20px;border-bottom:1px solid #E7EFE4;position:relative;z-index:1}
.certhead .clogo{height:64px;width:auto}
.cserial{display:flex;flex-direction:column;gap:4px;text-align:right}
.cserial .lb{font-size:10.5px;letter-spacing:.18em;color:var(--mut2);text-transform:uppercase}
.cserial b{font-size:14px;color:var(--dg);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.certbody{position:relative;z-index:1;text-align:center;padding:36px 0 8px}
.ctitle{font-size:30px;font-weight:700;color:var(--dg);letter-spacing:.22em;margin-bottom:6px}
.csub{font-size:11px;letter-spacing:.3em;color:var(--mut2);margin-bottom:34px;text-transform:uppercase}
.cname{font-size:34px;font-weight:700;color:var(--dg);letter-spacing:.06em;margin-bottom:8px}
.chotel{font-size:13px;color:var(--mut2);margin-bottom:24px}
.ctext{font-size:14.5px;line-height:2.1;color:var(--ink);margin:0 auto 32px;max-width:620px}
.ctext b{color:var(--pd)}
/* ⚠️ 原来 max-width:720px + margin:0 auto → 内缩 105px，与页眉/页脚/标题的 53px **不一致**
   （实测「左基准集合: 53/105 → 不统一」）。去掉 max-width 让它与其它块同宽同基准，
   虚线分隔线也就和页眉那条实线左右对齐了。
   列数：字段精简到 4 个（去掉通过线/证书状态）→ 用 2×2，比 3+1 平衡。 */
.cmeta{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;
  text-align:left;padding:20px 0 0;border-top:1px dashed #DCE6D8}
.cmeta>div{display:flex;flex-direction:column;gap:4px}
.cmeta span{font-size:11px;color:var(--mut2)}
.cmeta b{font-size:13px;color:var(--dg);font-weight:600}
.certfoot{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;
  gap:24px;margin-top:36px;padding-top:22px;border-top:1px solid #E7EFE4}
.cseal{display:flex;flex-direction:column;gap:2px;border:2px solid var(--p);border-radius:12px;
  padding:10px 16px;color:var(--p);text-align:center}
.cseal span{font-size:13px;font-weight:700;letter-spacing:.1em}
.cseal .sm{font-size:9px;letter-spacing:.14em;font-weight:400;opacity:.85}
.cline{margin-top:10px;font-size:11.5px;color:var(--mut2)}
/* 核验区（2026-09-30 改版）：二维码 + 文字并排，整体右对齐。
   二维码是电子证书的标准配置 —— 扫码直达本证书核验页。 */
.cverify{display:flex;align-items:center;justify-content:flex-end;gap:16px;text-align:right}
.cqr{flex:0 0 auto}
.cqr svg{display:block;width:92px;height:92px;border:1px solid #E7EFE4;border-radius:4px;background:#fff;padding:4px;box-sizing:border-box}
.cverifytxt{display:flex;flex-direction:column;gap:4px;max-width:200px}
.cverify .lb{font-size:10.5px;letter-spacing:.18em;color:var(--mut2);text-transform:uppercase}
.cverify .ser{font-size:12.5px;color:var(--dg);font-weight:700;
  font-variant-numeric:tabular-nums;word-break:break-all}
.cverify .tip{font-size:11px;color:var(--mut2);line-height:1.6}
.certnote{margin-top:16px;font-size:12px;line-height:1.7;color:var(--mut2);text-align:center}

@media print{
  .no-print{display:none !important}
  body,.pwrap{background:#fff !important;padding:0 !important;margin:0 !important}
  .certsheet{border:0;box-shadow:none;border-radius:0;padding:24px 30px}
}
@media (max-width:900px){
  .certhead{flex-direction:column;align-items:flex-start}
  .cserial{text-align:left}
  .certsheet{padding:28px 22px 24px}
  .ctitle{font-size:22px;letter-spacing:.12em}
  .cname{font-size:26px}
  .cmeta{grid-template-columns:1fr 1fr}
  .certfoot{flex-direction:column;align-items:flex-start}
  .cverify{text-align:left}
}

/* ================= 互动社区 B6（2026-09-28） ================= */

/* 审核提示条 */
.modbar{display:flex;align-items:center;gap:14px;background:#FDF7E8;border:1px solid #F0E2BC;
  border-radius:12px;padding:13px 18px;margin-bottom:18px}
.modbar.info{background:var(--soft);border-color:#D6E8D2}
.modbar .mb-t{flex:0 0 auto;font-size:13px;font-weight:700;color:#8A6100}
.modbar.info .mb-t{color:var(--pd)}
.modbar .mb-d{flex:1 1 auto;min-width:0;font-size:12px;color:var(--mut2);line-height:1.6}
.modbar .btn{margin-left:auto;flex:0 0 auto}

/* 官方公告 */
.annlist{display:flex;flex-direction:column;gap:8px;margin-bottom:26px}
.annrow{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:13px 18px}
.annrow .an-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--pd);background:var(--soft);
  border-radius:4px;padding:3px 9px}
.annrow .an-b{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.annrow .an-b b{font-size:13.5px;color:var(--dg)}
.annrow .an-b i{font-style:normal;font-size:12px;line-height:1.6;color:var(--mut2)}
.annrow .an-d{flex:0 0 auto;font-size:11.5px;color:var(--mut2);font-variant-numeric:tabular-nums}
.annrow .an-go{flex:0 0 auto;font-size:12px;font-weight:600;color:var(--pd);text-decoration:none}

/* 板块网格 */
.catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:14px;margin-bottom:26px}
.catgrid > *{min-width:0}
.catcard{display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:18px 20px;text-decoration:none;transition:border-color .16s,box-shadow .16s}
.catcard:hover{border-color:var(--p);box-shadow:0 10px 26px rgba(58,159,72,.13)}
.catcard .cc-kind{align-self:flex-start;font-size:10.5px;font-weight:700;color:var(--pd);
  background:var(--soft);border-radius:999px;padding:2px 10px}
.catcard .cc-kind.qa{color:#1A3FD8;background:#EEF1FE}
.catcard .cc-name{font-size:15px;font-weight:700;color:var(--dg)}
.catcard .cc-intro{font-size:12px;line-height:1.6;color:var(--mut2);min-height:19px}
.catcard .cc-n{margin-top:4px;font-size:11.5px;color:var(--mut2)}

/* 话题列表 */
.toplist{display:flex;flex-direction:column;gap:8px}
.toprow{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:13px 18px;text-decoration:none;transition:border-color .16s,box-shadow .16s}
.toprow:hover{border-color:var(--p);box-shadow:0 6px 18px rgba(58,159,72,.1)}
.toprow .tr-kind{flex:0 0 26px;height:26px;border-radius:4px;background:var(--soft);color:var(--pd);
  font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.toprow .tr-kind.qa{background:#EEF1FE;color:#1A3FD8}
.toprow .tr-b{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}
.toprow .tr-b b{font-size:13.5px;font-weight:600;color:var(--dg);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.toprow .tr-b i{font-style:normal;font-size:11.5px;color:var(--mut2)}
.toprow .tr-n{flex:0 0 auto;font-size:11.5px;color:var(--mut2);white-space:nowrap;
  font-variant-numeric:tabular-nums}

/* 话题内的小标记 */
.pin,.solved,.st-0,.st-1,.st-2,.st-flag,.st-wait{font-style:normal;font-size:10.5px;font-weight:600;
  border-radius:999px;padding:2px 8px;white-space:nowrap}
.pin{color:var(--pd);background:var(--soft)}
.solved{color:#1A6B2F;background:#E6F4E6}
.st-0{color:#8A6100;background:#FDF7E8}
.st-1{color:var(--pd);background:var(--soft)}
.st-2{color:#A32318;background:#FDEDEC}
.st-flag,.tag.flag{color:#A32318;background:#FDEDEC}
.st-wait,.tag.wait{color:#8A6100;background:#FDF7E8}

/* 分页 */
.pager{display:flex;align-items:center;gap:14px;margin-top:18px}
.pager .pg-n{font-size:12.5px;color:var(--mut2)}

/* 帖子正文 */
.postbody{font-size:14px;line-height:1.95;color:var(--ink)}

/* 回复 */
.rplist{display:flex;flex-direction:column;gap:14px}
.rp{border:1px solid var(--line);border-radius:12px;padding:16px 20px;background:#fff;
  border-left:3px solid transparent}
.rp.accepted{border-left-color:var(--p);background:#FBFEF9}
.rp-h{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.rp-h .av{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--soft);color:var(--pd);
  font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.rp-h .rp-w{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.rp-h .rp-w b{font-size:13px;color:var(--dg);display:flex;align-items:center;gap:8px}
.rp-h .rp-w i{font-style:normal;font-size:11.5px;color:var(--mut2)}
.rp-h .acc{font-style:normal;font-size:10.5px;font-weight:700;color:#fff;background:var(--p);
  border-radius:999px;padding:2px 9px}
.rp-st{flex:0 0 auto;font-size:10.5px;font-weight:600;color:#8A6100;background:#FDF7E8;
  border-radius:999px;padding:2px 8px}
.rp-st.flag{color:#A32318;background:#FDEDEC}
.rp-report{flex:0 0 auto;margin:0}
.linkbtn{background:none;border:0;padding:0;cursor:pointer;font-size:11.5px;color:var(--mut2);
  font-family:inherit}
.linkbtn:hover{color:#A32318}
.rp-b{font-size:13.5px;line-height:1.85;color:var(--ink)}
.rp-act{margin-top:10px;display:flex;justify-content:flex-end}

/* 文本域 */
.ta{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;
  padding:12px 14px;font-size:13.5px;line-height:1.8;color:var(--ink);font-family:inherit;
  background:#fff;resize:vertical;min-height:96px}
.ta:focus{outline:0;border-color:var(--p);box-shadow:0 0 0 3px rgba(58,159,72,.16)}

.formcard{max-width:820px}
.fg-full{grid-column:1/-1}

.rejnote{margin-top:8px;font-style:normal;font-size:12px;line-height:1.6;color:#A32318;
  background:#FDEDEC;border-radius:12px;padding:8px 12px}

/* 审核队列 */
.statrow{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.statrow > *{min-width:0}
.statbox{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:16px 20px}
.statbox b{font-size:24px;font-weight:700;color:var(--dg);font-variant-numeric:tabular-nums;line-height:1}
.statbox span{font-size:12px;color:var(--mut2)}
.statbox.warn b{color:#8A6100}

.modlist{display:flex;flex-direction:column;gap:12px}
.modrow{border:1px solid var(--line);border-radius:12px;padding:16px 20px;background:#fff;
  border-left:3px solid transparent}
.modrow.flagged{border-left-color:#C6473A;background:#FFFCFB}
.mod-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.mod-h .mtag{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--pd);background:var(--soft);
  border-radius:4px;padding:3px 9px}
.mod-h .mtag.warn{color:#A32318;background:#FDEDEC}
.mod-h b{font-size:13.5px;color:var(--dg)}
.mod-h .mod-meta{margin-left:auto;font-size:11.5px;color:var(--mut2)}
.mod-b{font-size:13px;line-height:1.8;color:var(--ink);max-height:200px;overflow:hidden}
.mod-flag{margin-top:8px;font-size:12px;font-weight:600;color:#A32318;background:#FDEDEC;
  border-radius:12px;padding:8px 12px}
.mod-act{margin-top:12px;display:flex;justify-content:flex-end}
.mod-act form{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;width:100%}
.mod-act .in.note{flex:1 1 240px;min-width:180px;max-width:420px}

@media (max-width:900px){
  .statrow{grid-template-columns:1fr}
  .modbar{flex-direction:column;align-items:flex-start}
  .modbar .btn{margin-left:0}
  .mod-h .mod-meta{margin-left:0;width:100%}
  .mod-act form{flex-direction:column;align-items:stretch}
  .mod-act .in.note{max-width:none}
}

/* ================= 管理控制台 B7（2026-09-28） ================= */

.conwrap{display:flex;align-items:flex-start;gap:16px}
.conmenu{flex:0 0 176px;position:sticky;top:16px;display:flex;flex-direction:column;gap:4px;
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:10px}
.conmenu .cm{display:block;font-size:13px;font-weight:600;color:var(--mut2);text-decoration:none;
  border-radius:12px;padding:10px 14px;transition:background .14s,color .14s}
.conmenu .cm:hover{background:#F5F9F3;color:var(--pd)}
.conmenu .cm.on{background:var(--soft);color:var(--pd)}
.concol{flex:1 1 auto;min-width:0}

/* KPI 卡 */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:14px;margin-bottom:16px}
.kpis > *{min-width:0}   /* 同上：网格项默认 min-width:auto 会被长内容撑宽 */
.kpi{display:flex;flex-direction:column;gap:3px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:16px 20px}
.kpi b{font-size:28px;font-weight:700;color:var(--dg);line-height:1.1;font-variant-numeric:tabular-nums}
.kpi span{font-size:12.5px;font-weight:600;color:var(--ink)}
.kpi i{font-style:normal;font-size:11.5px;color:var(--mut2);line-height:1.5}
.kpi i a{color:var(--pd);font-weight:600;text-decoration:none}
.kpi.warn{border-color:#F0E2BC;background:#FFFDF7}
.kpi.warn b{color:#8A6100}

/* 两列布局 */
/* ⚠️ 必须给网格项 min-width:0！
   CSS Grid 的网格项默认 `min-width:auto` —— 它**不能缩到比自身 min-content 更窄**。
   而手机端 .ctab 是 `white-space:nowrap`，min-content ≈ 整表宽（实测 474~522px），
   于是 `1fr` 列被撑到 474px、远大于 358px 的容器 → 整页横向溢出。
   （实测：视口 390，.cgrid 容器 358，列却 473.95。） */
.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.cgrid > *{min-width:0}
@media (max-width:1100px){.cgrid{grid-template-columns:1fr}}

/* 柱状图（纯 CSS，无依赖） */
.bars{display:flex;align-items:flex-end;gap:10px;height:170px;padding:8px 2px 0;border-bottom:1px solid var(--line)}
.barcol{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  gap:8px;height:100%}
.barpair{flex:1 1 auto;display:flex;align-items:flex-end;gap:5px;width:100%;justify-content:center}
/* 柱子宽度自适应但设上限 —— 固定 14px 在大卡片里显细且空旷 */
.bar{width:min(20px,42%);min-height:2px;border-radius:4px 4px 0 0;background:var(--p);display:block}
.bar.new{background:#A9D48A}
.bar.done{background:var(--p)}
.bl{font-size:10.5px;color:var(--mut2);font-variant-numeric:tabular-nums}
.legend{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:11.5px;color:var(--mut2)}
.legend .lg{width:10px;height:10px;border-radius:4px;display:inline-block}
.legend .lg.new{background:#A9D48A}
.legend .lg.done{background:var(--p)}
.legend .lg:nth-of-type(2){margin-left:8px}

/* 数据表 */
.ctab{width:100%;border-collapse:collapse;font-size:12.5px}
.ctab th{text-align:left;font-weight:600;color:var(--mut2);font-size:11.5px;
  padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.ctab td{padding:11px 12px;border-bottom:1px dashed #E7EFE4;color:var(--ink);vertical-align:middle}
.ctab tr:last-child td{border-bottom:0}
.ctab tbody tr:hover{background:#FAFCF8}
.ctab .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ctab .hn{font-weight:600;color:var(--dg)}
.ctab .cn{display:flex;flex-direction:column;gap:2px}
.ctab .cn a{color:var(--dg);font-weight:600;text-decoration:none}
.ctab .cn a:hover{color:var(--pd)}
.ctab .cn small{font-size:11px;color:var(--mut2)}
.ctab .mn{font-size:11.5px;color:var(--mut2);font-variant-numeric:tabular-nums}
.ctab .ck{width:36px;text-align:center}
.ctab .ck input{width:15px;height:15px;accent-color:var(--p);cursor:pointer}
.inlineform{display:inline;margin:0}

/* 完成率小条 */
.ratebar{display:inline-block;vertical-align:middle;width:54px;height:6px;border-radius:999px;
  background:#EAF1E6;margin-right:8px;overflow:hidden}
.ratebar i{display:block;height:100%;background:var(--p);border-radius:999px}

/* 角色标签 */
.rtag{font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;white-space:nowrap;
  color:var(--mut2);background:#F0F3EE}
.rtag.r-admin{color:#fff;background:var(--p)}
.rtag.r-editor{color:var(--pd);background:var(--soft)}
.rtag.r-trainer{color:#1A3FD8;background:#EEF1FE}

/* 状态点 */
.st1{font-size:11px;font-weight:600;color:var(--pd);background:var(--soft);
  border-radius:999px;padding:2px 9px;white-space:nowrap}
.st0{font-size:11px;font-weight:600;color:#8A6100;background:#FDF7E8;
  border-radius:999px;padding:2px 9px;white-space:nowrap}

/* 筛选条 */
.filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;
  border:1px solid var(--line);border-radius:16px;padding:14px 18px;margin-bottom:16px}
.filterbar .in{flex:0 1 auto;min-width:120px;max-width:210px}
.filterbar .in[type=search]{flex:1 1 220px;max-width:320px}

.actcol{display:flex;flex-direction:column;gap:10px;align-items:flex-start;margin-top:14px}
.actrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 16px}
.toprow.static{cursor:default}
.toprow.static:hover{border-color:var(--line);box-shadow:none}
.toprow .tr-kind.flag{background:#FDEDEC;color:#A32318}
code{font-size:11.5px;background:#F0F3EE;border-radius:4px;padding:1px 5px;color:var(--dg)}

@media (max-width:900px){
  /* ⚠️ 竖排时必须 align-items:stretch。
     原来只写了 flex-direction:column，但 .conwrap 基样式是 align-items:flex-start
     （横排时为了让 sticky 侧栏不被拉伸）—— 竖排下它会让子元素按**内容宽度**排，
     于是手机端 .ctab 的 white-space:nowrap 把 .concol 撑到 700+ px，整页横向溢出。
     （实测：视口 390，.concol 宽 738、页面溢出 364px。） */
  .conwrap{flex-direction:column;align-items:stretch}
  .conmenu{position:static;flex:1 1 auto;width:100%;flex-direction:row;flex-wrap:wrap}
  .concol{flex:1 1 auto;width:100%;min-width:0;max-width:100%}
  .conmenu .cm{flex:0 0 auto}
  .kpis{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .filterbar{width:100%}
  .filterbar .in{flex:1 1 100%;max-width:none}
  /* 表格改为「自身横向滚动」而不是撑宽页面 */
  .ctab{display:block;max-width:100%;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
}

/* ================= 六格 = 学习入口（2026-09-29） =================
   原来是 <div>（死的），现在是 <a>（真入口）。追加链接态与「筹备中」标记。
   ⚠️ 遵守设计硬规则：无顶部色彩条、间距只用 4/8/12/16/20/24 刻度、
      六格尺寸靠父级 .rx-grid 保证一致（只加 padding/border，不改盒子尺寸逻辑）。 */

/* 链接态：继承原 .rx-tile 的排版，只补可交互反馈 */
a.rx-tile{display:block;position:relative;text-decoration:none;color:inherit;
  transition:transform .18s,box-shadow .18s}
a.rx-tile:hover{transform:translateY(-3px)}
a.rx-tile:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:12px}

/* 路径详情页的计数行（复用 .secrow 已知样式，只保证上下留白在刻度上） */
.pwrap .secrow{margin:0 0 16px}

/* ⚠️ 2026-09-29 超哥要求**删除主页六格下的小标签**（「筹备中」「3 门课」「查看我的证书」），
   所以 .rx-tile-n / .rx-tile-soon / .rx-tile-go 三条样式连同其媒体查询已一并删除。
   主页六格现在**只显示 图标 + 标题 + 描述**，更干净。
   （学习中心那个页面用的是另一套 .hubmeta / .hubgo，**保留** —— 那里六格是主内容，
    仍需要"哪些方向有课、哪些筹备中"的信息。） */
/* 「筹备中」方向在主页仍**淡化图标**（不再有标签解释原因，靠淡化+不可点提示表达） */
a.rx-tile.soon .rx-tile-ic{opacity:.72}

/* ================= 学习中心 · 六格方向卡（2026-09-29） =================
   超哥定：六格**替换**原「课程中心」的课程列表 → 改名为「学习中心」。
   设计硬规则：横向铺满、auto-fill 网格不写死列数、卡片**无顶部色彩条**、
   间距只用刻度值、网格项 min-width:0（防手机端被 nowrap 内容撑宽）。 */

/* 网格锁 3 列 —— 与**主页六格**一致（.rx-grid 也是 repeat(3,1fr)）。
   ⚠️ 不能用 auto-fill：1366 宽下会排成 4 列 → 6 张卡变成「4+2」，第二行右侧空一大块，
      看着像没加载完。6 个固定项用 3×2 才收口整齐。 */
.hubgrid{display:grid;grid-template-columns:repeat(3,1fr);
  gap:16px;margin-bottom:16px}
.hubgrid > *{min-width:0}

.hubcard{display:flex;align-items:flex-start;gap:16px;
  background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:20px 24px;text-decoration:none;color:inherit;
  transition:border-color .16s,box-shadow .16s,transform .16s}
.hubcard:hover{border-color:var(--p);box-shadow:0 10px 26px rgba(58,159,72,.13);transform:translateY(-2px)}
.hubcard:focus-visible{outline:2px solid var(--p);outline-offset:2px}

/* 图标：统一占位盒，保证六枚视觉等重（源图体量本不一致） */
.hubcard .hubic{flex:0 0 auto;width:56px;height:56px;object-fit:contain;
  /* 图标本身是白色剪影（为绿区准备），浅底上要染成品牌色 */
  filter:brightness(0) saturate(100%) invert(45%) sepia(58%) saturate(556%)
         hue-rotate(74deg) brightness(92%) contrast(88%)}
.hubcard.soon .hubic{opacity:.55}

.hubcard .hubtx{flex:1 1 auto;min-width:0}
.hubcard .hubtx b{display:block;font-size:16px;font-weight:700;color:var(--dg);line-height:1.5}
.hubcard .hubtx p{font-size:13px;color:var(--mut);line-height:1.75;margin-top:4px}
.hubcard .hubmeta{display:inline-flex;align-items:center;height:24px;padding:0 10px;
  margin-top:12px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.04em;
  background:var(--pill);color:var(--pd);text-decoration:none}
.hubcard.soon .hubmeta{background:var(--wash);color:var(--mut2)}
/* 「获取证书」的状态行 —— 与其它卡**同一位置同一高度**（保证六卡底部对齐）。
   ⚠️ 底色必须与 .hubmeta **完全同款**（var(--pill)）—— 第一版用了 var(--soft)，
      它更绿更饱和（#E7EFE4 vs #F0F3EE），于是这张卡成了整排唯一的"亮块"、视觉权重失衡。
      强调只靠**文字色 + 箭头**做，不靠底色。 */
.hubcard .hubgo{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;
  margin-top:12px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.04em;
  background:var(--pill);color:var(--pd);text-decoration:none}
.hubcard .hubgo::after{content:"\2192";font-size:12px;line-height:1}

@media (max-width:720px){
  .hubgrid{grid-template-columns:1fr;gap:12px}
  .hubcard{padding:16px 20px;gap:12px}
  .hubcard .hubic{width:44px;height:44px}
  /* ⚠️ .hubgo 必须跟 .hubmeta 一起写 —— 第一版漏了它，
     于是手机端 hubmeta=22px、hubgo=24px，六卡状态标签高度不一致（实测抓出来的）。 */
  .hubcard .hubmeta,
  .hubcard .hubgo{height:22px;padding:0 8px;font-size:11px;margin-top:8px}
}

/* 课程资源（2026-09-30 新增）：满宽行列表。
   刻意不做「卡片套卡片」——资源是课程详情页的从属信息，用分隔线行列表最省层级；
   左基准与卡片其它内容一致（kind 固定 52px + 12px 间距 => 描述缩进 64px 对齐标题）。 */
.reslist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.reslist li{padding:11px 0;border-bottom:1px solid var(--line)}
.rfile{display:flex;align-items:baseline;gap:12px;text-decoration:none;color:var(--ink)}
.rfile:hover .rname{color:var(--pd)}
.rkind{flex:0 0 52px;font-size:11.5px;color:var(--mut);letter-spacing:.04em}
.rname{flex:1 1 auto;font-weight:600;font-size:14.5px}
.rsize{flex:0 0 auto;font-size:12px;color:var(--mut2);font-variant-numeric:tabular-nums}
.rdesc{margin:4px 0 0 64px;font-size:12.5px;color:var(--mut2)}
