/* ═══════════════════════════════════════════════════════════════════════
   CLINAMO · Design System (portado fielmente do /mockup)
   Material Design 3 · seed #0B7C86 · claro + escuro
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. TOKENS DE COR ─────────────────────────────────────────────────── */
:root {
  --primary:#0B7C86;            --on-primary:#FFFFFF;
  --primary-container:#A6EFF7;  --on-primary-container:#00363B;
  --primary-fixed-dim:#7FD4DE;

  --secondary:#2E9E6B;          --on-secondary:#FFFFFF;
  --secondary-container:#B7F1D3;--on-secondary-container:#00251A;

  --tertiary:#8A5A00;           --on-tertiary:#FFFFFF;
  --tertiary-container:#FFDEA6; --on-tertiary-container:#2B1700;

  --success:#1B6B3A;            --success-container:#C3F0D4; --on-success-container:#04351A;
  --warning:#8A5A00;            --warning-container:#FFDEA6; --on-warning-container:#2B1700;
  --error:#B3261E;              --error-container:#F9DEDC;   --on-error-container:#410E0B;

  /* Neutros com viés teal — nunca cinza puro */
  --surface:#F5F9F9;
  --surface-lowest:#FFFFFF;
  --surface-low:#F0F5F5;
  --surface-container:#EAF1F1;
  --surface-high:#E4EBEB;
  --surface-highest:#DEE6E6;
  --on-surface:#171D1D;
  --on-surface-variant:#3F4949;
  --outline:#6F7979;
  --outline-variant:#C7D1D1;
  --inverse-surface:#2B3131;
  --inverse-on-surface:#EFF5F5;
  /* séries do gráfico — par validado para daltonismo (ΔE 66,7 no pior caso) */
  --series-conv:#00909E;
  --series-part:#B26A00;
  --chart-surface:#FFFFFF;
  --chart-grid:#E4EBEB;
  --inverse-on-surface:#EFF5F5;
  --scrim:rgba(0,0,0,.32);

  /* Elevação */
  --e1:0 1px 2px rgba(11,44,48,.07), 0 1px 3px 1px rgba(11,44,48,.05);
  --e2:0 1px 2px rgba(11,44,48,.08), 0 2px 6px 2px rgba(11,44,48,.05);
  --e3:0 1px 3px rgba(11,44,48,.09), 0 4px 8px 3px rgba(11,44,48,.05);
  --e4:0 2px 3px rgba(11,44,48,.09), 0 6px 10px 4px rgba(11,44,48,.06);

  /* Forma (grid 8px) */
  --r-xs:4px; --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:28px; --r-full:999px;

  /* Movimento */
  --ease-std:cubic-bezier(.2,0,0,1);
  --ease-decel:cubic-bezier(.05,.7,.1,1);
  --ease-accel:cubic-bezier(.3,0,.8,.15);
  --ease-emph:cubic-bezier(.2,0,0,1);
  --dur-s:150ms; --dur-m:250ms; --dur-l:400ms;

  --chrome-h:0px;
}

@media (prefers-color-scheme:dark) {
  :root:not([data-theme="light"]) {
    --primary:#4FD8E8;            --on-primary:#00363B;
    --primary-container:#00555E;  --on-primary-container:#A6EFF7;
    --primary-fixed-dim:#00555E;
    --secondary:#8FD9B4;          --on-secondary:#00391F;
    --secondary-container:#155839;--on-secondary-container:#B7F1D3;
    --tertiary:#F0C06A;           --on-tertiary:#452B00;
    --tertiary-container:#634000; --on-tertiary-container:#FFDEA6;
    --success:#7DDBA3;            --success-container:#0B4A26; --on-success-container:#C3F0D4;
    --warning:#F0C06A;            --warning-container:#4A3200; --on-warning-container:#FFDEA6;
    --error:#FFB4AB;              --error-container:#8C1D18;   --on-error-container:#F9DEDC;
    --surface:#0E1415;
    --surface-lowest:#090F10;
    --surface-low:#171D1E;
    --surface-container:#1B2122;
    --surface-high:#252B2C;
    --surface-highest:#303637;
    --on-surface:#DEE4E4;
    --on-surface-variant:#BEC8C8;
    --outline:#889393;
    --outline-variant:#3F4949;
    --inverse-surface:#DEE4E4;
  --inverse-on-surface:#2B3131;
  --series-conv:#0099A3;
  --series-part:#B77B1B;
  --chart-surface:#131A1B;
  --chart-grid:#2B3131;
    --inverse-on-surface:#2B3131;
    --series-conv:#0099A3;
    --series-part:#B77B1B;
    --chart-surface:#131A1B;
    --chart-grid:#2B3131;
    --inverse-on-surface:#2B3131;
    --scrim:rgba(0,0,0,.6);
    --e1:0 1px 2px rgba(0,0,0,.4), 0 1px 3px 1px rgba(0,0,0,.25);
    --e2:0 1px 2px rgba(0,0,0,.45), 0 2px 6px 2px rgba(0,0,0,.3);
    --e3:0 1px 3px rgba(0,0,0,.5), 0 4px 8px 3px rgba(0,0,0,.3);
    --e4:0 2px 3px rgba(0,0,0,.5), 0 6px 10px 4px rgba(0,0,0,.35);
  }
}
:root[data-theme="dark"] {
  --primary:#4FD8E8;            --on-primary:#00363B;
  --primary-container:#00555E;  --on-primary-container:#A6EFF7;
  --primary-fixed-dim:#00555E;
  --secondary:#8FD9B4;          --on-secondary:#00391F;
  --secondary-container:#155839;--on-secondary-container:#B7F1D3;
  --tertiary:#F0C06A;           --on-tertiary:#452B00;
  --tertiary-container:#634000; --on-tertiary-container:#FFDEA6;
  --success:#7DDBA3;            --success-container:#0B4A26; --on-success-container:#C3F0D4;
  --warning:#F0C06A;            --warning-container:#4A3200; --on-warning-container:#FFDEA6;
  --error:#FFB4AB;              --error-container:#8C1D18;   --on-error-container:#F9DEDC;
  --surface:#0E1415;
  --surface-lowest:#090F10;
  --surface-low:#171D1E;
  --surface-container:#1B2122;
  --surface-high:#252B2C;
  --surface-highest:#303637;
  --on-surface:#DEE4E4;
  --on-surface-variant:#BEC8C8;
  --outline:#889393;
  --outline-variant:#3F4949;
  --inverse-surface:#DEE4E4;
  --inverse-on-surface:#2B3131;
  --scrim:rgba(0,0,0,.6);
  --e1:0 1px 2px rgba(0,0,0,.4), 0 1px 3px 1px rgba(0,0,0,.25);
  --e2:0 1px 2px rgba(0,0,0,.45), 0 2px 6px 2px rgba(0,0,0,.3);
  --e3:0 1px 3px rgba(0,0,0,.5), 0 4px 8px 3px rgba(0,0,0,.3);
  --e4:0 2px 3px rgba(0,0,0,.5), 0 6px 10px 4px rgba(0,0,0,.35);
}

/* ── 2. RESET + TIPOGRAFIA ────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
body{
  margin:0;
  font-family:'Roboto','Google Sans','Helvetica Neue',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--surface); color:var(--on-surface);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
}
img,svg{max-width:100%}
h1,h2,h3,h4,p,figure,ul,ol{margin:0}
ul,ol{padding:0;list-style:none}
button{font:inherit;color:inherit;background:none;border:0}
a{color:inherit;text-decoration:none}
table{border-collapse:collapse;width:100%}

.t-display-l{font-size:clamp(38px,4.1vw,57px);line-height:1.08;font-weight:400;letter-spacing:-.02em;text-wrap:balance}
.t-display-s{font-size:clamp(28px,2.6vw,36px);line-height:1.16;font-weight:400;letter-spacing:-.01em;text-wrap:balance}
.t-headline-m{font-size:28px;line-height:1.28;font-weight:400;text-wrap:balance}
.t-headline-s{font-size:24px;line-height:1.33;font-weight:400;text-wrap:balance}
.t-title-l{font-size:22px;line-height:1.27;font-weight:500}
.t-title-m{font-size:16px;line-height:1.5;font-weight:600;letter-spacing:.009em}
.t-title-s{font-size:14px;line-height:1.43;font-weight:600;letter-spacing:.007em}
.t-body-l{font-size:16px;line-height:1.5;letter-spacing:.005em}
.t-body-m{font-size:14px;line-height:1.43;letter-spacing:.015em}
.t-body-s{font-size:12px;line-height:1.33;letter-spacing:.03em}
.t-label-l{font-size:14px;line-height:1.43;font-weight:600;letter-spacing:.007em}
.t-label-m{font-size:12px;line-height:1.33;font-weight:600;letter-spacing:.04em}
.t-label-s{font-size:11px;line-height:1.45;font-weight:600;letter-spacing:.045em}
.t-eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.t-num{font-variant-numeric:tabular-nums}
.muted{color:var(--on-surface-variant)}

/* ── 3. ÍCONES ────────────────────────────────────────────────────────── */
.ico{width:24px;height:24px;flex:none;stroke:currentColor;fill:none;
     stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ico-18{width:18px;height:18px;stroke-width:1.9}
.ico-16{width:16px;height:16px;stroke-width:2}
.ico-20{width:20px;height:20px;stroke-width:1.8}
.sprite{position:absolute;width:0;height:0;overflow:hidden}

/* ── 4. LAYOUT (shell + navigation rail) ──────────────────────────────── */
.shell{display:grid;grid-template-columns:88px minmax(0,1fr);min-height:100vh}
.rail{
  background:var(--surface-low);border-right:1px solid var(--outline-variant);
  padding:14px 0 20px;display:flex;flex-direction:column;align-items:center;gap:6px;
  position:sticky;top:var(--chrome-h);height:calc(100vh - var(--chrome-h));
}
.rail__menu{width:48px;height:48px;display:grid;place-items:center;border-radius:var(--r-full);
  color:var(--on-surface-variant);cursor:pointer;transition:background var(--dur-s)}
.rail__menu:hover{background:var(--surface-highest)}
.rail__fab{
  width:56px;height:56px;border-radius:var(--r-lg);display:grid;place-items:center;
  background:var(--primary-container);color:var(--on-primary-container);
  box-shadow:var(--e1);margin:6px 0 18px;cursor:pointer;
  transition:box-shadow var(--dur-m) var(--ease-std),transform var(--dur-m) var(--ease-emph);
}
.rail__fab:hover{box-shadow:var(--e3);transform:translateY(-1px)}
.rail__item{
  width:100%;display:grid;justify-items:center;gap:4px;padding:4px 0;cursor:pointer;
  color:var(--on-surface-variant);text-decoration:none;
}
.rail__ind{
  width:56px;height:32px;border-radius:var(--r-full);display:grid;place-items:center;
  transition:background var(--dur-m) var(--ease-std),color var(--dur-m) var(--ease-std);
  position:relative;
}
.rail__item:hover .rail__ind{background:var(--surface-highest)}
.rail__item.is-active .rail__ind{background:var(--secondary-container);color:var(--on-secondary-container)}
.rail__item.is-active{color:var(--on-surface)}
.rail__lbl{font-size:11px;font-weight:600;letter-spacing:.03em;text-align:center;line-height:1.2}
.rail__badge{
  position:absolute;top:-2px;right:8px;min-width:16px;height:16px;padding:0 4px;
  border-radius:var(--r-full);background:var(--error);color:#fff;
  font-size:10px;font-weight:700;display:grid;place-items:center;
  box-shadow:0 0 0 2px var(--surface-low);
}
.rail__spacer{flex:1}

.avatar{
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--primary-container);color:var(--on-primary-container);
  font-weight:700;font-size:13px;letter-spacing:.02em;
}
.avatar--sm{width:32px;height:32px;font-size:11.5px}
.avatar--lg{width:52px;height:52px;font-size:17px}

.content{padding:28px;max-width:1560px}

/* ── 5. BOTÕES ────────────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:40px;padding:0 24px;border-radius:var(--r-full);cursor:pointer;
  font-size:14px;font-weight:600;letter-spacing:.01em;white-space:nowrap;
  position:relative;overflow:hidden;
  transition:box-shadow var(--dur-m) var(--ease-std),transform var(--dur-s) var(--ease-std),background var(--dur-s);
}
.btn::after{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--dur-s)}
.btn:hover::after{opacity:.08}
.btn:active{transform:scale(.985)}
.btn:focus-visible{outline:3px solid var(--primary);outline-offset:2px}
.btn--filled{background:var(--primary);color:var(--on-primary)}
.btn--filled:hover{box-shadow:var(--e1)}
.btn--tonal{background:var(--secondary-container);color:var(--on-secondary-container)}
.btn--tonal:hover{box-shadow:var(--e1)}
.btn--outlined{border:1px solid var(--outline);color:var(--primary);background:transparent}
.btn--text{color:var(--primary);padding:0 12px}
.btn--lg{height:52px;padding:0 30px;font-size:15px;border-radius:var(--r-full)}
.btn--sm{height:34px;padding:0 16px;font-size:13px}
.btn--danger{color:var(--error);border-color:var(--error)}
.btn--block{width:100%}

/* ── 6. CARDS ─────────────────────────────────────────────────────────── */
.card{
  background:var(--surface-lowest);border-radius:var(--r-lg);
  border:1px solid var(--outline-variant);box-shadow:var(--e1);
  transition:box-shadow var(--dur-m) var(--ease-std),transform var(--dur-m) var(--ease-emph);
}
.card--pad{padding:20px 22px}
.card--hover:hover{box-shadow:var(--e3);transform:translateY(-2px)}
.card--flat{box-shadow:none;background:var(--surface-low)}
.card__head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.card__head h3{flex:1;min-width:0}

/* ── 7. CHIPS ─────────────────────────────────────────────────────────── */
.chip{
  display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;
  border-radius:var(--r-sm);border:1px solid var(--outline-variant);
  background:var(--surface-lowest);color:var(--on-surface-variant);
  font-size:13px;font-weight:600;letter-spacing:.01em;white-space:nowrap;cursor:pointer;
  transition:background var(--dur-s) var(--ease-std),border-color var(--dur-s),color var(--dur-s);
}
.chip:hover{background:var(--surface-container)}
.chip--sel{background:var(--secondary-container);color:var(--on-secondary-container);border-color:transparent}
.chip--static{cursor:default}
.chip--sm{height:26px;padding:0 9px;font-size:11.5px;gap:5px;border-radius:var(--r-xs)}

/* ── 8. STATUS (sempre cor + ícone + texto) ───────────────────────────── */
.status{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px 0 8px;
  border-radius:var(--r-full);font-size:12.5px;font-weight:700;letter-spacing:.01em;white-space:nowrap}
.status--ok{background:var(--success-container);color:var(--on-success-container)}
.status--warn{background:var(--warning-container);color:var(--on-warning-container)}
.status--err{background:var(--error-container);color:var(--on-error-container)}
.status--info{background:var(--primary-container);color:var(--on-primary-container)}
.status--neutral{background:var(--surface-high);color:var(--on-surface-variant)}
.status--sm{height:24px;font-size:11.5px;padding:0 9px 0 7px}

.badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;
  border-radius:var(--r-full);background:var(--error);color:#fff;font-size:11px;font-weight:700}
.badge--tonal{background:var(--primary-container);color:var(--on-primary-container)}
.divider{height:1px;background:var(--outline-variant);border:0;margin:16px 0}

/* ── 9. CAMPO DE TEXTO OUTLINED (formulários) ─────────────────────────── */
.tf{position:relative;display:grid;gap:6px}
.tf__lbl{font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--on-surface-variant)}
.tf__box{
  display:flex;align-items:center;gap:10px;height:52px;padding:0 16px;
  border:1px solid var(--outline);border-radius:var(--r-xs);
  color:var(--on-surface);transition:border-color var(--dur-s),box-shadow var(--dur-s);
  background:var(--surface-lowest);
}
.tf__box:focus-within{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}
.tf__box input,.tf__box select{border:0;outline:0;background:none;font:inherit;font-size:14px;width:100%;color:inherit}
/* olhinho de mostrar/ocultar senha */
.tf__eye{flex:none;background:none;border:0;cursor:pointer;color:var(--on-surface-variant);
  display:grid;place-items:center;padding:2px;margin-right:-4px;border-radius:var(--r-full);
  transition:color var(--dur-s)}
.tf__eye:hover{color:var(--on-surface)}
.tf--err .tf__box{border-color:var(--error)}
.tf__err{font-size:12px;color:var(--error)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media(max-width:720px){.form-grid{grid-template-columns:minmax(0,1fr)}}

/* ── 10. CABEÇALHO DO PACIENTE (pac-hero) ─────────────────────────────── */
.pac-hero{display:flex;align-items:center;gap:18px;padding:20px 28px 18px;
  background:var(--surface);border-bottom:1px solid var(--outline-variant)}
.pac-hero__id{flex:1;min-width:0;display:grid;gap:3px}
.pac-hero__id h1{font-size:24px;font-weight:600;line-height:1.15}
.pac-hero__meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--on-surface-variant);font-size:13px}
.pac-hero__meta .sep{opacity:.5}
.pac-hero__quick{display:flex;gap:6px}
.pac-hero__actions{display:flex;gap:10px;flex:none;align-items:center}
@media(max-width:640px){.pac-hero__actions{flex-wrap:wrap;justify-content:flex-end}}
/* Busca de pacientes no cabeçalho (com sugestões) */
.pac-search{position:relative}
.pac-search__results{position:absolute;top:calc(100% + 6px);right:0;min-width:330px;max-height:340px;overflow:auto;
  background:var(--surface-lowest);border:1px solid var(--outline-variant);border-radius:var(--r-md);
  box-shadow:var(--e3);z-index:60;padding:6px}
.pac-search__item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);color:inherit;
  transition:background var(--dur-s) var(--ease-std)}
.pac-search__item:hover{background:var(--surface-low)}
.pac-search__t{display:grid;gap:1px;min-width:0}
.pac-search__t b{font-size:13.5px;font-weight:600}
.pac-search__t span{font-size:11.5px;color:var(--on-surface-variant)}
.pac-search__empty{padding:10px 12px;font-size:12.5px;color:var(--on-surface-variant)}
.pac-search .nt-search{min-width:260px;flex:none}
.pac-search input[type="search"]{border:0;outline:0;background:none;font:inherit;font-size:13px;width:100%;color:var(--on-surface)}
.pac-search input::placeholder{color:var(--outline)}
@media(max-width:1100px){.pac-search .nt-search{min-width:190px}}
.qbtn{width:42px;height:42px;border-radius:var(--r-full);display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--outline-variant);background:var(--surface-lowest);color:var(--on-surface-variant);
  transition:background var(--dur-s),color var(--dur-s),border-color var(--dur-s)}
.qbtn:hover{background:var(--surface-container);color:var(--on-surface)}
.qbtn--wa:hover{background:var(--secondary-container);color:var(--on-secondary-container);border-color:transparent}

/* Sub-navegação das abas do paciente */
.pac-subnav{display:flex;gap:0;padding:0 20px;background:var(--surface);
  border-bottom:1px solid var(--outline-variant);overflow-x:auto;position:sticky;top:var(--chrome-h);z-index:15}
.pac-tab{padding:15px 18px;font-size:14px;font-weight:600;letter-spacing:.01em;
  color:var(--on-surface-variant);border-bottom:2.5px solid transparent;cursor:pointer;white-space:nowrap;
  display:inline-flex;align-items:center;gap:8px;transition:color var(--dur-s),border-color var(--dur-s),background var(--dur-s)}
.pac-tab:hover{color:var(--on-surface);background:var(--surface-low)}
.pac-tab.is-active{color:var(--primary);border-bottom-color:var(--primary)}
.pac-tab .badge{margin-left:2px}

.pac-panel-in{padding:26px 28px}

/* Cabeçalho de seção dentro das abas */
.sec-title{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.sec-title h2{font-size:20px;font-weight:600;flex:1;min-width:0}
.sec-title .muted{font-weight:400}

/* ── 11. ABA SOBRE ────────────────────────────────────────────────────── */
.sobre-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:20px;align-items:start}
@media(max-width:900px){.sobre-grid{grid-template-columns:minmax(0,1fr)}}
.dl{display:grid;grid-template-columns:auto 1fr;gap:11px 20px;align-items:baseline}
.dl dt{font-size:13px;color:var(--on-surface-variant)}
.dl dd{margin:0;font-size:14px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.dl .copy{display:inline-flex;align-items:center;gap:7px;justify-content:flex-end}
.dl .mini-ico{color:var(--outline)}
.evo-hero{display:grid;gap:6px}
.evo-hero__proc{font-size:16px;font-weight:600;color:var(--on-surface);line-height:1.35}
.evo-hero__gto{font-size:13px;color:var(--on-surface-variant);font-variant-numeric:tabular-nums}
.evo-hero__by{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px;
  padding-top:12px;border-top:1px solid var(--outline-variant);font-size:13px;color:var(--on-surface-variant)}
.consulta-row{display:flex;align-items:center;gap:12px;padding:12px 0}
.consulta-row:not(:last-child){border-bottom:1px solid var(--outline-variant)}
.consulta-row__d{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex:none;
  background:var(--secondary-container);color:var(--on-secondary-container);text-align:center;line-height:1}
.consulta-row__d b{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.consulta-row__d span{font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.consulta-row__d--warn{background:var(--warning-container);color:var(--on-warning-container)}
.consulta-row__d--past{background:var(--surface-highest);color:var(--on-surface-variant)}
.consulta-row__t{flex:1;min-width:0;display:grid;gap:2px}

/* ── 12. ETIQUETAS ────────────────────────────────────────────────────── */
.field-lbl{font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--on-surface-variant);
  margin-bottom:8px;display:block}
.pac-tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:9px}
.etq{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:var(--r-full);
  font-size:12px;font-weight:600;white-space:nowrap;
  background:color-mix(in srgb,var(--c,var(--primary)) 14%,var(--surface-lowest));
  border:1px solid color-mix(in srgb,var(--c,var(--primary)) 34%,transparent);color:var(--on-surface)}
.etq__dot{width:8px;height:8px;border-radius:50%;background:var(--c,var(--primary));flex:none}
.etq__x{margin-left:1px;color:var(--on-surface-variant);display:grid;place-items:center;cursor:pointer;opacity:.7;
  background:none;padding:0}
.etq__x:hover{opacity:1}
.etq-add{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 11px;border-radius:var(--r-full);
  font-size:12px;font-weight:600;cursor:pointer;color:var(--on-surface-variant);
  border:1px dashed var(--outline);background:transparent;transition:background var(--dur-s),color var(--dur-s)}
.etq-add:hover{background:var(--surface-container);color:var(--on-surface)}
.etq-manage{display:grid;gap:14px}
.etq-pool{display:flex;gap:8px;flex-wrap:wrap}
.etq-pool .etq{cursor:pointer;background:none;border-style:dashed}

/* Flash */
.flash{margin:14px 28px 0;padding:12px 16px;border-radius:var(--r-md);font-size:13.5px;font-weight:600}
.flash--notice{background:var(--secondary-container);color:var(--on-secondary-container)}
.flash--alert{background:var(--error-container);color:var(--on-error-container)}

/* ═══════════════════════════════════════════════════════════════════════
   ABA TRATAMENTOS (portado do /mockup)
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Lista de tratamentos + filtro ──────────────────────────────────── */
.nt-toggle{display:none}
.nt-head{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px}
.nt-filter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.nt-search{flex:1;min-width:220px;display:flex;align-items:center;gap:8px;border:1px solid var(--outline-variant);
  border-radius:var(--r-full);padding:7px 14px;background:var(--surface-lowest);color:var(--on-surface-variant)}
.nt-search input{border:0;outline:0;background:none;font:inherit;font-size:13px;width:100%;color:var(--on-surface)}
.nt-search input::placeholder{color:var(--outline)}
.trow{display:grid;grid-template-columns:36px minmax(0,1fr) auto auto;gap:12px;align-items:center;
  padding:10px 12px;border:1px solid var(--outline-variant);border-radius:var(--r-md)}
.trow+.trow{margin-top:8px}
.trow__ic{width:34px;height:34px;border-radius:10px;background:var(--surface-container);display:grid;place-items:center;color:var(--on-surface-variant)}
.trow__t{min-width:0}
.trow__t b{display:block;font-size:13.5px}
.trow__t span{font-size:12px;color:var(--on-surface-variant)}
.trow__val{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.tst{font-size:11px;font-weight:800;padding:4px 10px;border-radius:var(--r-full);white-space:nowrap}
.tst--and{background:var(--warning-container);color:var(--on-warning-container)}
.tst--done{background:var(--success-container);color:var(--on-success-container)}
.nt-card:has(#tflt-and:checked) .trow--done{display:none}
.nt-card:has(#tflt-done:checked) .trow--and{display:none}
.trow.is-hidden{display:none}
a.trow{text-decoration:none;color:inherit;cursor:pointer;
  transition:border-color var(--dur-s),background var(--dur-s),box-shadow var(--dur-s)}
a.trow:hover{background:var(--surface-low);border-color:var(--outline)}
.trow.is-selected{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset;background:var(--surface-low)}
.nt-empty{padding:16px;text-align:center;color:var(--on-surface-variant);font-size:13px}
@media(max-width:680px){.trow{grid-template-columns:36px minmax(0,1fr)}.trow__val,.trow .tst{grid-column:2;justify-self:start}}

/* ── Modal "Adicionar tratamento" (comportamento via Stimulus) ─────── */
.nt-form{display:none;position:fixed;inset:0;z-index:200;padding:22px;
  font-family:'Roboto','Google Sans','Helvetica Neue',system-ui,-apple-system,'Segoe UI',sans-serif;
  color:var(--on-surface);-webkit-font-smoothing:antialiased;line-height:1.5}
html:has(.nt-toggle:checked) .nt-form{display:grid;place-items:center}
/* Modal aberta pelo servidor (por parâmetro na URL, sem checkbox) */
.nt-form--open{display:grid;place-items:center}
/* Tela com mais de uma modal: cada toggle abre apenas a que vem logo depois */
html:has(.nt-toggle:checked) .nt-form--pair{display:none}
html:has(.nt-toggle:checked) .nt-toggle:checked+.nt-form--pair{display:grid;place-items:center}
/* Bairro · Cidade/UF: um campo composto, como no mockup */
.clinic-place{display:grid;grid-template-columns:1.2fr 1fr 56px;gap:10px}
.sheet-doc__logo--img{background:none;padding:0;overflow:hidden}
.sheet-doc__logo--img img{width:100%;height:100%;object-fit:contain}
html:has(.nt-toggle:checked){overflow:hidden}
.nt-scrim{position:absolute;inset:0;background:var(--scrim);cursor:pointer;animation:ntFade var(--dur-m) var(--ease-std) both}
.nt-modal{position:relative;width:min(880px,100%);max-height:min(88vh,100%);display:flex;flex-direction:column;
  background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--e4);overflow:hidden;
  animation:ntPop var(--dur-l) var(--ease-emph) both}
@keyframes ntFade{from{opacity:0}to{opacity:1}}
@keyframes ntPop{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.nt-modal__head{display:flex;align-items:center;gap:10px;padding:16px 22px;
  border-bottom:1px solid var(--outline-variant);background:var(--surface-low)}
.nt-modal__head h3{font-size:16px;flex:1}
.nt-modal__x{width:34px;height:34px;border-radius:var(--r-full);display:grid;place-items:center;
  cursor:pointer;color:var(--on-surface-variant);flex:none}
.nt-modal__x:hover{background:var(--surface-high)}
/* O form_with envolve body+foot num <form>; ele precisa participar do flex
   para o corpo rolar e o rodapé (com o Salvar) ficar sempre visível */
.nt-modal form{display:flex;flex-direction:column;flex:1;min-height:0}
.nt-modal__body{padding:20px 22px;overflow-y:auto;display:grid;gap:14px;align-content:start;flex:1;min-height:0}
.nt-modal__foot{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding:14px 22px;
  border-top:1px solid var(--outline-variant);background:var(--surface-low);flex:none}
.nt-opts{display:grid;gap:8px}
.nt-opt{position:relative;display:flex;gap:11px;align-items:center;border:1px solid var(--outline-variant);border-radius:var(--r-md);
  padding:10px 12px;cursor:pointer;transition:border-color var(--dur-s) var(--ease-std),background var(--dur-s) var(--ease-std)}
.nt-opt input{position:absolute;opacity:0;pointer-events:none}
.nt-opt__ic{width:34px;height:34px;border-radius:10px;background:var(--surface-container);display:grid;place-items:center;flex:none}
.nt-opt__t{flex:1;min-width:0}
.nt-opt__t b{display:block;font-size:13.5px}
.nt-opt__t span{font-size:11.5px;color:var(--on-surface-variant)}
.nt-opt__val{font-size:12.5px;font-weight:700;white-space:nowrap}
.nt-opt:has(input:checked){border-color:var(--primary);background:var(--surface-low);box-shadow:0 0 0 1px var(--primary) inset}
.nt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media(max-width:900px){.nt-grid{grid-template-columns:minmax(0,1fr)}}
.nt-face{display:grid;gap:8px}
.nt-face--ext{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--on-surface-variant);
  background:var(--surface-low);border-radius:var(--r-sm);padding:9px 12px;line-height:1.45}
.nt-face--ext svg{flex:none;color:var(--primary);margin-top:1px}
.fchip{position:relative;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--outline-variant);
  border-radius:var(--r-full);padding:6px 14px;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--on-surface-variant)}
.fchip input{position:absolute;opacity:0;pointer-events:none}
.fchip:has(input:checked){background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
[hidden]{display:none !important}

/* ── Odontograma ────────────────────────────────────────────────────── */
.od-card{padding:0;overflow:hidden}
.od-bar{display:flex;align-items:center;gap:14px;padding:16px 20px;border-bottom:1px solid var(--outline-variant)}
.od-bar h3{flex:1;min-width:0;font-size:16px;font-weight:600}
.od-tabs{display:inline-flex;background:var(--surface-container);border-radius:var(--r-full);padding:3px;gap:2px}
.od-tabs input{position:absolute;opacity:0;pointer-events:none}
.od-seg{padding:7px 15px;font-size:13px;font-weight:600;border-radius:var(--r-full);cursor:pointer;
  color:var(--on-surface-variant);display:inline-flex;align-items:center;gap:6px;
  transition:background var(--dur-s),color var(--dur-s)}
.od-seg:hover{color:var(--on-surface)}
.od-card:has(#odo-perm:checked) .od-seg[for="odo-perm"],
.od-card:has(#odo-dec:checked) .od-seg[for="odo-dec"],
.od-card:has(#odo-falt:checked) .od-seg[for="odo-falt"]{background:var(--surface-lowest);color:var(--primary);box-shadow:var(--e1)}
.od-stage{display:none;padding:22px 20px 8px;overflow-x:auto}
.od-card:has(#odo-perm:checked) #stage-perm,
.od-card:has(#odo-dec:checked) #stage-dec,
.od-card:has(#odo-falt:checked) #stage-falt{display:block}
.od-arch{min-width:660px;display:grid;gap:14px;justify-items:center}
.od-row{display:flex;align-items:flex-end;gap:0}
.od-row--up{align-items:flex-end}
.od-row--down{align-items:flex-start}
.od-quad{display:flex;gap:3px}
.od-mid{width:2px;align-self:stretch;margin:0 10px;background:var(--outline-variant);border-radius:1px}
.od-t{width:34px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:3px 2px;border-radius:9px;
  cursor:pointer;position:relative;background:transparent;
  transition:background var(--dur-s) var(--ease-std),box-shadow var(--dur-s) var(--ease-std)}
.od-row--down .od-t{flex-direction:column-reverse}
.od-t:hover{background:var(--surface-container)}
.od-glyph{width:26px;height:32px;flex:none;fill:var(--surface-lowest);stroke:var(--outline);stroke-width:1.4}
.od-row--up .od-glyph{transform:scaleY(-1)}
.od-num{font-size:11px;font-weight:700;color:var(--on-surface-variant);font-variant-numeric:tabular-nums;line-height:1}
.od-x{position:absolute;inset:0;display:none;place-items:center;color:var(--outline);pointer-events:none}
.od-row--up .od-x{align-items:flex-start;padding-top:2px}
.od-row--down .od-x{align-items:flex-end;padding-bottom:2px}
.t--done .od-glyph{fill:var(--primary);stroke:var(--primary)}
.t--done .od-num{color:var(--primary)}
.t--planned .od-glyph{fill:var(--tertiary-container);stroke:var(--tertiary)}
.t--planned .od-num{color:var(--tertiary)}
.t--absent .od-glyph{opacity:.42;fill:var(--surface-highest);stroke:var(--outline);stroke-dasharray:2.5 2.5}
.t--absent .od-x{display:grid}
.t--absent .od-num{color:var(--outline)}
.t--na .od-glyph{opacity:.28}
.t--na .od-num{opacity:.5}
.od-t.is-cited{background:color-mix(in srgb,var(--secondary) 16%,transparent);
  box-shadow:0 0 0 2.5px var(--secondary);z-index:3}
.od-t.is-cited .od-num{color:var(--on-surface)}
.od-t.is-cited::after{content:"";position:absolute;top:-5px;right:-5px;width:12px;height:12px;border-radius:50%;
  background:var(--secondary);border:2px solid var(--surface-lowest);z-index:4;
  animation:citedPop var(--dur-l) var(--ease-emph) both}
@keyframes citedPop{from{transform:scale(0)}to{transform:scale(1)}}
.od-legend{display:flex;gap:16px;flex-wrap:wrap;align-items:center;padding:12px 20px 18px}
.od-legend .legend__i{font-size:12.5px;display:inline-flex;align-items:center;gap:6px}
.od-legend .od-key{width:18px;height:18px;border-radius:5px;flex:none;border:1.4px solid var(--outline);
  display:inline-grid;place-items:center}
.od-key--done{background:var(--primary);border-color:var(--primary)}
.od-key--planned{background:var(--tertiary-container);border-color:var(--tertiary)}
.od-key--absent{background:var(--surface-highest);border-style:dashed;color:var(--outline)}
.od-key--cited{background:color-mix(in srgb,var(--secondary) 18%,transparent);box-shadow:0 0 0 2px var(--secondary);border-color:transparent}
.od-empty{min-width:660px;text-align:center;padding:30px 20px;color:var(--on-surface-variant)}
/* Vista Faltantes: aviso + dentes clicáveis (realce ao passar o mouse) */
.od-hint{display:flex;align-items:center;gap:8px;justify-content:center;color:var(--on-surface-variant);
  margin:0 20px;padding:8px 12px;border-radius:var(--r-md);background:var(--surface-low)}
.od-hint svg{flex:none;color:var(--error)}
.od-t--click:hover .od-glyph{stroke:var(--error);stroke-dasharray:2.5 2.5;fill:var(--error-container);opacity:1}
.od-t--click:hover .od-num{color:var(--error)}

/* ── Editor de evolução + histórico ─────────────────────────────────── */
.trat-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:20px;margin-top:20px;align-items:start}
@media(max-width:1000px){.trat-grid{grid-template-columns:minmax(0,1fr)}}
.evo-editor{padding:0;overflow:hidden}
.evo-editor__head{display:flex;align-items:center;gap:12px;padding:16px 18px 12px}
.evo-editor__head .n{flex:1;min-width:0;display:grid;gap:2px}
.evo-editor__head b{font-size:15px;font-weight:600}
.evo-area{margin:0 18px;border:1px solid var(--outline);border-radius:var(--r-md);padding:14px 16px;
  background:var(--surface-lowest);position:relative;
  animation:evoAreaGlow 1.4s var(--ease-decel) 2}
/* Aro de luz (cores do sistema) para sinalizar a evolução carregada */
@keyframes evoAreaGlow{
  0%,100%{box-shadow:0 0 0 0 transparent;border-color:var(--outline)}
  45%{box-shadow:0 0 0 5px color-mix(in srgb,var(--primary) 22%,transparent);border-color:var(--primary)}
}
@media (prefers-reduced-motion:reduce){.evo-area{animation:none}}
.evo-area__lbl{position:absolute;top:-8px;left:12px;padding:0 5px;background:var(--surface-lowest);
  font-size:12px;font-weight:500;color:var(--on-surface-variant)}
.evo-area textarea{width:100%;border:0;outline:0;background:none;resize:vertical;min-height:120px;
  font:inherit;font-size:14px;line-height:1.6;color:var(--on-surface)}
.evo-cited{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 18px}
.evo-cited__lbl{font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--on-surface-variant);
  display:inline-flex;align-items:center;gap:6px}
.evo-editor__foot{display:flex;align-items:center;gap:10px;padding:12px 18px 16px;
  border-top:1px solid var(--outline-variant);margin-top:6px}
.evo-editor__foot .grow{flex:1}
/* Confirmação de salvamento — logo abaixo do botão, onde o dentista está olhando */
.evo-flash{display:flex;align-items:center;gap:8px;margin:0 18px 16px;
  animation:evoFlashIn var(--dur-m) var(--ease-decel) both}
.evo-flash svg{flex:none}
@keyframes evoFlashIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
.evo-hist{padding:16px 8px 8px}
.evo-hist__h{padding:0 12px 10px;font-size:15px;font-weight:600}
.evo-item{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:12px;border-radius:var(--r-md);cursor:pointer;
  border-left:3px solid transparent;transition:background var(--dur-s);width:100%;text-align:left;background:none}
.evo-item:hover{background:var(--surface-low)}
.evo-item.is-active{border-left-color:var(--primary);background:var(--surface-low)}
.evo-item__dot{width:34px;height:34px;border-radius:var(--r-full);display:grid;place-items:center;flex:none;
  background:var(--surface-container);color:var(--on-surface-variant)}
.evo-item__b{min-width:0;display:grid;gap:3px}
.evo-item__b b{font-size:13.5px;font-weight:600}
.evo-item__meta{font-size:11.5px;color:var(--on-surface-variant);display:flex;gap:6px;flex-wrap:wrap;align-items:center}

/* ── Checklist de faturamento (CSS-only, fiel ao mockup) ────────────── */
.fcheck{margin:4px 18px 0;border:1px solid var(--outline-variant);border-radius:var(--r-md);overflow:hidden}
.fcheck__h{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--surface-low)}
.fcheck__h b{flex:1;font-size:13.5px;font-weight:700}
.fstat{display:none;align-items:center;gap:5px;font-size:11.5px;font-weight:800;padding:4px 11px;border-radius:var(--r-full)}
.fstat svg{width:14px;height:14px}
.fstat--ok{display:inline-flex;background:var(--success-container);color:var(--on-success-container)}
.fcheck__list{display:grid}
.fchk2{display:grid;grid-template-columns:26px minmax(0,1fr);gap:12px;padding:12px 14px;align-items:start}
.fchk2:not(:last-child){border-bottom:1px solid var(--outline-variant)}
.fchk2__num{width:24px;height:24px;border-radius:var(--r-full);display:grid;place-items:center;
  font-size:12px;font-weight:800;background:var(--success);color:#fff;margin-top:2px}
.fchk2__row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.fchk2__q{font-size:13.5px;font-weight:600;flex:1;min-width:180px}
.fchk2__q span{display:block;font-size:11.5px;font-weight:500;color:var(--on-surface-variant);margin-top:1px}
.ynseg{position:relative;display:inline-flex;gap:3px;padding:3px;border:1px solid var(--outline-variant);
  border-radius:var(--r-full);background:var(--surface-lowest);flex:none}
.ynseg input{position:absolute;opacity:0;pointer-events:none}
.ynseg label{padding:4px 14px;border-radius:var(--r-full);font-size:12px;font-weight:700;
  color:var(--on-surface-variant);cursor:pointer;transition:background var(--dur-s) var(--ease-std),color var(--dur-s) var(--ease-std)}
.ynseg label:hover{background:var(--surface-high)}
.ynseg input:checked+label{background:var(--primary);color:var(--on-primary)}
.fchk2__more{display:none;margin-top:11px;gap:10px}
.fchk2:has(> div > .fchk2__row input[id$="-s"]:checked) > div > .fchk2__more{display:grid}
.fsub{border-top:1px dashed var(--outline-variant);padding-top:10px}
.fsub__more{display:none;margin-top:10px;gap:10px}
.fsub:has(> .fchk2__row input[id$="-s"]:checked) > .fsub__more{display:grid}
.fld{display:grid;gap:5px}
.fld__lbl{font-size:12px;font-weight:600;color:var(--on-surface-variant)}
.fld__lbl em{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--on-warning-container);background:var(--warning-container);border-radius:var(--r-full);padding:2px 8px;margin-left:6px}
.fld__in{width:100%;font:inherit;font-size:13px;color:var(--on-surface);background:var(--surface-lowest);
  border:1px solid var(--outline-variant);border-radius:var(--r-sm);padding:9px 12px}
.fld__in::placeholder{color:var(--outline)}
.fld__in:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-container)}
.fld:has(.fld__in.req:placeholder-shown) .fld__in{border-color:var(--warning)}
.fld__warn{display:none;align-items:flex-start;gap:6px;font-size:11.5px;line-height:1.4;color:var(--on-warning-container);
  background:var(--warning-container);border-radius:var(--r-sm);padding:7px 10px}
.fld__warn svg{flex:none;margin-top:1px}
.fld:has(.fld__in:placeholder-shown) .fld__warn{display:flex}
.fld__hint{display:flex;align-items:flex-start;gap:6px;font-size:11.5px;line-height:1.4;color:var(--on-surface-variant)}
.fld__hint svg{flex:none;color:var(--primary);margin-top:1px}
.gto-toggle{display:none}
.gto-drop{display:flex;align-items:center;gap:10px;padding:12px;border:2px dashed var(--warning);border-radius:var(--r-md);
  cursor:pointer;color:var(--on-surface-variant);font-size:12px;line-height:1.45;background:var(--surface-lowest)}
.gto-drop b{display:block;color:var(--on-surface);font-size:12.5px}
.gto-drop svg{color:var(--warning);flex:none}
.gto-file{display:none;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md);
  background:var(--success-container);color:var(--on-success-container);font-size:12px;line-height:1.45;cursor:pointer}
.gto-file svg{flex:none}
.gto-file__x{margin-left:auto;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  text-decoration:underline;white-space:nowrap}
.gto{display:grid}
.gto:has(.gto-toggle:checked) .gto-drop{display:none}
.gto:has(.gto-toggle:checked) .gto-file{display:flex}
.fchk2:has(#ck2-s:checked):has(#inp-exames:placeholder-shown) .fchk2__num,
.fchk2:has(#ck2-s:checked):has(#inp-motivo:placeholder-shown) .fchk2__num,
.fchk2:has(#ck3-s:checked):has(#inp-meds:placeholder-shown) .fchk2__num,
.fchk2:has(#inp-dente:placeholder-shown) .fchk2__num,
.fchk2:has(#ck5-s:checked):has(#inp-interc:placeholder-shown) .fchk2__num,
.fchk2:has(#ck6-s:checked):has(#ck6-file:not(:checked)) .fchk2__num,
.fchk2:has(#ck6-s:checked):has(#ck6a-s:checked):has(#ck6-img1:not(:checked)) .fchk2__num,
.fchk2:has(#ck6-s:checked):has(#ck6a-s:checked):has(#ck6-img2:not(:checked)) .fchk2__num,
.fchk2:has(#ck6-s:checked):has(#ck6b-s:checked):has(#ck6-termo:not(:checked)) .fchk2__num{
  background:transparent;border:2px dashed var(--warning);color:var(--warning)}
.fgate{display:flex;gap:9px;align-items:flex-start;margin:12px 18px 0;padding:11px 14px;border-radius:var(--r-md);
  background:var(--warning-container);color:var(--on-warning-container);font-size:12.5px;line-height:1.45}
.fgate svg{flex:none;margin-top:1px}
.fgate--ok{background:var(--success-container);color:var(--on-success-container)}
.fgate--warn{display:none}
.btn-fatur .ic-lock{display:none}
.evo-editor:has(#ck2-s:checked):has(#inp-exames:placeholder-shown),
.evo-editor:has(#ck2-s:checked):has(#inp-motivo:placeholder-shown),
.evo-editor:has(#ck3-s:checked):has(#inp-meds:placeholder-shown),
.evo-editor:has(#inp-dente:placeholder-shown),
.evo-editor:has(#ck5-s:checked):has(#inp-interc:placeholder-shown),
.evo-editor:has(#ck6-s:checked):has(#ck6-file:not(:checked)),
.evo-editor:has(#ck6-s:checked):has(#ck6a-s:checked):has(#ck6-img1:not(:checked)),
.evo-editor:has(#ck6-s:checked):has(#ck6a-s:checked):has(#ck6-img2:not(:checked)),
.evo-editor:has(#ck6-s:checked):has(#ck6b-s:checked):has(#ck6-termo:not(:checked)){
  & .fgate--warn{display:flex}
  & .fgate--ok{display:none}
  & .fstat--ok{display:none}
  & .fstat--todo{display:inline-flex;background:var(--warning-container);color:var(--on-warning-container)}
  & .btn-fatur{background:var(--surface-highest);color:var(--on-surface-variant);cursor:not-allowed;box-shadow:none}
  & .btn-fatur:hover::after{opacity:0}
  & .btn-fatur .ic-lock{display:block}
  & .btn-fatur .ic-go{display:none}
}


/* ═══ ABA ANAMNESE (portado do /mockup) ═══════════════════════════════ */
.anam-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:20px;align-items:start}
@media(max-width:1000px){.anam-grid{grid-template-columns:minmax(0,1fr)}}
.qa{display:grid;gap:0}
.qa__i{display:flex;align-items:flex-start;gap:12px;padding:13px 2px}
.qa__i:not(:last-child){border-bottom:1px solid var(--outline-variant)}
.qa__q{flex:1;min-width:0;font-size:14px}
.qa__q small{display:block;color:var(--on-surface-variant);font-size:12.5px;margin-top:2px}
.qa__a{font-weight:700;font-size:13px;white-space:nowrap}
.qa__a--no{color:var(--on-surface-variant)}
.qa__a--yes{color:var(--warning)}
/* Linha do tempo de envio/assinatura */
.sign-steps{display:grid;gap:0;margin-bottom:6px}
.sign-step{display:grid;grid-template-columns:28px 1fr;gap:12px;position:relative;padding-bottom:16px}
.sign-step:not(:last-child)::before{content:"";position:absolute;left:13px;top:28px;bottom:0;width:2px;background:var(--success)}
.sign-step__dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
  background:var(--success-container);color:var(--on-success-container)}
.sign-step--todo .sign-step__dot{background:var(--surface-high);color:var(--on-surface-variant)}
.sign-step--todo:not(:last-child)::before{background:var(--outline-variant)}
.sign-step__t b{font-size:13.5px;font-weight:600;display:block}
.sign-step__t span{font-size:11.5px;color:var(--on-surface-variant)}
/* Bloco de assinatura */
.signature{border:1px solid var(--outline-variant);border-radius:var(--r-md);padding:16px;background:var(--surface-low);
  display:grid;gap:10px;margin-top:4px}
.signature__pad{background:var(--surface-lowest);border-radius:var(--r-sm);border:1px dashed var(--outline-variant);
  height:96px;display:grid;place-items:center;position:relative;overflow:hidden}
.signature__pad svg{width:74%;height:70%;stroke:var(--on-surface);fill:none;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.signature__meta{display:grid;gap:3px;font-size:11.5px;color:var(--on-surface-variant)}
.signature__meta b{color:var(--on-surface);font-size:13px}
.signature__hash{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:10.5px;
  background:var(--surface-container);padding:5px 8px;border-radius:var(--r-xs);word-break:break-all}
.qr{width:104px;height:104px;flex:none;padding:8px;background:#fff;border-radius:var(--r-sm);border:1px solid var(--outline-variant)}
.qr svg{width:100%;height:100%;shape-rendering:crispEdges}

/* ── Nota + push (ilustração do mockup) ─────────────────────────────── */
.pac-note{display:flex;gap:10px;align-items:flex-start;padding:13px 16px;border-radius:var(--r-md);
  background:var(--primary-container);color:var(--on-primary-container);font-size:13px;line-height:1.5;margin-top:16px}
.pac-note svg{flex:none;margin-top:1px}
.pac-note b{font-weight:700}
.fatur-flow{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;margin-top:20px;align-items:start}
@media(max-width:1240px){.fatur-flow{grid-template-columns:minmax(0,1fr)}.push-side{max-width:340px;margin:0 auto}}
.push-side{display:grid;gap:12px;align-content:start}
/* Celular compacto (prévia do push dentro do card lateral) */
.phone--sm{width:100%;max-width:216px}
.phone--sm .phone__screen{min-height:auto}
.phone--sm .phone__time-lg{padding:10px 0 2px}
.phone--sm .phone__time-lg b{font-size:30px}
.phone--sm .phone__hint{padding:10px 8px}
.phone{width:236px;margin:0 auto;background:#0c1516;border-radius:30px;padding:10px;
  box-shadow:var(--e4),inset 0 0 0 2px #26383a;position:relative}
.phone__screen{background:linear-gradient(160deg,#0e6b74,#0b7c86 45%,#12a08c);border-radius:22px;overflow:hidden;
  min-height:400px;position:relative;display:flex;flex-direction:column}
.phone__notch{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:78px;height:18px;
  background:#0c1516;border-radius:0 0 12px 12px;z-index:3}
.phone__status{display:flex;align-items:center;justify-content:space-between;padding:11px 18px 6px;
  color:#eafbfc;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.phone__status .r{display:flex;gap:5px;align-items:center;opacity:.9}
.phone__time-lg{text-align:center;color:#fff;padding:14px 0 4px}
.phone__time-lg b{font-size:44px;font-weight:300;letter-spacing:-.01em;line-height:1}
.phone__time-lg span{display:block;font-size:12px;font-weight:600;opacity:.9;margin-top:2px}
.push{margin:14px 10px 0;background:rgba(255,255,255,.96);border-radius:16px;padding:11px 12px;
  box-shadow:0 8px 24px rgba(0,0,0,.28)}
.push__top{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.push__app{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;flex:none;
  background:linear-gradient(140deg,#0b7c86,#12a08c);color:#fff}
.push__app svg{width:14px;height:14px}
.push__meta{flex:1;display:flex;align-items:center;justify-content:space-between;font-size:10px;
  font-weight:700;letter-spacing:.03em;color:#5a6a6a}
.push__title{font-size:13px;font-weight:700;color:#141414;margin-bottom:2px}
.push__body{font-size:12px;line-height:1.4;color:#3a3a3a}
.push__cta{margin-top:8px;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:#0b7c86}
.phone__hint{margin-top:auto;padding:12px;text-align:center;color:rgba(255,255,255,.9);font-size:11px;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:6px}

/* ══════════════════════════════════════════════════════════════════════════
   IMAGENS — galeria de exames (portado do mockup, linhas 1616-1637)
   ══════════════════════════════════════════════════════════════════════════ */
.img-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.img-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.img-card{border-radius:var(--r-md);overflow:hidden;border:1px solid var(--outline-variant);
  background:var(--surface-lowest);box-shadow:var(--e1);cursor:pointer;display:block;
  transition:box-shadow var(--dur-m) var(--ease-std),transform var(--dur-m) var(--ease-emph)}
.img-card:hover{box-shadow:var(--e3);transform:translateY(-2px)}
.img-thumb{height:150px;position:relative;display:grid;place-items:center;overflow:hidden}
.img-thumb--xray{background:radial-gradient(120% 120% at 50% 40%,#20313a,#0a1418)}
.img-thumb--xray .od-glyph{fill:rgba(210,230,235,.14);stroke:rgba(210,230,235,.72);stroke-width:1}
.img-thumb--photo{background:linear-gradient(135deg,#e7cfc0,#d7a98f)}
.img-thumb--photo svg{width:52px;height:52px;color:rgba(90,45,25,.5)}
.img-thumb__tag{position:absolute;top:9px;left:9px;z-index:1;
  background:rgba(0,0,0,.4);color:#fff;border-color:rgba(255,255,255,.25)}
.img-card__body{padding:11px 13px;display:grid;gap:5px}
.img-card__body b{font-size:13.5px;font-weight:600}
.img-card__body .m{font-size:11.5px;color:var(--on-surface-variant);display:flex;gap:6px;align-items:center}
.img-drop{border:2px dashed var(--outline-variant);border-radius:var(--r-md);min-height:203px;
  display:grid;place-content:center;justify-items:center;gap:8px;text-align:center;color:var(--on-surface-variant);
  cursor:pointer;transition:border-color var(--dur-s),background var(--dur-s);padding:16px}
.img-drop:hover,.img-drop.is-over{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 5%,transparent)}
.img-drop__ico{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;
  background:var(--primary-container);color:var(--on-primary-container)}

/* Exame com arquivo de imagem: a foto ocupa a miniatura inteira */
.img-thumb__img{width:100%;height:100%;object-fit:cover;display:block}
/* Documento (laudo/PDF) — papel neutro do próprio tema */
.img-thumb--doc{background:linear-gradient(135deg,var(--surface-high),var(--surface-highest))}
.img-thumb--doc svg{width:48px;height:48px;color:var(--on-surface-variant)}
/* No papel claro do laudo a etiqueta escura não teria contraste */
.img-thumb--doc .img-thumb__tag{background:var(--surface-highest);color:var(--on-surface);
  border-color:var(--outline-variant)}
.img-empty{display:flex;align-items:center;gap:8px;justify-content:center;margin-top:20px;
  color:var(--on-surface-variant);font-size:13.5px}

/* ── Visualizador do exame (abre ao clicar no card) ── */
.iv-toggle{position:absolute;opacity:0;pointer-events:none}
.img-viewer{display:none;position:fixed;inset:0;z-index:200;padding:22px}
.iv-toggle:checked+.img-viewer{display:grid;place-items:center}
.img-view{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:20px;align-items:start}
.img-view__stage{border-radius:var(--r-md);min-height:320px;position:relative;
  display:grid;place-items:center;overflow:hidden}
.img-view__stage img{width:100%;height:100%;max-height:56vh;object-fit:contain;display:block}
.img-view__nofile{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:11.5px;
  color:rgba(255,255,255,.75)}
.img-thumb--doc .img-view__nofile,.img-thumb--photo .img-view__nofile{color:var(--on-surface-variant)}
.img-view__side{display:grid;gap:12px}
.img-view__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.img-view__form{display:grid;gap:12px}

/* Seletor de arquivos do modal de envio */
.img-pick{display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer;
  border:2px dashed var(--outline-variant);border-radius:var(--r-md);
  transition:border-color var(--dur-s),background var(--dur-s)}
.img-pick:hover{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 5%,transparent)}
.img-pick__in{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.img-pick__ico{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--primary-container);color:var(--on-primary-container)}
.img-pick__t{display:grid;gap:2px;min-width:0}
.img-pick__t b{font-size:13.5px;font-weight:600}
.img-pick__t small{font-size:11.5px;color:var(--on-surface-variant)}

@media (max-width:900px){
  .img-view{grid-template-columns:minmax(0,1fr)}
}

/* ══════════════════════════════════════════════════════════════════════════
   DOCUMENTOS — receituário, atestado, declaração, exames e encaminhamento
   (portado do mockup, linhas 1639-1682 e 1840-1842)
   ══════════════════════════════════════════════════════════════════════════ */
.doc-layout{display:grid;grid-template-columns:212px minmax(0,1fr);gap:20px;align-items:start}
.doc-nav{display:grid;gap:2px}
.doc-navitem{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:var(--r-md);cursor:pointer;
  color:var(--on-surface-variant);font-size:14px;font-weight:600;transition:background var(--dur-s),color var(--dur-s)}
.doc-navitem:hover{background:var(--surface-low);color:var(--on-surface)}
.doc-navitem svg{color:var(--on-surface-variant)}
.doc-navitem.is-active{background:var(--secondary-container);color:var(--on-secondary-container)}
.doc-navitem.is-active svg{color:var(--on-secondary-container)}
.doc-work{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:20px;align-items:start}

/* Catálogo clicável (medicamentos · exames) */
.med-list{display:grid;gap:8px}
.med{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:12px 14px;width:100%;
  border:1px solid var(--outline-variant);border-radius:var(--r-md);cursor:pointer;text-align:left;
  background:none;color:inherit;font:inherit;transition:border-color var(--dur-s),background var(--dur-s)}
.med:hover{border-color:var(--primary);background:var(--surface-low)}
.med.is-on{border-color:var(--primary);background:var(--primary-container)}
.med-form{display:block}
.med__n{min-width:0}
.med__n b{font-size:14px;font-weight:600;display:block}
.med__n span{font-size:12px;color:var(--on-surface-variant)}
.med__add{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--primary);color:var(--on-primary)}

/* Documento imprimível (folha) — pré-visualização em proporção A4.
   A folha tem 210×297mm: tudo dentro dela é medido em `em` a partir de uma
   fonte-base em `cqw`, então o conteúdo encolhe junto com a largura, como
   numa prévia de impressão. Na impressão a base volta a 13.5px (tamanho real). */
.sheet-a4{container-type:inline-size}
.sheet-doc{background:#fff;color:#1a1a1a;border-radius:var(--r-sm);box-shadow:var(--e2);
  border:1px solid var(--outline-variant);display:grid;gap:1.185em;
  grid-template-rows:auto auto 1fr auto;  /* só o corpo absorve a sobra da página */
  font-size:max(1.7cqw,8px);            /* 13.5px numa folha A4 de 794px */
  min-height:141.42cqw;                 /* 297/210 — a folha inteira */
  padding:2.222em 2.222em 1.926em}
:root[data-theme="dark"] .sheet-doc{color:#1a1a1a}
.sheet-doc__lh{display:flex;align-items:center;gap:.963em;padding-bottom:1.185em;border-bottom:.15em solid #0B7C86}
.sheet-doc__logo{width:3.26em;height:3.26em;border-radius:.815em;display:grid;place-items:center;flex:none;
  background:#0B7C86;color:#fff}
.sheet-doc__logo svg{width:1.5em;height:1.5em}
.sheet-doc__lh h4{font-size:1.26em;font-weight:700;color:#0B4A50;letter-spacing:-.01em}
.sheet-doc__lh span{font-size:.852em;color:#5a6a6a}
.sheet-doc__title{text-align:center;font-size:1.111em;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:#0B4A50}
.sheet-doc__body{font-size:1em;line-height:1.7;color:#2a2a2a}
.sheet-doc__body b{color:#111}
.sheet-doc__body p+p{margin-top:.78em}
.sheet-doc__place{margin-top:1.04em;text-align:right}
.sheet-doc__note{margin-top:.89em;font-style:italic;color:#555}
.sheet-doc__lead{margin-bottom:.74em}
.sheet-doc__ph{color:#8a9a9a;font-style:italic}
.rx-item{padding:.815em 0;border-bottom:1px solid #e5e5e5;display:grid;gap:.148em}
.rx-item b{font-size:1.037em}
.rx-item span{font-size:.926em;color:#555}
.rx-item i{font-style:normal;color:#0B7C86;font-weight:600;font-size:.889em}
.sheet-doc__sign{margin-top:auto;padding-top:2.52em;display:grid;justify-items:center;gap:.222em;text-align:center}

/* Documentos de texto curto: espaço após o cabeçalho, texto, espaço, assinatura
   — o vazio sobra no pé da folha, como num atestado impresso de verdade. */
.sheet-doc--prose .sheet-doc__title{margin-top:2.4em}  /* respiro entre timbre e título */
/* centrado na folha, porém deslocado para cima (a margem entra no cálculo) */
.sheet-doc--prose .sheet-doc__body{align-self:center;margin-bottom:13em}
.sheet-doc--prose .sheet-doc__sign{align-self:end}     /* assinatura no rodapé */

/* Rubrica sobre a linha da assinatura */
.sheet-doc__rubric{display:block;width:12.6em;margin-bottom:-.55em}
.sheet-doc__rubric svg{width:100%;height:3.2em;display:block;fill:none;stroke:#1a2e30;
  stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.sheet-doc__sign .line{width:17.04em;border-top:1px solid #333;padding-top:.444em;font-size:.926em;color:#333}
.sheet-doc__sign b{font-size:.963em;color:#111}
.doc-actions{display:flex;gap:10px;margin-top:14px}
.form-stack{display:grid;gap:16px}
.autofill{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;letter-spacing:.03em;
  padding:2px 7px;border-radius:var(--r-xs);margin-left:auto;flex:none;
  background:var(--secondary-container);color:var(--on-secondary-container)}
.tf__help{font-size:12px;color:var(--on-surface-variant);padding:5px 2px 0;display:flex;gap:6px;align-items:center}
.tf__val{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tf__box--area{height:auto;padding:12px 16px;align-items:flex-start}
.tf__box--area textarea{border:0;outline:0;background:none;font:inherit;font-size:14px;width:100%;
  color:inherit;resize:vertical;line-height:1.5}
.ico--fixed{flex:none}
.ico--primary{color:var(--primary)}

/* Usuários & acesso (mockup, linhas 2364-2369) */
.user-row{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:14px;align-items:center;padding:13px 0}
.user-row:not(:last-child){border-bottom:1px solid var(--outline-variant)}
.user-row.is-off{opacity:.62}
.user-row__n{min-width:0;display:grid;gap:1px}
.user-row__n b{font-size:14px;font-weight:600}
.user-row__n span{font-size:12px;color:var(--on-surface-variant)}

/* Paleta de cores da etiqueta */
.etq-colors{display:flex;gap:10px;flex-wrap:wrap}
.etq-color{width:32px;height:32px;border-radius:50%;cursor:pointer;display:grid;place-items:center;
  background:var(--c);box-shadow:0 0 0 2px var(--surface-lowest)}
.etq-color input{position:absolute;opacity:0;pointer-events:none}
.etq-color span{width:14px;height:14px;border-radius:50%;background:transparent;transition:background var(--dur-s)}
.etq-color:has(input:checked){box-shadow:0 0 0 2px var(--surface-lowest),0 0 0 4px var(--c)}
.etq-color:has(input:checked) span{background:#fff}

/* Campos editáveis dentro do texto padrão (a folha é sempre clara) */
.doc-tok{background:#E3F3F5;border-bottom:1.5px dashed #0B7C86;padding:0 4px;border-radius:3px;font-weight:700;color:#0B4A50}
.doc-legend{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:11.5px;color:var(--on-surface-variant)}
.doc-legend i{width:14px;height:14px;border-radius:3px;background:#E3F3F5;border-bottom:1.5px dashed #0B7C86;flex:none}

/* Catálogo de medicamentos: lupa, aviso de vazio e botão de cadastro no rodapé */
.med-search{flex:none;width:100%}
.med-empty{display:flex;align-items:center;gap:8px;justify-content:center;padding:16px 8px;
  font-size:13px;color:var(--on-surface-variant)}
.med-add{margin-top:12px}

/* Modal estreito (cadastros curtos, como um medicamento novo) */
.nt-modal--sm{width:min(560px,100%)}

/* Apoios do formulário de documentos */
.doc-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.doc-chips{display:flex;gap:7px;flex-wrap:wrap}
.chip--check{cursor:pointer;user-select:none}
.chip--check input{position:absolute;opacity:0;pointer-events:none}
.chip--check:has(input:checked){background:var(--secondary-container);color:var(--on-secondary-container);
  border-color:var(--secondary-container)}
.chip--check:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:2px}

/* Folha sozinha na página de impressão */
.doc-print{max-width:820px;margin:0 auto}
.doc-print .sheet-doc{box-shadow:none;border:0;font-size:13.5px;
  min-height:250mm}   /* A4 menos as margens de página: assinatura no pé, como na prévia */
/* No papel o destaque de edição não faz sentido — fica só a ênfase do texto */
.doc-print .doc-tok{background:none;border-bottom:0;padding:0;color:#111}

@media (max-width:1240px){ .doc-work{grid-template-columns:minmax(0,1fr)} }
@media (max-width:900px){ .doc-layout{grid-template-columns:minmax(0,1fr)} }

/* ══════════════════════════════════════════════════════════════════════════
   TERMOS E CONTRATOS (portado do mockup, linhas 866-897, 1825-1838, 1937-1947)
   ══════════════════════════════════════════════════════════════════════════ */
.termo-clause{padding:.667em 0;border-bottom:1px solid #e5e5e5;display:grid;grid-template-columns:1.63em 1fr;
  gap:.593em;font-size:.926em;line-height:1.55;color:#2a2a2a}
.termo-clause:last-child{border-bottom:0}
.termo-clause b.n{font-weight:700;color:#0B4A50}
.sheet-doc__imported{text-align:center;font-size:.704em;color:#999;letter-spacing:.09em;font-weight:700}
/* respiro entre o título do termo e o corpo do documento */
.sheet-doc--termo .sheet-doc__body{margin-top:2.2em}
/* cidade e data descolam da última cláusula */
.sheet-doc--termo .sheet-doc__place{margin-top:2.8em}

/* Modo de edição: barra de aviso e trechos ajustáveis em âmbar */
.termo-editbar{display:flex;align-items:flex-start;gap:11px;padding:13px 16px;border-radius:var(--r-md);
  background:var(--tertiary-container);color:var(--on-tertiary-container);font-size:13px;line-height:1.5;
  margin-bottom:16px;animation:screenIn var(--dur-m) var(--ease-decel) both}
.termo-editbar .grow{flex:1;min-width:0}
.sheet-doc--editing{box-shadow:0 0 0 2.5px var(--tertiary),var(--e2)}
.sheet-doc--editing .sheet-doc__body>p{outline:1.5px dashed #B26A00;outline-offset:3px;border-radius:3px;background:#FFF9EE}
.termo-clause__in{width:100%;font:inherit;color:inherit;line-height:1.55;resize:vertical;
  border:0;outline:1.5px dashed #B26A00;outline-offset:3px;border-radius:3px;background:#FFF9EE;padding:0}
.termo-fields{margin-top:18px;padding:16px;border-radius:var(--r-md);background:var(--surface-low);
  border:1px solid var(--outline-variant)}
.termo-fields__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}

/* Lista "O que este termo cobre" */
.termo-covers{display:grid;gap:2px}
.termo-covers li{display:flex;gap:8px;align-items:flex-start;padding:4px 0;font-size:13px;
  color:var(--on-surface-variant)}
.termo-covers li svg{color:var(--success);flex:none;margin-top:2px}
.ico--ok{color:var(--success)}

/* Bottom sheet + scrim (abertos por :checked, sem JavaScript) */
.sheet-toggle{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.scrim{position:fixed;inset:0;background:var(--scrim);opacity:0;pointer-events:none;z-index:70;
  transition:opacity var(--dur-l) var(--ease-std)}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:71;margin:0 auto;max-width:720px;
  background:var(--surface-lowest);border-radius:var(--r-xl) var(--r-xl) 0 0;
  box-shadow:var(--e4);transform:translateY(102%);
  transition:transform var(--dur-l) var(--ease-emph);max-height:86vh;overflow:auto}
.sheet-toggle:checked ~ .scrim{opacity:1;pointer-events:auto}
.sheet-toggle:checked ~ .sheet{transform:translateY(0)}
.sheet__grab{width:32px;height:4px;border-radius:2px;background:var(--outline-variant);margin:14px auto 6px}
.sheet__head{display:flex;align-items:center;gap:12px;padding:8px 24px 14px}
.sheet__head h3{flex:1}
.sheet__body{padding:0 24px 8px;display:grid;gap:18px}
.sheet__foot{position:sticky;bottom:0;display:flex;gap:12px;align-items:center;
  padding:16px 24px;background:var(--surface-lowest);border-top:1px solid var(--outline-variant)}
.close-x{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  color:var(--on-surface-variant);transition:background var(--dur-s)}
.close-x:hover{background:var(--surface-container)}
.cad-body{display:grid;gap:18px}
.cad-preview{padding:14px 16px;border-radius:var(--r-md);background:var(--primary-container);
  color:var(--on-primary-container);font-size:13px;line-height:1.5;display:flex;gap:10px;align-items:flex-start}
.cad-preview svg{flex:none;margin-top:1px}

/* ══════════════════════════════════════════════════════════════════════════
   ORÇAMENTOS — plano de tratamento e desmembramento por dentista
   (portado do mockup, linhas 1053-1057 e 1684-1717)
   ══════════════════════════════════════════════════════════════════════════ */
.orc-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.orc-head__tot{margin-left:auto;text-align:right}
.orc-head__tot b{font-size:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:block}
.orc-head__tot span{font-size:12px;color:var(--on-surface-variant)}
.tbl-wrap{overflow-x:auto}
.orc-tbl{width:100%;min-width:720px;border-collapse:collapse}
.orc-tbl th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:0 14px 12px;white-space:nowrap}
.orc-tbl th.r,.orc-tbl td.r{text-align:right}
.orc-tbl td{padding:14px;border-top:1px solid var(--outline-variant);vertical-align:middle;font-size:13.5px}
.orc-tbl .proc b{font-weight:600}
.orc-tbl .proc span{display:block;font-size:11.5px;color:var(--on-surface-variant)}
.orc-tbl .who{display:flex;align-items:center;gap:9px}
.orc-tbl .num{font-variant-numeric:tabular-nums}
.orc-tbl tfoot td{border-top:2px solid var(--outline);font-weight:700;padding-top:15px;font-variant-numeric:tabular-nums}

/* Desmembramento: uma linha de repasse por dentista */
.desm{margin-top:22px;border:1px solid color-mix(in srgb,var(--primary) 35%,transparent);
  border-radius:var(--r-lg);overflow:hidden}
.desm__top{display:flex;align-items:center;gap:13px;padding:15px 18px;
  background:var(--primary-container);color:var(--on-primary-container)}
.desm__top .grow{flex:1;min-width:0}
.desm__top b{font-weight:700}
.desm__split{display:flex;align-items:center;justify-content:center;gap:9px;padding:12px;
  font-size:12.5px;font-weight:700;color:var(--on-surface-variant);background:var(--surface-low)}
.desm__branches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--outline-variant)}
.desm__b{background:var(--surface-lowest);padding:18px 16px;display:grid;gap:12px;align-content:start}
.desm__b-head{display:flex;align-items:center;gap:11px}
.desm__b-head .n{min-width:0;display:grid;gap:1px}
.desm__b-head b{font-size:14px;font-weight:700}
.desm__b-head span{font-size:11.5px;color:var(--on-surface-variant)}
.desm__b-proc{font-size:13px;color:var(--on-surface-variant);display:flex;align-items:center;gap:7px}
.desm__b-val{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:auto;
  padding-top:11px;border-top:1px solid var(--outline-variant)}
.desm__b-val b{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}
.desm__b-link{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--primary);cursor:pointer}

@media (max-width:900px){ .desm__branches{grid-template-columns:minmax(0,1fr)!important} }

/* ══════════════════════════════════════════════════════════════════════════
   DÉBITOS E RECEBIMENTOS (portado do mockup, linhas 1004-1011 e 1719-1728)
   ══════════════════════════════════════════════════════════════════════════ */
.deb-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}
.sum__c{padding:18px 20px;display:grid;gap:7px}
.sum__k{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant)}
.sum__v{font-size:29px;line-height:1.05;font-weight:700;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.sum__v small{font-size:15px;font-weight:600;color:var(--on-surface-variant);letter-spacing:0}
.sum__f{font-size:11.5px;color:var(--on-surface-variant);display:flex;align-items:center;gap:5px}
.sum__c--hero{background:var(--primary);color:var(--on-primary);border-color:transparent}
.sum__c--hero .sum__k,.sum__c--hero .sum__f{color:color-mix(in srgb,var(--on-primary) 82%,transparent)}
.sum__c--hero .sum__v small{color:color-mix(in srgb,var(--on-primary) 78%,transparent)}

.deb-tbl{width:100%;min-width:820px;border-collapse:collapse}
.deb-tbl th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:0 14px 12px;white-space:nowrap}
.deb-tbl th.r,.deb-tbl td.r{text-align:right}
.deb-tbl td{padding:13px 14px;border-top:1px solid var(--outline-variant);font-size:13.5px;vertical-align:middle}
.deb-tbl .num{font-variant-numeric:tabular-nums;font-weight:600}
.deb-tbl tfoot td{border-top:2px solid var(--outline);font-weight:700;padding-top:15px;font-variant-numeric:tabular-nums}

/* Procedimento clicável: leva ao orçamento de origem */
.deb-link{display:grid;gap:2px;color:inherit}
.deb-link span{font-size:11.5px;color:var(--on-surface-variant);display:inline-flex;align-items:center;gap:4px}
a.deb-link:hover{color:var(--primary)}
a.deb-link:hover span{color:var(--primary)}
.deb-link--plain{cursor:default}

/* Linha do orçamento em foco (aberta a partir de um débito) */
.orc-tbl tr.is-focus td{background:color-mix(in srgb,var(--primary) 8%,transparent)}
.orc-tbl tr.is-focus td:first-child{box-shadow:inset 3px 0 0 var(--primary)}

.ico--warn{color:var(--warning)}
.ico--err{color:var(--error)}

@media (max-width:1240px){ .deb-sum{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:700px){ .deb-sum{grid-template-columns:minmax(0,1fr)} }

/* ══════════════════════════════════════════════════════════════════════════
   CONFIGURAÇÕES — topbar, navegação das seções e controles de ajuste
   (portado do mockup, linhas 315-345 e 2240-2273)
   ══════════════════════════════════════════════════════════════════════════ */
.topbar{display:flex;align-items:center;gap:16px;padding:14px 28px;
  background:var(--surface);border-bottom:1px solid var(--outline-variant);
  position:sticky;top:0;z-index:20}
.topbar__title{display:grid;gap:1px;min-width:0}
.topbar__actions{margin-left:auto;display:flex;align-items:center;gap:6px}
.icon-btn{width:40px;height:40px;border-radius:var(--r-full);display:grid;place-items:center;
  color:var(--on-surface-variant);cursor:pointer;position:relative;
  transition:background var(--dur-s) var(--ease-std)}
.icon-btn:hover{background:var(--surface-high)}
.icon-btn .dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;
  background:var(--error);box-shadow:0 0 0 2px var(--surface)}

.set-layout{display:grid;grid-template-columns:236px minmax(0,1fr);gap:20px;align-items:start}
.set-nav{display:grid;gap:2px;position:sticky;top:84px}
.set-navgroup{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:12px 12px 6px}
.set-navitem{display:flex;align-items:center;gap:11px;padding:10px 13px;border-radius:var(--r-md);cursor:pointer;
  color:var(--on-surface-variant);font-size:14px;font-weight:600;transition:background var(--dur-s),color var(--dur-s)}
.set-navitem:hover{background:var(--surface-low);color:var(--on-surface)}
.set-navitem svg{color:var(--on-surface-variant);flex:none}
.set-navitem.is-active{background:var(--secondary-container);color:var(--on-secondary-container)}
.set-navitem.is-active svg{color:var(--on-secondary-container)}

.set-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px}
.set-head__t{flex:1;min-width:0}
.set-head__t h2{font-size:20px;font-weight:600}
.set-head__t p{font-size:13.5px;color:var(--on-surface-variant);margin-top:3px;max-width:64ch}

.set-row{display:flex;align-items:center;gap:16px;padding:14px 0}
.set-row:not(:last-child){border-bottom:1px solid var(--outline-variant)}
.set-row__t{flex:1;min-width:0}
.set-row__t b{font-size:14px;font-weight:600;display:block}
.set-row__t span{font-size:12.5px;color:var(--on-surface-variant)}
.set-row__ch{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.set-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.set-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.set-save{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:18px;
  border-top:1px solid var(--outline-variant)}
.set-save .grow{flex:1}

/* Switch (MD3) — usado nas seções de repasse, checklist e notificações */
.sw{width:46px;height:28px;border-radius:var(--r-full);position:relative;flex:none;cursor:pointer;
  background:var(--surface-highest);border:2px solid var(--outline);
  transition:background var(--dur-m) var(--ease-std),border-color var(--dur-m)}
.sw__t{position:absolute;top:5px;left:5px;width:14px;height:14px;border-radius:50%;background:var(--outline);
  transition:transform var(--dur-m) var(--ease-emph),width var(--dur-m),height var(--dur-m),
             background var(--dur-m),top var(--dur-m),left var(--dur-m)}
.sw.is-on{background:var(--primary);border-color:var(--primary)}
.sw.is-on .sw__t{top:3px;left:20px;width:18px;height:18px;background:var(--on-primary)}
.sw.is-on .sw__t svg{width:12px;height:12px;stroke:var(--primary);position:absolute;top:3px;left:3px}

/* Seção ainda não construída */
.set-soon{display:grid;justify-items:center;gap:10px;text-align:center;padding:40px 24px}
.set-soon__ico{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;
  background:var(--surface-container);color:var(--on-surface-variant)}

@media (max-width:900px){ .set-layout{grid-template-columns:minmax(0,1fr)} .set-nav{position:static} }

/* ── Profissionais (Config · portado do mockup, linhas 2274-2311) ── */
.prof-layout{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:20px;align-items:start}
.prof-list{display:grid;gap:8px}
.prof{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px 14px;cursor:pointer;
  border-left:3px solid transparent;border-radius:var(--r-sm);color:inherit;
  transition:background var(--dur-s),border-color var(--dur-s)}
.prof:hover{background:var(--surface-low)}
.prof.is-sel{background:var(--surface-low);border-left-color:var(--primary)}
.prof__n{min-width:0;display:grid;gap:2px}
.prof__n b{font-size:14px;font-weight:700}
.prof__n span{font-size:11.5px;color:var(--on-surface-variant)}

.prof-detail{display:none;flex-direction:column;gap:0}
.prof-detail.is-open{display:flex}
.prof-card__h{display:flex;align-items:center;gap:14px;padding:18px 20px;border-bottom:1px solid var(--outline-variant)}
.prof-card__h .n{flex:1;min-width:0;display:grid;gap:3px}
.prof-card__h .n b{font-size:17px;font-weight:700}
.prof-card__h .n span{font-size:12.5px;color:var(--on-surface-variant)}
.prof-card__body{padding:18px 20px;display:grid;gap:18px}

.comm-head{display:flex;align-items:center;gap:12px;margin-bottom:4px}
.comm-head h4{flex:1;font-size:14px;font-weight:700}
.comm-default{display:inline-flex;align-items:baseline;gap:6px;padding:5px 12px;border-radius:var(--r-full);
  background:var(--primary-container);color:var(--on-primary-container);font-weight:700}
.comm-default b{font-size:16px;font-variant-numeric:tabular-nums}
.comm-default span{font-size:11px;font-weight:600}
.comm-tbl{width:100%;border-collapse:collapse}
.comm-tbl th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:0 12px 9px}
.comm-tbl th.r,.comm-tbl td.r{text-align:right}
.comm-tbl td{padding:11px 12px;border-top:1px solid var(--outline-variant);font-size:13.5px;vertical-align:middle}
.comm-tbl .cat b{font-weight:600}
.comm-tbl .pct{font-variant-numeric:tabular-nums;font-weight:700}
.comm-tbl .pct-conv{color:var(--series-conv)}
.comm-tbl .pct-part{color:var(--series-part)}
.comm-tbl .fixed{font-variant-numeric:tabular-nums;font-weight:700;color:var(--tertiary)}

.prof-note{display:flex;gap:10px;align-items:flex-start;padding:13px 16px;border-radius:var(--r-md);
  background:var(--surface-low);border:1px solid var(--outline-variant);font-size:12.5px;line-height:1.5;
  color:var(--on-surface-variant)}
.prof-note svg{flex:none;margin-top:1px;color:var(--primary)}

@media (max-width:1100px){ .prof-layout{grid-template-columns:minmax(0,1fr)} }

/* ── Procedimentos & preços (Config · mockup, linhas 2332-2352) ── */
.price-tbl{width:100%;min-width:680px;border-collapse:collapse}
.price-tbl th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:0 12px 10px;white-space:nowrap}
.price-tbl th.r,.price-tbl td.r{text-align:right}
.price-tbl td{padding:11px 12px;border-top:1px solid var(--outline-variant);font-size:13px;vertical-align:middle}
.price-tbl .num{font-variant-numeric:tabular-nums;font-weight:600}
.price-tbl tr.is-off td{opacity:.55}
.pe-in{font:inherit;color:inherit;text-align:right;width:104px;max-width:100%;
  font-variant-numeric:tabular-nums;font-weight:600;
  background:transparent;border:1px solid transparent;border-radius:var(--r-sm);padding:6px 9px}
.pe-in:read-only{pointer-events:none}
.pe-in:not(:read-only){background:var(--surface-lowest);border-color:var(--outline-variant)}
.pe-in:not(:read-only):focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-container)}
.pe-bar{display:flex;align-items:center;gap:12px;margin:6px 18px 16px;padding:12px 14px;border-radius:var(--r-md);
  background:var(--primary-container);color:var(--on-primary-container);font-size:12.5px;line-height:1.45}
.pe-bar svg{flex:none}

/* ── Repasses aos dentistas (Config · mockup, linhas 1903-1915 e 2313-2331) ── */
.rep-day{display:flex;align-items:center;gap:18px;padding:20px;border-radius:var(--r-lg);
  background:var(--primary-container);color:var(--on-primary-container)}
.rep-day__cal{width:74px;height:80px;border-radius:14px;background:var(--surface-lowest);flex:none;
  display:grid;grid-template-rows:24px 1fr;overflow:hidden;box-shadow:var(--e1);text-align:center}
.rep-day__cal .m{background:var(--primary);color:var(--on-primary);font-size:11px;font-weight:800;
  letter-spacing:.08em;display:grid;place-items:center}
.rep-day__cal .d{font-size:34px;font-weight:800;color:var(--on-surface);display:grid;place-items:center;
  font-variant-numeric:tabular-nums}
.rep-day__t{flex:1;min-width:0}
.rep-day__t b{font-size:18px;font-weight:700;display:block}
.rep-day__t span{font-size:13px;opacity:.9}
.rep-preview{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:16px 18px;border-radius:var(--r-md);
  border:1px solid var(--outline-variant);background:var(--surface-lowest)}
.rep-preview__v{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;display:block}
.rep-flow-note{display:flex;gap:10px;align-items:flex-start;padding:13px 16px;border-radius:var(--r-md);
  background:var(--primary-container);color:var(--on-primary-container);font-size:13px;line-height:1.5}
.rep-flow-note svg{flex:none;margin-top:1px}
.metric__ico{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none}
.metric__ico--p{background:var(--primary-container);color:var(--on-primary-container)}

/* Do procedimento ao repasse */
.paytl{display:flex;align-items:flex-start;padding:6px 4px 2px}
.paytl__node{flex:1;display:grid;gap:7px;justify-items:center;text-align:center;position:relative;min-width:0}
.paytl__node::before{content:"";position:absolute;top:17px;right:50%;width:100%;height:2px;
  background:var(--outline-variant);z-index:0}
.paytl__node:first-child::before{display:none}
.paytl__node.is-done::before{background:var(--primary)}
.paytl__dot{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;z-index:1;
  background:var(--surface-container);color:var(--on-surface-variant);border:2px solid var(--surface-lowest)}
.paytl__node.is-done .paytl__dot{background:var(--primary);color:var(--on-primary)}
.paytl__node.is-now .paytl__dot{background:var(--warning-container);color:var(--on-warning-container);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--warning) 22%,transparent)}
.paytl__d{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.paytl__l{font-size:11px;color:var(--on-surface-variant);line-height:1.25;max-width:15ch}

/* Switch ligado a um checkbox de verdade (feedback imediato) */
.sw--input input{position:absolute;opacity:0;pointer-events:none}
.sw--input:has(input:checked){background:var(--primary);border-color:var(--primary)}
.sw--input:has(input:checked) .sw__t{top:3px;left:20px;width:18px;height:18px;background:var(--on-primary)}
.sw--input:not(:has(input:checked)) .sw__t svg{display:none}

/* ── Checklist de faturamento (Config · mockup, linhas 2354-2362) ── */
.qedit{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:13px;align-items:center;padding:13px 14px;
  border:1px solid var(--outline-variant);border-radius:var(--r-md);background:var(--surface-lowest)}
.qedit.is-optional{opacity:.7}
.qedit.is-dragging{opacity:.4;border-style:dashed;border-color:var(--primary)}
.qedit__grip{color:var(--outline);cursor:grab;display:grid;place-items:center}
.qedit__grip:active{cursor:grabbing}
.qedit__t{min-width:0}
.qedit__t b{font-size:13.5px;font-weight:600;display:block}
.qedit__t span{font-size:11.5px;color:var(--on-surface-variant)}
.qedit__type{font-size:11px;font-weight:700;padding:3px 8px;border-radius:var(--r-xs);
  background:var(--surface-container);color:var(--on-surface-variant);white-space:nowrap}
/* a chave é um botão de verdade (salva ao clicar) */
button.sw{padding:0;cursor:pointer}

/* ══════════════════════════════════════════════════════════════════════════
   CONVÊNIOS — operadoras, regra de pagamento e varredura
   (portado do mockup, linhas 1864-1930)
   ══════════════════════════════════════════════════════════════════════════ */
.sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}
.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.page-head__cta{margin-left:auto;display:flex;gap:10px}
.conv-grid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:20px;align-items:start;margin-top:20px}

.oper-list{display:grid;gap:12px}
.oper{display:grid;gap:11px;padding:15px 16px;cursor:pointer;border-left:3px solid transparent;color:inherit;
  transition:box-shadow var(--dur-m) var(--ease-std),transform var(--dur-m) var(--ease-emph),border-color var(--dur-s)}
.oper:hover{box-shadow:var(--e3);transform:translateY(-1px)}
.oper.is-sel{border-left-color:var(--primary);background:var(--surface-low)}
.oper__top{display:flex;align-items:center;gap:11px}
.oper__logo{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:var(--surface-container);color:var(--on-surface-variant);font-size:12px;font-weight:800;letter-spacing:.02em}
.oper__n{flex:1;min-width:0;display:grid;gap:1px}
.oper__n b{font-size:14.5px;font-weight:700}
.oper__n span{font-size:11.5px;color:var(--on-surface-variant)}
.oper__top svg{color:var(--outline);flex:none}
.oper__rule{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--on-surface-variant);
  background:var(--surface-low);border:1px solid var(--outline-variant);border-radius:var(--r-sm);padding:7px 10px}
.oper.is-sel .oper__rule{background:var(--surface-lowest)}
.oper__foot{display:flex;align-items:center;justify-content:space-between;gap:10px}
.oper__pend{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.oper__pend small{display:block;font-size:10.5px;font-weight:600;color:var(--on-surface-variant);letter-spacing:.02em}

.conv-detail{display:grid;gap:20px}
.rule-card{padding:0;overflow:hidden}
.rule-card__h{display:flex;align-items:center;gap:12px;padding:16px 18px 12px}
.rule-card__h .n{flex:1;min-width:0}
.rule-card__logo{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;flex:none;
  background:var(--primary-container);color:var(--on-primary-container);font-size:14px;font-weight:800}
.rule-body{padding:0 18px 18px;display:grid;gap:12px}
.rule-line{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start;font-size:13.5px}
.rule-line__ico{width:34px;height:34px;border-radius:var(--r-full);display:grid;place-items:center;flex:none;
  background:var(--surface-container);color:var(--on-surface-variant)}
.rule-line b{font-weight:600}
.rule-line span{color:var(--on-surface-variant)}
.approx{display:flex;gap:9px;align-items:flex-start;padding:11px 14px;border-radius:var(--r-md);
  background:var(--warning-container);color:var(--on-warning-container);font-size:12.5px;line-height:1.45}
.approx svg{flex:none;margin-top:1px}
.deadline{display:inline-block;margin-left:6px;font-size:10.5px;font-weight:700;padding:2px 7px;
  border-radius:var(--r-full);background:var(--warning-container);color:var(--on-warning-container)}
.deadline.is-late{background:var(--error-container);color:var(--on-error-container)}
.win-tag{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;
  color:var(--on-surface-variant);background:var(--surface-container);border-radius:var(--r-full);padding:4px 10px}

.sweep__head{display:flex;align-items:center;gap:12px;padding:16px 18px 6px}
.sweep__head .n{flex:1;min-width:0}
.sweep__head h3{font-size:16px;font-weight:600}
.sweep-badge{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:var(--r-full);
  background:var(--secondary-container);color:var(--on-secondary-container);font-size:12px;font-weight:700}
.sweep-tbl{width:100%;min-width:640px;border-collapse:collapse}
.sweep-tbl th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:0 14px 10px;white-space:nowrap}
.sweep-tbl th.r,.sweep-tbl td.r{text-align:right}
.sweep-tbl td{padding:11px 14px;border-top:1px solid var(--outline-variant);font-size:13px;vertical-align:middle}
.sweep-tbl .num{font-variant-numeric:tabular-nums;font-weight:600}
.sweep-tbl tfoot td{border-top:2px solid var(--outline);font-weight:700;font-variant-numeric:tabular-nums}
.sweep__foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 18px;
  border-top:1px solid var(--outline-variant);background:var(--surface-low)}

@media (max-width:1240px){ .conv-grid{grid-template-columns:minmax(0,1fr)} .sum{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ══════════════════════════════════════════════════════════════════════════
   PRODUÇÃO & REPASSES — banner, gráfico, tabela e diálogo de fechamento
   (portado do mockup, linhas 897-910, 997-1070)
   ══════════════════════════════════════════════════════════════════════════ */
.auto-banner{display:flex;align-items:center;gap:14px;padding:14px 18px;margin-bottom:20px;
  background:var(--primary-container);color:var(--on-primary-container);
  border-radius:var(--r-md);border:1px solid color-mix(in srgb,var(--primary) 35%,transparent)}
.auto-banner .grow{flex:1;min-width:0}
.auto-banner b{font-weight:700}

.chart-card{padding:22px;background:var(--chart-surface,var(--surface-lowest))}
.chart{display:grid;grid-template-columns:74px minmax(0,1fr);gap:10px}
.chart__y{position:relative;height:262px;font-size:10.5px;font-weight:600;
  color:var(--on-surface-variant);text-align:right;font-variant-numeric:tabular-nums}
.chart__y span{position:absolute;right:0;transform:translateY(50%);line-height:1;white-space:nowrap}
.chart__plot{position:relative;height:262px;display:flex;align-items:flex-end;
  justify-content:space-around;gap:clamp(10px,2.4vw,40px);border-bottom:1.5px solid var(--outline-variant)}
.chart__plot::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(to top,var(--chart-grid,var(--outline-variant)) 0 1px,transparent 1px 65.5px)}
.col{flex:1;max-width:96px;display:flex;flex-direction:column;justify-content:flex-end;
  height:100%;position:relative;z-index:1}
.bar{display:flex;flex-direction:column;justify-content:flex-end;gap:2px;height:100%;
  transition:filter var(--dur-s)}
.col:hover .bar{filter:brightness(1.06)}
.seg{width:100%}
.seg--part{background:var(--series-part);border-radius:4px 4px 0 0}
.seg--conv{background:var(--series-conv)}
.col__total{position:absolute;left:0;right:0;text-align:center;font-size:11.5px;font-weight:700;
  color:var(--on-surface);font-variant-numeric:tabular-nums;pointer-events:none}
.col__x{padding-top:10px;text-align:center;display:grid;gap:2px}
.col__x b{font-size:11.5px;font-weight:700;line-height:1.2}
.col__x span{font-size:10px;color:var(--on-surface-variant)}
.chart__xrow{display:flex;justify-content:space-around;gap:clamp(10px,2.4vw,40px);padding-left:84px}
.chart__xrow>div{flex:1;max-width:96px}
.tip{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,6px);
  background:var(--inverse-surface,#2b3232);color:var(--inverse-on-surface,#eef2f2);border-radius:var(--r-sm);
  padding:9px 11px;font-size:11.5px;white-space:nowrap;box-shadow:var(--e3);z-index:6;
  opacity:0;pointer-events:none;transition:opacity var(--dur-s) var(--ease-std),transform var(--dur-s) var(--ease-std)}
.col:hover .tip,.col:focus-within .tip{opacity:1;transform:translate(-50%,0)}
.tip__r{display:flex;align-items:center;gap:7px;justify-content:space-between;padding:1.5px 0}
.tip__sw{width:9px;height:9px;border-radius:2px;flex:none;display:inline-block}
.tip b{font-variant-numeric:tabular-nums;margin-left:10px}
.tip__t{font-weight:700;padding-bottom:4px;margin-bottom:3px;border-bottom:1px solid rgba(255,255,255,.16)}
.chart__legend{display:flex;gap:18px;align-items:center;padding-left:84px;margin-top:16px}
.chart__legend .legend__sw{border-radius:3px;width:13px;height:13px}
.legend{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.legend__i{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--on-surface-variant)}
.legend__sw{width:15px;height:15px;border-radius:4px;flex:none;display:inline-block}

.tbl{width:100%;min-width:940px;font-size:13.5px;border-collapse:collapse}
.tbl th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--on-surface-variant);padding:0 14px 12px;white-space:nowrap}
.tbl th.r,.tbl td.r{text-align:right}
.tbl td{padding:13px 14px;border-top:1px solid var(--outline-variant);vertical-align:middle}
.tbl tbody tr{transition:background var(--dur-s)}
.tbl tbody tr:hover{background:var(--surface-low)}
.tbl .num{font-variant-numeric:tabular-nums;font-weight:600}
.tbl .who{display:flex;align-items:center;gap:11px;min-width:0}
.tbl .who .n{display:grid;gap:1px;min-width:0}
.tbl .who b{font-size:13.5px;font-weight:700}
.tbl .who span{font-size:11px;color:var(--on-surface-variant)}
.tbl tfoot td{border-top:2px solid var(--outline);font-weight:700;font-size:14px;
  font-variant-numeric:tabular-nums;padding-top:15px}
.pct-bar{display:flex;align-items:center;gap:9px;justify-content:flex-end}
.pct-bar i{display:block;height:6px;border-radius:3px;background:var(--outline);min-width:2px}
.pct-bar__track{width:62px;height:6px;border-radius:3px;background:var(--surface-highest);overflow:hidden;flex:none}

/* Diálogo de fechamento */
.dialog-wrap{position:fixed;inset:0;z-index:80;display:grid;place-items:center;
  opacity:0;pointer-events:none;transition:opacity var(--dur-m) var(--ease-std)}
.dialog-toggle{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.dialog-toggle:checked ~ .dialog-wrap{opacity:1;pointer-events:auto}
.dialog-scrim{position:absolute;inset:0;background:var(--scrim);z-index:1;cursor:pointer}
.dialog{position:relative;z-index:2;width:min(440px,92vw);background:var(--surface-lowest);
  border-radius:var(--r-xl);box-shadow:var(--e4);padding:24px;display:grid;gap:16px;
  transform:scale(.9) translateY(10px);transition:transform var(--dur-l) var(--ease-emph)}
.dialog-toggle:checked ~ .dialog-wrap .dialog{transform:none}
.dialog__ico{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;margin:0 auto;
  background:var(--primary-container);color:var(--on-primary-container)}
.dialog__acts{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}

/* ══════════════════════════════════════════════════════════════════════════
   AGENDA — grade semanal em CSS Grid (mockup, linhas 923-958)
   ══════════════════════════════════════════════════════════════════════════ */
.cal{overflow-x:auto;border-radius:var(--r-lg)}
.cal__grid{min-width:900px;display:grid;grid-template-columns:66px repeat(6,minmax(0,1fr))}
.cal__hcell{position:sticky;top:0;z-index:3;background:var(--surface-lowest);
  border-bottom:1px solid var(--outline-variant);padding:12px 8px;text-align:center}
.cal__hcell:not(:last-child){border-right:1px solid var(--outline-variant)}
.cal__hcell b{display:block;font-size:13px;font-weight:700}
.cal__hcell span{font-size:11px;color:var(--on-surface-variant)}
.cal__hcell.is-today b,.cal__hcell.is-today span{color:var(--primary)}
.cal__times{display:grid;grid-auto-rows:30px;border-right:1px solid var(--outline-variant)}
.cal__t{grid-row:span 2;font-size:10.5px;font-weight:600;color:var(--on-surface-variant);
  text-align:right;padding:2px 8px 0 0;font-variant-numeric:tabular-nums;
  border-top:1px solid var(--outline-variant)}
.cal__col{display:grid;grid-auto-rows:30px;grid-template-rows:repeat(20,30px);position:relative}
.cal__col:not(:last-child){border-right:1px solid var(--outline-variant)}
.cal__col::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(to bottom,var(--outline-variant) 0 1px,transparent 1px 60px)}
.cal__col.is-today{background:color-mix(in srgb,var(--primary) 4%,transparent)}

.evt{grid-column:1;margin:2px 3px;border-radius:var(--r-sm);padding:6px 8px;overflow:hidden;
  display:grid;gap:2px;align-content:start;position:relative;z-index:2;cursor:pointer;color:inherit;
  transition:transform var(--dur-s) var(--ease-emph),box-shadow var(--dur-s)}
.evt:hover{transform:translateY(-1px) scale(1.015);box-shadow:var(--e2);z-index:4}
.evt b{font-size:11.5px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.evt span{font-size:10px;line-height:1.25;opacity:.88;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.evt__st{display:flex;align-items:center;gap:4px;font-size:9.5px;font-weight:700;letter-spacing:.02em;margin-top:1px}
.evt__auto{position:absolute;right:5px;bottom:5px;display:flex;gap:3px;opacity:.75}
.evt--conf{background:var(--secondary-container);color:var(--on-secondary-container);
  border-left:3px solid var(--secondary)}
.evt--pend{background:var(--warning-container);color:var(--on-warning-container);
  border:1.5px dashed var(--warning);border-left-width:3px;border-left-style:solid}
.evt--reag{background:var(--primary-container);color:var(--on-primary-container);
  border-left:3px solid var(--primary)}
.evt--block{background:repeating-linear-gradient(45deg,var(--surface-highest) 0 5px,var(--surface-high) 5px 10px);
  color:var(--on-surface-variant);cursor:default;align-content:center;text-align:center}
.evt--block:hover{transform:none;box-shadow:none}
.ico--xs{width:11px;height:11px}
.ico--flip{transform:rotate(180deg)}
.ico--secondary{color:var(--secondary)}

/* FAB estendido — a única ação criadora da agenda */
.fab{display:inline-flex;align-items:center;gap:11px;height:56px;padding:0 20px;
  border-radius:var(--r-lg);background:var(--primary-container);color:var(--on-primary-container);
  box-shadow:var(--e3);font-weight:600;font-size:14.5px;cursor:pointer;border:0;
  transition:box-shadow var(--dur-m) var(--ease-std),transform var(--dur-m) var(--ease-emph)}
.fab:hover{box-shadow:var(--e4);transform:translateY(-1px)}
.sw--conf{background:var(--secondary-container);border:1px solid var(--secondary)}
.sw--pend{background:var(--warning-container);border:1.5px dashed var(--warning)}
.sw--reag{background:var(--primary-container);border:1px solid var(--primary)}
.sw--block{background:repeating-linear-gradient(45deg,var(--surface-highest) 0 4px,var(--surface-high) 4px 8px)}

/* ══════════════════════════════════════════════════════════════════════════
   Documento imprimível (Baixar PDF) — folha A4 limpa, sem a interface do app.
   Cores fixas: papel é sempre branco, independente do tema claro/escuro.
   ══════════════════════════════════════════════════════════════════════════ */
.doc-page{background:#EAF1F1;padding:28px 16px;min-height:100vh}
.doc{--ink:#171D1D;--ink-2:#3F4949;--line:#C7D1D1;--brand:#0B7C86;--amber:#8A5A00;
  max-width:820px;margin:0 auto;background:#fff;color:var(--ink);
  padding:34px 38px;border-radius:var(--r-sm);box-shadow:0 2px 14px rgba(0,0,0,.14);
  -webkit-print-color-adjust:exact;print-color-adjust:exact}

.doc__head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  padding-bottom:14px;border-bottom:2px solid var(--brand)}
.doc__brand{display:flex;align-items:center;gap:10px}
.doc__logo{width:34px;height:34px;border-radius:var(--r-sm);background:var(--brand);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.doc__brand b{display:block;font-size:15px;font-weight:700;line-height:1.2}
.doc__brand small,.doc__title small{display:block;font-size:11px;color:var(--ink-2);margin-top:2px}
.doc__title{text-align:right}
.doc__title b{font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--brand)}

.doc__sec{margin-top:20px}
.doc__sec--keep{break-inside:avoid}
.doc__h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;
  color:var(--ink-2);margin:0 0 9px;padding-bottom:5px;border-bottom:1px solid var(--line)}
.doc__p{font-size:12px;line-height:1.55;color:var(--ink-2);margin:0 0 14px}

.doc__dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px 18px}
.doc__dl-i--wide{grid-column:1/-1}
.doc__dl dt{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-2)}
.doc__dl dd{margin:2px 0 0;font-size:12.5px;font-weight:600}

.doc__alert{margin-top:18px;padding:11px 14px;border-radius:var(--r-sm);
  background:#FFF4DF;border-left:3px solid var(--amber);break-inside:avoid}
.doc__alert>b{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--amber);
  text-transform:uppercase;letter-spacing:.4px}
.doc__alert li b{color:var(--amber)}
.doc__alert ul{margin:7px 0 0;list-style:disc;padding-left:20px}
.doc__alert li{font-size:12.5px;line-height:1.6}

.doc__tbl{width:100%;border-collapse:collapse}
.doc__tbl th{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;
  color:var(--ink-2);text-align:left;padding:0 8px 6px;border-bottom:1px solid var(--line)}
.doc__tbl td{font-size:12.5px;padding:8px;border-bottom:1px solid #E7EDED;vertical-align:top}
.doc__tbl tr{break-inside:avoid}
.doc__tbl small{display:block;margin-top:3px;font-size:11px;color:var(--ink-2)}
.doc__tbl-n{width:30px;text-align:center;color:var(--ink-2)}
.doc__tbl-a{width:86px;text-align:right;font-weight:700;white-space:nowrap}
.doc__tbl-a.is-yes{color:var(--amber)}

.doc__sign{display:flex;align-items:flex-end;gap:20px;margin-bottom:14px}
.doc__sign-pad{width:210px;flex:0 0 auto;border-bottom:1px solid var(--ink);padding-bottom:2px}
.doc__sign-pad svg{width:100%;height:58px;display:block;fill:none;stroke:#0F2E31;stroke-width:2.4;
  stroke-linecap:round;stroke-linejoin:round}
.doc__sign-meta{display:grid;gap:2px;padding-bottom:4px}
.doc__sign-meta b{font-size:13px}
.doc__sign-meta span{font-size:11.5px;color:var(--ink-2)}

.doc__audit{width:100%;border-collapse:collapse;background:#F5F9F9;border-radius:var(--r-sm)}
.doc__audit th{width:150px;text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;
  letter-spacing:.4px;color:var(--ink-2);padding:6px 12px;vertical-align:top}
.doc__audit td{font-size:11.5px;padding:6px 12px}
.doc__hash{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;word-break:break-all}

.doc__pending{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--amber);
  background:#FFF4DF;padding:9px 12px;border-radius:var(--r-sm);margin:0 0 30px}
.doc__sign-line{display:grid;grid-template-columns:1.7fr 1fr;gap:34px;margin-top:46px}
.doc__sign-line span{border-top:1px solid var(--ink);padding-top:6px;text-align:center;
  font-size:11px;color:var(--ink-2)}

.doc__foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:26px;
  padding-top:10px;border-top:1px solid var(--line);font-size:10.5px;color:var(--ink-2)}

@page{size:A4;margin:13mm}
@media print{
  .doc-page{background:#fff;padding:0;min-height:0}
  .doc{max-width:none;margin:0;padding:0;border-radius:0;box-shadow:none}
  /* Rede de segurança: Ctrl+P em qualquer tela não imprime a interface do app */
  .rail,.pac-subnav,.pac-hero__actions,.pac-tags,.etq-add,.flash,.phone,.nt-modal,
  .patient-search,.btn,.od-legend{display:none!important}
  .shell{display:block!important}
}

/* ══════════════════════════════════════════════════════════════════════════
   ATENDIMENTOS — fila de triagem e detalhe
   (portado do mockup, linhas 457-465, 606-620, 784-796 e 815-893)
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Carregando: a IA ainda está lendo a carteirinha ────────────────────── */
.skel{border-radius:var(--r-xs);background:linear-gradient(90deg,
  var(--surface-container) 25%,var(--surface-high) 37%,var(--surface-container) 63%);
  background-size:400% 100%;animation:shimmer 1.5s ease-in-out infinite}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.skel--line{height:11px}
.skel--circle{border-radius:50%}
.spinner{width:20px;height:20px;border-radius:50%;flex:none;
  border:2.5px solid var(--outline-variant);border-top-color:var(--primary);
  animation:spin .85s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ia-line{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:600;
  color:var(--primary);letter-spacing:.01em}

/* ── Carteirinha (prova visual do OCR) ─────────────────────────────────── */
.carteirinha{
  border-radius:12px;padding:13px 14px;color:#EAFBFC;position:relative;overflow:hidden;
  background:linear-gradient(128deg,#0B5A62 0%,#0B7C86 52%,#12A08C 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16);
}
.carteirinha::after{content:"";position:absolute;right:-38px;top:-46px;width:130px;height:130px;
  border-radius:50%;background:rgba(255,255,255,.07)}
.carteirinha__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.carteirinha__op{font-size:11.5px;font-weight:800;letter-spacing:.13em}
.carteirinha__num{font-size:15px;font-weight:600;letter-spacing:.11em;font-variant-numeric:tabular-nums;margin-bottom:11px}
.carteirinha__row{display:flex;justify-content:space-between;gap:12px;font-size:9.5px;letter-spacing:.06em;opacity:.85}
.carteirinha__row b{display:block;font-size:11px;letter-spacing:.02em;opacity:1;margin-top:1px;font-weight:600}

/* ── Fila + detalhe lado a lado ────────────────────────────────────────── */
.tri-split{display:grid;grid-template-columns:minmax(0,352px) minmax(0,1fr);gap:20px;align-items:start}
.queue{overflow:hidden}
.queue__head{padding:16px 18px 12px;border-bottom:1px solid var(--outline-variant)}
.queue__filters{display:flex;gap:7px;flex-wrap:wrap;margin-top:13px}
.queue__list{display:grid}
.qitem{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px 18px;cursor:pointer;
  border-bottom:1px solid var(--outline-variant);border-left:3px solid transparent;
  transition:background var(--dur-s) var(--ease-std);color:inherit;text-decoration:none}
.qitem:hover{background:var(--surface-low)}
.qitem.is-sel{background:var(--surface-low);border-left-color:var(--primary)}
.qitem__b{display:grid;gap:5px;min-width:0}
.qitem__t{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.qitem__t b{font-size:14px;font-weight:700}
.qitem__t time{font-size:11px;color:var(--on-surface-variant);white-space:nowrap;font-variant-numeric:tabular-nums}

.detail{overflow:hidden}
.detail__head{display:flex;align-items:center;gap:14px;padding:20px 22px;
  border-bottom:1px solid var(--outline-variant);background:var(--surface-low)}
.detail__head .n{flex:1;min-width:0;display:grid;gap:3px}
.detail__body{padding:22px;display:grid;gap:20px}
.detail__cols{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:22px;align-items:start}
.detail__bar{display:flex;align-items:center;gap:12px;padding:16px 22px;
  border-top:1px solid var(--outline-variant);background:var(--surface-low)}
.detail__bar .grow{flex:1}

.ocr-proof{border:1px solid var(--outline-variant);border-radius:var(--r-md);
  padding:12px;background:var(--surface-low);display:grid;gap:11px}
.ocr-proof__cap{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant)}

/* Campos extraídos — o que veio da máquina carrega o badge OCR */
.fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:4px;min-width:0}
.field__k{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--on-surface-variant)}
.field__v{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:8px}
.field__src{font-size:10px;font-weight:700;letter-spacing:.03em;padding:2px 6px;border-radius:var(--r-xs);
  background:var(--primary-container);color:var(--on-primary-container);white-space:nowrap}

/* Sugestão da IA — contornada em primary, com o porquê da escolha */
.suggest{border:1px solid var(--primary);border-radius:var(--r-md);overflow:hidden}
.suggest__h{display:flex;align-items:center;gap:9px;padding:10px 14px;
  background:var(--primary-container);color:var(--on-primary-container);font-size:12.5px;font-weight:700}
.suggest__b{padding:14px;display:flex;align-items:center;gap:13px}
.suggest__b .n{flex:1;display:grid;gap:2px}
.triage__slot{display:flex;align-items:center;justify-content:center;gap:7px;
  background:var(--primary-container);color:var(--on-primary-container);
  border-radius:var(--r-sm);padding:7px 12px;font-size:12.5px;font-weight:700;
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* O que a IA já perguntou */
.transcript{display:grid;gap:9px;background:var(--surface-low);border-radius:var(--r-md);padding:14px 16px;
  border:1px solid var(--outline-variant)}
.tline{display:grid;grid-template-columns:64px 1fr;gap:12px;font-size:13px;align-items:baseline}
.tline b{font-size:11px;font-weight:700;letter-spacing:.03em;color:var(--on-surface-variant);text-transform:uppercase}
.tline p{color:var(--on-surface-variant)}
.tline--ia p{color:var(--on-surface)}

/* ── Bottom sheet "Escolher horário" ───────────────────────────────────── */
.slot-day{display:grid;gap:9px}
.slot-day__h{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--on-surface-variant)}
.slot-row{display:flex;gap:8px;flex-wrap:wrap}
.slot{border:1px solid var(--outline-variant);background:var(--surface-lowest);border-radius:var(--r-sm);
  padding:10px 15px;font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;
  color:var(--on-surface-variant);transition:background var(--dur-s),border-color var(--dur-s),color var(--dur-s)}
.slot:hover{background:var(--surface-container);border-color:var(--outline)}
/* o palpite da IA vem pré-marcado (é o :checked que pinta); ao trocar de
   horário ele mantém só o contorno, porque continua sendo a recomendação */
.slot--best{border-color:var(--primary);color:var(--on-primary-container);
  display:flex;align-items:center;gap:7px}
.slot--off{opacity:.4;cursor:default;text-decoration:line-through}
.qitem:focus-visible,.slot:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-radius:var(--r-xs)}
/* o selo não estica na coluna: acompanha o próprio texto (mockup: width:max-content) */
.qitem__b .status,.field__v .status{width:max-content}
/* escolha do horário sem JavaScript: o radio some, o .slot é o label */
.slot-radio{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.slot-radio:checked + .slot{border-color:var(--primary);background:var(--primary-container);
  color:var(--on-primary-container)}
.slot-radio:focus-visible + .slot{outline:3px solid var(--primary);outline-offset:2px}
.ico--faded{opacity:.75}
/* a fila real passa das 5 conversas do protótipo: rola dentro do próprio card */
.queue__list{max-height:min(560px,62vh);overflow-y:auto}
/* o título ocupa a folga: o × fica na borda direita do sheet */
.sheet__head > div{flex:1;min-width:0}
/* nota do rodapé: o ícone e o texto são os únicos itens do flex (o <b> não vira coluna) */
.sheet__note{display:flex;gap:8px;align-items:flex-start;padding-bottom:8px;line-height:1.5}
.sheet__note svg{flex:none;margin-top:2px}
/* ── Busca na fila (searchbar da topbar, mockup linha 337) ────────────── */
.searchbar{display:flex;align-items:center;gap:10px;height:44px;padding:0 16px;min-width:280px;
  background:var(--surface-container);border-radius:var(--r-full);color:var(--on-surface-variant);
  transition:background var(--dur-s)}
.searchbar:hover{background:var(--surface-high)}
.searchbar svg{flex:none}
.searchbar input{flex:1;min-width:0;border:0;background:none;outline:none;font:inherit;
  font-size:14px;color:var(--on-surface)}
.searchbar input::placeholder{color:var(--on-surface-variant)}
.searchbar__x{display:grid;place-items:center;color:var(--on-surface-variant)}

/* ══════════════════════════════════════════════════════════════════════════
   DASHBOARD DA RECEPÇÃO
   (portado do mockup, linhas 440-455, 760-810 e 1967-1973)
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Cards de métrica ─────────────────────────────────────────────────── */
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}
.metric{padding:18px 20px;display:grid;gap:10px;align-content:start}
.metric__top{display:flex;align-items:center;gap:11px}
.metric__ico{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none}
.metric__ico--p{background:var(--primary-container);color:var(--on-primary-container)}
.metric__ico--s{background:var(--secondary-container);color:var(--on-secondary-container)}
.metric__ico--w{background:var(--warning-container);color:var(--on-warning-container)}
.metric__ico--e{background:var(--error-container);color:var(--on-error-container)}
.metric__lbl{font-size:12.5px;font-weight:600;color:var(--on-surface-variant);line-height:1.25}
.metric__row{display:flex;align-items:flex-end;gap:12px}
.metric__val{font-size:34px;line-height:1;font-weight:700;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.metric__delta{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;font-weight:700;
  padding-bottom:3px;white-space:nowrap}
.metric__delta--up{color:var(--success)}
.metric__delta--down{color:var(--error)}
.metric__delta--flat{color:var(--on-surface-variant)}
.metric__foot{font-size:11.5px;color:var(--on-surface-variant);display:flex;align-items:center;gap:6px}
.metric__foot svg{flex:none}

/* Sparkline — 7 dias, extremidade final enfatizada */
.spark{display:flex;align-items:flex-end;gap:3px;height:26px;margin-left:auto;padding-bottom:3px}
.spark i{width:5px;border-radius:2px 2px 0 0;background:var(--outline-variant);display:block;min-height:2px}
.spark i:last-child{background:var(--primary)}

/* ── Duas colunas: etiquetas à esquerda, resumo à direita ─────────────── */
.dash-grid{display:grid;grid-template-columns:minmax(0,1.62fr) minmax(0,1fr);gap:20px;align-items:start}
.side{display:grid;gap:20px}

/* Linha de paciente (mesmo componente da lista de triagem do protótipo) */
.triage-list{display:grid;gap:12px}
.triage{padding:16px 18px;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}
.triage__who{display:grid;gap:5px;min-width:0}
.triage__name{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.triage__meta{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.triage__acts{display:flex;flex-direction:column;gap:7px;align-items:stretch;min-width:186px}

/* Filtro por etiqueta — a ativa fica preenchida com a cor cadastrada em Config */
.etq-filter{display:flex;gap:8px;flex-wrap:wrap;padding:0 22px;margin-bottom:14px;position:relative}
.etqf{position:relative;cursor:pointer;text-decoration:none}
.etqf .etq{cursor:pointer;transition:background var(--dur-s) var(--ease-std),color var(--dur-s) var(--ease-std)}
.etqf:hover .etq{background:color-mix(in srgb,var(--c,var(--primary)) 26%,var(--surface-lowest))}
.etqf.is-on .etq{background:var(--c,var(--primary));border-color:var(--c,var(--primary));color:#fff}
.etqf.is-on .etq .etq__dot{background:#fff}

/* ── Automações da IA ─────────────────────────────────────────────────── */
.auto-list{display:grid;gap:2px}
.auto-item{display:flex;align-items:center;gap:12px;padding:11px 4px;border-radius:var(--r-sm)}
.auto-item:not(:last-child){border-bottom:1px solid var(--outline-variant)}
.auto-item__ico{width:34px;height:34px;border-radius:var(--r-full);display:grid;place-items:center;flex:none;
  background:var(--surface-container);color:var(--on-surface-variant)}
.auto-item__t{flex:1;min-width:0}
.auto-item__n{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.015em}

/* ── Estado vazio ─────────────────────────────────────────────────────── */
.empty{display:grid;justify-items:center;text-align:center;gap:9px;padding:38px 20px;color:var(--on-surface-variant)}
.empty__ico{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;
  background:var(--success-container);color:var(--on-success-container);margin-bottom:2px}
.empty__ico--neutral{background:var(--surface-container);color:var(--outline)}

/* ── Snackbar com ação Desfazer ───────────────────────────────────────── */
.snackbar-slot{position:sticky;bottom:22px;margin-top:22px;display:flex;justify-content:flex-start;
  animation:snackIn 520ms var(--ease-decel) both;z-index:15}
@keyframes snackIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.snackbar{display:flex;align-items:center;gap:16px;
  background:var(--inverse-surface);color:var(--inverse-on-surface);
  border-radius:var(--r-xs);padding:14px 12px 14px 18px;box-shadow:var(--e3);
  font-size:14px;max-width:600px}
.snackbar svg{flex:none}
.snackbar__action{color:var(--primary-fixed-dim);font-weight:700;font-size:14px;
  padding:6px 10px;border-radius:var(--r-xs);cursor:pointer;margin-left:auto;white-space:nowrap;
  background:none;border:0;font-family:inherit}
.snackbar__action:hover{background:rgba(255,255,255,.09)}
:root[data-theme="dark"] .snackbar__action:hover{background:rgba(0,0,0,.09)}

@media (max-width:1180px){
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dash-grid{grid-template-columns:minmax(0,1fr)}
}
.snackbar > svg:first-child{color:var(--primary-fixed-dim)}
.ico--flip-y{transform:rotate(180deg)}

/* ══════════════════════════════════════════════════════════════════════════
   LOGIN — tela sem equivalente no mockup; segue o Design System (MD3)
   ══════════════════════════════════════════════════════════════════════════ */
.auth{min-height:100vh;display:grid;place-items:center;align-content:center;gap:18px;
  padding:24px;background:
    radial-gradient(1100px 480px at 85% -10%, var(--primary-container) 0%, transparent 60%),
    var(--surface)}
.auth__card{width:min(430px,94vw)}
.auth__brand{display:flex;align-items:center;gap:13px;margin-bottom:14px}
.auth__brand > div{display:grid;gap:1px}
.auth__logo{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;flex:none;
  background:var(--primary);color:var(--on-primary);box-shadow:var(--e1)}
/* Marca Clinamo (logo em imagem) nas telas de login e primeiro acesso */
.auth__brand--logo{flex-direction:column;text-align:center;gap:4px;margin-bottom:18px}
.auth__logo-img{height:148px;width:auto;max-width:100%;object-fit:contain}
.auth__alert{width:100%;justify-content:flex-start;margin-bottom:14px}
.auth__hint{display:flex;gap:8px;align-items:flex-start;margin-top:16px;line-height:1.5}
.auth__hint svg{flex:none;margin-top:2px}
.auth__foot{text-align:center}

/* ── Tela de login: vitrine do Clinamo + rastro do mouse ──────────────────
   A tela é fixa (fundo estático de blobs + pontilhado da marca). O controller
   "trail" desenha numa canvas por cima um rastro luminoso que segue o cursor e
   some aos poucos — só com mouse e sem "reduzir movimento". */
.login{position:relative;min-height:100vh;min-height:100dvh;overflow:hidden;
  display:grid;place-items:center;padding:32px 24px;
  background:
    radial-gradient(1200px 560px at 84% -14%, var(--primary-container) 0%, transparent 58%),
    radial-gradient(900px 520px at -10% 112%, color-mix(in srgb,var(--secondary-container) 65%,transparent) 0%, transparent 60%),
    var(--surface)}
.login__bg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.login__trail{position:fixed;inset:0;z-index:60;pointer-events:none}
.blob{position:absolute;border-radius:50%;filter:blur(64px);opacity:.5}
.blob--a{--d:26;width:520px;height:520px;top:-130px;left:-90px;
  background:radial-gradient(circle at 32% 32%, color-mix(in srgb,var(--primary) 78%,transparent), transparent 70%)}
.blob--b{--d:-20;width:620px;height:620px;bottom:-200px;right:-140px;
  background:radial-gradient(circle at 40% 40%, color-mix(in srgb,var(--secondary) 66%,transparent), transparent 70%)}
.blob--c{--d:16;width:340px;height:340px;top:36%;right:22%;opacity:.38;
  background:radial-gradient(circle at 50% 50%, color-mix(in srgb,var(--tertiary) 70%,transparent), transparent 70%)}
.login__dots{position:absolute;inset:-40px;opacity:.5;
  background-image:radial-gradient(color-mix(in srgb,var(--outline) 42%,transparent) 1px, transparent 1.5px);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(72% 62% at 50% 42%, #000, transparent 76%);
          mask-image:radial-gradient(72% 62% at 50% 42%, #000, transparent 76%)}

.login__wrap{position:relative;z-index:1;width:min(1080px,100%);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:56px;align-items:center}
.login__eyebrow{display:inline-flex;align-items:center;gap:9px;
  background:var(--surface-lowest);border:1px solid var(--outline-variant);
  border-radius:var(--r-full);padding:6px 14px 6px 8px;box-shadow:var(--e1);
  color:var(--on-surface-variant);margin-bottom:20px}
.login__dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--secondary);
  animation:pulseDot 2.4s var(--ease-decel) infinite}
.login__title{margin-bottom:16px;letter-spacing:-.01em;max-width:16ch}
.login__title em{font-style:normal;color:var(--primary);position:relative;white-space:nowrap}
.login__title em::after{content:"";position:absolute;left:0;right:0;bottom:.05em;height:.16em;
  background:color-mix(in srgb,var(--secondary) 45%,transparent);border-radius:2px;z-index:-1}
.login__sub{max-width:48ch;color:var(--on-surface-variant);margin-bottom:24px}
.login__chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:26px}
.login__trust{display:flex;gap:30px;flex-wrap:wrap;padding-top:22px;border-top:1px solid var(--outline-variant)}
.login__stat{display:grid;gap:2px}
.login__stat b{font-size:25px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--primary)}
.login__stat span{font-size:12.5px;color:var(--on-surface-variant)}

.login__panel{display:grid;gap:14px}
.login__card{width:100%}
.login__foot{text-align:center}

@media (max-width:900px){
  .login__wrap{grid-template-columns:1fr;gap:28px;width:min(440px,100%)}
  .login__pitch{text-align:center}
  .login__title,.login__sub{margin-inline:auto}
  .login__chips,.login__trust{justify-content:center}
}
@media (max-width:600px){
  .login__trust{display:none}
  .login__title{font-size:29px}
}
@media (prefers-reduced-motion:reduce){
  .login__dot{animation:none}
}

/* ── Portal do super-admin (gestão de clínicas/assinaturas) ───────────────── */
.portal__bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  gap:16px;padding:10px 24px;background:var(--surface-lowest);border-bottom:1px solid var(--outline-variant);
  box-shadow:var(--e1)}
.portal__brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--on-surface)}
.portal__logo{height:30px;width:auto;object-fit:contain}
.portal__who{display:flex;align-items:center;gap:12px}
.portal__nav{display:flex;gap:4px;margin-right:auto;margin-left:8px}
.portal__navlink{padding:7px 12px;border-radius:var(--r-full);text-decoration:none;font-size:14px;font-weight:600;
  color:var(--on-surface-variant)}
.portal__navlink:hover{background:var(--surface-container)}
.portal__navlink.is-active{background:var(--primary-container);color:var(--on-primary-container)}
/* resumo do plano contratado na tela da clínica */
.portal__plan{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 14px;margin-bottom:14px;border-radius:var(--r-md);
  background:var(--surface-low);border:1px solid var(--outline-variant)}
.portal__plan > div{display:grid;gap:1px}
.portal__planval{text-align:right}
.portal__planval b{font-size:18px;color:var(--primary)}
.portal__main{max-width:1080px;margin:0 auto;padding:24px;display:grid;gap:18px}
.portal__flash{width:100%;justify-content:flex-start}
.portal__head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.portal__headbtns{display:flex;gap:8px;flex-wrap:wrap}
.portal__cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.portal__grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.portal__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.portal__hint{margin-top:-4px}
.portal__empty{padding:40px 24px;text-align:center}
.portal__list{list-style:none;display:grid;gap:8px;padding:0;margin:0}
.portal__list li{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.portal__dl{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;margin:0}
.portal__dl dt{font-size:12px;color:var(--on-surface-variant)}
.portal__dl dd{font-size:14px;margin:0}
/* tabela simples (listagem de clínicas) */
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--on-surface-variant);
  padding:12px 16px;border-bottom:1px solid var(--outline-variant)}
.tbl td{padding:14px 16px;border-bottom:1px solid var(--outline-variant);vertical-align:middle}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl__act{text-align:right;white-space:nowrap}
.portal__link{color:var(--primary);text-decoration:none}
.portal__link:hover{text-decoration:underline}
/* cartão "link de acesso" da clínica */
.portal__access{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.portal__accessinfo{display:grid;gap:4px;min-width:0}
.portal__url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;
  background:var(--surface-low);padding:7px 11px;border-radius:var(--r-sm);
  border:1px solid var(--outline-variant);color:var(--on-surface);word-break:break-all}
.portal__accessbtns{display:flex;gap:8px;flex-shrink:0}
/* ações rápidas de licença + zona de exclusão */
.portal__quick{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;padding-bottom:16px;
  border-bottom:1px solid var(--outline-variant)}
.portal__quick form{margin:0}
.portal__danger{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border:1px solid color-mix(in srgb,var(--error) 45%,var(--outline-variant))}
.portal__danger form{margin:0}
@media (max-width:820px){
  .portal__cols,.portal__grid,.portal__dl{grid-template-columns:1fr}
}

/* botão Sair no pé do rail */
.rail__logout{width:34px;height:34px;margin-top:8px;border-radius:var(--r-full);border:0;cursor:pointer;
  display:grid;place-items:center;background:none;color:var(--on-surface-variant);
  transition:background var(--dur-s),color var(--dur-s)}
.rail__logout:hover{background:var(--error-container);color:var(--on-error-container)}
/* dentista troca os cartões da fila pelos da própria carteira */
.metrics--own{grid-template-columns:repeat(3,minmax(0,1fr))}
/* quem é a pessoa que está criando a senha */
.auth__who{display:flex;align-items:center;gap:11px;padding:11px 13px;margin-bottom:16px;
  border-radius:var(--r-md);background:var(--surface-low);border:1px solid var(--outline-variant)}
.auth__who > span:nth-child(2){display:grid;gap:1px;flex:1;min-width:0}
.auth__who b{font-size:14px}
.auth__rules{display:grid;gap:5px;list-style:none;padding:2px 0 0}
.auth__rules li{display:flex;align-items:center;gap:7px}
.auth__rules svg{flex:none;color:var(--outline)}/* ══════════════════════════════════════════════════════════════════════════
   CHAT DO PACIENTE — portado do widget da landing page do /mockup.
   NÃO é WhatsApp: é o assistente próprio da clínica (Flow), com a marca dela.
   ══════════════════════════════════════════════════════════════════════════ */
.chat-body{margin:0;background:var(--surface-container);min-height:100dvh;
  display:grid;place-items:center;padding:0}
.chatw{background:var(--surface-lowest);border:1px solid var(--outline-variant);
  box-shadow:var(--e4);overflow:hidden;display:flex;flex-direction:column;
  width:100%;max-width:472px;height:100dvh}
@media (min-width:520px){ .chatw{height:min(100dvh,780px);border-radius:var(--r-xl)} }

/* ── Cabeçalho ────────────────────────────────────────────────────────── */
.chatw__bar{display:flex;align-items:center;gap:12px;padding:14px 16px;flex:none;
  border-bottom:1px solid var(--outline-variant);background:var(--surface-lowest);z-index:2;
  padding-top:max(14px,env(safe-area-inset-top))}
.chatw__id{display:grid;gap:0;min-width:0;flex:1}
.chatw__id b{font-size:14.5px;font-weight:700;letter-spacing:.005em}
.chatw__id span{font-size:11.5px;color:var(--secondary);font-weight:600;
  display:flex;align-items:center;gap:5px}
.bot-avatar{width:40px;height:40px;border-radius:50%;flex:none;position:relative;
  display:grid;place-items:center;background:linear-gradient(140deg,var(--primary),var(--secondary));color:#fff}
.online-dot{position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;
  background:var(--secondary);animation:pulseDot 2.4s var(--ease-decel) infinite}
@keyframes pulseDot{
  0%{box-shadow:0 0 0 2.5px var(--surface-lowest),0 0 0 0 color-mix(in srgb,var(--secondary) 55%,transparent)}
  70%,100%{box-shadow:0 0 0 2.5px var(--surface-lowest),0 0 0 9px transparent}}

/* ── Conversa ─────────────────────────────────────────────────────────── */
.chat-thread{flex:1;min-height:0;overflow-y:auto;padding:0 18px 12px;
  background:var(--surface-low);display:flex;flex-direction:column;gap:12px;
  justify-content:flex-start}
.chat-thread > *:first-child{margin-top:14px}
.daychip{display:block;width:max-content;margin:0 auto;background:var(--surface-highest);
  color:var(--on-surface-variant);border-radius:var(--r-full);padding:4px 12px;
  font-size:11px;font-weight:700;letter-spacing:.05em}
.ev-in{display:grid;gap:0;animation:evIn 260ms var(--ease-decel) both}
@keyframes evIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.row{display:flex;gap:9px;align-items:flex-end}
.row--user{flex-direction:row-reverse}
.row--top{align-items:flex-start}
.mini-bot{width:27px;height:27px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:linear-gradient(140deg,var(--primary),var(--secondary));color:#fff;margin-bottom:2px}
.bubble{max-width:322px;padding:11px 14px;border-radius:18px;
  font-size:14.2px;line-height:1.46;letter-spacing:.005em;white-space:pre-wrap}
.bubble--bot{background:var(--surface-lowest);color:var(--on-surface);
  border:1px solid var(--outline-variant);border-bottom-left-radius:6px;box-shadow:var(--e1)}
.bubble--user{background:var(--primary);color:var(--on-primary);
  border-bottom-right-radius:6px;box-shadow:var(--e1)}
.bubble b{font-weight:700}
.bubble--err{background:var(--error-container);color:var(--on-error-container);border-color:transparent}
.ts{font-size:10.5px;font-weight:600;letter-spacing:.05em;color:var(--on-surface-variant);
  margin-top:5px;padding-left:36px}
.ts--r{text-align:right;padding-left:0;padding-right:2px}

/* "digitando…" — três pontos, iguais aos do mockup */
.typing{display:flex;gap:4.5px;align-items:center;padding:15px 16px}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--outline);
  animation:dotPulse 1.25s var(--ease-std) infinite}
.typing i:nth-child(2){animation-delay:.16s}
.typing i:nth-child(3){animation-delay:.32s}
@keyframes dotPulse{0%,65%,100%{transform:translateY(0);opacity:.38}30%{transform:translateY(-4.5px);opacity:1}}

/* Foto da carteirinha enviada pelo paciente */
.card-img{margin:0;max-width:262px}
.card-img img{display:block;width:100%;border-radius:14px;border:1px solid var(--outline-variant)}

/* ── Cartões dentro da conversa ───────────────────────────────────────── */
.elig{background:var(--surface-lowest);border:1px solid var(--outline-variant);
  border-radius:18px;border-bottom-left-radius:6px;box-shadow:var(--e2);overflow:hidden;max-width:322px}
.elig__head{display:flex;align-items:center;gap:10px;padding:12px 14px;
  background:var(--success-container);color:var(--on-success-container)}
.elig__head b{font-size:13.5px;font-weight:700;flex:1}
.elig__head--warn{background:var(--warning-container);color:var(--on-warning-container)}
.elig__head--err{background:var(--error-container);color:var(--on-error-container)}
.elig__body{padding:13px 14px;display:grid;gap:9px}
.elig__row{display:flex;justify-content:space-between;gap:14px;font-size:12.8px;align-items:baseline}
.elig__row span{color:var(--on-surface-variant)}
.elig__row b{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.elig__doc{display:flex;align-items:center;gap:10px;padding:11px 14px;
  border-top:1px solid var(--outline-variant);background:var(--surface-low)}
.elig__doc .n{display:grid;gap:0;min-width:0}
.elig__doc .n b{font-size:13px;font-weight:700}
.elig__doc .n span{font-size:11px;color:var(--on-surface-variant)}

.appt{background:var(--surface-lowest);border:1px solid var(--outline-variant);
  border-radius:18px;border-bottom-left-radius:6px;box-shadow:var(--e3);
  padding:18px 16px 14px;text-align:center;max-width:322px}
.appt__ring{width:52px;height:52px;margin:0 auto 11px;border-radius:50%;display:grid;place-items:center;
  background:var(--success-container);color:var(--success)}
.appt__ring svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:2.6;
  stroke-linecap:round;stroke-linejoin:round}
.appt h4{font-size:15px;font-weight:700;margin-bottom:3px}
.appt__when{font-size:12.5px;color:var(--on-surface-variant);margin-bottom:13px}
.appt__grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--outline-variant);
  border:1px solid var(--outline-variant);border-radius:12px;overflow:hidden;margin-bottom:13px}
.appt__cell{background:var(--surface-lowest);padding:10px 8px;display:grid;gap:2px}
.appt__cell dt{font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--on-surface-variant)}
.appt__cell dd{margin:0;font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums}

.handoff{display:flex;align-items:center;justify-content:center;gap:8px;
  background:var(--primary-container);color:var(--on-primary-container);
  border-radius:var(--r-full);padding:9px 15px;font-size:12.2px;font-weight:700;
  width:max-content;margin:0 auto;box-shadow:var(--e1);text-align:center}

/* ── Barra de resposta ────────────────────────────────────────────────── */
.chatw__composer{display:flex;align-items:center;gap:10px;padding:12px 14px;flex:none;
  border-top:1px solid var(--outline-variant);background:var(--surface-lowest);
  padding-bottom:max(12px,env(safe-area-inset-bottom))}
.composer-field{flex:1;min-width:0;height:44px;padding:0 16px;border:0;outline:none;
  border-radius:var(--r-full);background:var(--surface-container);color:var(--on-surface);
  font:inherit;font-size:14px}
.composer-field::placeholder{color:var(--outline)}
.composer-btn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;
  border:0;cursor:pointer;background:var(--primary);color:var(--on-primary);box-shadow:var(--e1)}
/* Respostas rápidas: vivem DENTRO do fio da conversa (como no /mockup),
   logo abaixo da última fala e alinhadas à direita, como a resposta que o
   paciente vai dar. Não são uma barra separada. */
.qr-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.qr-chip{border:1px solid var(--outline-variant);background:var(--surface-lowest);
  color:var(--on-surface-variant);border-radius:var(--r-full);padding:9px 15px;
  font:inherit;font-size:13px;font-weight:600;white-space:nowrap;box-shadow:var(--e1);cursor:pointer;
  transition:background var(--dur-s),color var(--dur-s),border-color var(--dur-s)}
.qr-chip:hover{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.chatw__attach{flex:1;display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;
  height:44px;border-radius:var(--r-full);background:var(--primary);color:var(--on-primary);
  font-size:14px;font-weight:700}
.chatw__file{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.chatw__foot{display:flex;align-items:center;justify-content:center;gap:7px;padding:8px 14px;flex:none;
  background:var(--surface-lowest);border-top:1px solid var(--outline-variant);
  font-size:10.5px;font-weight:600;letter-spacing:.03em;color:var(--on-surface-variant)}

/* ── Config › Chat do paciente ─────────────────────────────────────────── */
.chat-cfg{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px;align-items:start}
.chat-cfg__url{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  border:1px solid var(--outline-variant);border-radius:var(--r-md);padding:9px 12px;
  background:var(--surface-low)}
.chat-cfg__in{flex:1;min-width:190px;border:0;background:none;outline:none;font:inherit;
  font-size:14px;font-weight:600;color:var(--on-surface)}
.chat-cfg__stats{display:grid;gap:2px;border:1px solid var(--outline-variant);
  border-radius:var(--r-md);padding:6px 14px;background:var(--surface-low)}
.chat-cfg__msg{display:grid;gap:10px;justify-items:start}
.chat-cfg__pre{width:100%;margin:0;padding:14px 16px;border-radius:var(--r-md);
  background:var(--surface-low);border:1px solid var(--outline-variant);
  font:inherit;font-size:13.5px;line-height:1.6;color:var(--on-surface);white-space:pre-wrap}
@media (max-width:900px){ .chat-cfg{grid-template-columns:minmax(0,1fr)} }
/* procedência da triagem na fila */
.qitem__src{display:inline-flex;align-items:center;gap:5px;width:max-content;
  font-size:10.5px;font-weight:700;letter-spacing:.03em;color:var(--primary)}
/* o que falta fazer nesta triagem */
.tri-todo{display:flex;align-items:center;gap:13px;padding:13px 16px;border-radius:var(--r-md);
  background:var(--warning-container);color:var(--on-warning-container)}
.tri-todo > svg{flex:none}
.tri-todo > div{flex:1;min-width:0;display:grid;gap:2px}
.tri-todo b{font-size:13.5px}
.tri-todo span{font-size:12.5px;line-height:1.45}
/* a foto real da carteirinha, clicável para ampliar */
.ocr-proof__shot{display:block;position:relative;border-radius:var(--r-sm);overflow:hidden;
  background:var(--surface-container);line-height:0}
.ocr-proof__shot img{width:100%;height:auto;display:block;max-height:230px;object-fit:contain}
.ocr-proof__zoom{position:absolute;right:8px;bottom:8px;display:inline-flex;align-items:center;gap:5px;
  font-size:10.5px;font-weight:700;line-height:1;padding:5px 9px;border-radius:var(--r-full);
  background:rgba(0,0,0,.62);color:#fff;opacity:0;transition:opacity var(--dur-s)}
.ocr-proof__shot:hover .ocr-proof__zoom{opacity:1}
/* Botão da câmera dentro da barra de escrever (passo da carteirinha) */
.composer-attach{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;
  cursor:pointer;background:var(--surface-container);color:var(--primary)}
.composer-attach:hover{background:var(--primary-container);color:var(--on-primary-container)}
/* Os chips ficam colados na barra de escrever, sem borda dupla */

/* ── Aviso: tem gente esperando atendimento humano no chat ───────────────── */
.hwait{position:fixed;right:24px;bottom:24px;z-index:60;width:min(360px,calc(100vw - 48px));
  background:var(--surface-lowest);border:1px solid var(--outline-variant);
  border-radius:var(--r-lg);box-shadow:var(--e4);overflow:hidden;
  animation:hwaitIn 320ms var(--ease-emph) both}
@keyframes hwaitIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.hwait[hidden]{display:none}
.hwait__h{display:flex;align-items:center;gap:10px;padding:12px 14px;
  background:var(--warning-container);color:var(--on-warning-container)}
.hwait__h b{flex:1;font-size:13.5px;font-weight:700}
.hwait__badge{min-width:22px;height:22px;padding:0 7px;border-radius:var(--r-full);
  display:grid;place-items:center;font-size:12px;font-weight:800;
  background:var(--error);color:#fff}
.hwait__x{border:0;background:none;cursor:pointer;color:inherit;display:grid;place-items:center;
  width:26px;height:26px;border-radius:50%;opacity:.7}
.hwait__x:hover{opacity:1;background:rgba(0,0,0,.07)}
.hwait__item{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:11px 14px;
  border-top:1px solid var(--outline-variant);text-decoration:none;color:inherit}
.hwait__item:hover{background:var(--surface-low)}
.hwait__n{font-size:13.5px;font-weight:700}
.hwait__t{font-size:11px;font-weight:700;color:var(--warning);grid-row:1;grid-column:2;align-self:center}
.hwait__r{font-size:11.5px;color:var(--on-surface-variant);grid-column:1/-1}
/* pulso do sino, para o olho achar o aviso */
.hwait__h svg{animation:hwaitRing 2.6s var(--ease-std) infinite}
@keyframes hwaitRing{0%,88%,100%{transform:rotate(0)}91%{transform:rotate(-13deg)}94%{transform:rotate(11deg)}97%{transform:rotate(-6deg)}}

/* Faixa dentro da triagem: esta pessoa está esperando gente */
.tri-human{display:flex;align-items:center;gap:13px;padding:13px 16px;border-radius:var(--r-md);
  background:var(--error-container);color:var(--on-error-container);margin-bottom:16px}
.tri-human > svg{flex:none}
.tri-human > div{flex:1;min-width:0;display:grid;gap:2px}
.tri-human b{font-size:13.5px}
.tri-human span{font-size:12.5px;line-height:1.45}
/* Responder ao paciente pelo painel */
.tri-say{display:flex;gap:9px;align-items:center;margin-top:12px}
.tri-say input{flex:1;min-width:0;height:42px;padding:0 15px;border-radius:var(--r-full);
  border:1px solid var(--outline-variant);background:var(--surface-low);
  font:inherit;font-size:14px;color:var(--on-surface);outline:none}
.tri-say input:focus{border-color:var(--primary)}

/* ── Aprovação da recepção (etapa interna do /mockup) ────────────────────── */
.recep{border:1.5px solid var(--primary);border-radius:var(--r-md);overflow:hidden;
  background:var(--surface-lowest);margin-bottom:16px}
.recep__h{display:flex;align-items:center;gap:11px;padding:11px 14px;
  background:var(--primary-container);color:var(--on-primary-container)}
.recep__ico{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:var(--primary);color:var(--on-primary)}
.recep__id{flex:1;min-width:0;display:grid;gap:1px}
.recep__id b{font-size:13.5px;font-weight:700}
.recep__id span{font-size:11.5px;opacity:.85}
.recep__live{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;
  letter-spacing:.04em;text-transform:uppercase}
.recep__dot{width:8px;height:8px;border-radius:50%;background:var(--error);
  animation:recepPulse 1.8s var(--ease-decel) infinite}
@keyframes recepPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--error) 60%,transparent)}
                      70%,100%{box-shadow:0 0 0 7px transparent}}
.recep__q{padding:14px 14px 10px;font-size:13.5px;line-height:1.5;margin:0}
.recep__slots{display:flex;gap:9px;flex-wrap:wrap;padding:0 14px 12px}
.recep-check{position:absolute;opacity:0;width:0;height:0}
.recep-slot{display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  border:1px solid var(--outline-variant);background:var(--surface-low);
  color:var(--on-surface-variant);border-radius:var(--r-full);padding:9px 15px;
  font-size:13px;font-weight:700;transition:all var(--dur-s)}
.recep-slot svg{opacity:0;transition:opacity var(--dur-s)}
.recep-check:checked + .recep-slot{background:var(--primary);color:var(--on-primary);
  border-color:var(--primary)}
.recep-check:checked + .recep-slot svg{opacity:1}
.recep-check:focus-visible + .recep-slot{outline:2px solid var(--primary);outline-offset:2px}
.recep__note{display:flex;align-items:flex-start;gap:8px;margin:0;padding:0 14px 12px;
  font-size:12px;line-height:1.45;color:var(--on-surface-variant)}
.recep__note svg{flex:none;margin-top:1px}
.recep__acts{display:flex;align-items:center;gap:9px;padding:11px 14px;
  border-top:1px solid var(--outline-variant);background:var(--surface-low)}
/* tipo do aviso flutuante */
.hwait__item[data-tipo="aprovacao"] .hwait__t{color:var(--primary)}
/* Paciente esperando a recepção liberar os horários */
.chatw__wait{display:flex;align-items:center;justify-content:center;gap:10px;flex:none;
  padding:16px 14px;padding-bottom:max(16px,env(safe-area-inset-bottom));
  border-top:1px solid var(--outline-variant);background:var(--surface-lowest);
  font-size:13px;font-weight:600;color:var(--on-surface-variant)}
.chatw__spin{width:16px;height:16px;flex:none;border-radius:50%;
  border:2px solid var(--outline-variant);border-top-color:var(--primary);
  animation:chatwSpin .9s linear infinite}
@keyframes chatwSpin{to{transform:rotate(360deg)}}

/* Convite para ativar os avisos no celular (PWA) */
.push{max-width:322px;display:grid;gap:12px;padding:15px;border-radius:18px;
  border-bottom-left-radius:6px;background:var(--primary-container);
  color:var(--on-primary-container);box-shadow:var(--e2)}
.push__b{display:flex;gap:11px;align-items:flex-start}
.push__ico{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:var(--primary);color:var(--on-primary)}
.push__b > div{display:grid;gap:3px;min-width:0}
.push__b b{font-size:13.5px;font-weight:700}
.push__b span{font-size:12.5px;line-height:1.45}
.push .btn{height:42px}
.push--done{background:var(--success-container);color:var(--on-success-container)}
.push--done .push__ico{background:var(--success);color:#fff}
/* Cadastro aberto pela carteirinha, ainda incompleto */
.trow--draft{background:color-mix(in srgb,var(--warning-container) 32%,transparent)}
.trow--draft .trow__t b{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ── Diálogo de confirmação próprio (substitui o window.confirm nativo) ───── */
.cfd-scrim{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;
  background:color-mix(in srgb,var(--scrim,#000) 42%,transparent);
  animation:cfdFade 160ms var(--ease-decel) both}
@keyframes cfdFade{from{opacity:0}to{opacity:1}}
.cfd{width:min(420px,100%);background:var(--surface-lowest);border-radius:var(--r-xl);
  box-shadow:var(--e4);padding:24px 24px 18px;text-align:center;
  animation:cfdPop 220ms var(--ease-emph) both}
@keyframes cfdPop{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
.cfd__ico{width:52px;height:52px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;
  background:var(--error-container);color:var(--error)}
.cfd__t{font-size:18px;font-weight:700;color:var(--on-surface);margin:0 0 8px;line-height:1.3}
.cfd__b{font-size:14px;line-height:1.5;color:var(--on-surface-variant);margin:0 0 20px}
.cfd__acts{display:flex;gap:10px;justify-content:center}
.cfd__acts .btn{min-width:120px;justify-content:center}
.cfd__acts .btn--danger{background:var(--error);color:#fff;border-color:var(--error)}
/* Conversa ao vivo no painel da recepção */
.transcript{max-height:340px;overflow-y:auto;scroll-behavior:smooth}
.tchat-live{display:inline-flex;align-items:center;gap:6px;margin-left:8px;
  font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--secondary)}
.tchat-dot{width:8px;height:8px;border-radius:50%;background:var(--secondary);
  animation:recepPulse 1.8s var(--ease-decel) infinite}

/* ══════════════════════════════════════════════════════════════════════════
   CELULAR FLUTUANTE — a conversa que acompanha a recepção por todas as telas
   ══════════════════════════════════════════════════════════════════════════ */
.dock{position:fixed;right:24px;bottom:24px;z-index:900}
.dock[hidden]{display:none}
.dock__phone{width:330px;height:min(560px,calc(100dvh - 120px));display:flex;flex-direction:column;
  background:var(--surface-lowest);border:1px solid var(--outline-variant);
  border-radius:var(--r-xl);box-shadow:var(--e4);overflow:hidden;
  animation:dockIn 260ms var(--ease-emph) both}
@keyframes dockIn{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}

.dock__bar{display:flex;align-items:center;gap:9px;padding:10px 12px;flex:none;
  background:var(--primary);color:var(--on-primary)}
.dock__avatar{width:32px;height:32px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:rgba(255,255,255,.2);font-size:12px;font-weight:800}
.dock__id{flex:1;min-width:0;display:grid;gap:0}
.dock__id b{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dock__id span{font-size:11px;opacity:.85}
.dock__act{width:28px;height:28px;flex:none;border:0;background:none;cursor:pointer;
  color:inherit;display:grid;place-items:center;border-radius:50%;opacity:.85;text-decoration:none}
.dock__act:hover{opacity:1;background:rgba(255,255,255,.16)}

.dock__log{flex:1;min-height:0;overflow-y:auto;padding:14px 12px;display:grid;gap:8px;
  align-content:start;background:var(--surface-low)}
.dock-row{display:flex}
.dock-row--in{justify-content:flex-start}
.dock-row--out{justify-content:flex-end}
.dock-bubble{max-width:82%;padding:8px 11px 5px;border-radius:14px;
  background:var(--surface-lowest);border:1px solid var(--outline-variant);box-shadow:var(--e1)}
.dock-row--out .dock-bubble{background:var(--primary-container);color:var(--on-primary-container);
  border-color:transparent}
.dock-bubble p{margin:0;font-size:13px;line-height:1.45;white-space:pre-wrap}
.dock-time{display:block;text-align:right;font-size:10px;margin-top:2px;color:var(--on-surface-variant)}
.dock-row--out .dock-time{color:color-mix(in srgb,var(--on-primary-container) 65%,transparent)}
.dock-img{display:block;width:100%;border-radius:9px;margin-bottom:5px}
.dock-empty{font-size:12.5px;color:var(--on-surface-variant);text-align:center;margin:12px 0}

.dock__composer{display:flex;align-items:center;gap:8px;padding:10px 12px;flex:none;
  border-top:1px solid var(--outline-variant);background:var(--surface-lowest)}
.dock__composer[hidden]{display:none}
.dock__composer input{flex:1;min-width:0;height:38px;padding:0 14px;border-radius:var(--r-full);
  border:1px solid var(--outline-variant);background:var(--surface-low);color:var(--on-surface);
  font:inherit;font-size:13px;outline:none}
.dock__composer input:focus{border-color:var(--primary)}
.dock__composer button{width:38px;height:38px;flex:none;border:0;border-radius:50%;cursor:pointer;
  display:grid;place-items:center;background:var(--primary);color:var(--on-primary)}
.dock__foot{padding:6px 10px 10px;flex:none;background:var(--surface-lowest);text-align:center}
.dock__foot .btn[hidden]{display:none}

/* Minimizado: bolha no canto */
.dock-bubble-btn{position:fixed;right:24px;bottom:24px;z-index:900;width:56px;height:56px;
  border:0;border-radius:50%;cursor:pointer;display:grid;place-items:center;
  background:var(--primary);color:var(--on-primary);box-shadow:var(--e3)}
.dock-bubble-btn[hidden]{display:none}
.dock-bubble-btn__n{position:absolute;top:-2px;right:-2px;min-width:20px;height:20px;padding:0 5px;
  border-radius:var(--r-full);display:grid;place-items:center;font-size:11px;font-weight:800;
  background:var(--error);color:#fff;border:2px solid var(--surface-lowest)}
.dock-bubble-btn__n[hidden]{display:none}

@media (max-width:520px){
  .dock{right:12px;bottom:12px;left:12px}
  .dock__phone{width:auto;height:min(70dvh,520px)}
}
/* Celular arrastável: o cabeçalho é a pegada */
.dock__bar{touch-action:none;user-select:none}
.dock--dragging{transition:none;box-shadow:var(--e4),0 0 0 2px var(--primary)}
.dock--dragging .dock__log{pointer-events:none}
/* Espera longa: a pessoa sobe como urgente na fila da recepção */
.hwait__item--urgente{background:var(--error-container)}
.hwait__item--urgente .hwait__t{color:var(--error);font-weight:800}
.hwait__item--urgente .hwait__n::before{content:"🔴 ";font-size:10px}
/* Horário reservado pelo chat: o paciente ainda está escolhendo */
.evt--hold{background:repeating-linear-gradient(135deg,
    color-mix(in srgb,var(--primary) 9%,var(--surface-lowest)) 0 7px,
    color-mix(in srgb,var(--primary) 15%,var(--surface-lowest)) 7px 14px);
  border:1.5px dashed var(--primary);color:var(--primary);text-decoration:none}
.evt--hold b{display:flex;align-items:center;gap:5px}
.evt--hold .evt__st{color:var(--primary);opacity:.85}
/* Conversa acontecendo agora, conduzida pelo Flow */
.qitem__live{display:inline-flex;align-items:center;gap:6px;width:max-content;
  font-size:10.5px;font-weight:800;letter-spacing:.02em;color:var(--secondary)}
.qitem__dot{width:7px;height:7px;border-radius:50%;background:var(--secondary);
  animation:recepPulse 1.8s var(--ease-decel) infinite}
.tri-live{display:flex;align-items:center;gap:13px;padding:13px 16px;border-radius:var(--r-md);
  background:var(--secondary-container);color:var(--on-secondary-container);margin-bottom:16px}
.tri-live__dot{width:10px;height:10px;border-radius:50%;flex:none;background:var(--secondary);
  animation:recepPulse 1.8s var(--ease-decel) infinite}
.tri-live > div{flex:1;min-width:0;display:grid;gap:2px}
.tri-live b{font-size:13.5px}
.tri-live span{font-size:12.5px;line-height:1.45}
/* Consulta recém-aberta: brilha por uns segundos para o olho achar */
.evt--found{position:relative;z-index:5;outline:2.5px solid var(--primary);outline-offset:1px}
.evt--pulse{animation:evtPulse 1.1s var(--ease-decel) 3}
@keyframes evtPulse{
  0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--primary) 55%,transparent),var(--e2);transform:scale(1)}
  30%{box-shadow:0 0 0 9px color-mix(in srgb,var(--primary) 22%,transparent),var(--e3);transform:scale(1.03)}
  100%{box-shadow:0 0 0 0 transparent,var(--e1);transform:scale(1)}
}
/* Passo a passo de instalação no iPhone */
.push__steps{margin:4px 0 0;padding:0;list-style:none;display:grid;gap:8px}
.push__steps li{display:flex;align-items:center;gap:9px;font-size:12.5px;line-height:1.35}
.push__steps li svg{flex:none;color:var(--primary)}
.push--done .push__steps{display:none}
