/* ============================================================
   MedBridge — clinician patient view (extends styles.css)
   Calm clinical, summary-first. Teal accent, red only for critical.
   ============================================================ */

.pt-app {
  height: 100%;
  display: grid;
  grid-template-columns: 300px 1fr;
  background: var(--bg);
  overflow: hidden;
}

/* ---------- left sidebar ---------- */
.pt-side {
  background: var(--surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: auto;
}
.pt-brand {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 18px 14px;
  border-bottom: 1px solid var(--hairline);
}
.pt-brand .mark {
  width: 30px; height: 30px; border-radius: 8px;
  background: linear-gradient(150deg, var(--primary), #15A0A8);
  display: grid; place-items: center; color: #fff; flex-shrink: 0;
  box-shadow: 0 2px 7px rgba(14,124,134,.45);
}
.pt-brand b { font-size: 14.5px; font-weight: 700; letter-spacing: -.2px; }
.pt-brand span { font-size: 11px; color: var(--text-3); display: block; margin-top: -1px; }

.pt-sec { padding: 16px 14px 6px; }
.pt-sec-label {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--text-3); padding: 0 8px 8px;
}
.pt-nav { display: flex; flex-direction: column; gap: 1px; }
.pt-nav-item {
  display: flex; align-items: center; gap: 11px;
  height: 38px; padding: 0 11px; border-radius: 8px;
  font-size: 13.5px; font-weight: 500; color: var(--text-2);
  text-align: left; transition: background .12s, color .12s;
}
.pt-nav-item:hover { background: var(--surface-2); color: var(--text); }
.pt-nav-item.active { background: var(--primary-light); color: var(--primary-darker); font-weight: 600; }
.pt-nav-item .nv-ic { color: var(--text-3); display: grid; place-items: center; width: 18px; }
.pt-nav-item.active .nv-ic { color: var(--primary); }
.pt-nav-item .nv-ct {
  margin-left: auto; font-size: 11px; font-weight: 700; color: var(--text-3);
  background: var(--surface-3); border-radius: 9px; min-width: 18px; height: 18px;
  display: grid; place-items: center; padding: 0 5px;
}
.pt-nav-item.active .nv-ct { background: #fff; color: var(--primary-dark); }
.pt-nav-item .nv-dot { margin-left: auto; width: 7px; height: 7px; border-radius: 50%; background: var(--mb-crit, #C8392B); }

/* data sources */
.pt-source {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 8px 9px; border-radius: 8px; transition: background .12s;
}
.pt-source:hover { background: var(--surface-2); }
.pt-source .src-dot { width: 9px; height: 9px; border-radius: 50%; margin-top: 5px; flex-shrink: 0; }
.pt-source .src-name { font-size: 12.5px; font-weight: 600; color: var(--text); }
.pt-source .src-meta { font-size: 11px; color: var(--text-3); margin-top: 1px; }
.pt-source .src-live {
  margin-left: auto; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--mb-good, #1E8A5C); display: flex; align-items: center; gap: 4px; margin-top: 3px;
}
.pt-source .src-live i { width: 6px; height: 6px; border-radius: 50%; background: var(--mb-good, #1E8A5C); }

/* ask AI */
.pt-ask { padding: 8px; }
.pt-ask textarea {
  width: 100%; resize: none; min-height: 60px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--surface-2);
  padding: 10px 12px; font-size: 12.5px; line-height: 1.5; outline: none;
  transition: border .12s, box-shadow .12s, background .12s;
}
.pt-ask textarea:focus { border-color: var(--primary); background: #fff; box-shadow: 0 0 0 3px var(--primary-light); }
.pt-ask-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.pt-ask-hint { font-size: 10.5px; color: var(--text-3); }

/* ---------- main column ---------- */
.pt-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; }

.pt-head {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  padding: 16px 26px;
  display: flex; align-items: flex-start; gap: 18px;
  flex-shrink: 0;
}
.pt-head h1 { font-size: 21px; font-weight: 700; letter-spacing: -.3px; }
.pt-head .sub { font-size: 12.5px; color: var(--text-3); margin-top: 4px; line-height: 1.5; max-width: 540px; }
.pt-head .sub b { color: var(--text-2); font-weight: 600; }
.pt-srcs { margin-left: auto; display: flex; flex-wrap: wrap; gap: 7px; justify-content: flex-end; max-width: 240px; }
.src-tag {
  display: inline-flex; align-items: center; gap: 6px;
  height: 24px; padding: 0 10px; border-radius: 20px;
  font-size: 11.5px; font-weight: 600;
}
.src-tag i { width: 7px; height: 7px; border-radius: 50%; }

.pt-body { flex: 1; overflow: auto; min-height: 0; }
.pt-wrap { max-width: 760px; margin: 0 auto; padding: 22px 26px 60px; }

/* ---------- AI summary panel ---------- */
.sum-panel {
  border: 1px solid var(--primary-mid);
  border-radius: var(--r-xl);
  background: linear-gradient(180deg, var(--primary-light), #fbfdfd 55%);
  overflow: hidden;
  box-shadow: var(--sh-sm);
}
.sum-head {
  display: flex; align-items: center; gap: 11px;
  padding: 14px 20px; border-bottom: 1px solid var(--primary-mid);
}
.sum-spark {
  width: 30px; height: 30px; border-radius: 9px; flex-shrink: 0;
  background: linear-gradient(140deg, var(--primary), var(--primary-dark));
  display: grid; place-items: center; color: #fff;
  box-shadow: 0 2px 8px color-mix(in srgb, var(--primary) 38%, transparent);
}
.sum-head .sum-title {
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
  color: var(--primary-darker);
}
.sum-head .sum-meta { font-size: 11px; color: var(--text-3); margin-top: 1px; }
.sum-body { padding: 18px 20px 16px; }
.sum-lede { font-size: 14.5px; line-height: 1.6; color: var(--text); margin-bottom: 16px; }

/* grouped bullet sections */
.sum-group { margin-bottom: 14px; }
.sum-group:last-of-type { margin-bottom: 0; }
.sum-glabel {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--text-3); margin-bottom: 7px; display: flex; align-items: center; gap: 7px;
}
.sum-glabel .gl-tab { width: 3px; height: 13px; border-radius: 2px; background: var(--primary); }
.sum-glabel.tone-warn .gl-tab { background: var(--mb-warn, #C77700); }
.sum-glabel.tone-warn { color: var(--mb-warn, #C77700); }
.sum-glabel.tone-crit .gl-tab { background: var(--mb-crit, #C8392B); }
.sum-glabel.tone-crit { color: var(--mb-crit, #C8392B); }
.sum-glabel.tone-info .gl-tab { background: var(--info, #2563EB); }

.sum-item {
  display: flex; gap: 10px; align-items: flex-start;
  font-size: 13.5px; line-height: 1.55; color: var(--text);
  padding: 2px 0 7px;
}
.sum-item .si-mark { color: var(--primary); flex-shrink: 0; margin-top: 6px; }
.sum-item.crit .si-mark { color: var(--mb-crit, #C8392B); }
.sum-item .si-src {
  font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 5px;
  white-space: nowrap; align-self: flex-start; margin-top: 2px;
}

/* prose variant */
.sum-prose p { font-size: 14px; line-height: 1.7; margin-bottom: 11px; color: var(--text); }
.sum-prose p:last-child { margin-bottom: 0; }
.sum-prose .crit-line { color: var(--mb-crit, #C8392B); }
.sum-prose .crit-line b { color: var(--mb-crit, #C8392B); }

/* follow-up chips */
.sum-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.sum-chip {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 8px 13px; border-radius: 9px;
  background: var(--surface); border: 1px solid var(--primary-mid);
  font-size: 12.5px; font-weight: 600; color: var(--primary-dark);
  transition: background .12s, border-color .12s, transform .08s;
}
.sum-chip:hover { background: var(--primary-light); }
.sum-chip:active { transform: translateY(1px); }
.sum-chip .ch-ar { opacity: .6; }

/* action bar (accept / edit / flag / source) */
.sum-actions {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 12px 20px; border-top: 1px solid var(--primary-mid);
  background: color-mix(in srgb, var(--primary-light) 55%, #fff);
}
.sum-act {
  display: inline-flex; align-items: center; gap: 6px;
  height: 32px; padding: 0 13px; border-radius: 8px;
  font-size: 12.5px; font-weight: 600; transition: background .12s, border-color .12s;
}
.sum-act.primary { background: var(--primary); color: #fff; box-shadow: var(--sh-sm); }
.sum-act.primary:hover { background: var(--primary-dark); }
.sum-act.ghost { color: var(--text-2); border: 1px solid var(--border); background: var(--surface); }
.sum-act.ghost:hover { background: var(--surface-2); border-color: var(--border-strong); }
.sum-act.flag { color: var(--mb-warn, #C77700); border: 1px solid color-mix(in srgb, var(--mb-warn, #C77700) 35%, var(--border)); background: var(--surface); }
.sum-act.flag:hover { background: var(--mb-warn-bg, #FBF1E0); }
.sum-act.accepted { background: var(--mb-good-bg, #E6F4EC); color: var(--mb-good, #1E8A5C); border: 1px solid color-mix(in srgb, var(--mb-good, #1E8A5C) 30%, transparent); }
.sum-disclaim { margin-left: auto; font-size: 11px; color: var(--text-3); display: flex; align-items: center; gap: 6px; }

/* ---------- active alert banner ---------- */
.alert-bar {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 14px 17px; border-radius: var(--r-lg);
  background: var(--mb-crit-bg, #FBEAE8); border: 1px solid #F0C9C4;
  margin-top: 16px;
}
.alert-bar .ab-ic { color: var(--mb-crit, #C8392B); flex-shrink: 0; margin-top: 1px; }
.alert-bar .ab-txt { font-size: 13px; line-height: 1.55; color: #7A2A22; }
.alert-bar .ab-txt b { color: var(--mb-crit, #C8392B); }
.alert-bar .ab-act {
  margin-top: 9px; display: inline-flex; align-items: center; gap: 6px;
  height: 30px; padding: 0 12px; border-radius: 8px; font-size: 12px; font-weight: 600;
  background: var(--mb-crit, #C8392B); color: #fff;
}

/* ---------- snapshot cards (2x2) ---------- */
.snap-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 16px; }
.snap {
  border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--surface);
  padding: 14px 16px; box-shadow: var(--sh-sm); cursor: pointer;
  transition: box-shadow .12s, border-color .12s, transform .08s;
}
.snap:hover { box-shadow: var(--sh); border-color: var(--border-strong); }
.snap:active { transform: translateY(1px); }
.snap .sn-lab {
  font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-3); display: flex; align-items: center; gap: 7px;
}
.snap .sn-val { font-size: 15px; font-weight: 700; margin-top: 6px; letter-spacing: -.2px; line-height: 1.3; }
.snap .sn-sub { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }

/* ---------- section header (recent history etc) ---------- */
.pt-shead {
  display: flex; align-items: center; gap: 12px;
  margin: 26px 0 14px;
}
.pt-shead h2 {
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
  color: var(--text-3); white-space: nowrap;
}
.pt-shead .line { flex: 1; height: 1px; background: var(--hairline); }

/* ---------- timeline ---------- */
.tl { position: relative; padding-left: 4px; }
.tl-item { display: grid; grid-template-columns: 22px 1fr; gap: 14px; position: relative; }
.tl-rail { display: flex; flex-direction: column; align-items: center; }
.tl-node {
  width: 13px; height: 13px; border-radius: 50%; margin-top: 5px; flex-shrink: 0;
  border: 2.5px solid var(--surface); box-shadow: 0 0 0 1.5px var(--border-strong);
  background: var(--text-3);
}
.tl-node.critical { background: var(--mb-crit, #C8392B); box-shadow: 0 0 0 1.5px var(--mb-crit, #C8392B); }
.tl-node.warn { background: var(--mb-warn, #C77700); box-shadow: 0 0 0 1.5px var(--mb-warn, #C77700); }
.tl-node.active { background: var(--primary); box-shadow: 0 0 0 1.5px var(--primary); }
.tl-line { width: 2px; flex: 1; background: var(--hairline); margin: 3px 0 0; min-height: 14px; }
.tl-card { padding: 0 0 20px; }
.tl-row1 { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.tl-date { font-size: 11.5px; font-weight: 700; color: var(--text-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tl-title { font-size: 14px; font-weight: 700; }
.tl-detail { font-size: 12.5px; color: var(--text-2); line-height: 1.55; margin-top: 4px; max-width: 600px; }
.tl-src { display: inline-flex; align-items: center; gap: 6px; margin-top: 7px; font-size: 11px; font-weight: 600; color: var(--text-3); }
.tl-src i { width: 7px; height: 7px; border-radius: 50%; }

/* ---------- list rows (meds / imaging / labs / allergies) ---------- */
.rec {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--r-lg);
  background: var(--surface); box-shadow: var(--sh-sm); margin-bottom: 10px;
}
.rec.crit { border-color: #F0C9C4; background: linear-gradient(180deg, #FEF7F6, #fff 60%); }
.rec .rec-ic {
  width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0;
  display: grid; place-items: center; background: var(--primary-light); color: var(--primary);
}
.rec.crit .rec-ic { background: var(--mb-crit-bg, #FBEAE8); color: var(--mb-crit, #C8392B); }
.rec .rec-main { flex: 1; min-width: 0; }
.rec .rec-name { font-size: 14px; font-weight: 700; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.rec .rec-sub { font-size: 12.5px; color: var(--text-2); margin-top: 3px; line-height: 1.5; }
.rec .rec-note { font-size: 11.5px; color: var(--text-3); margin-top: 5px; }
.rec .rec-right { text-align: right; flex-shrink: 0; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.rec .rec-val { font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.3px; }
.rec .rec-val.hi { color: var(--mb-crit, #C8392B); }
.rec .rec-date { font-size: 11px; color: var(--text-3); }

.src-pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 6px;
}
.src-pill i { width: 6px; height: 6px; border-radius: 50%; }

.flag-pill { font-size: 10px; font-weight: 800; padding: 1px 6px; border-radius: 5px; letter-spacing: .03em; }
.flag-pill.H { background: var(--mb-crit-bg, #FBEAE8); color: var(--mb-crit, #C8392B); }
.flag-pill.HH { background: var(--mb-crit, #C8392B); color: #fff; }

.pt-lead {
  font-size: 13px; color: var(--text-2); line-height: 1.6; margin-bottom: 16px; max-width: 600px;
}

/* density */
.density-compact .pt-wrap { padding-top: 16px; }
.density-compact .sum-item { font-size: 13px; }

/* ---------- clinic context bar (who/where am I) ---------- */
.pt-clinic {
  display: flex; align-items: center; gap: 10px; width: calc(100% - 24px);
  padding: 11px 12px 11px 14px; margin: 10px 12px 0; text-align: left;
  border-radius: 10px; background: var(--primary-light); border: 1px solid var(--primary-mid);
  transition: box-shadow .12s, border-color .12s;
}
.pt-clinic:hover { box-shadow: var(--sh-sm); border-color: var(--primary); }
.pt-clinic .pc-ic { width: 30px; height: 30px; border-radius: 8px; background: #fff; display: grid; place-items: center; color: var(--primary-dark); flex-shrink: 0; }
.pt-clinic .pc-fac { font-size: 12.5px; font-weight: 700; color: var(--primary-darker); line-height: 1.25; }
.pt-clinic .pc-sub { font-size: 11px; color: var(--primary-dark); opacity: .85; margin-top: 1px; }
.pt-clinic .pc-go { color: var(--primary); flex-shrink: 0; opacity: .7; }
.pt-clinic:hover .pc-go { opacity: 1; }

/* ---------- patient lookup launcher ---------- */
.pt-lookup-btn {
  display: flex; align-items: center; gap: 10px;
  margin: 10px 12px 2px; padding: 0 12px; height: 40px;
  border-radius: 10px; border: 1px solid var(--border); background: var(--surface-2);
  font-size: 13px; color: var(--text-3); transition: border-color .12s, box-shadow .12s, background .12s;
}
.pt-lookup-btn:hover { border-color: var(--primary-mid); background: #fff; box-shadow: var(--sh-sm); }
.pt-lookup-btn .grow { flex: 1; text-align: left; }
.pt-lookup-btn kbd {
  font-family: var(--mono); font-size: 10.5px; font-weight: 600; color: var(--text-3);
  background: var(--surface-3); border: 1px solid var(--border); border-radius: 5px; padding: 1px 6px;
}

/* current patient mini card */
.pt-curpat { display: flex; align-items: center; gap: 11px; margin: 8px 12px 2px; padding: 10px 11px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--hairline); }
.pt-curpat .cp-av { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 12.5px; font-weight: 700; flex-shrink: 0; }
.pt-curpat .cp-name { font-size: 13px; font-weight: 700; display: flex; align-items: center; gap: 7px; }
.pt-curpat .cp-meta { font-size: 11px; color: var(--text-3); margin-top: 1px; }

/* per-patient source state */
.pt-source.norec { opacity: .58; }
.pt-source.norec .src-name { color: var(--text-3); }
.pt-source .src-state { margin-left: auto; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; margin-top: 3px; }
.pt-source .src-state.no { color: var(--text-3); }

/* ---------- header acuity + route ---------- */
.pt-acuity { display: inline-flex; align-items: center; gap: 7px; font-size: 11.5px; font-weight: 700; padding: 3px 10px; border-radius: 20px; }
.pt-acuity.critical { background: var(--mb-crit-bg, #FBEAE8); color: var(--mb-crit, #C8392B); }
.pt-acuity.watch { background: var(--mb-warn-bg, #FBF1E0); color: var(--mb-warn, #C77700); }
.pt-acuity.stable { background: var(--mb-good-bg, #E6F4EC); color: var(--mb-good, #1E8A5C); }
.pt-route-line { display: flex; align-items: center; gap: 8px; margin-top: 9px; font-size: 12px; color: var(--text-2); flex-wrap: wrap; }
.pt-route-line .seg-fac { font-weight: 600; }
.pt-route-line .arrow { color: var(--text-3); }

/* ---------- empty section ---------- */
.pt-empty { text-align: center; padding: 40px 20px; color: var(--text-3); }
.pt-empty .pe-ic { width: 54px; height: 54px; border-radius: 14px; background: var(--surface-3); display: grid; place-items: center; margin: 0 auto 14px; color: var(--text-3); }
.pt-empty .pe-title { font-size: 15px; font-weight: 700; color: var(--text-2); }
.pt-empty .pe-note { font-size: 12.5px; margin-top: 5px; max-width: 380px; margin-left: auto; margin-right: auto; line-height: 1.55; }

/* ---------- patient lookup modal ---------- */
.lk-overlay {
  position: fixed; inset: 0; z-index: 3000;
  background: rgba(14,42,51,.46);
  display: flex; align-items: flex-start; justify-content: center; padding: 64px 20px;
}
.lk-modal {
  width: 100%; max-width: 640px; background: var(--surface); border-radius: var(--r-xl);
  box-shadow: var(--sh-lg); overflow: hidden; display: flex; flex-direction: column; max-height: 80vh;
  opacity: 1; animation: lkIn .16s ease;
}
@keyframes lkIn { from { transform: translateY(-8px); } to { transform: none; } }
.lk-search { display: flex; align-items: center; gap: 11px; padding: 16px 18px; border-bottom: 1px solid var(--border); }
.lk-search .ls-ic { color: var(--text-3); flex-shrink: 0; }
.lk-search input { flex: 1; border: none; outline: none; font-size: 16px; background: transparent; }
.lk-search .esc { font-family: var(--mono); font-size: 10.5px; font-weight: 600; color: var(--text-3); background: var(--surface-3); border: 1px solid var(--border); border-radius: 5px; padding: 2px 7px; }
.lk-scope { padding: 11px 18px 7px; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-3); }
.lk-list { overflow: auto; padding: 0 8px 10px; }
.lk-row {
  display: flex; align-items: center; gap: 13px; width: 100%;
  padding: 11px 12px; border-radius: 10px; text-align: left; transition: background .1s;
}
.lk-row:hover, .lk-row.sel { background: var(--surface-2); }
.lk-row .lr-av { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; color: #fff; font-size: 13px; font-weight: 700; flex-shrink: 0; }
.lk-row .lr-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.lk-row .lr-name { font-size: 14px; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.lk-row .lr-id { font-size: 11.5px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.lk-row .lr-chief { font-size: 12px; color: var(--text-2); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lk-row .lr-right { flex-shrink: 0; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.lk-src-ct { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 6px; background: var(--surface-3); color: var(--text-2); white-space: nowrap; }
.lk-src-ct.low { background: var(--mb-crit-bg, #FBEAE8); color: var(--mb-crit, #C8392B); }
.lk-empty { padding: 30px; text-align: center; color: var(--text-3); font-size: 13px; }
.lk-foot { padding: 10px 18px; border-top: 1px solid var(--hairline); font-size: 11px; color: var(--text-3); display: flex; align-items: center; gap: 8px; background: var(--surface-2); }

/* EMR source tags in patient lookup rows */
.lr-srcs { display: flex; gap: 5px; flex-wrap: wrap; justify-content: flex-end; margin-bottom: 3px; }
.lr-srcs .src-pill { font-size: 11px; padding: 2px 7px; }
