/* IncisionIQ practice-admin portal.
   Design system lifted from the PostOp Navigator Practice Admin v4 mockup
   (navy/paper palette, IBM Plex Mono accents, card + pill language). */
:root{
  --navy:#1F3A5F;--navy-2:#2C5282;--navy-tint:#E8EEF6;
  --paper:#FFFFFF;--canvas:#F4F6F9;--hdr:#EDF1F6;
  --rule:#C9D3DF;--rule-soft:#E2E8F0;
  --text:#1A202C;--dim:#4A5568;--faint:#8A94A0;
  --brick:#9B2C2C;--brick-bg:#FDF2F2;--brick-rule:#EFC9C9;
  --ochre:#A87A2C;--ochre-bg:#FCF7EC;--ochre-rule:#E8D8B4;
  --moss:#2F6B4F;--moss-bg:#F0F7F3;--moss-rule:#C3DDD0;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--canvas);color:var(--text);min-height:100vh;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Helvetica Neue',Arial,sans-serif;
  font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;text-align:left}
input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--navy-2);outline-offset:2px}
.mono{font-family:'IBM Plex Mono',monospace}

/* ── top bar ── */
.bar{height:58px;background:var(--navy);color:#fff;display:flex;align-items:center;gap:18px;padding:0 20px}
.bar .bd{display:flex;align-items:baseline;gap:9px}
.bar .bd b{font-size:15.5px;font-weight:700;letter-spacing:-.02em}
.bar .bd span{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#A9C0DC}
.bar .sp{flex:1}
.bar .me{display:flex;align-items:center;gap:9px;padding-left:16px;border-left:1px solid rgba(255,255,255,.16)}
.bar .av{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.14);display:grid;
  place-items:center;font-size:10.5px;font-weight:700}
.bar .me .n{font-size:12.5px;font-weight:600}.bar .me .p{font-size:10.5px;color:#A9C0DC}
.bar .out{padding:7px 14px;border-radius:8px;font-size:12.5px;color:#A9C0DC}
.bar .out:hover{background:rgba(255,255,255,.15);color:#fff}
.bar .mode{display:flex;gap:4px;margin-left:14px}
.bar .mode a{padding:7px 14px;border-radius:8px;font-size:13px;color:#A9C0DC;text-decoration:none}
.bar .mode a:hover{color:#fff}
.bar .mode a.on{background:rgba(255,255,255,.15);color:#fff;font-weight:600}

.wrap{max-width:1180px;margin:0 auto;padding:24px 20px 60px}
.lede{font-size:12.5px;color:var(--dim);margin-bottom:20px;line-height:1.55;max-width:760px}
.lede b{color:var(--navy)}

h2.sec{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);font-weight:700;
  margin:26px 0 12px;display:flex;align-items:center;gap:10px}
h2.sec i{flex:1;height:1px;background:var(--rule)}
h2.sec em{font-style:normal;text-transform:none;letter-spacing:0;font-size:11.5px;font-weight:400;color:var(--faint)}

/* ── cards ── */
.card{background:var(--paper);border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.card-h{padding:13px 16px;background:var(--hdr);border-bottom:1px solid var(--rule);
  display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.card-h .t{font-size:14px;font-weight:700;color:var(--navy)}
.card-h .s{font-size:11.5px;color:var(--faint);font-family:'IBM Plex Mono',monospace}

/* ── form ── */
.form{padding:18px}
.fr{margin-bottom:15px}
.fr .l{font-size:12px;font-weight:600;color:var(--dim);margin-bottom:5px;display:flex;
  justify-content:space-between;align-items:baseline}
.fr .l .req{font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);font-weight:700}
.fr input,.fr select{width:100%;padding:10px 12px;border:1px solid var(--rule);border-radius:7px;
  background:var(--paper);font-size:14px}
.fr input:focus,.fr select:focus{border-color:var(--navy-2);outline:none}
.fr input.ok,.fr select.ok{border-color:var(--moss);background:var(--moss-bg)}
.fr .hint{font-size:11px;color:var(--faint);margin-top:4px;line-height:1.45}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.flags{display:flex;gap:7px;flex-wrap:wrap}
.flag{padding:8px 13px;border:1px solid var(--rule);border-radius:20px;font-size:12.5px;color:var(--dim)}
.flag:hover{border-color:var(--navy-2)}
.flag.on{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:600}
.actfoot{padding:14px 18px;border-top:1px solid var(--rule);background:var(--hdr);display:flex;
  align-items:center;gap:14px}
.go{padding:12px 22px;border-radius:8px;background:var(--navy);color:#fff;font-weight:700;font-size:14px}
.go:hover:not(:disabled){background:var(--navy-2)}
.go:disabled{opacity:.32;cursor:not-allowed}
.formerr{font-size:12.5px;color:var(--brick);line-height:1.45}
/* G3 blocked-activation box (Case Activation) */
.gate{margin-top:10px;padding:12px 14px;border:1px solid var(--ochre-rule);background:var(--ochre-bg);border-radius:8px;font-size:12.5px;line-height:1.5}
.gate-h{font-weight:600;color:var(--navy);margin-bottom:8px}
.gate-m{display:grid;grid-template-columns:170px 1fr;gap:10px;padding:5px 0;border-top:1px solid var(--ochre-rule)}
.gate-l{color:var(--navy-2);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.gate-s{color:var(--dim)}
.gate-f{margin-top:10px;padding-top:8px;border-top:1px solid var(--ochre-rule);color:var(--dim);font-size:11.5px}

/* ── roster ── */
.rr{display:grid;grid-template-columns:1.6fr 1.6fr 90px 1.2fr 110px;gap:12px;padding:11px 16px;
  border-bottom:1px solid var(--rule-soft);align-items:center;font-size:13px}
.rr:last-child{border-bottom:none}
.rr.hd{background:var(--hdr);border-bottom:1px solid var(--rule);font-size:9.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--faint);font-weight:700}
.rr .nm{font-weight:600}
.rr .mono{font-family:'IBM Plex Mono',monospace;font-size:12px}
.pill{font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;padding:3px 8px;
  border-radius:4px;border:1px solid;display:inline-block}
.pill.live{color:var(--moss);border-color:var(--moss-rule);background:var(--moss-bg)}
.pill.esc{color:var(--brick);border-color:var(--brick-rule);background:var(--brick-bg)}
.pill.due{color:var(--ochre);border-color:var(--ochre-rule);background:var(--ochre-bg)}
.pill.enr{color:var(--navy-2);border-color:#C3D4E8;background:var(--navy-tint)}
/* Awaiting close: own class, matching the nurse console's awaiting-close
   badge palette (navy on navy-tint) so the two portals agree. */
.pill.awc{color:var(--navy);border-color:#C3D4E8;background:var(--navy-tint)}
.none{padding:40px;text-align:center;color:var(--faint);font-size:13px}

/* ── toast ── */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(70px);background:var(--navy);
  color:#fff;border-radius:8px;padding:13px 20px;font-size:13.5px;opacity:0;transition:all .25s;z-index:60;
  box-shadow:0 8px 24px rgba(31,58,95,.28)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast b{font-weight:700}

/* ── login page ── */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{width:100%;max-width:400px}
.login-brand{text-align:center;margin-bottom:18px}
.login-brand b{font-size:19px;font-weight:700;color:var(--navy);letter-spacing:-.02em;display:block}
.login-brand span{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}

@media(max-width:900px){.rr{grid-template-columns:1fr 1fr;gap:6px}.rr.hd{display:none}
  .two{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* ── Case Activation: Medications section ───────────────────────────── */
.med{display:grid;grid-template-columns:34px 1fr;gap:10px;padding:10px 0;
  border-bottom:1px solid var(--rule-soft);align-items:start}
.med:last-child{border-bottom:none}
.med .sw{width:30px;height:18px;border-radius:9px;background:var(--moss);
  border:none;padding:0;cursor:pointer;position:relative;transition:background .15s;
  margin-top:2px}
.med .sw::after{content:'';position:absolute;top:2px;left:14px;width:14px;height:14px;
  border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.med .sw.off{background:var(--rule)}
.med .sw.off::after{left:2px}
.med .nm{font-size:13px;font-weight:600;color:var(--text)}
.med .rx{font-size:12.5px;color:var(--dim);line-height:1.45;margin-top:2px}
.med .meta{font-size:11px;color:var(--faint);margin-top:3px;
  font-family:'IBM Plex Mono',monospace}
.med.excluded .nm,.med.excluded .rx{text-decoration:line-through;color:var(--faint)}
.med .tag{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;padding:1px 5px;border-radius:3px;margin-left:6px;
  vertical-align:1px}
.med .tag.narc{background:var(--brick-bg);color:var(--brick);border:1px solid var(--brick-rule)}
.med .tag.ovr{background:var(--moss-bg);color:var(--moss);border:1px solid var(--moss-rule)}
.med .caution{font-size:11.5px;color:var(--brick);margin-top:3px;line-height:1.4}
.med .edit{background:none;border:none;padding:0;margin-top:4px;cursor:pointer;
  font-size:11.5px;color:var(--dim);text-decoration:underline;text-underline-offset:2px}
.med .edit:hover{color:var(--text)}
.med textarea{width:100%;margin-top:5px;padding:7px 9px;border:1px solid var(--rule);
  border-radius:6px;font:inherit;font-size:12.5px;resize:vertical;min-height:52px}
.med .warn{font-size:11.5px;color:var(--brick);margin-top:3px}

/* ── Enrollment-link panel (Pending case rows) ─────────────────────── */
.linkbtn{margin-left:8px;padding:3px 9px;border:1px solid var(--rule);
  border-radius:6px;background:var(--paper);font-size:11px;font-weight:600;
  color:var(--navy-2);cursor:pointer}
.linkbtn:hover{border-color:var(--navy-2)}
.linkpanel{padding:14px 16px;background:var(--navy-tint);
  border-bottom:1px solid var(--rule-soft)}
.linkpanel .lp-state{font-size:12.5px;font-weight:600;color:var(--navy);
  margin-bottom:8px}
.linkpanel .lp-state.err-t{color:var(--brick)}
.linkpanel .lp-url{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.linkpanel .lp-url input{flex:1;padding:8px 10px;border:1px solid var(--rule);
  border-radius:6px;font-family:'IBM Plex Mono',monospace;font-size:11.5px;
  background:var(--paper)}
.linkpanel .lp-url button,.linkpanel .lp-actions button{padding:8px 14px;
  border:1px solid var(--rule);border-radius:6px;background:var(--paper);
  font-size:12px;font-weight:600;color:var(--navy-2);cursor:pointer}
.linkpanel .lp-url button:hover,.linkpanel .lp-actions button:hover{
  border-color:var(--navy-2)}
.linkpanel .lp-actions{display:flex;gap:10px;align-items:center}
.linkpanel .lp-actions button:disabled{opacity:.45;cursor:default}
.linkpanel .lp-hint{font-size:11px;color:var(--dim)}
/* password-reset panel: the date-of-birth notice and a server refusal both
   use the same loud block; the refusal carries a machine reason code */
.linkpanel .lp-flag{font-size:12.5px;line-height:1.5;margin:0 0 10px;padding:9px 11px;
  border-radius:6px;background:var(--brick-bg);border:1px solid var(--brick-rule);color:var(--brick)}
.linkpanel #rp-refusal .lp-flag{margin:10px 0 0}
.linkpanel .lp-reason{font-family:'IBM Plex Mono',monospace;font-size:11px;white-space:nowrap}
/* patient record editor (N1) — lives inside the case-info panel */
.pe-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin-top:12px;padding-top:12px;
  border-top:1px solid var(--rule)}
.pe-form label{display:flex;flex-direction:column;gap:4px;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--navy);font-weight:700}
.pe-form input{padding:8px 10px;border:1px solid var(--rule);border-radius:6px;font:inherit;font-size:13px;
  text-transform:none;letter-spacing:0;font-weight:400;color:var(--text);background:#fff}
.pe-form input:focus{border-color:var(--navy-2);outline:none}
.pe-actions{grid-column:1/-1;display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:2px}
.pe-actions button{padding:8px 14px;border-radius:6px;background:var(--navy);color:#fff;font-weight:600;
  font-size:12.5px;border:none;cursor:pointer}
.pe-actions button:hover:not(:disabled){background:var(--navy-2)}
.pe-actions button:disabled{opacity:.45;cursor:default}
.pe-actions button.pe-cancel{background:transparent;color:var(--navy);border:1px solid var(--rule)}
.pe-diff,.pe-result{margin-top:12px;padding:12px 14px;border:1px solid var(--rule);border-radius:8px;background:#fff}
.pe-diff-h,.pe-result-h{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);
  font-weight:700;margin-bottom:8px}
.pe-line{font-size:13px;padding:3px 0;display:flex;gap:8px;flex-wrap:wrap}
.pe-line b{min-width:110px;color:var(--navy)}
.pe-line .old{color:var(--dim);text-decoration:line-through}
.pe-line .new{font-weight:600}
.pe-n{font-size:12px;color:var(--dim);margin-top:6px}
.pe-msg{font-size:12.5px;line-height:1.5;color:var(--text);margin-top:8px;padding:9px 11px;
  border-radius:6px;background:var(--navy-tint);border:1px solid var(--rule)}
.pe-msg.warn{background:var(--brick-bg,#fbeaea);border-color:var(--brick-rule,#e3b4b4);color:var(--brick)}
@media(max-width:700px){.pe-form{grid-template-columns:1fr}}

/* ── practice-facing case flags (roster status cell) ───────────────── */
.flagtag{display:block;width:fit-content;font-size:9px;letter-spacing:.05em;
  text-transform:uppercase;font-weight:700;padding:2px 7px;border-radius:4px;
  border:1px solid;margin-top:4px;cursor:help}
.flagtag.dis{color:var(--dim);border-color:var(--rule);background:var(--hdr)}
.flagtag.dev{color:var(--ochre);border-color:var(--ochre-rule);background:var(--ochre-bg)}
.rr .rowclick{cursor:pointer}
.rr .rowclick:hover{color:var(--navy-2);text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--rule)}

/* ── cases search (above the roster; same treatment as the form's .fr input) ── */
.casesearch{margin:0 0 10px}
.casesearch input{width:100%;padding:10px 12px;border:1px solid var(--rule);border-radius:7px;
  background:var(--paper);font-size:14px}
.casesearch input:focus{border-color:var(--navy-2);outline:none}
.casesearch input::placeholder{color:var(--faint)}
.nomatch{padding:14px 16px;font-size:13px;color:var(--faint)}
/* Plain line under the search input; [hidden] gated explicitly so the
   author display rule can never beat the UA hidden rule. */
.casesearch .searchnote{display:block;margin-top:6px;font-size:12px;color:var(--dim);line-height:1.45}
.casesearch .searchnote[hidden]{display:none}

/* delete action on a Pending row */
.linkbtn.danger{color:#b42318;border-color:#e6b8b3}
.linkbtn.danger:hover{background:#fff5f4}
button:disabled.linkbtn,#sd-edit:disabled{opacity:.5;cursor:default}
