:root{
  --teal:#0e7c86;
  --teal-dark:#0a5c64;
  --teal-soft:#e6f4f5;
  --blue:#2563eb;
  --pos:#dc2626;
  --pos-bg:#fef2f2;
  --sus:#d97706;
  --sus-bg:#fffbeb;
  --neg:#16a34a;
  --neg-bg:#f0fdf4;
  --ink:#1e293b;
  --ink-2:#475569;
  --ink-3:#94a3b8;
  --line:#e2e8f0;
  --bg:#f4f7f9;
  --radius:14px;
  --shadow:0 1px 3px rgba(15,42,50,.06),0 6px 20px rgba(15,42,50,.05);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,sans-serif;
  background:var(--bg);color:var(--ink);font-size:14px;line-height:1.6;
}
.hidden{display:none!important}

/* 顶栏 */
.topbar{
  height:64px;background:linear-gradient(100deg,var(--teal-dark),var(--teal));
  display:flex;align-items:center;justify-content:space-between;
  padding:0 28px;color:#fff;
}
.brand{display:flex;align-items:center;gap:12px}
.logo{
  width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;
  border:1px solid rgba(255,255,255,.35);
}
.brand-title{font-size:16px;font-weight:600;letter-spacing:.5px}
.brand-sub{font-size:12px;opacity:.82}
.topbar-status{font-size:13px;display:flex;align-items:center;gap:7px;opacity:.95}
.dot{width:8px;height:8px;border-radius:50%}
.dot-ok{background:#4ade80;box-shadow:0 0 0 3px rgba(74,222,128,.25)}

.container{max-width:1280px;margin:24px auto;padding:0 24px 48px}
.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 24px;margin-bottom:20px}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.card-head h2{font-size:15px;font-weight:600}

/* 上传区 */
.upload-zone{
  border:2px dashed #bcd6d9;border-radius:12px;background:var(--teal-soft);
  padding:34px;gap:16px;align-items:center;cursor:pointer;
  display:flex;
  display:flex;gap:16px;align-items:center;
  transition:.15s;
}
.upload-zone:hover,.upload-zone.drag{border-color:var(--teal);background:#dceff1}
.upload-icon{
  width:52px;height:52px;border-radius:12px;background:#fff;color:var(--teal);
  display:flex;align-items:center;justify-content:center;font-size:24px;flex:none;
  box-shadow:0 2px 8px rgba(14,124,134,.15);
}
.upload-title{font-size:15px;font-weight:500}
.link{color:var(--teal);text-decoration:underline}
.upload-hint{font-size:12.5px;color:var(--ink-2);margin-top:3px}

/* 步骤条 */
.steps{display:flex;align-items:center;margin-top:22px}
.step{display:flex;align-items:center;gap:8px;color:var(--ink-3);font-size:13px}
.step-no{
  width:26px;height:26px;border-radius:50%;background:#e7eef1;color:var(--ink-3);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;
}
.step.active{color:var(--teal-dark);font-weight:600}
.step.active .step-no{background:var(--teal);color:#fff}
.step.done .step-no{background:var(--neg);color:#fff}
.step-line{flex:1;height:2px;background:#e7eef1;margin:0 12px;border-radius:2px}
.step-line.done{background:var(--neg)}
.job-meta{margin-top:14px;font-size:12.5px;color:var(--ink-2);min-height:18px}

/* 概览 */
.summary-card{display:flex;align-items:center;gap:34px}
.patient{display:flex;align-items:center;gap:14px;flex:1}
.avatar{
  width:48px;height:48px;border-radius:12px;background:var(--teal-soft);color:var(--teal-dark);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex:none;
}
.patient-name{font-size:15px;font-weight:600}
.patient-desc{font-size:12.5px;color:var(--ink-2)}
.stat-grid{display:flex;gap:30px}
.stat{text-align:center}
.stat-num{font-size:24px;font-weight:700;color:var(--ink)}
.num-pos{color:var(--pos)}
.num-sus{color:var(--sus)}
.stat-label{font-size:12px;color:var(--ink-3);margin-top:2px}

/* 双栏 */
.result-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}
@media(max-width:980px){.result-grid{grid-template-columns:minmax(0,1fr)}}

/* ===== 手机端适配 ===== */
@media(max-width:640px){
  .topbar{height:auto;padding:12px 16px;flex-direction:column;align-items:flex-start;gap:6px}
  .brand-title{font-size:15px}
  .brand-sub{font-size:11px}
  .topbar-status{font-size:12px}
  .container{margin:14px auto;padding:0 12px 36px}
  .card{padding:16px 14px;border-radius:12px;margin-bottom:14px}
  .upload-zone{flex-direction:column;text-align:center;padding:24px 16px}
  .upload-hint{font-size:12px}
  .steps{margin-top:18px}
  .step-label{font-size:12px}
  .step-line{margin:0 6px}
  .step-no{width:24px;height:24px;font-size:12px}
  .patient{gap:10px;margin-bottom:0}
  .summary-card .stat{display:flex;align-items:baseline;gap:6px;text-align:left;padding:10px 12px;background:#f6fafb;border-radius:10px}
  .summary-card .stat-num{font-size:20px}
  .summary-card .stat-label{margin-top:0;font-size:12px}
  .summary-card{display:block}
  .summary-card .patient{margin-bottom:14px}
  .summary-card .stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
  .card-head{flex-wrap:wrap;gap:10px}
  .findings-list,.report-body{max-height:none}
  .finding{grid-template-columns:64px 1fr 48px;gap:8px;padding:8px 6px}
  .f-name{font-size:13px}
  .report-body{font-size:13px}
  .report-body th,.report-body td{padding:5px 7px}
}

/* 筛选 */
.filters{display:flex;gap:6px}
.filter{
  border:1px solid var(--line);background:#fff;color:var(--ink-2);
  padding:4px 12px;border-radius:20px;font-size:12.5px;cursor:pointer;
}
.filter.active{background:var(--teal);border-color:var(--teal);color:#fff}

/* 征象列表 */
.findings-card{display:flex;flex-direction:column}
.findings-list{max-height:560px;overflow-y:auto;padding-right:4px}
.finding{
  display:grid;grid-template-columns:88px 1fr 56px;gap:10px;align-items:center;
  padding:9px 10px;border-radius:9px;margin-bottom:4px;
}
.finding:hover{background:#f8fbfb}
.f-organ{font-size:12px;color:var(--ink-2)}
.f-main{display:flex;flex-direction:column;gap:4px}
.f-name{font-size:13.5px}
.f-name-en{font-size:11px;color:var(--ink-3)}
.bar{height:6px;border-radius:4px;background:#eef2f4;overflow:hidden}
.bar i{display:block;height:100%;border-radius:4px;background:var(--ink-3)}
.f-score{font-size:13px;font-weight:600;text-align:right}
.finding.level-pos{background:var(--pos-bg)}
.finding.level-pos .f-score,.finding.level-pos .f-name{color:var(--pos)}
.finding.level-pos .bar i{background:var(--pos)}
.finding.level-sus{background:var(--sus-bg)}
.finding.level-sus .f-score,.finding.level-sus .f-name{color:var(--sus)}
.finding.level-sus .bar i{background:var(--sus)}
.finding.level-neg .f-score{color:var(--neg)}
.finding.level-neg .bar i{background:var(--neg)}

/* 报告 */
.report-card{display:flex;flex-direction:column}
.report-actions{display:flex;gap:8px}
.btn-mini{
  border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:4px 12px;font-size:12.5px;cursor:pointer;color:var(--ink-2);
}
.btn-mini:hover{border-color:var(--teal);color:var(--teal)}
.report-body{font-size:13.5px;line-height:1.85;max-height:560px;overflow-y:auto;padding-right:6px}
.report-body h3{font-size:14px;color:var(--teal-dark);margin:16px 0 8px;padding-left:9px;border-left:3px solid var(--teal)}
.report-body h3:first-child{margin-top:0}
.report-body table{border-collapse:collapse;width:100%;font-size:13px;margin:4px 0}
.report-body th,.report-body td{border:1px solid var(--line);padding:6px 10px;text-align:left}
.report-body th{background:var(--teal-soft);font-weight:600}
.report-body ul{padding-left:20px}
.report-body li{margin:3px 0}
.tag-pos{color:var(--pos);font-weight:600}
.tag-sus{color:var(--sus);font-weight:600}
.disclaimer{
  margin-top:14px;padding:10px 12px;background:#fff8ed;border:1px solid #fde6b8;
  color:#92610a;font-size:12px;border-radius:9px;line-height:1.6;
}
.empty-tip{color:#94a3b8;padding:18px;text-align:center;font-size:13px}
.report-body p{margin:6px 0}
.report-body hr{border:none;border-top:1px solid var(--line);margin:12px 0}
.report-body blockquote{
  margin:10px 0;padding:9px 12px;background:#fff8ed;border-left:3px solid #f59e0b;
  color:#92610a;font-size:12.5px;border-radius:0 8px 8px 0;line-height:1.7;
}
.report-body table{margin:8px 0}
@media print{
  .topbar,.upload-card,.card-head .report-actions,.filters{display:none!important}
  body{background:#fff}
  .result-grid{display:block}
  .card{box-shadow:none;border:1px solid #ddd}
}

/* ========== 本次增强：关注点 / 日志 / 下载 / 表格视图 ========== */
/* 临床怀疑输入 */
.suspect-row{margin:14px 0 4px}
.suspect-label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
#suspectInput,#refocusInput{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
  font-size:14px;color:var(--ink);background:#fff;outline:none;transition:border-color .15s;
}
#suspectInput:focus,#refocusInput:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(14,124,134,.1)}
.suspect-hint{font-size:12px;color:var(--ink-3);margin-top:6px}

/* 日志面板 */
.log-panel{margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#0f172a}
.log-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 12px;cursor:pointer;user-select:none;
  color:#cbd5e1;font-size:13px;background:#111c33;
}
.log-title{font-weight:600;letter-spacing:.5px}
.log-toggle{color:#7dd3fc;font-size:12px}
.log-body{
  max-height:170px;overflow-y:auto;padding:8px 12px;
  font-family:ui-monospace,Consolas,"Courier New",monospace;font-size:12px;line-height:1.7;
  background:#0f172a;color:#cbd5e1;
}
.log-panel:not(.open) .log-body{display:none}
.log-line{white-space:pre-wrap;word-break:break-all;animation:logfade .3s ease}
.log-time{color:#64748b;margin-right:8px}
.log-info{color:#cbd5e1}
.log-warn{color:#fbbf24}
.log-error{color:#f87171}
@keyframes logfade{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.log-body::-webkit-scrollbar{width:6px}
.log-body::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}

/* 卡头工具区 */
.head-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg-btn{
  border:none;background:#fff;padding:5px 12px;font-size:12.5px;cursor:pointer;color:var(--ink-2);
}
.seg-btn.active{background:var(--teal);color:#fff}
.dl-row{display:flex;gap:8px;margin:-4px 0 10px}
a.btn-mini{text-decoration:none;display:inline-flex;align-items:center}

/* 表格视图 */
.raw-table{width:100%;border-collapse:collapse;font-size:13px}
.raw-table th,.raw-table td{
  padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;
}
.raw-table th{position:sticky;top:0;background:#f8fbfb;font-weight:600;color:var(--ink-2);z-index:1}
.raw-table td.num,.raw-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.raw-table tr.row-pos{background:var(--pos-bg)}
.raw-table tr.row-sus{background:var(--sus-bg)}
.raw-table .t-en{display:block;font-size:11px;color:var(--ink-3)}
.tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:600}
.tag-pos{background:#fee2e2;color:var(--pos)}
.tag-sus{background:#fef3c7;color:var(--sus)}
.tag-neg{background:#dcfce7;color:var(--neg)}

/* 定向分析输入 */
.refocus{display:flex;gap:8px;margin-bottom:12px}
#refocusInput{padding:8px 10px;font-size:13px}
.btn-primary-sm{
  border:none;background:var(--teal);color:#fff;padding:0 16px;border-radius:9px;
  font-size:13px;cursor:pointer;white-space:nowrap;
}
.btn-primary-sm:hover{background:var(--teal-dark)}
.btn-primary-sm:disabled{opacity:.6;cursor:wait}
.patient-focus{margin-top:4px;font-size:12.5px;color:var(--teal);font-weight:600}

@media(max-width:640px){
  .head-tools{width:100%}
  .refocus{flex-direction:column}
  .log-body{max-height:150px}
}
@media print{
  .log-panel,.suspect-row,.dl-row,.refocus,.head-tools{display:none!important}
}

/* 排队提示徽标 */
.queue-badge{
  display:inline-block;background:var(--sus-bg);color:var(--sus);
  border:1px solid #fde68a;border-radius:10px;padding:1px 10px;font-size:12.5px;
  font-weight:600;margin-right:4px;
}
