/* ============================================================
   DEMAN PLAY · play-exam.css — 考核大厅 + 周视图日历组件
   暗色霓虹 · 复用 play.css token(--v-signature / --a-* / --ok …)
   ============================================================ */

.x-crumb{ font-family:var(--mono); font-size:11.5px; letter-spacing:.04em; color:var(--text-mute); margin-bottom:10px; display:flex; align-items:center; gap:8px; }
.x-crumb a{ color:var(--text-dim); } .x-crumb a:hover{ color:var(--v-bright); }
.x-crumb svg{ width:12px; height:12px; }

/* ---------- 视角 tab ---------- */
.xtabs{ display:flex; gap:9px; flex-wrap:wrap; margin:22px 0 26px; }
.xtab{ font-family:var(--hud); font-weight:700; font-size:14px; padding:10px 18px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-dim); cursor:pointer; display:inline-flex; align-items:center; gap:8px; white-space:nowrap; transition:.16s; }
.xtab svg{ width:16px; height:16px; flex:none; }
.xtab:hover{ color:var(--text); border-color:color-mix(in oklab,var(--v-bright) 50%,var(--line)); }
.xtab.on{ background:var(--v-signature); color:#fff; border-color:transparent; box-shadow:0 0 24px -8px var(--v-bright); }
.xtab .ex-only{ font-family:var(--mono); font-weight:500; font-size:9px; padding:2px 6px; border-radius:5px; background:color-mix(in oklab,var(--a-amber) 22%,transparent); color:var(--a-amber); }
.xtab.on .ex-only{ background:rgba(255,255,255,.22); color:#fff; }
.xpanel{ display:none; } .xpanel.on{ display:block; }

/* ---------- 通用卡 / 空态 ---------- */
.xcard{ background:var(--card-grad); border:1.5px solid var(--line); border-radius:var(--r); padding:20px 22px; }
.xcard-t{ font-family:var(--cn); font-weight:800; font-size:15px; margin-bottom:15px; display:flex; align-items:center; gap:10px; }
.xcard-t .num{ font-family:var(--mono); font-size:11px; color:#fff; background:var(--v-signature); width:22px; height:22px; border-radius:7px; display:grid; place-items:center; flex:none; }
.xcard-t .ct-badge{ font-family:var(--mono); font-size:11px; color:var(--v-bright); background:color-mix(in oklab,var(--v-bright) 16%,transparent); border-radius:999px; padding:2px 9px; }
.xempty{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:54px 20px; text-align:center; color:var(--text-mute); }
.xempty.sm{ padding:26px 16px; }
.xempty .ic{ width:30px; height:30px; opacity:.6; }
.xempty p{ font-family:var(--cn); font-size:14px; }

/* ---------- 我要考核:左品类 + 右详情 ---------- */
.xapply{ display:grid; grid-template-columns:330px 1fr; gap:22px; align-items:start; }
@media(max-width:900px){ .xapply{ grid-template-columns:1fr; } }

.catlist{ display:flex; flex-direction:column; gap:8px; max-height:434px; overflow-y:auto; overscroll-behavior:contain; padding-right:4px;
  /* 独立合成层 + 绘制包含:防止滚动时发光小圆点在部分 Chrome/GPU 上留下"鬼影"漂到列表外 */
  transform:translateZ(0); contain:paint; }
.catsearch{ display:flex; align-items:center; gap:8px; padding:9px 12px; border:1.5px solid var(--line); border-radius:11px; background:var(--surface); margin-bottom:11px; transition:.15s; }
.catsearch:focus-within{ border-color:var(--v-bright); }
.catsearch svg{ width:15px; height:15px; color:var(--text-mute); flex:none; }
.catsearch input{ flex:1; min-width:0; background:none; border:0; outline:0; font-family:var(--cn); font-size:13px; color:var(--text); }
.catsearch input::placeholder{ color:var(--text-mute); }
.catlist-empty{ font-family:var(--cn); font-size:13px; color:var(--text-mute); padding:16px 6px; text-align:center; }
.cat .own{ margin-left:auto; display:inline-flex; align-items:center; gap:4px; font-family:var(--mono); font-size:10px; color:var(--ok); border:1px solid color-mix(in oklab,var(--ok) 42%,transparent); padding:2px 7px 2px 5px; border-radius:6px; white-space:nowrap; }
.cat .own .ic{ width:11px; height:11px; }

/* 我已拥有的资质 */
.xowned{ background:var(--card-grad); border:1.5px solid var(--line); border-radius:var(--r); padding:16px 20px; margin-bottom:18px; }
.xowned .ow-t{ font-family:var(--cn); font-weight:800; font-size:14px; color:var(--text); margin-bottom:12px; display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.xowned .ow-t .ic{ width:17px; height:17px; color:var(--ok); flex:none; }
.xowned .ow-t small{ font-family:var(--mono); font-weight:400; font-size:11px; color:var(--text-mute); }
.ow-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.owntag{ display:inline-flex; align-items:center; gap:7px; font-family:var(--cn); font-weight:600; font-size:12.5px; padding:6px 12px; border-radius:999px; background:color-mix(in oklab,var(--cc) 14%,var(--surface)); color:var(--text); border:1px solid color-mix(in oklab,var(--cc) 38%,transparent); }
.owntag .dot{ width:8px; height:8px; border-radius:50%; background:var(--cc); flex:none; }
.owntag .vchk{ display:inline-flex; color:var(--ok); }
.owntag .vchk .ic{ width:12px; height:12px; }
.ow-empty{ font-family:var(--cn); font-size:13px; color:var(--text-mute); }
.cat{ display:flex; align-items:center; gap:11px; padding:13px 14px; border-radius:14px; border:1.5px solid var(--line); background:var(--surface); cursor:pointer; transition:.15s; width:100%; }
.cat:hover{ border-color:color-mix(in oklab,var(--cc) 55%,var(--line)); transform:translateX(2px); }
.cat.on{ border-color:var(--cc); background:color-mix(in oklab,var(--cc) 13%,var(--surface)); box-shadow:0 0 22px -12px var(--cc); }
.cat .dot{ width:11px; height:11px; border-radius:50%; background:var(--cc); flex:none; align-self:center; display:inline-block; vertical-align:middle; }
.cat .cn-nm{ vertical-align:middle; }
.cat .cn-nm{ font-family:var(--cn); font-weight:700; font-size:14px; color:var(--text); }
.cat .free-tag{ margin-left:auto; font-family:var(--mono); font-size:10px; color:var(--a-mint); border:1px solid color-mix(in oklab,var(--a-mint) 40%,transparent); padding:2px 7px; border-radius:6px; white-space:nowrap; }

.xcatdetail{ background:var(--card-grad); border:1.5px solid var(--line); border-radius:var(--r); padding:22px 24px; min-height:300px; }
.detail-top{ display:flex; align-items:center; gap:11px; margin-bottom:14px; }
.detail-top .dot{ width:13px; height:13px; border-radius:50%; flex:none; }
.detail-top h3{ font-family:var(--cn); font-weight:800; font-size:20px; color:var(--text); }
.detail-note{ font-family:var(--cn); font-size:13.5px; line-height:1.7; color:var(--text-dim); margin:4px 0 18px; }

.elig{ display:flex; flex-wrap:wrap; gap:9px; align-items:center; margin-bottom:6px; }
.pill{ font-family:var(--hud); font-weight:700; font-size:12.5px; padding:7px 13px; border-radius:999px; display:inline-flex; align-items:center; gap:7px; white-space:nowrap; }
.pill .ic{ width:13px; height:13px; }
.pill.ok{ background:color-mix(in oklab,var(--ok) 18%,transparent); color:var(--ok); }
.pill.have{ background:color-mix(in oklab,var(--a-mint) 18%,transparent); color:var(--a-mint); }
.pill.warn{ background:color-mix(in oklab,var(--a-amber) 20%,transparent); color:var(--a-amber); }
.pill.bad{ background:color-mix(in oklab,var(--a-coral) 22%,transparent); color:var(--a-coral); }
.pill.fee{ background:color-mix(in oklab,var(--v-bright) 16%,transparent); color:var(--v-bright); }

.xact{ display:flex; align-items:center; gap:14px; margin-top:20px; flex-wrap:wrap; }
.xact-hint{ font-family:var(--cn); font-size:11.5px; color:var(--text-mute); }

/* ============================================================
   周视图日历组件(.cal) — 可脱离考核语境复用
   ============================================================ */
.cal{ border:1.5px solid var(--line); border-radius:18px; overflow:hidden; background:var(--surface); margin-top:6px; }
.cal-bar{ display:flex; align-items:center; gap:12px; padding:12px 14px; border-bottom:1px solid var(--line-soft); flex-wrap:wrap; background:var(--surface-2); }
.cal-tz{ font-family:var(--mono); font-size:11px; color:var(--text-dim); display:inline-flex; align-items:center; gap:7px; line-height:1.5; }
.cal-tz b{ color:var(--v-bright); font-weight:500; }
.cal-wknav{ margin-left:auto; display:flex; align-items:center; gap:8px; }
.cal-wknav button{ width:30px; height:30px; border-radius:9px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-dim); cursor:pointer; display:grid; place-items:center; transition:.15s; }
.cal-wknav button:hover:not(:disabled){ color:var(--v-bright); border-color:var(--v-bright); }
.cal-wknav button:disabled{ opacity:.35; cursor:not-allowed; }
.cal-wknav .rng{ font-family:var(--mono); font-size:12px; color:var(--text); min-width:150px; text-align:center; }

.cal-grid{ display:grid; grid-template-columns:54px repeat(7,minmax(0,1fr)); }
.cal-sticky{ position:sticky; top:0; z-index:3; }
.cal-corner{ border-right:1px solid var(--line-soft); border-bottom:1px solid var(--line); background:var(--surface-2); }
.cal-dh{ padding:8px 4px; text-align:center; border-right:1px solid var(--line-soft); border-bottom:1px solid var(--line); background:var(--surface-2); }
.cal-dh:last-child{ border-right:0; }
.cal-dh .wd{ font-family:var(--cn); font-size:11px; color:var(--text-mute); }
.cal-dh .dt{ font-family:var(--mono); font-size:13px; font-weight:500; color:var(--text); margin-top:1px; }
.cal-dh.today{ background:color-mix(in oklab,var(--v-bright) 12%,var(--surface-2)); }
.cal-dh.today .dt{ color:var(--v-bright); }
.cal-dh.today .wd{ color:var(--v-bright); }

.cal-bodywrap{ max-height:360px; overflow-y:auto; overscroll-behavior:contain; }
.cal-hour{ font-family:var(--mono); font-size:10.5px; color:var(--text-mute); display:flex; align-items:flex-start; justify-content:flex-end; padding:3px 7px 0 0; border-right:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); }
.cal-cell{ height:34px; border:0; border-right:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); background:transparent; cursor:pointer; position:relative; padding:0; transition:background .1s; touch-action:none; }
.cal-cell:last-child{ border-right:0; }
.cal-cell:hover{ background:color-mix(in oklab,var(--v-bright) 14%,transparent); }
.cal-cell.sel::after{ content:""; position:absolute; inset:3px; border-radius:6px; background:var(--ok); opacity:.9; }
.cal-cell.disabled{ cursor:not-allowed; background:repeating-linear-gradient(45deg,transparent,transparent 5px,color-mix(in oklab,var(--text-mute) 9%,transparent) 5px,color-mix(in oklab,var(--text-mute) 9%,transparent) 10px); }
.cal-cell.disabled:hover{ background:repeating-linear-gradient(45deg,transparent,transparent 5px,color-mix(in oklab,var(--text-mute) 9%,transparent) 5px,color-mix(in oklab,var(--text-mute) 9%,transparent) 10px); }
/* pick 模式:可用块高亮 · 其余静音不可点 */
.cal-cell.mute{ cursor:default; }
.cal-cell.mute:hover{ background:transparent; }
.cal-cell.avail::after{ content:""; position:absolute; inset:3px; border-radius:6px; border:1.6px dashed color-mix(in oklab,var(--v-bright) 65%,transparent); background:color-mix(in oklab,var(--v-bright) 12%,transparent); }
.cal-cell.avail:hover::after{ background:color-mix(in oklab,var(--v-bright) 24%,transparent); }
.cal-cell.picked::after{ content:""; position:absolute; inset:3px; border-radius:6px; background:var(--v-signature); border:0; box-shadow:0 0 14px -3px var(--v-bright); }

/* 已选时段 chips */
.slots-sum{ margin-top:16px; }
.slots-sum .lbl{ font-family:var(--mono); font-size:11px; letter-spacing:.04em; color:var(--text-mute); margin-bottom:9px; }
.chips{ display:flex; flex-wrap:wrap; gap:8px; }
.schip{ font-family:var(--cn); font-weight:600; font-size:12.5px; padding:6px 8px 6px 11px; border-radius:999px; background:color-mix(in oklab,var(--ok) 15%,transparent); color:var(--ok); display:inline-flex; align-items:center; gap:6px; border:1px solid color-mix(in oklab,var(--ok) 35%,transparent); }
.schip button{ background:none; border:0; color:inherit; cursor:pointer; display:grid; place-items:center; opacity:.65; padding:2px; }
.schip button svg{ width:12px; height:12px; }
.schip button:hover{ opacity:1; }
.chips-empty{ font-family:var(--cn); font-size:13px; color:var(--text-mute); }

/* 快捷选择 */
.quickpick{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:2px 0 13px; }
.qp-lbl{ font-family:var(--mono); font-size:11px; color:var(--text-mute); margin-right:2px; }
.quickpick button{ font-family:var(--cn); font-weight:600; font-size:12.5px; padding:7px 13px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-dim); cursor:pointer; transition:.15s; white-space:nowrap; }
.quickpick button:hover{ border-color:var(--v-bright); color:var(--v-bright); }
.qp-sel{ font-family:var(--cn); font-size:12.5px; color:var(--text); background:var(--surface); border:1.5px solid var(--line); border-radius:9px; padding:7px 9px; cursor:pointer; }
.qp-sel:focus{ outline:0; border-color:var(--v-bright); }
.qp-to{ font-family:var(--cn); font-size:12.5px; color:var(--text-mute); }
.quickpick .qp-add{ background:var(--v-signature); color:#fff; border:1.5px solid transparent; padding:7px 16px; }
.quickpick .qp-add:hover{ color:#fff; border-color:transparent; box-shadow:0 0 18px -6px var(--v-bright); transform:translateY(-1px); }
.quickpick .qp-clear{ margin-left:auto; color:var(--text-mute); }
.quickpick .qp-clear:hover{ border-color:var(--a-coral); color:var(--a-coral); }

/* 已选汇总:按天合并成整段,紧凑 */
.sum-line{ font-family:var(--mono); font-size:11.5px; color:var(--v-bright); margin-bottom:11px; }
.dayrow{ display:grid; grid-template-columns:104px 1fr; gap:12px; align-items:start; padding:8px 0; border-top:1px solid var(--line-soft); }
.dayrow:first-of-type{ border-top:0; padding-top:2px; }
.dl{ font-family:var(--cn); font-weight:700; font-size:12.5px; color:var(--text); padding-top:6px; }
.rngs{ display:flex; flex-wrap:wrap; gap:7px; }
@media(max-width:520px){ .dayrow{ grid-template-columns:1fr; gap:5px; } .dl{ padding-top:0; } }

/* ---------- 我的考核:状态卡(竖向清爽布局) ---------- */
.appgrid{ display:flex; flex-direction:column; gap:14px; }
.appcard{ background:var(--card-grad); border:1.5px solid var(--line); border-radius:18px; padding:17px 20px; display:flex; flex-direction:column; gap:12px; }
.appcard .cdot, .openrow .cdot, .taskcard .cdot{ width:12px; height:12px; border-radius:50%; flex:none; }
.ac-head{ display:flex; align-items:center; gap:11px; }
.ac-title{ font-family:var(--cn); font-weight:800; font-size:16.5px; color:var(--text); }
.ac-head .stbadge{ margin-left:auto; }
.ac-meta{ display:flex; flex-wrap:wrap; gap:7px 15px; font-family:var(--mono); font-size:11.5px; color:var(--text-mute); align-items:center; padding-left:23px; }
.ac-meta .m{ display:inline-flex; align-items:center; gap:5px; }
.ac-meta .m .ic, .ac-meta .m svg{ width:12px; height:12px; }
.ac-meta .m.id b{ color:var(--text-dim); font-weight:500; }
.ac-examiner{ display:flex; align-items:center; gap:10px; padding-left:23px; font-family:var(--cn); font-size:12.5px; }
.ac-examiner .lbl{ font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; color:var(--text-mute); }
.ac-foot{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:13px 0 1px; border-top:1px solid var(--line-soft); }
.a-cat{ font-family:var(--cn); font-weight:800; font-size:16px; color:var(--text); }
.stbadge{ font-family:var(--hud); font-weight:700; font-size:12px; padding:6px 12px; border-radius:999px; white-space:nowrap; }
.stbadge.open{ background:color-mix(in oklab,var(--a-cyan) 18%,transparent); color:var(--a-cyan); }
.stbadge.scheduled{ background:color-mix(in oklab,var(--v-bright) 20%,transparent); color:var(--v-bright); }
.stbadge.review{ background:color-mix(in oklab,var(--a-amber) 20%,transparent); color:var(--a-amber); }
.stbadge.pass{ background:color-mix(in oklab,var(--ok) 20%,transparent); color:var(--ok); }
.stbadge.reject{ background:color-mix(in oklab,var(--a-coral) 22%,transparent); color:var(--a-coral); }
.stbadge.cancelled{ background:var(--surface-2); color:var(--text-mute); }
.gcal{ font-family:var(--hud); font-weight:700; font-size:11.5px; padding:7px 12px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-dim); display:inline-flex; align-items:center; gap:7px; cursor:pointer; transition:.15s; }
.gcal:hover{ border-color:var(--v-bright); color:var(--v-bright); }
/* Google 日历风格按钮:白底 · 深字 · 多彩日历图标 */
.gcal-g{ font-family:'Roboto','Space Grotesk',var(--cn),sans-serif; font-weight:600; font-size:12.5px; padding:8px 15px 8px 12px; border-radius:10px; border:1px solid #dadce0; background:#fff; color:#3c4043; display:inline-flex; align-items:center; gap:9px; cursor:pointer; transition:.15s; box-shadow:0 1px 2px rgba(0,0,0,.25); text-decoration:none; }
.gcal-g:hover{ background:#f6f8fc; border-color:#c6cace; box-shadow:0 2px 6px rgba(0,0,0,.3); }
.gcal-g .gcal-ic{ flex:none; }
.cancel-link{ font-family:var(--cn); font-weight:700; font-size:12px; color:var(--a-coral); background:color-mix(in oklab,var(--a-coral) 12%,transparent); border:1.5px solid color-mix(in oklab,var(--a-coral) 40%,var(--line)); border-radius:9px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; padding:7px 13px; margin-left:auto; transition:.15s; }
.cancel-link .ic{ width:12px; height:12px; }
.cancel-link:hover{ color:#fff; background:var(--a-coral); border-color:transparent; }
.a-result{ border-top:1px solid var(--line-soft); padding-top:13px; font-family:var(--cn); font-size:13.5px; color:var(--text-dim); line-height:1.65; }
.a-result .rl{ display:block; font-family:var(--mono); font-size:11px; color:var(--text-mute); margin-bottom:5px; }
.a-result.ok .rl{ color:var(--ok); }
.a-result.bad .rl{ color:var(--a-coral); }
@media(max-width:620px){ .ac-meta, .ac-examiner{ padding-left:0; } }

/* ---------- 考核官 ---------- */
.agree{ max-width:580px; margin:8px auto; text-align:center; padding:36px 30px; }
.agree-ic{ width:60px; height:60px; border-radius:18px; margin:0 auto 16px; display:grid; place-items:center; color:var(--v-bright); background:color-mix(in oklab,var(--v-bright) 14%,transparent); border:1.5px solid color-mix(in oklab,var(--v-bright) 32%,transparent); }
.agree h3{ font-family:var(--cn); font-weight:800; font-size:19px; color:var(--text); margin-bottom:12px; }
.agree p{ font-family:var(--cn); font-size:13.5px; line-height:1.75; color:var(--text-dim); margin-bottom:20px; }
.agree-chk{ display:inline-flex; align-items:center; gap:9px; font-family:var(--cn); font-size:13.5px; color:var(--text); cursor:pointer; margin-bottom:20px; }
.agree-chk input{ width:17px; height:17px; accent-color:var(--v-signature); cursor:pointer; }
.agree .btn{ display:block; margin:0 auto; }

.openlist, .tasklist{ display:flex; flex-direction:column; gap:10px; }
.openrow, .taskcard{ display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:center; padding:14px 16px; border:1.5px solid var(--line); border-radius:14px; background:var(--surface); }
.o-main{ min-width:0; }
.o-cat{ font-family:var(--cn); font-weight:700; font-size:15px; color:var(--text); }
.o-meta{ font-family:var(--mono); font-size:11.5px; color:var(--text-mute); margin-top:5px; display:flex; gap:13px; flex-wrap:wrap; align-items:center; }
.o-meta svg{ width:12px; height:12px; vertical-align:-2px; }
.task-wait{ font-family:var(--cn); font-size:12px; color:var(--text-mute); white-space:nowrap; }
.openrow .o-right, .taskcard .o-right{ display:flex; flex-direction:column; align-items:flex-end; gap:8px; }
@media(max-width:560px){ .openrow, .taskcard{ grid-template-columns:auto 1fr; } .openrow .o-right, .taskcard .o-right{ grid-column:2; align-items:flex-start; flex-direction:row; flex-wrap:wrap; } }

/* ---------- 模态 ---------- */
.xmodal-bg{ position:fixed; inset:0; background:oklch(0.12 0.02 296/.62); backdrop-filter:blur(6px); z-index:300; display:none; padding:20px; }
.xmodal-bg.open{ display:grid; place-items:center; }
.xmodal{ width:min(640px,94vw); max-height:88vh; overflow:auto; background:var(--bg-2); border:1.5px solid var(--line); border-radius:20px; padding:22px 24px; box-shadow:var(--shadow); }
.xm-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:6px; }
.xm-head h3{ font-family:var(--cn); font-weight:800; font-size:18px; color:var(--text); }
.xm-x{ width:34px; height:34px; }
.xm-x svg{ width:16px; height:16px; }
.xm-sub{ font-family:var(--cn); font-size:13px; color:var(--text-dim); margin-bottom:16px; }
.xm-sub b{ font-family:var(--mono); color:var(--text); }
.xm-foot{ display:flex; align-items:center; justify-content:flex-end; gap:14px; margin-top:18px; flex-wrap:wrap; }
.xm-pick{ font-family:var(--cn); font-size:13px; color:var(--v-bright); font-weight:600; margin-right:auto; }
.xm-err{ font-family:var(--cn); font-size:12.5px; color:var(--a-coral); margin-right:auto; }

/* 上报表单 */
.rform{ display:flex; flex-direction:column; gap:16px; }
.rf-field label{ display:block; font-family:var(--mono); font-size:11px; letter-spacing:.04em; color:var(--text-mute); margin-bottom:8px; }
.rf-res{ display:flex; gap:9px; }
.rf-opt{ font-family:var(--hud); font-weight:700; font-size:13px; padding:9px 18px; border-radius:11px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-dim); cursor:pointer; transition:.15s; }
.rf-opt.on{ border-color:var(--ok); background:color-mix(in oklab,var(--ok) 16%,transparent); color:var(--ok); }
.rf-opt.on.fail{ border-color:var(--a-coral); background:color-mix(in oklab,var(--a-coral) 16%,transparent); color:var(--a-coral); }
.rform textarea, .rform input{ width:100%; font-family:var(--cn); font-size:13.5px; color:var(--text); background:var(--surface); border:1.5px solid var(--line); border-radius:11px; padding:11px 13px; resize:vertical; transition:.15s; }
.rform textarea:focus, .rform input:focus{ outline:0; border-color:var(--v-bright); }
.rform input::placeholder, .rform textarea::placeholder{ color:var(--text-mute); }
#rf-shots{ display:flex; flex-direction:column; gap:8px; }
.rf-shot{ display:flex; gap:8px; align-items:center; }
.rf-shot input{ flex:1; }
.rf-del{ width:36px; height:38px; flex:none; border-radius:10px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-mute); cursor:pointer; display:grid; place-items:center; }
.rf-del:hover{ color:var(--a-coral); border-color:var(--a-coral); }
.rf-del svg{ width:13px; height:13px; }
.rf-add{ margin-top:9px; font-family:var(--cn); font-weight:700; font-size:12.5px; color:var(--v-bright); background:none; border:0; cursor:pointer; display:inline-flex; align-items:center; gap:6px; padding:0; }
.rf-add svg{ width:13px; height:13px; }
.rf-add:hover{ text-decoration:underline; }

/* ---------- 时区选择 ---------- */
.cal-tzsel{ font-family:var(--cn); font-size:11.5px; color:var(--text); background:var(--surface); border:1.5px solid var(--line); border-radius:8px; padding:4px 7px; cursor:pointer; max-width:200px; }
.cal-tzsel:focus{ outline:0; border-color:var(--v-bright); }
/* 原生下拉弹出项:强制深底浅字,避免浅色系统弹层下看不清 */
.cal-tzsel option, .qp-sel option{ background-color:#231f36; color:#f1eff7; }
.cal-tznote{ font-family:var(--cn); font-size:10.5px; color:var(--text-mute); }

/* ---------- 考核需知 ---------- */
.notice{ display:flex; flex-direction:column; gap:13px; margin:8px 0 18px; }
.nrow{ display:grid; grid-template-columns:84px 1fr; gap:14px; align-items:start; }
.nrow b{ font-family:var(--cn); font-weight:700; font-size:13px; color:var(--v-bright); }
.nrow span{ font-family:var(--cn); font-size:13px; line-height:1.65; color:var(--text-dim); }
@media(max-width:520px){ .nrow{ grid-template-columns:1fr; gap:3px; } }

/* ---------- 上传区(截图 / 视频) ---------- */
.up-area{ display:flex; align-items:center; justify-content:center; gap:9px; padding:18px; border:1.6px dashed var(--line); border-radius:12px; background:var(--surface); color:var(--text-dim); font-family:var(--cn); font-size:13px; cursor:pointer; transition:.15s; text-align:center; }
.up-area svg{ flex:none; }
.up-area:hover, .up-area.drag{ border-color:var(--v-bright); color:var(--v-bright); background:color-mix(in oklab,var(--v-bright) 7%,var(--surface)); }
.up-area.sm{ padding:12px; font-size:12.5px; }
.up-list{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.up-list:empty{ margin-top:0; }
.up-item{ display:flex; align-items:center; gap:8px; padding:5px 8px 5px 5px; border:1.5px solid var(--line); border-radius:10px; background:var(--surface); max-width:210px; }
.up-th{ width:30px; height:30px; border-radius:6px; overflow:hidden; flex:none; display:grid; place-items:center; background:var(--surface-2); font-family:var(--mono); font-size:8px; color:var(--text-mute); }
.up-th img{ width:100%; height:100%; object-fit:cover; }
.up-nm{ font-family:var(--cn); font-size:11.5px; color:var(--text-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.up-rm{ width:20px; height:20px; flex:none; border:0; background:none; color:var(--text-mute); cursor:pointer; display:grid; place-items:center; }
.up-rm:hover{ color:var(--a-coral); }
.up-rm svg{ width:11px; height:11px; }
.rf-url{ margin-top:10px; }
.seg{ display:inline-flex; padding:3px; border-radius:10px; border:1.5px solid var(--line); background:var(--surface-2); gap:2px; margin-bottom:11px; }
.seg button{ font-family:var(--hud); font-weight:700; font-size:12px; padding:6px 16px; border-radius:8px; border:0; background:transparent; color:var(--text-mute); cursor:pointer; transition:.15s; }
.seg button.on{ background:var(--v-signature); color:#fff; }

/* ---------- 流程步骤条 + 规则行 ---------- */
.flow-steps{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:16px 0 10px; }
.fstep{ display:inline-flex; align-items:center; gap:8px; padding:7px 14px 7px 8px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); }
.fstep .fs-n{ width:21px; height:21px; border-radius:50%; flex:none; display:grid; place-items:center; font-family:var(--mono); font-size:11px; font-weight:700; color:#fff; background:var(--v-signature); }
.fstep .fs-t{ font-family:var(--cn); font-weight:600; font-size:12.5px; color:var(--text-dim); white-space:nowrap; }
.fs-arrow{ color:var(--text-mute); font-size:14px; }
.flow-rules{ font-family:var(--cn); font-size:12px; line-height:1.7; color:var(--text-mute); margin-top:4px; }
@media(max-width:760px){ .fs-arrow{ display:none; } }

/* ---------- 列表/日历切换 ---------- */
.mine-bar{ display:flex; justify-content:space-between; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:16px; }
.mine-filters{ display:flex; gap:8px; flex-wrap:wrap; }
.mfilter{ font-family:var(--cn); font-weight:700; font-size:13px; padding:8px 15px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); color:var(--text-dim); cursor:pointer; display:inline-flex; align-items:center; gap:7px; transition:.15s; }
.mfilter:hover{ border-color:color-mix(in oklab,var(--v-bright) 50%,var(--line)); color:var(--text); }
.mfilter.on{ background:var(--v-signature); color:#fff; border-color:transparent; box-shadow:0 0 22px -8px var(--v-bright); }
.mfilter .mf-n{ font-family:var(--mono); font-size:10.5px; font-weight:500; padding:1px 6px; border-radius:999px; background:color-mix(in oklab,var(--text-mute) 22%,transparent); color:var(--text-dim); }
.mfilter.on .mf-n{ background:rgba(255,255,255,.24); color:#fff; }
.viewtoggle{ display:inline-flex; padding:3px; border-radius:11px; border:1.5px solid var(--line); background:var(--surface-2); gap:2px; }
.viewtoggle.sm{ margin:0 0 0 auto; }
.viewtoggle .vt{ font-family:var(--hud); font-weight:700; font-size:12.5px; padding:7px 16px; border-radius:8px; border:0; background:transparent; color:var(--text-mute); cursor:pointer; transition:.15s; }
.viewtoggle .vt.on{ background:var(--v-signature); color:#fff; }

/* ---------- 用户小卡(§6) ---------- */
.ucard{ display:inline-flex; align-items:center; gap:6px; vertical-align:middle; }
.ucard .uav{ width:22px; height:22px; border-radius:50%; flex:none; display:grid; place-items:center; color:#fff; font-family:var(--display); font-style:italic; font-weight:800; font-size:11px; }
.ucard .unm{ font-family:var(--cn); font-weight:600; font-size:12.5px; color:var(--text); }
.ucard .udm{ flex:none; border-radius:8px; border:1.5px solid color-mix(in oklab,var(--v-bright) 45%,var(--line)); background:color-mix(in oklab,var(--v-bright) 14%,transparent); color:var(--v-bright); cursor:pointer; display:inline-flex; align-items:center; gap:5px; transition:.15s; padding:5px 10px; font-family:var(--cn); font-weight:700; font-size:11.5px; }
.ucard .udm .udm-l{ line-height:1; }
.ucard .udm:hover{ color:#fff; background:var(--v-signature); border-color:transparent; box-shadow:0 0 16px -5px var(--v-bright); }

/* 任务卡子操作行(改期 / 取消考核 —— 明确成带边框小按钮) */
.o-sub{ display:flex; gap:9px; margin-top:11px; }
.linkbtn{ font-family:var(--cn); font-weight:700; font-size:12px; color:var(--text-dim); background:var(--surface); border:1.5px solid var(--line); border-radius:9px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; padding:7px 13px; transition:.15s; }
.linkbtn .ic{ width:13px; height:13px; }
.linkbtn:hover{ color:var(--v-bright); border-color:var(--v-bright); }
.linkbtn.warn{ color:var(--a-coral); border-color:color-mix(in oklab,var(--a-coral) 38%,var(--line)); }
.linkbtn.warn:hover{ color:#fff; background:var(--a-coral); border-color:transparent; }

/* ---------- 改期确认横幅(我的考核) ---------- */
.rebanner{ margin-top:1px; border-top:1px solid var(--line-soft); padding-top:14px; display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.rebanner .rb-txt{ display:flex; align-items:flex-start; gap:8px; font-family:var(--cn); font-size:13px; line-height:1.6; color:var(--text-dim); }
.rebanner .rb-txt .ic{ width:15px; height:15px; color:var(--v-bright); flex:none; margin-top:1px; }
.rebanner .rb-txt b{ color:var(--v-bright); font-family:var(--mono); font-weight:500; }
.rebanner .rb-act{ display:flex; gap:8px; flex-wrap:wrap; }

/* ---------- 改期对比 ---------- */
.resched-cmp{ display:flex; align-items:stretch; gap:12px; margin:6px 0 14px; }
.rc-box{ flex:1; border:1.5px solid var(--line); border-radius:13px; padding:12px 14px; background:var(--surface); }
.rc-box.new{ border-color:color-mix(in oklab,var(--v-bright) 50%,var(--line)); background:color-mix(in oklab,var(--v-bright) 8%,var(--surface)); }
.rc-box .rc-l{ display:block; font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; color:var(--text-mute); margin-bottom:5px; }
.rc-box b{ font-family:var(--cn); font-weight:700; font-size:14px; color:var(--text); }
.rc-box.new b{ color:var(--v-bright); }
.rc-arrow{ display:grid; place-items:center; color:var(--text-mute); }
.rc-arrow .ic{ width:18px; height:18px; }

/* ---------- 警示行 / 备注 / 担保 ---------- */
.warn-note{ display:flex; align-items:center; gap:8px; font-family:var(--cn); font-size:12.5px; line-height:1.6; color:var(--a-amber); background:color-mix(in oklab,var(--a-amber) 12%,transparent); border:1px solid color-mix(in oklab,var(--a-amber) 30%,transparent); border-radius:11px; padding:11px 13px; margin:14px 0 0; }
.warn-note .ic{ width:15px; height:15px; flex:none; }
.xm-note{ font-family:var(--cn); font-size:11.5px; color:var(--text-mute); margin-right:auto; }
.card-note{ font-family:var(--cn); font-size:13px; line-height:1.65; color:var(--text-dim); margin:0 0 14px; }
.qp-sel.block{ display:block; width:100%; }

/* ---------- 上报截图要求醒目提示 ---------- */
.shot-hint{ display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border-radius:12px; margin-bottom:11px; background:color-mix(in oklab,var(--a-amber) 13%,transparent); border:1.5px solid color-mix(in oklab,var(--a-amber) 36%,transparent); }
.shot-hint .ic{ width:18px; height:18px; color:var(--a-amber); flex:none; margin-top:1px; }
.shot-hint b{ display:block; font-family:var(--cn); font-weight:800; font-size:12.5px; color:var(--a-amber); margin-bottom:3px; }
.shot-hint span{ font-family:var(--cn); font-size:12px; line-height:1.6; color:var(--text-dim); }

/* ---------- 日历 view(只读)忙块 ---------- */
.cal-cell.busy{ cursor:default; }
.cal-cell.busy::after{ content:""; position:absolute; inset:3px; border-radius:6px; background:color-mix(in oklab,var(--v-signature) 32%,transparent); border:1.5px solid var(--v-bright); }
.cal-cell.busy .busy-lab{ position:absolute; inset:0; z-index:1; display:flex; align-items:center; justify-content:center; font-family:var(--cn); font-weight:700; font-size:9px; color:#fff; padding:0 2px; text-align:center; line-height:1.1; overflow:hidden; }

/* ---------- D. 考官结算订单表格 ---------- */
.exam-orders-table{ width:100%; border-collapse:collapse; font-size:13px; margin-top:12px; }
.exam-orders-table th{ text-align:left; font-family:var(--mono,monospace); font-size:11px; color:var(--text-mute,#9d92c4); padding:8px 10px; border-bottom:1px solid var(--line,#2a2540); white-space:nowrap; }
.exam-orders-table td{ padding:9px 10px; border-bottom:1px solid color-mix(in oklab,var(--line,#2a2540) 50%,transparent); color:var(--text,#e8e2ff); white-space:nowrap; }
.exam-orders-table tr:hover td{ background:color-mix(in oklab,var(--v-signature,#8b5cf6) 6%,transparent); }
.exam-orders-table b{ font-weight:700; }
