:root{
  /* v1.14.17 — tokens extra para temas */
  --surface-2:#f1f5f9; --line-soft:#eef2f0; --track:#eef2f6; --grab:#d0d5d1; --chev:#a0aec0;
  /* Estética inspirada em hospitaldebraga.pt / ULS Braga (front.css: --primary #248a38, Montserrat) */
  --navy:#175021; --navy-2:#196228; --teal:#248a38; --teal-2:#1e7a30; --teal-50:#e8f5eb;
  --bg:#f3f5f3; --card:#fff; --line:#e5e5e5; --text:#081108; --muted:#575756;
  --red:#b40d1d; --red-50:#f8e8ea; --amber:#d97706; --amber-50:#fef5e6; --green:#248a38; --green-50:#e8f5eb;
  --lime:#80c242; --lime-50:#f0f8e6;
  /* OncoMed — pilar onco em verde clínico (era roxo #7c3aed) + acentos oncológicos subtis */
  --p-onco:#1a7a32; --onco-50:#e8f5eb; --onco-line:#cfe8d5; --onco-ink:#145a26; --onco-accent:#0f766e; --onco-accent-50:#e6f4f1;
  --p-neo:#1aa6b5; --p-ped:#ea580c; --p-rino:#2563eb; --p-oto:#ca8a04; --p-geral:#7c7c7b;
  --radius:12px; --tap:46px;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
  --sal:env(safe-area-inset-left,0px); --sar:env(safe-area-inset-right,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{background-color:#175021}
html,body{margin:0;color:var(--text);
  font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.4}
body{background:var(--bg);padding-top:calc(56px + var(--sat));padding-bottom:calc(64px + var(--sab));min-height:100vh}
.hidden{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--teal-2)}

/* Top bar */
.topbar{position:fixed;top:0;left:0;right:0;z-index:20;height:calc(56px + var(--sat));padding:var(--sat) calc(12px + var(--sar)) 0 calc(16px + var(--sal));
  background-color:#175021;background-image:none;color:#fff;display:flex;align-items:center;justify-content:space-between;
  /* iOS 26/27: fixed opaque bar ≥6px at top edge → status bar sólida sem scrim Liquid Glass */}
.topbar h1{font-size:19px;margin:0;font-weight:650;letter-spacing:.2px}
.topbar-actions{display:flex;gap:4px}
.icon-btn{background:transparent;border:0;color:#fff;font-size:20px;width:var(--tap);height:var(--tap);border-radius:12px;cursor:pointer}
.icon-btn:active{background:rgba(255,255,255,.12)}

/* Tab bar */
.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:var(--card);border-top:1px solid var(--line);
  padding:0 var(--sar) var(--sab) var(--sal)}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:60px;
  text-decoration:none;color:var(--muted);font-size:11px;font-weight:550;position:relative}
.tabbar a .ti{font-size:20px;filter:grayscale(1);opacity:.7}
.tabbar a.active{color:var(--teal-2)}
.tabbar a.active .ti{filter:none;opacity:1}
.badge{position:absolute;top:6px;left:calc(50% + 6px);background:var(--red);color:#fff;font-size:10px;min-width:18px;height:18px;
  border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px}

/* Layout */
main{padding:14px calc(14px + var(--sar)) 24px calc(14px + var(--sal));max-width:860px;margin:0 auto;outline:none}
h2{font-size:22px;margin:4px 0 12px}
h3{font-size:16px;margin:18px 0 8px;color:var(--navy)}
.row{display:flex;gap:8px;align-items:center}
.row.wrap{flex-wrap:wrap}
.spacer{flex:1}
.muted{color:var(--muted)} .small{font-size:13px}
.err{color:var(--red);font-size:14px;min-height:1em}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:10px}
.list{display:flex;flex-direction:column;gap:8px}
.item{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;gap:10px;align-items:center;cursor:pointer;min-height:var(--tap)}
.item:active{background:var(--surface-2)}
.item .main{flex:1;min-width:0}
.item .t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .s{color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chev{color:var(--chev);font-size:20px}

/* Buttons */
.btn{text-decoration:none;border:1px solid var(--line);background:var(--card);border-radius:12px;min-height:var(--tap);padding:0 16px;font-weight:600;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--navy)}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}
.btn.navy{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.danger{background:var(--card);border-color:#f3c0c0;color:var(--red)}
.btn.danger.solid{background:var(--red);color:#fff;border-color:var(--red)}
.btn.sm{min-height:36px;padding:0 12px;font-size:14px;border-radius:10px}
.btn.block{width:100%}
.btn.ghost{background:transparent;border-color:transparent;color:var(--teal-2)}
.fab{position:fixed;right:calc(16px + var(--sar));bottom:calc(76px + var(--sab));z-index:15;width:58px;height:58px;border-radius:29px;border:0;
  background:var(--teal);color:#fff;font-size:30px;box-shadow:0 6px 18px rgba(36,138,56,.35);cursor:pointer}

/* Forms */
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.field label,.lbl{font-size:13px;color:var(--muted);font-weight:600}
input[type=text],input[type=date],input[type=number],input[type=search],input[type=password],select,textarea{
  width:100%;min-height:var(--tap);border:1px solid var(--line);border-radius:12px;background:var(--card);padding:10px 12px;font-size:16px;-webkit-appearance:none;appearance:none}
select{background-image:linear-gradient(45deg,transparent 50%,#64748b 50%),linear-gradient(135deg,#64748b 50%,transparent 50%);
  background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}
textarea{min-height:80px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--teal);outline-offset:0;border-color:var(--teal)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
@media (max-width:380px){.grid2{grid-template-columns:1fr}}
.check{display:flex;align-items:center;gap:10px;min-height:40px;font-size:15px}
.check input{width:22px;height:22px;accent-color:var(--teal)}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px 4px;margin:0 0 12px}
legend{font-size:13px;font-weight:700;color:var(--navy);padding:0 6px}
.seg{display:flex;background:#e8edf3;border-radius:12px;padding:3px;gap:3px;overflow-x:auto}
.seg button{flex:1;border:0;background:transparent;border-radius:9px;min-height:36px;padding:0 10px;font-size:14px;font-weight:600;color:var(--muted);white-space:nowrap;cursor:pointer}
.seg button.on{background:var(--card);color:var(--navy);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.toolbar{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}

/* Chips & pills */
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;color:var(--muted)}
.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.pill{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;white-space:nowrap}
.pill.onco{background:var(--onco-50);color:var(--onco-ink)} .pill.neo{background:#e5f3fb;color:var(--p-neo)}
.pill.ped{background:#fdeee4;color:var(--p-ped)} .pill.rino{background:#e8effd;color:var(--p-rino)} .pill.oto{background:#fef9c3;color:var(--p-oto)}
.pill.red{background:var(--red-50);color:var(--red)} .pill.amber{background:var(--amber-50);color:var(--amber)}
.pill.green{background:var(--green-50);color:var(--green)} .pill.gray{background:var(--surface-2);color:var(--muted)}
.dot{width:10px;height:10px;border-radius:5px;flex:none}
.dot.onco{background:var(--p-onco)} .dot.neo{background:var(--p-neo)} .dot.ped{background:var(--p-ped)} .dot.rino{background:var(--p-rino)} .dot.oto{background:var(--p-oto)} .dot.none{background:var(--p-geral)}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}
@media (min-width:640px){.kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px}
.kpi .v{font-size:26px;font-weight:750;color:var(--navy);line-height:1.1}
.kpi .l{font-size:12px;color:var(--muted);font-weight:600;margin-top:2px}
.kpi .sub{font-size:11px;color:var(--muted)}
.chart-box{position:relative;height:240px}
.note{background:var(--teal-50);border-radius:12px;padding:10px 12px;font-size:13px;color:var(--navy);margin:8px 0}
.warn{background:var(--amber-50);color:#7a4a05}

/* Timeline */
.timeline{border-left:2px solid var(--line);margin-left:6px;padding-left:14px}
.tl{position:relative;margin-bottom:12px}
.tl::before{content:"";position:absolute;left:-21px;top:4px;width:12px;height:12px;border-radius:6px;background:var(--teal);border:2px solid var(--card)}
.tl.alert::before{background:var(--amber)} .tl.done::before{background:var(--green)} .tl.red::before{background:var(--red)}
.tl .d{font-size:12px;color:var(--muted);font-weight:600}

/* Alerts */
.alert-item{border-left:5px solid var(--line)}
.alert-item.overdue{border-left-color:var(--red)}
.alert-item.soon{border-left-color:var(--amber)}
.alert-item.upcoming{border-left-color:var(--teal)}
.alert-item.done{border-left-color:var(--green);opacity:.7}
.alert-item ul{margin:6px 0 0;padding-left:18px;font-size:14px}

/* Sheet (modal) */
.sheet-backdrop{position:fixed;inset:0;background:rgba(14,42,71,.4);z-index:40;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s;padding-top:max(12px, env(safe-area-inset-top, 0px));box-sizing:border-box}
.sheet{background:var(--bg);width:100%;max-width:720px;max-height:calc(100vh - max(12px, env(safe-area-inset-top, 0px)) - 8px);max-height:calc(100dvh - max(12px, env(safe-area-inset-top, 0px)) - 8px);border-radius:18px 18px 0 0;display:flex;flex-direction:column;animation:up .2s ease-out}
@media (min-width:760px){.sheet-backdrop{align-items:center}.sheet{border-radius:18px;max-height:90vh}}
.sheet-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--card);border-radius:18px 18px 0 0}
.sheet-head h2{flex:1;margin:0;font-size:17px;text-align:center}
.sheet-body{overflow-y:auto;padding:14px 14px calc(20px + var(--sab));-webkit-overflow-scrolling:touch}
@keyframes up{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* Empty */
.empty{text-align:center;padding:36px 16px;color:var(--muted)}
.empty .ic{font-size:44px;margin-bottom:6px}
.empty p{margin:6px 0 16px}

/* Toast */
#toast{position:fixed;left:50%;bottom:calc(84px + var(--sab));transform:translateX(-50%) translateY(20px);background:var(--navy);color:#fff;padding:10px 16px;
  border-radius:12px;font-size:14px;opacity:0;pointer-events:none;transition:all .2s;z-index:60;max-width:90vw}
#toast.show{opacity:1;transform:translateX(-50%)}

/* Lock */
.lock{position:fixed;inset:0;z-index:100;background:var(--navy);display:flex;align-items:center;justify-content:center;padding:20px}
.lock-box{background:var(--card);border-radius:18px;padding:24px;width:100%;max-width:340px;text-align:center}
.lock-logo{font-size:24px;font-weight:800;color:var(--navy)}
.lock-box input{text-align:center;font-size:22px;letter-spacing:6px;margin-bottom:12px}

/* Protocol editor */
.moment{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;margin-bottom:10px}
.moment-head{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.moment-head input[type=text]{flex:1}
.moment-head input[type=number]{width:92px}
.ck-item{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.ck-item input{flex:1;min-height:40px}
.x-btn{border:0;background:var(--surface-2);border-radius:10px;width:40px;height:40px;cursor:pointer;color:var(--muted);font-size:18px;flex:none}
.att{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.att:last-child{border-bottom:0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px}
.kv dt{color:var(--muted);font-weight:600} .kv dd{margin:0}
table.mini{width:100%;border-collapse:collapse;font-size:13px}
table.mini td,table.mini th{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left}

/* Galeria de anexos */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.thumb{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:0;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;text-align:left}
.thumb img,.thumb .ficon{width:100%;aspect-ratio:1;object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:34px;background:var(--surface-2)}
.thumb .tcap{font-size:11px;font-weight:600;padding:4px 6px;color:var(--navy);line-height:1.25}
.thumb .tcap small{color:var(--muted);font-weight:500}
.viewer-img{width:100%;max-height:70vh;object-fit:contain;background:#081108;border-radius:12px}
.hist-sum{white-space:pre-wrap;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px;margin:6px 0 0}
.ocr-raw{white-space:pre-wrap;font-size:12px;max-height:240px;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px}
details summary{cursor:pointer;color:var(--teal-2);font-weight:600;margin-top:6px}
.audio-list .att .btn{flex:none}
.thumb.audio{border-color:var(--teal)}
.tl.hist::before{background:var(--p-neo)}


/* hbraga theme extras */
.topbar{box-shadow:none;background-color:#175021;background-image:none}
.tabbar a.active{color:var(--teal)}
.btn.primary:hover,.btn.primary:active{background:var(--navy-2);border-color:var(--navy-2)}
.chip.on{background:var(--teal);border-color:var(--teal)}
.kpi .v{color:var(--teal)}
h3{color:var(--navy)}
.lock-logo{color:var(--teal);font-weight:700;letter-spacing:.5px}
.seg{background:#e8efe9}
.item:active{background:var(--teal-50)}

/* Calendário */
.slots{display:flex;flex-direction:column;gap:6px}
.slot{display:flex;gap:10px;align-items:stretch;border:1px solid var(--line);background:var(--card);border-radius:10px;padding:8px 10px;text-align:left;cursor:pointer;min-height:var(--tap);font:inherit;color:inherit;border-left:5px solid #cfd8d0}
.slot .sh{font-weight:700;font-variant-numeric:tabular-nums;width:46px;flex:none;color:var(--navy)}
.slot .sb{display:flex;flex-direction:column;min-width:0}
.slot .st{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.3px}
.slot .sp{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slot.filled{background:var(--teal-50)}
.slot.filled .sp{font-weight:600}
.slot.t-primeira{border-left-color:var(--teal)} .slot.t-primeira_cp{border-left-color:var(--p-onco)} .slot.t-segunda{border-left-color:var(--lime,#80c242)} .slot.t-outra{border-left-color:var(--p-geral)}
.cal-day.today{border-color:var(--teal)}
.tabbar.six a{font-size:10px} .tabbar.six a .ti{font-size:19px}
.decisions{display:grid;grid-template-columns:1fr;gap:0}
@media (min-width:520px){.decisions{grid-template-columns:1fr 1fr}}
.cg-card{border-left:4px solid var(--p-onco)}

/* RANU de risco */
.ranu-card{border-left:4px solid var(--p-neo)}
.tbl{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.tbl th{text-align:left;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;padding:6px 4px;border-bottom:1px solid var(--line)}
.tbl td{padding:7px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl .pill{white-space:normal}
.pill.stage{background:color-mix(in srgb,var(--c) 14%,#fff);color:color-mix(in srgb,var(--c) 80%,#000)}
.badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.stagebar{display:flex;gap:3px;margin:-4px 0 10px}
.stagebar span{flex:1;height:6px;border-radius:3px;background:var(--track)}
.stagebar span.on{background:var(--teal)}
/* TNM AJCC 8 (v1.7.0) */
.tnm-box{border:1px solid var(--line,#dfe7e2);border-radius:12px;padding:10px 12px;margin:6px 0 12px;background:var(--surface-2)}
.tnm-h{font-weight:700;font-size:13px;color:var(--navy);margin-bottom:8px}
.tnm-cap{margin:2px 0 8px}
.tnm-res{background:var(--teal-50);border-radius:10px;padding:8px 10px;margin:4px 0 10px;font-size:14px}
.tnm-res .warn{margin-top:6px;padding:6px 8px;border-radius:8px}
.tnm-box select{font-size:15px}
/* Evolução oncológica (v1.8.0) */
.opt-block{border:1px dashed var(--line,#dfe7e2);border-radius:10px;padding:6px 10px;margin:8px 0}
.opt-block summary{font-weight:600;font-size:14px;cursor:pointer;padding:4px 0}
.of-sec{border-top:1px solid var(--line-soft);padding:8px 0}
.of-sec h4{margin:0;flex:1;font-size:15px}
/* ORL pediátrica (v1.10.0) */
.ped-map{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.ped-map .pm{border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:2px;border:1px solid #e2e8f0;background:#f8fafc;font-size:13px}
.ped-map .pm small{color:#475569}
.ped-map .pm.red{background:#fef2f2;border-color:#fca5a5}
.ped-map .pm.amber{background:var(--card)beb;border-color:#fcd34d}
.ped-map .pm.green{background:#f0fdf4;border-color:#86efac}
/* SAOS (v1.11.0) */
.spark{vertical-align:middle;margin-left:4px}
#d-tab button{padding-left:6px;padding-right:6px;font-size:14px}

/* v1.12 — próxima acção, banner top-3, calendário «Hoje» */
.next-banner{border-left:4px solid var(--amber);background:var(--amber-50)}
.next-banner .na-item{display:block;padding:7px 0;border-top:1px solid rgba(0,0,0,.06);color:inherit;text-decoration:none}
.next-banner .na-item:first-of-type{border-top:0}
.next-action{color:var(--teal-2);margin-top:3px}
.cal-day.hoje .hoje-slot{width:100%;text-align:left;min-height:44px}
.hoje-slot .sb{display:block}
.hoje-slot .sb .pill{vertical-align:middle}
.hoje-slot .sb .muted{font-size:14px}

/* v1.12.9 — Fase B: grelha de limiares com foto do exame */
.sheet:has(.ag-wrap){max-width:1100px}
.ag-wrap{margin-top:8px}
.ag-od{color:#c0262d} .ag-oe{color:#1d4ed8}
.ag-photo{position:sticky;top:-14px;z-index:3;background:var(--bg);margin:0 -14px;padding:4px 14px 6px;border-bottom:1px solid var(--line)}
.ag-photo img{display:block;width:100%;max-height:30vh;object-fit:contain;background:#fff;border-radius:10px;border:1px solid var(--line);cursor:zoom-in}
.ag-photo.big img{max-height:58vh}
.ag-photo-bar{display:flex;gap:6px;justify-content:flex-end;margin-top:4px}
.ag-photo-bar .btn{min-height:32px;font-size:13px}
.ag-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.audio-grid{width:100%;border-collapse:separate;border-spacing:3px;font-size:14px;table-layout:fixed}
table.audio-grid th{font-size:12px;font-weight:700;text-align:center;padding:2px;color:var(--muted)}
table.audio-grid th.ag-od{color:#c0262d} table.audio-grid th.ag-oe{color:#1d4ed8}
table.audio-grid tbody th{width:44px;color:var(--text);font-size:13px}
.ag-cell{width:100%;min-height:42px;border-radius:9px;border:1px solid var(--line);background:var(--card);font:inherit;font-weight:700;font-size:15px;cursor:pointer;padding:0}
.ag-cell.od{color:#c0262d} .ag-cell.oe{color:#1d4ed8}
.ag-cell.nr{background:#f4f4f4;font-style:italic}
.ag-cell.sel{outline:3px solid var(--teal);outline-offset:-1px;background:var(--teal-50)}
.ag-vocal{margin-top:10px}
.ag-vocal-grid{display:grid;grid-template-columns:auto 1fr 1fr;gap:6px;align-items:center}
.ag-vocal-grid b{text-align:center}
.ag-vocal-grid input{min-height:40px;text-align:center;font-size:16px;border:1px solid var(--line);border-radius:9px;width:100%}
.ag-vocal-grid input.bad{border-color:var(--red);background:var(--red-50)}
.ag-pta{margin:8px 0 4px;color:var(--navy);font-weight:600}
.ag-pad{position:sticky;bottom:calc(-20px - var(--sab));z-index:3;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px;margin:8px -6px 0;box-shadow:0 -4px 14px rgba(0,0,0,.08)}
.ag-pad .row{flex-wrap:nowrap}
.ag-pad .btn.sm{padding:0 10px;min-height:40px}
.ag-sel{flex:1;font-size:13px;min-width:0}
.ag-chips{display:flex;gap:5px;overflow-x:auto;padding:6px 0 2px;-webkit-overflow-scrolling:touch}
.ag-chip{flex:0 0 auto;min-width:46px;min-height:42px;border-radius:10px;border:1px solid var(--line);background:var(--bg);font-weight:700;font-size:15px;cursor:pointer}
.ag-chip:active{background:var(--teal-50)}
.ag-zoom{position:fixed;inset:0;z-index:80;background:#000;display:flex;flex-direction:column;padding-top:var(--sat)}
.ag-zoom-bar{display:flex;gap:6px;padding:8px}
.ag-zoom-scroll{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}
.ag-zoom-scroll img{display:block;max-width:100%;margin:0 auto}
@media (min-width:900px){
  .ag-wrap:has(.ag-photo){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
  .ag-photo{top:0;margin:0;padding:0;border:0}
  .ag-photo img{max-height:78vh}
  .ag-photo.big img{max-height:none}
}

/* ===================== v1.13.0 — melhorias de design 2–8 ===================== */
/* 5. Tipografia: Montserrat (local, offline) só em títulos; corpo e campos em system-ui 16px */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:500 800;font-display:swap;
  src:url(../vendor/fonts/montserrat-latin-var.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:500;font-display:swap;src:url('../vendor/fonts/fraunces-500.woff2') format('woff2')}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:700;font-display:swap;src:url('../vendor/fonts/fraunces-700.woff2') format('woff2')}
:root{--font-brand:Fraunces,Georgia,'Iowan Old Style',serif;--font-title:'Montserrat',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;--p-sono:#db2777}
.topbar h1:not(#title),h1:not(.lock-logo),h2,h3,.sheet-head h2,.kpi .v,.empty .et,.blk summary .bt{font-family:var(--font-title)}
.topbar h1{font-size:18px;font-weight:700;letter-spacing:.2px}
h2{font-weight:700} h3{font-weight:700}
legend{font-family:var(--font-title);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--teal)}
input,select,textarea{font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}

/* 6. Segmentos e chips */
.seg{background:var(--teal-50)}
.seg button{color:var(--navy)}
.seg button.on{background:var(--navy);color:#fff;box-shadow:0 1px 3px rgba(23,80,33,.25)}
.chip{color:var(--navy);border-color:#d6e6d9}
.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.chip.on::before{content:'✓ ';font-weight:800}

/* 2. Lista de doentes — faixa por pilar, código monoespaçado, 1 estado */
.p-legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--muted);padding:0 2px}
.p-legend span{display:inline-flex;align-items:center;gap:4px}
.p-legend .lg{width:9px;height:9px;border-radius:2px;display:inline-block}
.lg.onco{background:var(--p-onco)} .lg.neo{background:var(--p-neo)} .lg.ped{background:var(--p-ped)} .lg.sono{background:var(--p-sono)} .lg.oto{background:var(--p-oto)} .lg.rino{background:var(--p-rino)}
.pt-row{border-left:5px solid var(--p-geral);padding-left:13px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.s-onco{border-left-color:var(--p-onco)!important} .s-neo{border-left-color:var(--p-neo)!important} .s-ped{border-left-color:var(--p-ped)!important}
.s-sono{border-left-color:var(--p-sono)!important} .s-oto{border-left-color:var(--p-oto)!important} .s-rino{border-left-color:var(--p-rino)!important} .s-none{border-left-color:var(--p-geral)!important}
.pt-code{font-family:var(--mono);font-weight:700;font-size:18px;letter-spacing:.3px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-code.big{font-size:24px}
.pt-row .s{margin-top:1px}
.pill.st{font-size:11.5px;padding:3px 9px;flex:none}
.pill.orange{background:var(--card)1e8;color:#c2410c;border:1px solid #fed7aa}
.pill.st.green{background:var(--green-50);color:var(--navy);border:1px solid #c8e6cf}
.pill.st.amber{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.pill.st.red{border:1px solid #f3c0c0}
.pill.st.gray{border:1px solid #e2e8f0}
.pill.sono{background:#fce8f2;color:var(--p-sono)}

/* 3. Ficha do doente — cabeçalho + blocos recolhíveis com 1 acção principal */
.pt-head{border-left:5px solid var(--p-geral)}
.pt-sub{font-size:14px;margin-top:2px}
.icon-btn.dark{color:var(--navy);font-size:18px;width:40px;height:40px;flex:none}
.icon-btn.dark:active{background:var(--teal-50)}
details.blk{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}
details.blk>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:10px 12px;min-height:54px;cursor:pointer;color:var(--text);margin:0;font-weight:600}
details.blk>summary::-webkit-details-marker{display:none}
.blk .bi{width:34px;height:34px;border-radius:10px;background:var(--teal-50);display:flex;align-items:center;justify-content:center;font-size:17px;flex:none}
.blk.k-onco .bi{background:var(--onco-50)} .blk.k-neo .bi{background:#e3f6f8} .blk.k-ped .bi{background:#fdeee4} .blk.k-sono .bi{background:#fce8f2} .blk.k-rino .bi{background:#e6eefc} .blk.k-oto .bi{background:#fef9c3}
.blk .bt{flex:1;font-size:15px;font-weight:700;color:var(--text)}
.blk .bm{font-size:12px;color:var(--muted);font-weight:600;max-width:42%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.blk .bc::after{content:'▾';color:var(--chev);font-size:14px;display:inline-block;transition:transform .15s}
.blk[open] .bc::after{transform:rotate(180deg)}
.blk-body{padding:0 12px 12px;border-top:1px solid var(--line-soft);padding-top:10px}
.blk-body>.card{border:0;padding:0;margin:0;background:transparent;border-radius:0}
.blk-body>.card>h3:first-child{display:none}
.blk-body>.card>h3:first-child+p.small{margin-top:0!important}
.blk-body>.card.cg-card{border-left:0}
.blk-body>.card>.row:first-child>h3{display:none}
.btn.cta{margin-top:12px}
.btn.navy:active,.btn.navy:hover{background:var(--navy-2);border-color:var(--navy-2)}

/* 4. Anexos — foto primeiro */
.att-headrow{min-height:0}
.att-hero{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;margin-bottom:10px}
.att-hero-img{display:block;width:100%;padding:0;border:1px solid var(--line);border-radius:10px;background:#f8faf8;overflow:hidden;cursor:zoom-in}
.att-hero-img img{display:block;width:100%;max-height:46vh;object-fit:contain;background:#fff}
.att-hero-cap{margin:8px 2px 6px}
.att-hero-cap b{font-family:var(--font-title);font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-hero-act .btn{min-height:44px}
.att-sub{text-transform:uppercase;letter-spacing:.5px;font-size:11px;margin:4px 0 6px}
.gallery{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}
.thumb.add{border:1.5px dashed #c8d6cb;background:#fafcfa;color:var(--teal);justify-content:center}
.thumb.add .ficon{background:transparent;font-size:28px;color:var(--teal)}

/* 7. Estados vazios */
.empty{padding:40px 20px}
.empty .ic{width:92px;height:92px;margin:0 auto 14px;border-radius:26px;background:var(--teal-50);box-shadow:0 0 0 6px #f3faf4;display:flex;align-items:center;justify-content:center;font-size:44px}
.empty p{margin:4px auto 16px;max-width:300px}
.empty .et{font-size:17px;font-weight:700;color:var(--text);margin-bottom:4px}
.empty .et+.es{margin-top:0}
.empty .es{font-size:14px;color:var(--muted)}
.empty .btn{min-width:180px}
.blk-body .empty{padding:18px 10px 4px}
.blk-body .empty .ic{width:72px;height:72px;font-size:34px;border-radius:20px}

/* 8. Folhas (sheets) — pega, cabeçalho fixo, corpo com scroll, «Guardar» fixo em baixo */
.sheet{background:var(--bg);border-radius:18px 18px 0 0;overflow:hidden;box-shadow:0 -8px 30px rgba(0,0,0,.18);transition:transform .2s ease-out;max-height:calc(100vh - max(12px, env(safe-area-inset-top, 0px)) - 8px);max-height:calc(100dvh - max(12px, env(safe-area-inset-top, 0px)) - 8px)}
.sheet-backdrop{padding-top:max(12px, env(safe-area-inset-top, 0px));box-sizing:border-box}
.sheet-grab{background:var(--card);display:flex;justify-content:center;padding:8px 0 2px;touch-action:none}
.sheet-grab span{width:38px;height:5px;border-radius:3px;background:var(--grab)}
.sheet-head{border-radius:0;padding:6px 8px 10px 16px;flex:none;touch-action:none}
.sheet-head h2{text-align:left;font-size:17px;font-weight:700}
.sheet-head .btn.ghost{color:var(--teal);font-weight:600}
.sheet-body{flex:1;min-height:0}
.sheet.has-foot .sheet-body{padding-bottom:20px}
.sheet-foot{flex:none;background:var(--card);border-top:1px solid var(--line);padding:10px 14px calc(10px + var(--sab))}
.sheet-foot .btn{min-height:50px;font-size:16px;border-radius:14px}
.sheet.has-foot .ag-pad{bottom:-20px}
@media (min-width:760px){.sheet{border-radius:18px;max-height:90vh}.sheet-grab{display:none}.sheet-head{padding-top:10px}}
.fab{background:var(--navy);border-radius:18px;box-shadow:0 6px 18px rgba(23,80,33,.35)}
input[name=codigo]{font-family:var(--mono);font-weight:700;letter-spacing:.3px}
.audio-list .att b{font-size:14px}

/* ===================== v1.14.0 — melhorias de design 9–15 ===================== */
/* 9. Lista de cirurgias — faixa por pilar, código, 1 estado; período em segmento; barra de filtro removível */
.s-legend{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:11.5px;color:var(--muted);padding:0 2px}
.s-legend .pill.st{font-size:10.5px;padding:1px 7px}
.pt-row .chev{color:var(--chev);flex:none}
.filterbar{display:flex;align-items:center;gap:6px;background:var(--teal-50);border:1px solid #c8e6cf;border-radius:12px;padding:6px 6px 6px 10px;margin-bottom:10px;color:var(--navy);font-size:14px}
.filterbar .fb-t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.filterbar .fb-x{border:0;background:transparent;color:var(--navy);font-size:16px;width:36px;height:36px;border-radius:10px;cursor:pointer;flex:none}
.filterbar .fb-x:active{background:#d6ecda}
.filterbar .fb-back{color:var(--navy);font-weight:700;padding-left:4px;flex:none}
#s-adv>summary,#p-filters>summary{cursor:pointer}

/* 10. Alertas — cartão limpo, «✓ Feito» + «⋯» */
.al-sec{font-family:var(--font-title);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;margin:16px 2px 8px;color:var(--muted)}
.al-sec span{font-weight:600;opacity:.75}
.al-sec.late{color:var(--red)} .al-sec.soon{color:#b45309} .al-sec.later{color:var(--teal)}
.al-card{padding:12px 12px 10px 14px}
.al-top{align-items:flex-start;gap:8px}
.al-t{flex:1;min-width:0;font-size:15.5px;line-height:1.3}
.al-who{font-size:13px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.al-code{font-family:var(--mono);font-weight:700;font-size:14px;color:var(--text);text-decoration:none;letter-spacing:.2px}
.al-items{margin-top:6px}
.al-notes{white-space:pre-line;margin:6px 0 0;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.al-act{margin-top:10px;flex-wrap:nowrap}
.al-act .btn.navy{min-width:104px}
.al-more{min-width:44px;font-weight:800;letter-spacing:1px;background:var(--teal-50);border-color:#c8e6cf;color:var(--navy)}
.alert-item.done .al-t{text-decoration:line-through;text-decoration-color:#9ca3af}
/* Menu «⋯» (popover) */
.menu-backdrop{position:fixed;inset:0;z-index:60;background:transparent}
.pop-menu{position:fixed;background:var(--card);border-radius:14px;box-shadow:0 10px 34px rgba(0,0,0,.2),0 0 0 1px rgba(0,0,0,.05);overflow:hidden;animation:fade .12s}
.pm-item{display:flex;align-items:center;gap:10px;width:100%;min-height:46px;padding:0 14px;border:0;border-bottom:1px solid var(--line-soft);background:var(--card);font-size:15px;text-align:left;cursor:pointer;color:var(--text)}
.pm-item:last-child{border-bottom:0}
.pm-item:active,.pm-item:focus-visible{background:var(--teal-50);outline:none}
.pm-item .pm-l{flex:1}
.pm-item .pm-ic{font-size:17px}
.pm-item.danger{color:var(--red)}

/* 11. Consulta do dia — ocupadas = cartão de doente; livres discretas */
.hj-nav{display:flex;align-items:center;gap:6px}
.hj-nav .icon-btn.dark{font-size:24px;font-weight:700}
.hj-day{flex:1;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1px}
.hj-day b{font-family:var(--font-title);font-size:17px}
.hj-day .pill{margin-top:4px}
.hj-list{display:flex;flex-direction:column;gap:8px}
.hj-row{display:flex;align-items:flex-start;gap:8px}
.hj-h{width:46px;flex:none;font-family:var(--mono);font-weight:700;font-size:13px;color:var(--navy);padding-top:14px;font-variant-numeric:tabular-nums}
.hj-card{flex:1;min-width:0;padding:10px 6px 10px 12px;gap:8px}
.hj-card .s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hj-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.pill.hj-tipo{background:#eef1f5;color:#334155;font-size:11.5px;padding:3px 9px}
.pill.hj-tipo.grupo{background:var(--onco-accent-50);color:var(--onco-accent)} /* OncoMed — consulta de grupo em jade (era roxo) */
.hj-more{min-width:34px;padding:0 6px;color:var(--muted);font-weight:800}
.hj-row.free .hj-h{color:var(--chev);font-weight:600;padding-top:8px}
.hj-free{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px;padding:0 12px;border:1.5px dashed #cfd8d0;border-radius:10px;background:transparent;color:var(--muted);font-size:13px;cursor:pointer;text-align:left}
.hj-free b{color:var(--teal);font-size:13px;white-space:nowrap}
.hj-free:active{background:var(--teal-50)}

/* 12. Dashboard — KPIs tocáveis */
.kpi.tap{position:relative;cursor:pointer;padding-right:22px;transition:box-shadow .12s,border-color .12s}
.kpi.tap::after{content:'›';position:absolute;top:8px;right:10px;color:var(--teal);font-weight:800;font-size:18px}
.kpi.tap:active,.kpi.tap:focus-visible{border-color:var(--teal);box-shadow:0 0 0 2px #c8e6cf;outline:none}
.kpi.warn .v{color:var(--red)}
.tap-row{cursor:pointer;border-radius:8px}
.tap-row:active{background:var(--teal-50)}
.tap-row .chev{color:var(--teal);width:12px;text-align:right}

/* 13. Ficha de cirurgia em blocos */
.sg-head .pt-code.big{font-size:22px}
.sg-proc{font-weight:700;font-size:15.5px;margin-top:4px}
.blk .bm.t-amber,.t-amber{color:#b45309} .blk .bm.t-red{color:var(--red)}
.sheet-body details.blk>summary{min-height:52px}

/* 14. Busca rápida por código */
.qs-sheet{min-height:min(78vh,640px)}
.qs-box{position:sticky;top:-14px;z-index:2;background:var(--bg);margin:-14px -14px 6px;padding:12px 14px 8px}
.qs-box input{width:100%;min-height:50px;border:2px solid var(--teal);border-radius:14px;padding:0 14px;font-family:var(--mono);font-weight:700;font-size:18px;background:var(--card);letter-spacing:.3px}
.qs-box input:focus{outline:none;box-shadow:0 0 0 3px #c8e6cf}
.qs-h{font-family:var(--font-title);font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:12px 2px 6px}
.qs-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-left:5px solid var(--p-geral);border-radius:12px;padding:9px 12px;margin-bottom:6px;cursor:pointer;min-height:54px}
.qs-row:active{background:var(--teal-50)}
.qs-row .main{flex:1;min-width:0;display:flex;flex-direction:column}
.qs-row .pt-code{font-size:17px}
.qs-row .s{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qs-row .chev{color:var(--chev)}
mark{background:#fde68a;color:inherit;border-radius:3px;padding:0 1px}

/* 15. Protocolos alinhados */
.pr-sec{font-family:var(--font-title);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;margin:18px 2px 8px}
.pr-sec.c-onco{color:var(--p-onco)} .pr-sec.c-neo{color:var(--p-neo)} .pr-sec.c-ped{color:var(--p-ped)} .pr-sec.c-rino{color:var(--p-rino)} .pr-sec.c-oto{color:var(--p-oto)}
#pr-chips{margin-bottom:8px}
.pr-legal{margin:4px 0 6px}
.pr-legal>summary{cursor:pointer;list-style:none}
.pr-legal>summary::-webkit-details-marker{display:none}
.pr-legal>summary b{text-decoration:underline}
.pr-mom{padding:8px 0;border-bottom:1px solid var(--line-soft)}
.pr-mom:last-of-type{border-bottom:0}
.pr-mom ul{margin:4px 0 0;padding-left:20px;font-size:14px}
.as-lbl{font-family:var(--font-title);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:12px 2px 6px}
.as-lbl:first-child{margin-top:0}
.as-card{cursor:default;margin-bottom:4px}
#as-q{width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;padding:0 12px;background:var(--card);margin-bottom:6px}
.as-pick{max-height:236px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--card);-webkit-overflow-scrolling:touch}
.pk-row{display:flex;align-items:center;gap:10px;padding:8px 12px;min-height:50px;border-bottom:1px solid var(--line-soft);border-left:5px solid var(--p-geral);cursor:pointer}
.pk-row:last-of-type{border-bottom:0}
.pk-row .main{flex:1;min-width:0;display:flex;flex-direction:column}
.pk-row .pt-code{font-size:16px}
.pk-row .s{font-size:12.5px;color:var(--muted)}
.pk-row input{width:22px;height:22px;accent-color:var(--navy);flex:none}
.pk-row:has(input:checked){background:var(--teal-50)}

/* Barra de topo: 🔍 + 🔒 + ⚙️ */
.topbar-actions .icon-btn{width:42px}

/* v1.14.2 — pilares adicionais */
.pill.extra{font-size:10.5px;padding:1px 7px;font-weight:600;opacity:.9;border:1px dashed currentColor}
.pt-extra{margin-top:3px;display:flex;gap:4px;flex-wrap:wrap}
/* v1.14.5 — procedimentos secundários */
.sec-g{margin:2px 0 6px}
.sec-gt{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin:8px 0 2px}
.check.sec{min-height:36px;font-size:14px;line-height:1.25}
.check.sec input{flex:none}
.check.sec.sug{font-weight:600}
.check.sec.sug::after{content:'★';color:var(--amber);font-size:12px;margin-left:-4px}
.sec-pill{white-space:normal;text-align:left}

/* v1.14.10 — Início */
.topbar h1#title{cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;border-radius:6px;transition:opacity .12s}
.topbar h1#title:active{opacity:.7}
.topbar h1#title:focus-visible{outline:2px solid rgba(255,255,255,.7);outline-offset:3px}
.home-hero{background:var(--teal-50);border:1px solid #cfe8d5;border-left:5px solid var(--navy);border-radius:var(--radius);padding:12px 14px;margin-bottom:10px}
.home-hero .hh-date{font-family:var(--font-title);font-weight:700;font-size:18px;color:var(--navy)}
.home-hero .hh-sum{font-size:13px;color:var(--muted);margin-top:2px}
.home-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.home-actions .btn{min-height:48px;font-size:16px;font-weight:700}
.home-appt{text-decoration:none;color:inherit;padding-top:8px;padding-bottom:8px}
.home-appt .ha-h{font-family:var(--mono);font-weight:700;color:var(--navy);min-width:44px}
.home-sec{margin:4px 2px 6px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;font-size:11px}

/* v1.14.13 — wordmark (OncoMed; herdado do OtoMed) em Fraunces */
/* v1.14.14 — tamanho igual à OtoMed Family */
.topbar h1,
.topbar h1#title,
.lock-logo{
  font-family:var(--font-brand);
  font-weight:500;
  font-size:1.5rem;
  letter-spacing:-.03em;
}

/* v1.14.15 — logótipo A1 (marca branca) junto ao wordmark */
.topbar h1#title.brand{display:inline-flex;align-items:center;gap:8px}
.brand-mark{width:28px;height:28px;display:block;flex:none}
.brand-name{font-family:var(--font-brand);line-height:1}
.lock-logo{display:flex;flex-direction:column;align-items:center;gap:10px} /* v1.14.18 — sem color:#fff (wordmark branco em caixa branca); ver secção 22 */
.lock-mark{width:56px;height:56px;display:block}

/* v1.14.16 — sino de alertas na barra de topo; tabbar com 5 separadores */
.topbar-alert{position:relative;color:#fff}
.topbar-alert .badge{top:2px;right:2px;left:auto;box-shadow:0 0 0 2px var(--teal,#0b6e63)}
.tabbar.five a{font-size:11px}

/* ===================== v1.14.17 — Aparência: modo escuro e alto contraste (como a OtoMed Family) ===================== */
/* A barra de topo verde #175021 e os ícones brancos mantêm-se em todos os temas (marca). */
.theme-seg{flex-wrap:wrap}
.theme-seg button{flex:1 1 40%}

[data-theme="dark"]{
  color-scheme:dark;
  --bg:#111612; --card:#1a221c; --line:#2a352c; --text:#eef3ee; --muted:#a3aea5;
  --navy:#b7e0c0; --navy-2:#2c8a40; --teal:#43a95a; --teal-2:#86d496; --teal-50:#1d3322;
  --red:#ff8f8f; --red-50:#3a1f22; --amber:#f2b552; --amber-50:#372a14; --green:#6fcf83; --green-50:#18301e;
  --lime:#9ad566; --lime-50:#24321a;
  --p-onco:#6fcf83; --onco-50:#1d3322; --onco-line:#2f4a35; --onco-ink:#b7e0c0; --onco-accent:#5fc7b5; --onco-accent-50:#17302c;
  --p-neo:#3cc6d4; --p-ped:#fb8c4e; --p-rino:#6ea8fe; --p-oto:#e8b923; --p-geral:#9a9a99; --p-sono:#f472b6;
  --surface-2:#222c24; --line-soft:#253027; --track:#2a352c; --grab:#4a564c; --chev:#6f7d72;
  --fill:#23803a; /* preenchimento verde com texto branco */
}
[data-theme="dark"] .tabbar{background:#121814;border-top-color:var(--line)}
[data-theme="dark"] .tabbar a{color:#93a096}
[data-theme="dark"] .tabbar a.active{color:var(--teal-2)}
[data-theme="dark"] .tabbar a .ti{opacity:.6}
[data-theme="dark"] .tabbar a.active .ti{opacity:1}
/* Preenchimentos que usavam --navy/--teal com texto branco */
[data-theme="dark"] .btn.primary,
[data-theme="dark"] .btn.navy,
[data-theme="dark"] .chip.on,
[data-theme="dark"] .seg button.on,
[data-theme="dark"] .fab{background:var(--fill);border-color:var(--fill);color:#fff}
[data-theme="dark"] .btn.primary:hover,[data-theme="dark"] .btn.primary:active,
[data-theme="dark"] .btn.navy:hover,[data-theme="dark"] .btn.navy:active{background:#1c6e31;border-color:#1c6e31}
[data-theme="dark"] .stagebar span.on{background:var(--teal)}
[data-theme="dark"] #toast{background:#2b3a2e;color:#fff;box-shadow:0 6px 20px rgba(0,0,0,.5)}
[data-theme="dark"] .lock{background:#175021}
[data-theme="dark"] .badge{background:#d42a3a}
[data-theme="dark"] .btn.danger{border-color:#6b2a30}
[data-theme="dark"] .btn.danger.solid{background:#c0303c;border-color:#c0303c;color:#fff}
[data-theme="dark"] .seg{background:#16241a}
[data-theme="dark"] .seg button{color:var(--muted)}
[data-theme="dark"] .chip{border-color:#33443a;color:var(--text)}
[data-theme="dark"] select{background-image:linear-gradient(45deg,transparent 50%,#a3aea5 50%),linear-gradient(135deg,#a3aea5 50%,transparent 50%)}
[data-theme="dark"] input::placeholder,[data-theme="dark"] textarea::placeholder{color:#7d8a80}
[data-theme="dark"] .sheet-backdrop{background:rgba(0,0,0,.6)}
[data-theme="dark"] .sheet{box-shadow:0 -8px 30px rgba(0,0,0,.55)}
[data-theme="dark"] .pop-menu{box-shadow:0 10px 34px rgba(0,0,0,.6),0 0 0 1px var(--line)}
[data-theme="dark"] .pt-row{box-shadow:none}
[data-theme="dark"] .warn{color:#f5cf8a}
[data-theme="dark"] .note{color:var(--text)}
[data-theme="dark"] mark{background:#6b5410;color:#fff}
[data-theme="dark"] .next-banner .na-item{border-top-color:rgba(255,255,255,.08)}
[data-theme="dark"] .al-sec.soon,[data-theme="dark"] .t-amber,[data-theme="dark"] .blk .bm.t-amber{color:var(--amber)}
/* Bordas/tintas verdes claras */
[data-theme="dark"] .filterbar,[data-theme="dark"] .al-more,[data-theme="dark"] .home-hero{border-color:#2f4a35}
[data-theme="dark"] .home-hero{border-left-color:var(--teal)}
[data-theme="dark"] .filterbar .fb-x:active{background:#25402b}
[data-theme="dark"] .kpi.tap:active,[data-theme="dark"] .kpi.tap:focus-visible,
[data-theme="dark"] .qs-box input:focus{box-shadow:0 0 0 3px #2f4a35}
[data-theme="dark"] .empty .ic{box-shadow:0 0 0 6px #172119}
[data-theme="dark"] .thumb.add{border-color:#3a4a3d;background:transparent}
[data-theme="dark"] .att-hero-img{background:#0d110e}
[data-theme="dark"] .slot{border-left-color:#3a4a3d}
[data-theme="dark"] .hj-free{border-color:#3a4a3d}
[data-theme="dark"] .hj-row.free .hj-h{color:#6f7d72}
/* Pílulas e ícones de bloco por pilar */
[data-theme="dark"] .pill.onco,[data-theme="dark"] .blk.k-onco .bi{background:#2b2342}
[data-theme="dark"] .pill.neo,[data-theme="dark"] .blk.k-neo .bi{background:#16323a}
[data-theme="dark"] .pill.ped,[data-theme="dark"] .blk.k-ped .bi{background:#3a2818}
[data-theme="dark"] .pill.rino,[data-theme="dark"] .blk.k-rino .bi{background:#1b2840}
[data-theme="dark"] .pill.oto,[data-theme="dark"] .blk.k-oto .bi{background:#352d10}
[data-theme="dark"] .pill.sono,[data-theme="dark"] .blk.k-sono .bi{background:#3a1d2d}
[data-theme="dark"] .pill.orange{background:#3a2416;color:#fdba8c;border-color:#5a3520}
[data-theme="dark"] .pill.st.green{color:var(--green);border-color:#2f4a35}
[data-theme="dark"] .pill.st.amber{background:var(--amber-50);color:var(--amber);border-color:#5a4520}
[data-theme="dark"] .pill.st.red{border-color:#5a2a30}
[data-theme="dark"] .pill.st.gray{border-color:var(--line)}
[data-theme="dark"] .pill.hj-tipo{background:var(--surface-2);color:#cbd5e1}
[data-theme="dark"] .pill.hj-tipo.grupo{background:var(--onco-accent-50);color:var(--onco-accent)}
[data-theme="dark"] .pill.stage{background:color-mix(in srgb,var(--c) 28%,#1a221c);color:color-mix(in srgb,var(--c) 55%,#fff)}
[data-theme="dark"] .ped-map .pm{background:var(--surface-2);border-color:var(--line)}
[data-theme="dark"] .ped-map .pm small{color:var(--muted)}
[data-theme="dark"] .ped-map .pm.red{background:#3a1f22;border-color:#7a2f36}
[data-theme="dark"] .ped-map .pm.amber{background:#372a14;border-color:#7a5a20}
[data-theme="dark"] .ped-map .pm.green{background:#18301e;border-color:#2f6a3d}
/* Audiograma */
[data-theme="dark"] .ag-od,[data-theme="dark"] .ag-cell.od,[data-theme="dark"] table.audio-grid th.ag-od{color:#ff7b7b}
[data-theme="dark"] .ag-oe,[data-theme="dark"] .ag-cell.oe,[data-theme="dark"] table.audio-grid th.ag-oe{color:#7aa8ff}
[data-theme="dark"] .ag-cell.nr{background:#262e28}
[data-theme="dark"] .ag-pad{box-shadow:0 -4px 14px rgba(0,0,0,.5)}

/* Alto contraste (claro): fundo branco, texto preto, bordas fortes */
[data-theme="contrast"]{
  color-scheme:light;
  --bg:#fff; --card:#fff; --line:#000; --text:#000; --muted:#1a1a1a;
  --navy:#000; --navy-2:#0b3d16; --teal:#0b5d1e; --teal-2:#0b5d1e; --teal-50:#fff;
  --red:#9b0000; --red-50:#fff; --amber:#7a3f00; --amber-50:#fff; --green:#0b5d1e; --green-50:#fff;
  --surface-2:#fff; --line-soft:#000; --track:#d9d9d9; --grab:#000; --chev:#000;
  --p-onco:#0b5d1e; --onco-50:#fff; --onco-line:#000; --onco-ink:#000; --onco-accent:#0b4f45; --onco-accent-50:#fff;
}
[data-theme="contrast"] a{color:#000;text-decoration:underline}
[data-theme="contrast"] .tabbar{background:#fff;border-top:2px solid #000}
[data-theme="contrast"] .tabbar a{color:#000}
[data-theme="contrast"] .tabbar a .ti{filter:none;opacity:1}
[data-theme="contrast"] .tabbar a.active{background:#000;color:#fff;text-decoration:none}
[data-theme="contrast"] .card,[data-theme="contrast"] .item,[data-theme="contrast"] .btn,[data-theme="contrast"] .kpi,
[data-theme="contrast"] .chip,[data-theme="contrast"] details.blk,[data-theme="contrast"] .note,[data-theme="contrast"] .filterbar,
[data-theme="contrast"] .home-hero,[data-theme="contrast"] .qs-row,[data-theme="contrast"] .slot,[data-theme="contrast"] .thumb,
[data-theme="contrast"] input[type=text],[data-theme="contrast"] input[type=date],[data-theme="contrast"] input[type=number],
[data-theme="contrast"] input[type=search],[data-theme="contrast"] input[type=password],[data-theme="contrast"] select,[data-theme="contrast"] textarea{
  border-width:2px;border-color:#000;box-shadow:none}
[data-theme="contrast"] .pt-row,[data-theme="contrast"] .qs-row,[data-theme="contrast"] .pt-head{border-left-width:6px}
[data-theme="contrast"] .btn.primary,[data-theme="contrast"] .btn.navy,[data-theme="contrast"] .chip.on,
[data-theme="contrast"] .seg button.on,[data-theme="contrast"] .fab{background:#000;border-color:#000;color:#fff}
[data-theme="contrast"] .seg{background:#fff;border:2px solid #000}
[data-theme="contrast"] .seg button{color:#000}
[data-theme="contrast"] .pill{border:1.5px solid currentColor}
[data-theme="contrast"] .pill.onco,[data-theme="contrast"] .pill.neo,[data-theme="contrast"] .pill.ped,[data-theme="contrast"] .pill.rino,
[data-theme="contrast"] .pill.oto,[data-theme="contrast"] .pill.sono,[data-theme="contrast"] .pill.orange,[data-theme="contrast"] .pill.st.amber,
[data-theme="contrast"] .pill.hj-tipo,[data-theme="contrast"] .blk .bi{background:#fff;color:#000}
[data-theme="contrast"] #toast{background:#000;color:#fff}
[data-theme="contrast"] .lock{background:#175021}
[data-theme="contrast"] .sheet-backdrop{background:rgba(0,0,0,.6)}
[data-theme="contrast"] .warn{color:#000;border:2px solid #000}
[data-theme="contrast"] .next-banner{border:2px solid #000;border-left:6px solid #000;background:#fff}
[data-theme="contrast"] .tabbar a{text-decoration:none}

/* ===================== v1.14.18 — propostas 17, 18, 20, 21, 22, 23, 24 ===================== */
/* 17 · Deslizar doentes */
.sw{position:relative;border-radius:var(--radius);overflow:hidden;isolation:isolate}
.sw>.item{position:relative;z-index:1;touch-action:pan-y;-webkit-user-select:none;user-select:none;transition:transform .22s cubic-bezier(.2,.8,.2,1)}
.sw.dragging>.item{cursor:grabbing}
.sw-a{position:absolute;top:0;bottom:0;z-index:0;width:62%;border:0;color:#fff;font-family:var(--font-title);font-weight:700;font-size:15px;
  display:flex;align-items:center;padding:0 16px;cursor:pointer;visibility:hidden;white-space:nowrap}
.sw-l{left:0;background:#248a38;justify-content:flex-start}
.sw-r{right:0;background:#b45f06;justify-content:flex-end}
.sw.show-l .sw-l,.sw.show-r .sw-r{visibility:visible}
[data-theme="dark"] .sw-l{background:var(--fill)}
[data-theme="dark"] .sw-r{background:#a35a0a}
[data-theme="contrast"] .sw-l{background:#0b5d1e}
[data-theme="contrast"] .sw-r{background:#7a3f00}

/* 18 · Folhas iOS (meia-folha) */
.sheet-backdrop{padding-top:max(12px, calc(var(--sat) + 10px));background:rgba(14,42,71,calc(.4 * var(--sheet-dim,1)))}
[data-theme="dark"] .sheet-backdrop,[data-theme="contrast"] .sheet-backdrop{background:rgba(0,0,0,calc(.6 * var(--sheet-dim,1)))}
.sheet{max-height:calc(100vh - max(12px, calc(var(--sat) + 10px)));max-height:calc(100dvh - max(12px, calc(var(--sat) + 10px)));border-radius:14px 14px 0 0}
.sheet-grab{padding:7px 0 3px;cursor:grab;border-radius:14px 14px 0 0}
.sheet-grab span{width:36px;height:5px;border-radius:3px}
.sheet-head{cursor:grab}
.sheet-head h2{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-head .btn{flex:none}
@media (max-width:759.98px){.sheet.has-foot{min-height:min(55vh, 100%);min-height:min(55dvh, 100%)}}
.sheet-backdrop.closing{animation:otm-fadeout .2s forwards;pointer-events:none}
.sheet-backdrop.closing .sheet{transform:translateY(105%)!important;transition:transform .2s ease-in!important}
@media (min-width:760px){.sheet{border-radius:18px}.sheet-head{cursor:default}.sheet-backdrop.closing .sheet{transform:scale(.97)!important;opacity:0;transition:transform .18s,opacity .18s!important}}
@keyframes otm-fadeout{to{opacity:0}}
html.sheet-open,html.sheet-open body{overflow:hidden}
@media (prefers-reduced-motion:reduce){.sheet,.sw>.item{transition:none!important;animation:none!important}}

/* 20 · Retomar */
.resume-card{border-left:5px solid var(--teal);padding:12px 14px}
.resume-card .rs-h{font-family:var(--font-title);font-weight:700;font-size:15px;color:var(--navy)}
.resume-card .rs-t{margin-top:2px;font-size:15px}
.resume-card .rs-code{font-family:var(--mono)}
.resume-card .rs-sub{font-size:13px;color:var(--muted);margin-top:1px}
.resume-card .rs-act{margin-top:10px}
[data-theme="contrast"] .resume-card{border-left-width:6px;border-left-color:#000}

/* 21 · Filtros guardados */
.fsaved{color:var(--teal-2);font-weight:600;margin:-2px 2px 0;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.fsaved.oneshot{color:var(--muted)}
.linkbtn{border:0;background:transparent;color:var(--teal-2);text-decoration:underline;font:inherit;font-weight:700;cursor:pointer;padding:0 4px;min-height:28px}

/* 22 · PIN: wordmark legível na caixa branca */
#lock .lock-box .lock-logo{flex-direction:row;justify-content:center;align-items:center;gap:10px;color:#1b2a5a;margin-bottom:4px}
#lock .lock-box .lock-logo .brand-name{font-family:var(--font-brand);font-size:1.5rem;font-weight:500;letter-spacing:-.03em;color:inherit}
#lock .lock-mark{width:44px;height:44px;padding:5px;border-radius:12px;background:#175021;box-sizing:border-box}
#lock .lock-box > p:not(.err){color:#175021;font-weight:600;margin:8px 0 14px}
[data-theme="dark"] #lock .lock-box .lock-logo{color:#eef3ee}
[data-theme="dark"] #lock .lock-box > p:not(.err){color:var(--teal-2)}
[data-theme="dark"] #lock .lock-mark{box-shadow:0 0 0 1px #2f4a35}
[data-theme="contrast"] #lock .lock-box .lock-logo,[data-theme="contrast"] #lock .lock-box > p:not(.err){color:#000}
[data-theme="contrast"] #lock .lock-box{border:2px solid #000}

/* 23 · Check-in consulta */
.home-appt{cursor:pointer}
.home-appt .visto-btn{flex:none;min-height:36px}
.visto-done{flex:none;border:0;background:transparent;color:var(--green);font-weight:700;font-size:15px;min-height:36px;padding:0 6px;cursor:pointer;border-radius:10px}
.visto-done:active{background:var(--green-50)}
.home-appt.seen .main .t{color:var(--muted)}

/* 24 · Notas de consulta */
.cnotes{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.cnote{border-left:3px solid var(--teal);padding:2px 0 2px 10px}
.cnote .cn-d{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.cnote .cn-x{margin-left:auto;border:0;background:transparent;color:var(--chev);width:32px;height:28px;border-radius:8px;cursor:pointer;font-size:13px}
.cnote .cn-x:active{background:var(--surface-2)}
.cnote .cn-t{white-space:pre-wrap;overflow-wrap:anywhere}
.cn-empty{margin:0 0 10px}
.cn-add .cn-row{margin-top:8px}
.cn-add .cn-row input[type=date]{flex:1;min-width:0}
.cn-add .cn-row .btn{flex:none;min-height:var(--tap)}
[data-theme="contrast"] .cnote{border-left-color:#000}

/* v1.14.20 — Ficha: identificação + dados clínicos, próximos passos e «Histórico do doente» */
.pt-kv{margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft);font-size:13.5px;gap:3px 12px}
.pt-kv dd{min-width:0;overflow-wrap:anywhere}
.stg-row{margin-top:6px}
.pill.stg{background:var(--onco-50);color:var(--onco-ink);font-family:var(--mono);font-weight:700}
.pill.stg.strong{background:var(--p-onco);color:#fff}
.next-steps{border-left:4px solid var(--teal);padding:12px 14px}
.next-steps.overdue{border-left-color:var(--red)} .next-steps.soon{border-left-color:var(--amber)}
.ns-item{padding:6px 0;border-top:1px solid var(--line-soft)} .ns-item:first-of-type{border-top:0}
.next-steps .row+.ns-item{margin-top:4px}
.ph-card{padding:12px 14px}
.ph-add{margin-top:10px}
.chip.add{color:var(--navy);background:var(--teal-50);border-color:transparent}
.ph-note{display:flex;gap:6px;align-items:center;margin:8px 0 6px}
.ph-note input[type=text]{flex:1;min-width:0}
.ph-note input[type=date]{width:auto;flex:none;max-width:132px;font-size:14px;padding:8px}
.ph-filter{margin:6px 0 8px;border-top:1px solid var(--line-soft);padding-top:8px}
.ph-filter .cnt{font-weight:500;opacity:.75;margin-left:2px}
.tl-h{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:10px 0 6px}
.ph-card .timeline{margin-bottom:4px}
.ph-card .tl{margin-bottom:10px;font-size:14px}
.ph-card .tl[data-s],.ph-card .tl[data-hatt],.ph-card .tl[data-tl-trat],.ph-card .tl[data-cg-edit],.ph-card .tl[data-tl-alert],.ph-card .tl[data-pc]{cursor:pointer}
.tl-prev .tl::before{background:var(--card);border:2px solid var(--amber)}
.tl-prev .tl.red::before{border-color:var(--red)}
.tl.surg::before{background:#ea580c} .tl.trat::before{background:var(--p-onco)} .tl.grp::before{background:var(--navy-2)} .tl.note::before{background:var(--muted)}
.tl-att{display:flex;gap:8px;align-items:center}
.tl-att img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex:none;border:1px solid var(--line)}
.tl-ficon{width:44px;height:44px;border-radius:8px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.ph-card .cn-x{float:right;background:none;border:0;color:var(--muted);cursor:pointer;font-size:14px;padding:0 4px}
[data-theme="dark"] .pill.stg{background:var(--onco-50);color:var(--onco-ink)}
[data-theme="dark"] .pill.stg.strong{background:#23803a;color:#fff}
[data-theme="dark"] .chip.add{background:var(--teal-50);color:var(--teal-2)}
[data-theme="dark"] .tl-ficon{background:#222b24}

/* v1.14.21 — Cartão de identificação: abreviatura + idade + sexo; nº de processo; faixa local/estádio/seguimento; detalhes ao tocar */
.pt-id{cursor:pointer}
.pt-id:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.pt-idline{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-width:0}
.pt-demo{font-size:17px;font-weight:650;color:var(--text);white-space:nowrap}
.pt-proc{font-size:12.5px;color:var(--muted);font-family:var(--mono);margin-top:1px}
.pill.loc{background:var(--loc,#7c7c7b);color:#fff;font-weight:700;border:0}
.pill.fu{background:var(--surface-2);color:var(--text);border:1px solid var(--line);font-weight:600}
.pt-more-hint{margin-top:6px;text-align:center;font-size:11.5px;opacity:.8}
.pt-more .pt-kv{margin-top:8px}
/* Checklist da consulta */
.ck-box{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:6px 0 10px;background:var(--card)}
.ck-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid var(--line-soft);flex-wrap:wrap}
.ck-row:first-child{border-top:0}
.ck-row.ck-col{flex-direction:column;align-items:flex-start}
.ck-l{font-weight:600;font-size:14px}
.ck-sn{display:flex;gap:10px}
.ck-sn .check,.ck-row .check{margin:0}
.ck-wrap{margin-bottom:8px}
.ck-wrap>summary{cursor:pointer;padding:6px 0}
.ck-pills{margin-top:4px;display:flex;flex-wrap:wrap;gap:4px}
[data-theme="dark"] .pill.fu{background:#1d2620;border-color:#33443a}
/* v1.14.22 — Histórico do doente: entradas editáveis (⋯ / pressão longa → Editar · Apagar) */
.ph-card .tl.has-act{padding-right:38px;-webkit-touch-callout:none;border-radius:10px;transition:background .15s}
.ph-card .tl.tap{cursor:pointer}
.ph-card .tl.pressing{background:var(--surface-2)}
.tl-more{position:absolute;top:-4px;right:0;width:34px;height:30px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.tl-more:hover,.tl-more[aria-expanded="true"]{background:var(--surface-2);color:var(--text)}
.tl-more:focus-visible{outline:2px solid var(--teal);outline-offset:1px}

/* ===================== OncoMed v1.0.0 — identidade oncológica (cabeça e pescoço) ===================== */
/* Verde clínico calmo (sem vermelhos/roxos "alarmantes"); acento jade subtil para dados oncológicos. */
/* Marca: preparado para o novo logótipo (suave/arredondado); funciona com o logo-mark atual. */
.brand-mark{border-radius:8px;object-fit:contain}
.topbar h1#title.brand{gap:9px}
.topbar .brand-name{letter-spacing:-.025em}
.topbar::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;
  background:linear-gradient(90deg,rgba(128,194,66,.0),rgba(128,194,66,.55) 30%,rgba(95,199,181,.55) 70%,rgba(95,199,181,0))}
.lock-logo.onco-lock .brand-name::after{content:"Oncologia de cabeça e pescoço";display:block;margin-top:6px;
  font-family:var(--font-title);font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}

/* Início: hero mais "clínico" */
.home-hero{background:linear-gradient(135deg,var(--onco-50) 0%,var(--card) 85%);border-color:var(--onco-line);border-left-color:var(--p-onco)}
.home-hero .hh-date{font-family:var(--font-brand);font-weight:500;letter-spacing:-.02em}

/* Ficha: faixa TNM/estádio com aspeto de etiqueta clínica */
.stg-row{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px;margin-top:8px;border-radius:10px;
  background:var(--surface-2);border:1px solid var(--line-soft);border-left:4px solid var(--p-onco)}
.pill.stg{border:1px solid var(--onco-line);letter-spacing:.2px;font-size:12.5px}
.pill.stg.strong{background:var(--p-onco);border-color:var(--p-onco);color:#fff}
.tnm-box{border-left:4px solid var(--p-onco)}
.tnm-h{color:var(--onco-ink);text-transform:uppercase;letter-spacing:.4px;font-size:12px}
.tnm-res{background:var(--onco-50);border:1px solid var(--onco-line)}
.pt-row.s-onco,.pt-head.s-onco{border-left-color:var(--p-onco)}
.tl.trat::before{background:var(--onco-accent)}
.onco-accent{color:var(--onco-accent)} .pill.onco-acc{background:var(--onco-accent-50);color:var(--onco-accent)}

[data-theme="dark"] .home-hero{background:linear-gradient(135deg,var(--onco-50) 0%,var(--card) 85%)}
[data-theme="dark"] .pill.stg.strong{background:#23803a;border-color:#23803a;color:#fff}
[data-theme="contrast"] .topbar::after{display:none}
[data-theme="contrast"] .home-hero{background:#fff}
[data-theme="contrast"] .stg-row{border:2px solid #000;border-left:6px solid #000;background:#fff}
[data-theme="contrast"] .pill.stg{background:#fff;color:#000;border:1.5px solid #000}
[data-theme="contrast"] .pill.stg.strong{background:#000;color:#fff}
[data-theme="contrast"] .tnm-res{border:2px solid #000}
.stg-row{min-width:0}
.stg-row .pill{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
