/* ============================================================
   AI 病历助手 · Web 版
   方向：临床文书台（Clinical Desk）
   原则：颜色是信号不是装饰；红色只代表异常；分割靠发丝线不靠卡片阴影
   ============================================================ */

/* ---------- tokens ---------- */
:root{
  /* 纸面与墨色（冷调） */
  --paper:#F4F6F8;
  --surface:#FFFFFF;
  --surface-2:#ECF0F4;
  --surface-3:#E2E7EC;
  --line:#DCE1E7;
  --line-2:#C8CFD7;
  --ink:#131720;
  --ink-2:#454D58;
  --ink-3:#626B77;   /* 纸面/白底上均 ≥4.5:1 */

  /* 主色：临床蓝（主操作 / 选中 / 聚焦） */
  --primary:#16528F;
  --primary-press:#113F6E;
  --primary-weak:#E8F0F8;
  --primary-deep:#0C2F52;   /* 录音中按下态：深蓝，不用红色（红只留给异常/高风险） */
  --primary-line:#B9CFE6;
  --focus:#2E7BCF;   /* 聚焦环颜色（:focus-visible 引用） */

  /* 语义色：红只给异常与高风险 */
  --danger:#A3231B;
  --danger-weak:#FBECEA;
  --danger-wash-press:#F5DDDA;
  --danger-line:#E8C4C0;
  --danger-press:#8E1E17;
  --warn:#7A5200;
  --warn-weak:#FBF3E1;
  --warn-line:#E8D5AC;
  --ok:#1B6340;
  --ok-weak:#E8F3ED;
  --ok-line:#BBD9C9;

  /* 几何 */
  --r-1:6px; --r-2:10px; --r-3:14px;
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px;
  --tap:44px;
  --tap-lg:64px;      /* 行级入口（首页那一类整行按钮） */
  --hair:1px;

  /* 字 */
  --font:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --fs-xs:12px; --fs-sm:13px; --fs-md:14.5px; --fs-base:16px;
  --fs-lg:18px; --fs-xl:21px; --fs-2xl:26px;

  /* 影：带偏移与柔化，不做零偏移光晕 */
  --shadow-sheet:0 1px 2px rgba(19,23,32,.05), 0 10px 28px -14px rgba(19,23,32,.18);
  --shadow-bar:0 -1px 0 var(--line);
  --shadow-focus:0 0 0 3px rgba(46,123,207,.28);

  --dur:170ms;
  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font); font-size:var(--fs-base); line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-wrap:anywhere;
}
h1,h2,h3,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
svg{display:block;flex:none}
[hidden]{display:none !important}

/* ---------- 浏览器自带的表面也要被设计 ---------- */
::selection{background:var(--primary-weak);color:var(--ink)}
input,textarea{caret-color:var(--primary)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:99px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:var(--ink-3);background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 图标 ---------- */
.ic{width:22px;height:22px;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;fill:none}
.ic-sm{width:18px;height:18px}

/* ---------- 骨架 ---------- */
.app{min-height:100dvh;display:flex;flex-direction:column}

/* 顶栏：不加阴影，靠发丝线 */
.bar{
  position:sticky;top:0;z-index:30;background:var(--surface);
  border-bottom:var(--hair) solid var(--line);
  padding-top:env(safe-area-inset-top);
}
.bar__in{
  max-width:1180px;margin:0 auto;padding:var(--s2) var(--s4);
  display:flex;align-items:center;gap:var(--s3);min-height:52px;
}
.brand{display:flex;align-items:center;gap:var(--s2);font-weight:650;font-size:var(--fs-lg);letter-spacing:-.01em}
.brand__mark{width:26px;height:26px;border-radius:var(--r-1);background:var(--primary);display:grid;place-items:center;flex:none}
.brand__mark svg{width:16px;height:16px;stroke:#fff;stroke-width:2;fill:none;stroke-linecap:round}
.brand__sub{font-size:var(--fs-xs);color:var(--ink-3);font-weight:450;letter-spacing:0}
.bar__sp{flex:1}

/* 图标按钮：44px 触控区 */
.ibtn{
  width:var(--tap);height:var(--tap);display:grid;place-items:center;border-radius:var(--r-2);
  color:var(--ink-2);transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.ibtn:hover{background:var(--surface-2);color:var(--ink)}
.ibtn:active{background:var(--surface-3)}
.ibtn[aria-pressed="true"],.ibtn.is-on{background:var(--primary-weak);color:var(--primary)}
.ibtn:disabled{color:var(--line-2);cursor:not-allowed;background:none}

/* ---------- 主区 ---------- */
.main{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:var(--s4) var(--s4) 0}
.view{display:block}
.view[hidden]{display:none !important}

/* 分节：标签 + 发丝线，无卡片 */
.sec{margin-bottom:var(--s5)}
.sec__h{
  display:flex;align-items:baseline;gap:var(--s2);
  padding-bottom:6px;margin-bottom:var(--s3);
  border-bottom:var(--hair) solid var(--line);
}
.sec__t{font-size:var(--fs-sm);font-weight:650;color:var(--ink-2);letter-spacing:.02em}
.sec__n{font-size:var(--fs-xs);color:var(--ink-3);margin-left:auto;font-variant-numeric:tabular-nums}

/* 文本样式 */
.lbl{display:block;font-size:var(--fs-sm);color:var(--ink-2);font-weight:550;margin-bottom:6px}
.hint{font-size:var(--fs-sm);color:var(--ink-3);line-height:1.55}
.err{font-size:var(--fs-sm);color:var(--danger);font-weight:550}

/* ---------- 患者上下文条 ---------- */
.pt:hover{border-color:var(--line-2)}
.pt:active{background:var(--surface-2)}
.pt__av{
  width:38px;height:38px;border-radius:var(--r-1);background:var(--primary-weak);color:var(--primary);
  display:grid;place-items:center;font-weight:650;font-size:var(--fs-base);flex:none;
  font-variant-numeric:tabular-nums;
}

/* ---------- 表单 ---------- */
.field{margin-bottom:var(--s3)}
.input,.select,.area{
  width:100%;background:var(--surface);border:var(--hair) solid var(--line);
  border-radius:var(--r-2);padding:11px var(--s3);
  font-size:var(--fs-base); /* 16px：避免 iOS 聚焦自动放大 */
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.input::placeholder,.area::placeholder{color:var(--ink-3);opacity:1}
.input:hover,.select:hover,.area:hover{border-color:var(--line-2)}
.input:focus,.select:focus,.area:focus{
  outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus);
}
.input:disabled,.area:disabled,.select:disabled{background:var(--surface-2);color:var(--ink-3);cursor:not-allowed}
.input[aria-invalid="true"],.area[aria-invalid="true"]{border-color:var(--danger);background:var(--danger-weak)}
.select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236B7481' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:34px}
.area{min-height:168px;line-height:1.65;resize:vertical}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
  min-height:var(--tap);padding:0 var(--s4);border-radius:var(--r-2);
  font-size:var(--fs-base);font-weight:600;letter-spacing:.01em;
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.btn:active{transform:translateY(1px)}
.btn--p{background:var(--primary);color:#fff}
.btn--p:hover{background:var(--primary-press)}
.btn--p:disabled{background:var(--surface-3);color:var(--ink-2);transform:none;cursor:not-allowed}
.btn--s{background:var(--surface);color:var(--ink);border:var(--hair) solid var(--line)}
.btn--s:hover{border-color:var(--line-2);background:var(--surface-2)}
.btn--s:disabled{color:var(--ink-3);background:var(--surface-2);cursor:not-allowed}
.btn--d{background:var(--danger-weak);color:var(--danger);border:var(--hair) solid var(--danger-line)}
.btn--d:hover{background:var(--danger-wash-press)}
.btn--q{min-height:var(--tap);padding:0 var(--s3);font-size:var(--fs-md);font-weight:550;border-radius:var(--r-1)}
/* 列表里的删除：用异常红把"破坏性"和旁边的归档区分开（图标太像，靠颜色补足语义） */
.btn--del{color:var(--danger)}
.btn--del:hover{background:var(--danger-weak);border-color:var(--danger-line)}
.btn--block{width:100%}

/* ---------- 加载 ---------- */
@keyframes spin{to{transform:rotate(360deg)}}
.skel{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shim 1.4s ease-in-out infinite;border-radius:var(--r-1)}
@keyframes shim{0%{background-position:100% 0}100%{background-position:0 0}}
.skel-line{height:12px;margin-bottom:10px}
.skel-line:last-child{width:62%;margin-bottom:0}
.skel-block{height:88px}

/* 进度条（生成中的确定性进度，非假指标）。用 transform 避免布局抖动 */
.prog{height:3px;background:var(--surface-3);border-radius:99px;overflow:hidden}
.prog__i{height:100%;width:100%;background:var(--primary);border-radius:99px;transform:scaleX(0);transform-origin:left;transition:transform 300ms var(--ease)}

/* ---------- 质控标记：像检验报告单的异常标记 ---------- */
.flags{border-top:var(--hair) solid var(--line)}
.flag{
  display:grid;grid-template-columns:52px 1fr;gap:var(--s3);
  padding:var(--s3) 0;border-bottom:var(--hair) solid var(--line);
}
.flag__mk{
  font-size:var(--fs-xs);font-weight:700;letter-spacing:.03em;
  display:inline-flex;align-items:center;justify-content:center;
  height:20px;padding:0 6px;border-radius:var(--r-1);white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.flag--high .flag__mk{background:var(--danger-weak);color:var(--danger);border:var(--hair) solid var(--danger-line)}
.flag--mid  .flag__mk{background:var(--warn-weak);color:var(--warn);border:var(--hair) solid var(--warn-line)}
.flag--ok   .flag__mk{background:var(--ok-weak);color:var(--ok);border:var(--hair) solid var(--ok-line)}
.flag--note .flag__mk{background:var(--surface-2);color:var(--ink-3);border:var(--hair) solid var(--line)}
.flag__b{min-width:0}
/* 字段名在句子里就地加粗——「精确指认」靠这个，不靠另起一行重复 */
.flag__f{font-weight:650;color:var(--ink)}
.flag__m{display:block;font-size:var(--fs-md);color:var(--ink-2);line-height:1.6}

/* ---------- 草稿：一张纸 ---------- */
.sheet{
  background:var(--surface);border:var(--hair) solid var(--line);border-radius:var(--r-3);
  box-shadow:var(--shadow-sheet);overflow:hidden;
}
/* 操作区放页脚：标题栏在窄屏放不下三个带文字的按钮 */

/* 文书写体：衬线感的排版靠节奏与缩进，不靠装饰 */
.doc{font-size:var(--fs-base);line-height:1.85;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.docfield{display:block}
.docfield+.docfield{margin-top:var(--s3)}
.docfield__k{font-weight:650}
.doc--empty{color:var(--ink-3)}

/* 新增段落渐入（一次性"落笔"） */
@keyframes ink{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.docfield{animation:ink 260ms var(--ease) both}
.docfield:nth-child(n+6){animation-delay:40ms}

/* ---------- 指南引用 ---------- */
.guide__i{padding:var(--s3) 0;border-bottom:var(--hair) solid var(--line)}
.guide__i:last-child{border-bottom:0;padding-bottom:0}
.guide__n{font-size:var(--fs-sm);font-weight:650;color:var(--primary);margin-bottom:3px}
.guide__x{font-size:var(--fs-md);color:var(--ink-2);line-height:1.7;white-space:pre-wrap}

/* ---------- 风格学习：图片缩略图与提炼结果 ---------- */
.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.thumbs img{width:72px;height:72px;object-fit:cover;border-radius:var(--r-1);border:var(--hair) solid var(--line);background:var(--surface-2)}
.notice{
  background:var(--surface);border:var(--hair) solid var(--line);border-radius:var(--r-2);
  padding:var(--s4);font-size:var(--fs-md);line-height:1.75;color:var(--ink-2);white-space:pre-wrap;
}
.notice--filled{border-color:var(--primary-line);background:var(--primary-weak);color:var(--ink)}

/* ---------- 列表 ---------- */
.list{border-top:var(--hair) solid var(--line)}
.row{
  display:flex;align-items:center;gap:var(--s3);
  padding:var(--s3) var(--s2);border-bottom:var(--hair) solid var(--line);
  transition:background var(--dur) var(--ease);min-height:60px;
}
.row__c{flex:none;stroke:var(--ink-3)}
.row--btn{width:100%;text-align:left;cursor:pointer}
.row--btn:hover{background:var(--surface-2)}
.row--btn:active{background:var(--surface-2)}
.row__b{flex:1;min-width:0}
.row__t{font-weight:600;display:flex;align-items:center;gap:var(--s2)}
.row__m{display:block;font-size:var(--fs-sm);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row__x{display:flex;gap:var(--s1);flex:none}

/* ---------- 空状态 ---------- */
.empty{padding:var(--s7) var(--s4);text-align:center}
.empty__ic{width:44px;height:44px;margin:0 auto var(--s3);color:var(--line-2);stroke-width:1.4}
.empty__t{font-weight:600;margin-bottom:4px}
.empty__m{font-size:var(--fs-sm);color:var(--ink-3);max-width:34ch;margin:0 auto;line-height:1.6}

/* ---------- 底部固定操作条 ---------- */

/* ---------- 覆盖层（用 dialog，避免被裁剪） ---------- */
dialog.sheetdlg{
  width:100%;max-width:520px;margin:auto auto 0;padding:0;border:0;
  border-radius:var(--r-3) var(--r-3) 0 0;background:var(--surface);
  box-shadow:0 -8px 40px -12px rgba(19,23,32,.3);
  max-height:92dvh;
}
dialog.sheetdlg::backdrop{background:rgba(19,23,32,.42);backdrop-filter:none}
.dlg__h{
  display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);
  border-bottom:var(--hair) solid var(--line);position:sticky;top:0;background:var(--surface);z-index:1;
}
.dlg__t{font-weight:650;font-size:var(--fs-lg);flex:1}
.dlg__b{padding:var(--s4);overflow:auto;max-height:calc(92dvh - 64px)}
@media(min-width:560px){dialog.sheetdlg{margin:auto;border-radius:var(--r-3)}}
dialog.sheetdlg[open]{animation:rise 220ms var(--ease)}
@keyframes rise{from{transform:translateY(14px);opacity:.4}to{transform:none;opacity:1}}

/* ---------- 提示条 ---------- */
.note{
  display:flex;gap:var(--s2);align-items:flex-start;
  padding:var(--s3);border-radius:var(--r-2);font-size:var(--fs-md);line-height:1.6;
}
.note--info{background:var(--primary-weak);color:var(--primary)}
.note--warn{background:var(--warn-weak);color:var(--warn)}
.note svg{margin-top:2px}

/* ---------- 开关 ---------- */
.sw{display:flex;align-items:center;gap:var(--s3);min-height:var(--tap);cursor:pointer}
.sw__t{flex:1;font-size:var(--fs-md)}
.sw__note{display:block;margin-top:2px;font-weight:400;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.55}
.sw__box{
  width:44px;height:26px;border-radius:99px;background:var(--surface-3);
  position:relative;transition:background var(--dur) var(--ease);flex:none;
}
.sw__box::after{
  content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 1px 2px rgba(19,23,32,.25);transition:transform var(--dur) var(--ease);
}
.sw input{position:absolute;opacity:0;width:0;height:0}
.sw input:checked+.sw__box{background:var(--primary)}
.sw input:checked+.sw__box::after{transform:translateX(18px)}
.sw input:focus-visible+.sw__box{box-shadow:var(--shadow-focus)}

/* ---------- 徽标/元信息 ---------- */
.kv{display:grid;grid-template-columns:88px 1fr;gap:var(--s2) var(--s3);font-size:var(--fs-md)}
.kv dt{color:var(--ink-3)}
.kv dd{margin:0;color:var(--ink)}

/* ---------- 桌面：结构性响应 ---------- */
@media(min-width:960px){
  .main{padding:var(--s5) var(--s5) 0}
  .btn--p{min-width:200px}
}

/* ---------- 弱动效偏好 ---------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/* ---------- 移动端细节 ---------- */
@media(max-width:400px){
  .main{padding-left:var(--s3);padding-right:var(--s3)}
  :root{--fs-2xl:23px}
}

/* ================================================================
   首页 / 诊疗动线 / 病历系统（结构重构新增；调色板与组件语言不变）
   ================================================================ */

/* ---------- 首页：一个主动作 + 两条行式入口 ---------- */
.home{display:flex;flex-direction:column;gap:var(--s3);padding-top:var(--s4);min-height:calc(100vh - 150px);min-height:calc(100dvh - 150px)}
.home__main{
  display:flex;align-items:center;gap:var(--s4);width:100%;min-height:clamp(88px,20vw,118px);
  padding:var(--s4) var(--s5);text-align:left;
  background:var(--primary);color:#fff;border:0;border-radius:var(--r-3);
  transition:background .16s cubic-bezier(.2,.8,.2,1),transform .16s cubic-bezier(.2,.8,.2,1);
}
.home__main:hover{background:var(--primary-press)}
.home__main:active{transform:translateY(1px)}
.home__mi{
  flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:var(--r-2);
  background:rgba(255,255,255,.16);
}
.home__mi .ic{width:22px;height:22px;stroke:#fff}
.home__mb{display:flex;flex-direction:column;gap:3px;min-width:0}
.home__mt{font-size:var(--fs-xl);font-weight:650;letter-spacing:-.01em}
.home__mm{font-size:var(--fs-sm);color:rgba(255,255,255,.82)}

.home__list{
  background:var(--surface);border:var(--hair) solid var(--line);
  border-radius:var(--r-2);overflow:hidden;
}
.home__row{
  display:flex;align-items:center;gap:var(--s4);width:100%;min-height:var(--tap-lg);
  padding:var(--s4);text-align:left;background:transparent;border:0;border-radius:0;
  transition:background .16s cubic-bezier(.2,.8,.2,1);
}
.home__row+.home__row{border-top:var(--hair) solid var(--line)}
.home__row:hover{background:var(--surface-2)}
.home__row:active{background:var(--primary-weak)}
.home__ri{
  flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:var(--r-1);
  background:var(--primary-weak);color:var(--primary);
}
.home__ri .ic{width:19px;height:19px;stroke:var(--primary)}
.home__rb{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.home__rt{font-size:var(--fs-lg);font-weight:600}
.home__rm{font-size:var(--fs-sm);color:var(--ink-3)}
.home__rc{flex:none;stroke:var(--ink-3)}
.home__foot{
  margin-top:auto;padding-top:var(--s5);
  font-size:var(--fs-sm);color:var(--ink-3);text-align:center;line-height:1.7;
}
.home__foot b{color:var(--ink-2);font-weight:600}
.home__warn{color:var(--warn)}

/* ---------- 录音步 ---------- */
.rec{display:flex;flex-direction:column;gap:var(--s4);padding-top:var(--s2)}
.rec__who{font-size:var(--fs-lg);font-weight:600;text-align:center;color:var(--ink)}
.rec__type{margin-bottom:0}
.rec__btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  width:clamp(148px,42vw,180px);height:clamp(148px,42vw,180px);margin:var(--s4) auto 0;
  border-radius:50%;border:0;background:var(--primary);color:#fff;
  transition:background .18s cubic-bezier(.2,.8,.2,1),transform .18s cubic-bezier(.2,.8,.2,1);
}
.rec__btn .ic{width:34px;height:34px;stroke:#fff}
.rec__btn span{font-size:var(--fs-md);font-weight:600}
.rec__btn:hover{background:var(--primary-press)}
.rec__btn:active{transform:scale(.97)}
.rec__btn.is-rec{background:var(--primary-press)}
.rec__btn.is-rec:hover{background:var(--primary-deep)}
.rec__btn.is-rec .ic{animation:micPulse 1.5s ease-in-out infinite}
@keyframes micPulse{0%,100%{opacity:1}50%{opacity:.45}}
.rec__time{
  margin-top:var(--s2);text-align:center;font-size:var(--fs-2xl);font-weight:600;
  font-variant-numeric:tabular-nums;color:var(--ink-2);letter-spacing:.02em;
}
.rec__live{
  margin-top:var(--s2);padding:var(--s4);border-radius:var(--r-2);
  background:var(--surface-2);border:var(--hair) solid var(--line);
  font-size:var(--fs-md);line-height:1.8;color:var(--ink-2);white-space:pre-wrap;
  max-height:30vh;overflow:auto;
}
.rec__text{display:flex;flex-direction:column;gap:var(--s2);margin-top:var(--s2)}
.rec__text .area{min-height:22vh}
.rec__foot{
  margin-top:auto;padding-top:var(--s4);border-top:var(--hair) solid var(--line);
  display:flex;align-items:center;gap:var(--s3);
  position:sticky;bottom:0;background:var(--paper);
}
.rec__count{font-size:var(--fs-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}
.rec__foot .btn--p{flex:1}

/* ---------- 转写 / 生成中 ---------- */
.wk{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);
  padding:var(--s5) var(--s2);text-align:center;
  min-height:calc(100vh - 190px);min-height:calc(100dvh - 190px);
}
.wk__ic{
  display:grid;place-items:center;width:56px;height:56px;border-radius:50%;
  background:var(--primary-weak);color:var(--primary);
}
.wk__ic .ic{width:26px;height:26px;stroke:var(--primary);animation:sparkSpin 2.4s linear infinite}
@keyframes sparkSpin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.wk__t{font-size:var(--fs-xl);font-weight:650}
.wk__m{font-size:var(--fs-md);color:var(--ink-3)}
.prog--wide{width:min(360px,80vw);margin-top:var(--s3)}
.wk__skel{width:100%;margin-top:var(--s4);text-align:left}

/* ---------- 病历确认 ---------- */
.rv__acts{display:flex;gap:var(--s2);flex-wrap:wrap}
.rv__acts .btn{flex:1 1 auto;min-width:96px;white-space:nowrap}
.area--edit{min-height:44vh;font-family:inherit}

/* ---------- 分段控件（在院 / 已归档）---------- */
.seg{
  display:flex;gap:4px;padding:4px;margin:var(--s3) 0 var(--s2);
  background:var(--surface-2);border-radius:var(--r-2);
}
.seg__b{
  flex:1;min-height:38px;border:var(--hair) solid transparent;border-radius:var(--r-1);background:transparent;
  font-size:var(--fs-md);font-weight:550;color:var(--ink-3);
  transition:background .16s,color .16s;
}
.seg__b.is-on{background:var(--surface);color:var(--ink);border:var(--hair) solid var(--line)}
.seg__b span{font-size:var(--fs-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}

/* ---------- 搜索 ---------- */
.search{position:relative;display:flex;align-items:center}
.search__i{position:absolute;left:12px;stroke:var(--ink-3);pointer-events:none}
.search__in{padding-left:38px;min-height:var(--tap)}
.search__in::-webkit-search-cancel-button{-webkit-appearance:none}

/* ---------- 患者卡 ---------- */
.ptcard{
  background:var(--surface);border:var(--hair) solid var(--line);border-radius:var(--r-2);
  padding:var(--s4);
}
.ptcard__n{font-size:var(--fs-xl);font-weight:650}
.ptcard__m{margin-top:4px;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.7}
.ptcard__acts{display:flex;gap:var(--s2);margin-top:var(--s4);flex-wrap:wrap}
.ptcard__acts .btn{flex:1;min-width:120px;white-space:nowrap}   /* 标签不折行；宁可整行换行 */

/* ---------- 病历时间线 ---------- */
.tl{position:relative;padding-left:22px}
.tl::before{content:'';position:absolute;left:5px;top:8px;bottom:8px;width:1px;background:var(--line)}
.tl__i{position:relative;padding-bottom:var(--s4)}
.tl__i:last-child{padding-bottom:0}
.tl__dot{
  position:absolute;left:-22px;top:6px;width:11px;height:11px;border-radius:50%;
  background:var(--surface);border:2px solid var(--line-2);
}
.tl__i--ok .tl__dot{background:var(--ok);border-color:var(--ok)}
.tl__i--wait .tl__dot{background:var(--surface);border-color:var(--warn)}
.tl__card{
  position:relative;background:var(--surface);border:var(--hair) solid var(--line);
  border-radius:var(--r-2);padding:var(--s3) var(--s4);padding-right:56px;
}
.tl__open{display:block;width:100%;text-align:left;background:none;border:0;padding:0;cursor:pointer}
.tl__del{
  position:absolute;right:4px;top:4px;width:44px;height:44px;border:0;border-radius:var(--r-1);
  background:transparent;color:var(--danger);display:grid;place-items:center;cursor:pointer;
}
.tl__del:hover{background:var(--danger-weak)}
.tl__top{display:flex;align-items:baseline;gap:var(--s2)}
.tl__t{font-size:var(--fs-md);font-weight:600;flex:1;min-width:0}
.tl__d{font-size:var(--fs-sm);color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.tl__m{margin-top:4px;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.7}

/* ---------- 轻提示（替代旧底栏状态条）---------- */
.toast{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:88px;bottom:calc(88px + env(safe-area-inset-bottom));z-index:60;cursor:pointer;
  max-width:min(88vw,420px);padding:11px 16px;
  background:var(--ink);color:#fff;border-radius:var(--r-2);
  font-size:var(--fs-md);line-height:1.55;text-align:center;
  box-shadow:0 8px 24px -10px rgba(19,23,32,.45);
  animation:toastIn .22s cubic-bezier(.22,.61,.36,1);
}
.toast--ok{background:var(--ok)}
.toast--err{background:var(--danger)}
.toast__x{flex:none;stroke:currentColor;opacity:.7}
.toast{display:flex;align-items:center;gap:10px}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
@media(prefers-reduced-motion:reduce){.toast{animation:none}}

@media(min-width:960px){
  /* 桌面端：所有视图共用一条轴线（原来外壳 860 而首页单独 600，错开 114px） */
  .bar__in{max-width:640px;padding-left:var(--s5);padding-right:var(--s5)}   /* 与 .main 的 24px 对齐 */
  .main{max-width:640px;margin-left:auto;margin-right:auto}
  .doc,.notice,.tl__m,.flag__m,.guide__x{max-width:34em}
}
