/* 报告视图与线条图形的样式（销售手机端和管理端共用；先引 tokens.css、components.css）。
   窄屏单列；报告区宽到 640px 起（容器查询，不看屏幕宽）过程对照横排、每一步两列、AI 备注两列，960px 起备注四列。
   颜色只用设计令牌：墨线 + 一种蓝；红只表达「未出现 / 没做到」，并且总配文字或符号。
   这个文件在 sales_site/ 和 callreview/web/static/manager/ 各放一份，内容完全相同（有测试比对），改一处要同步另一处。 */

.rp-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.rp-mono{font-family:var(--ca-font-mono);font-variant-numeric:tabular-nums}
.rp-ic{width:18px;height:18px;stroke-width:1.8;flex-shrink:0}
.rp-tag-busy{background:var(--ca-accent-soft);border-color:transparent;color:var(--ca-accent)}
.rp-none{color:var(--ca-muted)}

/* ---------- 报告骨架 ---------- */
.report{container:report/inline-size;display:grid;gap:var(--ca-space-4);min-width:0}
.report>.ca-card,.rp-step{padding:var(--ca-space-5)}
.rp-head{display:flex;align-items:center;justify-content:space-between;gap:var(--ca-space-3);margin-bottom:var(--ca-space-4)}
.rp-head h2{font-size:var(--ca-size-card-mobile)}
.rp-head-note{font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-head-note.is-danger{color:var(--ca-danger)}

/* ---------- 总分卡 ---------- */
.rp-total-top{display:grid;gap:var(--ca-space-3)}
.rp-total-score{display:flex;align-items:baseline;gap:var(--ca-space-2);margin-top:2px}
.rp-total-score .ca-number{font-size:52px;color:var(--ca-accent)}
.rp-total-score span{font:var(--ca-size-body) var(--ca-font-mono);color:var(--ca-muted)}
.rp-summary{line-height:1.75}
.rp-meta{margin-top:var(--ca-space-2);font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-total .hw{margin-top:var(--ca-space-5);padding-top:var(--ca-space-4);border-top:1px solid var(--ca-line)}

/* ---------- 过程波形 ---------- */
.hw{margin:0}
.hw-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--ca-space-3);margin-bottom:var(--ca-space-2)}
.hw-span{font:13px/1.5 var(--ca-font-mono);color:var(--ca-muted)}
.hw-plot{display:block;width:100%;height:auto;overflow:visible}
.hw-plot path{stroke-linecap:round;stroke-linejoin:round}
.hw-line{stroke:var(--ca-ink);stroke-width:1.1}
.hw-accent{stroke:var(--ca-accent);stroke-width:1.7}
.hw-guide{stroke:var(--ca-control-border);stroke-width:.8;stroke-dasharray:2 5}
.hw-axis{stroke:var(--ca-control-border);stroke-width:1}
.hw-tick{stroke:var(--ca-ink);stroke-width:1.3}
.hw-idle{stroke:var(--ca-control-border);stroke-width:1;stroke-dasharray:2 4}
.hw-miss{stroke:var(--ca-danger);stroke-width:1.4;stroke-dasharray:3 3}
.hw-miss-x{stroke:var(--ca-danger);stroke-width:1.6}
.hw-leader{stroke:var(--ca-control-border);stroke-width:.9}
.hw-leader.is-missing{stroke:var(--ca-danger);stroke-dasharray:2 3}
/* 进场：一束线从通话开头描到结尾，再停住；减少动态效果时 components.css 会关掉动画，线直接是画完的样子 */
.hw-lines .hw-line,.hb-line{stroke-dasharray:100;stroke-dashoffset:0;animation:ca-plot 2.4s cubic-bezier(.45,.05,.25,1) both}
.hw-lines .hw-l1,.hb-l1{animation-delay:.08s}
.hw-lines .hw-l2,.hb-l2{animation-delay:.16s}
.hw-lines .hw-l3,.hb-l3{animation-delay:.24s}
.hb-l4{animation-delay:.32s}
.hb-l5{animation-delay:.4s}
@keyframes ca-plot{from{stroke-dashoffset:100}}
.hw-keys{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.hw-keys-1{grid-template-columns:1fr}.hw-keys-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.hw-keys-3{grid-template-columns:repeat(3,minmax(0,1fr))}.hw-keys-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.hw-keys-6{grid-template-columns:repeat(6,minmax(0,1fr))}.hw-keys-7{grid-template-columns:repeat(7,minmax(0,1fr))}
.hw-key{width:100%;min-height:64px;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px;border:0;border-radius:var(--ca-radius-small);background:none;color:inherit;font:inherit;text-align:center}
button.hw-key:hover{background:var(--ca-bg)}
.hw-key-step{width:22px;height:22px;display:grid;place-items:center;border:1px solid var(--ca-control-border);border-radius:50%;font:500 12px/1 var(--ca-font-mono);color:var(--ca-ink)}
.hw-key-score{font:500 20px/1.25 var(--ca-font-mono);letter-spacing:-.02em}
.hw-key-at{display:inline-flex;align-items:center;gap:2px;font:13px/1.4 var(--ca-font-mono);color:var(--ca-muted)}
.hw-key.is-missing .hw-key-step{border-color:var(--ca-danger);border-style:dashed;color:var(--ca-danger)}
.hw-key.is-missing .hw-key-score{color:var(--ca-muted)}
.hw-key.is-missing .hw-key-at{color:var(--ca-danger);font-family:var(--ca-font-sans)}
.hw-key-icon{width:13px;height:13px;stroke-width:2.2}
.hw-caption{margin-top:var(--ca-space-2);font-size:var(--ca-size-small);line-height:1.6;color:var(--ca-muted)}

/* ---------- 标准过程对照 ---------- */
.rp-proc-list{list-style:none;margin:0 calc(var(--ca-space-2) * -1);padding:0;display:grid;gap:2px}
.rp-proc{width:100%;min-height:60px;display:grid;grid-template-columns:30px minmax(0,1fr) auto auto;grid-template-areas:"no name score go" "no at score go";column-gap:var(--ca-space-3);align-items:center;padding:var(--ca-space-2);border:0;border-radius:var(--ca-radius-control);background:none;color:inherit;font:inherit;text-align:left}
button.rp-proc:hover{background:var(--ca-bg)}
.rp-proc-no{grid-area:no;width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--ca-ink);border-radius:50%;font:500 14px/1 var(--ca-font-mono)}
.rp-proc-name{grid-area:name;font-size:var(--ca-size-body);line-height:1.4}
.rp-proc-at{grid-area:at;display:inline-flex;align-items:center;gap:4px;font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-proc-score{grid-area:score;white-space:nowrap}
.rp-proc-score b{font:500 24px/1 var(--ca-font-mono)}
.rp-proc-score small,.rp-step-score small{margin-left:2px;font-size:13px;color:var(--ca-muted)}
.rp-proc-go{grid-area:go;color:var(--ca-muted);display:flex}
.rp-proc.is-missing{background:var(--ca-danger-bg)}
.rp-proc.is-missing .rp-proc-no{border-color:var(--ca-danger);border-style:dashed;color:var(--ca-danger)}
.rp-proc.is-missing .rp-proc-at{color:var(--ca-danger);font-weight:var(--ca-weight-medium)}
.rp-order{margin-top:var(--ca-space-4);padding:var(--ca-space-3) var(--ca-space-4);border-radius:var(--ca-radius-control);background:var(--ca-warning-bg);color:var(--ca-text)}
.rp-order h3{display:flex;align-items:center;gap:6px;font-size:var(--ca-size-body);color:var(--ca-warning)}
.rp-order ul{margin:6px 0 0;padding-left:1.25em;display:grid;gap:4px}

/* ---------- 每一步 ---------- */
.rp-steps{display:grid;gap:var(--ca-space-4);align-items:start}
.rp-step{scroll-margin-top:84px}
.rp-step.is-missing{border-color:var(--ca-danger);border-style:dashed}
.rp-step-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--ca-space-3)}
.rp-step-no{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--ca-ink);border-radius:50%;font:500 14px/1 var(--ca-font-mono)}
.rp-step.is-missing .rp-step-no{border-color:var(--ca-danger);border-style:dashed;color:var(--ca-danger)}
.rp-step-head h3{font-size:var(--ca-size-brand)}
.rp-step-score{white-space:nowrap}
.rp-step-score .ca-number{font-size:30px}
.rp-step-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin:var(--ca-space-2) 0 0 42px;font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-miss{display:inline-flex;align-items:center;gap:4px;color:var(--ca-danger);font-weight:var(--ca-weight-medium)}
.rp-checks,.rp-evidence,.rp-suggest{margin-top:var(--ca-space-5)}
.rp-checks h4,.rp-evidence h4,.rp-suggest h4{display:flex;justify-content:space-between;gap:var(--ca-space-3);margin:0 0 var(--ca-space-2);font-size:var(--ca-size-small);font-weight:var(--ca-weight-medium);color:var(--ca-muted)}
.rp-count{font:13px/1.6 var(--ca-font-mono)}
.rp-check-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rp-check{display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--ca-space-2);align-items:start;line-height:1.55}
.rp-check-mark{width:22px;height:22px;stroke-width:2.1}
.rp-check.is-done .rp-check-mark{color:var(--ca-success)}
.rp-check.is-missed .rp-check-mark{color:var(--ca-danger)}
.rp-check.is-missed.is-bonus{color:var(--ca-muted)}
.rp-check.is-missed.is-bonus .rp-check-mark{color:var(--ca-control-border);stroke-width:1.6}
.rp-evidence ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rp-evidence li{padding-left:var(--ca-space-3);border-left:2px solid var(--ca-line);line-height:1.65}
.rp-suggest{padding:var(--ca-space-3) var(--ca-space-4);border-radius:var(--ca-radius-control);background:var(--ca-accent-soft)}
.rp-suggest h4{color:var(--ca-accent)}
.rp-suggest p{line-height:1.65}

/* ---------- 学生问题 ---------- */
.rp-answer{padding-bottom:var(--ca-space-4);margin-bottom:var(--ca-space-4);border-bottom:1px solid var(--ca-line)}
.rp-answer-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
.rp-answer-name{font-weight:var(--ca-weight-medium)}
.rp-answer-off{padding:2px 10px;border:1px solid var(--ca-line);border-radius:var(--ca-radius-small);font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-answer-weight{font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-answer .rp-evidence,.rp-answer .rp-suggest{margin-top:var(--ca-space-3)}
.rp-q-list{list-style:none;margin:0;padding:0}
.rp-q{padding:var(--ca-space-4) 0;border-top:1px solid var(--ca-line)}
.rp-q:first-child{border-top:0;padding-top:0}
.rp-q-ask,.rp-q-ans{display:grid;grid-template-columns:26px minmax(0,1fr);gap:var(--ca-space-2);line-height:1.6}
.rp-q-ask{font-weight:var(--ca-weight-medium)}
.rp-q-ans{margin-top:6px}
.rp-q-label{width:24px;height:24px;display:grid;place-items:center;border:1px solid var(--ca-line);border-radius:var(--ca-radius-small);font-size:13px;font-weight:var(--ca-weight-medium);color:var(--ca-muted)}
.rp-q-ask .rp-q-label{border-color:var(--ca-ink);color:var(--ca-ink)}
.rp-q-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0 0 34px;font-size:var(--ca-size-small);line-height:1.6;color:var(--ca-muted)}

/* ---------- AI 备注 ---------- */
.rp-notes-grid{display:grid;gap:var(--ca-space-3)}
.rp-note{padding:var(--ca-space-4);border:1px solid var(--ca-line);border-radius:var(--ca-radius-control);background:var(--ca-bg)}
.rp-note h3{margin-bottom:var(--ca-space-2);font-size:var(--ca-size-small);color:var(--ca-muted)}
.rp-note ul{margin:0;padding-left:1.2em;display:grid;gap:6px;line-height:1.6}
.rp-note p{line-height:1.65}
.rp-best{font-size:var(--ca-size-brand);color:var(--ca-accent)}

/* ---------- 转写 ---------- */
.rp-transcript{list-style:none;margin:0;padding:0}
.rp-line{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"at who" "text text";gap:0 var(--ca-space-2);padding:10px 8px 10px 12px;border-left:2px solid var(--ca-line)}
.rp-line+.rp-line{margin-top:2px}
.rp-line.is-sales{border-left-color:var(--ca-accent)}
.rp-line-at{grid-area:at;padding:0;border:0;background:none;font:13px/1.7 var(--ca-font-mono);color:var(--ca-muted)}
button.rp-line-at{min-height:28px;color:var(--ca-accent);text-decoration:underline;text-decoration-color:var(--ca-line);text-underline-offset:3px}
.rp-line-who{grid-area:who;font-size:13px;line-height:1.7;font-weight:var(--ca-weight-medium);color:var(--ca-ink)}
.rp-line.is-sales .rp-line-who{color:var(--ca-accent)}
.rp-line-text{grid-area:text;line-height:1.65;overflow-wrap:anywhere}
.rp-line.is-current{background:var(--ca-accent-soft)}
.rp-line.is-target{background:var(--ca-warning-bg)}
.rp-transcript-text{white-space:pre-wrap}
.rp-transcript-card{padding:0!important;overflow:hidden}
.rp-transcript-card summary{min-height:60px;display:flex;align-items:center;gap:var(--ca-space-3);padding:0 var(--ca-space-5);cursor:pointer;list-style:none}
.rp-transcript-card summary::-webkit-details-marker{display:none}
.rp-transcript-card summary:focus-visible{outline:2px solid var(--ca-accent);outline-offset:-2px}
.rp-transcript-title{font-size:var(--ca-size-card-mobile);font-weight:var(--ca-weight-medium)}
.rp-toggle{display:inline-flex;align-items:center;gap:4px;margin-left:auto;font-size:var(--ca-size-small);color:var(--ca-accent)}
.rp-summary-icon{transform:rotate(90deg);transition:transform 150ms}
.rp-transcript-card[open] .rp-summary-icon{transform:rotate(-90deg)}
.rp-transcript-card[open] .rp-when-closed,.rp-transcript-card:not([open]) .rp-when-open{display:none}
.rp-transcript-card .rp-transcript{padding:var(--ca-space-3) var(--ca-space-4) var(--ca-space-5);border-top:1px solid var(--ca-line)}

/* ---------- 5 格过程指纹 ---------- */
.fp{display:block;width:74px;height:auto;overflow:visible}
.fp-cell{stroke:var(--ca-accent);stroke-width:1}
.fp-l4{fill:#3157C8}.fp-l3{fill:#7690DD}.fp-l2{fill:#B3C1EC}.fp-l1{fill:#DCE3F7}.fp-l0{fill:var(--ca-surface)}
.fp-empty{fill:var(--ca-surface);stroke:var(--ca-control-border);stroke-dasharray:2 2}

/* ---------- 页头谐波线、空状态方格 ---------- */
.hb{display:block;width:100%;height:100%}
.hb-line{stroke:var(--ca-ink);stroke-width:1.1}
.hb-accent{stroke:var(--ca-accent);stroke-width:1.5}
.ea{width:90px;height:90px;flex-shrink:0}
.ea-box{stroke:var(--ca-control-border);stroke-width:1}
.ea-pick{stroke:var(--ca-accent);stroke-width:1.5}

/* ---------- 报告区够宽时 ---------- */
@container report (min-width:640px){
  .report>.ca-card,.rp-step{padding:var(--ca-space-6)}
  .rp-total-top{grid-template-columns:auto minmax(0,1fr);gap:var(--ca-space-8);align-items:center}
  .rp-total-copy{padding-left:var(--ca-space-8);border-left:1px solid var(--ca-line)}
  .rp-proc-list{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:var(--ca-space-2);margin:0}
  .rp-proc{height:100%;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"no go" "name name" "at at" "score score";align-items:start;row-gap:6px;padding:var(--ca-space-3);border:1px solid var(--ca-line)}
  .rp-proc.is-missing{border-color:var(--ca-danger);border-style:dashed}
  .rp-proc-score b{font-size:26px}
  .rp-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rp-notes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container report (min-width:960px){
  .rp-notes-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
