/* Medizy — tokens
   Verde da marca extraído da logomarca oficial: #1BA05C.
   ink #12343B  · surface #F3F7F6 · card #FFFFFF · teal #1BA05C · teal-deep #14783F
   amber #B8861B (alerta/especial) · rust #B54A2E (erro/cancelar) · muted #6B7C7A · line #D8E2DF
   Display: Fraunces · Body: IBM Plex Sans · Dados: IBM Plex Mono */
:root{
  --ink:#12343B;--surface:#F3F7F6;--card:#fff;--teal:#1BA05C;--teal-deep:#14783F;--teal-soft:#DFF3E7;
  --amber:#B8861B;--amber-soft:#F7EBCF;--rust:#B54A2E;--rust-soft:#F6DED6;--muted:#6B7C7A;--line:#D8E2DF;
  --r:10px;--shadow:0 1px 2px rgba(18,52,59,.06),0 8px 24px -12px rgba(18,52,59,.18);
  /* Fontes locais/do sistema: a CSP não libera CDN de fontes e a clínica pode estar offline. */
  --display:Georgia,"Times New Roman",serif;--body:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{font-size:15px}
body{margin:0;background:var(--surface);color:var(--ink);font-family:var(--body);line-height:1.45}
a{color:var(--teal-deep)}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.01em;margin:0 0 .5rem}
h1{font-size:1.9rem}h2{font-size:1.35rem}h3{font-size:1.05rem}
p{margin:.25rem 0 .75rem}
small,.muted{color:var(--muted)}
.mono{font-family:var(--mono);font-size:.9em}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* topbar */
.topbar{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.5rem;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--ink)}
/* A marca agora é o SVG do ícone; a caixa arredondada já vem no próprio arquivo. */
.brand-mark{width:34px;height:34px;display:block;object-fit:contain}
.brand-name{font-family:var(--display);font-size:1.25rem;font-weight:600}.brand-name em{color:var(--teal);font-style:normal}
.mainnav{display:flex;gap:.25rem;flex:1}
.mainnav a{padding:.45rem .8rem;border-radius:8px;text-decoration:none;color:var(--muted);font-weight:500}
.mainnav a.on,.mainnav a:hover{color:var(--teal-deep);background:var(--teal-soft)}
.who{display:flex;align-items:center;gap:.9rem}
.who .user{display:flex;flex-direction:column;line-height:1.15}.who .user small{font-size:.75rem}
.clinic-chip{border:1px solid var(--line);border-radius:999px;padding:.3rem .8rem;text-decoration:none;font-weight:500;background:var(--surface)}

.page{max-width:1180px;margin:0 auto;padding:1.5rem}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap}
.page-head .eyebrow{font-family:var(--mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--teal)}

/* cards & grids */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.25rem;box-shadow:var(--shadow)}
.card+.card{margin-top:1rem}
.grid{display:grid;gap:1rem}
.grid.c2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.grid.c3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.grid.c4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem}
.stat b{display:block;font-family:var(--display);font-size:2rem;font-weight:600;line-height:1.1}
.stat span{color:var(--muted);font-size:.85rem}

/* forms */
form.stack{display:grid;gap:.7rem}
.row{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
label{display:grid;gap:.25rem;font-size:.85rem;font-weight:500;color:var(--muted)}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],input[type=file],select,textarea{
  font:inherit;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);width:100%}
textarea{min-height:110px;resize:vertical;font-family:var(--mono);font-size:.9rem;line-height:1.5}
label.check{display:flex;align-items:center;gap:.45rem;font-weight:400;color:var(--ink);cursor:pointer}
.checks{display:flex;flex-wrap:wrap;gap:.35rem .9rem;padding:.35rem 0}
fieldset{border:1px solid var(--line);border-radius:8px;padding:.6rem .9rem;margin:0}
legend{font-family:var(--mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--teal);padding:0 .3rem}

.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--teal);background:var(--teal);color:#fff;font:inherit;font-weight:500;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--teal-deep);border-color:var(--teal-deep)}
.btn.ghost{background:transparent;color:var(--teal-deep)}
.btn.ghost:hover{background:var(--teal-soft)}
.btn.warn{background:var(--rust);border-color:var(--rust)}
.btn.sm{padding:.3rem .65rem;font-size:.85rem}
.btn.link{background:none;border:none;color:var(--teal-deep);padding:.2rem .4rem;text-decoration:underline}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
form.inline{display:inline}

/* tables */
table{width:100%;border-collapse:collapse;font-size:.92rem}
th{text-align:left;font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:.5rem .6rem;border-bottom:1px solid var(--line)}
td{padding:.55rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
td.num{font-family:var(--mono);text-align:right}
.empty{padding:1.5rem;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:8px}

/* badges */
.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:500;font-family:var(--mono);background:var(--surface);border:1px solid var(--line)}
.badge.particular{background:#EAF0FF;border-color:#C9D7FF;color:#2C4A9E}
.badge.health_plan{background:var(--teal-soft);border-color:#BCE0D6;color:var(--teal-deep)}
.badge.package{background:var(--amber-soft);border-color:#EAD28F;color:#7A5A0E}
.badge.scheduled{background:#EAF0FF;color:#2C4A9E}.badge.in_progress{background:var(--amber-soft);color:#7A5A0E}
.badge.completed{background:var(--teal-soft);color:var(--teal-deep)}.badge.cancelled,.badge.no_show{background:var(--rust-soft);color:var(--rust)}
.badge.special{background:var(--rust-soft);border-color:#E9B8A9;color:var(--rust)}
.badge.off{opacity:.55}

.alert{padding:.7rem .9rem;border-radius:8px;border:1px solid;margin-bottom:1rem}
.alert.error{background:var(--rust-soft);border-color:#E9B8A9;color:#7A2E19}
.alert.info{background:var(--teal-soft);border-color:#BCE0D6;color:var(--teal-deep)}

/* auth */
.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.auth-hero{background:var(--ink);color:#fff;padding:3rem;display:flex;flex-direction:column;justify-content:space-between}
.auth-hero h1{font-size:2.6rem;color:#fff;max-width:14ch}
.auth-hero .brand-name,.auth-hero .brand{color:#fff}
.auth-hero .pulse{font-family:var(--mono);font-size:.8rem;color:#9CC9BF;letter-spacing:.06em}
.auth-form{display:grid;place-items:center;padding:2rem}
.auth-form .card{width:min(440px,100%)}
.oauth{display:grid;gap:.5rem;margin:.9rem 0}
.oauth .btn{justify-content:center;background:#fff;color:var(--ink);border-color:var(--line)}
.divider{display:flex;align-items:center;gap:.7rem;color:var(--muted);font-size:.8rem}.divider:before,.divider:after{content:"";flex:1;border-top:1px solid var(--line)}
@media (max-width:820px){.auth{grid-template-columns:1fr}.auth-hero{padding:2rem}.topbar{flex-wrap:wrap;gap:.6rem}.mainnav{order:3;width:100%;overflow-x:auto}}

/* prontuário — abas como índice de pasta clínica (assinatura visual) */
.chart{display:block}
.chart-side .card{position:sticky;top:70px}
.tabs{display:flex;gap:2px;margin-bottom:-1px;position:relative;z-index:1}
.tabs a{padding:.55rem 1rem;border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0;background:var(--surface);color:var(--muted);text-decoration:none;font-weight:500;font-size:.9rem;border-top:3px solid var(--line)}
.tabs a[data-tab=historico]{border-top-color:#8FA6B2}.tabs a[data-tab=atendimento]{border-top-color:var(--teal)}
.tabs a[data-tab=prescricao]{border-top-color:#2C4A9E}.tabs a[data-tab=exames]{border-top-color:#6D5AA6}
.tabs a[data-tab=atestados]{border-top-color:var(--amber)}.tabs a[data-tab=arquivos]{border-top-color:#B26A8B}.tabs a[data-tab=versoes]{border-top-color:#8FA6B2}
.tabs a.on{background:var(--card);color:var(--ink)}
.tab-panel{display:none;background:var(--card);border:1px solid var(--line);border-radius:0 var(--r) var(--r) var(--r);padding:1.2rem;box-shadow:var(--shadow)}
.tab-panel.on{display:block}
.picker{display:grid;grid-template-columns:260px auto 1fr;gap:.8rem;align-items:start}
.picker select[multiple],.picker select[size]{height:260px;font-family:var(--mono);font-size:.85rem}
.picker .arrow{align-self:center;display:grid;gap:.4rem}
.doc{border:1px solid var(--line);border-radius:8px;padding:.8rem 1rem;margin-top:.7rem;background:#FCFDFD}
.doc .meta{font-family:var(--mono);font-size:.75rem;color:var(--muted);display:flex;justify-content:space-between;margin-bottom:.3rem}
.md p{margin:.3rem 0}.md h2,.md h3{margin-top:.8rem}
.readonly{background:var(--amber-soft);border:1px solid #EAD28F;color:#7A5A0E;padding:.5rem .8rem;border-radius:8px;font-size:.85rem;margin-bottom:.8rem}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{padding:.5rem 0;border-bottom:1px dashed var(--line);display:flex;gap:.7rem;align-items:baseline;font-size:.9rem}
.timeline .t{font-family:var(--mono);font-size:.78rem;color:var(--muted);min-width:9.5em}
@media (max-width:900px){.chart{grid-template-columns:1fr}.chart-side .card{position:static}.picker{grid-template-columns:1fr}}

/* erro standalone */
body.err{display:grid;place-items:center;min-height:100vh}
.err-box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:2rem;max-width:480px}

@media print{.topbar,.tabs,.chart-side,.btn,form{display:none!important}.tab-panel{display:block!important;border:0;box-shadow:none}}

/* Editor Markdown (EasyMDE) — alinhado aos tokens do sistema */
.EasyMDEContainer .CodeMirror{border:1px solid var(--line);border-radius:0 0 8px 8px;background:#fff;color:var(--ink);font-family:var(--mono);font-size:.92rem;line-height:1.55;padding:.3rem}
.editor-toolbar{border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0;background:var(--surface);opacity:1}
.editor-toolbar button{color:var(--muted)!important;border-radius:6px}
.editor-toolbar button:hover,.editor-toolbar button.active{background:var(--teal-soft)!important;border-color:transparent!important;color:var(--teal-deep)!important}
.editor-toolbar i.separator{border-left-color:var(--line);border-right-color:#fff}
.EasyMDEContainer .CodeMirror-cursor{border-left-color:var(--teal)}
.EasyMDEContainer .CodeMirror-selected{background:var(--teal-soft)!important}
.editor-preview,.editor-preview-side{background:#FCFDFD;font-family:var(--body);padding:1rem}
.editor-preview-side{border-color:var(--line)}
.cm-s-easymde .cm-header{font-family:var(--display);color:var(--teal-deep)}
.cm-s-easymde .cm-strong{color:var(--ink)}
.cm-s-easymde .cm-link,.cm-s-easymde .cm-url{color:var(--teal)}

/* Edição embutida na listagem */
details.edit{margin-top:.5rem}
details.edit>summary{cursor:pointer;font-size:.82rem;color:var(--teal-deep);list-style:none;display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .5rem;border:1px solid var(--line);border-radius:999px;background:var(--surface)}
details.edit>summary::-webkit-details-marker{display:none}
details.edit>summary::before{content:"✎";font-size:.9em}
details.edit[open]>summary{background:var(--teal-soft);border-color:#BCE0D6}
details.edit>form{margin-top:.6rem;padding:.8rem;border-left:3px solid var(--teal);background:#FCFDFD;border-radius:0 8px 8px 0}

/* ---------------------------------------------------------------- agenda semanal */
.legend{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin-bottom:.8rem}
.legend-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--muted)}
.legend-item i{width:12px;height:12px;border-radius:3px;display:inline-block}

.week{padding:0;overflow:hidden}
.week-head,.week-body{display:grid;grid-template-columns:56px repeat(7,1fr)}
/* O cabeçalho grudava em 56px fixos e cobria os primeiros blocos quando a
   barra superior mudava de altura. Agora ele não é sticky: a agenda cabe na
   tela e rolar a página leva o cabeçalho junto, sem sobrepor nada. */
.week-head{border-bottom:2px solid var(--line);background:var(--surface);position:relative;z-index:2}
.day-head{text-align:center;padding:.5rem .2rem;border-left:1px solid var(--line)}
.day-head a{display:grid;text-decoration:none;color:var(--ink)}
.day-head .wd{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.day-head .dm{font-family:var(--display);font-size:1.05rem}
.day-head.today{background:var(--teal-soft)}
.day-head.today .wd,.day-head.today .dm{color:var(--teal-deep)}

.week-body{position:relative}
.week-body .gutter{position:relative}
/* A hora fica na régua da esquerda; tirar do bloco liberou espaço para o nome. */
.hour{position:absolute;right:.4rem;transform:translateY(-.6em);font-family:var(--mono);font-size:.7rem;color:var(--muted);background:var(--card);padding:0 .15rem}
.day-col{position:relative;border-left:1px solid var(--line)}
.day-col.today{background:rgba(27,160,92,.05)}
.hline{position:absolute;left:0;right:0;border-top:1px solid var(--line);opacity:.55}

.ev{position:absolute;overflow:hidden;display:flex;flex-direction:column;gap:.05rem;
  padding:.2rem .35rem;margin:0 2px;border-radius:6px;text-decoration:none;color:var(--ink);
  background:#fff;border:1px solid var(--line);border-left:4px solid var(--teal);box-shadow:0 1px 2px rgba(18,52,59,.08);font-size:.78rem;line-height:1.2}
.ev:hover{box-shadow:0 4px 12px -4px rgba(18,52,59,.3);z-index:3}
.ev-time{font-family:var(--mono);font-size:.72rem;color:var(--muted)}
.ev-patient{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15}
.ev-meta{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}
.ev-meta .badge{font-size:.65rem;padding:.05rem .35rem}
.ev-prof{font-size:.7rem;font-weight:600;white-space:nowrap}
.ev.status-completed{opacity:.7}
.ev.status-no_show{background:var(--rust-soft)}
.ev.status-in_progress{box-shadow:0 0 0 2px var(--amber-soft)}

@media (max-width:900px){
  .week-head,.week-body{grid-template-columns:44px repeat(7,minmax(96px,1fr));min-width:760px}
  .week{overflow-x:auto}
  .ev-meta .ev-prof{display:none}
}

/* seletor de data da agenda */
.datepick{gap:.4rem}
.inline-label{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted);font-weight:500}
.inline-label input[type=date]{width:auto;padding:.35rem .5rem;font-size:.85rem}


/* ------------------------------------------------- editor de texto rico */
.rt{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}
.rt-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem;padding:.3rem;background:var(--surface);border-bottom:1px solid var(--line)}
.rt-bar button{font:inherit;font-size:.8rem;line-height:1;padding:.35rem .5rem;min-width:2rem;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}
.rt-bar button:hover{background:var(--teal-soft);color:var(--teal-deep);border-color:#BCE0D6}
.rt-sep{width:1px;height:1.2rem;background:var(--line);margin:0 .25rem}
.rt-area{padding:.7rem .9rem;outline:none;font-family:var(--body);font-size:.95rem;line-height:1.55;overflow-y:auto;max-height:60vh}
.rt-area:focus{box-shadow:inset 0 0 0 2px var(--teal-soft)}
.rt-area:empty::before{content:attr(data-placeholder);color:var(--muted)}
.rt-area h2{font-size:1.15rem;margin:.6rem 0 .3rem}
.rt-area h3{font-size:1rem;margin:.5rem 0 .25rem}
.rt-area p{margin:.35rem 0}
.rt-area ul,.rt-area ol{margin:.35rem 0 .35rem 1.4rem}
textarea.rt-source{display:none}
.ta-left{text-align:left}.ta-center{text-align:center}.ta-right{text-align:right}.ta-justify{text-align:justify}
.md .ta-center{text-align:center}.md .ta-right{text-align:right}.md .ta-justify{text-align:justify}

/* ------------------------------------------------ modal (CSS puro, via :target) */
.modal{display:none}
.modal:target{display:block;position:fixed;inset:0;z-index:50}
.modal-backdrop{position:absolute;inset:0;background:rgba(18,52,59,.45);display:block}
.modal-box{position:relative;margin:4vh auto;max-width:820px;width:calc(100% - 2rem);max-height:92vh;overflow-y:auto;
  background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 24px 60px -20px rgba(18,52,59,.5);padding:1.2rem 1.4rem}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.8rem}
.modal-close{font-size:1.4rem;line-height:1;text-decoration:none;color:var(--muted);padding:.1rem .5rem;border-radius:6px}
.modal-close:hover{background:var(--surface);color:var(--ink)}

/* --------------------------------------------- correções de barra de ações */
/* input com width:100% dentro de .actions esticava e quebrava a linha */
.actions form{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:0}
.actions input[type=text],.actions input[type=date],.actions input[type=search],.actions select{width:auto;min-width:0}
.actions input[type=text],.actions input[type=search]{min-width:16rem;flex:1 1 16rem}
.page-head{align-items:flex-start;gap:.75rem 1.25rem}
.page-head>div:first-child{min-width:0;flex:1 1 22rem}
.page-head .actions{flex-wrap:wrap;justify-content:flex-end;flex:1 1 auto}
.page-head h1{overflow-wrap:break-word}
@media (max-width:720px){
  .page-head{flex-direction:column;align-items:stretch}
  .page-head .actions{justify-content:flex-start}
  .actions input[type=text],.actions input[type=search]{min-width:0;flex:1 1 100%}
}

/* agenda: título da semana não pode empurrar os botões */
.week-range{font-size:1.35rem;white-space:nowrap}
.agenda-head .actions{gap:.4rem}

/* barra de busca (pacientes) */
.searchbar{display:flex;align-items:center;gap:.5rem;flex:1 1 22rem;min-width:0}
.searchbar input[type=search]{flex:1 1 auto;min-width:10rem;width:auto}
.searchbar .btn{flex:0 0 auto;white-space:nowrap}

/* cabeçalho de seção com botão à direita */
.section-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.6rem}
.section-head h2{margin:0}
.clip{display:inline-block;max-width:38ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;color:var(--muted)}
td.actions{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}

/* --------------------------------------------------- folha de impressão */
.print-page{background:#E8EDEC;padding:1.5rem}
.sheet-actions{max-width:21cm;margin:0 auto .8rem;display:flex;gap:.5rem}
.sheet{max-width:21cm;min-height:29.7cm;margin:0 auto;background:#fff;padding:2cm 2cm 1.5cm;
  box-shadow:var(--shadow);display:flex;flex-direction:column}
.sheet-head{display:flex;align-items:center;gap:1.2rem;border-bottom:2px solid var(--teal);padding-bottom:.8rem}
.sheet-logo{max-height:80px;max-width:180px;object-fit:contain}
.sheet-head-text{flex:1;min-width:0}
.sheet-head-text h1{font-size:1.5rem;margin:0}
.sheet-head-text .md p{margin:.1rem 0;font-size:.9rem}
.sheet-title{font-size:1.1rem;text-align:center;margin:1.4rem 0 .4rem;text-transform:uppercase;letter-spacing:.06em}
.sheet-patient{border-bottom:1px solid var(--line);padding-bottom:.5rem;font-size:.95rem}
.sheet-body{flex:1;margin:1.2rem 0;font-size:1rem;line-height:1.7}
.sheet-city{text-align:right;margin-top:2rem}
.sheet-sign{margin:2.5rem auto 0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.15rem}
.sign-line{display:block;width:min(60%,9cm);border-top:1px solid var(--ink);margin-bottom:.35rem}
.sheet-foot{border-top:1px solid var(--line);margin-top:2rem;padding-top:.6rem;font-size:.8rem;color:var(--muted);text-align:center}
.sheet-foot p{margin:.1rem 0}
@media print{
  .print-page{background:#fff;padding:0}
  .sheet-actions{display:none}
  .sheet{box-shadow:none;margin:0;padding:1.2cm;max-width:none;min-height:auto}
  @page{size:A4;margin:1.2cm}
}

/* ações dentro de um documento emitido */
.doc-actions{display:flex;gap:.5rem;align-items:center;margin-top:.6rem;padding-top:.5rem;border-top:1px dashed var(--line)}
.btn.link.danger{color:var(--rust)}
.btn.link.danger:hover{background:var(--rust-soft)}

/* abas de página (Administração) */
.tabs.pagetabs{margin-bottom:0}
.tabs.pagetabs a{border-top-width:3px;border-top-color:var(--line)}
.tabs.pagetabs a.on{border-top-color:var(--teal);background:var(--card);color:var(--ink)}
.tabbed{background:transparent;border:1px solid var(--line);border-radius:0 var(--r) var(--r) var(--r);padding:1rem;background:var(--surface)}
.tabbed>.card:first-child{margin-top:0}

/* ------------------------------------------- cadastro: tipo de conta e abas */
.card.wide{width:min(680px,100%)}
.typepick{border:none;padding:0;margin:0}
.typepick legend{padding:0 0 .3rem}
.typecards{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.typecard{display:grid;gap:.2rem;padding:.8rem .9rem;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:#fff;font-weight:400;color:var(--ink)}
.typecard input{position:absolute;opacity:0;width:0;height:0}
.typecard:hover{border-color:var(--teal)}
.typecard:has(input:checked){border-color:var(--teal);background:var(--teal-soft);box-shadow:inset 0 0 0 1px var(--teal)}
.tc-title{font-weight:600}
.tc-desc{font-size:.82rem;color:var(--muted)}

.proftabs{display:flex;flex-wrap:wrap;gap:.3rem;margin:.2rem 0 .8rem;border-bottom:1px solid var(--line);padding-bottom:.4rem}
.proftab{margin:0;font-weight:500}
.proftab input{position:absolute;opacity:0;width:0;height:0}
.proftab span{display:inline-block;padding:.4rem .8rem;border:1px solid var(--line);border-radius:999px;cursor:pointer;font-size:.88rem;color:var(--muted);background:var(--surface)}
.proftab span:hover{border-color:var(--teal);color:var(--teal-deep)}
.proftab input:checked+span,.proftab.on span{background:var(--teal);border-color:var(--teal);color:#fff}
.proftab input:focus-visible+span{outline:2px solid var(--teal);outline-offset:2px}
.profpanel{display:grid;gap:.7rem;padding:.9rem;border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:0 8px 8px 0;background:#FCFDFD;margin-bottom:.8rem}
.profpanel[hidden]{display:none}


/* ------------------------------------------------------ cadastro em etapas */
.wz-steps{display:flex;gap:.4rem;list-style:none;margin:0 0 1.1rem;padding:0;font-size:.8rem;color:var(--muted);flex-wrap:wrap}
.wz-steps li{display:flex;align-items:center;gap:.4rem;padding:.3rem .7rem .3rem .3rem;border-radius:999px;border:1px solid transparent}
.wz-steps li span{display:grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--surface);border:1px solid var(--line);font-family:var(--mono);font-size:.75rem}
.wz-steps li.on{color:var(--teal-deep);border-color:#BCE0D6;background:var(--teal-soft)}
.wz-steps li.on span{background:var(--teal);border-color:var(--teal);color:#fff}
.wz-steps li.done span{background:var(--teal-soft);border-color:#BCE0D6;color:var(--teal-deep)}
.wz-step{display:grid;gap:.7rem}
.wz-step[hidden]{display:none}
.wz-step h2{margin:0 0 .2rem}
.wz-nav{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1.1rem;padding-top:.9rem;border-top:1px solid var(--line)}
.wz-nav .btn[hidden]{display:none}
.wz-resume{margin:0 0 .4rem;font-size:.85rem}

/* menu do usuário (canto superior direito) */
.usermenu{position:relative}
.usermenu>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.4rem;padding:.25rem .5rem;border-radius:8px}
.usermenu>summary::-webkit-details-marker{display:none}
.usermenu>summary::after{content:"▾";color:var(--muted);font-size:.8rem}
.usermenu>summary:hover{background:var(--surface)}
.usermenu[open]>summary{background:var(--teal-soft)}
.usermenu-pop{position:absolute;right:0;top:calc(100% + .4rem);min-width:11rem;background:var(--card);
  border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:.3rem;z-index:20;display:grid}
.usermenu-pop a{padding:.5rem .7rem;border-radius:7px;text-decoration:none;color:var(--ink);font-size:.9rem}
.usermenu-pop a:hover{background:var(--teal-soft);color:var(--teal-deep)}

/* campos da especialidade no prontuário */
.specgroup{border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:0 8px 8px 0;padding:.8rem 1rem;margin-bottom:.8rem;background:#FCFDFD}
.specgroup h4{margin:0 0 .5rem;font-family:var(--mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--amber)}
.specgrid{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.specgrid .wide{grid-column:1/-1}
.notecard{border:1px solid #EAD28F;background:var(--amber-soft);border-radius:8px;padding:.8rem 1rem;margin-bottom:1rem}
.notecard h3{margin:0 0 .3rem;font-size:.95rem;color:#7A5A0E}

/* ficha resumida do paciente */
.fichatab th{width:9rem;text-align:left;font-family:var(--body);font-size:.85rem;font-weight:500;color:var(--muted);text-transform:none;letter-spacing:0}
.fichatab td{font-size:.9rem}

/* via do receituário de controle especial */
.sheet-via{font-family:var(--mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--rust);
  border:1px solid var(--rust);border-radius:999px;padding:.15rem .6rem;display:inline-block;margin:0 0 .6rem}
@media print{.sheet+.sheet{page-break-before:always}}


/* ------------------------------------------------------------------ tema escuro */
/* Um único conjunto de variáveis: nenhum componente precisou de regra própria. */
/* Telas sem sessão (login) são sempre claras: são a "cara" do produto e não há
   preferência de usuário para ler ainda. `color-scheme: light` também impede o
   navegador de escurecer campos de formulário por conta própria. */
:root[data-tema="light"] { color-scheme: light; }
:root[data-tema="dark"], :root[data-tema="auto"] {
  color-scheme: dark;
}
@media (prefers-color-scheme: light) { :root[data-tema="auto"] { color-scheme: light } }

:root[data-tema="dark"] {
  --ink:#E6EFED;--surface:#0F1A1D;--card:#16262A;--teal:#35BE79;--teal-deep:#5AD494;--teal-soft:#15301F;
  --amber:#D9A73C;--amber-soft:#3A2F14;--rust:#E0785A;--rust-soft:#3D211A;--muted:#93A8A5;--line:#284045;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);
}
:root[data-tema="dark"] input,:root[data-tema="dark"] select,:root[data-tema="dark"] textarea,
:root[data-tema="dark"] .rt-area{background:#0F1A1D;color:var(--ink);border-color:var(--line)}
:root[data-tema="dark"] .doc,:root[data-tema="dark"] .profpanel,:root[data-tema="dark"] .specgroup{background:#12212400}
:root[data-tema="dark"] .day-col.today{background:rgba(53,190,121,.10)}
:root[data-tema="dark"] .ev{background:var(--card)}
/* A folha de impressão continua clara: papel é branco. */
:root[data-tema="dark"] .sheet{background:#fff;color:#12343B}
@media (prefers-color-scheme: dark) {
  :root[data-tema="auto"] {
    --ink:#E6EFED;--surface:#0F1A1D;--card:#16262A;--teal:#35BE79;--teal-deep:#5AD494;--teal-soft:#15301F;
    --amber:#D9A73C;--amber-soft:#3A2F14;--rust:#E0785A;--rust-soft:#3D211A;--muted:#93A8A5;--line:#284045;
  }
  :root[data-tema="auto"] input,:root[data-tema="auto"] select,:root[data-tema="auto"] textarea,
  :root[data-tema="auto"] .rt-area{background:#0F1A1D;color:var(--ink);border-color:var(--line)}
  :root[data-tema="auto"] .sheet{background:#fff;color:#12343B}
}


/* ficha do paciente: blocos empilhados em vez de duas colunas — a coluna
   estreita quebrava tabela, editor de texto e formulário de venda de pacote */
.stackcols{display:grid;gap:1rem}
.stackcols>.card{margin-top:0}
.badge.lock{background:var(--surface);border-color:var(--line);color:var(--muted)}
.badge.lock::before{content:"🔒 ";font-size:.9em}


/* logomarca no painel das telas de acesso */
.brand-hero{display:block}
.brand-hero img{max-width:210px;height:auto;display:block}
/* No dark, o traço verde da marca continua legível sobre o card claro; no painel
   escuro do login usamos a versão branca, por isso não há filtro aqui. */
