/*
 * 全局视觉令牌：三端共用的文字、纸张、风险和阴影色。
 * 色彩用于界面层级与状态提示，医疗风险和临床结论仍以后端状态为准。
 */
:root {
  --ink: #17343a;
  --muted: #687f82;
  --paper: #f6f8f5;
  --card: #fff;
  --line: #dce7e4;
  --green: #287b6d;
  --green-dark: #153f45;
  --green-soft: #e1f2ed;
  --mint: #aee0d4;
  --blue: #356782;
  --blue-soft: #e7f0f4;
  --amber: #c98331;
  --amber-soft: #fff2dc;
  --orange: #d96232;
  --orange-soft: #fff0e7;
  --red: #bd3b45;
  --red-soft: #ffebed;
  --violet: #735a9f;
  --violet-soft: #f0ebf8;
  --shadow: 0 18px 48px rgba(27, 69, 68, .11);
  --small-shadow: 0 8px 24px rgba(27, 69, 68, .07);
  font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;
  color: var(--ink);
  background: var(--paper);
  font-synthesis: none;
}

/* 基础重置与可访问性：保证触控控件、键盘焦点、最小手机宽度与隐藏状态的一致行为。 */
* { box-sizing: border-box; }

/* 固定滚动条占位：页面切换导致高度变化时滚动条出现/消失不再挤压视口宽度，避免顶部居中导航左右跳动。 */
html { min-width: 320px; scroll-behavior: smooth; scrollbar-gutter: stable; }

body { min-width: 320px; min-height: 100vh; margin: 0; background: var(--paper); }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
button, input, select, textarea { font: inherit; }

button, a { -webkit-tap-highlight-color: transparent; }

button { cursor: pointer; }

button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid #4b9bd3; outline-offset: 2px; }

button:disabled { cursor: not-allowed; opacity: .48; }

input, select, textarea { width: 100%; border: 1px solid #cbdad7; border-radius: 11px; color: var(--ink); background: #fff; }

input, select { min-height: 44px; padding: 9px 11px; }

textarea { min-height: 96px; padding: 12px; resize: vertical; line-height: 1.6; }

label { display: grid; gap: 7px; color: #486063; font-size: 13px; font-weight: 750; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
h1, h2, h3, h4, p { margin-top: 0; }

/* 辅助阅读与展开状态：按当前可见性显示内容，并保留屏幕阅读器需要的信息；隐藏样式只影响展示，不删除已有业务记录。 */
.hidden { display: none !important; }

/* 顶部三端切换与运行状态条：始终保留后台/本地预览的真实性提示。 */
/* 顶栏三列采用左右对称（1fr auto 1fr）：中间角色切换始终固定在视口正中，不随品牌或后台状态文字宽度变化而左右移动。 */
.role-bar { position: sticky; z-index: 40; top: 0; display: grid; grid-template-columns: 1fr auto 1fr; gap: 24px; align-items: center; min-height: 72px; padding: 10px clamp(18px, 3vw, 46px); color: #d9e8e5; background: rgba(19, 55, 61, .98); box-shadow: 0 8px 28px rgba(15, 48, 52, .2); backdrop-filter: blur(14px); }

.role-brand { display: flex; gap: 11px; align-items: center; white-space: nowrap; justify-self: start; }

.logo, .role-brand .logo { display: grid; place-items: center; width: 41px; height: 41px; border-radius: 14px; color: #143f46; background: var(--mint); font-size: 23px; font-weight: 950; }

.role-brand b { display: block; color: #fff; font-size: 17px; }

.role-brand small { display: block; margin-top: 2px; color: #9dbab6; font-size: 11px; }

.role-switcher { display: flex; justify-content: center; justify-self: center; gap: 6px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.role-switcher button { min-height: 42px; padding: 8px 18px; border: 1px solid transparent; border-radius: 11px; color: #bed1ce; background: transparent; font-size: 13px; font-weight: 800; }

.role-switcher button:hover { background: rgba(255,255,255,.07); }

.role-switcher button.active { color: #163f45; background: #d6eee8; }

.role-label { padding: 6px 14px; border-radius: 9px; color: #163f45; background: #d6eee8; font-size: 13px; font-weight: 800; }

/* 观察与事实卡：原文、整理草稿、核对字段和确认动作按来源链排列；医生或家属可辨认待核对内容，卡片外观不改变确认状态。 */
.narrative-supplement { margin-top: 18px; padding: 16px; border: 1px solid #d5e3de; border-radius: 16px; background: #fff; }

.narrative-supplement > summary { cursor: pointer; font-weight: 700; color: #276456; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.system-truth { display: grid; grid-template-columns: auto auto; column-gap: 7px; align-items: center; text-align: right; justify-self: end; }

.system-truth i { grid-row: 1 / span 2; width: 9px; height: 9px; border-radius: 50%; background: #79d2b5; box-shadow: 0 0 0 5px rgba(121,210,181,.12); }

.system-truth span { color: #d7e7e4; font-size: 12px; font-weight: 800; }

.system-truth small { color: #89aaa5; font-size: 10px; }

.system-truth.offline i { background: #e36b73; box-shadow: 0 0 0 5px rgba(227,107,115,.12); }

.system-truth.offline span { color: #ffd9dc; }

.system-truth.local i { background: #efbd66; box-shadow: 0 0 0 5px rgba(239,189,102,.13); }

.system-truth.local span { color: #ffe9bd; }

/* 本地预览和全局反馈：让“未保存、未同步、未发送”及失败原因固定处于可见层。 */
.runtime-banner { display: flex; gap: 12px; align-items: center; padding: 10px clamp(16px, 3vw, 42px); color: #684918; border-bottom: 1px solid #e8c987; background: #fff4d9; }

.runtime-banner > span { flex: 0 0 auto; padding: 5px 8px; border-radius: 7px; color: #fff; background: #a66b19; font-size: 10px; font-weight: 900; }

.runtime-banner p { flex: 1; margin: 0; font-size: 12px; line-height: 1.5; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.runtime-banner button { flex: 0 0 auto; min-height: 36px; padding: 7px 11px; border: 1px solid #c89d54; border-radius: 9px; color: #6b4b19; background: #fffaf0; font-size: 11px; font-weight: 850; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.global-flash { position: fixed; z-index: 90; top: 84px; left: 50%; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; width: min(700px, calc(100vw - 32px)); padding: 12px 14px; border: 1px solid #b9d9d1; border-radius: 13px; color: #215f55; background: #f2fffb; box-shadow: var(--shadow); transform: translateX(-50%); }

.global-flash.error { color: #902c36; border-color: #f0bec3; background: #fff4f5; }

.global-flash.warn { color: #81501e; border-color: #edcfa6; background: #fff9ee; }

.global-flash > span { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; color: #fff; background: currentColor; font-size: 12px; font-weight: 900; }

.global-flash p { margin: 0; line-height: 1.45; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.global-flash button { border: 0; color: currentColor; background: transparent; font-size: 23px; }

/* 通用操作按钮：保持最小触控面积；危险色只指向安全入口，不会自动执行外部动作。 */
.primary, .secondary, .soft-button, .outline-button, .danger-link { min-height: 44px; padding: 10px 16px; border-radius: 11px; font-weight: 850; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.primary { border: 1px solid var(--green-dark); color: #fff; background: var(--green-dark); box-shadow: 0 8px 18px rgba(21,63,69,.13); }

.primary:hover { background: #0e343a; }

.primary.violet { border-color: #67518f; background: #67518f; }

.secondary { border: 1px solid #a8c8c1; color: #255f56; background: #f8fffd; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.soft-button { border: 1px solid #c7dcd7; color: #34675f; background: #edf7f4; }

.outline-button { border: 1px solid #94bab3; color: #2a655b; background: transparent; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.danger-link { border: 1px solid #e8aeb4; color: #a8323e; background: #fff1f2; }

.round { border-radius: 99px; }

/* 家属端双栏布局：手机业务壳与右侧职责/AI 边界说明在大屏并列显示。 */
.family-background { display: grid; grid-template-columns: minmax(430px, 710px) minmax(300px, 500px); gap: clamp(28px, 5vw, 74px); align-items: start; justify-content: center; min-height: calc(100vh - 72px); padding: 36px clamp(18px, 4vw, 70px) 70px; background: radial-gradient(circle at 14% 12%, #dff4ee 0, transparent 29%), radial-gradient(circle at 88% 82%, #e8edf7 0, transparent 30%), #f6f8f5; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.phone-shell { position: relative; min-height: calc(100vh - 140px); overflow: hidden; border: 1px solid #d6e2df; border-radius: 28px; background: #f8faf8; box-shadow: var(--shadow); }

/* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
.mini-header { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 25px 30px 19px; color: #f8ffff; background: linear-gradient(140deg, #153f45, #245e5a); }

.mini-header span { color: #a9ccc6; font-size: 12px; font-weight: 700; }

.mini-header h1 { margin: 4px 0 0; font-size: 24px; }

.mini-header .danger-link { min-height: 39px; padding: 8px 12px; color: #ffe0e2; border-color: rgba(255,255,255,.2); background: rgba(141,25,35,.35); }

.mini-main { padding: 26px 28px 110px; }

.mini-nav { position: absolute; z-index: 10; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; padding: 8px 10px max(8px, env(safe-area-inset-bottom)); border-top: 1px solid #dce7e4; background: rgba(255,255,255,.97); backdrop-filter: blur(16px); }

.mini-nav button { display: grid; justify-items: center; gap: 3px; min-height: 57px; padding: 7px 2px; border: 0; border-radius: 10px; color: #73888a; background: transparent; }

.mini-nav button span { font-size: 20px; line-height: 1; }

.mini-nav button small { max-width: 68px; font-size: 10px; font-weight: 800; white-space: nowrap; }

.mini-nav button.active { color: #1d6258; background: #e2f2ee; }

.family-context { position: sticky; top: 122px; padding-top: 46px; }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.context-kicker, .page-title > span, .section-heading > div > span, .confirmed-card > div > span, .doctor-header > div > span, .panel-heading > div > span, .plan-block > small, .speaker-console header > div > span { color: var(--green); font-size: 12px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }

/* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
.family-context h2 { margin: 14px 0 18px; font-size: clamp(34px, 4vw, 56px); line-height: 1.12; letter-spacing: -.055em; }

.family-context > p { max-width: 500px; color: var(--muted); font-size: 17px; line-height: 1.8; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.context-flow { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; margin: 26px 0; }

.context-flow span { padding: 8px 11px; border-radius: 8px; color: #2b655d; background: #e0f1ed; font-size: 12px; font-weight: 800; }

.context-flow i { color: #8da29f; font-style: normal; }

.boundary-note { max-width: 500px; padding: 18px; border: 1px solid #dcd6ea; border-radius: 16px; background: rgba(247,244,252,.8); }

.boundary-note b { color: var(--violet); }

.boundary-note p { margin: 6px 0 0; color: #655b73; font-size: 13px; line-height: 1.7; }

/* 家属首页摘要、快捷入口与医生已确认计划：突出任务而不暴露内部诊断或风险证据。 */
.family-welcome { display: flex; justify-content: space-between; gap: 22px; align-items: center; padding: 24px; border-radius: 20px; color: #fff; background: linear-gradient(130deg, #246d61, #194d54); box-shadow: var(--small-shadow); }

.family-welcome span { color: #b6dcd4; font-size: 12px; font-weight: 800; }

.family-welcome h2 { margin: 7px 0 6px; font-size: 26px; letter-spacing: -.02em; }

.family-welcome p { margin: 0; color: #c8dfdc; font-size: 13px; }

.family-welcome .primary { flex: 0 0 auto; color: #173f45; border-color: #c4e8df; background: #d8f0ea; box-shadow: none; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; margin: 15px 0 28px; }

.summary-grid article { padding: 16px; border: 1px solid var(--line); border-radius: 15px; background: #fff; }

.metric-icon { display: grid; place-items: center; width: 31px; height: 31px; margin-bottom: 10px; border-radius: 10px; font-weight: 900; }

.metric-icon.mint { color: var(--green); background: var(--green-soft); }

.metric-icon.amber { color: #9a621c; background: var(--amber-soft); }

.metric-icon.blue { color: var(--blue); background: var(--blue-soft); }

.summary-grid p { margin: 0 0 5px; color: var(--muted); font-size: 11px; }

.summary-grid b { display: block; font-size: 16px; }

.summary-grid small { display: block; margin-top: 4px; color: #849395; font-size: 10px; line-height: 1.35; }

.section-block { margin-top: 25px; }

.section-heading { display: flex; justify-content: space-between; gap: 15px; align-items: flex-start; margin-bottom: 14px; }

.section-heading h3, .section-heading h2 { margin: 4px 0 0; font-size: 21px; }

.section-heading p { margin: 6px 0 0; color: var(--muted); line-height: 1.55; }

.action-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }

.action-card { position: relative; display: grid; grid-template-columns: 42px 1fr auto; grid-template-rows: auto auto; gap: 2px 10px; align-items: center; min-height: 95px; padding: 15px; border: 1px solid var(--line); border-radius: 15px; color: var(--ink); text-align: left; background: #fff; box-shadow: 0 4px 14px rgba(23,52,58,.035); }

.action-card:hover { border-color: #9dc9c0; transform: translateY(-1px); }

.action-card > span { grid-row: 1 / span 2; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; color: var(--green); background: var(--green-soft); font-size: 21px; }

.action-card b { font-size: 14px; }

.action-card small { color: var(--muted); font-size: 11px; line-height: 1.35; }

.action-card i { grid-column: 3; grid-row: 1 / span 2; color: #8fa09f; font-size: 19px; font-style: normal; }

.confirmed-card { display: flex; justify-content: space-between; gap: 14px; align-items: flex-end; margin-top: 22px; padding: 20px; border: 1px solid #d8d1e7; border-radius: 17px; background: linear-gradient(140deg, #f6f2fb, #fff); }

.confirmed-card h3 { margin: 5px 0 7px; font-size: 17px; }

.confirmed-card p { margin: 0; color: #615d6e; font-size: 13px; line-height: 1.6; }

.confirmed-card > small { flex: 0 0 auto; color: #7d748c; font-size: 10px; }

.confirmed-card.compact { align-items: start; }

/* 家属页面标题和八领域日报表单：选项卡用高对比选中态，未记录仍是独立值。 */
.page-title { margin-bottom: 22px; }

.page-title .back { margin-bottom: 20px; padding: 0; border: 0; color: #3d736b; background: transparent; font-weight: 800; }

.page-title h2 { margin: 6px 0 8px; font-size: 29px; letter-spacing: -.025em; }

.page-title p { margin: 0; color: var(--muted); line-height: 1.65; }

.daily-form { display: grid; gap: 14px; }

.daily-form fieldset { margin: 0; padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: #fff; }

.daily-form legend { display: flex; gap: 10px; align-items: center; padding: 0 8px 0 0; }

.daily-form legend > span { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 9px; color: #fff; background: var(--green); font-size: 12px; font-weight: 900; }

.daily-form legend b, .daily-form legend small { display: block; }

.daily-form legend small { margin-top: 2px; color: var(--muted); font-size: 10px; font-weight: 600; }

.option-stack { display: grid; gap: 7px; margin-top: 12px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.option-stack label { display: block; }

.option-stack input { position: absolute; opacity: 0; pointer-events: none; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.option-stack span { display: block; padding: 11px 13px; border: 1px solid #dce5e3; border-radius: 10px; color: #526a6d; background: #fbfcfb; font-size: 13px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.option-stack input:checked + span { color: #1c6257; border-color: #6eb4a6; background: #e6f5f1; box-shadow: inset 3px 0 0 #3b9382; }

.form-submit { display: flex; justify-content: space-between; gap: 20px; align-items: center; margin-top: 3px; padding: 16px; border-radius: 14px; background: #edf5f3; }

.form-submit p { margin: 0; color: #607676; font-size: 12px; line-height: 1.55; }

.form-submit .primary { flex: 0 0 auto; }

/* 自然语言事实卡、消息、授权、设备和隐私说明的共用卡片骨架。 */
.narrative-card, .how-it-works, .fact-section, .message-form, .channel-warning, .device-card, .message-list, .completion-panel, .privacy-panel, .auth-card, .auth-details { margin-bottom: 16px; padding: 19px; border: 1px solid var(--line); border-radius: 17px; background: #fff; }

.narrative-intro { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; margin-bottom: 17px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.wave-icon { display: grid; place-items: center; width: 43px; height: 43px; border-radius: 14px; color: var(--green); background: var(--green-soft); font-size: 25px; font-weight: 900; }

/* 观察与事实卡：原文、整理草稿、核对字段和确认动作按来源链排列；医生或家属可辨认待核对内容，卡片外观不改变确认状态。 */
.narrative-intro b, .narrative-intro small { display: block; }

.narrative-intro small { margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.45; }

#narrative-text { min-height: 150px; font-size: 15px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.input-meta { display: flex; justify-content: space-between; gap: 15px; align-items: center; margin-top: 10px; }

.input-meta span { color: var(--muted); font-size: 11px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.how-it-works h3 { font-size: 17px; }

.how-it-works > div { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }

.how-it-works > div span { padding: 7px 9px; border-radius: 8px; color: #2b655d; background: var(--green-soft); font-size: 11px; font-weight: 800; }

.how-it-works > div i { color: #9bacaa; font-style: normal; }

.how-it-works p { margin: 13px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; }

.ai-badge { align-self: start; padding: 6px 8px; border-radius: 7px; color: #624b89; background: var(--violet-soft); font-size: 10px; font-weight: 900; }

/* 观察与事实卡：原文、整理草稿、核对字段和确认动作按来源链排列；医生或家属可辨认待核对内容，卡片外观不改变确认状态。 */
.fact-list { display: grid; gap: 10px; }

.fact-card { padding: 14px; border: 1px solid #dbe6e3; border-radius: 13px; background: #fbfdfc; }

.fact-card label { margin-top: 9px; }

.fact-card textarea { min-height: 64px; }

.fact-top { display: flex; justify-content: space-between; gap: 12px; align-items: end; }

.fact-top label { flex: 1; margin: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.delete-link { padding: 9px 3px; border: 0; color: #a4424a; background: transparent; font-size: 12px; font-weight: 800; }

/* 观察与事实卡：原文、整理草稿、核对字段和确认动作按来源链排列；医生或家属可辨认待核对内容，卡片外观不改变确认状态。 */
.fact-source { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-top: 10px; color: var(--muted); font-size: 11px; }

.fact-source label { display: flex; grid-template: none; gap: 6px; align-items: center; margin: 0; font-size: 11px; }

.fact-source input { width: 17px; min-height: 17px; }

/* 通道、隐私、AI 与审计边界提示：颜色强调需注意，不把提示本身当作临床结论。 */
.channel-warning, .privacy-panel, .ai-status, .audit-footer { display: flex; gap: 13px; align-items: flex-start; color: #6f572b; border-color: #ead3a7; background: #fff9ee; }

.channel-warning > span, .privacy-panel > span, .audit-footer > span { display: grid; flex: 0 0 auto; place-items: center; width: 27px; height: 27px; border-radius: 50%; color: #fff; background: #bc8131; font-size: 12px; font-weight: 900; }

.channel-warning p, .privacy-panel p, .audit-footer p { margin: 5px 0 0; font-size: 12px; line-height: 1.6; }

/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.follow-list, .clinical-follow-list { display: grid; gap: 9px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.follow-list article { display: grid; grid-template-columns: auto 1fr auto; gap: 14px; align-items: center; padding: 16px; border: 1px solid var(--line); border-radius: 15px; background: #fff; }

.calendar-date { display: grid; place-items: center; min-width: 57px; height: 52px; padding: 6px; border-radius: 12px; color: #2c665e; background: var(--green-soft); font-weight: 900; }

.follow-list h3, .follow-list p { margin: 3px 0; }

.follow-list h3 { font-size: 16px; }

.follow-list p, .follow-list small { color: var(--muted); font-size: 11px; }

/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.status-pill, .risk-chip { display: inline-block; width: max-content; padding: 6px 9px; border-radius: 99px; color: #5d6e70; background: #edf1f1; font-size: 10px; font-weight: 900; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.status-pill.ok { color: #216a5d; background: var(--green-soft); }

.completion-panel { display: flex; gap: 18px; align-items: center; }

.completion-ring { display: grid; flex: 0 0 auto; place-items: center; width: 83px; height: 83px; border-radius: 50%; background: conic-gradient(var(--green) 0 71%, #e4ecea 71%); }

.completion-ring::before { position: absolute; width: 61px; height: 61px; border-radius: 50%; background: #fff; content: ""; }

.completion-ring span { position: relative; z-index: 1; font-weight: 900; }

.completion-panel h3 { margin: 4px 0; font-size: 17px; }

.completion-panel p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }

.trend-list { display: grid; gap: 8px; margin-bottom: 16px; }

.trend-list article { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; padding: 14px 16px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }

.trend-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--green); }

.trend-dot.warn { background: var(--orange); }
.trend-dot.missing { background: #839194; }

.trend-list b, .trend-list p, .trend-list small { display: block; margin: 0; }

.trend-list p { margin: 3px 0; color: #3d5559; font-size: 13px; }

.trend-list small { color: var(--muted); font-size: 10px; }

.trend-chevron { color: #99aaa8; font-size: 23px; }

.privacy-panel { color: #5d5571; border-color: #ddd5ea; background: #f7f4fb; }

.privacy-panel > span { background: var(--violet); }

/* 家属设备、授权与摄像安全区：视觉状态仅描述本机/演示状态，不推断真实行为或跌倒。 */
.device-card { display: grid; grid-template-columns: auto 1fr; gap: 18px; align-items: center; color: #fff; border: 0; background: linear-gradient(145deg, #183e47, #286c66); }

.device-visual { display: grid; place-items: center; width: 94px; height: 94px; border-radius: 28px; background: rgba(255,255,255,.1); }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.speaker-mini { display: grid; place-items: center; width: 65px; height: 65px; border: 6px solid rgba(255,255,255,.28); border-radius: 50%; background: #0e2f37; }

.speaker-mini i { width: 5px; height: 5px; margin: 1px; border-radius: 50%; background: #aee0d4; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.device-visual.camera { background: rgba(255,255,255,.12); }

.camera-mini { position: relative; display: grid; place-items: center; width: 72px; height: 53px; border: 5px solid rgba(255,255,255,.42); border-radius: 18px; background: #0d2f37; }

.camera-mini::before { content: ""; position: absolute; top: -13px; width: 28px; height: 11px; border-radius: 7px 7px 0 0; background: rgba(255,255,255,.36); }

.camera-mini i { width: 25px; height: 25px; border: 6px solid #5b8587; border-radius: 50%; background: #a6dcd2; box-shadow: inset 0 0 0 5px #163f47; }

.camera-mini span { position: absolute; right: 8px; top: 8px; width: 7px; height: 7px; border-radius: 50%; background: #79d2b5; }

.device-card h3 { margin: 4px 0; font-size: 21px; }
.device-card p { margin: 0 0 4px; color: #c1dad7; }
.device-card small { color: #9fc6c0; }

.camera-consent-card { margin-bottom: 16px; padding: 19px; border: 1px solid #cddfdc; border-radius: 17px; background: #f8fcfb; }

.camera-consent-card dl, .camera-copy dl { display: grid; gap: 0; margin: 0; }

.camera-consent-card dl > div, .camera-copy dl > div { display: grid; grid-template-columns: 105px 1fr; gap: 10px; padding: 9px 0; border-top: 1px solid #e0eae8; }

.camera-consent-card dt, .camera-copy dt { color: var(--muted); font-size: 11px; }

.camera-consent-card dd, .camera-copy dd { margin: 0; font-size: 11px; font-weight: 750; line-height: 1.5; }

.camera-boundary { margin: 13px 0 0; padding: 12px; border-radius: 10px; color: #665b72; background: var(--violet-soft); font-size: 11px; line-height: 1.65; }

.online-dot { color: #9ce2c5; font-size: 11px; font-weight: 900; }

.message-form { display: grid; gap: 13px; }
.message-form .primary { justify-self: end; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.form-hint { display: flex; gap: 8px; padding: 10px; border-radius: 10px; color: #5c6870; background: #f3f6f6; font-size: 11px; line-height: 1.5; }
.form-hint p { margin: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.message-list article { display: grid; grid-template-columns: auto 1fr minmax(100px, auto); gap: 11px; align-items: start; padding: 13px 0; border-top: 1px solid #edf1f0; }
.message-list article:first-of-type { border-top: 0; }

.message-type { padding: 5px 7px; border-radius: 6px; color: #25675d; background: var(--green-soft); font-size: 10px; font-weight: 900; }

.message-list b, .message-list p, .message-list small { display: block; margin: 0; }
.message-list p { margin: 4px 0; color: #455d60; font-size: 12px; line-height: 1.45; }
.message-list small { color: var(--muted); font-size: 10px; }

.delivery { align-self: start; padding: 5px 7px; border-radius: 7px; color: #6e6243; background: #f5edd8; font-size: 10px; font-weight: 800; text-align: center; }

.delivery.playback_completed, .delivery.responded { color: #21695c; background: var(--green-soft); }

.auth-card { display: grid; grid-template-columns: auto 1fr auto; gap: 15px; align-items: center; }

.avatar { display: grid; place-items: center; border-radius: 50%; color: #fff; background: linear-gradient(135deg, #2b7569, #1c4d54); font-weight: 900; }
.avatar.large { width: 60px; height: 60px; font-size: 22px; }

.auth-card h3 { margin: 4px 0; }
.auth-card p { margin: 0; color: var(--muted); font-size: 12px; }

.permission-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.permission-tags span { padding: 5px 7px; border-radius: 6px; color: #33675f; background: var(--green-soft); font-size: 10px; font-weight: 700; }

.auth-details h3 { font-size: 17px; }
.auth-details dl { display: grid; gap: 10px; margin: 0; }
.auth-details dl div { display: grid; grid-template-columns: 85px 1fr; gap: 10px; }
.auth-details dt { color: var(--muted); font-size: 12px; }
.auth-details dd { margin: 0; font-size: 12px; line-height: 1.55; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.under-button-note { color: var(--muted); font-size: 10px; }

/*
 * 老人居家看护端：大字号、单一主任务和明确的授权/采集状态。
 * 摄像与语音区域的“进行中”仅表示当前浏览器会话，不表示存在持续监听、上传或医学识别。
 */
.speaker-stage { display: grid; grid-template-columns: 300px minmax(0, 1fr); min-height: calc(100vh - 72px); background: #eef4f2; }

.speaker-side { display: flex; flex-direction: column; padding: 30px 24px; color: #cee0dd; background: #153b43; }

.speaker-brand { display: flex; gap: 11px; align-items: center; }

.speaker-brand > span, .doctor-brand > span { display: grid; place-items: center; width: 43px; height: 43px; border-radius: 14px; color: #153f45; background: var(--mint); font-size: 22px; font-weight: 950; }

.speaker-brand b, .speaker-brand small { display: block; }
.speaker-brand b { color: #fff; }
.speaker-brand small { margin-top: 2px; color: #8fafaa; font-size: 10px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.privacy-state { display: flex; gap: 13px; align-items: center; margin: 38px 0 16px; padding: 16px; border: 1px solid rgba(255,255,255,.1); border-radius: 14px; background: rgba(255,255,255,.04); }

.privacy-state > i { width: 15px; height: 15px; border: 4px solid #6ab49f; border-radius: 50%; background: transparent; }
.privacy-state > i.recording { border-color: #ff9c9c; background: #e24f59; box-shadow: 0 0 0 7px rgba(226,79,89,.12); }

.privacy-state > i.camera-on { border-color: #99f1c8; background: #54c996; box-shadow: 0 0 0 7px rgba(84,201,150,.15); }

.privacy-state b, .privacy-state small { display: block; }
.privacy-state b { color: #fff; }
.privacy-state small { margin-top: 3px; color: #95b4af; font-size: 10px; }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.speaker-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.speaker-facts span { padding: 9px; border-radius: 8px; color: #b8cfcb; background: rgba(255,255,255,.055); font-size: 11px; }

.speaker-boundary { margin-top: auto; padding: 15px; border-radius: 13px; color: #aac4c0; background: #0e3037; }
.speaker-boundary b { color: #d9e8e5; }
.speaker-boundary p { margin: 7px 0 0; font-size: 11px; line-height: 1.65; }

.speaker-console { padding: 42px clamp(26px, 4vw, 64px) 70px; }

.speaker-console > header { display: flex; justify-content: space-between; gap: 25px; align-items: start; margin-bottom: 26px; }
.speaker-console header h1 { margin: 7px 0 8px; font-size: clamp(30px, 4vw, 48px); letter-spacing: -.045em; }
.speaker-console header p { max-width: 760px; margin: 0; color: var(--muted); font-size: 16px; line-height: 1.65; }

.speaker-now, .speaker-message-panel, .music-support { margin-bottom: 18px; padding: 26px; border: 1px solid var(--line); border-radius: 21px; background: #fff; box-shadow: var(--small-shadow); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.camera-observation { display: grid; grid-template-columns: minmax(300px, 1.25fr) minmax(330px, 1fr); gap: 22px; margin-bottom: 18px; padding: 20px; border: 1px solid var(--line); border-radius: 21px; background: #fff; box-shadow: var(--small-shadow); }

.camera-observation.active { border-color: #9ad7c5; box-shadow: 0 0 0 4px rgba(77,181,147,.08), var(--small-shadow); }

.camera-panel { position: relative; display: grid; place-items: center; min-height: 310px; overflow: hidden; border-radius: 16px; color: #bad1cd; background: radial-gradient(circle at 48% 42%, #2b5b61, #122f36 65%); }

.camera-panel video { position: absolute; inset: 0; display: none; width: 100%; height: 100%; object-fit: cover; transform: scaleX(-1); }

.camera-panel.has-video video { display: block; }

.camera-panel.has-video .camera-placeholder { display: none; }

.camera-placeholder { display: grid; justify-items: center; gap: 8px; text-align: center; }

.camera-placeholder > span { display: grid; place-items: center; width: 72px; height: 54px; border: 4px solid #789d9c; border-radius: 15px; font-size: 28px; }

.camera-placeholder b { color: #f0f7f5; font-size: 18px; }
.camera-placeholder small { font-size: 11px; }

#motion-canvas { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

.camera-live { position: absolute; top: 13px; left: 13px; display: flex; gap: 7px; align-items: center; padding: 6px 9px; border-radius: 99px; color: #d6e8e4; background: rgba(7,31,36,.68); font-size: 10px; font-weight: 850; }

.camera-live i { width: 8px; height: 8px; border-radius: 50%; background: #879c9b; }
.camera-observation.active .camera-live i { background: #65d8a5; box-shadow: 0 0 0 4px rgba(101,216,165,.13); }

.camera-copy > span { color: var(--green); font-size: 11px; font-weight: 900; }
.camera-copy h2 { margin: 6px 0 9px; }
.camera-copy > p { color: var(--muted); font-size: 12px; line-height: 1.65; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.camera-copy > button { width: 100%; margin-top: 13px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.camera-next-step { display: block; margin-top: 8px; color: var(--muted); font-size: 10px; line-height: 1.5; }

.camera-actions { display: flex; gap: 8px; margin-top: 13px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.camera-actions > button { flex: 1; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.camera-intervention { position: fixed; z-index: 45; right: 22px; bottom: 22px; min-height: 48px; padding: 11px 18px; border: 1px solid #9fd0c3; border-radius: 99px; color: #153f45; background: #e2f5ef; box-shadow: var(--shadow); font-weight: 850; }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.speaker-now { color: #f2faf8; background: linear-gradient(145deg, #1b4b54, #173a55); }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.prompt-label { color: #a9ccc6; font-size: 12px; font-weight: 900; letter-spacing: .08em; }
/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.speaker-now h2 { max-width: 780px; margin: 11px 0 23px; font-size: clamp(27px, 3.6vw, 43px); line-height: 1.2; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.hardware-zone { display: grid; grid-template-columns: 2fr 1fr; gap: 13px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.hardware-button { display: grid; grid-template-columns: 59px 1fr; grid-template-rows: auto auto; gap: 3px 13px; align-items: center; min-height: 99px; padding: 16px; border: 1px solid rgba(255,255,255,.15); border-radius: 17px; color: #fff; text-align: left; background: rgba(255,255,255,.08); }
.hardware-button > span { grid-row: 1 / span 2; display: grid; place-items: center; width: 59px; height: 59px; border-radius: 50%; color: #17464d; background: #eefcf8; font-size: 23px; }
.hardware-button b { font-size: 18px; }
.hardware-button small { color: #b8d1cf; }
.hardware-button.talk.active > span { color: #fff; background: #d34752; box-shadow: 0 0 0 8px rgba(211,71,82,.16); }
.hardware-button.stop > span { color: #a0494e; background: #fff0f1; }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.elder-demo-input { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: end; margin-top: 17px; padding-top: 17px; border-top: 1px solid rgba(255,255,255,.12); }
.elder-demo-input label { color: #bfd6d3; }
.elder-demo-input input:disabled { color: #8ca2a2; background: rgba(255,255,255,.08); }
.elder-demo-input .secondary { min-height: 44px; }

.speaker-message-panel blockquote { margin: 15px 0 9px; padding: 19px 22px; border-left: 4px solid var(--green); border-radius: 0 13px 13px 0; color: #294649; background: #f0f7f5; font-size: 21px; line-height: 1.55; }
.speaker-attribution { color: var(--muted); font-size: 12px; line-height: 1.6; }
.speaker-controls { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 17px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.music-support { display: flex; justify-content: space-between; gap: 20px; align-items: center; background: linear-gradient(135deg, #f6f2fb, #fff); }
.music-support > div > span { color: var(--violet); font-size: 11px; font-weight: 900; }
.music-support h3 { margin: 5px 0; }
.music-support p { max-width: 720px; margin: 0; color: #696074; font-size: 13px; line-height: 1.6; }
.music-actions { display: flex; flex: 0 0 auto; gap: 8px; }

/*
 * 医生 H5 工作台：左侧固定工作流，右侧显示医生/护士可见的临床内部资料。
 * 视觉上的按钮显隐用于减少误操作，签署、发布、风险关闭和患者范围仍由服务端授权决定。
 */
.doctor-shell { display: grid; grid-template-columns: 255px minmax(0, 1fr); min-height: calc(100vh - 72px); background: #f3f6f5; }

.doctor-sidebar { position: sticky; top: 72px; display: flex; flex-direction: column; height: calc(100vh - 72px); padding: 24px 15px 17px; color: #c8dad6; background: #173b43; }

.doctor-brand { display: flex; gap: 10px; align-items: center; padding: 0 8px 21px; }
.doctor-brand > span { width: 38px; height: 38px; border-radius: 12px; font-size: 19px; }
.doctor-brand b, .doctor-brand small { display: block; }
.doctor-brand b { color: #fff; font-size: 14px; }
.doctor-brand small { margin-top: 3px; color: #8faaa6; font-size: 9px; }

/* 医生导航与工作区：患者内容占据主阅读区，角色、业务入口和登录入口集中在导航区域；选中态仅表示当前位置，权限仍来自共享后台。 */
.doctor-sidebar nav { display: grid; gap: 3px; margin-top: 17px; }
.doctor-sidebar nav button { position: relative; display: flex; gap: 11px; align-items: center; min-height: 43px; padding: 9px 12px; border: 0; border-radius: 9px; color: #a9c0bc; text-align: left; background: transparent; font-size: 12px; font-weight: 750; }
.doctor-sidebar nav button > span { width: 17px; text-align: center; font-size: 16px; }
.doctor-sidebar nav button > i { display: grid; place-items: center; width: 18px; height: 18px; margin-left: auto; border-radius: 50%; color: #fff; background: var(--red); font-size: 9px; font-style: normal; }
.doctor-sidebar nav button:hover, .doctor-sidebar nav button.active { color: #fff; background: #28545a; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.sidebar-truth { display: flex; gap: 10px; align-items: flex-start; margin-top: auto; padding: 12px; border-top: 1px solid rgba(255,255,255,.09); }
.sidebar-truth > i { width: 8px; height: 8px; margin-top: 5px; border-radius: 50%; background: #f0bb69; }
.sidebar-truth b, .sidebar-truth small { display: block; }
.sidebar-truth b { color: #d7e5e2; font-size: 10px; }
.sidebar-truth small { margin-top: 4px; color: #799894; font-size: 8px; line-height: 1.5; }

/* 医生导航与工作区：患者内容占据主阅读区，角色、业务入口和登录入口集中在导航区域；选中态仅表示当前位置，权限仍来自共享后台。 */
.doctor-main { min-width: 0; padding: 34px clamp(22px, 3.5vw, 53px) 70px; }

.doctor-header { display: flex; justify-content: space-between; gap: 28px; align-items: flex-start; margin-bottom: 24px; }
.doctor-header h1 { margin: 5px 0 6px; font-size: clamp(31px, 3.5vw, 44px); letter-spacing: -.04em; }
.doctor-header p { max-width: 800px; margin: 0; color: var(--muted); line-height: 1.6; }
.doctor-header > .primary { flex: 0 0 auto; margin-top: 15px; }

.doctor-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.doctor-metrics button { min-height: 137px; padding: 18px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); text-align: left; background: #fff; box-shadow: var(--small-shadow); }
.doctor-metrics button span, .doctor-metrics button b, .doctor-metrics button small { display: block; }
.doctor-metrics button span { color: var(--muted); font-size: 11px; font-weight: 800; }
.doctor-metrics button b { margin: 5px 0; font-size: 32px; }
.doctor-metrics button small { color: #849294; font-size: 10px; line-height: 1.45; }
.doctor-metrics button.red { border-top: 4px solid var(--red); }
.doctor-metrics button.orange { border-top: 4px solid var(--orange); }
.doctor-metrics button.yellow { border-top: 4px solid #d3a52d; }
.doctor-metrics button.blue { border-top: 4px solid var(--blue); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.dashboard-grid { display: grid; grid-template-columns: 1.4fr .8fr; gap: 16px; }
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.work-panel, .clinical-card, .patient-table, .risk-queue, .risk-detail, .report-editor, .publish-panel, .audit-table { border: 1px solid var(--line); border-radius: 17px; background: #fff; box-shadow: var(--small-shadow); }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.work-panel { padding: 20px; }
.panel-heading { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; margin-bottom: 15px; }
.panel-heading h2 { margin: 4px 0 0; font-size: 20px; }
.panel-heading > small { color: var(--muted); font-size: 10px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.panel-heading > button, .table-link { padding: 3px; border: 0; color: var(--green); background: transparent; font-size: 11px; font-weight: 800; }

/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.compact-risk-list { display: grid; }
.risk-row-main { display: grid; grid-template-columns: auto 1fr auto; gap: 11px; align-items: center; padding: 13px 0; border: 0; color: var(--ink); text-align: left; background: transparent; }
.risk-row-main i, .risk-queue button > i { width: 9px; height: 9px; border-radius: 50%; background: #aaa; }
.compact-risk-list i.red, .risk-queue i.red { background: var(--red); }
.compact-risk-list i.orange, .risk-queue i.orange { background: var(--orange); }
.compact-risk-list i.yellow, .risk-queue i.yellow { background: #d3a52d; }
.compact-risk-list span, .compact-risk-list b, .compact-risk-list small { display: block; }
.compact-risk-list span { color: var(--muted); font-size: 9px; }
.compact-risk-list b { margin: 3px 0; font-size: 13px; }
.compact-risk-list small { color: #849395; font-size: 9px; }
.compact-risk-list em { color: #876536; font-size: 9px; font-style: normal; }
/* 全工作清单按形成来源分三组（医生自建 / 家属观察 / 患者反馈），每行末尾提供删除入口，删除不影响原始证据。 */
.risk-group + .risk-group { margin-top: 16px; }
.risk-group > h3 { display: flex; justify-content: space-between; align-items: baseline; margin: 0 0 2px; font-size: 12px; color: #286a60; }
.risk-group > h3 small { color: #849395; font-size: 10px; font-weight: 600; }
.risk-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; border-top: 1px solid #edf1f0; }
.risk-row:first-of-type { border-top: 0; }
.risk-group-empty { margin: 4px 0 0; color: #a3b0b1; font-size: 11px; }
.risk-delete { align-self: center; padding: 4px 10px; border: 1px solid #efc6c3; border-radius: 8px; color: #b5483f; background: #fff4f3; font-size: 10px; font-weight: 700; white-space: nowrap; cursor: pointer; }
.risk-delete:hover { background: #fde9e7; border-color: #e3a9a4; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.quality-row { display: flex; gap: 12px; align-items: center; padding: 14px 0; border-top: 1px solid #edf1f0; }
.quality-row > span { display: grid; place-items: center; min-width: 44px; height: 44px; border-radius: 13px; color: #286a60; background: var(--green-soft); font-size: 14px; font-weight: 900; }
.quality-row > span.device-ok { font-size: 9px; }
.quality-row > span.warning { color: #98611b; background: var(--amber-soft); }
.quality-row b, .quality-row small { display: block; }
.quality-row b { font-size: 12px; }
.quality-row small { margin-top: 3px; color: var(--muted); font-size: 9px; }

.ai-status { display: grid; grid-template-columns: auto 1fr auto; gap: 13px; align-items: center; margin-top: 16px; padding: 16px; border: 1px solid #dad1e9; border-radius: 14px; color: #5e5270; background: #f8f5fb; }
.ai-status > span { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; color: #fff; background: var(--violet); font-size: 11px; font-weight: 900; }
.ai-status p { margin: 3px 0 0; font-size: 11px; line-height: 1.5; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.ai-status button { padding: 7px; border: 0; color: var(--violet); background: transparent; font-size: 11px; font-weight: 800; }

/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.patient-table { overflow: hidden; }
.table-tools { display: flex; justify-content: space-between; gap: 20px; align-items: end; padding: 17px; border-bottom: 1px solid var(--line); }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.table-tools label { width: min(310px, 100%); }
/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.table-tools > div { display: flex; flex-wrap: wrap; gap: 5px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.filter { min-height: 35px; padding: 6px 9px; border: 1px solid #d8e2e0; border-radius: 8px; color: var(--muted); background: #fff; font-size: 10px; font-weight: 800; }
.filter.active { color: #235f56; background: var(--green-soft); }
/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.table-scroll { overflow-x: auto; }
.patient-table table, .audit-table table { width: 100%; border-collapse: collapse; text-align: left; }
.patient-table th, .audit-table th { padding: 12px 14px; color: var(--muted); border-bottom: 1px solid var(--line); background: #f8faf9; font-size: 9px; white-space: nowrap; }
.patient-table td, .audit-table td { padding: 15px 14px; border-bottom: 1px solid #edf1f0; font-size: 11px; vertical-align: middle; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.patient-name { display: flex; gap: 9px; align-items: center; min-width: 210px; }
.patient-name > span { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; color: #fff; background: var(--green); font-weight: 900; }
.patient-name b, .patient-name small { display: block; }
.patient-name small { margin-top: 3px; color: var(--muted); font-size: 9px; }
/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.risk-chip.orange { color: #a8441c; background: var(--orange-soft); }
.risk-chip.red { color: #982c37; background: var(--red-soft); }
.risk-chip.yellow { color: #856619; background: #fff7d8; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.empty-state { padding: 55px 20px; color: var(--muted); text-align: center; }
.empty-state > span { font-size: 31px; }
.empty-state h3 { margin: 10px 0 5px; color: var(--ink); }
.empty-state p { margin: 0; }

.patient-banner { display: flex; gap: 15px; align-items: center; margin-bottom: 16px; padding: 18px; border-radius: 17px; color: #e9f5f2; background: linear-gradient(120deg, #19434b, #2b7469); }
.patient-banner > div:nth-child(2) { flex: 1; }
.patient-banner span:not(.avatar) { color: #a8ccc5; font-size: 10px; }
.patient-banner h2 { margin: 4px 0; color: #fff; font-size: 19px; }
.patient-banner p { margin: 0; color: #bbd7d2; font-size: 10px; }
/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.patient-banner .risk-chip { color: #ffe7d8; background: rgba(217,98,50,.27); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.panorama-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-card { padding: 20px; }
.clinical-card.full { margin-top: 16px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.baseline-list { display: grid; gap: 9px; margin: 0; }
.baseline-list div { display: grid; grid-template-columns: 95px 1fr; gap: 10px; padding-top: 9px; border-top: 1px solid #edf1f0; }
.baseline-list dt { color: var(--muted); font-size: 10px; }
.baseline-list dd { margin: 0; font-size: 11px; line-height: 1.5; }
.data-completeness { display: flex; gap: 12px; align-items: center; padding: 14px; border-radius: 12px; background: var(--green-soft); }
.data-completeness > span { font-size: 25px; font-weight: 900; }
.data-completeness b, .data-completeness small { display: block; }
.data-completeness small { margin-top: 3px; color: var(--muted); font-size: 9px; }
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-list { display: grid; gap: 9px; margin: 13px 0 0; padding: 0; list-style: none; font-size: 10px; }
.clinical-list i { display: inline-block; width: 8px; height: 8px; margin-right: 7px; border-radius: 50%; }
.clinical-list i.ok { background: var(--green); }
.clinical-list i.warn { background: var(--orange); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.domain-trends { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.domain-trends button { position: relative; display: grid; gap: 5px; min-height: 105px; padding: 13px; border: 1px solid #dfe8e6; border-radius: 12px; color: var(--ink); text-align: left; background: #fafcfb; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.domain-trends span { color: var(--muted); font-size: 10px; font-weight: 800; }
.domain-trends b { font-size: 12px; }
.domain-trends b.high { color: var(--orange); }
.domain-trends b.mid { color: #a27522; }
.domain-trends b.ok { color: var(--green); }
.domain-trends small { color: var(--muted); font-size: 9px; line-height: 1.4; }
.domain-trends i { position: absolute; right: 11px; bottom: 9px; color: #91a3a0; font-style: normal; }

.timeline { display: grid; gap: 0; }
.timeline-item { position: relative; display: grid; grid-template-columns: auto 1fr; gap: 13px; padding: 13px 0; border-top: 1px solid #edf1f0; }
.source-icon { display: grid; place-items: center; width: 33px; height: 33px; border-radius: 10px; color: #fff; background: var(--green); font-size: 10px; font-weight: 900; }
.source-icon.elder_self_report { background: var(--blue); }
.source-icon.device_event { background: #68797d; }
.source-icon.clinician_entry { background: var(--violet); }
.timeline-meta { display: flex; justify-content: space-between; gap: 10px; }
.timeline-meta span { color: var(--green); font-size: 9px; font-weight: 900; }
.timeline-meta small { color: var(--muted); font-size: 8px; }
.timeline-item h4 { margin: 4px 0; font-size: 12px; }
.timeline-item p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.5; }
.timeline-tags { display: flex; gap: 5px; margin-top: 7px; }
.timeline-tags span { padding: 4px 6px; border-radius: 5px; color: #526d6a; background: #edf3f2; font-size: 8px; }

.source-icon.visual_observation { background: #2e806d; }

.ai-draft { border-color: #d9d0e9; }
.ai-warning { margin-bottom: 15px; padding: 13px; border-left: 4px solid var(--violet); border-radius: 8px; color: #5c5070; background: var(--violet-soft); }
.ai-warning b { font-size: 11px; }
.ai-warning p { margin: 4px 0 0; font-size: 10px; line-height: 1.5; }
.ai-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.ai-grid > div { padding: 13px; border-radius: 10px; background: #faf9fc; }
.ai-grid > div.wide { grid-column: 1 / -1; }
.ai-grid small { color: var(--violet); font-size: 9px; font-weight: 900; }
.ai-grid p, .ai-grid ul { margin: 6px 0 0; color: #4f4a58; font-size: 10px; line-height: 1.6; }
.ai-grid ul { padding-left: 17px; }
.ai-draft footer { display: flex; justify-content: space-between; gap: 15px; margin-top: 13px; color: var(--muted); font-size: 8px; }
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }

/* 风险工作区：把候选事件、人工核实、医护处置和外部通知四层信息并列呈现。 */
.risk-workspace { display: grid; grid-template-columns: minmax(300px, .78fr) minmax(480px, 1.45fr); gap: 16px; align-items: start; }
.risk-queue { overflow: hidden; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.queue-title { display: flex; justify-content: space-between; align-items: center; padding: 18px; border-bottom: 1px solid var(--line); }
.queue-title h2 { margin: 0; font-size: 18px; }
.queue-title span { color: var(--muted); font-size: 10px; }
/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.risk-queue > button { display: grid; grid-template-columns: auto 1fr; gap: 10px; width: 100%; padding: 14px; border: 0; border-bottom: 1px solid #edf1f0; color: var(--ink); text-align: left; background: #fff; }
.risk-queue > button.active { background: #edf7f4; box-shadow: inset 3px 0 0 var(--green); }
.risk-queue button > i { margin-top: 5px; }
.risk-queue button > div span, .risk-queue button b, .risk-queue button small, .risk-queue button em { display: block; }
.risk-queue button > div span { color: var(--muted); font-size: 8px; }
.risk-queue button b { margin: 4px 0; font-size: 11px; }
.risk-queue button small { color: #728486; font-size: 9px; line-height: 1.45; }
.risk-queue button em { grid-column: 2; margin-top: 7px; color: #8b5d31; font-size: 8px; font-style: normal; }
.risk-detail { padding: 22px; }
.risk-detail-head { display: flex; justify-content: space-between; gap: 15px; }
.risk-detail-head h2 { margin: 8px 0 4px; font-size: 22px; }
.risk-detail-head p { margin: 0; color: var(--muted); font-size: 10px; }
.risk-deadline { display: flex; justify-content: space-between; gap: 15px; margin: 17px 0; padding: 12px; border-radius: 10px; color: #8d5726; background: var(--amber-soft); font-size: 10px; }
.risk-evidence { display: grid; margin: 0; }
.risk-evidence div { padding: 12px 0; border-bottom: 1px solid #edf1f0; }
.risk-evidence dt { margin-bottom: 4px; color: var(--muted); font-size: 9px; font-weight: 800; }
.risk-evidence dd { margin: 0; font-size: 11px; line-height: 1.6; }
.risk-detail form { display: grid; gap: 11px; margin-top: 16px; padding: 15px; border-radius: 12px; background: #f5f8f7; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.role-limit { display: flex; gap: 9px; align-items: flex-start; }
.role-limit > span { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; color: #fff; background: var(--green); font-size: 11px; font-weight: 900; }
.role-limit p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.5; }
.closed-panel { margin-top: 15px; padding: 13px; border-radius: 10px; color: #28685e; background: var(--green-soft); font-size: 11px; }

/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.risk-layer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 16px; }

.risk-layer-grid article { min-width: 0; padding: 11px 12px; border: 1px solid #dfe8e6; border-radius: 11px; background: #fafcfb; }

.risk-layer-grid span, .risk-layer-grid b, .risk-layer-grid small { display: block; }
.risk-layer-grid span { color: var(--green); font-size: 8px; font-weight: 900; letter-spacing: .05em; }
.risk-layer-grid b { margin: 5px 0; font-size: 11px; }
.risk-layer-grid small { color: var(--muted); font-size: 8px; line-height: 1.45; overflow-wrap: anywhere; }

/* 沟通、预约和随访：区分临床内部事项、家庭可见模板与“本地协调”状态。 */
.followup-layout { display: grid; grid-template-columns: minmax(320px, .8fr) 1.2fr; gap: 16px; align-items: start; }
.followup-layout form { display: grid; gap: 12px; }
.inline-warning { margin: 0; padding: 9px; border-radius: 8px; color: #775628; background: var(--amber-soft); font-size: 9px; line-height: 1.5; }
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-follow-list article { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; padding: 12px 0; border-top: 1px solid #edf1f0; }
.clinical-follow-list article > span { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; color: var(--green); background: var(--green-soft); }
.clinical-follow-list h3 { margin: 3px 0; font-size: 12px; }
.clinical-follow-list p, .clinical-follow-list small { margin: 0; color: var(--muted); font-size: 9px; }
.clinical-follow-list em { color: #81612f; font-size: 9px; font-style: normal; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.plan-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 16px; }
.plan-block { position: relative; min-height: 250px; overflow: hidden; }
.plan-number { display: grid; place-items: center; width: 39px; height: 39px; margin-bottom: 20px; border-radius: 12px; color: var(--green); background: var(--green-soft); font-size: 11px; font-weight: 900; }
.plan-block h2 { margin: 6px 0 11px; font-size: 18px; }
.plan-block p { color: #516466; font-size: 11px; line-height: 1.7; }
.plan-block footer { position: absolute; right: 20px; bottom: 18px; left: 20px; padding-top: 10px; border-top: 1px solid #edf1f0; color: var(--muted); font-size: 9px; }
.plan-block.violet { border-color: #dcd4e8; background: #fbf9fd; }
.plan-block.violet .plan-number { color: var(--violet); background: var(--violet-soft); }

/* 报告与发布：左侧为版本化临床草稿，右侧为医生确认/受控发布操作。 */
.report-layout { display: grid; grid-template-columns: minmax(520px, 1.3fr) minmax(300px, .7fr); gap: 16px; align-items: start; }
.report-editor { overflow: hidden; }
.report-cover { padding: 27px; color: #e8f4f2; background: linear-gradient(125deg, #173e46, #2a6f65); }
.report-cover span { color: #a8ccc5; font-size: 9px; font-weight: 900; }
.report-cover h2 { margin: 8px 0; color: #fff; font-size: 25px; }
.report-cover p { margin: 0; color: #bcd6d1; font-size: 10px; }
.report-section { padding: 17px 22px; border-top: 1px solid var(--line); }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.report-section textarea { min-height: 110px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.report-section.internal { background: #faf8fc; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.report-section.internal textarea { min-height: 170px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.report-section .ai-badge { display: inline-block; margin-bottom: 10px; }
.publish-panel { position: sticky; top: 90px; padding: 20px; }
.publish-panel form { display: grid; gap: 13px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.publish-panel textarea { min-height: 185px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.confirm-check { display: flex; grid-template: none; gap: 8px; align-items: flex-start; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.confirm-check input { width: 18px; min-height: 18px; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.confirm-check span { font-size: 10px; line-height: 1.5; }

/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.audit-table { overflow-x: auto; }
.audit-table td { line-height: 1.5; }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.audit-footer { margin-top: 15px; padding: 15px; border: 1px solid #d4dfdd; border-radius: 13px; color: #536869; background: #f8faf9; }
.audit-footer > span { background: var(--green); }

/* 急症安全弹层与启动页：突出现场安全与用户主动拨号，不制造自动救援或外部送达幻觉。 */
.modal-backdrop { position: fixed; z-index: 120; inset: 0; display: grid; place-items: center; padding: 20px; background: rgba(12,34,39,.72); backdrop-filter: blur(8px); }
/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.safety-modal { position: relative; width: min(590px, 100%); padding: 31px; border-radius: 21px; background: #fff; box-shadow: 0 30px 90px rgba(0,0,0,.34); }
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.modal-close { position: absolute; top: 13px; right: 13px; width: 35px; height: 35px; border: 0; border-radius: 50%; color: #8a4d52; background: var(--red-soft); font-size: 22px; }
/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.safety-symbol { display: grid; place-items: center; width: 51px; height: 51px; border-radius: 16px; color: #fff; background: var(--red); font-size: 27px; font-weight: 950; }
.safety-modal h2 { margin: 17px 0 10px; font-size: 27px; }
.safety-modal p { color: #536769; line-height: 1.75; }
.safety-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin: 19px 0; }
.safety-actions a, .safety-actions button { display: grid; place-items: center; min-height: 52px; padding: 11px; border: 1px solid #e2a8ad; border-radius: 11px; color: #a42f3a; text-align: center; text-decoration: none; background: var(--red-soft); font-weight: 900; }
.safety-actions button { color: #31645c; border-color: #b8d5cf; background: var(--green-soft); }
.safety-modal > small { color: var(--muted); line-height: 1.6; }
/* 患者主档修改弹层：就地复用新建患者字段，保留标题与关闭层级，表单过长时可滚动。 */
.patient-edit-modal { position: relative; width: min(720px, 100%); max-height: min(88vh, 780px); overflow: auto; padding: 26px 28px; border-radius: 18px; background: #fff; box-shadow: 0 30px 90px rgba(0,0,0,.34); }
.patient-edit-modal-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 8px; padding-right: 40px; }
.patient-edit-modal-head h2 { margin: 4px 0 0; font-size: 22px; }
.patient-edit-modal .clinical-registry-form { margin-top: 14px; }

/* 档案数据修改弹层：三段式布局（标题区 / 可滚动表单区 / 底部操作栏），
   脱离 .clinical-registry 容器后补齐输入、字段集与折叠区样式，保持与临床表单一致。 */
.classification-edit-modal { position: relative; display: flex; flex-direction: column; width: min(760px, 100%); max-height: min(90vh, 820px); border-radius: 20px; background: #fff; box-shadow: 0 30px 90px rgba(12,34,39,.38); overflow: hidden; }
.classification-edit-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; padding: 20px 56px 16px 24px; border-bottom: 1px solid #e5efeb; background: linear-gradient(180deg, #f2faf7, #fff); }
.classification-edit-heading { min-width: 0; }
.classification-edit-badge { display: inline-flex; align-items: center; padding: 4px 11px; border-radius: 99px; background: var(--green-soft); color: #1b6b56; font-size: 12px; font-weight: 800; letter-spacing: .3px; }
.classification-edit-heading h2 { margin: 10px 0 4px; font-size: 22px; color: #183d3b; }
.classification-edit-heading p { margin: 0; color: #61756e; font-size: 13px; line-height: 1.6; }
.classification-edit-heading p b { color: #24534a; }
.classification-edit-body { flex: 1 1 auto; overflow: auto; padding: 18px 24px 6px; }
.classification-edit-body .clinical-registry-form { margin-top: 0; }
.classification-edit-footer { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 24px; border-top: 1px solid #e5efeb; background: #fafcfb; }
.classification-edit-footer .primary, .classification-edit-footer .secondary { min-height: 44px; padding: 10px 22px; border-radius: 10px; font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }
.classification-edit-footer .primary { border: 1px solid #176b55; background: #176b55; color: #fff; }
.classification-edit-footer .primary:hover { background: #125a46; }
.classification-edit-footer .secondary { border: 1px solid #c7dad4; background: #fff; color: #45605a; }
.classification-edit-footer .secondary:hover { background: #eef5f2; }
.classification-edit-modal input, .classification-edit-modal select, .classification-edit-modal textarea { box-sizing: border-box; max-width: 100%; min-height: 42px; padding: 9px 11px; border: 1px solid #9cbdb2; border-radius: 9px; background: #fff; color: #183d3b; font: inherit; }
.classification-edit-modal input[type=checkbox] { width: 20px; height: 20px; min-height: 0; accent-color: #176b55; }
.classification-edit-modal fieldset { border: 1px solid #d0e2dc; border-radius: 10px; padding: 12px; min-width: 0; }
.classification-edit-modal fieldset legend { padding: 0 6px; font-weight: 700; color: #24534a; }
.classification-edit-modal fieldset > p { margin: 0 0 8px; color: #61756e; font-size: 12px; line-height: 1.5; }
.classification-edit-modal details > summary { cursor: pointer; font-weight: 700; color: #176b55; min-height: 40px; }
.classification-edit-modal textarea { resize: vertical; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.loading-screen, .fatal-state { display: grid; place-items: center; min-height: calc(100vh - 72px); padding: 30px; text-align: center; }
.loading-screen h1, .fatal-state h1 { margin: 18px 0 8px; }
.loading-screen p, .fatal-state p { color: var(--muted); }

.local-launch { display: grid; place-items: center; min-height: 100vh; padding: 24px; background: radial-gradient(circle at 50% 15%, #e5f6f1, #f4f8f7 45%, #edf3f1); }

.launch-card { width: min(520px, 100%); padding: 34px; border: 1px solid #ccded9; border-radius: 24px; text-align: center; background: rgba(255,255,255,.95); box-shadow: 0 24px 70px rgba(20,59,66,.15); }

.launch-brand { display: flex; justify-content: center; gap: 12px; align-items: center; margin-bottom: 30px; text-align: left; }
.launch-brand > span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 15px; color: #fff; background: var(--green); font-size: 24px; font-weight: 950; }
.launch-brand b, .launch-brand small { display: block; }
.launch-brand small { margin-top: 3px; color: var(--muted); font-size: 11px; }

.launch-mark { display: grid; place-items: center; width: 58px; height: 58px; margin: 0 auto; border-radius: 18px; color: #315f5b; background: var(--green-soft); font-size: 26px; font-weight: 950; }
.launch-mark.error { color: #9f323c; background: var(--red-soft); }
.launch-mark.ready { color: #fff; background: var(--green); }

.launch-card h1 { margin: 18px 0 8px; font-size: clamp(27px, 6vw, 38px); letter-spacing: -.04em; }
.launch-card > p { margin: 0; color: var(--muted); line-height: 1.65; }

.launch-command { display: grid; gap: 8px; margin: 24px 0 18px; padding: 16px; border-radius: 14px; color: #b9d5d1; background: #153b43; text-align: left; }
.launch-command small { font-size: 11px; }
.launch-command code { color: #fff; font-size: 17px; font-weight: 850; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.launch-card > button { min-height: 48px; padding: 11px 24px; border: 1px solid var(--green-dark); border-radius: 12px; color: #fff; background: var(--green-dark); font-weight: 850; }
.launch-card > button:disabled { cursor: wait; opacity: .55; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.launch-card .launch-truth { margin-top: 18px; font-size: 11px; }

/* 通用响应式：依次适配平板、小屏与手机，避免固定栏导致横向滚动。 */
@media (max-width: 1100px) {

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .role-bar { grid-template-columns: auto 1fr; }
  .system-truth { display: none; }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .family-background { grid-template-columns: minmax(420px, 740px); }
  .family-context { display: none; }

  /* 医生导航与工作区：患者内容占据主阅读区，角色、业务入口和登录入口集中在导航区域；选中态仅表示当前位置，权限仍来自共享后台。 */
  .doctor-metrics { grid-template-columns: 1fr 1fr; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .dashboard-grid { grid-template-columns: 1fr; }

  .plan-grid { grid-template-columns: 1fr 1fr; }
  .report-layout { grid-template-columns: 1fr; }
  .publish-panel { position: static; }
}

/* 响应式布局（(max-width: 850px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media (max-width: 850px) {

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .role-bar { position: relative; grid-template-columns: 1fr; gap: 9px; }
  .role-switcher { justify-content: stretch; }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .role-switcher button { flex: 1; padding: 7px; font-size: 11px; }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .speaker-stage { grid-template-columns: 1fr; }
  .speaker-side { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 18px; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .privacy-state { margin: 0; }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .speaker-facts { grid-column: 1 / -1; }
  .speaker-boundary { grid-column: 1 / -1; margin-top: 0; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .camera-observation { grid-template-columns: 1fr; }

  /* 医生导航与工作区：患者内容占据主阅读区，角色、业务入口和登录入口集中在导航区域；选中态仅表示当前位置，权限仍来自共享后台。 */
  .doctor-shell { grid-template-columns: minmax(0, 1fr); width: 100%; max-width: 100vw; overflow: hidden; }
  .doctor-sidebar, .doctor-main { min-width: 0; width: 100%; max-width: 100vw; }
  .doctor-sidebar { position: relative; top: auto; height: auto; overflow: hidden; }
  .doctor-sidebar nav { display: flex; width: 100%; min-width: 0; max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; }
  .doctor-sidebar nav button { flex: 0 0 auto; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .sidebar-truth { display: none; }

  /* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
  .risk-workspace { grid-template-columns: 1fr; }
  .risk-queue { max-height: 350px; overflow: auto; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .panorama-grid { grid-template-columns: 1fr; }
  .domain-trends { grid-template-columns: 1fr 1fr; }
  .followup-layout { grid-template-columns: 1fr; }
  .report-layout { grid-template-columns: 1fr; }
}

/* 响应式布局（(max-width: 650px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media (max-width: 650px) {

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .global-flash { top: 12px; }
  .camera-intervention { right: 14px; bottom: 14px; width: calc(100% - 28px); }

  .runtime-banner { align-items: flex-start; flex-wrap: wrap; }
  .runtime-banner p { flex-basis: calc(100% - 86px); }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .runtime-banner button { width: 100%; }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .family-background { display: block; min-height: 0; padding: 0; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .phone-shell { min-height: calc(100vh - 120px); border: 0; border-radius: 0; box-shadow: none; }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .mini-header { padding: 19px 18px 15px; }
  .mini-main { padding: 20px 16px 102px; }
  .mini-nav { position: fixed; }
  .mini-nav button small { max-width: 45px; overflow: hidden; text-overflow: ellipsis; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .summary-grid { grid-template-columns: 1fr; }
  .action-grid { grid-template-columns: 1fr; }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .family-welcome { align-items: stretch; flex-direction: column; }
  .family-welcome .primary { width: 100%; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .confirmed-card { align-items: flex-start; flex-direction: column; }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .form-submit, .input-meta { align-items: stretch; flex-direction: column; }
  .form-submit .primary, .input-meta .primary { width: 100%; }

  /* 观察与事实卡：原文、整理草稿、核对字段和确认动作按来源链排列；医生或家属可辨认待核对内容，卡片外观不改变确认状态。 */
  .narrative-intro { grid-template-columns: auto 1fr; }
  .narrative-intro .soft-button { grid-column: 1 / -1; }
  .fact-top, .fact-source { align-items: stretch; flex-direction: column; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .message-list article { grid-template-columns: auto 1fr; }
  .message-list .delivery { grid-column: 2; justify-self: start; }
  .auth-card { grid-template-columns: auto 1fr; }
  .auth-card > .status-pill { grid-column: 2; }
  .device-card { grid-template-columns: 1fr; text-align: center; }
  .device-visual { margin: auto; }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .speaker-side { grid-template-columns: 1fr; }
  .speaker-facts, .speaker-boundary { grid-column: auto; }
  .speaker-console { padding: 25px 15px 60px; }
  .speaker-console > header { flex-direction: column; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .camera-observation { padding: 13px; }
  .camera-panel { min-height: 235px; }
  .camera-consent-card dl > div, .camera-copy dl > div { grid-template-columns: 1fr; gap: 3px; }
  .camera-actions { flex-direction: column; }
  .hardware-zone { grid-template-columns: 1fr; }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .elder-demo-input { grid-template-columns: 1fr; }
  .speaker-message-panel blockquote { font-size: 17px; }
  .speaker-controls, .music-support, .music-actions { align-items: stretch; flex-direction: column; }
  .speaker-controls > *, .music-actions > * { width: 100%; }

  /* 医生导航与工作区：患者内容占据主阅读区，角色、业务入口和登录入口集中在导航区域；选中态仅表示当前位置，权限仍来自共享后台。 */
  .doctor-main { padding: 24px 14px 60px; overflow: hidden; }
  .doctor-header { flex-direction: column; }
  .doctor-header > .primary { width: 100%; }
  .doctor-metrics { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .doctor-metrics button { min-width: 0; min-height: 118px; padding: 13px; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .dashboard-grid, .work-panel, .ai-status { min-width: 0; }

  /* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
  .risk-row-main { grid-template-columns: auto minmax(0, 1fr); }
  .risk-row-main em { grid-column: 2; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .ai-status { grid-template-columns: auto minmax(0, 1fr); }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .ai-status button { grid-column: 2; justify-self: start; }

  /* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
  .patient-table { border-radius: 0; }
  .table-tools { align-items: stretch; flex-direction: column; }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .table-tools label { width: 100%; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .panorama-grid { gap: 11px; }
  .domain-trends, .ai-grid { grid-template-columns: 1fr; }
  .ai-grid > div.wide { grid-column: auto; }
  .ai-draft footer, .timeline-meta { flex-direction: column; }

  /* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
  .risk-workspace { gap: 11px; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .plan-grid { grid-template-columns: 1fr; }

  /* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
  .safety-actions { grid-template-columns: 1fr; }
}

/*
 * 老年综合健康与认知照护升级区。
 * 下列样式覆盖原始单患者展示，增加八领域采集、事实卡、药品核对、协同、老人低负担入口、
 * CGA、风险分层、照护指令和报告发布的可视层；不改变服务端的医疗/权限判断。
 */
body { overflow-x: hidden; }

/* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
.mini-nav { grid-template-columns: repeat(7, minmax(0, 1fr)); }
/* 家属采集与协同：测量、药品、随访、沟通和本机家属原声的卡片布局。 */
.narrative-divider { margin: 30px 0 14px; padding: 20px; border: 1px dashed #abcfc7; border-radius: 16px; background: #f2faf7; }

.narrative-divider > span { color: var(--green); font-size: 11px; font-weight: 900; letter-spacing: .08em; }

.narrative-divider h3 { margin: 6px 0; font-size: 19px; }

.narrative-divider p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }

/* 主动语音反馈：录制、停止、转写核对、确认与取消各自保留可辨认的控件和状态；稿件区便于修改文字，样式不代表已经保存录音或反馈。 */
.measurement-form, .data-list, .medication-panel, .task-board, .communication-list, .voice-card { margin-bottom: 16px; padding: 19px; border: 1px solid var(--line); border-radius: 17px; background: #fff; box-shadow: var(--small-shadow); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.measurement-form { display: grid; gap: 14px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

.form-grid.compact { margin-top: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.data-list > article { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 12px; align-items: center; padding: 13px 0; border-top: 1px solid #edf1f0; }

.data-list > article b, .data-list > article p, .data-list > article small { display: block; margin: 0; }

.data-list > article p { margin: 3px 0; color: #334e52; font-size: 15px; font-weight: 850; }

.data-list > article small { color: var(--muted); font-size: 10px; line-height: 1.5; overflow-wrap: anywhere; }

.medication-panel > article { display: flex; justify-content: space-between; gap: 14px; align-items: center; padding: 12px 0; border-top: 1px solid #edf1f0; }

.medication-panel > article b, .medication-panel > article small { display: block; }

.medication-panel > article small { margin-top: 4px; color: var(--muted); font-size: 10px; }

.medication-panel > p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.7; }

.task-board article { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 13px; align-items: center; padding: 13px 0; border-top: 1px solid #edf1f0; }

.task-board article b, .task-board article small { display: block; }

.task-board article p { margin: 4px 0; color: #486063; font-size: 12px; }

.task-board article small { color: var(--muted); font-size: 10px; }

.collaboration-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }

.collaboration-grid > form { display: grid; gap: 13px; min-width: 0; }

.communication-list { margin-top: 16px; }

.collaboration-grid .communication-list { margin: 0; box-shadow: none; }

.communication-list > article, .communication-list article > article { display: flex; justify-content: space-between; gap: 15px; align-items: flex-start; padding: 13px 0; border-top: 1px solid #edf1f0; }

.communication-list article b, .communication-list article small { display: block; }

.communication-list article p { margin: 4px 0; color: #486063; font-size: 11px; line-height: 1.5; }

.communication-list article small { color: var(--muted); font-size: 9px; }

/* 主动语音反馈：录制、停止、转写核对、确认与取消各自保留可辨认的控件和状态；稿件区便于修改文字，样式不代表已经保存录音或反馈。 */
.voice-card { border-color: #cdd9eb; background: linear-gradient(145deg, #f5f8ff, #fff); }

.voice-card label { max-width: 480px; }

.voice-actions { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; margin-top: 15px; }

.voice-schedule { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin-top: 15px; }
.voice-schedule label { max-width: none; }

.voice-actions > span { color: var(--red); font-size: 12px; font-weight: 850; }

.voice-proof { margin: 13px 0 0; padding: 10px 12px; border-radius: 10px; color: #355f70; background: #e8f1f7; font-size: 11px; line-height: 1.55; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.status-pill.recording { color: #9c313b; background: var(--red-soft); animation: recording-pulse 1.2s ease-in-out infinite; }

/* 交互过渡：以下关键帧只改变可见性与位移，帮助识别页面状态，不延迟保存、核对或求助反馈。 */
@keyframes recording-pulse {
50% { opacity: .55; } }

/* 老人端首页：固定低负担操作和本人主动安全报告入口。 */
.elder-home-actions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px; }

.elder-reminder-entry { min-width: 0; }

.elder-reminder-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(112px, .36fr); gap: 10px; align-items: stretch; }

.elder-reminder-top > .elder-action { width: 100%; height: 100%; }

.elder-reminder-settings-button { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 5px; min-width: 0; min-height: 106px; padding: 10px; border: 1px solid #cdd9eb; border-radius: 14px; background: #f7f9ff; color: #173f45; text-align: center; cursor: pointer; }

.elder-reminder-settings-button > span { color: #356d87; font-size: 24px; line-height: 1; }

.elder-reminder-settings-button b { font-size: 16px; line-height: 1.25; }
.elder-reminder-settings-button small { color: #49666f; font-size: 12px; line-height: 1.25; }

.elder-reminder-entry.is-open { grid-column: 1 / -1; border: 2px solid #a6bfd5; border-radius: 16px; background: #f7f9ff; overflow: hidden; }

.elder-reminder-entry.is-open > .elder-reminder-top { padding: 10px; border-bottom: 1px solid #d5e2ed; }

.elder-reminder-entry.is-open > .elder-reminder-top > .elder-action { height: auto; }

.elder-action { display: grid; grid-template-columns: 48px minmax(0, 1fr); grid-template-rows: auto auto; gap: 3px 12px; align-items: center; min-height: 106px; padding: 16px; border: 1px solid #cfe0dc; border-radius: 18px; color: #173f45; text-align: left; background: #fff; box-shadow: var(--small-shadow); }

.elder-action > span { grid-row: 1 / span 2; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; color: #fff; background: var(--green); font-size: 21px; font-weight: 900; }

.elder-action b { font-size: 17px; line-height: 1.25; }
.elder-action small { color: var(--muted); font-size: 10px; line-height: 1.45; }

.elder-action.discomfort { border-color: #efc2c6; background: #fff8f8; }
.elder-action.discomfort > span, .elder-action.help > span { background: var(--red); }

.elder-action.help { border-color: #efc2c6; }
.elder-action.listen { border-color: #cdd9eb; background: #f7f9ff; }
.elder-action.listen > span { background: var(--blue); }

.elder-focus-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; margin-bottom: 18px; }

.elder-focus-grid article, .elder-fall-help { padding: 24px; border: 1px solid var(--line); border-radius: 21px; background: #fff; box-shadow: var(--small-shadow); }

.elder-focus-grid article > span, .elder-fall-copy > span { color: var(--green); font-size: 11px; font-weight: 900; letter-spacing: .07em; }

.elder-focus-grid h2, .elder-fall-help h2 { margin: 7px 0 9px; font-size: 24px; line-height: 1.25; }

.elder-focus-grid p, .elder-fall-help p { margin: 0 0 14px; color: #536a6d; font-size: 15px; line-height: 1.65; }

.elder-focus-grid small { color: var(--muted); font-size: 10px; }

/* 主动语音反馈：录制、停止、转写核对、确认与取消各自保留可辨认的控件和状态；稿件区便于修改文字，样式不代表已经保存录音或反馈。 */
.elder-voice { border-color: #d7d2ea !important; background: linear-gradient(145deg, #f7f4fc, #fff) !important; }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.elder-strength-card { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(250px, .7fr); gap: 22px; align-items: center; margin-bottom: 18px; padding: 26px; border: 2px solid #bed8ae; border-radius: 22px; background: linear-gradient(140deg, #f2faec, #fff); box-shadow: var(--small-shadow); }

.elder-strength-copy > span { color: #3f6e36; font-size: 11px; font-weight: 900; letter-spacing: .07em; }
.elder-strength-copy h2 { margin: 7px 0 9px; font-size: 28px; }
.elder-strength-copy p { margin: 0 0 14px; color: #405c45; font-size: 16px; line-height: 1.65; }
.elder-strength-copy > small { display: block; margin-top: 13px; color: #65766a; font-size: 11px; line-height: 1.5; }

.elder-strength-safety { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.elder-strength-safety b, .elder-strength-safety span { padding: 8px 11px; border-radius: 99px; font-size: 11px; }
.elder-strength-safety b { color: #fff; background: #46713b; }
.elder-strength-safety span { color: #3f6139; background: #e5f2dd; }

.elder-strength-actions { display: grid; gap: 10px; }
.elder-strength-actions button { min-height: 58px; font-size: 17px; font-weight: 850; }
.elder-strength-actions .strength-start, .elder-strength-actions .strength-done { color: #fff; border-color: #44773e; background: #44773e; }
.elder-strength-actions .strength-stop { color: #9a3038; border-color: #dda9ad; background: #fff3f4; }
.elder-strength-truth { grid-column: 1 / -1; margin: 0; padding-top: 13px; border-top: 1px solid #dce9d5; color: #6a786d; font-size: 11px; line-height: 1.55; }

.elder-fall-help { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(250px, .75fr); gap: 22px; align-items: center; margin-bottom: 18px; border: 2px solid #e5b8b6; background: linear-gradient(145deg, #fff8f7, #fffdf9); }

.elder-fall-copy > span { color: #a13b41; }

.elder-fall-copy h2 { color: #642b30; }

.elder-fall-steps { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 7px 10px; align-items: center; max-width: 520px; }

.elder-fall-steps b { padding: 6px 9px; border-radius: 99px; color: #fff; background: #a43b41; font-size: 10px; text-align: center; }

.elder-fall-steps span { color: #673f42; font-size: 13px; font-weight: 800; }

.elder-fall-actions { display: grid; gap: 10px; }

.elder-fall-actions button { min-height: 58px; font-size: 17px; font-weight: 900; }

.elder-fall-actions .fall-report { color: #fff; border-color: #a6333b; background: #a6333b; }

.elder-fall-actions .near-fall-report { color: #754b1f; border-color: #dfb878; background: #fff1d9; }

.elder-fall-result, .elder-fall-truth { grid-column: 1 / -1; margin: 0; padding: 14px 16px; border-radius: 13px; color: #63373a; background: #fbe7e7; }

.elder-fall-result { display: grid; gap: 5px; }

.elder-fall-result b, .elder-fall-result small, .elder-fall-result em { display: block; }

.elder-fall-result small { color: #6d4b4d; font-size: 12px; line-height: 1.5; }

.elder-fall-result em { color: #8b393e; font-size: 11px; font-style: normal; font-weight: 800; line-height: 1.5; }

.elder-fall-help .elder-fall-truth { color: #77595b; font-size: 11px; line-height: 1.55; }

.elder-appointment-card { display: grid; grid-template-columns: minmax(220px, 1.35fr) repeat(3, minmax(145px, .8fr)) auto; gap: 14px; align-items: end; margin-bottom: 18px; padding: 22px 24px; border: 1px solid #cdd9eb; border-radius: 21px; background: linear-gradient(145deg, #f4f8ff, #fff); box-shadow: var(--small-shadow); }

.elder-appointment-card > div > span { color: var(--blue); font-size: 11px; font-weight: 900; letter-spacing: .07em; }

.elder-appointment-card h2 { margin: 7px 0; font-size: 21px; }

.elder-appointment-card p { margin: 0; color: #536a6d; font-size: 13px; line-height: 1.55; }

.elder-appointment-card label { font-size: 12px; }

.elder-appointment-card .primary { min-width: 148px; }

/* 医护端 CGA、量表、问题清单、药品复核、风险层次与照护指令的紧凑工作区。 */
.demo-chip { padding: 7px 10px; border-radius: 99px; color: #76531d; background: var(--amber-soft); font-size: 10px; font-weight: 900; }

/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.patient-row .table-link { min-width: 105px; padding: 8px 10px; border: 1px solid #b8d5cf; border-radius: 8px; background: #f2faf7; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.cga-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }

.cga-grid article { min-width: 0; padding: 14px; border: 1px solid #dfe8e6; border-radius: 12px; background: #fafcfb; }

.cga-grid article > span, .cga-grid article > b { display: block; }

.cga-grid article > span { color: var(--muted); font-size: 10px; font-weight: 850; }

.cga-grid article > b { margin: 7px 0; font-size: 13px; }

.cga-grid b.high { color: var(--red); }

.cga-grid b.mid { color: #9b6821; }

.cga-grid b.ok { color: var(--green); }

.cga-grid article p { margin: 0; color: #53686a; font-size: 10px; line-height: 1.55; overflow-wrap: anywhere; }

.assessment-layout, .instruction-flow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 16px; align-items: start; }

.assessment-layout > form, .instruction-flow form { display: grid; gap: 12px; }

.assessment-list { display: grid; gap: 9px; }

.assessment-list article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 13px; border: 1px solid #e1e8e7; border-radius: 11px; background: #fafcfb; }

.assessment-list article b, .assessment-list article small { display: block; }

.assessment-list article small { margin-top: 3px; color: var(--muted); font-size: 9px; }

.assessment-list article strong { color: var(--green); font-size: 18px; }

.assessment-list article p { grid-column: 1 / -1; margin: 0; color: #526769; font-size: 10px; line-height: 1.5; }

/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.measurement-table { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }

.measurement-table article { min-width: 0; padding: 13px; border-radius: 11px; background: #f2f7f6; }

.measurement-table b, .measurement-table strong, .measurement-table small { display: block; }

.measurement-table b { color: var(--muted); font-size: 10px; }

.measurement-table strong { margin: 5px 0; color: #244f53; font-size: 18px; overflow-wrap: anywhere; }

.measurement-table small { color: var(--muted); font-size: 9px; line-height: 1.45; }
.measurement-table article.measurement-orange { background: var(--orange-soft); border: 1px solid #f3c6ab; }
.measurement-table article.measurement-orange strong { color: var(--orange); }
.measurement-table article.measurement-red { background: var(--red-soft); border: 1px solid #ecc2c6; }
.measurement-table article.measurement-red strong { color: var(--red); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.problem-list, .medication-review-list { display: grid; gap: 10px; }

.problem-list > article { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, .85fr); gap: 14px; align-items: start; padding: 14px; border: 1px solid #dfe8e6; border-radius: 13px; background: #fafcfb; }

.problem-list > article > div > span { color: var(--green); font-size: 9px; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }

.problem-list h3, .medication-review-list b { margin: 5px 0; font-size: 14px; }

.problem-list p, .medication-review-list p { margin: 3px 0 6px; color: #506669; font-size: 11px; line-height: 1.55; }

.problem-list small, .medication-review-list small { color: var(--muted); font-size: 9px; }

.problem-transition-form { display: grid; gap: 8px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.problem-transition-form label { font-size: 10px; }
.problem-transition-form textarea { min-height: 68px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.medication-review-list > article { padding: 13px 14px; border: 1px solid #dfe8e6; border-radius: 12px; background: #fafcfb; }

.medication-review-list > article.reported { border-color: #e6d6ad; background: #fffaf0; }

.evidence-refs p { overflow-wrap: anywhere; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px !important; }

.verification-form { border: 1px solid #ead3a7; background: #fffaf0 !important; }

.verification-form > div p { margin: 5px 0 0; color: #735e3b; font-size: 10px; line-height: 1.55; }

.instruction-flow article { min-width: 0; }

.instruction-list { display: grid; gap: 10px; }

.instruction-list article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 15px; border: 1px solid #e0e8e6; border-radius: 12px; background: #fafcfb; }

.instruction-list article span:first-child { color: var(--green); font-size: 9px; font-weight: 900; }

.instruction-list h3 { margin: 5px 0; font-size: 14px; }

.instruction-list p { margin: 0 0 6px; color: #516567; font-size: 11px; line-height: 1.6; }

.instruction-list small { color: var(--muted); font-size: 9px; }

/* 升级区响应式：在平板与手机收拢多列评估表、老人卡片和协同表单，保持按钮可触达。 */
@media (max-width: 1100px) {

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .cga-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
  .measurement-table { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .elder-home-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .elder-appointment-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .elder-appointment-card > div { grid-column: 1 / -1; }
}

/* 响应式布局（(max-width: 850px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media (max-width: 850px) {

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .collaboration-grid, .assessment-layout, .instruction-flow, .elder-focus-grid { grid-template-columns: minmax(0, 1fr); }

  .elder-fall-help { grid-template-columns: minmax(0, 1fr); }

  .elder-fall-result, .elder-fall-truth { grid-column: auto; }

  .elder-appointment-card { grid-template-columns: minmax(0, 1fr); }

  .elder-strength-card { grid-template-columns: minmax(0, 1fr); }

  .elder-appointment-card > div { grid-column: auto; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .problem-list > article { grid-template-columns: minmax(0, 1fr); }
}

/* 响应式布局（(max-width: 650px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media (max-width: 650px) {

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .mini-nav button { min-width: 0; }

  .mini-nav button small { width: 100%; max-width: none; font-size: 9px; white-space: normal; line-height: 1.15; }

  /* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
  .form-grid, .cga-grid, .measurement-table, .risk-layer-grid { grid-template-columns: minmax(0, 1fr); }

  /* 主动语音反馈：录制、停止、转写核对、确认与取消各自保留可辨认的控件和状态；稿件区便于修改文字，样式不代表已经保存录音或反馈。 */
  .voice-actions, .medication-panel > article, .communication-list > article, .communication-list article > article, .instruction-list article { align-items: stretch; flex-direction: column; }

  .voice-actions > button { width: 100%; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .instruction-list article { grid-template-columns: minmax(0, 1fr); }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .elder-home-actions { grid-template-columns: minmax(0, 1fr); }

  .elder-focus-grid article, .elder-fall-help, .elder-appointment-card { padding: 19px; }

  .elder-strength-card { padding: 19px; }
  .elder-strength-copy h2 { font-size: 24px; }
  .elder-strength-copy p { font-size: 15px; }

  .elder-focus-grid h2, .elder-fall-help h2 { font-size: 21px; }
}

/*
 * 合成观察研究工作区。
 * 家属端只显示参与者投影与受控原创题项；医护/管理员区只负责呈现 API 返回状态，
 * 所有状态机、权限、计分、去身份化与影子模型边界仍由共享后台决定。
 */
.doctor-sidebar nav { min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: rgba(174,224,212,.35) transparent; }

.doctor-sidebar nav::-webkit-scrollbar { width: 5px; }

.doctor-sidebar nav::-webkit-scrollbar-thumb { border-radius: 8px; background: rgba(174,224,212,.28); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.nav-section { display: block; margin: 11px 10px 4px; color: #789b95; font-size: 8px; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }

/* 家属研究任务：访视窗、任务、宣教和提醒保持同一手机阅读节奏。 */
.research-family-hero { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(190px, .75fr); gap: 18px; align-items: center; margin-bottom: 13px; padding: 22px; border-radius: 19px; color: #effaf7; background: linear-gradient(135deg, #17454d, #2a786b); box-shadow: var(--small-shadow); }

.research-family-hero > div > span, .research-window-card > span, .research-reminder-state > span { color: #a9d8ce; font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }

.research-family-hero h3 { margin: 6px 0 5px; color: #fff; font-size: 22px; }

.research-family-hero p { margin: 0; color: #c1ded8; font-size: 11px; line-height: 1.55; }

.research-family-hero dl { display: grid; gap: 8px; margin: 0; }

.research-family-hero dl > div { padding: 9px 11px; border: 1px solid rgba(255,255,255,.11); border-radius: 10px; background: rgba(255,255,255,.07); }

.research-family-hero dt { color: #9fc7c1; font-size: 9px; }

.research-family-hero dd { margin: 3px 0 0; overflow-wrap: anywhere; color: #fff; font-size: 11px; font-weight: 850; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-status-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; margin-bottom: 14px; }

.research-window-card, .research-reminder-state { min-width: 0; padding: 16px; border: 1px solid var(--line); border-radius: 15px; background: #fff; }

.research-reminder-state { border-color: #ded7ec; background: linear-gradient(145deg, #f8f5fc, #fff); }

.research-reminder-state > span { color: var(--violet); }

.research-window-card h3, .research-reminder-state h3 { margin: 5px 0; font-size: 16px; }

.research-window-card p, .research-reminder-state p { margin: 0 0 7px; color: #53686b; font-size: 10px; line-height: 1.5; }

.research-window-card small, .research-reminder-state small { color: var(--muted); font-size: 9px; line-height: 1.45; }

.research-task-list, .research-education-list, .research-reminder-list { margin-bottom: 14px; padding: 18px; border: 1px solid var(--line); border-radius: 17px; background: #fff; box-shadow: var(--small-shadow); }

.research-task-card { display: grid; gap: 9px; padding: 16px 0; border-top: 1px solid #edf1f0; }

.research-task-card:first-of-type { border-top: 0; }

.research-task-head { display: flex; justify-content: space-between; gap: 10px; align-items: center; }

.research-task-card h3 { margin: 0; font-size: 15px; }

.research-task-card > p { margin: 0; color: #4d6467; font-size: 11px; line-height: 1.6; }

.research-task-card > small { color: var(--muted); font-size: 9px; line-height: 1.45; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-task-card > button { justify-self: start; margin-top: 3px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-badge { display: inline-flex; align-items: center; width: max-content; padding: 5px 8px; border-radius: 99px; color: #73521f; background: var(--amber-soft); font-size: 9px; font-weight: 900; }

.research-badge.safe { color: #216a5d; background: var(--green-soft); }

.research-badge.protected { color: #625376; background: var(--violet-soft); }

.research-education-list > article, .research-reminder-list > article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 13px; align-items: center; padding: 13px 0; border-top: 1px solid #edf1f0; }

.research-education-list article b, .research-reminder-list article b { display: block; font-size: 12px; }

.research-education-list article p, .research-reminder-list article p { margin: 4px 0; color: #53686b; font-size: 10px; line-height: 1.55; }

.research-education-list article small, .research-reminder-list article > small { grid-column: 1 / -1; color: var(--muted); font-size: 9px; line-height: 1.45; }

.research-reminder-pills { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }

/* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
.family-research-response-form { display: grid; gap: 12px; margin-top: 4px; padding: 14px; border: 1px solid #c9ddd8; border-radius: 13px; background: #f7fbfa; }

.family-research-response-form fieldset { min-width: 0; margin: 0; padding: 12px; border: 1px solid #d8e5e2; border-radius: 11px; background: #fff; }

.family-research-response-form legend { padding: 0 5px; color: #294f52; font-size: 11px; font-weight: 850; line-height: 1.5; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-answer-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin-top: 8px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-answer-options label { position: relative; display: block; cursor: pointer; }

.research-answer-options input { position: absolute; width: 1px; min-height: 1px; opacity: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-answer-options span { display: grid; place-items: center; min-height: 42px; padding: 7px; border: 1px solid #cfddda; border-radius: 9px; color: #4b6265; background: #fff; font-size: 10px; text-align: center; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-answer-options input:checked + span { color: #174f49; border-color: #64a99b; background: var(--green-soft); box-shadow: inset 0 0 0 1px #64a99b; }

.research-answer-options input:focus-visible + span { outline: 3px solid #4b9bd3; outline-offset: 2px; }

/* 老人端研究卡片沿用大字号单屏节奏；问卷仍只渲染 form API 明确开放的原创题项。 */
.speaker-research-panel { display: grid; gap: 16px; margin: 20px 0; padding: 25px; border: 1px solid #c9ddd8; border-radius: 21px; background: linear-gradient(145deg, #f4fbf8, #fff); box-shadow: var(--small-shadow); }

.speaker-research-panel > p, .speaker-research-panel > small { margin: 0; color: #53686b; font-size: 13px; line-height: 1.65; }

.speaker-research-panel .section-heading { margin-bottom: 0; }

.speaker-research-panel .section-heading h3 { font-size: 22px; }

.speaker-research-task { display: grid; gap: 11px; min-width: 0; padding: 18px; border: 1px solid #d8e5e2; border-radius: 15px; background: #fff; }

.speaker-research-task .research-task-head { align-items: flex-start; }

.speaker-research-task h3 { margin: 0; font-size: 18px; }

.speaker-research-task p { margin: 0; color: #506669; font-size: 13px; line-height: 1.6; }

.speaker-research-task > button { justify-self: start; min-height: 48px; padding: 11px 18px; }

.speaker-research-panel .family-research-response-form { margin-top: 0; padding: 16px; }

.speaker-research-panel .family-research-response-form legend { font-size: 14px; }

.speaker-research-panel .research-answer-options span { min-height: 50px; font-size: 13px; }

.speaker-research-panel .family-research-response-form > button { min-height: 50px; }

/* 版权/授权和数据边界提示：安全色仅表示内容开放范围，不表示医学结果正常。 */
.research-protected-note { margin-top: 8px; padding: 11px 12px; border-left: 4px solid var(--violet); border-radius: 9px; color: #625774; background: var(--violet-soft); }

.research-protected-note.safe { color: #2c6259; border-left-color: var(--green); background: var(--green-soft); }

.research-protected-note.danger { color: #8b3038; border-left-color: var(--red); background: var(--red-soft); }

.research-protected-note b { font-size: 10px; }

.research-protected-note p { margin: 4px 0 0; font-size: 9px; line-height: 1.55; }

.research-muted { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.65; }

.research-empty { display: grid; justify-items: center; gap: 6px; padding: 48px 22px; border: 1px dashed #bed4cf; border-radius: 17px; color: var(--muted); background: #fbfdfc; text-align: center; }

.research-empty.compact { padding: 23px 14px; }

.research-empty > span { display: grid; place-items: center; width: 43px; height: 43px; border-radius: 14px; color: var(--green); background: var(--green-soft); font-weight: 950; }

.research-empty h3 { margin: 3px 0 0; color: var(--ink); font-size: 16px; }

.research-empty p { max-width: 540px; margin: 0; font-size: 10px; line-height: 1.55; }

/* 医护与数据管理员研究工作区：职责条、统计、矩阵、结果级卡片与表单。 */
.research-workspace-banner { display: grid; grid-template-columns: minmax(260px, .9fr) minmax(420px, 1.25fr); gap: 16px; align-items: center; margin-bottom: 16px; padding: 18px 20px; border: 1px solid #cfe0dc; border-radius: 17px; background: linear-gradient(135deg, #eef8f5, #fff); box-shadow: var(--small-shadow); }

.research-workspace-banner > div:first-child > span { color: var(--green); font-size: 9px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }

.research-workspace-banner h2 { margin: 5px 0 4px; font-size: 19px; }

.research-workspace-banner p { margin: 0; color: #53686b; font-size: 10px; line-height: 1.6; }

.research-duty-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }

.research-duty-strip article { min-width: 0; padding: 11px; border: 1px solid #dfe8e6; border-radius: 11px; background: #fff; }

.research-duty-strip article.active { color: #1f6358; border-color: #91c6ba; background: var(--green-soft); box-shadow: inset 0 0 0 1px #91c6ba; }

.research-duty-strip b, .research-duty-strip small { display: block; }

.research-duty-strip b { font-size: 11px; }

.research-duty-strip small { margin-top: 4px; color: var(--muted); font-size: 8px; line-height: 1.45; }

.research-stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }

.research-stat-grid article { min-width: 0; padding: 15px 16px; border: 1px solid var(--line); border-top: 3px solid #65a99a; border-radius: 13px; background: #fff; box-shadow: var(--small-shadow); }

.research-stat-grid span, .research-stat-grid b, .research-stat-grid small { display: block; }

.research-stat-grid span { color: var(--muted); font-size: 9px; font-weight: 850; }

.research-stat-grid b { margin: 6px 0 4px; overflow-wrap: anywhere; font-size: 18px; }

.research-stat-grid small { color: #7c8f91; font-size: 8px; line-height: 1.45; }

.research-grid { display: grid; gap: 14px; align-items: start; margin-bottom: 16px; }

.research-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.research-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.research-grid.cards { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }

/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.research-card, .research-table-wrap { min-width: 0; padding: 19px; border: 1px solid var(--line); border-radius: 16px; background: #fff; box-shadow: var(--small-shadow); }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-card > p { color: #52676a; font-size: 10px; line-height: 1.65; }

.research-form { display: grid; gap: 11px; }

.research-form.inset { margin-top: 13px; padding: 13px; border: 1px solid #dce6e4; border-radius: 11px; background: #f7faf9; box-shadow: none; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }

.research-form label { min-width: 0; font-size: 10px; }

.research-form input, .research-form select { min-height: 39px; padding: 7px 9px; border-radius: 9px; font-size: 10px; }

.research-form textarea { min-height: 72px; padding: 9px; border-radius: 9px; font-size: 10px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-action-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 9px; align-items: end; margin-top: 10px; padding-top: 11px; border-top: 1px solid #edf1f0; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-action-row input { min-height: 38px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-workspace-note { margin-bottom: 16px; padding: 14px 16px; border-left: 4px solid var(--green); border-radius: 10px; color: #315c56; background: var(--green-soft); }

.research-workspace-note.danger { color: #8b3038; border-left-color: var(--red); background: var(--red-soft); }

.research-workspace-note b { font-size: 11px; }

.research-workspace-note p { margin: 4px 0 0; font-size: 10px; line-height: 1.55; }

.research-workspace-note .danger-link { margin-top: 10px; }

.research-role-hint { grid-column: 1 / -1; margin: 5px 0 0; padding: 8px 10px; border-radius: 8px; color: #6b5a37; background: var(--amber-soft); font-size: 9px; line-height: 1.5; }

.research-data-list { display: grid; gap: 8px; }

.research-data-list > article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; align-items: start; min-width: 0; padding: 12px; border: 1px solid #e1e9e7; border-radius: 11px; background: #fafcfb; }

.research-data-list article > div { min-width: 0; }

.research-data-list article span, .research-data-list article h3, .research-data-list article p, .research-data-list article small { display: block; }

.research-data-list article > div > span { color: var(--green); font-size: 8px; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }

.research-data-list article h3 { margin: 4px 0; overflow-wrap: anywhere; font-size: 12px; }

.research-data-list article p { margin: 0; overflow-wrap: anywhere; color: #53686b; font-size: 9px; line-height: 1.55; }

.research-data-list article > small { color: var(--muted); font-size: 8px; line-height: 1.45; text-align: right; }

.research-data-list article > form, .research-data-list article > .research-role-hint { grid-column: 1 / -1; }

.research-key-values { display: grid; gap: 0; margin: 0; }

.research-key-values > div { display: grid; grid-template-columns: minmax(95px, .65fr) minmax(0, 1.35fr); gap: 10px; padding: 9px 0; border-top: 1px solid #edf1f0; }

.research-key-values dt { color: var(--muted); font-size: 9px; }

.research-key-values dd { margin: 0; overflow-wrap: anywhere; font-size: 9px; font-weight: 800; line-height: 1.45; }

.research-score-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(90px, 1fr)); gap: 7px; margin-top: 12px; }

.research-score-row span { padding: 10px; border-radius: 9px; background: #eef7f4; }

.research-score-row small, .research-score-row b { display: block; }

.research-score-row small { color: var(--muted); font-size: 8px; }

.research-score-row b { margin-top: 4px; color: #245f56; font-size: 17px; }

/* 访视矩阵在桌面完整展示，在窄屏只横向滚动，不压缩字段和操作。 */
.research-table-wrap { margin-bottom: 16px; overflow-x: auto; }

.research-table { width: 100%; min-width: 860px; border-collapse: collapse; text-align: left; }

.research-table th { padding: 10px 11px; color: var(--muted); border-bottom: 1px solid var(--line); background: #f7faf9; font-size: 8px; white-space: nowrap; }

.research-table td { padding: 11px; border-bottom: 1px solid #edf1f0; font-size: 9px; vertical-align: top; }

.research-table td b, .research-table td small { display: block; }

.research-table td small { margin-top: 3px; color: var(--muted); font-size: 8px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-visit-transition-form { display: grid; grid-template-columns: minmax(112px, 1fr) minmax(112px, 1fr); gap: 6px; min-width: 250px; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-visit-transition-form label { display: grid; gap: 4px; min-width: 0; color: #53686b; font-size: 8px; font-weight: 800; }

.research-visit-transition-form .wide, .research-visit-transition-form button { grid-column: 1 / -1; }

.research-visit-transition-form button { min-height: 36px; padding: 6px 10px; }

.research-visit-transition-form input, .research-visit-transition-form select { min-height: 35px; padding: 6px; border-radius: 8px; font-size: 8px; }

/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.research-date-hint, .research-functional-status-hint, .research-imaging-status-hint, .research-risk-evidence-hint, .research-assessment-combination-hint { display: block; color: #718689; font-size: 8px; font-weight: 600; line-height: 1.45; }

/* StudyTask 卡片把“完成”和“已交代”分开表达，并为窄屏保留清楚的状态操作。 */
.research-task-matrix { display: grid; gap: 13px; margin-bottom: 16px; }

.research-task-matrix > .section-heading { margin: 0; }

.research-visit-task-group { display: grid; gap: 13px; }

.research-visit-task-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 12px; }

.research-visit-task { min-width: 0; padding: 14px; border: 1px solid #dfe8e6; border-radius: 13px; background: #fafcfb; }

.research-task-summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: start; }

.research-task-summary > div { min-width: 0; }

.research-task-summary span, .research-task-summary small { color: var(--muted); font-size: 8px; line-height: 1.45; }

.research-task-summary > div > span { color: var(--green); font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }

.research-task-summary h3 { margin: 5px 0; overflow-wrap: anywhere; font-size: 13px; }

.research-task-summary p { margin: 0 0 5px; overflow-wrap: anywhere; color: #53686b; font-size: 9px; line-height: 1.5; }

.research-visit-task .research-form.inset { margin-top: 12px; }

/* 结果级量表结构化录入：CDR 六领域与多来源叙述始终在同一执行卡片内。 */
.research-cdr-fields { display: grid; gap: 10px; min-width: 0; margin: 4px 0; padding: 13px; border: 1px solid #d9e5e2; border-radius: 11px; background: #fff; }

.research-cdr-fields legend { padding: 0 6px; color: #315d57; font-size: 10px; font-weight: 900; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.research-cdr-fields > label { display: grid; gap: 5px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.research-digest { overflow-wrap: anywhere; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 8px !important; }

/* 纵向结果使用服务端数值做相对条形展示，不在 CSS/前端定义临床阈值。 */
.research-chart-bars { display: grid; gap: 11px; }

.research-chart-bars article { display: grid; grid-template-columns: minmax(100px, .8fr) minmax(90px, 1.2fr) auto; gap: 10px; align-items: center; }

.research-chart-bars span, .research-chart-bars small { display: block; }

.research-chart-bars span { font-size: 10px; font-weight: 850; }

.research-chart-bars small { margin-top: 2px; color: var(--muted); font-size: 8px; }

.research-chart-bars i { height: 8px; overflow: hidden; border-radius: 99px; background: #e4ecea; }

.research-chart-bars i b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #55a694, #2d7468); }

.research-chart-bars strong { min-width: 30px; color: #245f56; text-align: right; }

.research-timeline-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(105px, 1fr)); gap: 8px; }

.research-timeline-grid article { padding: 11px; border-top: 3px solid #81b7ac; border-radius: 9px; background: #f4f9f7; }

.research-timeline-grid span, .research-timeline-grid b, .research-timeline-grid small { display: block; }

.research-timeline-grid span { color: var(--muted); font-size: 8px; }

.research-timeline-grid b { margin: 4px 0; font-size: 10px; }

.research-timeline-grid small { color: #7d8f91; font-size: 8px; }

.research-prediction { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 13px; align-items: center; padding: 13px; border-radius: 11px; background: var(--violet-soft); }

.research-prediction > strong { color: var(--violet); font-size: 28px; }

.research-prediction b { font-size: 11px; }

.research-prediction p { margin: 4px 0 0; color: #645a71; font-size: 9px; line-height: 1.45; }

/* 768px 平板：职责条与主要研究表单双列转单列，侧栏改成可横向滚动导航。 */
@media (max-width: 850px) {

  /* 医生导航与工作区：患者内容占据主阅读区，角色、业务入口和登录入口集中在导航区域；选中态仅表示当前位置，权限仍来自共享后台。 */
  .doctor-sidebar nav { display: flex; align-items: center; min-height: 56px; overflow-x: auto; overflow-y: hidden; }

  .doctor-sidebar nav .nav-section { position: sticky; left: 0; z-index: 1; flex: 0 0 auto; margin: 0 5px 0 8px; padding: 7px 8px; border-radius: 7px; color: #a9c4bf; background: #173b43; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .research-workspace-banner { grid-template-columns: minmax(0, 1fr); }

  .research-grid.three { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .research-grid.three > :last-child { grid-column: 1 / -1; }

  .research-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .research-visit-task-list { grid-template-columns: minmax(0, 1fr); }
}

/* 390px 手机：研究表单、状态与任务全部单列，操作按钮保持至少 44px 可触达。 */
@media (max-width: 650px) {

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .mini-main { padding-right: 14px; padding-left: 14px; }

  .research-family-hero, .research-status-grid, .research-grid.two, .research-grid.three, .research-form-grid { grid-template-columns: minmax(0, 1fr); }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .research-grid.three > :last-child { grid-column: auto; }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .research-family-hero { padding: 18px; }

  /* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
  .research-task-list, .research-education-list, .research-reminder-list, .research-card, .research-table-wrap { padding: 15px; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .research-education-list > article, .research-reminder-list > article { grid-template-columns: minmax(0, 1fr); }

  .research-reminder-pills { justify-content: flex-start; }

  .research-answer-options { grid-template-columns: minmax(0, 1fr); }

  .research-duty-strip { grid-template-columns: minmax(0, 1fr); }

  .research-action-row { grid-template-columns: minmax(0, 1fr); }

  .research-data-list > article { grid-template-columns: minmax(0, 1fr); }

  .research-data-list article > small { text-align: left; }

  .research-key-values > div { grid-template-columns: minmax(0, 1fr); gap: 3px; }

  .research-chart-bars article { grid-template-columns: minmax(0, 1fr) auto; }

  .research-chart-bars i { grid-column: 1 / -1; grid-row: 2; }

  .research-chart-bars strong { grid-column: 2; grid-row: 1; }

  .research-visit-transition-form { grid-template-columns: minmax(0, 1fr); min-width: 220px; }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .research-visit-transition-form .wide, .research-visit-transition-form button { grid-column: auto; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .research-task-summary { grid-template-columns: minmax(0, 1fr); }

  /* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
  .speaker-research-panel { padding: 19px; border-radius: 17px; }

  .speaker-research-panel .research-answer-options { grid-template-columns: minmax(0, 1fr); }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .research-form > button, .family-research-response-form > button, .research-task-card > button { width: 100%; }
}

/* 响应式布局（(max-width: 390px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media (max-width: 390px) {

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .mini-main { padding-right: 12px; padding-left: 12px; }

  .mini-nav { padding-right: 4px; padding-left: 4px; }

  .mini-nav button { padding-right: 0; padding-left: 0; }

  .mini-nav button span { font-size: 17px; }

  .mini-nav button small { font-size: 8px; }

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .research-stat-grid { grid-template-columns: minmax(0, 1fr); }

  .research-workspace-banner { padding: 15px; }

  /* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
  .research-family-hero h3 { font-size: 19px; }
}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-workspace { margin: 20px 0; padding: 20px; background: #f5f9f7; border: 1px solid #d5e4dc; border-radius: 18px; }

.care-workspace h2,.care-workspace h3 { margin: 8px 0 12px; }

.care-workspace p { line-height: 1.7; overflow-wrap: anywhere; }

/* 临床量表记录：区分量表名称、填写方式、日期、版本和医生复核状态；记录详情与编辑动作跟随相应条目，避免误改其他量表。 */
.care-grid,.clinical-scale-groups { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,260px),1fr)); gap: 14px; }

.care-unit,.clinical-scale-groups article { background: #fff; border: 1px solid #dae5df; padding: 18px; border-radius: 14px; margin: 12px 0; min-width: 0; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.care-workspace form,.care-workspace label { display: grid; gap: 8px; }

.care-workspace input,.care-workspace select { box-sizing: border-box; min-width: 0; width: 100%; font: inherit; padding: 12px; border: 1px solid #a3b6ab; border-radius: 8px; }

.care-workspace input[type=checkbox] { width: 20px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* 临床量表记录：区分量表名称、填写方式、日期、版本和医生复核状态；记录详情与编辑动作跟随相应条目，避免误改其他量表。 */
.care-workspace button,.clinical-scale-groups button { font: inherit; min-height: 44px; padding: 10px 14px; border-radius: 8px; border: 1px solid #bdcec4; background: #edf5f0; color: #225b3e; cursor: pointer; }

.care-workspace button:disabled,.clinical-scale-groups button:disabled { color: #69756f; background: #f2f2f2; cursor: not-allowed; }

.clinical-scale-groups article div { display: flex; flex-wrap: wrap; gap: 8px; }

.clinical-scale-groups small { display: block; font-size: 11px; margin-top: 4px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-feedback:not(:empty) { padding: 14px; background: #fff7df; border: 1px solid #dbc57e; border-radius: 10px; position: sticky; top: 10px; z-index: 2; }

.care-signal { border-left: 4px solid #c88638; }

/* 家庭照护页面：把当前老人资料、观察记录、照护提示与家庭操作按任务层级排列；主操作突出，辅助说明和历史内容保留阅读空间。 */
.family-terminal { min-width: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.terminal-tabs { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; margin: 20px 0 0; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.terminal-tabs button { min-width: 0; min-height: 48px; padding: 10px 5px; font: inherit; font-size: 13px; border: 1px solid #bacfc5; border-radius: 10px; background: #fff; color: #34564b; cursor: pointer; }

.terminal-tabs button[aria-current=page] { background: #225b4e; color: #fff; border-color: #225b4e; }

.terminal-tabs button:focus-visible { outline: 3px solid #d5a34a; outline-offset: 2px; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.terminal-workspace { margin-top: 10px; }

.terminal-workspace .page-title h2 { font-size: 20px; }

.terminal-workspace summary { cursor: pointer; min-height: 44px; padding: 10px 0; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.terminal-workspace .form-grid { min-width: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.terminal-workspace .confirm-check { display: flex; align-items: flex-start; }

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.terminal-workspace .confirm-check input { flex-shrink: 0; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-master-controls { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 18px; align-items: center; margin: 16px 0; padding: 18px; border: 1px solid #bdd5cb; border-radius: 14px; background: #fff; }

.care-master-controls h3,.care-history h3 { margin: 3px 0 6px; }

.care-master-controls > div > span,.care-history > div > span { color: #4a7467; font-size: 11px; font-weight: 800; letter-spacing: .04em; }

.care-master-controls p,.care-history p { margin: 0; }

.care-master-controls > small { grid-column: 1 / -1; color: #5b7068; }

.care-master-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }

.care-master-actions .privacy-action { color: #8a3e2c; border-color: #d9a99d; background: #fff4f0; }

/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.care-table-wrap { max-width: 100%; overflow-x: auto; border: 1px solid #cfddd7; border-radius: 14px; background: #fff; -webkit-overflow-scrolling: touch; }

.care-device-table,.care-recording-table { width: 100%; min-width: 680px; border-collapse: collapse; color: #173932; text-align: left; }

.care-device-table caption,.care-recording-table caption { padding: 14px 16px 10px; color: #214e43; font-weight: 850; text-align: left; }

.care-device-table th,.care-device-table td,.care-recording-table th,.care-recording-table td { padding: 13px 15px; border-top: 1px solid #e0e9e5; vertical-align: middle; }

.care-device-table thead th,.care-recording-table thead th { color: #526d65; background: #f3f8f6; font-size: 11px; white-space: nowrap; }

.care-device-table tbody th,.care-recording-table tbody th { font-weight: 700; }

.care-device-table tbody tr:hover,.care-recording-table tbody tr:hover { background: #f8fbfa; }

.care-device-table strong,.care-device-table small,.care-recording-table small { display: block; }

.care-device-table small,.care-recording-table small { margin-top: 4px; color: #6d807a; font-size: 10px; font-weight: 500; }

.care-device-table a { color: #226a59; font-weight: 700; }

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-status { display: inline-block; padding: 4px 8px; border-radius: 99px; color: #6f5d38; background: #f7edd8; font-size: 11px; white-space: nowrap; }

.care-status.ok { color: #236248; background: #e2f3e9; }

.care-unavailable { color: #74817c; font-size: 11px; }

.care-history { margin-top: 20px; }

.care-history > div:first-child { margin-bottom: 10px; }

/* 辅助阅读与展开状态：按当前可见性显示内容，并保留屏幕阅读器需要的信息；隐藏样式只影响展示，不删除已有业务记录。 */
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* 响应式布局（max-width:600px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:600px) {
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-workspace { padding: 12px; }
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.care-workspace button { min-height: 48px; } }

/* 响应式布局（max-width:600px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:600px) {

  /* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
  .care-master-controls { grid-template-columns: minmax(0,1fr); padding: 14px; }

  .care-master-actions { justify-content: stretch; }

  /* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
  .care-master-actions button { flex: 1 1 150px; }

  /* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
  .care-device-table,.care-recording-table { min-width: 620px; }
}

/* 账号与登录：将当前身份、表单字段、登录/退出动作和错误说明放在同一可辨认区域；弹层与底层内容区分，字段保留焦点提示。 */
.account-entry { position: relative; display: flex; justify-content: flex-end; padding: 8px 18px; background: #eff5f1; }

.account-entry button { padding: 10px 14px; min-height: 44px; background: #fff; color: #1d593b; border: 1px solid #b6c9bd; border-radius: 10px; }

.account-entry dialog { width: min(420px,calc(100vw - 32px)); max-width: none; max-height: calc(100dvh - 32px); overflow-y: auto; padding: 24px; border: 1px solid #b6c9bd; border-radius: 16px; color: var(--ink); background: #fff; }

.account-entry form,.account-entry label { display: grid; gap: 10px; }

/* 账号面板按登录状态单独显示，按钮紧凑排列；状态与错误文字留在当前操作附近，窄屏换行不扩宽弹窗。 */
.account-entry [hidden] { display: none !important; }
.account-entry h2,.account-entry p { margin: 0; }
.account-entry dialog h2 { font-size: 23px; line-height: 1.3; }
.account-entry dialog p { color: var(--muted); font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; }
.account-entry label { color: var(--ink); font-weight: 750; }
.account-entry #account-profile { display: grid; gap: 16px; }
.account-entry .account-feedback:empty { display: none; }
.account-entry .account-feedback { padding: 10px 12px; border-radius: 8px; background: #edf5f1; color: #24564d; }
.account-entry .account-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.account-entry .account-actions .primary { background: var(--green-dark); color: #fff; border-color: var(--green-dark); }

.account-entry input { padding: 12px; min-width: 0; font: inherit; }

.account-entry dialog::backdrop { background: #16271c88; }

/* 响应式布局（max-width:600px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:600px) {
/* 账号与登录：将当前身份、表单字段、登录/退出动作和错误说明放在同一可辨认区域；弹层与底层内容区分，字段保留焦点提示。 */
.account-entry { padding: 6px 12px; } }

/* 肌少症工作区：分开展示体能指标、评估来源、照护内容与填写操作；表格和字段遵循同一层级，样式不把无法评估的条目解释为正常。 */
.sarc-workspace { min-width:0; background:#fff; border:1px solid #d5e3df; border-radius:18px; padding:22px; }

.sarc-feedback { background:#e8f4ee; border-left:4px solid #267765; padding:14px; border-radius:6px; line-height:1.6; }

.sarc-tabs { display:flex; flex-wrap:wrap; gap:8px; margin:18px 0; }

.sarc-tabs button { border:1px solid #b9d1c9; background:#f4f8f6; color:#245749; padding:10px 14px; border-radius:8px; min-height:44px; }

.sarc-tabs button[aria-current=page] { background:#245d50; color:white; }

.sarc-body,.sarc-form { min-width:0; }

.sarc-form fieldset { min-width:0; border:1px solid #d9e4e0; border-radius:10px; padding:16px; margin:18px 0; }

.sarc-form legend { padding:0 8px; font-weight:650; }

.sarc-fields { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; }

.sarc-workspace label { display:flex; flex-direction:column; gap:7px; color:#294a45; font-size:15px; min-width:0; }

.sarc-workspace input,.sarc-workspace select { width:100%; min-width:0; box-sizing:border-box; min-height:44px; border:1px solid #b9cec7; border-radius:7px; padding:10px; background:#fff; color:#173b35; }

.sarc-workspace input:disabled { background:#eef0ef; }

.sarc-range { display:grid; grid-template-columns:1fr 1fr; gap:5px; }

.sarc-range input:last-child { grid-column:1/-1; }

.sarc-table-wrap { overflow-x:auto; width:100%; margin:18px 0; }

.sarc-table-wrap table { border-collapse:collapse; width:100%; table-layout:fixed; }

.sarc-table-wrap th,.sarc-table-wrap td { padding:14px; border:1px solid #dbe5e1; text-align:left; vertical-align:top; overflow-wrap:anywhere; }

.sarc-table-wrap th { background:#f0f6f3; }

.sarc-table-wrap th:first-child { width:28%; }

.sarc-table-wrap small { display:block; margin-top:7px; }

.sarc-workspace summary { cursor:pointer; color:#21624f; padding:10px 0; font-weight:600; }

.sarc-review { display:grid; gap:10px; margin:12px 0; }

.sarc-values { display:grid; grid-template-columns:1fr 1fr; gap:8px; font-size:14px; }

.sarc-values dd { margin:0; overflow-wrap:anywhere; }

.sarc-public { padding:24px; border:1px solid #c9dfd6; border-radius:18px; background:#f1f8f3; margin-bottom:20px; }

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.speaker-console .sarc-public { font-size:23px; line-height:1.7; }

/* 响应式布局（max-width:1000px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:1000px) {
/* 肌少症工作区：分开展示体能指标、评估来源、照护内容与填写操作；表格和字段遵循同一层级，样式不把无法评估的条目解释为正常。 */
.sarc-fields { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* 响应式布局（max-width:650px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:650px) {
/* 肌少症工作区：分开展示体能指标、评估来源、照护内容与填写操作；表格和字段遵循同一层级，样式不把无法评估的条目解释为正常。 */
.sarc-fields { grid-template-columns:1fr; }
.sarc-workspace { padding:12px; }
.sarc-table-wrap th,.sarc-table-wrap td { padding:8px; }
.sarc-values { grid-template-columns:1fr; }
.sarc-tabs button { flex:1 1 40%; } }
/* 双专病内容选择：两端共享，保留原生复选框与清晰焦点。 */
.care-focus-selector,.care-focus-cognitive{padding:24px;margin:0 0 24px;border:1px solid #bad8d2;border-radius:20px;background:#f5fbf9;color:#173d42;min-width:0;overflow-wrap:anywhere}

.care-focus-selector fieldset{border:0;padding:0;margin:0;min-width:0}

.care-focus-selector legend{font-size:24px;font-weight:700}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-focus-options{display:flex;flex-wrap:wrap;gap:12px}

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.care-focus-options label{display:flex;align-items:center;gap:12px;flex:1 1 180px;min-height:72px;padding:14px;border:2px solid #aaccc4;border-radius:12px;background:white;cursor:pointer}

.care-focus-options label:has(input:checked){border-color:#17695b;background:#e2f3ed}

.care-focus-options input{width:24px;height:24px;flex-shrink:0;accent-color:#17695b}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-focus-options small{display:block;margin-top:6px}

.care-focus-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.care-focus-actions button{min-height:48px;padding:12px 18px;border:1px solid #8eb9b0;border-radius:12px;white-space:normal;cursor:pointer}

.care-focus-selector [role="status"]{margin-bottom:0;color:#794319;font-weight:600}

.care-focus-selector :focus-visible,.care-focus-cognitive :focus-visible{outline:3px solid #1669b5;outline-offset:3px}

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.speaker-console .care-focus-selector,.speaker-console .care-focus-cognitive{font-size:22px}

.speaker-console .care-focus-actions button{font-size:22px;min-height:56px}

.elder-strength-card[hidden]{display:none!important}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.care-focus-clinical{padding:12px 16px;background:#edf7f4;border-left:4px solid #257365;overflow-wrap:anywhere}

/* 响应式布局（max-width:480px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:480px){
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.care-focus-selector,.care-focus-cognitive{padding:18px}
.care-focus-actions button{flex:1 1 140px}
.care-focus-options label{flex-basis:100%}}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.activity-preflight{border:1px solid #aac6c0;border-radius:12px;padding:14px;min-width:0}

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.activity-preflight label{display:flex;align-items:center;gap:12px;min-height:52px;font-size:20px}

.activity-preflight input{width:24px;height:24px;flex-shrink:0}

/* 安全反馈：求助动作、风险文字和处置提示保持独立层级，避免淹没在一般记录中；高亮只用于辨识入口，不代表已通知或已处置。 */
.activity-safety-note,.activity-feedback{font-size:20px;line-height:1.6;color:#7b401d}

/* 老人操作区：以主要动作和简短反馈为核心排列内容，控制字号、间距和触控边界；长说明使用次级层级，求助入口保留独立辨识度。 */
.elder-secondary{padding:20px;border:1px solid #c7d8d6;border-radius:16px;background:#f7fbfa}

.elder-secondary>summary{min-height:48px;cursor:pointer;font-size:22px;font-weight:bold;display:list-item}

.elder-secondary[open]>summary{margin-bottom:16px}

/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-registry{margin:22px 0;padding:24px;border:1px solid #c6dcd4;border-radius:22px;background:#f8fcfa;color:#183d3b;min-width:0}

.clinical-registry-title{display:flex;justify-content:space-between;gap:18px;margin-bottom:18px}

.clinical-registry-title span{font-size:13px;font-weight:700;letter-spacing:.05em;color:#317260}

.clinical-registry-title h2{margin:5px 0;font-size:26px}

.clinical-registry-title p{margin:0;line-height:1.6;color:#48615a}

.clinical-registry-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}

.clinical-registry-tabs button{padding:10px 14px;min-height:42px;border:1px solid #b9d3c9;border-radius:10px;background:white;color:#24534a;cursor:pointer}

.clinical-registry-tabs button[aria-selected=true],.clinical-registry-tabs button.active{background:#176b55;border-color:#176b55;color:#fff}

.clinical-registry-body,.clinical-registry-history{display:grid;gap:14px}

.clinical-registry-panel[hidden]{display:none}

.clinical-registry .clinical-card,.clinical-directory{padding:20px;border:1px solid #d0e2dc;border-radius:16px;background:#fff;min-width:0}

.clinical-registry .clinical-card h3,.clinical-directory h2{margin:0 0 12px}

.clinical-registry details>summary{cursor:pointer;font-weight:700;color:#176b55;min-height:40px}

.clinical-registry-form,.clinical-registry form,.clinical-directory-filter{display:grid;gap:12px;margin-top:14px}

.clinical-registry-form label,.clinical-registry form label,.clinical-directory-filter label{display:grid;gap:6px;font-weight:600;min-width:0}

.clinical-registry input,.clinical-registry select,.clinical-registry textarea,.clinical-directory input,.clinical-directory select{box-sizing:border-box;max-width:100%;min-height:42px;padding:9px;border:1px solid #9cbdb2;border-radius:9px;background:#fff;color:#183d3b}

.clinical-registry input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:#176b55}

.clinical-registry fieldset{border:1px solid #d0e2dc;border-radius:10px;padding:12px;min-width:0}

.clinical-registry fieldset>label,.clinical-checks label,.clinical-etiologies label{display:flex!important;align-items:center;gap:8px;font-weight:500!important;margin:6px 0}

.clinical-etiologies>div{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin:8px 0}

.clinical-etiologies .etiology-detail{display:none;flex-direction:column;gap:8px;flex:1 1 100%}
.clinical-etiologies .etiology-detail label{display:flex;flex-direction:column;align-items:stretch;gap:5px;margin:0}
.clinical-etiologies .etiology-detail select,.clinical-etiologies .etiology-detail textarea{width:100%;box-sizing:border-box}
.clinical-etiologies .etiology-detail textarea{min-height:72px;resize:vertical}
.clinical-etiologies>div:has(input:checked) .etiology-detail{display:flex}

.clinical-form-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}

.clinical-registry-row{display:flex;justify-content:space-between;align-items:start;gap:16px;padding:13px;border:1px solid #dce9e4;border-radius:11px;background:#f9fcfa;overflow-wrap:anywhere}

.clinical-registry-row p{margin:6px 0}
.clinical-registry-row small{color:#61756e}

.clinical-registry-history .clinical-registry-row small{display:block;margin-top:5px}

.clinical-registry-row form{min-width:170px;margin:0}

.clinical-registry-feedback,.clinical-registry-message{margin:8px 0;color:#7b401d;font-weight:600;line-height:1.5}

.clinical-registry-message{padding:12px;border-left:4px solid #176b55;background:#e8f5ef}

.clinical-registry .classification-missing{margin:10px 0 0;padding:12px 14px;border:1px solid #e6c98f;border-radius:10px;background:#fff8ea;color:#6b4c1f}

.clinical-registry .classification-missing p{margin:0 0 9px;line-height:1.55}

.clinical-registry .classification-missing button{padding:9px 13px;border:1px solid #b98a3c;border-radius:8px;background:#fff;color:#7a5210;cursor:pointer;font-weight:650}

.clinical-registry .archive-data-pager{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:14px}

.clinical-registry .archive-data-pager button{padding:8px 13px;min-height:38px;border:1px solid #b9d3c9;border-radius:9px;background:#fff;color:#24534a;cursor:pointer}

.clinical-registry .archive-data-pager button:disabled{opacity:.45;cursor:not-allowed}

.clinical-registry .archive-data-pager span{color:#526b60;font-size:13px}

.clinical-directory-list{display:grid;gap:8px;margin:14px 0}

.clinical-directory-list article{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px;border-bottom:1px solid #e1e9e5}

.clinical-public-visits{padding:20px;margin:18px 0;border:1px solid #b9d5c8;border-radius:16px;background:#f1f9f4}

.clinical-public-visits h2{margin:0 0 10px}
.clinical-public-visits small{color:#536c60}

.clinical-visit-date { margin: 12px 0; padding: 12px 14px; border-radius: 12px; background: #fff; }

.clinical-visit-date > b { display: block; margin-bottom: 4px; }

.clinical-visit-date p { margin: 4px 0; line-height: 1.55; }

.clinical-public-study{padding:20px;margin:18px 0;border:1px solid #c5d6e8;border-radius:16px;background:#f6f9fd}

.clinical-public-study h2{margin:0 0 8px}
.clinical-public-study article{padding:10px 0;border-top:1px solid #d8e5f0}

.clinical-public-study form{display:grid;gap:9px;max-width:460px;margin-top:10px}
.clinical-public-study label{display:grid;gap:6px}

.clinical-public-study input{min-height:42px;padding:9px;border:1px solid #9eb2c4;border-radius:8px}
.clinical-public-study button{min-height:42px}

.clinical-registry :focus-visible,.clinical-directory :focus-visible{outline:3px solid #1674af;outline-offset:2px}

/* 响应式布局（max-width:720px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:720px){
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-registry{padding:14px}
.clinical-registry-row{display:block}
.clinical-registry-row form{margin-top:12px}
.clinical-form-pair{grid-template-columns:1fr}
.clinical-directory-list article{display:grid}}

/* 量表入口与提示：名称、分值和状态属于同一量表卡片或记录；风险颜色配合文字展示，灰色表示未评估或资料不足，CSS本身不判断评分。 */
.instrument-workbench{display:grid;gap:18px}

.instrument-workbench header p{margin:0;color:#526a61;line-height:1.6}

.instrument-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px}

.instrument-picker button{display:grid;gap:4px;text-align:left;padding:13px;border:1px solid #c8dcd4;border-radius:12px;background:#f7fbf9;color:#1d493e;cursor:pointer;min-height:66px}

.instrument-picker button span{font-size:12px;line-height:1.4}

.instrument-picker button[aria-pressed=true]{border:2px solid #176b55;background:#e9f5ee;box-shadow:0 2px 10px #176b5519}

.instrument-picker button:focus-visible,.instrument-record button:focus-visible{outline:3px solid #1674af;outline-offset:2px}

.instrument-unavailable{padding:12px 14px;border-radius:11px;background:#f4f3ee;color:#655b45;font-size:13px}

.instrument-unavailable p{margin:4px 0 0;line-height:1.5}

.instrument-create{padding:15px 17px;border:1px solid #c6dcd4;border-radius:13px;background:#f8fcfa}

.instrument-create>p{margin:5px 0;color:#526a61}

/* 报告上传：默认文件夹设置与选文件控件，复用 instrument-create 的绿色表单语境。 */
.report-pick-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:4px 0}
.report-pick-row button[data-action]{padding:8px 12px;border:1px solid #bdd4c8;border-radius:8px;background:#fff;color:#176b55;cursor:pointer}
.report-folder-label{font-size:12px;color:#61756e}
.report-file-label{font-size:13px;color:#244f42;font-weight:650;overflow-wrap:anywhere}
.exam-report-subhead{margin:18px 0 4px;color:#1b5042;font-size:15px}

.instrument-component-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}

.instrument-entry-form fieldset small,.instrument-entry-form>small{display:block;color:#61756e;line-height:1.5}

.instrument-list-head{display:flex;justify-content:space-between;align-items:end;gap:18px;border-top:1px solid #dbe8e1;padding-top:18px}

.instrument-list-head h3{margin:0}
.instrument-list-head p{margin:5px 0 0;color:#61756e}

.instrument-filters{display:flex;gap:10px;flex-wrap:wrap}
.instrument-filters label{min-width:120px;font-size:13px}

.instrument-record-list{display:grid;gap:10px}

.instrument-record{padding:14px;border:1px solid #d7e6df;border-radius:12px;background:#fff;min-width:0}

.instrument-record-main{display:flex;justify-content:space-between;align-items:start;gap:12px}
.instrument-record-main b small{font-weight:500;color:#61756e}

.instrument-record-main p{margin:5px 0}
.instrument-record-main small{color:#61756e}

.instrument-status{white-space:nowrap;padding:5px 9px;border-radius:99px;background:#edf2ed;color:#416452;font-size:12px;font-weight:700}

.instrument-status.status-pending_review{background:#fff2dc;color:#805211}
.instrument-status.status-invalid{background:#f3ebeb;color:#855252}

.instrument-record>details{margin-top:8px}
.instrument-record>details>summary{min-height:32px!important;font-weight:600!important}

.instrument-record-detail{display:grid;gap:9px;border-top:1px solid #e2ebe6;padding-top:9px}
.instrument-record-detail p{margin:0;color:#526a61;line-height:1.5;overflow-wrap:anywhere}

.instrument-record-detail>details{border-top:1px solid #e2ebe6;padding-top:7px}

.instrument-record-actions{display:flex;gap:8px;flex-wrap:wrap}
.instrument-record-actions button{padding:8px 11px;border:1px solid #bdd4c8;border-radius:8px;background:#fff;color:#176b55;cursor:pointer}
.clinical-exam-workbench td.instrument-record-actions{gap:6px}
.clinical-exam-workbench td.instrument-record-actions button{padding:5px 9px;font-size:12px;border-radius:7px}
.instrument-record-note{margin:8px 0 0;padding:7px 10px;background:#fdf3f0;border-left:3px solid #c0562f;border-radius:6px;color:#8a3a20}
.review-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:12px}
.review-modal-preview{max-height:40vh;overflow:auto;border:1px solid #e2ebe6;border-radius:9px;padding:10px 12px;margin-bottom:10px;background:#fbfdfc}
.review-modal-edit{border:1px solid #e2ebe6;border-radius:9px;padding:10px 12px;margin-bottom:10px;background:#fbfdfc}
.review-modal-edit label{display:grid;gap:5px;font-size:13px;color:#416c5e;font-weight:600}
.review-modal-edit textarea,.review-modal-edit input{font-size:14px}
.review-edit-fields{display:grid;gap:10px}
.review-analyte-list{display:grid;gap:8px;margin-top:4px}
.review-analyte-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;align-items:end}
.document-correct-form{margin-top:8px;padding:12px;border:1px solid #e2ebe6;border-radius:9px;background:#fbfdfc}
.document-correct-form label{display:grid;gap:5px;margin-bottom:10px;font-size:13px;color:#416c5e;font-weight:600}
.clinical-ocr-result{margin-top:8px;padding:12px;border:1px solid #e2ebe6;border-radius:9px;background:#fbfdfc}
.clinical-ocr-result p{margin:8px 0;white-space:pre-wrap;line-height:1.6}
.clinical-ocr-result small{color:#6b857b}

.instrument-version-list{padding:10px 12px;background:#f4f8f5;border-radius:9px}
.instrument-version-list p{margin:7px 0}

.instrument-drawings{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.instrument-drawing{margin:0;padding:10px;border:1px solid #dbe8e0;border-radius:10px;background:#f8fcfa}
.instrument-drawing figcaption{font-size:12px;color:#416c5e;font-weight:650;margin-bottom:6px}
.instrument-drawing img{display:block;width:100%;max-height:320px;object-fit:contain;background:#fff;border-radius:6px}
.instrument-audio-list{display:grid;gap:10px}
.instrument-audio{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:10px;border:1px solid #dbe8e0;border-radius:10px;background:#f8fcfa}
.instrument-audio span{font-size:13px;color:#244f42;font-weight:650;min-width:120px}
.instrument-audio audio{flex:1;min-width:200px}
.instrument-answer-text{margin:6px 0;font-size:14px;color:#233c33;line-height:1.55;white-space:pre-wrap}
.instrument-answer-text b{color:#416c5e;font-weight:650}
.item-entry-table .instrument-drawing{max-width:280px}
.item-entry-table .instrument-drawing img{max-height:220px}
.item-entry-table .instrument-audio{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:6px}

.instrument-full-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:12px;border-radius:9px;background:#f4f8f5}
.instrument-full-detail>div{min-width:0}
.instrument-full-detail dt{font-size:12px;color:#61756e}
.instrument-full-detail dd{margin:3px 0 0;color:#25493d;overflow-wrap:anywhere}

.instrument-raw-values pre{max-height:280px;overflow:auto;padding:10px;border-radius:8px;background:#f4f8f5;color:#25493d;white-space:pre-wrap;overflow-wrap:anywhere}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.functional-workbench{display:grid;gap:12px}
.functional-workbench>p{margin:0;color:#526a61}
.functional-workbench>details{padding:14px;border:1px solid #c6dcd4;border-radius:12px;background:#f8fcfa}
.functional-entry-fields small{display:block;color:#61756e;line-height:1.5}

/* 临床量表记录：区分量表名称、填写方式、日期、版本和医生复核状态；记录详情与编辑动作跟随相应条目，避免误改其他量表。 */
.clinical-record-track-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 18px}
.clinical-record-track-tabs button{padding:11px 16px;border:1px solid #b9d6c8;border-radius:11px;background:#fff;color:#1c5a49;font-weight:750;cursor:pointer}
.clinical-record-track-tabs button[aria-pressed=true]{background:#176b55;color:#fff}
.clinical-record-track-tabs button:focus-visible{outline:3px solid #1674af;outline-offset:2px}

/* 患者目录与建档：列表信息、搜索条件和新增入口紧密排列；标题行上的主操作保持紧凑，新增表单按字段关系组织，避免空白区域挤走结果。 */
.patient-directory{display:grid;gap:16px}
/* 结构化表格：列标题、数值、来源和条目操作保留稳定对齐，辅助文字区别展示；需要时由局部容器滚动，避免扩宽页面主体。 */
.patient-table-filters{display:flex;align-items:end;gap:10px;flex-wrap:wrap}
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.patient-table-filters label{min-width:180px;flex:1}
.patient-table-filters button,.patient-row-actions button,.patient-page-controls button,.patient-detail-panel button{padding:8px 11px;border:1px solid #bfd7ca;border-radius:8px;background:#f7fbf9;color:#175b49;cursor:pointer}
.patient-table-filters button:disabled,.patient-row-actions button:disabled,.patient-page-controls button:disabled{opacity:.55;cursor:not-allowed}
/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.patient-table-filters .clinical-registry-feedback{flex-basis:100%;margin:0}
/* 患者目录与建档：列表信息、搜索条件和新增入口紧密排列；标题行上的主操作保持紧凑，新增表单按字段关系组织，避免空白区域挤走结果。 */
.patient-entry{padding:12px;border:1px solid #c9dfd3;border-radius:10px;background:#f8fcfa}
.patient-entry>p{color:#526a61}
.patient-directory .table-scroll{overflow-x:auto}
.patient-directory table{width:100%;border-collapse:collapse;min-width:760px}
.patient-directory th,.patient-directory td{padding:11px 10px;border-bottom:1px solid #e0ebe5;text-align:left;vertical-align:top}
.patient-directory th{font-size:12px;color:#5a7066;background:#f4f8f5}
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.patient-row-actions{min-width:220px}
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.patient-row-actions button{margin:0 6px 6px 0}
.patient-row-actions .patient-binding-code{display:inline-block;margin:0 0 6px;padding:5px 8px;border:1px dashed #bfd7ca;border-radius:8px;background:#fbfdfc;font-size:11px;color:#5a7066;white-space:nowrap}
.patient-row-actions .patient-binding-code b{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;color:#175b49;letter-spacing:.5px}
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.patient-page-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;color:#526a61}
.patient-page-controls span{margin-right:auto}
.patient-detail-panel{display:grid;gap:12px}
.patient-detail-panel header{display:flex;justify-content:space-between;align-items:start;gap:10px}
.patient-detail-panel header h2{margin:5px 0}
.patient-detail-panel>p{margin:0;color:#526a61}
.patient-history{padding:10px 12px;border-radius:9px;background:#f4f8f5}
.patient-history p{margin:7px 0}

.patient-management-tags{min-width:0;margin:0;padding:12px 14px;border:1px solid #c9dfd3;border-radius:10px;background:#f7fbf9}
.patient-management-tags legend{padding:0 5px;font-weight:700;color:#204c40}
.patient-management-tags>div{display:flex;gap:10px 22px;flex-wrap:wrap}
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.patient-management-tags label{display:inline-flex;align-items:center;gap:7px;min-width:105px;cursor:pointer}
.patient-management-tags input{width:auto;margin:0;accent-color:#176652}
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.patient-management-tags small{display:block;margin-top:8px;color:#526a61}

/* 量表入口与提示：名称、分值和状态属于同一量表卡片或记录；风险颜色配合文字展示，灰色表示未评估或资料不足，CSS本身不判断评分。 */
.instrument-table-scroll{overflow-x:auto}
.instrument-record-table{width:100%;border-collapse:collapse;min-width:660px}
.instrument-record-table th,.instrument-record-table td{padding:10px 11px;border-bottom:1px solid #e0ebe5;text-align:left;vertical-align:top}
.instrument-record-table th{font-size:12px;color:#5a7066;background:#f4f8f5}
.instrument-record-table td small{display:block;margin-top:2px;color:#61756e}
.instrument-record td{padding-top:3px;background:#fbfdfc}
.instrument-record>td>details>summary{color:#176b55;font-weight:700;cursor:pointer}
.instrument-record>td>details[open]{padding-bottom:12px}
.instrument-record-table .instrument-status{display:inline-block}
.instrument-record-table .instrument-day-head td{padding:12px 11px 8px;background:#eaf3ee;color:#1b5042;font-weight:700}
.instrument-record-table .instrument-day-head td small{display:inline;margin:0 0 0 8px;font-weight:400;color:#61756e}

/* 响应式布局（max-width:720px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:720px){
/* 量表入口与提示：名称、分值和状态属于同一量表卡片或记录；风险颜色配合文字展示，灰色表示未评估或资料不足，CSS本身不判断评分。 */
.instrument-picker{grid-template-columns:repeat(2,minmax(0,1fr))}
.instrument-component-grid,.instrument-full-detail{grid-template-columns:1fr}
.instrument-list-head{display:block}
.instrument-filters{margin-top:10px}
.instrument-filters label{flex:1}
.instrument-record-main{display:block}
.instrument-status{display:inline-block;margin-top:9px}}

/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-document-photo{display:block;max-width:100%;max-height:72vh;object-fit:contain;margin:1rem 0;border:1px solid #c6d7d5;border-radius:12px;background:#fff}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.document-ocr-text{white-space:pre-wrap;overflow-wrap:anywhere;max-height:22rem;overflow:auto;padding:1rem;background:#f3f7f7;border:1px solid #dce8e7;border-radius:10px}

.exam-analyte-row{padding:1rem 0;border-bottom:1px solid #dce8e7}

/* 检验指标行内移除按钮：靠右下对齐，不抢占字段列宽，避免与指标名称、数值等输入控件拥挤。 */
.clinical-remove-row{justify-self:start;align-self:end;margin-top:6px;padding:6px 12px;border:1px solid #d8b4b0;border-radius:8px;background:#fff;color:#9c3f37;font-weight:700;cursor:pointer}

/* 临床资料层级：主档、专病资料、随访和检查内容各自保留阅读区域；标题、字段与辅助说明形成顺序，便于医生核对来源。 */
.clinical-exam-workbench .instrument-record-table td{vertical-align:top}

/* 病历照片与检查页三张 tab：页面上方，点击就地切换，不折叠内容。 */
.exam-tabs{display:flex;gap:8px;border-bottom:1px solid #dbe8e1;margin-bottom:16px;flex-wrap:wrap}
.exam-tabs [role="tab"]{padding:12px 20px;border:1px solid #c6dcd4;border-bottom:0;border-radius:12px 12px 0 0;background:#f4f8f5;color:#4a645a;font-weight:700;cursor:pointer;font-size:17px}
.exam-tabs [role="tab"]:hover{background:#eaf3ee}
.exam-tabs [role="tab"].active,.exam-tabs [role="tab"][aria-selected="true"]{background:#fff;color:#1b5042;border-color:#1b5042}
.exam-tab-panel[hidden]{display:none}
.exam-panel-intro h3{margin:0 0 6px;color:#1b5042;font-size:18px}
.exam-panel-intro p{margin:0 0 12px;color:#61756e}
.exam-entry-block{padding:15px 17px;border:1px solid #c6dcd4;border-radius:13px;background:#f8fcfa;margin:14px 0}
.exam-entry-block h4{margin:0 0 10px;color:#1b5042;font-size:15px}
.exam-panel-list-block{margin:18px 0}
.exam-block-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
.exam-block-head h4{margin:0;color:#1b5042;font-size:15px}

/* 生化指标录入表格：指标名称、原报告数值、单位和参考范围各占一列，末尾一列放移除按钮。 */
.exam-analyte-table-wrap{overflow-x:auto;margin:12px 0}
.exam-analyte-table{width:100%;border-collapse:collapse;background:#fff;font-size:14px}
.exam-analyte-table th{text-align:left;padding:10px 12px;border-bottom:2px solid #c6dcd4;color:#1b5042;font-size:13px;font-weight:750;white-space:nowrap}
.exam-analyte-table td{padding:8px 10px;border-bottom:1px solid #e4efea;vertical-align:middle}
.exam-analyte-table td:first-child{width:24%}
.exam-analyte-table td:last-child{width:72px;text-align:center}
.exam-analyte-table input{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid #c6dcd4;border-radius:8px;font:inherit;color:#23403a;background:#fff}
.exam-analyte-table input:focus{outline:none;border-color:#176b55;box-shadow:0 0 0 3px rgba(23,107,85,.12)}
.exam-analyte-table .clinical-remove-row{margin-top:0}

/* 检测项目列表折叠区：默认收起，展开后显示项目目录与隐藏/恢复、删除操作。 */
.exam-panel-list-details{border:1px solid #d3e4db;border-radius:12px;background:#f8fcfa;padding:2px 14px 12px}
.exam-panel-list-details summary{cursor:pointer;font-weight:700;color:#175b49;padding:10px 0}
.exam-panel-list-details[open] summary{margin-bottom:8px}

/* 检查项目目录操作列按钮：紧凑中性样式，隐藏/恢复与删除共用大小，删除复用危险色。 */
.exam-panel-table .exam-panel-action{display:inline-block;padding:5px 10px;margin:2px 6px 2px 0;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;border:1px solid #bfd7ca;background:#fff;color:#175b49}
.exam-panel-table .exam-panel-action:hover{background:#eef7f2}
.exam-panel-table .exam-panel-action-danger{border-color:#d8b4b0;color:#9c3f37}
.exam-panel-table .exam-panel-action-danger:hover{background:#fbefee}

.patient-clinical-workspace{display:grid;gap:20px}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.patient-context{display:flex;align-items:center;justify-content:space-between;gap:20px}

.patient-context h2{margin:4px 0}
.patient-context p{margin:0;color:#526a61}

.patient-context span,.patient-disease-section>header span,.patient-shared-section>header span{font-size:12px;font-weight:800;letter-spacing:.05em;color:#176b55}

/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.patient-context button,.patient-disease-section>header button{padding:9px 13px;border:1px solid #bfd7ca;border-radius:9px;background:#fff;color:#175b49;font-weight:700;cursor:pointer}

/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.disease-visibility{display:grid;gap:10px}
.disease-visibility h2{margin:0}
.disease-visibility p{margin:0;color:#526a61}

.disease-visibility-options{display:flex;gap:12px;flex-wrap:wrap}
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.disease-visibility-options label{display:flex;align-items:center;gap:9px;padding:13px 16px;border:1px solid #bfd7ca;border-radius:11px;background:#f7fbf9;cursor:pointer;min-width:200px}
.disease-visibility-options input{width:18px;height:18px;accent-color:#176b55}
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.disease-visibility-options span{font-weight:800}
.disease-visibility-options small{color:#63786d}

.patient-disease-section,.patient-shared-section{display:grid;gap:12px;padding:18px;border:1px solid #d3e4db;border-radius:16px;background:#f8fbf9}

.patient-disease-section>header,.patient-shared-section>header{display:flex;align-items:center;justify-content:space-between;gap:16px}
.patient-disease-section>header h2,.patient-shared-section>header h2{margin:3px 0}
.patient-disease-section>header p,.patient-shared-section>header p{margin:0;color:#526a61;line-height:1.5}

.patient-disease-cognition{border-top:4px solid #26896d}
.patient-disease-sarcopenia{border-top:4px solid #547b9c}
.patient-shared-section{border-top:4px solid #b69a5d}

.patient-shared-exams{padding:15px 18px;border:1px solid #d3e4db;border-radius:13px;background:#fff}
.patient-shared-exams>summary{cursor:pointer;font-size:17px;font-weight:800;color:#1c5245}
.patient-shared-exams[open]>summary{margin-bottom:15px}

/* 量表入口与提示：名称、分值和状态属于同一量表卡片或记录；风险颜色配合文字展示，灰色表示未评估或资料不足，CSS本身不判断评分。 */
.instrument-catalog-table{min-width:650px}
.instrument-catalog-table td{vertical-align:middle}
.instrument-catalog-table button{padding:8px 12px;border:1px solid #bfd7ca;border-radius:8px;background:#fff;color:#176b55;font-weight:750;cursor:pointer}
.instrument-catalog-table button[aria-current=true]{background:#e4f3eb;border-color:#176b55}
.instrument-catalog-table button:focus-visible,.patient-context button:focus-visible,.patient-disease-section button:focus-visible{outline:3px solid #1674af;outline-offset:2px}

.instrument-saved,.functional-saved{border-top:1px solid #dbe8e1;padding-top:10px}
.instrument-saved>summary,.functional-saved>summary{cursor:pointer;color:#176b55;font-weight:750}
.instrument-saved[open]>summary,.functional-saved[open]>summary{margin-bottom:12px}

/* 响应式布局（max-width:720px)）：覆盖此条件下的列数、导航、字段宽度和阅读顺序，权限与数据筛选规则不随视口改变。 */
@media(max-width:720px){
/* 公共页面基础：为正文、标题、品牌、内容容器和辅助说明建立统一外观；尺寸、颜色和留白用于可读性，后续组件规则补充具体布局。 */
.patient-context,.patient-disease-section>header,.patient-shared-section>header{display:grid}
.disease-visibility-options{display:grid;grid-template-columns:1fr}
.patient-disease-section,.patient-shared-section{padding:12px}
/* 公共表单与按钮：统一字段边界、文字层级、操作间距和可用状态；选择、焦点、禁用和错误态各有外观，业务层仍负责提交与权限检查。 */
.patient-context button,.patient-disease-section>header button{justify-self:start}}
/* 已关联多位老人的家属可在录入前切换患者；选择器保留在正常页面流中，避免覆盖主操作，真实关联范围由后台提供。 */
.family-patient-picker { display: grid; gap: 6px; margin: 0 18px 12px; color: #365c5a; font-size: 14px; font-weight: 700; }

.family-patient-picker select { width: 100%; min-width: 0; min-height: 44px; background: #f5faf8; }

/* 家属端「客厅知伴看护终端 · 实时画面」面板：视频容器、占位与状态行，风格沿用 care-* 组件。 */
.care-live-panel .live-view{position:relative;width:100%;aspect-ratio:16/9;background:#0e1f1d;border-radius:10px;overflow:hidden;margin:8px 0}
.care-live-panel .live-view video{width:100%;height:100%;object-fit:contain;background:#000;display:block}
.care-live-panel .live-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#bfe3d6;background:#12322d;padding:16px;text-align:center}
.care-live-panel .live-status{margin:4px 0 8px;color:#365c5a;font-size:14px}

/* ===== 家属端重构首页与用药问题（知伴 2.0） ===== */
.family-home-top { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 15px; margin: 0 0 16px; }
.family-home-top > div > span { color: var(--green); font-size: 12px; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
.family-home-top h2 { margin: 4px 0 0; font-size: 26px; }
.family-home-top p { margin: 6px 0 0; color: var(--muted); line-height: 1.55; }

.home-camera-panel, .home-voice-panel, .home-doctor-replies, .home-followup-panel, .daily-care-section { margin-bottom: 16px; padding: 19px; border: 1px solid var(--line); border-radius: 17px; background: #fff; box-shadow: var(--small-shadow); }
.home-camera-panel .live-view { position: relative; width: 100%; aspect-ratio: 16/9; background: #0e1f1d; border-radius: 10px; overflow: hidden; margin: 8px 0; }
.home-camera-panel .live-view video { width: 100%; height: 100%; object-fit: contain; background: #000; display: block; }
.home-camera-panel .live-placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #bfe3d6; background: #12322d; padding: 16px; text-align: center; }
.home-camera-panel .live-status { margin: 4px 0 8px; color: #365c5a; font-size: 14px; }
.home-camera-panel .care-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.home-camera-panel > small { display: block; margin-top: 8px; color: var(--muted); font-size: 11px; }

/* 家属首页红色摔倒告警：位于「老人本人自述」上方，醒目且家属可手动清除。 */
.home-fall-alert { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 16px; padding: 14px 16px; border: 1px solid #f4b8b8; border-left: 5px solid #d53f3f; border-radius: 14px; background: #fdf0f0; color: #a22626; box-shadow: var(--small-shadow); }
.home-fall-alert .fall-alert-icon { font-size: 22px; line-height: 1; flex: none; }
.home-fall-alert .fall-alert-body { flex: 1 1 auto; min-width: 0; }
.home-fall-alert .fall-alert-body b { display: block; font-size: 15px; font-weight: 900; color: #c22b2b; }
.home-fall-alert .fall-alert-body p { margin: 5px 0 3px; font-size: 13px; line-height: 1.5; color: #a22626; }
.home-fall-alert .fall-alert-body small { color: #c96b6b; font-size: 11px; }
.home-fall-alert .fall-alert-dismiss { flex: none; padding: 6px 12px; border: 1px solid #d53f3f; border-radius: 9px; background: #fff; color: #c22b2b; font-size: 13px; font-weight: 700; cursor: pointer; }
.home-fall-alert .fall-alert-dismiss:hover { background: #c22b2b; color: #fff; }

.home-voice-list, .home-reply-list { display: grid; gap: 10px; }
.home-voice-item, .home-doctor-reply, .medication-question-item { border: 1px solid var(--line); border-radius: 13px; padding: 13px; background: #fbfdfd; }
.home-voice-item b { display: block; font-size: 15px; }
.home-voice-item small { display: block; color: var(--muted); font-size: 10px; margin-top: 2px; }
.home-voice-item p { margin: 6px 0 0; color: #486063; font-size: 13px; line-height: 1.5; }
.home-doctor-reply { position: relative; padding-top: 22px; }
.home-doctor-reply .reply-badge { position: absolute; top: -1px; left: -1px; padding: 4px 10px; border-radius: 13px 0 13px 0; background: var(--green-soft); color: #216a5d; font-size: 10px; font-weight: 900; }
.home-doctor-reply h3 { margin: 0 0 6px; font-size: 15px; }
.home-doctor-reply p { margin: 0 0 6px; color: #486063; font-size: 13px; line-height: 1.55; }
.home-doctor-reply small { color: var(--muted); font-size: 10px; }

.home-reply-line { margin-top: 9px; padding: 9px 11px; border-left: 3px solid var(--green); background: var(--green-soft); border-radius: 0 9px 9px 0; }
.home-reply-line strong { display: block; color: #216a5d; font-size: 11px; }
.home-reply-line span { color: #173d42; font-size: 13px; line-height: 1.5; }
.home-reply-line small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }

/* 家属端首页可折叠卡片：老人自述、医生回复与随访通知共用展开/收起交互。 */
.home-collapsible > summary { cursor: pointer; list-style: none; margin-bottom: 0; }
.home-collapsible > summary::-webkit-details-marker { display: none; }
.home-collapsible[open] > summary { margin-bottom: 14px; }
.home-collapse-chevron { color: var(--muted); font-size: 15px; line-height: 1; transition: transform .2s; }
.home-collapsible[open] > summary .home-collapse-chevron { transform: rotate(180deg); }
.home-summary-actions { display: flex; align-items: center; gap: 10px; }

/* 家属端首页随访通知。 */
.home-followup-list { display: grid; gap: 10px; }
.home-followup-item { border: 1px solid var(--line); border-radius: 13px; padding: 13px; background: #fbfdfd; }
.home-followup-item b { display: block; color: #216a5d; font-size: 15px; }
.home-followup-item p { margin: 5px 0 0; color: #486063; font-size: 13px; line-height: 1.5; }
.home-followup-item small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }
.home-followup-note { display: block; margin-top: 9px; color: var(--muted); font-size: 10px; }

.daily-care-section { overflow: hidden; }
.page-title.daily-divider { margin-top: 8px; }
.page-title.daily-divider h3 { font-size: 21px; margin: 6px 0 0; }

.medication-question-item { display: grid; gap: 6px; }
.medication-question-item b { font-size: 15px; }
.medication-question-item p { margin: 0; color: #486063; font-size: 13px; line-height: 1.55; }
.medication-question-item small { color: var(--muted); font-size: 10px; }
.medication-question-item .status-pill { justify-self: start; margin-top: 6px; }

/* 医生端登录门禁：整页登录屏复用 launch 卡片；登录期间隐藏顶栏账号入口，避免出现两个登录入口。 */
.doctor-login { text-align: center; }
.doctor-login .launch-card { text-align: left; }
.doctor-login form { display: grid; gap: 12px; margin: 18px 0 8px; }
.doctor-login label { display: grid; gap: 6px; color: var(--ink); font-weight: 750; font-size: 14px; }
.doctor-login input { padding: 12px; border: 1px solid #b6c9bd; border-radius: 10px; font: inherit; }
.doctor-login button.primary { min-height: 48px; border: 1px solid var(--green-dark); border-radius: 12px; color: #fff; background: var(--green-dark); font-weight: 850; }
.doctor-login button.primary:disabled { cursor: wait; opacity: .55; }
.doctor-login-feedback:empty { display: none; }
.doctor-login-feedback { padding: 10px 12px; border-radius: 8px; background: #edf5f1; color: #24564d; font-size: 13px; }
.doctor-login-feedback.error { background: var(--red-soft); color: #9f323c; }
.doctor-login-back { margin-top: 6px; background: none; border: none; color: var(--muted); text-decoration: underline; cursor: pointer; font-size: 13px; }
body.login-screen .account-entry { display: none; }
