/* ══════════════════════════════════════════════════════════════
   CRM Cardio · Dr. Vinícius Correia
   Marca preservada: navy #072940 · vermelho ECG #C23030
   ══════════════════════════════════════════════════════════════ */

:root{
  --navy:#072940; --navy-2:#0C3A57; --ink:#04192A; --ink-2:#0A2233;
  --red:#C23030; --red-lt:#E04B4B; --red-bg:rgba(194,48,48,.09);
  --cream:#E7DCC6;
  --green:#1F9D57; --green-bg:rgba(31,157,87,.11);
  --amber:#B7791F; --amber-bg:rgba(183,121,31,.12);
  --blue:#2563A8;  --blue-bg:rgba(37,99,168,.10);
  --purple:#6B4E9B;
  /* série de gráficos — precisam de contraste nos DOIS temas */
  --c-part:#072940; --c-conv:#2E7FD4; --c-reemb:#C23030;

  --bg:#F4F6F8; --surface:#fff; --surface-2:#FAFBFC;
  --txt:#0E2333; --txt-2:#5A7285; --txt-3:#8B9DAC;
  --line:#E3E9EE; --line-2:#EFF3F6;
  --shadow:0 1px 2px rgba(7,41,64,.05), 0 8px 24px -16px rgba(7,41,64,.22);
  --shadow-lg:0 24px 60px -28px rgba(7,41,64,.4);

  --f:'Jost',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-s:'Instrument Serif',Georgia,serif;
  --f-m:ui-monospace,'SF Mono','Cascadia Mono',Menlo,monospace;
  --r:10px; --r-sm:7px;
  --sb-w:248px;
  --ease:cubic-bezier(.22,1,.36,1);
}
html[data-theme="dark"]{
  --bg:#081B28; --surface:#0C2537; --surface-2:#0A1F2E;
  --txt:#E8EFF4; --txt-2:#9FB4C4; --txt-3:#6E8798;
  --line:#153349; --line-2:#102A3D;
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 24px -16px rgba(0,0,0,.6);
  --shadow-lg:0 24px 60px -28px rgba(0,0,0,.8);
  --red-bg:rgba(224,75,75,.14); --green-bg:rgba(31,157,87,.16);
  --amber-bg:rgba(183,121,31,.18); --blue-bg:rgba(37,99,168,.18);
  --c-part:#8FC4E8; --c-conv:#3E8FE0; --c-reemb:#E04B4B;
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--txt);font-family:var(--f);
  font-weight:400;font-size:14.5px;line-height:1.55;-webkit-font-smoothing:antialiased;
  transition:background .3s,color .3s}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;font-weight:400;letter-spacing:-.018em;line-height:1.2}
p{margin:0} ul,ol{margin:0;padding:0;list-style:none}
img{display:block;max-width:100%}
.ic{width:1em;height:1em;flex:none;display:inline-block;vertical-align:-.13em}
:focus-visible{outline:2px solid var(--red);outline-offset:2px}
::selection{background:var(--navy);color:var(--cream)}
.mono{font-family:var(--f-m);font-size:.9em;letter-spacing:-.02em}

}

/* ══════════ LOGIN ══════════ */
.login{position:fixed;inset:0;z-index:800;display:grid;place-items:center;
  background:var(--ink);overflow:hidden}
.login__bg{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(46vmax 38vmax at 50% -4%,rgba(12,58,87,.95),transparent 62%),
             radial-gradient(34vmax 30vmax at 86% 80%,rgba(194,48,48,.26),transparent 60%)}
.login__ecg{position:absolute;left:0;top:52%;width:100%;height:150px;transform:translateY(-50%);opacity:.42}
.login__ecg path{stroke:var(--red);stroke-width:1.3;fill:none;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:140 2500;animation:sweep 5s linear infinite;filter:drop-shadow(0 0 6px rgba(224,75,75,.8))}
@keyframes sweep{from{stroke-dashoffset:2640}to{stroke-dashoffset:0}}
.login__box{position:relative;width:min(400px,90vw);padding:38px 34px;border-radius:14px;
  background:rgba(255,255,255,.05);border:1px solid rgba(231,220,198,.16);
  backdrop-filter:blur(14px);text-align:center;color:var(--cream);
  box-shadow:0 40px 90px -40px rgba(0,0,0,.9)}
.login__mark{width:56px;height:47px;margin:0 auto 20px;overflow:visible;color:var(--cream)}
.login__mark .e{stroke:var(--red-lt);stroke-width:2.6;fill:none;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:260;stroke-dashoffset:260;animation:draw 1.6s .4s var(--ease) forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.login__box h1{font-size:23px;font-weight:300;color:#fff}
.login__box h1 em{font-family:var(--f-s);font-style:italic}
.login__sub{margin-top:7px;font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:rgba(231,220,198,.6)}
.login__f{margin-top:28px;display:flex;flex-direction:column;gap:11px;text-align:left}
.login__f label{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:rgba(231,220,198,.6)}
.login__f input{width:100%;margin-top:6px;padding:12px 14px;border-radius:var(--r-sm);
  background:rgba(255,255,255,.07);border:1px solid rgba(231,220,198,.18);color:#fff;font-size:15px}
.login__f input:focus{outline:none;border-color:var(--red-lt);background:rgba(255,255,255,.11)}
.login__btn{margin-top:8px;width:100%;padding:13px;border:0;border-radius:var(--r-sm);
  background:var(--cream);color:var(--navy);font-size:12.5px;letter-spacing:.1em;
  text-transform:uppercase;cursor:pointer;transition:.3s var(--ease)}
.login__btn:hover{background:#fff;transform:translateY(-1px)}
.login__hint{margin-top:20px;padding-top:18px;border-top:1px solid rgba(231,220,198,.14);
  font-size:11.5px;color:rgba(231,220,198,.55);line-height:1.6}
.login__hint b{color:var(--cream);font-weight:400}

/* ══════════ SHELL ══════════ */
.app{display:grid;grid-template-columns:var(--sb-w) 1fr;min-height:100vh}

/* sidebar */
.sb{background:var(--ink);color:var(--cream);display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;overflow-y:auto;z-index:200}
.sb__top{padding:20px 18px 16px;border-bottom:1px solid rgba(231,220,198,.1)}
.sb__brand{display:flex;align-items:center;gap:10px}
.sb__mark{width:34px;height:29px;overflow:visible;color:var(--cream);flex:none}
.sb__mark .e{stroke:var(--red-lt);stroke-width:2.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.sb__brand b{display:block;font-weight:400;font-size:13.5px;letter-spacing:.11em;text-transform:uppercase;line-height:1.1}
.sb__brand span{display:block;margin-top:3px;font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(231,220,198,.55)}
.sb__nav{flex:1;padding:14px 10px}
.sb__grp{margin:16px 0 7px;padding:0 10px;font-size:9px;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(231,220,198,.38)}
.sb__grp:first-child{margin-top:2px}
.sb__a{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:var(--r-sm);
  font-size:13.8px;color:rgba(231,220,198,.76);cursor:pointer;transition:.25s var(--ease);position:relative}
.sb__a .ic{font-size:17px;opacity:.8}
.sb__a:hover{background:rgba(231,220,198,.07);color:#fff}
.sb__a.on{background:rgba(194,48,48,.18);color:#fff}
.sb__a.on::before{content:"";position:absolute;left:-10px;top:50%;transform:translateY(-50%);
  width:3px;height:19px;background:var(--red-lt);border-radius:0 3px 3px 0}
.sb__a.on .ic{opacity:1;color:var(--red-lt)}
.sb__n{margin-left:auto;min-width:20px;height:19px;padding:0 6px;border-radius:20px;
  background:var(--red);color:#fff;font-size:10.5px;display:grid;place-items:center;font-variant-numeric:tabular-nums}
.sb__me{padding:14px 16px;border-top:1px solid rgba(231,220,198,.1);display:flex;align-items:center;gap:11px}
.sb__me img{width:36px;height:36px;border-radius:50%;object-fit:cover;border:1px solid rgba(231,220,198,.24)}
.sb__me b{display:block;font-weight:400;font-size:12.8px;color:#fff;line-height:1.2}
.sb__me span{display:block;font-size:10px;letter-spacing:.09em;color:rgba(231,220,198,.5);margin-top:2px}

/* topbar */
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:150;display:flex;align-items:center;gap:14px;
  padding:12px 26px;background:color-mix(in srgb,var(--surface) 88%,transparent);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.top__t{min-width:0}
.top__t h1{font-size:19px;font-weight:400;letter-spacing:-.02em}
.top__t p{font-size:12px;color:var(--txt-2);margin-top:1px}
.search{margin-left:auto;position:relative;width:min(320px,34vw)}
.search .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--txt-3);font-size:16px}
.search input{width:100%;padding:9px 12px 9px 34px;border-radius:var(--r-sm);
  border:1px solid var(--line);background:var(--surface-2);font-size:13.5px}
.search input:focus{outline:none;border-color:var(--navy);background:var(--surface)}
.iconbtn{width:36px;height:36px;display:grid;place-items:center;border-radius:var(--r-sm);
  border:1px solid var(--line);background:var(--surface);cursor:pointer;font-size:17px;
  color:var(--txt-2);transition:.25s var(--ease);position:relative;flex:none}
.iconbtn:hover{border-color:var(--navy);color:var(--txt)}
.iconbtn .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;
  background:var(--red);border:1.5px solid var(--surface)}

/* página */
.page{padding:22px 26px 46px;flex:1}
.sec{margin-bottom:26px}
.sec__h{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:13px;flex-wrap:wrap}
.sec__h h2{font-size:13px;letter-spacing:.13em;text-transform:uppercase;color:var(--txt-2);font-weight:400}

/* ══════════ COMPONENTES ══════════ */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.card__h{padding:15px 18px;border-bottom:1px solid var(--line-2);display:flex;
  align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.card__h h3{font-size:14.5px;font-weight:400}
.card__h p{font-size:11.5px;color:var(--txt-2)}
.card__b{padding:18px}
.card__b--flush{padding:0}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 15px;
  border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);
  font-size:12.8px;cursor:pointer;transition:.25s var(--ease);white-space:nowrap;color:var(--txt)}
.btn .ic{font-size:15px}
.btn:hover{border-color:var(--navy)}
.btn--p{background:var(--navy);border-color:var(--navy);color:var(--cream)}
.btn--p:hover{background:var(--ink);border-color:var(--ink)}
.btn--r{background:var(--red);border-color:var(--red);color:#fff}
.btn--r:hover{background:#a82727;border-color:#a82727}
.btn--g{background:#25D366;border-color:#25D366;color:#04331A}
.btn--g:hover{background:#1fbe5a;border-color:#1fbe5a}
.btn--sm{padding:6px 11px;font-size:11.5px}
.btn--gh{background:transparent}

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:30px;
  font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;line-height:1.6}
.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:none}
.badge--ok{background:var(--green-bg);color:var(--green)}
.badge--wait{background:var(--amber-bg);color:var(--amber)}
.badge--bad{background:var(--red-bg);color:var(--red)}
.badge--info{background:var(--blue-bg);color:var(--blue)}
.badge--mute{background:var(--line-2);color:var(--txt-3)}
.badge--np::before{display:none}

.risk{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;white-space:nowrap}
.risk i{width:26px;height:5px;border-radius:4px;background:var(--line);position:relative;overflow:hidden;flex:none}
.risk i::after{content:"";position:absolute;inset:0;width:var(--w,25%);background:var(--c,var(--green));border-radius:4px}
.risk--baixo{--w:25%;--c:var(--green)}
.risk--moderado{--w:50%;--c:var(--amber)}
.risk--alto{--w:75%;--c:#E07B39}
.risk--muito.risk--alto,.risk--muitoalto{--w:100%;--c:var(--red)}

.av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--navy);color:var(--cream);font-size:12.5px;letter-spacing:.03em}
.av--sm{width:27px;height:27px;font-size:10.5px}
.av--f{background:var(--purple)}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{padding:17px 18px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi::after{content:"";position:absolute;right:-18px;top:-18px;width:74px;height:74px;
  border-radius:50%;background:var(--red-bg);opacity:.5}
.kpi__l{font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--txt-2)}
.kpi__v{margin-top:9px;font-family:var(--f-s);font-size:34px;line-height:1;letter-spacing:-.02em;position:relative}
.kpi__d{margin-top:8px;font-size:11.5px;color:var(--txt-2);display:flex;align-items:center;gap:5px;position:relative}
.kpi__d b{font-weight:400}
.up{color:var(--green)} .down{color:var(--red)}

/* tabela */
.tblw{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13.4px;min-width:640px}
.tbl th{text-align:left;padding:10px 16px;font-size:10px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--txt-2);font-weight:400;
  border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap;position:sticky;top:0}
.tbl td{padding:11px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tbody tr{cursor:pointer;transition:background .18s}
.tbl tbody tr:hover{background:var(--surface-2)}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl .nm{display:flex;align-items:center;gap:10px;min-width:0}
.tbl .nm b{font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl .nm div span{display:block;font-size:11px;color:var(--txt-3);line-height:1.35}
.av{line-height:1}
.tbl .r{text-align:right;font-variant-numeric:tabular-nums}
.empty{padding:44px 20px;text-align:center;color:var(--txt-3);font-size:13.5px}
.empty .ic{font-size:32px;opacity:.4;margin-bottom:10px}

/* filtros */
.filters{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.chip{padding:6px 12px;border-radius:30px;border:1px solid var(--line);background:var(--surface);
  font-size:12px;cursor:pointer;transition:.25s var(--ease);white-space:nowrap}
.chip:hover{border-color:var(--navy)}
.chip.on{background:var(--navy);border-color:var(--navy);color:var(--cream)}

/* agenda */
.day{display:flex;gap:14px;align-items:stretch;padding:12px 16px;border-bottom:1px solid var(--line-2);
  cursor:pointer;transition:background .18s}
.day:hover{background:var(--surface-2)}
.day__h{width:58px;flex:none;text-align:center;padding-top:2px}
.day__h b{display:block;font-family:var(--f-s);font-size:19px;line-height:1}
.day__h span{display:block;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3);margin-top:3px}
.day__ln{width:2px;background:var(--line);border-radius:2px;flex:none}
.day--now .day__ln{background:var(--red)}
.day--now .day__h b{color:var(--red)}
.day__b{flex:1;min-width:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.day__b .nm b{font-weight:400}
.day__meta{font-size:11.5px;color:var(--txt-2)}
.day__act{margin-left:auto;display:flex;gap:6px}

.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:8px}
.slot{padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--line);
  background:var(--surface);font-size:12.5px;cursor:pointer;transition:.25s var(--ease)}
.slot:hover{border-color:var(--navy);transform:translateY(-1px)}
.slot b{display:block;font-family:var(--f-m);font-size:13px;font-weight:400}
.slot span{display:block;font-size:10.8px;color:var(--txt-2);margin-top:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slot--free{border-style:dashed;color:var(--txt-3)}
.slot--realizado{background:var(--green-bg);border-color:transparent}
.slot--confirmado{background:var(--blue-bg);border-color:transparent}
.slot--aguardando{background:var(--amber-bg);border-color:transparent}
.slot--faltou,.slot--cancelado{background:var(--red-bg);border-color:transparent;opacity:.75}

/* kanban */
.kan{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;align-items:start}
.kcol{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);
  display:flex;flex-direction:column;max-height:70vh}
.kcol__h{padding:11px 13px;border-bottom:1px solid var(--line);display:flex;
  align-items:center;justify-content:space-between;gap:8px;position:sticky;top:0;
  background:var(--surface-2);border-radius:var(--r) var(--r) 0 0;z-index:2}
.kcol__h b{font-weight:400;font-size:12.5px;letter-spacing:.05em;text-transform:capitalize}
.kcol__h i{font-style:normal;font-size:11px;color:var(--txt-3);
  background:var(--line-2);padding:1px 7px;border-radius:20px}
.kcol__b{padding:9px;display:flex;flex-direction:column;gap:8px;overflow-y:auto}
.kcard{padding:11px 12px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-sm);cursor:pointer;transition:.25s var(--ease)}
.kcard:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:transparent}
.kcard b{display:block;font-weight:400;font-size:13.2px;line-height:1.3}
.kcard p{margin-top:5px;font-size:11.6px;color:var(--txt-2);line-height:1.45}
.kcard__f{margin-top:9px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.kcard__o{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3)}
.kcard__d{font-size:10.5px;color:var(--txt-3)}

/* gráficos SVG */
.chart{width:100%;height:auto;overflow:visible}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .lbl{fill:var(--txt-3);font-size:10px;font-family:var(--f)}
.bar{transition:opacity .2s}
.bar:hover{opacity:.78}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--txt-2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}

.donut__wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.donut{width:132px;height:132px;flex:none}
.donut circle{fill:none;stroke-width:15}

/* alertas */
.alert{display:flex;gap:11px;padding:11px 14px;border-bottom:1px solid var(--line-2);
  cursor:pointer;transition:background .18s;align-items:flex-start}
.alert:hover{background:var(--surface-2)}
.alert:last-child{border-bottom:0}
.alert__i{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  font-size:14px;flex:none;margin-top:1px}
.alert--critico .alert__i{background:var(--red-bg);color:var(--red)}
.alert--atencao .alert__i{background:var(--amber-bg);color:var(--amber)}
.alert--info .alert__i{background:var(--blue-bg);color:var(--blue)}
.alert b{display:block;font-weight:400;font-size:13.2px}
.alert p{font-size:11.8px;color:var(--txt-2);margin-top:2px}

/* drawer (ficha do paciente) */
.scrim{position:fixed;inset:0;z-index:400;background:rgba(4,25,42,.5);
  backdrop-filter:blur(3px);opacity:0;transition:opacity .3s}
.scrim.on{opacity:1}
.drw{position:fixed;top:0;right:0;bottom:0;z-index:401;width:min(680px,100vw);
  background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform .42s var(--ease)}
.drw.on{transform:none}
.drw__h{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;
  align-items:flex-start;gap:14px}
.drw__h .av{width:46px;height:46px;font-size:15px}
.drw__h h2{font-size:19px;font-weight:400}
.drw__h p{font-size:12.2px;color:var(--txt-2);margin-top:3px}
.drw__x{margin-left:auto}
.drw__tabs{display:flex;gap:2px;padding:0 22px;border-bottom:1px solid var(--line);overflow-x:auto}
.drw__tab{padding:11px 13px;font-size:12.8px;color:var(--txt-2);cursor:pointer;
  border-bottom:2px solid transparent;white-space:nowrap;transition:.25s}
.drw__tab:hover{color:var(--txt)}
.drw__tab.on{color:var(--red);border-bottom-color:var(--red)}
.drw__b{flex:1;overflow-y:auto;padding:20px 22px 40px}
.drw__f{padding:13px 22px;border-top:1px solid var(--line);display:flex;gap:8px;
  background:var(--surface-2);flex-wrap:wrap}

.vitals{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:10px;margin-bottom:20px}
.vital{padding:12px 13px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line-2)}
.vital span{display:block;min-height:25px;font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--txt-2);line-height:1.3}
.vital b{display:block;margin-top:5px;font-family:var(--f-s);font-size:23px;line-height:1}
.vital i{font-style:normal;font-size:11px;color:var(--txt-3);margin-left:3px}
.vital--bad b{color:var(--red)}
.vital--ok b{color:var(--green)}

.dl{display:grid;grid-template-columns:130px 1fr;gap:9px 16px;font-size:13.4px}
.dl dt{color:var(--txt-2);font-size:12.3px}
.dl dd{margin:0}
.blk{margin-bottom:22px}
.blk__h{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--txt-2);
  padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:13px}
.medlist{display:flex;flex-direction:column;gap:7px}
.medlist li{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r-sm);
  background:var(--surface-2);border:1px solid var(--line-2);font-size:13.2px}
.medlist .ic{color:var(--red);font-size:15px}
.tl2{position:relative;padding-left:20px;border-left:1px solid var(--line)}
.tl2 li{position:relative;padding-bottom:16px}
.tl2 li::before{content:"";position:absolute;left:-24.5px;top:5px;width:8px;height:8px;
  border-radius:50%;background:var(--surface);border:1.5px solid var(--txt-3)}
.tl2 li:first-child::before{background:var(--red);border-color:var(--red)}
.tl2 b{font-weight:400;font-size:13.4px}
.tl2 span{display:block;font-size:11px;color:var(--txt-3);margin-top:1px}
.tl2 p{font-size:12.6px;color:var(--txt-2);margin-top:4px;line-height:1.55}

/* toast */
.toast{position:fixed;right:20px;bottom:20px;z-index:600;display:flex;align-items:center;gap:10px;
  padding:13px 17px;border-radius:var(--r);background:var(--ink);color:var(--cream);
  box-shadow:var(--shadow-lg);font-size:13.2px;transform:translateY(140%);transition:transform .4s var(--ease)}
.toast.on{transform:none}
.toast .ic{color:var(--green);font-size:17px}

/* util */
.row{display:flex;gap:14px;align-items:flex-start}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.g-2-1{display:grid;grid-template-columns:1.7fr 1fr;gap:14px}
.g-1-2{display:grid;grid-template-columns:1fr 1.7fr;gap:14px}
.mt{margin-top:14px} .mb{margin-bottom:14px}
.muted{color:var(--txt-2)} .sm{font-size:12px}
.tabnums{font-variant-numeric:tabular-nums}

/* responsivo */
@media (max-width:1180px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .g-2-1,.g-1-2,.g3{grid-template-columns:1fr}
  .kan{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:900px){
  :root{--sb-w:0px}
  .app{grid-template-columns:1fr}
  .sb{position:fixed;left:0;top:0;width:250px;transform:translateX(-100%);
    transition:transform .35s var(--ease);box-shadow:var(--shadow-lg)}
  .sb.on{transform:none}
  .burger2{display:grid!important}
  .page{padding:18px 15px 40px}
  .top{padding:11px 15px}
  .search{width:auto;flex:1}
  .g2{grid-template-columns:1fr}
  .kan{grid-template-columns:1fr}
  .kcol{max-height:none}
  .drw{width:100vw}
}
.burger2{display:none}
@media (max-width:620px){
  .kpis{grid-template-columns:1fr}
  .top__t h1{font-size:16px}
  .top__t p{display:none}
}

/* ── login por chave de acesso ─────────────────────
   O painel passou a ter dado real de paciente. O login
   antigo era decorativo: só escondia a tela. */
.login__lembrar{display:flex;align-items:center;gap:9px;font-size:13px;
  color:var(--txt-2);text-transform:none;letter-spacing:0;cursor:pointer}
.login__lembrar input{width:auto;margin:0;accent-color:var(--red)}
.login__erro{margin:12px 0 0;padding:11px 14px;border-radius:10px;font-size:13px;
  background:rgba(215,0,41,.1);color:#ff6e86;border-left:3px solid #D70029;text-align:left}
.login__btn[disabled]{opacity:.6;cursor:wait}

/* ── fila de aprovação de conteúdo ─────────────────
   O Dr. lê, aprova ou pede ajuste. O comentário fica preso
   ao item, para a equipe saber o que mudar. */
.cnt__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.cnt{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;overflow:hidden;transition:border-color .3s,transform .3s}
.cnt:hover{border-color:var(--line-2);transform:translateY(-2px)}
.cnt__capa{position:relative;aspect-ratio:16/9;background:var(--surface-2);overflow:hidden}
.cnt__capa img{width:100%;height:100%;object-fit:cover}
.cnt__tipo{position:absolute;top:9px;left:9px;padding:4px 9px;border-radius:6px;font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;background:rgba(215,0,41,.9);color:#fff}
.cnt__b{padding:15px 16px 17px;display:flex;flex-direction:column;gap:9px;flex:1}
.cnt__top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.cnt__meta{font-size:11px;color:var(--txt-2)}
.cnt__b h3{font-size:15.5px;line-height:1.35;font-weight:500;margin:0}
.cnt__res{font-size:13px;line-height:1.55;color:var(--txt-2);margin:0;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cnt__nota{margin:0;padding:10px 12px;border-radius:8px;font-size:12.5px;line-height:1.5;
  background:rgba(215,0,41,.08);border-left:3px solid var(--red);color:var(--txt)}
.cnt__acoes{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.btn--sm{padding:7px 12px;font-size:12px}
.btn--ok{background:#1DA851;border-color:#1DA851;color:#fff}
.btn--ok:hover{background:#179044}
.fltr{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:60px;
  border:1px solid var(--line);background:transparent;color:var(--txt-2);font-size:12.5px;
  cursor:pointer;transition:.3s}
.chip span{font-size:11px;opacity:.7}
.chip:hover{border-color:var(--line-2);color:var(--txt)}
.chip.on{background:var(--red);border-color:var(--red);color:#fff}
.chip.on span{opacity:.85}
.aviso{padding:14px 18px;border-radius:12px;font-size:13.4px;line-height:1.6;
  background:rgba(255,193,7,.1);border-left:3px solid #FFC107;color:var(--txt)}
/* Informacao, nao alerta: o verde diz que o mecanismo esta de pe. */
.nota{padding:14px 18px;border-radius:12px;font-size:13.4px;line-height:1.6;
  background:rgba(34,160,98,.09);border-left:3px solid #22A062;color:var(--txt)}
.nota b{font-weight:500}

/* ── revisor de página ─────────────────────────────
   A página abre inteira dentro do painel. O Dr. grifa um
   trecho e pede alteração, ou edita direto. Cada marca fica
   presa ao bloco, então não se perde quando o texto muda. */
.rev{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;background:var(--bg)}
.rev__bar{display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:13px 20px;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap}
.rev__bar-t b{display:block;font-size:15px;font-weight:500;color:var(--txt)}
.rev__bar-t span{font-size:12.5px;color:var(--txt-2)}
.rev__acoes{display:flex;gap:8px;flex-wrap:wrap}
.rev__corpo{flex:1;display:grid;grid-template-columns:1fr 360px;min-height:0}
.rev__frame{width:100%;height:100%;border:0;background:#fff}
.rev__lado{border-left:1px solid var(--line);background:var(--surface);overflow-y:auto;padding:18px}
.rev__lado-h{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-2);
  margin:0 0 14px}
.revm{padding:13px 15px;border-radius:11px;background:var(--surface-2);margin-bottom:11px;
  border-left:3px solid var(--txt-2)}
.revm--comentario{border-left-color:#FFC107}
.revm--edicao{border-left-color:#1DA851}
.revm--resolvido{border-left-color:var(--line);opacity:.55}
.revm__t{display:inline-block;font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--txt-2);margin-bottom:7px}
.revm blockquote{margin:0 0 8px;padding-left:11px;border-left:2px solid var(--line);
  font-size:12.5px;line-height:1.5;color:var(--txt-2);font-style:italic}
.revm p{margin:0;font-size:13.4px;line-height:1.55;color:var(--txt)}
.rev__pop{position:absolute;right:376px;bottom:24px;width:min(420px,42vw);z-index:5;
  background:var(--surface);border:1px solid var(--line-2);border-radius:14px;padding:18px;
  box-shadow:0 30px 70px -25px rgba(0,0,0,.6)}
.rev__pop[hidden]{display:none}
.rev__pop-t{margin:0 0 9px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--txt-2)}
.rev__pop blockquote{margin:0 0 12px;padding:10px 13px;border-radius:9px;background:rgba(255,193,7,.12);
  border-left:3px solid #FFC107;font-size:13px;line-height:1.5;color:var(--txt);max-height:110px;overflow-y:auto}
.rev__pop textarea{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line);
  background:var(--surface-2);color:var(--txt);font:inherit;font-size:14px;resize:vertical}
.rev__pop textarea:focus{outline:none;border-color:var(--red)}
.rev__pop-a{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.rev__toast{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:9;
  padding:12px 20px;border-radius:60px;background:var(--navy);color:#fff;font-size:13.5px;
  box-shadow:0 16px 40px -14px rgba(0,0,0,.6);animation:revIn .3s ease}
@keyframes revIn{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
.btn--rev{background:var(--red);border-color:var(--red);color:#fff}
@media (max-width:1080px){
  .rev__corpo{grid-template-columns:1fr;grid-template-rows:1fr auto}
  .rev__lado{border-left:0;border-top:1px solid var(--line);max-height:38vh}
  .rev__pop{right:16px;left:16px;width:auto}
}

/* o revisor cobre a tela inteira: fundo opaco, senão o painel
   aparece atrás e a leitura fica impossível */
.rev{background:var(--bg)}
.rev__lado{background:var(--surface)}
.rev__pop{background:var(--surface)}
.rev__toast{background:var(--navy);color:#fff}

/* ── Kanban arrastável ─────────────────────────────
   Seis colunas, as mesmas seis da coluna Status da planilha.
   O card sai do lugar e a coluna de destino acende, para não
   restar dúvida de onde ele vai cair. */
.kan{grid-template-columns:repeat(6,minmax(150px,1fr));overflow-x:auto;padding-bottom:6px}
.kcard{cursor:grab;user-select:none}
.kcard:active{cursor:grabbing}
.kcard--drag{opacity:.4;transform:rotate(-1.5deg)}
.kcol__b{min-height:70px;transition:background .15s,box-shadow .15s}
.kcol__b--over{background:color-mix(in srgb,var(--red) 10%,transparent);
  box-shadow:inset 0 0 0 2px var(--red);border-radius:0 0 var(--r) var(--r)}

/* campos da ficha do lead */
.inp{width:100%;padding:9px 12px;border-radius:9px;border:1px solid var(--line);
  background:var(--surface);color:var(--txt);font:inherit;font-size:13.4px}
.inp:focus{outline:none;border-color:var(--red)}
textarea.inp{resize:vertical;line-height:1.6}

@media (max-width:900px){
  .kan{grid-template-columns:repeat(6,78vw)}
}
