:root{
  --teal:#0f766e; --teal-d:#115e59; --teal-l:#ccfbf1; --ink:#13242c; --muted:#5b7079;
  --line:#dbe4e6; --bg:#f4f7f6; --card:#ffffff; --warn:#b45309; --warn-bg:#fef3c7;
  --danger:#b91c1c; --ok:#15803d; --new:#b45309; --doubt:#7c3aed; --radius:14px;
  --shadow:0 1px 3px rgba(16,40,48,.08),0 4px 16px rgba(16,40,48,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Segoe UI,Roboto,Arial,sans-serif;
  color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;line-height:1.5;
}
button{font-family:inherit}
a{color:var(--teal);text-decoration:none}

/* 顶栏与标签 */
.topbar{position:sticky;top:0;z-index:20;background:var(--teal);color:#fff;box-shadow:var(--shadow)}
.brand{display:flex;align-items:center;gap:.45rem;color:#fff;font-weight:800;font-size:1.06rem;padding:.7rem .9rem .2rem}
.tabs{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;border-top:1px solid rgba(255,255,255,.12)}
.tabs a{flex:0 0 auto;color:#d7f3ee;padding:.62rem .85rem;font-size:.92rem;white-space:nowrap;border-bottom:3px solid transparent}
.tabs a.active{color:#fff;border-bottom-color:#fff;font-weight:700}

.view-wrap{max-width:760px;margin:0 auto;padding:.85rem .85rem 4rem}
.view{display:none}.view.active{display:block;min-width:0}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.95rem;margin-bottom:.9rem;min-width:0}
.card h2{margin:.1rem 0 .7rem;font-size:1.05rem}
.card h3{margin:1rem 0 .5rem;font-size:.98rem}
.muted{color:var(--muted);font-size:.85rem}
.notice{background:var(--warn-bg);border:1px solid #f5d98a;color:#7c4a03;border-radius:10px;padding:.6rem .7rem;font-size:.83rem;margin:.6rem 0}
.privacy{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:10px;padding:.6rem .7rem;font-size:.83rem;margin:.6rem 0}

/* 表单 */
label.fld{display:block;margin:.55rem 0;font-size:.9rem;color:#33474f}
label.fld span{display:block;margin-bottom:.25rem;font-weight:600}
input[type=text],input[type=date],input[type=number],textarea,select{
  width:100%;min-width:0;padding:.62rem .7rem;border:1px solid var(--line);border-radius:9px;font-size:1rem;background:#fff;color:var(--ink)}
textarea{min-height:64px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.7rem}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid var(--teal);
  background:var(--teal);color:#fff;border-radius:9px;padding:.6rem .9rem;font-size:.95rem;font-weight:600;cursor:pointer}
.btn.secondary{background:#fff;color:var(--teal)}
.btn.ghost{background:transparent;color:var(--teal);border-color:var(--line)}
.btn.danger{background:#fff;color:var(--danger);border-color:#f3b6b6}
.btn.small{padding:.38rem .6rem;font-size:.84rem;border-radius:7px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.7rem}
.btn-block{width:100%}

/* 进度 */
.progress{height:10px;background:#e4eeec;border-radius:6px;overflow:hidden;margin:.4rem 0}
.progress>i{display:block;height:100%;background:var(--teal)}
.progress-stats{display:flex;justify-content:space-between;font-size:.82rem;color:var(--muted)}

/* 分组与部位 */
.group-title{display:flex;align-items:center;gap:.5rem;margin:1rem 0 .4rem;font-weight:800;color:var(--teal-d)}
.group-title .tag{font-size:.72rem;background:var(--teal-l);color:var(--teal-d);border-radius:6px;padding:.1rem .4rem}
.part{border:1px solid var(--line);border-radius:11px;padding:.7rem;margin:.55rem 0;background:#fff;min-width:0}
.part-head{display:flex;align-items:flex-start;gap:.5rem;min-width:0}
.part-name{flex:1 1 auto;min-width:0;font-weight:600;font-size:.95rem}
.part-name .hint{display:block;font-weight:400;color:var(--muted);font-size:.8rem;margin-top:.1rem}
.req{font-size:.7rem;color:var(--warn);border:1px solid #f0c673;background:var(--warn-bg);border-radius:5px;padding:0 .3rem;margin-left:.3rem;white-space:nowrap}
.badge{font-size:.72rem;border-radius:6px;padding:.1rem .45rem;white-space:nowrap}
.badge.ok{background:#dcfce7;color:var(--ok)}
.badge.todo{background:#eef2f3;color:#5b7079}

/* 缩略图 */
.thumbs{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.6rem}
.thumb{position:relative;width:96px;height:96px;border-radius:9px;overflow:hidden;border:1px solid var(--line);background:#0c2a26}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .del{position:absolute;top:2px;right:2px;width:22px;height:22px;border:none;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:13px;line-height:1}
.thumb .src{position:absolute;left:2px;bottom:2px;font-size:9px;background:rgba(0,0,0,.55);color:#fff;padding:0 4px;border-radius:4px}
.part .ops{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.55rem}

/* 对比两期 */
.phase-cols{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-top:.55rem}
.phase-cols .col{min-width:0;border:1px dashed var(--line);border-radius:9px;padding:.5rem;background:#fbfdfd}
.phase-cols .col h4{margin:0 0 .35rem;font-size:.8rem;color:var(--muted);display:flex;justify-content:space-between}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:.5rem}
.seg button{border:none;background:#fff;padding:.4rem .6rem;font-size:.83rem;color:#33474f;cursor:pointer}
.seg button.on{background:var(--teal);color:#fff}
.seg button[data-v=new].on{background:var(--new)}
.seg button[data-v=doubt].on{background:var(--doubt)}
.attn{border-left:4px solid var(--new);background:#fffaf2;border-radius:8px;padding:.55rem .7rem;margin:.5rem 0;font-size:.9rem}
.attn.doubt{border-left-color:var(--doubt);background:#f8f5ff}

/* 读数 */
.meter-row{display:grid;grid-template-columns:1.1fr 1fr 1fr auto;gap:.5rem;align-items:center;margin:.5rem 0}
.meter-row .delta{font-size:.85rem;font-weight:700;color:var(--teal-d);white-space:nowrap}
.meter-row .delta.back{color:var(--warn)}

/* 报告 */
.report-cover{border:1.5px solid var(--ink);border-radius:10px;padding:1.1rem;margin-bottom:1rem;background:#fff}
.report-cover h1{margin:0 0 .6rem;font-size:1.35rem;text-align:center}
.kv{display:grid;grid-template-columns:auto 1fr;gap:.3rem .8rem;font-size:.92rem;margin:.4rem 0}
.kv dt{color:var(--muted)}
.section-title{font-weight:800;border-bottom:2px solid var(--ink);padding-bottom:.25rem;margin:1.1rem 0 .6rem}
.rp-pair{border:1px solid var(--line);border-radius:9px;padding:.6rem;margin:.55rem 0;break-inside:avoid}
.rp-imgs{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.rp-imgs figure{margin:0;min-width:0}
.rp-imgs img{width:100%;border:1px solid var(--line);border-radius:6px;display:block}
.rp-imgs figcaption{font-size:.74rem;color:var(--muted);margin-top:.2rem;word-break:break-all}
.sign-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}
.sign-box{border:1px solid var(--line);border-radius:8px;padding:.6rem;min-height:96px}
.sign-box .line{border-bottom:1px solid #9aa; margin-top:52px;font-size:.78rem;color:var(--muted)}
.digest-box{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;word-break:break-all;background:#f2f7f6;border:1px solid var(--line);border-radius:8px;padding:.6rem}
ul.clean{margin:.4rem 0;padding-left:1.1rem}
ul.clean li{margin:.25rem 0}

.toast{position:fixed;left:50%;bottom:1.3rem;transform:translateX(-50%) translateY(20px);background:rgba(15,30,35,.92);color:#fff;
  padding:.6rem 1rem;border-radius:10px;font-size:.88rem;opacity:0;pointer-events:none;transition:.25s;max-width:90%;z-index:50;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 移动端 */
@media (max-width:560px){
  .grid2,.grid3{grid-template-columns:1fr}
  .meter-row{grid-template-columns:1fr 1fr}
  .meter-row .delta{grid-column:1 / -1}
  .thumb{width:84px;height:84px}
  .sign-grid{grid-template-columns:1fr}
}

/* 打印：仅输出报告 */
.print-only{display:none}
@media print{
  @page{size:A4;margin:12mm}
  body{background:#fff}
  .topbar,.view-wrap,.toast,#file-input{display:none !important}
  .print-only{display:block !important}
  .rp-pair,.report-cover,.sign-box,.section-title{break-inside:avoid}
}
