:root{
  --navy:#152539; --navy-d:#0f1c2c;
  --teal:#1f6f63; --teal-d:#15463c; --teal-l:#e6f1ee;
  --rust:#9c4a2a; --rust-l:#f6e7df;
  --red:#b23a2e; --red-l:#faeeea;
  --amber:#8a6d16; --amber-l:#fff4d6;
  --cream:#e6dcc4; --field:#f4eddc; --bg:#e1d7bf;
  /* parchment theme (2026-11-07): panels are --white, so it is parchment, not white */
  --ink:#1c1a16; --muted:#4f4738; --line:#cfc2a3; --white:#ede4cf;
  --radius:10px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:"Segoe UI",system-ui,-apple-system,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.45}
button{font-family:inherit;font-size:13px;cursor:pointer;border:1px solid transparent;border-radius:7px;padding:8px 14px;font-weight:600;background:var(--white);color:var(--navy);border-color:var(--line)}
button:hover{filter:brightness(.97)}
button.primary{background:var(--teal);color:#fff;border-color:var(--teal)}
button.danger{background:var(--white);color:var(--red);border-color:#e3b9b2}
button.link{background:none;border:none;color:var(--teal);padding:4px 2px;font-weight:600}
button:disabled{opacity:.5;cursor:not-allowed}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #ffd9a0;outline-offset:1px}
input,select,textarea{font-family:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:7px;background:var(--field);padding:8px 9px;color:var(--ink);width:100%}
input:disabled,select:disabled,textarea:disabled{background:#f1eee6;color:#555}
label.f{display:block;font-weight:600;color:var(--navy);font-size:12.5px;margin:10px 0 4px}
.hint{color:var(--muted);font-size:12px;font-weight:500}
.err{color:var(--red);font-size:13px;font-weight:600;min-height:18px;margin-top:8px}
h1,h2,h3{color:var(--navy);margin:0}

/* ---------- entry screens ---------- */
.entry{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 16px;
  background:linear-gradient(135deg,#389670 0%,#1f6f6a 40%,#173f6b 75%,#0f2a56 100%) fixed}
.entry-card{background:var(--white);border-radius:14px;box-shadow:0 10px 40px rgba(0,0,0,.25);padding:28px 30px;width:100%;max-width:520px}
.entry-card.wide{max-width:680px}
.brand{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);font-weight:700;margin-bottom:4px}
.entry-card h1{font-size:22px;margin-bottom:6px}
.entry-card p{margin:6px 0 0;color:var(--muted)}
.clinic-list{margin:18px 0 6px;display:flex;flex-direction:column;gap:10px}
.clinic-card{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--field)}
.clinic-card .cc-main{flex:1;min-width:0}
.clinic-card .cc-name{font-weight:700;color:var(--navy)}
.clinic-card .cc-sub{font-size:12px;color:var(--muted)}
.code-badge{display:inline-block;background:var(--navy);color:#fff;border-radius:5px;padding:1px 7px;font-size:11px;font-weight:700;letter-spacing:.05em}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.ec-wrap{margin-top:4px}
.ec-row{display:grid;grid-template-columns:2fr 1.3fr 1.5fr 24px;gap:8px;align-items:center;margin-bottom:6px}
.ec-row input{margin:0}
.recovery-box{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:20px;letter-spacing:.06em;background:var(--amber-l);border:2px dashed #d9b85a;border-radius:10px;padding:16px;text-align:center;margin:16px 0;color:#5a4508;user-select:all}
.warnbox{background:var(--amber-l);border:1px solid #e4c877;border-radius:9px;padding:10px 12px;font-size:12.5px;color:#5a4508;margin-top:12px}
.infobox{background:var(--teal-l);border:1px solid #c4ded8;border-radius:9px;padding:10px 12px;font-size:12.5px;color:var(--teal-d);margin-top:12px}

/* ---------- shell ---------- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;background:var(--navy);color:#fff;padding:10px 20px}
.topbar .tb-clinic{font-weight:700;font-size:15px}
.topbar .tb-nav{display:flex;gap:4px;margin-left:12px}
.topbar .tb-nav button{background:none;border:none;color:#cbd6e4;padding:7px 12px}
.topbar .tb-nav button.on{background:rgba(255,255,255,.12);color:#fff}
.topbar .tb-user{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px}
.topbar .tb-user .role{color:#9fb3c8;font-size:12px}
.topbar .tb-user button{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;padding:6px 11px}
.main{max-width:1280px;margin:0 auto;padding:20px}
.banner{background:var(--amber-l);border:1px solid #e4c877;color:#5a4508;border-radius:9px;padding:10px 14px;margin-bottom:14px;font-size:13px}

/* ---------- dashboard ---------- */
.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}
.tile{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;cursor:pointer;text-align:left;font-weight:400}
.tile .n{font-size:26px;font-weight:700;color:var(--navy);line-height:1.1}
.tile .l{font-size:12px;color:var(--muted);margin-top:2px}
.tile.warn .n{color:var(--amber)}
.tile.risk .n{color:var(--red)}
.tile.on{outline:2px solid var(--teal)}
.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.panel + .panel{margin-top:14px}
.panel-h{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.panel-h h2{font-size:16px}
.panel-h .sp{flex:1}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px}
.tabs button{background:none;border:none;border-bottom:3px solid transparent;border-radius:0;color:var(--muted);padding:9px 14px}
.tabs button.on{color:var(--navy);border-bottom-color:var(--teal)}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters input[type=search]{max-width:260px}
.filters select{width:auto;min-width:150px}
.filters label.chk{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--navy);font-weight:600}
.filters label.chk input{width:auto}
table.grid{width:100%;border-collapse:collapse;font-size:13px}
table.grid th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;border-bottom:2px solid var(--line);padding:8px 8px;white-space:nowrap}
table.grid td{border-bottom:1px solid #eee8d9;padding:9px 8px;vertical-align:middle}
table.grid tr.click{cursor:pointer}
table.grid tr.click:hover td{background:#faf7ef}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px}
.empty{color:var(--muted);font-style:italic;padding:14px 4px}
.badge{display:inline-block;border-radius:20px;padding:2px 9px;font-size:11.5px;font-weight:700;white-space:nowrap}
.st-Referred{background:#eef0f3;color:#48586a}
.st-Assessment{background:#e8eefb;color:#2c4f8f}
.st-Active{background:var(--teal-l);color:var(--teal-d)}
.st-On-hold{background:var(--amber-l);color:var(--amber)}
.st-Closed{background:#ececec;color:#777}
.flag{display:inline-block;border-radius:5px;padding:1px 7px;font-size:11px;font-weight:700;margin-right:4px;white-space:nowrap}
.flag.risk{background:var(--red);color:#fff}
.flag.warn{background:var(--amber-l);color:var(--amber);border:1px solid #e9d38f}
.flag.info{background:#eef0f3;color:#48586a}
.assign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.acard{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--field)}
.acard .ah{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.acard .an{font-weight:700;color:var(--navy)}
.acard .ar{font-size:11.5px;color:var(--muted)}
.acard .ac{margin-left:auto;font-size:22px;font-weight:700;color:var(--teal)}
.acard.unassigned .ac{color:var(--amber)}
.acard ul{list-style:none;margin:0;padding:0}
.acard li{display:flex;gap:8px;align-items:center;padding:4px 0;border-top:1px solid #eee8d9;font-size:12.5px;cursor:pointer}
.acard li:hover{color:var(--teal)}
.attn-row{display:flex;gap:12px;align-items:center;padding:10px 6px;border-bottom:1px solid #eee8d9;cursor:pointer}
.attn-row:hover{background:#faf7ef}

/* ---------- patient view ---------- */
.pt-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.pt-head .pid{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px;background:var(--navy);color:#fff;border-radius:6px;padding:3px 9px}
.pt-head h1{font-size:22px}
.pt-cols{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px;align-items:start}
.face-box{margin-bottom:14px}
.fs-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 22px}
.fs-grid h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 5px}
.fs-dx{margin:0;padding-left:18px}
.fs-dx li{margin:2px 0}
.fs-txt{white-space:pre-wrap;font-size:13px;line-height:1.45}
.fs-sui{font-weight:600;color:var(--navy)}
.fs-sui.on{color:var(--red)}
@media (max-width:820px){.fs-grid{grid-template-columns:1fr}}
.risk-panel{border-radius:10px;padding:12px 14px;margin-bottom:14px;border:1px solid var(--line);background:var(--field)}
.risk-panel.on{background:var(--red-l);border:1.5px solid var(--red)}
.risk-panel .rh{font-weight:700;color:var(--navy);display:flex;align-items:center;gap:10px}
.risk-panel.on .rh{color:var(--red)}
.risk-panel .rt{font-size:12.5px;margin-top:4px;white-space:pre-wrap}
.newdoc{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.doc-group{margin-bottom:12px}
.doc-group h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 4px}
.doc-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid #eee8d9;cursor:pointer}
.doc-row:hover{background:#faf7ef}
.doc-row .dt{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;color:var(--navy)}
.doc-row .dn{font-weight:600}
.doc-row .db{margin-left:auto;font-size:12px;color:var(--muted)}
.locked-note{color:var(--muted);font-style:italic}

/* ---------- form overlay ---------- */
.form-overlay{position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column}
.form-bar{display:flex;align-items:center;gap:12px;background:var(--navy);color:#fff;padding:10px 18px}
.form-bar .ft{font-weight:700}
.form-bar .fp{color:#9fb3c8;font-size:13px}
.form-bar .fs{margin-left:auto;font-size:12.5px;color:#ffd9a0}
.form-bar .fs.saved{color:#a9e0c9}
.form-bar button{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);color:#fff}
.form-bar button.primary{background:var(--teal);border-color:#2f9a8a}
.form-overlay iframe{flex:1;border:0;width:100%;background:var(--white)}

/* ---------- modal / toast ---------- */
.modal-back{position:fixed;inset:0;background:rgba(15,30,50,.45);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:60px 16px;overflow:auto}
.modal{background:var(--white);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.3);width:100%;max-width:560px;padding:20px 22px}
.modal.wide{max-width:760px}
.modal h2{font-size:18px;margin-bottom:8px}
.modal .mbtns{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:80}
#toast.show{opacity:1}
#toast.bad{background:var(--red)}

@media (max-width:1000px){
  .tiles{grid-template-columns:repeat(3,1fr)}
  .pt-cols{grid-template-columns:1fr}
}
@media (max-width:600px){
  .tiles{grid-template-columns:repeat(2,1fr)}
  .grid2{grid-template-columns:1fr}
  .ec-row{grid-template-columns:1fr 1fr}
}

/* ---------- addenda on locked notes ---------- */
.addenda{background:var(--cream);border-bottom:1px solid var(--line);max-height:30vh;overflow:auto;padding:8px 18px}
.addendum{background:var(--white);border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:8px;padding:8px 12px;margin:6px 0}
.addendum .ah{font-size:12px;color:var(--muted)}
.addendum .ah b{color:var(--navy)}
.addendum .at{font-size:13.5px;white-space:pre-wrap;margin-top:3px}

/* ---------- schedule ---------- */
.sch .panel-h h2{margin-right:6px}
.sch-tabs{display:flex;gap:2px;border:none;margin:0}
.sch-nav{margin:4px 0 10px}
.sch-nav button{padding:6px 11px}
.sch-label{color:var(--navy);margin-left:6px}
.wk{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--field)}
.wk-head{display:grid;background:var(--cream);border-bottom:1px solid var(--line)}
.wk-h{padding:7px 4px;text-align:center;font-weight:700;color:var(--navy);font-size:12.5px;border-left:1px solid var(--line)}
.wk-h.now{background:var(--teal-l);color:var(--teal-d)}
.wk-scroll{}
.sch-more{position:sticky;bottom:10px;margin:10px auto 0;width:max-content;background:var(--navy);color:#fff;font-weight:700;font-size:13px;padding:7px 14px;border-radius:20px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.wk-body{display:grid}
.wk-hours{border-right:1px solid var(--line)}
.wk-hr{font-size:11px;color:var(--muted);font-weight:600;text-align:right;padding:2px 6px 0 0;border-top:1px solid var(--line);box-sizing:border-box}
.wk-col{position:relative;border-left:1px solid var(--line);cursor:copy}
.wk-slot{border-top:1px solid var(--line);box-sizing:border-box;background:linear-gradient(transparent 49%,rgba(0,0,0,.05) 50%,transparent 51%)}
.ap{position:absolute;box-sizing:border-box;border-radius:5px;border-left:4px solid;padding:1px 5px;font-size:11.5px;line-height:1.2;overflow:hidden;cursor:pointer}
.ap .l1,.ap .l2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap .l2{font-weight:600}
.ap b{font-weight:700}
.ap:hover{filter:brightness(.96);z-index:2}
.ip{background:#d3e4dc;border-color:#1f6f63;color:#15463c}
.vi{background:#d6dfea;border-color:#2f5d8a;color:#1d3d5e}
.su{background:#ecd7c9;border-color:#9c4a2a;color:#6b2f19}
.cx{background:#e6dcc4;border-color:#8a7f66;color:#6a6152;text-decoration:line-through}
.sch-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted);font-weight:600}
.sch-legend i{display:inline-block;width:16px;height:12px;border-radius:2px;margin-right:5px;vertical-align:-2px;border-left:4px solid}
.sch-day td{vertical-align:middle}
.cx-row td{color:var(--muted);text-decoration:line-through}
.cx-row td select{text-decoration:none}
.off-row{border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:8px}
.chk-day{display:flex;align-items:center;gap:4px;font-weight:600;color:var(--navy);margin-right:10px}
.chk-day input{width:auto}
.sch-banner{display:flex;align-items:center;gap:12px;background:#9c4a2a;color:#fff;padding:12px 20px;font-size:14.5px}
.sch-banner b{color:#fff;font-weight:700}
.sch-banner .sp{flex:1}
.sch-banner button{padding:6px 13px}
.sch-banner button[data-act="sch-changes"]{background:#fff;color:#6b2f19;border-color:#fff}
.sch-banner button[data-act="sch-seen"]{background:transparent;color:#fff;border:1px solid #fff}
.ap.ext{border-style:dashed;cursor:default;opacity:.85}
.ap-hist{margin-top:10px;font-size:12.5px}
.ap-hist summary{cursor:pointer;font-weight:700;color:var(--navy)}
.ap-hist ul{margin:6px 0 0;padding-left:18px}
.ap-hist li{margin:2px 0}
.rep-h{font-size:14px;margin:16px 0 6px}
table.rep td,table.rep th{text-align:center}
table.rep td:first-child,table.rep th:first-child{text-align:left}
.sup-group{margin-bottom:18px}
.sup-group h3{font-size:15px;margin:0 0 6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sup-chips{display:flex;flex-wrap:wrap;gap:8px}
.sup-chip{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:var(--field)}
.sup-chip-n{font-weight:700;color:var(--navy);text-decoration:none}
.sup-chip-n:hover{text-decoration:underline}
.note-read{border-bottom:1px solid var(--line);padding:8px 0}
.note-read:last-child{border-bottom:none}
.sup-list{margin:0;padding-left:20px}
.sup-list li{margin:3px 0}
#pt-appts table.grid{font-size:12.5px}
#pt-appts table.grid td,#pt-appts table.grid th{padding:6px 5px}
/* ---------- master calendar ---------- */
.cal{display:grid;grid-template-columns:200px minmax(0,1fr);gap:12px;margin-top:4px}
.cal-side{background:var(--cream);border:1px solid var(--line);border-radius:8px;padding:10px;align-self:start}
.cal-sw{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:7px;overflow:hidden;margin-bottom:6px}
.cal-sw button{border:none;border-radius:0;padding:6px 0;background:var(--field)}
.cal-sw button.on{background:var(--navy);color:#fff}
.cal-h{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;color:var(--navy);font-size:12.5px;margin:10px 0 4px}
.cal-h span{font-weight:600;font-size:12px}
.cal-h .link{padding:0}
.cal-og{font-size:11.5px;font-weight:700;color:var(--muted);margin:6px 0 1px}
.cal-item{display:flex;align-items:center;gap:7px;width:100%;background:none;border:none;padding:3px 2px;font-weight:600;color:var(--ink);text-align:left;border-radius:4px}
.cal-item:hover{background:var(--field)}
.cal-item i{width:15px;height:15px;border-radius:3px;border:2px solid;flex:none;color:#fff;font-style:normal;font-size:11px;line-height:11px;text-align:center;font-weight:700}
.cal-item.off{opacity:.38}
.cal-chk{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--ink);font-size:12.5px;padding:2px 0}
.cal-chk input{width:auto;margin:0}
.cal-main{min-width:0}
.cal-bar{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.cal-bar button{padding:6px 11px}
.cal-bar button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.cal-title{font-size:16px;color:var(--navy);margin:0 6px}
.cal-bar #cal-q{width:230px}
.cal-mg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--field)}
.cal-dh{font-weight:700;color:var(--muted);text-align:center;padding:5px 0;border-bottom:1px solid var(--line);background:var(--cream);font-size:12px}
.cal-dc{min-height:96px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:3px;overflow:hidden;cursor:copy}
.cal-dc.out{background:#ece3cd}
.cal-dc.out .cal-dn{opacity:.45}
.cal-dn{background:none;border:none;padding:0 6px;font-size:12px;font-weight:700;color:var(--muted);border-radius:10px}
.cal-dn.today{background:var(--teal);color:#fff}
.cal-ev{border-radius:4px;border-left:3px solid;padding:1px 5px;margin-top:2px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;color:#1c1a16}
.cal-ev.cx,.cx-txt{text-decoration:line-through;opacity:.75}
.cal-more{background:none;border:none;padding:1px 4px;font-size:11.5px;font-weight:700;color:var(--navy)}
@media (max-width:900px){.cal{grid-template-columns:1fr}}
.cal-counts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 8px;font-size:13px}
.cal-count{background:var(--field);border:1px solid var(--line);border-radius:12px;padding:2px 10px;color:var(--ink)}
.cal-count.sup{background:#ecd7c9;border-color:#9c4a2a;color:#6b2f19}
.cal-daylist .cal-ev{font-size:13px;padding:4px 8px;margin-top:4px;white-space:normal}
.consent-bar{margin-bottom:14px}
.consent-bar .panel-h{margin-bottom:8px}
.fs-sup{font-size:13.5px;color:var(--navy);margin-left:6px}
/* ---------- messages ---------- */
.msg-box{margin-bottom:14px}
.msg-box .panel-h{margin-bottom:6px}
.msg-count{background:#9c4a2a;color:#fff;border-radius:10px;padding:1px 9px;font-size:12px;font-weight:700}
.msg{display:grid;grid-template-columns:9px minmax(0,1fr) auto;gap:10px;align-items:start;border-top:1px solid var(--line);padding:5px 2px;cursor:pointer}
.msg:hover{background:var(--field)}
.msg-dot{width:9px;height:9px;border-radius:50%;margin-top:5px}
.msg.new .msg-dot{background:#9c4a2a}
.msg.new .msg-who{font-weight:800}
.msg-who{font-weight:700;color:var(--navy)}
.msg-text{white-space:pre-wrap}
.msg-pt{display:inline-block;margin-top:2px;background:#d6dfea;border-left:3px solid #2f5d8a;border-radius:3px;padding:0 7px;font-size:12px;font-weight:600;color:#1d3d5e}
.msg button{padding:4px 11px}
.msg-to{display:flex;flex-wrap:wrap;gap:4px 16px;max-height:160px;overflow-y:auto;border:1px solid var(--line);border-radius:7px;padding:6px 10px;background:var(--field)}
.msg-btns{display:flex;gap:6px}
.conflict-banner{display:flex;align-items:center;gap:12px;background:#8a6d16;color:#fff;padding:10px 20px;font-size:14px}
.conflict-banner .sp{flex:1}
.conflict-banner button{background:#fff;color:#5a4508;border-color:#fff;padding:5px 12px}
