/* Paleta do logo Sol Engenharia de Resultados: azul royal #032787, laranja #FE640A / #FF981F, vermelho #FF0F1F e cinza #7E7E7E */
:root{
  --bg:#F3F6FC; --surface:#FFFFFF; --ink:#032787; --muted:#5B6785; --line:#DCE3F1;
  --steel:#032787; --accent:#FE640A; --accent-ink:#FFFFFF; --track:#E8EDF8;
  --ok:#2D7A4A; --warn:#D97706; --danger:#D90F1C; --head:#032787; --head-ink:#FFFFFF; --head-muted:#BCCBF2;
  --font:"Barlow",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --font-d:"Barlow Condensed","Arial Narrow",system-ui,sans-serif;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1820; --surface:#1A2332; --ink:#F5F1EC; --muted:#8FA3B8; --line:#2E3D4D;
    --steel:#7FC4FF; --track:#253545; --ok:#66B366; --warn:#FFA940; --danger:#FF6B6B; --head:#071E3A; --head-muted:#B0C4DE;
  }
}
:root[data-theme="dark"]{
  --bg:#0F1820; --surface:#1A2332; --ink:#F5F1EC; --muted:#8FA3B8; --line:#2E3D4D;
  --steel:#7FC4FF; --track:#253545; --ok:#66B366; --warn:#FFA940; --danger:#FF6B6B; --head:#071E3A; --head-muted:#B0C4DE;
}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{margin:0;font-family:var(--font-d);font-weight:600;letter-spacing:.01em;line-height:1.1}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px}

header.top{background:var(--head);color:var(--head-ink);border-bottom:5px solid var(--accent);box-shadow:0 2px 8px rgba(0,0,0,.12)}
.top-in{max-width:1100px;margin:0 auto;padding:18px 20px 0}
.brand{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:6px 0}
.brand .logo{height:72px;width:auto;flex:none;background:#fff;border-radius:10px;padding:5px 7px;box-shadow:0 1px 8px rgba(0,0,0,.28)}
.brand h1{font-size:32px;font-weight:700;letter-spacing:-.5px}
.brand span.sub{color:var(--head-muted);font-size:14px;font-weight:500}
nav.tabs{display:flex;gap:4px;margin-top:14px;overflow-x:auto;scrollbar-width:none}
nav.tabs::-webkit-scrollbar{display:none}
nav.tabs button{background:none;border:0;border-bottom:3px solid transparent;color:var(--head-muted);padding:11px 14px 10px;margin-bottom:-3px;cursor:pointer;font-weight:500;white-space:nowrap;transition:color .2s}
nav.tabs button:hover{color:#fff;border-bottom-color:rgba(254,100,10,.5)}
nav.tabs button[aria-current="page"]{color:#fff;border-bottom-color:var(--accent);font-weight:600}
nav.tabs button:focus-visible{outline-color:#fff}

main{max-width:1100px;margin:0 auto;padding:24px 20px 56px}
.banner{max-width:1100px;margin:16px auto 0;padding:0 20px}
.banner p,.callout{margin:0 0 16px;padding:10px 14px;border-left:4px solid var(--warn);background:var(--surface);font-size:15px}
.banner p{margin:0}
.callout{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-left-color:var(--accent)}

.bar{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:18px}
.bar .grow{flex:1 1 220px}
.bar .sp{flex:1}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field label{font-size:14px;color:var(--muted);font-weight:500}
input,select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:9px 10px;min-height:42px;width:100%}
textarea{resize:vertical;min-height:70px}
input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--steel)}

.btn{border:1px solid var(--line);background:var(--surface);border-radius:4px;padding:9px 16px;min-height:42px;cursor:pointer;font-weight:500}
.btn:hover{border-color:var(--steel)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn.primary:hover{filter:brightness(.95)}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}
.btn.ghost{background:none}
.btn.sm{min-height:34px;padding:5px 10px;font-size:14px}
.btn:disabled{opacity:.55;cursor:default}
.linkbtn{background:none;border:0;padding:0;cursor:pointer;color:var(--steel);text-decoration:underline;text-underline-offset:3px;font-weight:500;text-align:left}

.stats{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;border:1px solid var(--line);background:var(--surface);margin-bottom:28px}
.stat{padding:16px 18px;border-left:1px solid var(--line)}
.stat:first-child{border-left:0;border-top:4px solid var(--accent);margin-top:-1px}
.stat .k{font-size:14px;color:var(--muted)}
.stat .v{font-family:var(--font-d);font-weight:600;font-size:28px;font-variant-numeric:tabular-nums;margin-top:2px}
.stat:first-child .v{font-size:40px}
@media (max-width:760px){
  .stats{grid-template-columns:1fr 1fr}
  .stat:first-child{grid-column:1/-1;border-bottom:1px solid var(--line)}
  .stat:nth-child(2){border-left:0}
  .stat:nth-child(4){grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}
}

section.blk{margin-bottom:34px}
section.blk>h2{font-size:24px;margin-bottom:12px}
.panel{border:1px solid var(--line);background:var(--surface);padding:16px 18px;margin-bottom:24px;border-top:4px solid var(--accent)}
.panel h3{font-size:22px;margin-bottom:12px}
.newsvc{display:grid;grid-template-columns:2fr 1.2fr 1fr auto;gap:12px;align-items:end}
.newsvc .chk{grid-column:1/-1;display:flex;align-items:center;gap:10px}
.newsvc .chk label{color:var(--ink);font-size:16px}
@media (max-width:760px){.newsvc{grid-template-columns:1fr}}
.tw{overflow-x:auto;border:1px solid var(--line);background:var(--surface)}
table{border-collapse:collapse;width:100%;min-width:640px}
th,td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-weight:500;color:var(--muted);font-size:14px;white-space:nowrap}
tbody tr:last-child td{border-bottom:0}
tfoot td{border-top:2px solid var(--ink);border-bottom:0;font-weight:600}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.click{cursor:pointer}
tr.click:hover td{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.muted{color:var(--muted)}
.small{font-size:14px}
.tag{display:inline-block;margin-top:3px;font-size:13px;color:var(--steel);font-weight:500}

.gauge{position:relative;height:14px;background:var(--track);border-radius:2px;overflow:hidden;min-width:120px}
.gauge i{display:block;height:100%;background:var(--accent)}
.gauge::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 calc(25% - 1px),var(--surface) calc(25% - 1px) 25%)}
.gcell{display:flex;align-items:center;gap:10px;min-width:170px}
.gcell .gauge{flex:1}
.gcell b{font-weight:500;width:44px;text-align:right;font-variant-numeric:tabular-nums}

.chip,.st{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:4px 2px;font-weight:500;white-space:nowrap}
.chip{cursor:pointer}
.chip::before,.st::before{content:"";width:9px;height:9px;border-radius:50%;background:currentColor}
.chip.ok,.st.ok{color:var(--ok)} .chip.pend,.st.pend{color:var(--warn)} .chip.part,.st.part{color:var(--steel)}
.lanctbl th,.lanctbl td{padding-left:7px;padding-right:7px}
.lanctbl td .acts{flex-wrap:nowrap;justify-content:flex-end}
.tblbtn{display:inline-flex;align-items:center;gap:7px;min-height:0;padding:3px 12px 3px 9px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:13px;font-weight:500;line-height:1.5;cursor:pointer;transition:color .15s,border-color .15s,background .15s}
.tblbtn svg{flex:none;opacity:.85}
.tblbtn:hover,.tblbtn:focus-visible{color:var(--steel);border-color:var(--steel);background:color-mix(in srgb,var(--steel) 10%,transparent)}
tr.lsub td{background:color-mix(in srgb,var(--track) 40%,transparent);font-size:15px}
tr.lsub td.sub{padding-left:22px} .st.late,.chip.late{color:var(--danger)} .st.neu{color:var(--muted)}
.pagfiltro{margin-left:12px;display:inline-flex;align-items:center;gap:6px;vertical-align:middle}
/* pagamento com entrada: duas linhas (Entrada / Saldo) na coluna Pagamento */
.pg2{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;margin:2px 0}
.pg2l{font-size:12px;color:var(--muted);min-width:96px}
.pgbox{display:flex;flex-direction:column;gap:3px;min-width:220px}
.pgl{display:flex;align-items:center;flex-wrap:wrap;gap:2px 8px;border-left:3px solid var(--steel);padding:1px 0 1px 8px;line-height:1.25}
.pgl.pe{border-left-color:var(--warn)}
.pgtag{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);min-width:70px}
.pgval{font-weight:700;font-variant-numeric:tabular-nums}
.pgforma{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:0 7px}
.pgl .chip,.pgl .st{padding-top:1px;padding-bottom:1px;min-height:0}.trbar{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px 0 2px;margin-top:20px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.trres h3{margin:18px 0 6px;font-size:16px}
.trres table{width:100%}

/* histórico de alterações */
.histtbl td{vertical-align:top;font-size:14px}
.histtbl .hcli{text-transform:uppercase}
.hdet summary{cursor:pointer;list-style:none}
.hdet summary::-webkit-details-marker{display:none}
.hdet ul{margin:6px 0 0;padding-left:18px}
.hdet li{margin:2px 0}
/* nome do cliente sempre em maiúsculas nas tabelas (só na exibição; o cadastro guarda como foi digitado) */
td .linkbtn[data-act="abrir-cliente"],td .linkbtn[data-act="ir-devendo"],td .linkbtn[data-act="op-cli"],td .linkbtn[data-act="cliente-servicos"],
.sheet-grid td[data-f="cli"]{text-transform:uppercase}
/* aba Laboratório: os cartões do resumo também filtram a planilha */
.labstat{cursor:pointer;text-align:left;font:inherit;color:inherit;border:1px solid var(--line);width:100%}
.labstat:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.labstat.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.labstat.late .v{color:var(--danger)}
/* filtro dos serviços prestados do cliente */
.lfiltro{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin:0 0 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.lfiltro .field{margin:0;flex:0 1 auto;min-width:120px}
.lfiltro .field input{width:130px}
.lfiltro .field select{width:auto;min-width:130px;max-width:240px;text-overflow:ellipsis}
.lfiltro .linkbtn{margin-bottom:9px}
.lfiltro .lfcount{margin-left:auto;margin-bottom:9px}
/* aba Usuários: tabela de usuários e matriz de cargos em blocos separados */
.usrbloco{margin-top:22px}
.usrbloco h3{margin:0 0 12px}
.usrbloco + .usrbloco{margin-top:32px}
.usrbloco .permtbl td:first-child,.usrbloco .permtbl th:first-child{min-width:260px}
/* navegação lateral só com os nomes (sem a numeração 01, 02…) */
nav.tabs button::before{display:none!important}
.tblfiltro{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.tblfiltro input{flex:1 1 220px;max-width:340px;width:auto}
.tblfiltro select{width:auto;flex:0 1 auto}
.pagfiltro select{width:auto;min-width:0;display:inline-block;padding:4px 28px 4px 8px;min-height:0;height:auto;font-size:13px}

.empty{border:1px dashed var(--line);padding:28px 22px;background:var(--surface)}
.empty h3{font-size:22px;margin-bottom:6px}
.empty p{margin:0 0 14px;max-width:60ch;color:var(--muted)}

.detail-head{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start;margin:10px 0 18px}
.detail-head h2{font-size:34px;font-weight:700}
.info{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px 24px;margin-bottom:24px;padding:16px 18px;border:1px solid var(--line);background:var(--surface)}
.info dt{font-size:14px;color:var(--muted)} .info dd{margin:0;word-break:break-word}

.price-in{display:flex;align-items:center;gap:6px;max-width:170px}
.price-in span{color:var(--muted)}
.price-in input{text-align:right;font-variant-numeric:tabular-nums}
.cura-sel{min-width:104px}
.acts{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap}
.code{font-family:var(--font-d);font-weight:700;font-size:19px;letter-spacing:.02em;white-space:nowrap}

.overlay{position:fixed;inset:0;background:rgba(4,8,14,.72);display:flex;align-items:flex-start;justify-content:center;padding:max(16px,env(safe-area-inset-top,0px)) 16px max(16px,env(safe-area-inset-bottom,0px));overflow-y:auto;z-index:50}
.sheet{background:var(--surface);border-radius:8px;width:100%;max-width:580px;margin:auto;padding:22px;border-top:5px solid var(--accent)}.sheet.wide{padding:18px}
.sheet h2{font-size:26px;margin-bottom:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sheet .field{margin-bottom:12px}
@media (max-width:520px){.grid2{grid-template-columns:1fr}}
.err{color:var(--danger);min-height:1.2em;margin:4px 0 10px;font-size:15px}
.actions{display:flex;gap:10px;justify-content:flex-end}
.totalbox{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--line);padding-top:10px;margin-bottom:12px}
.totalbox strong{font-family:var(--font-d);font-size:28px;font-variant-numeric:tabular-nums}
.cpbox{border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--bg);padding:12px 14px;margin-bottom:12px}
.cpbox h3{font-size:19px;margin-bottom:8px}
.cpbox .field{margin-bottom:10px}

.sheet.wide{max-width:95vw}
.winhead{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:0 2px}
.winhead h2{margin:0}
.shbar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:12px;padding:0 2px}
.shbar .sp{flex:1}
.shbar .field{margin:0;min-width:210px}
.grid-wrap{overflow:auto;max-height:70vh;border:1px solid var(--ink);background:var(--surface)}
table.sheet-grid{min-width:980px;border-collapse:collapse}
.sheet-grid th{position:sticky;top:0;background:var(--track);color:var(--ink);font-weight:600;padding:9px 10px;border:1px solid var(--line);z-index:1;white-space:nowrap}
.sheet-grid td{padding:0;border:1px solid var(--line);vertical-align:middle}
.sheet-grid td input,.sheet-grid td select{border:0;border-radius:0;background:transparent;width:100%;min-height:42px;padding:6px 10px}
.sheet-grid td input:focus,.sheet-grid td select:focus{outline:2px solid var(--ink);outline-offset:-2px;background:var(--bg)}
.sheet-grid .num{text-align:right;font-variant-numeric:tabular-nums}
.sheet-grid td.g-ro{background:color-mix(in srgb,var(--track) 45%,transparent);padding:6px 10px}
.sheet-grid td.g-ro.num{white-space:nowrap}
.sheet-grid .rom{display:flex}
.sheet-grid .rom input{min-width:110px}
.sheet-grid .rom select{width:96px;flex:none;border-left:1px solid var(--line)}
.sheet-grid tr.done td:first-child{box-shadow:inset 4px 0 var(--ok)}
.sheet-grid tr.late td:first-child{box-shadow:inset 4px 0 var(--danger)}
.sheet-grid tr.late input[data-f="rom"]{color:var(--danger);font-weight:600}
.sheet-grid .x{background:none;border:0;cursor:pointer;font-size:20px;line-height:1;padding:8px 12px;color:var(--muted)}
.sheet-grid .x:hover{color:var(--danger)}
#toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--head);color:var(--head-ink);padding:10px 16px;border-radius:4px;border-left:4px solid var(--accent);opacity:0;pointer-events:none;transition:opacity .15s;z-index:60;max-width:90vw}
#toast.on{opacity:1}
@media (prefers-reduced-motion:reduce){#toast{transition:none}}

table.sheet-grid{min-width:0;table-layout:fixed}
.sheet-grid th{overflow:hidden;text-overflow:ellipsis}
.sheet-grid th.n{text-align:right;padding-right:14px}
.rz{position:absolute;top:0;right:0;width:9px;height:100%;cursor:col-resize;touch-action:none}
.rz:hover,.rz:active{background:var(--accent)}
.sheet-grid td input,.sheet-grid td select{min-height:var(--rh,42px)}
.sheet-grid td.g-ro{height:var(--rh,42px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-grid .rom input{min-width:0;flex:1}
.sheet-grid .tp{display:flex}
.sheet-grid .tp select{flex:1;min-width:0}
.sheet-grid .tp select.esp{flex:none;width:84px;border-left:1px solid var(--line)}
.nw{white-space:nowrap}
.nw .linkbtn{white-space:nowrap;text-align:left}
.nw .obs{max-width:36ch;overflow:hidden;text-overflow:ellipsis}
.tw td .btn.sm,.tw td .chip{white-space:nowrap}
.btn.del{border-color:var(--danger);color:var(--danger)}
.sheet-grid th.selc,.sheet-grid td.selc{text-align:center;padding:0}
.sheet-grid th.selc input,.sheet-grid td.selc input{width:18px;height:18px;min-height:0;padding:0;margin:0;vertical-align:middle;cursor:pointer}
.sheet-grid tr.picked td{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.subrow td{padding:0!important;border-top:0}
.subbox{padding:10px 14px 14px 18px;border-left:4px solid var(--accent);background:color-mix(in srgb,var(--track) 35%,transparent)}
.subtbl{width:100%;border-collapse:collapse;max-width:760px}
.subtbl th{text-align:left;font-size:13px;color:var(--muted);font-weight:600;padding:6px 10px;border-bottom:1px solid var(--line)}
.subtbl td{padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.rf{display:flex;gap:12px;align-items:center;padding:0 10px;min-height:var(--rh,42px);overflow:hidden;white-space:nowrap}
.rf .rfname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:left}
.rf .rfx{flex:none;font-size:14px;color:var(--muted)}
.tw td>.tag{display:block;margin-top:3px}
.ensrow{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:4px;padding:12px 14px 8px;margin-bottom:12px;background:var(--surface)}
.ensrow .e-del{font-size:14px;color:var(--muted);margin:2px 0 4px}
.fixo{padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:color-mix(in srgb,var(--track) 45%,transparent);font-weight:600}
.enstbl{width:100%;border-collapse:collapse}
.enstbl th{text-align:left;font-size:13px;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.enstbl th.n{text-align:right}
.enstbl td{padding:6px 8px;border-bottom:1px solid var(--line)}
.enstbl input,.enstbl select{width:100%}
.enstbl input.num{text-align:right}
.enstbl td:last-child{width:44px;text-align:center}
.enstbl .x{background:none;border:0;cursor:pointer;font-size:20px;line-height:1;padding:6px 10px;color:var(--muted)}
.enstbl .x:hover{color:var(--danger)}
.ensform{display:grid;grid-template-columns:2fr 1.4fr 1fr;gap:10px;align-items:start}
.pbadge{--pc:var(--warn);display:inline-flex;align-items:center;gap:7px;padding:3px 11px 3px 4px;margin:2px 6px 2px 0;border:1px solid var(--pc);border-radius:999px;color:var(--pc);background:color-mix(in srgb,var(--pc) 16%,transparent);font-weight:700;font-size:13px;white-space:nowrap}
.pbadge.late{--pc:var(--danger)}
.pbadge .pi{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--pc);color:var(--surface);font-size:13px;font-weight:800;line-height:1}
@media(prefers-reduced-motion:no-preference){.pbadge.late .pi{animation:pdpulse 1.6s ease-out infinite}}
@keyframes pdpulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--danger) 60%,transparent)}70%,100%{box-shadow:0 0 0 8px transparent}}
.tw tr.pd-late td:first-child{box-shadow:inset 5px 0 var(--danger)}
.tw tr.pd-warn td:first-child{box-shadow:inset 5px 0 var(--warn)}
.sheet-grid td .btn.sm{min-height:24px;padding:1px 10px;font-size:13px}
.sheet-grid .x{padding:0 12px;font-size:18px}
.sheet-grid td.selc{padding:0}
.sheet-grid td input,.sheet-grid td select{padding:2px 10px;line-height:1.3}
.sheet-grid td.g-ro{padding:2px 10px;line-height:1.3}
.sheet-grid th{padding:6px 10px}
.rptbl td:last-child{width:110px;text-align:left}
.rptbl input{min-width:100px}
.sheet-grid th{white-space:normal;line-height:1.15;vertical-align:bottom}
.pbadge.info{--pc:var(--steel)} .pbadge.ok{--pc:var(--ok)}
select[data-pz]{min-width:175px} select[data-pb]{min-width:230px}
.login{max-width:420px;margin:40px auto}
.ajuda{margin:0 0 14px}
.ajuda>summary{display:inline-flex;align-items:center;gap:8px;list-style:none;cursor:pointer;padding:4px 14px 4px 5px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:14px;font-weight:500;user-select:none;transition:color .15s,border-color .15s,background .15s}
.ajuda>summary::-webkit-details-marker{display:none}
.ajuda>summary:hover,.ajuda[open]>summary,.ajuda>summary:focus-visible{color:var(--steel);border-color:var(--steel)}
.ajuda[open]>summary{background:color-mix(in srgb,var(--steel) 10%,transparent)}
.ajuda-i,.dica-i{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:50%;font-weight:800;line-height:1}
.ajuda-i{width:20px;height:20px;background:var(--steel);color:var(--bg);font-size:13px}
.ajuda-c{margin-top:10px;padding:14px 18px 12px;max-width:80ch;border:1px solid var(--line);border-left:4px solid var(--steel);border-radius:0 8px 8px 0;background:color-mix(in srgb,var(--steel) 7%,var(--surface));font-size:15px;line-height:1.55}
.ajuda-c p{margin:0 0 8px}
.ajuda-l{margin:0 0 10px;padding-left:22px}
.ajuda-l li{margin:5px 0}
.dica{display:flex;align-items:flex-start;gap:9px;margin:0 0 12px;max-width:80ch;color:var(--muted);font-size:14.5px;line-height:1.5}
.dica-i{width:18px;height:18px;margin-top:2px;border:1px solid var(--steel);color:var(--steel);font-size:12px}
.userbar{margin-left:auto;display:flex;align-items:center;gap:12px}
.userbar .who{display:flex;flex-direction:column;text-align:right;line-height:1.25;color:var(--head-ink)}
.userbar .who small{color:var(--head-muted);font-size:13px}
.permbox{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:8px 20px;border:1px solid var(--line);padding:12px 14px}
.permbox label{display:flex;gap:8px;align-items:flex-start;font-size:15px;color:var(--ink);font-weight:400}
.permbox input{margin-top:3px}
.permtbl th.c,.permtbl td.c{text-align:center}
.chip.wrap,.st.wrap{white-space:normal;text-align:left;line-height:1.25}
tr.devido>td{background:color-mix(in srgb,var(--danger) 17%,transparent)!important}
tr.devido>td:first-child{box-shadow:inset 5px 0 var(--danger)}
@media(prefers-reduced-motion:no-preference){tr.devido>td{animation:devpulse2 1.4s ease-out 3}}
@keyframes devpulse2{0%{background:color-mix(in srgb,var(--danger) 45%,transparent)}100%{background:color-mix(in srgb,var(--danger) 17%,transparent)}}
.concbtn{display:block;width:100%;min-height:0;padding:3px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:13px;font-weight:600;line-height:1.5;white-space:nowrap;cursor:pointer;transition:color .15s,border-color .15s,background .15s}
.concbtn:hover,.concbtn:focus-visible{color:var(--ok);border-color:var(--ok)}
.concbtn.on{color:var(--ok);border-color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent)}
.sheet-grid td.concell{padding:0 6px}
.conclbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.optgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;max-width:780px}
.optactions{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 24px}
.filetbl{width:100%;border-collapse:collapse}
.filetbl th{text-align:left;font-size:13px;color:var(--muted);font-weight:600;padding:7px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.filetbl th.n,.filetbl td.n{text-align:right}
.filetbl td{padding:6px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.filetbl tr:last-child td{border-bottom:0}
.filetbl .linkbtn{text-align:left;word-break:break-all}
.ftag{display:inline-block;font-size:12px;font-weight:700;border:1px solid currentColor;border-radius:999px;padding:1px 10px}
.ftag.pdf{color:var(--danger)} .ftag.word{color:var(--steel)} .ftag.excel{color:var(--ok)}
.shform{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.shform .field{margin:0;width:190px}
.shform .field:nth-child(3){width:240px}
.shform>.btn{height:44px}
@media(max-width:760px){.shform .field,.shform .field:nth-child(3){width:100%}}
.sheet-grid td.obscell{padding:0}
.sheet-grid .obsbtn{display:block;width:100%;min-height:var(--rh,32px);padding:0 10px;border:0;background:none;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;color:inherit}
.sheet-grid .obsbtn:hover,.sheet-grid .obsbtn:focus-visible{background:color-mix(in srgb,var(--track) 55%,transparent)}
.sheet-grid .obstx{display:block;padding:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.caformbox{border:1px solid var(--line);background:var(--surface);padding:14px 16px;margin:0 0 6px}
.caform{display:grid;grid-template-columns:1.3fr 1.1fr 1.6fr .8fr;gap:10px;align-items:start}
@media(max-width:760px){.caform{grid-template-columns:1fr}}
@media(max-width:640px){.ensform{grid-template-columns:1fr}}
.subtbl th.n,.subtbl td.n{text-align:right}

/* ============ REMODELAGEM VISUAL SOL (referência: sol-artifact-remodelado.html) ============ */
/* ---------- identidade visual SOL: painel técnico refinado ---------- */
:root[data-theme="dark"]{
  --bg:#0b1424; --surface:#111e31; --ink:#edf3ff; --muted:#9aaac2; --line:#293b53;
  --steel:#8cb9ff; --accent:#ff7417; --accent-ink:#fff; --track:#1c2b41;
  --ok:#70c89a; --warn:#ffc066; --danger:#ff777e; --head:#09162a; --head-muted:#a9bbd6;
}
body{
  background:radial-gradient(ellipse at 82% -16%,rgba(3,39,135,.24),transparent 37%),var(--bg);
  color:var(--ink);font-size:15px;line-height:1.55;letter-spacing:.005em
}
:focus-visible{outline:2px solid #ff9b4d;outline-offset:3px}
header.top{
  position:sticky;top:0;z-index:20;background:rgba(8,21,41,.96);backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(144,174,218,.18);box-shadow:0 12px 34px rgba(0,0,0,.2)
}
.top-in{max-width:1380px;padding:14px 32px 0}
.brand{gap:16px;padding:3px 0 12px}
.brand .logo{height:58px;border-radius:12px;padding:4px 6px;box-shadow:0 3px 16px rgba(0,0,0,.2)}
.brand h1{font-family:var(--font);font-size:21px;font-weight:700;letter-spacing:-.03em}
.brand span.sub{display:block;color:#a9bbd6;font-size:13px;letter-spacing:.025em}
nav.tabs{gap:5px;margin-top:0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#3d5271 transparent}
nav.tabs button{position:relative;border:0;border-radius:9px 9px 0 0;margin:0;padding:11px 15px 13px;color:#a9bbd6;font-size:14px;font-weight:600;transition:background .18s,color .18s}
nav.tabs button:hover{color:#fff;background:rgba(255,255,255,.055);border-bottom-color:transparent}
nav.tabs button[aria-current="page"]{color:#fff;background:linear-gradient(180deg,rgba(255,116,23,.14),rgba(255,116,23,.035));border-bottom:2px solid var(--accent)}
main{max-width:1380px;padding:32px 32px 64px}
.banner{max-width:1380px;margin:16px auto 0;padding:0 32px}
.banner p,.callout{border:1px solid rgba(255,192,102,.25);border-left:3px solid var(--warn);border-radius:10px;background:rgba(255,192,102,.07);padding:12px 16px;color:var(--ink)}
section.blk{margin-bottom:38px}
section.blk>h2{font-family:var(--font);font-size:25px;font-weight:700;letter-spacing:-.025em;margin-bottom:14px}
.panel{border:1px solid var(--line);border-top:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,rgba(19,34,56,.98),rgba(16,29,48,.98));padding:22px;margin:0 0 20px;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.panel h3{font-family:var(--font);font-size:18px;font-weight:650;margin-bottom:14px}
.stats{gap:12px;border:0;background:transparent;margin-bottom:30px}
.stat,.stat:first-child{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#14243b,#101d30);padding:18px 20px;margin:0;box-shadow:0 8px 20px rgba(0,0,0,.12)}
.stat:first-child{border-top:1px solid var(--line)}
.stat .k{font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.stat .v,.stat:first-child .v{font-size:32px;font-weight:700;letter-spacing:-.025em;margin-top:8px}
.stat:first-child .v{font-size:36px;color:#ffad6a}
.stat::after{content:"";position:absolute;right:-22px;bottom:-50px;width:112px;height:112px;border:1px solid rgba(255,116,23,.12);border-radius:50%;box-shadow:0 0 0 14px rgba(255,116,23,.035),0 0 0 28px rgba(255,116,23,.025);pointer-events:none}
input,select,textarea{border:1px solid #344760;border-radius:9px;background:#0d192b;padding:10px 12px;min-height:42px;transition:border-color .16s,box-shadow .16s,background .16s}
input:hover,select:hover,textarea:hover{border-color:#536b8a}
input:focus,select:focus,textarea:focus{outline:0;border-color:#ff8a3d;box-shadow:0 0 0 3px rgba(255,116,23,.13);background:#101f34}
.field label{font-size:13px;font-weight:600;color:#b4c2d6}
.btn{border:1px solid #354964;border-radius:9px;background:#17263b;padding:9px 15px;min-height:40px;font-weight:600;transition:transform .16s,border-color .16s,background .16s,box-shadow .16s}
.btn:hover{border-color:#8299b7;background:#1b2e48;transform:translateY(-1px)}
.btn.primary{background:linear-gradient(135deg,#ff7b20,#f05d0a);border-color:#ff7b20;color:#fff;box-shadow:0 5px 16px rgba(240,93,10,.2)}
.btn.primary:hover{filter:brightness(1.07);box-shadow:0 7px 20px rgba(240,93,10,.27)}
.btn.danger{background:#a72b35;border-color:#c6444c;color:#fff}
.btn.ghost{background:transparent}
.btn.sm{border-radius:8px}
.linkbtn{color:#a9c8ff;text-underline-offset:4px}
.tw{border:1px solid var(--line);border-radius:12px;background:#101d30;box-shadow:0 6px 18px rgba(0,0,0,.1)}
table{min-width:640px}
th,td{padding:12px 15px;border-bottom:1px solid rgba(137,160,193,.13)}
th{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#9caec8}
tbody tr{transition:background .15s}
tbody tr:hover td{background:rgba(140,185,255,.035)}
tr.click:hover td{background:rgba(255,116,23,.07)}
tfoot td{border-top:1px solid #425771}
.chip,.st{font-size:13px;font-weight:650}
.chip::before,.st::before{width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 13%,transparent)}
.gauge{height:9px;border-radius:999px}
.gauge i{border-radius:999px;background:linear-gradient(90deg,#ff6414,#ffad49)}
.empty{border:1px dashed #3a4e69;border-radius:12px;background:rgba(16,29,48,.65);padding:30px}
.empty h3{font-family:var(--font);font-size:18px}
.detail-head h2{font-family:var(--font);font-size:30px;letter-spacing:-.03em}
.info{border:1px solid var(--line);border-radius:12px;background:#101d30;padding:18px 20px}
.overlay{background:rgba(3,9,18,.78);backdrop-filter:blur(8px)}
.sheet{border:1px solid #344761;border-top:3px solid var(--accent);border-radius:16px;background:#111f33;padding:24px;box-shadow:0 24px 70px rgba(0,0,0,.48)}
.sheet h2{font-family:var(--font);font-size:22px;font-weight:700;letter-spacing:-.02em}
.sheet.wide{padding:20px}
.grid-wrap{border-color:var(--line);border-radius:10px;background:#0d192b}
.sheet-grid th{background:#1a2a42;color:#d9e5f6}
.sheet-grid td{border-color:#2b3b52}
.sheet-grid td input,.sheet-grid td select{background:transparent}
.sheet-grid td input:focus,.sheet-grid td select:focus{background:#172941}
#toast{border:1px solid #354964;border-left:3px solid var(--accent);border-radius:10px;background:#101d30;box-shadow:0 12px 32px rgba(0,0,0,.35)}
.login{max-width:460px;margin:36px auto;padding:28px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#14243b,#101d30);box-shadow:0 20px 52px rgba(0,0,0,.22)}
.login h2,.login h3{font-family:var(--font);font-weight:700}
.ajuda>summary{border-radius:999px;background:rgba(140,185,255,.045)}
.ajuda-c{border:1px solid #2d4360;border-left:3px solid var(--steel);border-radius:10px;background:rgba(140,185,255,.06)}
.caformbox,.ensrow,.cpbox{border:1px solid var(--line);border-radius:11px;background:#101d30}
.cpbox{border-left:3px solid var(--accent)}
.tblbtn{border-radius:999px}
.userbar .who{font-size:13px}
.userbar .btn{min-height:34px}
@media(max-width:760px){
  .top-in{padding:12px 16px 0}.brand{gap:12px}.brand .logo{height:48px}.brand h1{font-size:18px}
  main{padding:24px 16px 48px}.banner{padding:0 16px}.stats{gap:9px}.stat,.stat:first-child{padding:15px}.stat .v,.stat:first-child .v{font-size:27px}.userbar{width:100%;margin:6px 0 0;justify-content:space-between}.userbar .who{text-align:left}
  nav.tabs button{padding:10px 12px 12px}.panel{padding:17px}.sheet{padding:18px}.sheet.wide{padding:14px}.grid-wrap{max-height:62vh}
}
@media(max-width:480px){
  .brand{align-items:flex-start}.brand .logo{height:42px}.brand h1{font-size:16px}.brand span.sub{font-size:11px}
  .stats{grid-template-columns:1fr 1fr}.stat:first-child{grid-column:1/-1}.stat:nth-child(2){border-left:1px solid var(--line)}.stat:nth-child(4){grid-column:1/-1;border-left:1px solid var(--line);border-top:1px solid var(--line)}
  .login{margin:24px auto;padding:21px}.actions{flex-wrap:wrap}.actions .btn{flex:1}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
/* Navegação lateral: estrutura de trabalho para telas amplas. */
@media(min-width:761px){
  body{min-height:100vh;overflow-x:hidden}
  header.top{position:fixed;inset:0 auto 0 0;width:258px;height:100dvh;border-right:1px solid rgba(153,178,213,.16);border-bottom:0;box-shadow:12px 0 40px rgba(1,8,20,.2)}
  .top-in{display:flex;flex-direction:column;align-items:stretch;gap:0;width:100%;height:100%;max-width:none;margin:0;padding:26px 16px 18px}
  .brand{display:contents}
  .brand .logo{order:1;width:132px;height:132px;margin:0 auto 17px;border-radius:18px;padding:8px}
  .brand h1{order:2;width:100%;text-align:center;font-size:16px;line-height:1.3;letter-spacing:.035em;text-transform:uppercase}
  .brand span.sub{order:3;width:100%;margin:5px auto 31px;text-align:center;font-size:11px;line-height:1.45;color:#93a9c8}
  nav.tabs{order:4;display:flex;flex-direction:column;align-items:stretch;gap:5px;width:100%;margin:0;padding:17px 0 0;border-top:1px solid rgba(153,178,213,.15);overflow-y:auto;overflow-x:hidden;counter-reset:navitem}
  nav.tabs::before{content:"NAVEGAÇÃO";display:block;padding:0 13px 8px;color:#778ca9;font-size:10px;font-weight:700;letter-spacing:.15em}
  nav.tabs button{display:flex;align-items:center;gap:12px;width:100%;min-height:45px;margin:0;padding:0 13px;border:1px solid transparent;border-radius:10px;color:#a9bbd6;text-align:left;font-size:13px;font-weight:600;letter-spacing:.01em;counter-increment:navitem}
  nav.tabs button::before{display:grid;place-items:center;flex:none;width:25px;height:25px;border:1px solid rgba(169,187,214,.22);border-radius:8px;color:#8fa4c2;font-size:9px;font-weight:700;letter-spacing:.04em;content:counter(navitem,decimal-leading-zero)}
  nav.tabs button:hover{transform:translateX(2px);border-color:rgba(169,187,214,.1);background:rgba(255,255,255,.055);color:#fff}
  nav.tabs button[aria-current="page"]{border-color:rgba(255,116,23,.2);border-bottom:1px solid rgba(255,116,23,.2);background:linear-gradient(105deg,rgba(255,116,23,.17),rgba(255,116,23,.035));color:#fff}
  nav.tabs button[aria-current="page"]::before{border-color:rgba(255,139,67,.6);background:rgba(255,116,23,.18);color:#ffad6a}
  .userbar{order:5;width:100%;margin-top:auto;padding:13px 2px 0;border-top:1px solid rgba(153,178,213,.15)}
  .userbar .who{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0;color:#e9f0fb}
  .userbar .who strong,.userbar .who small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .userbar .who small{color:#8fa4c2;font-size:11px}
  .userbar .btn{flex:none;padding:5px 9px}
  #app{min-width:0}
  main{width:calc(100% - 258px);max-width:1480px;min-height:100vh;margin:0 0 0 258px;padding:40px clamp(24px,4vw,64px) 72px}
  .banner{width:calc(100% - 258px);max-width:1480px;margin:0 0 0 258px;padding:26px clamp(24px,4vw,64px) 0}
  .stats{gap:14px}
  .stat{min-height:116px;display:flex;flex-direction:column;justify-content:center}
  section.blk>h2{margin-bottom:18px}
}
/* A autenticação continua numa moldura simples, sem exibir navegação vazia. */
body:has(.login) header.top{position:sticky;inset:auto;width:auto;height:auto;border-right:0;border-bottom:1px solid rgba(153,178,213,.16)}
body:has(.login) .top-in{display:block;width:auto;height:auto;max-width:1100px;margin:0 auto;padding:14px 24px}
body:has(.login) .brand{display:flex;flex-direction:row;align-items:center;gap:14px;padding:0}
body:has(.login) .brand .logo{order:0;width:auto;height:68px;margin:0;border-radius:12px;padding:5px 7px}
body:has(.login) .brand h1{order:0;width:auto;text-align:left;font-size:18px;text-transform:none}
body:has(.login) .brand span.sub{order:0;width:auto;margin:0;text-align:left;font-size:12px}
body:has(.login) nav.tabs{display:none}
body:has(.login) main{width:auto;max-width:1100px;min-height:calc(100vh - 77px);margin:0 auto;padding:clamp(28px,7vh,76px) 24px}
body:has(.login) .login{width:min(100%,460px);margin:0 auto}
body:has(.login) .banner{display:none}
@media(max-width:760px){
  header.top{position:sticky;inset:auto;width:auto;height:auto;border-right:0;border-bottom:1px solid rgba(153,178,213,.16)}
  .top-in{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:0;width:auto;height:auto;max-width:none;margin:0;padding:12px 16px 0}
  .brand{display:flex;flex:1 1 100%;flex-direction:row;align-items:center;gap:12px;padding:0 0 10px}
  .brand .logo{order:0;width:auto;height:60px;margin:0;border-radius:10px}
  .brand h1{order:0;width:auto;text-align:left;font-size:17px;text-transform:none}
  .brand span.sub{order:0;width:auto;margin:2px 0 0;text-align:left;font-size:11px}
  nav.tabs{order:0;display:flex;flex-direction:row;align-items:center;gap:5px;width:100%;margin:0;padding:5px 0 0;border-top:1px solid rgba(153,178,213,.12);overflow-x:auto;overflow-y:hidden}
  nav.tabs::before,nav.tabs button::before{display:none}
  nav.tabs button{display:block;flex:none;width:auto;min-height:38px;margin:0;padding:8px 12px;border:0;border-bottom:2px solid transparent;border-radius:7px 7px 0 0;font-size:12px}
  nav.tabs button[aria-current="page"]{border-color:var(--accent);border-bottom:2px solid var(--accent)}
  .userbar{order:0;flex:1 1 100%;width:100%;margin:0 0 9px;padding:6px 0 0;border-top:0}
  .userbar .who{flex-direction:row;align-items:center;gap:7px}
  main{width:auto;max-width:none;min-height:0;margin:0;padding:24px 16px 48px}
  .banner{width:auto;max-width:none;margin:12px 0 0;padding:0 16px}
  body:has(.login) .top-in{display:block;padding:12px 16px}
  body:has(.login) .brand{display:flex;flex:initial;flex-direction:row;gap:12px;padding:0}
  body:has(.login) main{width:auto;min-height:calc(100vh - 70px);margin:0;padding:30px 16px}
}
@media(prefers-reduced-motion:reduce){nav.tabs button:hover{transform:none}}

/* ---------- integração da remodelagem com o que o sistema já tem ---------- */
nav.tabs button[hidden]{display:none!important}   /* abas sem permissão continuam escondidas */
.brand .logo{object-fit:contain;background:#fff}   /* o logo é uma imagem embutida no arquivo (a página não carrega imagens de outros endereços) */
.sheet-grid th{text-transform:none;letter-spacing:.02em;font-size:12px}   /* mantém unidades como MPa e Tf escritas corretamente */
.field .permbox label{font-size:15px;font-weight:400;color:var(--ink)}
.permbox{border-radius:10px;background:#0d192b}
.ajuda-c{max-width:80ch}
.pbadge,.concbtn,.tblbtn{letter-spacing:0}

/* ---------- aba Laboratório: painel ---------- */
.labhead{margin:0 0 18px}
.labhead h2{font-size:28px;margin:0}
.labhead p{margin:4px 0 0;color:var(--muted);font-size:15px;max-width:80ch}
.labkpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.labkpis .kpi{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px 14px;overflow:hidden;box-shadow:0 1px 2px rgba(3,39,135,.06);transition:transform .12s,box-shadow .12s,border-color .12s}
.labkpis .kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--steel)}
.labkpis .kpi.ambar::before{background:var(--warn)} .labkpis .kpi.verde::before{background:var(--ok)} .labkpis .kpi.verm::before{background:var(--danger)}
.labkpis .kpi:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(3,39,135,.12)}
.labkpis .kpi.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}
.labkpis .kpi .k{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.labkpis .kpi .v{font-family:var(--font-d);font-weight:600;font-size:40px;line-height:1.1;margin:4px 0 2px;font-variant-numeric:tabular-nums}
.labkpis .kpi.late .v,.labkpis .kpi.verm .v{color:var(--danger)}
.labkpis .kpi .sub{font-size:13px;color:var(--muted)}
.kbar{height:6px;border-radius:99px;background:var(--track);margin-top:8px;overflow:hidden}
.kbar i{display:block;height:100%;background:var(--ok);border-radius:99px}
.labpanel{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 3px rgba(3,39,135,.06);overflow:hidden}
.labpanel>.labtools,.labpanel>.tblfiltro{margin:0;padding:12px 16px 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.labpanel>.tblfiltro{padding-bottom:12px;border-bottom:1px solid var(--line)}
.labtools select{width:auto;min-width:220px}
.labtitle{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px 8px}
.labtitle h3{margin:0;font-size:17px}
.labcount{display:inline-block;margin-left:6px;padding:1px 10px;border-radius:99px;background:var(--track);font-size:13px;font-weight:600;vertical-align:middle}
.lableg{margin-left:auto;display:flex;gap:14px;font-size:12px;color:var(--muted)}
.lableg span{display:inline-flex;align-items:center;gap:5px}
.lg{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--line)}
.lg.ok{background:var(--ok)} .lg.late{background:var(--danger)}
.labpanel .lab-grid{border:0;border-top:1px solid var(--line);border-radius:0;max-height:68vh}
.labpanel .sheet-grid th{background:var(--head);color:var(--head-ink);border-color:rgba(255,255,255,.15);text-transform:uppercase;font-size:11.5px;letter-spacing:.05em}
.labpanel .sheet-grid td{border-color:var(--line)}
.labpanel .sheet-grid tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--track) 35%,transparent)}
.labpanel .sheet-grid tbody tr:hover td{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.labpanel .empty{margin:16px}
@media (max-width:900px){.labkpis{grid-template-columns:1fr 1fr}.lableg{margin-left:0}}
.labpanel>.labtools{align-items:flex-end}
.labtools .field{min-width:150px;flex:0 1 auto}
.labtools .field label{font-size:12px;font-weight:600;color:var(--muted)}
.labtools .field input,.labtools .field select{min-height:38px;padding:6px 10px}
.labtools .field input[data-date]{width:150px}
.labtitle .btn.del{margin-left:6px}
.exclpanel{border:1px solid var(--warn);border-left:5px solid var(--warn);border-radius:8px;background:color-mix(in srgb,var(--warn) 7%,var(--surface));padding:12px 16px 6px;margin:0 0 16px}
.exclhead{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;margin-bottom:6px}
.exclpanel .up{text-transform:uppercase}
.exclpanel .btn.del{background:var(--danger);color:#fff;border-color:var(--danger)}

/* ocultar tabelas */
.tgbar{display:flex;align-items:center;gap:10px;position:sticky;left:0;z-index:2;padding:4px 6px;background:var(--surface)}
.tgbtn{background:none;border:1px solid var(--line);border-radius:99px;padding:1px 12px;font-size:12px;color:var(--muted);cursor:pointer}
.tgbtn:hover{color:var(--ink);border-color:var(--steel)}
.oculta>table{display:none}
.oculta{max-height:none!important;overflow:visible!important}
@media print{.tgbar{display:none}.oculta>table{display:table}}

/* faixa "só os corpos de prova deste serviço" no Laboratório */
.labserv{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;margin:0 0 14px;padding:10px 14px;border:1px solid var(--steel);border-left:5px solid var(--steel);border-radius:8px;background:color-mix(in srgb,var(--steel) 7%,var(--surface))}
.labserv .up{text-transform:uppercase}

/* tabelas: espaço nas pontas, para a barra de rolagem (que aparece ao passar o mouse) e os botões não taparem o conteúdo */
.tw,.grid-wrap{scrollbar-gutter:stable both-edges;padding-bottom:14px}
.tw>table,.grid-wrap>table{margin-left:4px}
.tw table th:first-child,.tw table td:first-child{padding-left:14px}
.tw table th:last-child,.tw table td:last-child{padding-right:22px}
.sheet-grid th:last-child,.sheet-grid td:last-child{padding-right:18px}
.acts{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.lanctbl td:last-child{min-width:150px}
.tgbar{position:static}
tbody tr:hover>td{background:color-mix(in srgb,var(--accent) 6%,transparent)}

/* impressão / PDF: ficha em preto e branco, em formato de tabela */
.prhead{display:none}
@page{size:A4;margin:14mm}
@media print{
  body>*:not(.prwin):not(.orcwin):not(.etqwin){display:none!important}
  html,body{background:#fff!important}
  .prwin{position:static!important;display:block!important;inset:auto!important;background:#fff!important;padding:0!important;overflow:visible!important}
  .prwin .sheet{position:static!important;box-shadow:none!important;border:0!important;border-radius:0!important;max-width:none!important;width:100%!important;max-height:none!important;overflow:visible!important;padding:0!important;margin:0!important;background:#fff!important}
  .prwin .winhead,.prwin .trbar,.prwin .tgbar{display:none!important}
  .prwin .winbody{overflow:visible!important;max-height:none!important;padding:0!important}
  .prwin,.prwin *{color:#000!important;background:transparent!important;box-shadow:none!important;text-shadow:none!important;font-family:Arial,Helvetica,sans-serif!important;border-radius:0!important}
  .prwin .prhead{display:block;border-bottom:2px solid #000;padding-bottom:6px;margin-bottom:10px}
  .prwin .prlab{font-size:10pt}
  .prwin .prhead h1{font-size:16pt;margin:6px 0 2px;text-transform:uppercase;letter-spacing:.04em}
  .prwin .prem{font-size:9pt}
  .prwin h3{font-size:12pt;margin:12px 0 4px;border-bottom:1px solid #000}
  .prwin section.trres-t h3:first-child{font-size:13pt;border-bottom:2px solid #000}
  .prwin .tw{overflow:visible!important;padding:0!important}
  .prwin table{width:100%;border-collapse:collapse;font-size:10pt;margin:0!important}
  .prwin th,.prwin td{border:1px solid #000!important;padding:3px 6px!important;text-align:left}
  .prwin th{background:#e6e6e6!important;font-weight:700}
  .prwin .n{text-align:right}
  .prwin .info{display:grid!important;grid-template-columns:repeat(3,1fr);border:1px solid #000;margin:6px 0}
  .prwin .info>div{border:1px solid #000;padding:3px 6px;margin:0}
  .prwin .info dt{font-size:8pt;text-transform:uppercase;font-weight:700}
  .prwin .info dd{margin:0}
  .prwin .st,.prwin .chip{border:0!important;padding:0!important}
  .prwin .oculta>table{display:table!important}
  .prwin tr{page-break-inside:avoid}
  .prwin section.trres-t{page-break-inside:auto}
}

/* janela do traço: lista de traços compacta, botões lado a lado */
.trhub .enstbl th,.trhub .enstbl td{padding:5px 10px;line-height:1.25;vertical-align:middle}
.trhub .enstbl td:first-child{min-width:150px}
.trhub .acts{flex-wrap:nowrap;gap:4px;justify-content:flex-end}
.trhub .acts .btn.sm{min-height:26px;padding:2px 10px;font-size:13px;white-space:nowrap}
.trhub .enstbl td:last-child{white-space:nowrap;width:1%}
.trhub .bar .btn{min-height:34px;padding:4px 14px}

/* botão de ocultar tabela: pequeno, discreto, com um toque de cor */
.tgbar{padding:2px 4px 3px;gap:8px}
.tgbtn{display:inline-flex;align-items:center;gap:5px;min-height:0;padding:0 9px;font-size:11px;line-height:18px;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:99px;background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent);font-weight:600;cursor:pointer}
.tgbtn::before{content:"▾";font-size:9px}
.oculta .tgbtn::before{content:"▸"}
.tgbtn:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.tgn{font-size:11px}

/* orçamento: tabela de itens alinhada */
.orctbl{width:100%;table-layout:fixed;border-collapse:collapse}
.orctbl th,.orctbl td{padding:5px 8px;vertical-align:middle}
.orctbl th.n,.orctbl td.n{text-align:right}
.orctbl td input{width:100%;min-height:36px;padding:4px 8px;box-sizing:border-box}
.orctbl td input.num{text-align:right;font-variant-numeric:tabular-nums}
.orctbl td input.preco{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));font-weight:600}
.orctbl td.n{padding-right:12px;font-variant-numeric:tabular-nums;font-weight:600}
.orctbl td:last-child{text-align:center;padding:0}
.orctbl td .x{background:none;border:0;font-size:20px;cursor:pointer;color:var(--muted)}
.orctbl td .x:hover{color:var(--danger)}
.orctbl{min-width:700px}
#orc-root .acts{flex-wrap:nowrap}
#orc-root .acts .btn.sm{white-space:nowrap}

/* orçamentos: totais do formulário */
.orctot{display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:flex-end;align-items:flex-end;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.orctot>div{display:flex;flex-direction:column;gap:2px;align-items:flex-end}
.orctot .orcgrande strong{font-size:26px;font-family:var(--font-d)}

/* documento do orçamento (tela e PDF): paleta do site, logo e dados da empresa */
.orcdoc,.orcdoc *{-webkit-print-color-adjust:exact;print-color-adjust:exact;box-sizing:border-box}
.orcdoc{--od-azul:#032787;--od-laranja:#FE640A;--od-amarelo:#FF981F;--od-claro:#EEF2FB;background:#fff;color:#14203f;max-width:820px;margin:0 auto;border:1px solid #cfd6e6;border-radius:10px;overflow:hidden;font-family:"Barlow",Arial,Helvetica,sans-serif;font-size:14px}
.orcdoc .od-pg,.orcdoc .od-pg>tbody,.orcdoc .od-pg>tbody>tr,.orcdoc .od-pg>tbody>tr>td{display:block;width:100%;padding:0;border:0}
.orcdoc .od-pg>thead,.orcdoc .od-pg>tfoot{display:none}
.orcdoc .od-top{display:flex;align-items:center;gap:20px;background:var(--od-azul);color:#fff;padding:20px 28px}
.orcdoc .od-logo{background:#fff;border-radius:14px;padding:8px;flex:none;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.orcdoc .od-logo img{display:block;width:84px;height:84px;object-fit:contain}
.orcdoc .od-emp h2{margin:0 0 4px;font-size:24px;line-height:1.15;color:#fff;font-weight:700;letter-spacing:.01em}
.orcdoc .od-emp p{margin:1px 0;font-size:13px;color:#cfdcff}
.orcdoc .od-faixa{height:7px;background:linear-gradient(90deg,var(--od-laranja),var(--od-amarelo))}
.orcdoc .od-titulo{display:flex;justify-content:space-between;align-items:center;padding:20px 28px 4px}
.orcdoc .od-lbl{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--od-laranja);font-weight:700}
.orcdoc .od-titulo h1{margin:0;font-size:38px;line-height:1;color:var(--od-azul);text-transform:uppercase;letter-spacing:.04em}
.orcdoc .od-num{background:var(--od-laranja);color:#fff;font-size:22px;font-weight:700;padding:8px 18px;border-radius:99px;letter-spacing:.06em}
.orcdoc .od-datas{display:flex;gap:28px;padding:6px 28px 4px;color:#14203f}
.orcdoc .od-datas span,.orcdoc .od-grid span,.orcdoc .od-card span{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#5b6785;font-weight:600}
.orcdoc .od-datas b{font-size:15px}
.orcdoc .od-sec{padding:6px 28px 4px}
.orcdoc .od-sec h3{margin:14px 0 8px;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--od-azul);display:flex;align-items:center;gap:10px}
.orcdoc .od-sec h3::after{content:"";flex:1;height:2px;background:linear-gradient(90deg,var(--od-laranja),transparent)}
.orcdoc .od-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px;background:var(--od-claro);border-left:5px solid var(--od-laranja);border-radius:6px;padding:12px 16px}
.orcdoc .od-grid b{font-size:14px;color:#14203f}
.orcdoc .od-itens{width:100%;border-collapse:separate;border-spacing:0;border:1px solid #cfd6e6;border-radius:8px;overflow:hidden}
.orcdoc .od-itens th{background:var(--od-azul);color:#fff;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;padding:9px 10px;text-align:left}
.orcdoc .od-itens td{padding:8px 10px;border-top:1px solid #e3e8f4;vertical-align:top}
.orcdoc .od-itens tbody tr:nth-child(even) td{background:var(--od-claro)}
.orcdoc .od-itens .n{text-align:right;white-space:nowrap}
.orcdoc .od-resumo{margin:12px 0 0 auto;width:min(360px,100%);display:flex;flex-direction:column;gap:4px}
.orcdoc .od-rl{display:flex;justify-content:space-between;padding:2px 10px;color:#14203f}
.orcdoc .od-total{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(90deg,var(--od-laranja),var(--od-amarelo));color:#fff;border-radius:8px;padding:11px 16px;margin-top:4px}
.orcdoc .od-total span{font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:#fff}
.orcdoc .od-total b{font-size:26px;color:#fff}
.orcdoc .od-cards{display:grid;gap:10px}
.orcdoc .od-card{border:1px solid #cfd6e6;border-top:4px solid var(--od-azul);border-radius:6px;padding:8px 14px}
.orcdoc .od-card p{margin:3px 0 0;color:#14203f}
.orcdoc .od-pix .od-grid{border-left-color:var(--od-azul);background:#fff;border:1px solid var(--od-azul);border-left-width:5px}
.orcdoc .od-ass{display:flex;gap:44px;padding:44px 28px 8px}
.orcdoc .od-ass>div{flex:1;text-align:center;font-size:12.5px;color:#14203f}
.orcdoc .od-ass i{display:block;border-top:1px solid #14203f;margin-bottom:5px}
.orcdoc .od-rod{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--od-azul);color:#cfdcff;font-size:11.5px;padding:10px 28px;margin-top:22px;border-top:5px solid var(--od-laranja)}
.orcdoc .od-rod span:last-child{color:#fff;font-weight:700}
.orcwin .trbar{padding:12px 0 2px}
@media print{
  body>*:not(.orcwin):not(.prwin):not(.etqwin){display:none!important}
  html,body{background:#fff!important}
  .orcwin{position:static!important;display:block!important;inset:auto!important;background:#fff!important;padding:0!important;overflow:visible!important}
  .orcwin .sheet{position:static!important;box-shadow:none!important;border:0!important;border-radius:0!important;max-width:none!important;width:100%!important;max-height:none!important;overflow:visible!important;padding:0!important;margin:0!important;background:#fff!important}
  .orcwin .winhead,.orcwin .trbar{display:none!important}
  .orcwin .winbody{overflow:visible!important;max-height:none!important;padding:0!important}
  .orcwin{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .orcwin .orcdoc{border:0;border-radius:0;max-width:none;width:100%;margin:0;font-size:10.5pt;display:block;overflow:visible}
  /* timbre no topo e rodapé no pé de TODAS as folhas (position:fixed repete em cada página; a tabela reserva o espaço) */
  .orcwin .od-head{position:fixed;top:0;left:0;right:0;height:36mm;z-index:5;background:#fff}
  .orcwin .od-head .od-top{height:calc(36mm - 7px);box-sizing:border-box;padding-top:0;padding-bottom:0}
  .orcwin .od-rod{position:fixed;bottom:0;left:0;right:0;height:12mm;box-sizing:border-box;margin:0;z-index:5;align-items:center;flex-wrap:nowrap}
  .orcwin .orcdoc .od-pg{display:table;width:100%;border-collapse:collapse}
  .orcwin .orcdoc .od-pg>thead{display:table-header-group}
  .orcwin .orcdoc .od-pg>tfoot{display:table-footer-group}
  .orcwin .orcdoc .od-pg>tbody{display:table-row-group}
  .orcwin .orcdoc .od-pg>thead>tr,.orcwin .orcdoc .od-pg>tbody>tr,.orcwin .orcdoc .od-pg>tfoot>tr{display:table-row}
  .orcwin .orcdoc .od-pg>thead>tr>td,.orcwin .orcdoc .od-pg>tbody>tr>td,.orcwin .orcdoc .od-pg>tfoot>tr>td{display:table-cell;padding:0;border:0}
  .orcwin .od-hsp{height:38mm}
  .orcwin .od-fsp{height:16mm}
  html,body{margin:0!important;padding:0!important}
  /* quebra de página sem cortar nada: cada bloco fica inteiro numa página; só a lista de serviços continua na página seguinte, linha a linha (com o cabeçalho repetido) e o total só aparece no fim */
  .orcwin .od-sec,.orcwin .od-card,.orcwin .od-grid,.orcwin .od-ass,.orcwin .od-rod,.orcwin .od-resumo,.orcwin .od-total,.orcwin .od-titulo,.orcwin .od-datas{break-inside:avoid;page-break-inside:avoid}
  .orcwin .od-svc{break-inside:auto;page-break-inside:auto}
  .orcwin .od-itens thead{display:table-header-group}
  .orcwin .od-itens tr{break-inside:avoid;page-break-inside:avoid}
  .orcwin .od-sec h3{break-after:avoid;page-break-after:avoid}
  .orcwin .od-resumo{break-before:avoid;page-break-before:avoid}
  .orcwin .od-sec{padding-top:18px}
  .orcwin .od-sec h3{margin-top:0}   /* a margem some no topo da página; o espaço vem do padding */
  .orcwin .tgbar{display:none!important}
}

/* ---------- campos financeiros escondidos de quem não é Administrador, Gerente ou Financeiro ---------- */
body.nofin .finfield{display:none !important}

/* ---------- painel do cliente (Meus resultados) ---------- */
.pt-kpis{margin-bottom:18px}
.pt-h{font-family:var(--font-d);font-size:20px;margin:18px 0 8px}
.pt-h2{font-size:15px;margin:14px 0 6px;color:var(--muted)}
details.pt-serv{border:1px solid var(--line);border-radius:10px;background:var(--surface);margin:0 0 10px;overflow:hidden}
details.pt-serv>summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:12px 14px;cursor:pointer;list-style:none}
details.pt-serv>summary::-webkit-details-marker{display:none}
details.pt-serv>summary::before{content:"▸";color:var(--muted);transition:transform .15s}
details.pt-serv[open]>summary::before{transform:rotate(90deg)}
details.pt-serv[open]>summary{border-bottom:1px solid var(--line)}
.pt-d{font-variant-numeric:tabular-nums;color:var(--muted)}
.pt-n{flex:1 1 220px}
.pt-r{margin-left:auto}
.pt-body{padding:12px 14px 16px}
.pt-traco{margin:0 0 18px;padding-bottom:6px;border-bottom:1px dashed var(--line)}
.pt-traco:last-child{border-bottom:0}
.semcli th:nth-child(2),.semcli td:nth-child(2),.semcli col:nth-child(2){display:none}   /* coluna Cliente: é sempre o mesmo cliente */

/* ---------- menu suspenso de ações ("Ações ▾") ---------- */
.dd{position:relative;display:inline-block}
.dd-btn{white-space:nowrap}
.dd-pop{position:fixed;z-index:100000;min-width:200px;max-width:min(320px,92vw);padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 14px 38px rgba(0,0,0,.4)}
.dd-it{display:block;width:100%;text-align:left;background:none;border:0;border-radius:7px;padding:9px 12px;color:var(--ink);font:inherit;font-size:14px;line-height:1.25;cursor:pointer}
.dd-it:hover,.dd-it:focus-visible{background:color-mix(in srgb,var(--accent) 16%,transparent);outline:0}
.dd-it.danger{color:var(--danger)}
.dd-sep{height:1px;margin:5px 4px;background:var(--line)}
.dd .dd-menu{display:none!important}

/* ---------- janela dos traços: um cartão por traço, com "Ocultar traço" no estilo de "Ocultar tabela" ---------- */
.trcard{border:1px solid var(--line);border-radius:12px;background:var(--surface);margin:0 0 10px}
.trhead{position:static;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 12px;background:transparent}
.trhead .sp{flex:1 1 auto}
.trnome{font-size:16px}
.trbody{display:grid;gap:8px;padding:2px 14px 14px}

/* ---------- campo de endereço (formulário de endereço + mapa) ---------- */
.endcampo{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}
.endbtn{flex:1 1 240px;min-height:42px;text-align:left;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--ink);font:inherit;cursor:pointer;line-height:1.35}
.endbtn:hover,.endbtn:focus-visible{border-color:var(--steel);outline:0}

/* ===== Agenda, rota, etiquetas, exportação, contas a receber e backup ===== */
.navbadge{display:inline-block;min-width:19px;height:19px;line-height:19px;padding:0 6px;margin-left:7px;border-radius:99px;background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;text-align:center;vertical-align:middle;font-variant-numeric:tabular-nums}
.navbadge.late{background:#d11a2a}
.navbadge[hidden]{display:none}
.agstats{grid-template-columns:repeat(4,1fr)}
.agn-late{color:#d11a2a}
.agcli{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 16px;margin-bottom:12px}
.agcli-h,.agcli{min-width:0}
.agcli-h{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-bottom:6px}
.agdia{align-items:flex-end;gap:10px}
.agdia .field{margin:0}
.agdia .field input{width:140px}
.rotapanel{margin-bottom:16px}
.rotahead{display:flex;flex-wrap:wrap;gap:12px 22px;align-items:center;justify-content:space-between}
.rotahead>div:first-child{flex:1;min-width:240px}
.rota-volta{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}
.rota-alerta{color:#b45309}
.rota-prog{margin:12px 0 0;color:var(--muted)}
.rota-res{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.rota-res .acts{justify-content:flex-start;flex-wrap:wrap}
.rota-res .acts a{text-decoration:none}
.aglist{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.agitem{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 16px}
.agitem.feito{opacity:.62}
.agnum{flex:none;width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:700;font-size:15px}
.agitem.feito .agnum{background:#2e9d5b}
.agcorpo{flex:1;min-width:0}
.agtopo{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.agend{margin-top:4px}
.agitem>.acts{flex:none}
.expfmt{display:grid;gap:8px}
.expopt{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer}
.expopt:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,transparent)}
.expopt input{margin-top:4px}
.expopt small{display:block;color:var(--muted);font-size:13px}
.recstats{grid-template-columns:repeat(4,1fr);margin-bottom:14px}
.recvenc .v,.recvenc-t{color:#d11a2a}
.bkaviso{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between}
.bkaviso .acts{flex:none}
.od-vazio{color:#5b6785;font-style:italic;padding:8px 0}
.od-nota p{margin:6px 0 0;font-size:10pt;color:#5b6785}
.orcdoc .od-cp{font-size:.92em}
.orcdoc .od-cp th{padding:7px 6px;font-size:10.5px}
.orcdoc .od-cp td{padding:6px}
.orcdoc .od-cp td:first-child{white-space:nowrap}
.orcdoc .od-ass small{color:#5b6785}
.etq-aviso{margin:0 0 12px}
.etq-grid{display:grid;grid-template-columns:repeat(3,64mm);justify-content:center;background:#fff;padding:8mm 0}
.etq{width:64mm;height:35mm;box-sizing:border-box;border:1px dashed #b8c0d4;padding:2.2mm;display:flex;gap:2.5mm;align-items:center;background:#fff;color:#000;font-family:Barlow,Arial,sans-serif;overflow:hidden;break-inside:avoid;page-break-inside:avoid}
.etq-qr{flex:none;width:24mm;height:24mm}
.etq-qr svg{width:100%;height:100%;display:block}
.etq-tx{display:flex;flex-direction:column;gap:.7mm;min-width:0;flex:1}
.etq-cod{font-size:14pt;line-height:1;color:#000}
.etq-l{font-size:7.5pt;line-height:1.15;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#000}
.etq-l b{font-weight:700}
.etq-rom{font-weight:700;font-size:9.5pt;background:#000;color:#fff;padding:.4mm 1.6mm;border-radius:1mm;align-self:flex-start;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.etq-pq{color:#333}
@media (max-width:760px){.agstats,.recstats{grid-template-columns:1fr 1fr}.agitem{flex-wrap:wrap}.agitem>.acts{width:100%;justify-content:flex-start}.etq-grid{grid-template-columns:repeat(auto-fill,64mm)}}
@media print{
  .etqwin{position:static!important;display:block!important;inset:auto!important;background:#fff!important;padding:0!important;overflow:visible!important;backdrop-filter:none!important}
  .etqwin .sheet{position:static!important;box-shadow:none!important;border:0!important;border-radius:0!important;max-width:none!important;width:100%!important;max-height:none!important;overflow:visible!important;padding:0!important;margin:0!important;background:#fff!important}
  .etqwin .winhead,.etqwin .trbar,.etqwin .etq-aviso{display:none!important}
  .etqwin .winbody{overflow:visible!important;max-height:none!important;padding:0!important}
  .etqwin .etq-grid{padding:0;grid-template-columns:repeat(3,64mm);justify-content:start}
  .etqwin .etq{border:1px dotted #bbb}
}

/* ===== Laboratório: coluna Localização/Coletado, obras do cliente e painel da agenda ===== */
.sheet-grid td.loccell{white-space:nowrap;overflow:hidden}
.loccell select{width:112px;display:inline-block;vertical-align:middle}
.loctx{font-weight:600;vertical-align:middle}
.colcell select{width:100%}
.dashrota .stats{margin-bottom:16px}

/* ===== Lista minimalista de compromissos e painel da rota do dia ===== */
.aglinhas{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.agrow{padding:7px 12px;border-top:1px solid var(--line)}
.agrow:first-child{border-top:0}
.agrow.feito .agnome,.agrow.feito .agtipo,.agrow.feito .agh{text-decoration:line-through;opacity:.55}
.agrow-l{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:30px}
.agrow-l .sp{flex:1}
.agck{width:18px;height:18px;flex:none;accent-color:var(--accent);cursor:pointer}
.agtipo{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.agh{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums}
.agnome{font-weight:600;font-size:14.5px}
.agpin{text-decoration:none;font-size:15px}
.agobs{font-size:13px;color:var(--muted);margin:0 0 0 26px}
.agcps{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:4px 0 2px 26px}
.agcp{display:inline-flex;align-items:center;gap:5px;font-size:13px;padding:2px 9px;border:1px solid var(--line);border-radius:99px;cursor:pointer}
.agcp.on{border-color:#2e9d5b;background:color-mix(in srgb,#2e9d5b 14%,transparent)}
.agcp input{accent-color:#2e9d5b}
.rotalista{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}
.rotalista li{display:flex;gap:12px;align-items:flex-start}
.rotapar a{color:var(--ink);text-decoration:none}
.rotapar a:hover strong{text-decoration:underline}
.rota-btns{justify-content:flex-start;flex-wrap:wrap;margin-top:6px}
.rota-btns a{text-decoration:none}
.btn.wa{background:#25D366;border-color:#25D366;color:#06311a;font-weight:700}

/* =====================================================================================================
   PADRÃO ÚNICO DE BOTÕES (vale para todo o sistema)
   Primário (laranja) = a ação principal da área · Padrão = ações comuns · Discreto (.ghost) = cancelar/secundárias
   Vermelho contornado (.del) = excluir · Vermelho cheio (.danger) = confirmar exclusão · Verde (.wa) = WhatsApp
   Tamanhos: normal (40 px) e pequeno .sm (32 px), sempre com a mesma fonte, cantos e espaçamento.
   ===================================================================================================== */
.btn,a.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;min-height:40px;padding:0 16px;border-radius:9px;font:inherit;font-size:14.5px;font-weight:600;line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer;color:var(--ink);background:color-mix(in srgb,currentColor 5%,transparent);border:1px solid color-mix(in srgb,currentColor 24%,transparent);transform:none;box-shadow:none;transition:background .15s,border-color .15s,filter .15s}
.btn:hover,a.btn:hover{background:color-mix(in srgb,currentColor 11%,transparent);border-color:color-mix(in srgb,currentColor 45%,transparent);transform:none}
.btn:focus-visible,a.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn:active{filter:brightness(.94)}
.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;filter:none}
.btn.sm,a.btn.sm{min-height:32px;padding:0 12px;font-size:13.5px;border-radius:8px}
.btn.primary,a.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:none}
.btn.primary:hover,a.btn.primary:hover{background:var(--accent);border-color:var(--accent);filter:brightness(1.08)}
.btn.ghost{background:transparent;border-color:color-mix(in srgb,currentColor 16%,transparent);font-weight:500}
.btn.ghost:hover{background:color-mix(in srgb,currentColor 8%,transparent)}
.btn.del,.btn.sm.del{background:transparent;color:var(--danger);border-color:color-mix(in srgb,var(--danger) 60%,transparent)}
.btn.del:hover{background:color-mix(in srgb,var(--danger) 12%,transparent);border-color:var(--danger)}
.btn.danger,.exclpanel .btn.del{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.danger:hover{filter:brightness(1.08);background:var(--danger)}
.btn.wa,a.btn.wa{background:#25D366;border-color:#25D366;color:#06311a}
.btn.wa:hover{background:#25D366;filter:brightness(1.06)}
.sheet-grid td .btn.sm{min-height:24px;padding:1px 10px;font-size:13px}
.acts .btn,.bar .btn,.optactions .btn,.actions .btn{flex:none}
.actions{gap:10px}

/* ===== Botões de ação sempre laranja com texto branco (exceto cancelar/discreto, excluir e WhatsApp) ===== */
.btn:not(.ghost):not(.del):not(.danger):not(.wa):not(.sm),a.btn:not(.ghost):not(.del):not(.danger):not(.wa):not(.sm){background:var(--accent);border-color:var(--accent);color:#fff}
.btn:not(.ghost):not(.del):not(.danger):not(.wa):not(.sm):hover,a.btn:not(.ghost):not(.del):not(.danger):not(.wa):not(.sm):hover{background:var(--accent);border-color:var(--accent);color:#fff;filter:brightness(1.08)}
/* Laboratório: Agenda de coletas e visitas em destaque no canto do cabeçalho */
.labhead-flex{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.labhead-flex>div{flex:1 1 320px;min-width:0}
.btn-agenda{min-height:50px;padding:0 22px;font-size:16px;border-radius:12px;box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 38%,transparent);flex:none}
/* filtros e busca do Laboratório em uma linha só */
.labfiltros{display:flex;flex-wrap:nowrap;gap:10px;align-items:flex-end;padding:12px 16px;border-bottom:1px solid var(--line);overflow-x:auto}
.labfiltros>.labtools,.labfiltros>.tblfiltro{display:contents}
.labfiltros .field{flex:0 0 auto;min-width:0;margin:0}
.labfiltros .field input,.labfiltros .field select,.labfiltros>.tblfiltro select,.labfiltros>.tblfiltro input{min-height:38px;padding:6px 10px;margin:0}
.labfiltros .labtools select{min-width:0;width:170px}
.labfiltros .field input[data-date]{width:130px}
.labfiltros .tblfiltro input,.labfiltros>.tblfiltro input{flex:1 1 220px;min-width:180px;max-width:none}
.labfiltros>.tblfiltro select{flex:0 0 auto;width:auto;min-width:150px}
.labfiltros .linkbtn{flex:0 0 auto;white-space:nowrap}
/* endereço resumido (cidade/UF) + botão do mapa, sem quebrar a coluna */
.endres{white-space:nowrap}
.labfiltros{gap:8px;padding:10px 14px}
.labfiltros .labtools select{width:138px}
.labfiltros .field input[data-date]{width:112px}
.labfiltros .tblfiltro input,.labfiltros>.tblfiltro input{flex:1 1 120px;min-width:110px}
.labfiltros>.tblfiltro select{min-width:0;width:140px}
.labfiltros .field label{white-space:nowrap}

/* ===== Traços: cartão só com o nome; materiais do resumo aparecem ao clicar (e sempre na impressão) ===== */
.trnome{font-size:16px;text-decoration:none;color:var(--ink)}
.trnome:hover strong{text-decoration:underline}

/* o endereço é o link do mapa */
.addr{color:inherit;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer}
.addr:hover{color:var(--accent);text-decoration-style:solid}
@media print{.orcdoc .addr{text-decoration:none;color:inherit}}

.colgrp{display:inline-flex;align-items:center;gap:8px;cursor:pointer}
.coletalista .selc{width:34px}
.coletalista input[type=checkbox]{accent-color:var(--accent);width:17px;height:17px}
.labcount{font-weight:500}

/* ===== Filtros do Laboratório: uma linha, cada filtro só aparece quando escolhido ===== */
.labfiltros{display:flex;flex-wrap:nowrap;gap:8px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);overflow-x:auto}
.labfiltros>input[type=search]{flex:1 1 240px;min-width:180px;max-width:420px;min-height:38px;margin:0}
.fchip{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent) 8%,transparent);border-radius:99px;padding:3px 6px 3px 12px}
.fchip b{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.fchip select,.fchip input{min-height:30px;padding:2px 8px;margin:0;width:auto;min-width:0;border-radius:8px}
.fchip input[data-date]{width:112px}
.fchip .fx{border:0;background:transparent;color:var(--muted);font-size:18px;line-height:1;width:24px;height:24px;border-radius:50%;cursor:pointer}
.fchip .fx:hover{background:color-mix(in srgb,var(--danger) 18%,transparent);color:var(--danger)}
.fadd{flex:0 0 auto;width:auto;min-height:38px;margin:0;border-style:dashed}
.labfiltros .linkbtn{flex:0 0 auto;white-space:nowrap}
.coletabar{margin:0 0 14px}

/* ===== Traços listados de forma mínima no cliente e coluna Traço na tabela ===== */
.trlista{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0 4px 36px}
.trmini{border:1px solid color-mix(in srgb,currentColor 25%,transparent);background:transparent;color:var(--ink);border-radius:99px;padding:3px 13px;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.trmini:hover{border-color:var(--accent);color:var(--accent)}
.sheet-grid td.trcell{white-space:nowrap;overflow:hidden}
.trcell select{width:100%}

/* ===== Tabelas do Laboratório e das planilhas: sem quebra de linha ===== */
.sheet-grid th,.sheet-grid td{white-space:nowrap}
.sheet-grid th{overflow:hidden;text-overflow:ellipsis}
.sheet-grid td:not(.obscell):not(.loccell):not(.trcell){overflow:hidden;text-overflow:ellipsis}
.sheet-grid td.obscell .obsbtn,.sheet-grid td.obscell .obstx{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-grid td .st,.sheet-grid td .chip{white-space:nowrap}

/* ===== Composição do traço: painel de cadastro, lista/tabela e propriedades ===== */
.cmsec{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:10px 0}
.cmhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.cmhead h4{margin:0;font-size:14px}
.cmgrp{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;margin:0 0 8px}
.cmgrp select{min-height:32px;padding:2px 8px;margin:0 0 0 4px;width:auto}
.cmsec[data-modo="peso"] .cm-totbox,.cmsec[data-modo="peso"] .cm-soma,.cmsec[data-modo="peso"] .cm-mist{display:none}
.cmsec[data-modo="mistura"] .cm-peso{display:none}
.cmrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 0;border-top:1px dashed var(--line)}
.cmrow>input[data-cm="nome"]{flex:1 1 180px;min-width:150px;margin:0}
.cmcampos{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.cmcampos input,.cmcampos select{margin:0;min-height:34px}
.cmrow[data-modo="pct"] .cm-dir{display:none}
.cmrow:not([data-modo="pct"]) .cm-pctbox{display:none}
.cm-res{min-width:48px;display:inline-block;color:var(--accent)}
.seg{display:inline-flex;gap:0;margin-right:8px}
.seg .btn{border-radius:0}
.seg .btn:first-child{border-radius:8px 0 0 8px}
.seg .btn:last-child{border-radius:0 8px 8px 0;margin-left:-1px}
.seg .btn.on{background:var(--accent);border-color:var(--accent);color:#fff}
.trcomp input{margin:0;min-height:30px;padding:2px 8px;min-width:0;width:100%}
.trcomp td.nw input.num{width:84px}
.trhoriz th,.trhoriz td{white-space:nowrap}
.trhoriz tbody th{text-align:left;color:var(--muted);font-weight:600}
.trhoriz td.n input{width:96px;text-align:right}
.trprops dl.info{margin:0}

/* ===== Alinhamento: cabeçalhos de coluna acompanham os dados ===== */
.trhoriz thead th:not(:first-child),.trhoriz tbody td{text-align:right}
.trhoriz tbody th{text-align:left}
.trcomp thead th:nth-child(3),.trcomp tbody td:nth-child(3){text-align:right}
.trhoriz.enstbl tbody td:last-child,.trhoriz.enstbl tbody td:last-child *{text-align:right}
.trhoriz.enstbl thead th:last-child{text-align:right}
.trhoriz.enstbl td:last-child,.trhoriz td:last-child{width:auto}

/* ===== Painel de edição da composição: linhas compactas, × discreto e layout vertical/horizontal ===== */
.sheet.cmmodal{max-width:820px}
.cmtopo{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px 16px;margin-bottom:6px}
.cmtopo .field{margin:0}
.cm-base{display:flex;gap:8px;align-items:center}
.cm-base input{width:84px;margin:0;text-align:right}
.cm-base select{width:auto;margin:0}
.cm-seg{margin:0}
.cmsec{padding:8px 12px 10px}
.cmlista{display:flex;flex-direction:column}
.cmrow{position:relative;padding:6px 28px 6px 0;gap:6px 10px}
.cmrow>input[data-cm="nome"]{flex:0 0 190px;min-width:0;width:190px}
.cmrow .x{position:absolute;top:50%;right:0;transform:translateY(-50%);width:20px;height:20px;padding:0;border:0;background:transparent;color:var(--muted);font-size:15px;line-height:1;border-radius:50%;opacity:.55;cursor:pointer}
.cmrow .x:hover{opacity:1;background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}
.sheet.cmh .cmlista{flex-direction:row;flex-wrap:wrap;gap:10px;margin-top:6px}
.sheet.cmh .cmrow{flex:0 0 232px;flex-direction:column;align-items:stretch;border:1px solid var(--line);border-radius:10px;padding:26px 12px 10px;gap:8px}
.sheet.cmh .cmrow>input[data-cm="nome"]{flex:none;width:100%;font-weight:600}
.sheet.cmh .cmcampos{flex-direction:column;align-items:flex-start}
.sheet.cmh .cmrow .x{top:8px;right:8px;transform:none}

/* janelas que já têm o botão OK não mostram o Fechar do topo */
.semfechar .winhead .btn{display:none}

/* ===== Acompanhamento de obra ===== */
.acomp-topo{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:12px 20px;align-items:end;margin-bottom:10px}
.acomp-topo .field{margin:0}
.acomp-loc{min-height:40px;display:flex;align-items:center}
.acomp-t input[type=time],.acomp-t input[data-date]{width:130px;margin:0}
.acomp-t input[data-ac="obs"]{width:100%;margin:0}
.acomp-t td.c,.acomp-t th.c{text-align:center}
.acomp-t input[type=checkbox]{accent-color:var(--accent);width:18px;height:18px}
.acomp-t .x{border:0;background:transparent;color:var(--muted);font-size:17px;width:24px;height:24px;border-radius:50%;cursor:pointer;opacity:.6}
.acomp-t .x:hover{opacity:1;color:var(--danger)}
@media (max-width:700px){.acomp-topo{grid-template-columns:1fr}}

/* ===== Dashboard de acompanhamentos ===== */
.acbar{align-items:flex-end;flex-wrap:wrap;gap:10px 14px}
.acbar .field{margin:0}
.acbar select{min-width:190px}
.acbar input[data-date]{width:130px}
.acdash .agstats{margin-bottom:12px}

/* ===== Obra do acompanhamento: troca dentro da janela ===== */
.obra-troca{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.obra-troca .field{margin:0 0 10px}

/* ===== Dashboard embutido e lista Marcados/Realizados ===== */
.acdash .acbar{margin-bottom:12px}
.acd-t td.c,.acd-t th.c{text-align:center}
.acd-t input[type=checkbox]{accent-color:var(--accent);width:18px;height:18px}
.acd-t td{vertical-align:middle}
.acdash .agstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.acdash .agstats .stat{min-width:0}
.labhead-flex>div.acts{flex:0 0 auto;display:flex;gap:10px;flex-wrap:wrap}
/* Contas a receber: um bloco por cliente com os serviços dele */
.reccli{margin:0 0 18px}
.reccli-h{gap:8px 14px;margin:0 0 6px;flex-wrap:wrap;align-items:center}
.reccli-h .linkbtn{font-size:16px}

/* ---------- tabelas: espaço próprio, sem borda dupla e sem cortar o conteúdo ---------- */
.tw{max-width:100%;min-width:0}
.tw table{max-width:none}
.agcli,.subbox,.panel,.caformbox,.cpbox,.labpanel{min-width:0}
.agcli .tw,.subbox .tw,.panel .tw,.caformbox .tw,.cpbox .tw,.sheet .tw{margin:0;box-shadow:none}
.agcli .tw{border:0;background:transparent;border-radius:0;padding:0}
.agcli{padding:14px 16px 10px;overflow:hidden}
.agcli table,.coletalista table{min-width:0;width:100%}
.coletalista td,.coletalista th{white-space:normal;vertical-align:middle}
.coletalista td .st,.coletalista td .chip{margin-left:6px}
.coletalista .selc{width:44px;padding-right:0}
.coletalista .tgbar{margin:0 0 6px}
.agcli.foco{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.colopt{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;cursor:pointer;line-height:1.4}
.colopt input{flex:none;margin-top:3px}
.dashrota .tw,.coletalista .tw{margin-bottom:14px}
.aglinhas .agrow-l .btn.sm{white-space:nowrap}
table{min-width:min(640px,100%)}
@media(max-width:1280px){th,td{padding-left:11px;padding-right:11px}}
.tw>table,.grid-wrap>table{margin-left:0}   /* a margem de 4px empurrava a tabela para fora da moldura (barra de rolagem e borda cortada) */
.coletalista td strong{white-space:nowrap}

/* ---------- laudo no modelo de relatório de ensaio ---------- */
.orcdoc .od-local{margin:0;padding:16px 28px 0;text-align:right;color:#14203f;font-size:13.5px}
.orcdoc .od-h1l{font-size:21px!important;line-height:1.2!important;max-width:560px}
.orcdoc .od-g1{grid-template-columns:1fr}
.orcdoc .od-card ul{margin:2px 0;padding-left:20px}
.orcdoc .od-card li{margin:3px 0;color:#14203f}
.orcdoc .od-lgr{margin:0 0 16px}
.orcdoc .od-lgh{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:4px 26px;padding:8px 12px;margin-bottom:6px;background:var(--od-claro);border-left:5px solid var(--od-laranja);border-radius:6px}
.orcdoc .od-lgh span{display:block;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#5b6785;font-weight:600}
.orcdoc .od-lgh b{font-size:13px;color:#14203f}
.orcdoc .od-laudo th,.orcdoc .od-laudo td{text-align:center}
.orcdoc .od-laudo th{vertical-align:middle;line-height:1.2}
.orcdoc .od-parecer p{margin:6px 0;text-align:justify;line-height:1.5}
.orcdoc .od-parecer ul{margin:4px 0 8px;padding-left:22px}
.orcdoc .od-parecer li{margin:3px 0;text-align:justify;line-height:1.45}
@media(max-width:640px){.orcdoc .od-lgh{grid-template-columns:1fr 1fr}}
@media print{
  .orcwin .od-quebra{break-before:page;page-break-before:always}
  .orcwin .od-lgr{break-inside:avoid;page-break-inside:avoid}
  .orcwin .od-parecer{break-inside:auto;page-break-inside:auto}
}
/* Agenda de coletas: filtros da tabela de corpos de prova a coletar */
.colfiltros{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px;margin:0 0 12px}
.colfiltros .field{margin:0;min-width:0}
.colfiltros #col-fq{width:230px;max-width:100%}
.colfiltros select{max-width:240px}
.colfiltros input[data-date]{width:130px}
.colfiltros .linkbtn{margin-bottom:10px}
.dashrota .labkpis{margin:0}
/* laudo: tabela de resultados ajustada à largura da folha (colunas fixas, texto quebra dentro da célula) */
.orcdoc .od-laudo{table-layout:fixed;width:100%;font-size:10px}
.orcdoc .od-laudo th,.orcdoc .od-laudo th.n{padding:5px 3px;font-size:9.4px;letter-spacing:0;text-transform:none;line-height:1.2;white-space:normal;overflow-wrap:break-word;text-align:center;vertical-align:middle}
.orcdoc .od-laudo td{padding:5px 3px;line-height:1.25;white-space:normal;overflow-wrap:break-word;text-align:center;vertical-align:middle}
.orcdoc .od-laudo td.n,.orcdoc .od-laudo td.nw{white-space:nowrap}
@media print{.orcwin .orcdoc .od-laudo{font-size:7.5pt}.orcwin .orcdoc .od-laudo th,.orcwin .orcdoc .od-laudo th.n{font-size:7pt}}
/* código repetido (prova e contraprova do mesmo lote): permitido, mas destacado */
.sheet-grid td.codcell{position:relative}
.sheet-grid td.codcell[data-rep] input{border-color:#f59e0b!important;background:color-mix(in srgb,#f59e0b 16%,transparent)!important;font-weight:700;padding-right:30px}
.sheet-grid td.codcell[data-rep]::after{content:attr(data-rep) "×";position:absolute;right:7px;top:50%;transform:translateY(-50%);min-width:20px;height:18px;padding:0 4px;border-radius:99px;background:#f59e0b;color:#1a1200;font-size:11px;font-weight:800;line-height:18px;text-align:center;pointer-events:none}
/* aba Laboratório: + linha, escolha de colunas e modo resumido */
.labtitle .labadd{min-width:38px;height:36px;padding:0 10px;font-size:20px;line-height:1;font-weight:700;color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}
.labtitle .labadd:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.labtitle .btn.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--ink)}
.colpop{width:250px;max-height:min(70vh,520px);overflow:auto}
.colpop-h{display:flex;flex-direction:column;gap:2px;padding:6px 8px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}
.colpop-av{margin:4px 8px 6px;color:var(--muted)}
.colpop-it{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;cursor:pointer;font-size:14px}
.colpop-it:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.colpop-f{border-top:1px solid var(--line);margin-top:4px;padding:8px}
.sheet-grid tr.novo td{animation:linhaNova 2.4s ease-out}
@keyframes linhaNova{0%{background:color-mix(in srgb,var(--accent) 35%,transparent)}100%{background:transparent}}
/* título da tabela do Laboratório: "Corpos de prova" em destaque e contagem bem visível */
#lab-root .labtitle h3{display:flex;align-items:center;gap:10px;font-family:var(--font-d);font-size:22px;font-weight:800;letter-spacing:.01em;color:var(--ink);margin-right:6px}
#lab-root .labtitle h3 .labcount{margin:0;min-width:34px;height:28px;line-height:28px;padding:0 11px;border-radius:99px;background:var(--accent);color:#fff;font-family:inherit;font-size:15px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 35%,transparent)}

/* ---------- menu de navegação com ícones (tema Clássico) ---------- */
nav.tabs button[data-view="portal"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 11l3 3L22 4'/%3E%3Cpath d='M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11'/%3E%3C/svg%3E")}
nav.tabs button[data-view="clientes"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E")}
nav.tabs button[data-view="lab"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 2v7.5L4.5 19a2 2 0 0 0 1.8 3h11.4a2 2 0 0 0 1.8-3L14 9.5V2'/%3E%3Cpath d='M8.5 2h7'/%3E%3Cpath d='M7 16h10'/%3E%3C/svg%3E")}
nav.tabs button[data-view="orc"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3Cpath d='M10 9H8'/%3E%3C/svg%3E")}
nav.tabs button[data-view="painel"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v18h18'/%3E%3Cpath d='M7 15l4-4 3 3 5-6'/%3E%3C/svg%3E")}
nav.tabs button[data-view="opcoes"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='4' y1='21' x2='4' y2='14'/%3E%3Cline x1='4' y1='10' x2='4' y2='3'/%3E%3Cline x1='12' y1='21' x2='12' y2='12'/%3E%3Cline x1='12' y1='8' x2='12' y2='3'/%3E%3Cline x1='20' y1='21' x2='20' y2='16'/%3E%3Cline x1='20' y1='12' x2='20' y2='3'/%3E%3Cline x1='1' y1='14' x2='7' y2='14'/%3E%3Cline x1='9' y1='8' x2='15' y2='8'/%3E%3Cline x1='17' y1='16' x2='23' y2='16'/%3E%3C/svg%3E")}
nav.tabs button[data-view="servicos"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z'/%3E%3Cpath d='M3.27 6.96L12 12.01l8.73-5.05'/%3E%3Cpath d='M12 22.08V12'/%3E%3C/svg%3E")}
nav.tabs button[data-view="usuarios"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E")}
html nav.tabs button::before{display:block!important;content:""!important;flex:none;width:19px;height:19px;border:0!important;border-radius:0;background:currentColor!important;opacity:.85;-webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat}
html nav.tabs button[aria-current="page"]::before{opacity:1;background:var(--accent)!important}
html nav.tabs button:hover::before{opacity:1}
@media(max-width:760px){html nav.tabs button{display:inline-flex!important;align-items:center;gap:7px}html nav.tabs button::before{width:15px;height:15px}}
@media(min-width:761px){html nav.tabs button{font-size:13.5px;letter-spacing:.005em}}

/* ---------- corpo de texto: leitura mais confortável e hierarquia clara ---------- */
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern","liga"}
main p{line-height:1.6}
main h2,main h3{font-family:var(--font-d);letter-spacing:.01em;line-height:1.15}
main h2{font-weight:700}
main h3{font-weight:700}
.labhead p,.detail-head+p,.blk>p,.panel>p{color:var(--muted);max-width:78ch}
main .muted{color:var(--muted)}
main .small{font-size:13.5px;line-height:1.5}
main strong,main b{font-weight:600}
main table{font-variant-numeric:tabular-nums}
main th{letter-spacing:.06em}
main a:not(.btn){text-underline-offset:3px}
main label{font-weight:500}

/* ---------- cliente: serviços primeiro, dados e obras atrás de um botão ---------- */
.cliinfo-bar{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 14px}
.cliinfo-btn{display:inline-flex;align-items:center;gap:8px}
.cliinfo-btn:not(.on)::before{content:"";width:16px;height:16px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Cpath d='M5 21V7l7-4 7 4v14'/%3E%3Cpath d='M9 21v-6h6v6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Cpath d='M5 21V7l7-4 7 4v14'/%3E%3Cpath d='M9 21v-6h6v6'/%3E%3C/svg%3E") center/contain no-repeat}
.cliinfo-btn.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.cliinfo-btn .labcount{margin-left:2px}
.cliinfo{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:14px 16px 4px;margin:0 0 18px;background:var(--surface)}
.cliinfo dl.info{margin-top:0}
.cliinfo dl.info a{color:inherit;font-weight:500;text-decoration-color:color-mix(in srgb,var(--accent) 70%,transparent)}
/* código: botão de replicar e selo de repetições lado a lado */
.sheet-grid td.codcell.comrep input{padding-right:30px}
.sheet-grid td.codcell.comrep[data-rep] input{padding-right:56px}
.sheet-grid td.codcell.comrep[data-rep]::after{right:30px}
.cprep{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:22px;height:22px;padding:0;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);font-size:13px;line-height:20px;cursor:pointer;opacity:.75}
.cprep:hover,.cprep:focus-visible{opacity:1;color:var(--accent);border-color:var(--accent)}
/* não encontrado */
.naoenccell{text-align:center}
.naoenc-l{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:12.5px;font-weight:600;color:#ff8a8a}
.naoenc-l input{width:17px;height:17px;accent-color:#d11a2a;cursor:pointer}
.sheet-grid tr.naoenc td{background:color-mix(in srgb,#d11a2a 10%,transparent)}
.sheet-grid tr.naoenc td:first-child{box-shadow:inset 3px 0 0 #d11a2a}
/* títulos da tabela do Laboratório: clique para ordenar */
.thsort{display:inline-flex;align-items:center;gap:5px;background:none;border:0;padding:0;margin:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;text-align:left}
.thsort i{font-style:normal;font-size:10px;opacity:.45}
.thsort:hover i,.thsort.on i{opacity:1;color:var(--accent)}
.thsort.on{color:var(--accent)}
.ordopts{display:grid;gap:8px;margin-top:6px}

/* ---------- tabelas de corpos de prova: títulos e valores centralizados e simétricos ---------- */
.sheet-grid th,.sheet-grid th.n{text-align:center;vertical-align:middle;padding:7px 10px;line-height:1.2}
.sheet-grid th .thsort{width:100%;justify-content:center;text-align:center}
.sheet-grid td,.sheet-grid td.g-ro,.sheet-grid .num,.sheet-grid td.g-ro.num{text-align:center;vertical-align:middle}
.sheet-grid td input,.sheet-grid td select{text-align:center;text-align-last:center}
.sheet-grid td input.num{text-align:center}
.sheet-grid .obsbtn{text-align:center}
.sheet-grid td.concell>*,.sheet-grid td.loccell,.sheet-grid td.colcell,.sheet-grid td.naoenccell{text-align:center}
.sheet-grid td.concell{padding:0 6px}
.sheet-grid .tp{justify-content:center}
.sheet-grid td.mpacell,.sheet-grid td[data-f="mpa"]{text-align:center}
/* código: espaço igual dos dois lados para o texto ficar no centro, mesmo com o botão e o selo */
.sheet-grid td.codcell.comrep input{padding-left:30px;padding-right:30px}
.sheet-grid td.codcell.comrep[data-rep] input{padding-left:56px;padding-right:56px}
/* com filtro ou colunas ocultas a tabela fica mais estreita: centralizada no quadro */
.grid-wrap.lab-grid>table.sheet-grid{margin-left:auto;margin-right:auto}

/* ---------- Financeiro: painéis ocultáveis e comprovantes ---------- */
.finbar{margin-bottom:14px}
.finoc .stats{display:none!important}
.comppanel{margin-top:22px}
.comptbl{width:100%}
.comptbl td{vertical-align:middle}
.comptbl .compin{width:100%;min-width:0;border:1px solid transparent;border-radius:8px;background:transparent;padding:6px 8px;font:inherit;color:inherit}
.comptbl .compin:hover{border-color:var(--line)}
.comptbl .compin:focus{border-color:var(--accent);outline:0;background:var(--bg)}
.comptbl td:first-child{width:150px}
.comptbl td:first-child .compin{width:130px}
.comptbl .compdesc{min-width:220px}
/* Minha conta */
.minhaconta .mcbtns{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start}

/* ---------- correção geral de botões ---------- */
/* menu lateral: textos longos quebram dentro do botão (o contorno acompanha) */
@media(min-width:761px){
  html nav.tabs button{white-space:normal!important;line-height:1.25;min-height:45px;height:auto;padding:9px 13px;box-sizing:border-box;max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}
}
/* nenhum botão passa da largura do lugar onde está */
.btn,a.btn,button.btn{max-width:100%}
@media(max-width:600px){.btn,a.btn{white-space:normal;text-align:center;line-height:1.2;padding-top:6px;padding-bottom:6px}}
/* títulos clicáveis das tabelas: quebram em duas linhas em vez de vazar da coluna */
.sheet-grid th .thsort{white-space:normal;flex-wrap:wrap;row-gap:2px;min-width:0;line-height:1.15}
.sheet-grid th{overflow:hidden}
/* celular: botões do topo do Laboratório e o "Filtrar por…" não passam da tela */
.labhead-flex .acts{flex-wrap:wrap;max-width:100%}
.labhead-flex .acts .btn{flex:1 1 auto}
.labfiltros{flex-wrap:wrap;max-width:100%}
.labfiltros select,.labfiltros input{max-width:100%}
.labtitle{max-width:100%}
.labmais{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;padding:14px 12px 4px}
/* login: pedido de cadastro */
.lg-cad{margin:14px 0 0;text-align:center;font-size:14px;color:var(--muted)}
.cadform{max-width:560px}
.cadform textarea{width:100%}
.cadacts{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.cad-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.cadpanel{margin-bottom:18px}
/* portal do cliente: marcar e gerar laudo */
.ptbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin:0 0 10px;padding:8px 12px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;background:color-mix(in srgb,var(--accent) 6%,transparent)}
.pt-body th.selc,.pt-body td.selc{width:38px;text-align:center}
.pt-body td.selc input,.pt-body th.selc input{width:17px;height:17px;cursor:pointer}

/* ---------- edições pendentes: barra fixa e botão "Salvar edição" ---------- */
#edbar{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:100001;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;max-width:calc(100vw - 24px);padding:8px 10px 8px 16px;border-radius:999px;background:#fff7ed;color:#7c2d12;border:2px solid var(--accent);box-shadow:0 10px 30px rgba(0,0,0,.35);font-size:14px}
#edbar strong{color:#c2410c}
.salvar-ed[disabled]{opacity:.55;cursor:default}
.winhead{gap:8px}
.winhead .salvar-ed{margin-left:auto}
/* Financeiro */
.stats.stats1{grid-template-columns:minmax(0,440px)}
.recfiltros{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 14px;margin:0 0 12px}
.recfiltros .field{margin:0;min-width:200px;max-width:100%}
.recfiltros select{max-width:100%}
.compchips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.compchips .btn.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.comptbl select.compin{min-width:170px}
.comptbl .compobs{max-width:240px;min-height:34px;border:1px solid transparent;border-radius:8px;padding:6px 8px}
.comptbl .compobs:hover{border-color:var(--line)}
/* portal: lista de corpos de prova do cliente */
.ptlista .labtitle{padding:0 0 10px}
.ptlista .labfiltros{padding:0 0 10px}
.pttbl th,.pttbl td{text-align:center;vertical-align:middle}
.pttbl th .thsort{width:100%;justify-content:center}
.pttbl td.selc,.pttbl th.selc{width:40px}
.pttbl input[type=checkbox]{width:17px;height:17px;cursor:pointer}
.pttbl tr.done td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
/* tipo do comprovante: botões pequenos (segmentado) */
.seg{display:inline-flex;gap:0;margin-top:6px;border:1px solid var(--line);border-radius:999px;padding:3px;background:color-mix(in srgb,var(--track) 40%,transparent)}
.seg-op{position:relative;cursor:pointer}
.seg-op input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.seg-op span{display:inline-block;padding:5px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);transition:background .15s,color .15s;white-space:nowrap}
.seg-op:hover span{color:var(--ink)}
.seg-op input:checked+span{background:var(--accent);color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.seg-op input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
/* vários arquivos por comprovante */
.comparqs{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.comparq{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 9px;border:1px solid var(--line);border-radius:999px;max-width:260px}
.comparq .linkbtn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px}
.comparq-x{border:0;background:none;color:var(--muted);font-size:16px;line-height:1;width:22px;height:22px;border-radius:50%;cursor:pointer}
.comparq-x:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}
.comparq-add{min-height:28px!important;padding:0 10px!important;font-size:12.5px!important}

/* ---------- portal: abas Corpos de prova e Solicitar serviços ---------- */
nav.tabs button[data-view="pcps"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 2v7.5L4.5 19a2 2 0 0 0 1.8 3h11.4a2 2 0 0 0 1.8-3L14 9.5V2'/%3E%3Cpath d='M8.5 2h7'/%3E%3Cpath d='M7 16h10'/%3E%3C/svg%3E")}
nav.tabs button[data-view="solic"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3Cpath d='M10 9H8'/%3E%3C/svg%3E")}
.pcpskpi{grid-template-columns:repeat(3,minmax(0,220px))}
.solform .grid2{margin-bottom:4px}
.solcps td{padding:3px 4px}
.solcps input,.solcps select{width:100%;min-width:0;padding:5px 8px;font:inherit;font-size:14px}
.solcps td:nth-child(2){min-width:120px}.solcps td:nth-child(3){min-width:230px}.solcps td:nth-child(4){min-width:130px}.solcps td:nth-child(5){min-width:110px}.solcps td:nth-child(6){min-width:90px}
.solpanel{margin-bottom:16px}
/* ---------- listas sem quebra de linha, linhas compactas e altura escolhida em Ações ---------- */
.sheet-grid td,.sheet-grid th,.pttbl td,.pttbl th,.soltbl th{white-space:nowrap}
.sheet-grid th .thsort{white-space:nowrap!important;flex-wrap:nowrap!important;display:inline-flex;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.pttbl td,.pttbl th{padding-top:5px;padding-bottom:5px;line-height:1.25}
body[data-linha="p"] .pttbl td,body[data-linha="p"] .pt-body .tw td{padding-top:2px;padding-bottom:2px;font-size:13.5px}
body[data-linha="g"] .pttbl td,body[data-linha="g"] .pt-body .tw td{padding-top:11px;padding-bottom:11px}
body[data-linha="p"] .sheet-grid td,body[data-linha="p"] .sheet-grid td input,body[data-linha="p"] .sheet-grid td select{font-size:13px}
.sheet-grid .naoenc-l{margin:0!important;padding:0!important;min-height:0!important;height:auto;line-height:1.1;vertical-align:middle}
.sheet-grid td.naoenccell{padding:0 6px}
.sheet-grid td.g-ro{padding-top:0!important;padding-bottom:0!important;box-sizing:border-box}
.sheet-grid td.concell,.sheet-grid td.colcell,.sheet-grid td.loccell,.sheet-grid td.trcell,.sheet-grid td.obscell,.sheet-grid td.codcell{padding-top:0;padding-bottom:0}
.sheet-grid .concbtn{max-height:calc(var(--rh) - 6px)}
.sheet-grid .naoenc-l input{min-height:0!important;height:16px!important;width:16px!important;margin:0!important;padding:0!important}
nav.tabs button[data-view="solics"]{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3Cpath d='M10 9H8'/%3E%3C/svg%3E")}

/* ===== Solicitações: quantidade por idade, aviso discreto no Laboratório, serviço de rompimento sem tabela no portal ===== */
.solids{display:flex;flex-direction:column;gap:4px}
.solid{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.solid select{width:auto;min-width:0}
.solid .sol-qtd{width:68px}
.solcps td .linkbtn{margin-top:3px}
.labnote{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 10px;padding:6px 12px;border:1px dashed var(--line);border-radius:8px;font-size:13px;color:var(--muted);background:transparent}
.labnote strong{color:var(--ink)}
.pt-serv.pt-servl{border:1px solid var(--line);border-radius:10px;background:var(--surface);margin:0 0 10px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:12px 14px 12px 32px}
.pt-servl .pt-arqs{display:flex;flex-wrap:wrap;gap:4px 12px;margin-left:auto}
/* Financeiro → Arquivos: filtros e botões na mesma linha, com uma divisão discreta antes da tabela */
.compbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin:0 0 12px;padding:0 0 10px;border-bottom:1px solid var(--line)}
.compbar .compchips{margin:0}
.compbar .acts{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.recfiltros{padding-bottom:12px;border-bottom:1px solid var(--line)}
.callout.warn{border-left-color:var(--danger)}
.pt-ordem{display:inline-flex;align-items:center;gap:6px}
/* textos de introdução numa linha só (o que não couber vira "…") */
.nowrap1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
#orc-root>.bar>div:first-child{min-width:0;flex:1 1 auto}

/* ===== Solicitar coleta: botão grande junto da tabela; aviso de novos resultados; e-mails de aviso; pedidos aceitos ===== */
.btn.btn-grande{min-height:50px;padding:12px 26px;font-size:16px;font-weight:700;border-radius:12px}
.pcps-acao{display:flex;justify-content:flex-start;margin:6px 0 10px}
.resnovo{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 14px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--ok) 45%,transparent);border-left:4px solid var(--ok);border-radius:10px;background:color-mix(in srgb,var(--ok) 9%,transparent)}
.resnovo>span:nth-child(2){flex:1 1 280px}
.resnovo-i{font-size:20px}
.resnovo .acts{display:flex;gap:8px;margin:0}
.pelist{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px}
.pelist li{display:flex;align-items:center;gap:10px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;max-width:460px}
.pelist li span{flex:1;overflow:hidden;text-overflow:ellipsis}
.pe-add{display:flex;flex-wrap:wrap;gap:8px;max-width:460px}
.pe-add input{flex:1 1 220px}
.solacpanel{margin-top:16px}
.solac td,.solac th{padding-top:6px;padding-bottom:6px}
.trass{display:flex;justify-content:flex-end;padding:40px 0 8px}
.trass>div{min-width:280px;text-align:center;font-size:12.5px}
.trass i{display:block;border-top:1px solid currentColor;margin-bottom:5px}

/* ===== Marca RESISTECH LAB (logo largo; o nome da empresa vem logo abaixo) ===== */
.brand .logo.rt-logo{width:min(100%,232px)!important;height:auto!important;max-height:none!important;background:transparent!important;padding:0!important;box-shadow:none!important;border-radius:0!important;object-fit:contain;margin:0 auto 2px!important}
.brand .rt-lab{order:1;display:block;width:100%;text-align:center;font:800 13px/1 var(--font);letter-spacing:.5em;padding-left:.5em;color:#FF6A13;margin:2px 0 12px}
.brand h1.rt-h1{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0);white-space:nowrap;margin:0!important;padding:0!important}
body:has(.login) .brand .logo.rt-logo{width:220px!important;margin:0!important}
body:has(.login) .brand .rt-lab{width:auto;margin:0;text-align:left}
@media (max-width:1100px){.brand .logo.rt-logo{width:170px!important;margin:0!important}.brand .rt-lab{width:auto;margin:0;text-align:left;font-size:11px}}
.od-rod .od-rt{opacity:.65;font-size:.85em}
.pzlote{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 10px;padding:8px 12px;border:1px solid var(--line);border-radius:10px}
.pzlote select{width:auto}
.laudotbl td,.laudotbl th{white-space:nowrap}
.lblogo{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.lblogo img{max-height:56px;max-width:220px;object-fit:contain;background:#fff;border-radius:6px;padding:4px}
.platkpis .stat .kbar.platbar{height:6px;border-radius:4px;background:var(--line);overflow:hidden;margin:8px 0 4px}
.platkpis .stat .kbar.platbar i{display:block;height:100%;background:var(--ok)}
.platkpis .stat .kbar.platbar.alto i{background:var(--danger)}
.plattbl td,.plattbl th{white-space:nowrap}
.plattbl tr.on td{background:color-mix(in srgb,var(--accent) 8%,transparent)}
label.chk{display:flex;align-items:center;gap:8px;margin:4px 0}
/* logins sempre em MAIÚSCULAS na tela (o sistema não diferencia maiúsculas de minúsculas) */
#lg-user,#u-login,#cad-usuario,#pu-usr,#en-usr{text-transform:uppercase}
#lg-user::placeholder,#u-login::placeholder,#cad-usuario::placeholder,#pu-usr::placeholder,#en-usr::placeholder{text-transform:none}

/* Laboratório → Outros ensaios e Laudos emitidos: filtros e grupos */
.ensfiltro{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:14px 16px;margin:0 0 18px}
.ensfiltro .field{flex:1 1 200px;min-width:0;margin:0}
.ensgrupo{margin-top:18px}
.ensgrupo>h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:16px}
.labhead-flex .acts{flex-wrap:wrap}
/* ===== "LAB" maior e destacado como nome do sistema ===== */
.brand .rt-lab{font:900 26px/1 var(--font)!important;letter-spacing:.42em!important;padding-left:.42em;color:#FF6A13!important;margin:4px 0 12px!important;text-shadow:0 2px 10px rgba(255,106,19,.35)}
@media (max-width:1100px){.brand .rt-lab{font-size:20px!important;margin:0!important}}
body:has(.login) .brand .rt-lab{font-size:24px!important}
/* logo da empresa no menu (enviado em Opções → Dados da empresa) */
.brand .emp-logo{order:4;display:block;max-width:150px;max-height:54px;margin:6px auto 14px;object-fit:contain;background:#fff;border-radius:8px;padding:4px 8px}
@media (max-width:1100px){.brand .emp-logo{margin:0 0 0 8px;max-height:36px;max-width:110px}}
/* Painel geral: linhas baixas como a tabela de corpos de prova */
.plattbl td,.plattbl th{padding-top:4px!important;padding-bottom:4px!important;vertical-align:middle;line-height:1.25}
.plattbl td{height:33px}
.plattbl .btn.sm{min-height:26px!important;padding:2px 10px!important;font-size:12.5px}
.plattbl .st{padding:2px 8px;font-size:12px}
.plattbl .acts{flex-wrap:nowrap;gap:4px}
.usrtbl td{vertical-align:middle}
/* Financeiro: situação só para ver + botão Pago Sim/Não */
.pgst{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.pagosn{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:2px 10px;font:600 12px/1.6 var(--font);cursor:pointer;white-space:nowrap}
.pagosn:hover{border-color:var(--ok);color:var(--ink)}
.pagosn.on{background:color-mix(in srgb,var(--ok) 18%,transparent);border-color:var(--ok);color:var(--ink)}
/* Solicitações e licenças (administrador geral) */
.pedtbl td{white-space:normal!important;vertical-align:top}
.pedtbl .peddet{max-width:340px}
.pedmsg{margin-top:4px;white-space:pre-wrap}
.pedtipo{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line);white-space:nowrap}
.pedtipo.t-teste{border-color:var(--ok);color:var(--ok)}
.pedtipo.t-contratar,.pedtipo.t-mudanca_plano,.pedtipo.t-modulo{border-color:#FF6A13;color:#FF6A13}
.lcmods{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 14px}

/* ===== Folha timbrada da empresa (PDF enviado em Opções → Dados básicos dos documentos) ===== */
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px}
@media (max-width:700px){.grid3{grid-template-columns:1fr}}
.tbseg{flex-wrap:wrap}
.tbprev{display:flex;align-items:center;gap:14px;margin:0 0 10px}
.tbprev img{width:96px;height:auto;border:1px solid var(--line);border-radius:4px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2)}
/* na tela: a folha aparece como fundo da primeira página, com o conteúdo dentro das margens */
.orcdoc.od-timbrado{position:relative;background:#fff;overflow:hidden}
.orcdoc.od-timbrado .od-fundo{position:absolute;top:0;left:0;width:100%;height:auto;pointer-events:none;z-index:0}
.orcdoc.od-timbrado .od-pg{position:relative;z-index:1}
.orcdoc.od-timbrado .od-tbcorpo{padding:var(--tb-sup) var(--tb-lat) var(--tb-inf)}
.orcdoc.od-timbrado .od-tbrod{margin:18px 0 0;font-size:10px;color:#5b6785;text-align:center}
@media print{
  .orcwin .orcdoc.od-timbrado{background:transparent;overflow:visible}
  /* position:fixed repete a folha em TODAS as páginas; a tabela reserva as margens de cima e de baixo em cada página */
  .orcwin .orcdoc.od-timbrado .od-fundo{position:fixed;top:0;left:0;width:210mm;height:297mm;object-fit:fill;z-index:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .orcwin .orcdoc.od-timbrado .od-hsp{height:var(--tb-sup)!important}
  .orcwin .orcdoc.od-timbrado .od-fsp{height:var(--tb-inf)!important}
  .orcwin .orcdoc.od-timbrado .od-tbcorpo{padding:0 var(--tb-lat)}
}

/* ===== Modelos de folha timbrada (10 modelos × claro/escuro; logo opcional) — cores da RESISTECH ===== */
.orcdoc.tbm{--od-azul:#0E1A3A;--od-laranja:#FF6A13;--od-amarelo:#FF981F;--od-claro:#F1F4FA}
/* a paleta escolhida em Opções troca --od-azul / --od-laranja / --od-amarelo (estilo na própria folha) */
.orcdoc.tbm .od-top{position:relative;overflow:hidden}
.orcdoc.tbm .od-top>*{position:relative;z-index:1}
.orcdoc.tb-semlogo .od-logo{display:none}
/* tom claro: cabeçalho branco, texto azul; rodapé claro */
.orcdoc.tbm.tb-claro .od-top{background:#fff;color:var(--od-azul)}
.orcdoc.tbm.tb-claro .od-emp h2{color:var(--od-azul)}
.orcdoc.tbm.tb-claro .od-emp p{color:#5b6785}
.orcdoc.tbm.tb-claro .od-logo{box-shadow:none;border:1px solid #e3e8f4}
.orcdoc.tbm.tb-claro .od-rod{background:#fff;color:#5b6785;border-top:3px solid var(--od-laranja)}
.orcdoc.tbm.tb-claro .od-rod span:last-child{color:var(--od-azul)}
/* tom escuro: cabeçalho azul-marinho, texto branco */
.orcdoc.tbm.tb-escuro .od-top{background:var(--od-azul);color:#fff}
.orcdoc.tbm.tb-escuro .od-emp h2{color:#fff}
.orcdoc.tbm.tb-escuro .od-emp p{color:#b9c6e6}
.orcdoc.tbm.tb-escuro .od-rod{background:var(--od-azul);color:#b9c6e6;border-top:5px solid var(--od-laranja)}
/* 1 · Faixa clássica */
.orcdoc.tb-m1 .od-faixa{height:7px;background:linear-gradient(90deg,var(--od-laranja),var(--od-amarelo))}
/* 2 · Barra lateral */
.orcdoc.tb-m2 .od-top{border-left:14px solid var(--od-laranja)}
.orcdoc.tb-m2.tb-claro .od-faixa{height:3px;background:var(--od-azul)}
.orcdoc.tb-m2.tb-escuro .od-faixa{height:3px;background:var(--od-amarelo)}
/* 3 · Minimalista */
.orcdoc.tb-m3 .od-top{padding:16px 28px}
.orcdoc.tb-m3 .od-emp h2{font-size:21px;letter-spacing:.04em;text-transform:uppercase}
.orcdoc.tb-m3 .od-logo{border-radius:8px;padding:5px}
.orcdoc.tb-m3 .od-logo img{width:64px;height:64px}
.orcdoc.tb-m3 .od-faixa{height:2px;background:var(--od-laranja)}
/* 4 · Centralizado */
.orcdoc.tb-m4 .od-top{flex-direction:column;text-align:center;gap:6px;padding:12px 28px}
.orcdoc.tb-m4 .od-logo{padding:5px}
.orcdoc.tb-m4 .od-logo img{width:46px;height:46px}
.orcdoc.tb-m4 .od-emp h2{font-size:20px}
.orcdoc.tb-m4 .od-emp p{display:inline-block;margin:0 7px;font-size:11.5px}
.orcdoc.tb-m4 .od-faixa{height:4px;width:38%;margin:0 auto;border-radius:4px;background:var(--od-laranja)}
.orcdoc.tb-m4.tb-escuro .od-faixa{margin-top:-4px}
/* 5 · Diagonal */
.orcdoc.tb-m5 .od-emp{max-width:58%}
.orcdoc.tb-m5 .od-top::before,.orcdoc.tb-m5 .od-top::after{content:"";position:absolute;top:0;bottom:0;right:0;z-index:0}
.orcdoc.tb-m5 .od-top::before{width:40%;background:var(--od-laranja);clip-path:polygon(22% 0,100% 0,100% 100%,0 100%)}
.orcdoc.tb-m5 .od-top::after{width:34%;background:var(--od-azul);clip-path:polygon(30% 0,100% 0,100% 100%,8% 100%)}
.orcdoc.tb-m5.tb-escuro .od-top::after{background:var(--od-amarelo)}
.orcdoc.tb-m5 .od-faixa{height:0}
/* 6 · Cartão */
.orcdoc.tb-m6 .od-head{padding:10px 18px 0;background:var(--od-claro)}
.orcdoc.tb-m6.tb-escuro .od-head{background:var(--od-azul)}
.orcdoc.tb-m6.tb-escuro .od-top{box-shadow:0 5px 0 var(--od-laranja),0 0 0 2px rgba(255,255,255,.18)}
.orcdoc.tb-m6 .od-top{border-radius:14px;padding:14px 22px;box-shadow:0 5px 0 var(--od-laranja)}
.orcdoc.tb-m6.tb-claro .od-top{border:2px solid var(--od-azul)}
.orcdoc.tb-m6 .od-faixa{height:10px;background:transparent}
/* 7 · Duas faixas */
.orcdoc.tb-m7 .od-head::before{content:"";display:block;height:8px;background:var(--od-azul)}
.orcdoc.tb-m7.tb-escuro .od-head::before{background:var(--od-laranja)}
.orcdoc.tb-m7 .od-top{padding:14px 28px}
.orcdoc.tb-m7 .od-faixa{height:4px;background:var(--od-laranja)}
.orcdoc.tb-m7.tb-escuro .od-faixa{background:var(--od-amarelo)}
/* 8 · Círculos */
.orcdoc.tb-m8 .od-emp{max-width:64%}
.orcdoc.tb-m8 .od-top::before,.orcdoc.tb-m8 .od-top::after{content:"";position:absolute;border-radius:50%;z-index:0}
.orcdoc.tb-m8 .od-top::before{width:170px;height:170px;right:-46px;top:-70px;background:var(--od-laranja);opacity:.92}
.orcdoc.tb-m8 .od-top::after{width:96px;height:96px;right:96px;bottom:-56px;background:var(--od-azul);opacity:.85}
.orcdoc.tb-m8.tb-escuro .od-top::after{background:var(--od-amarelo);opacity:.8}
.orcdoc.tb-m8 .od-faixa{height:3px;background:var(--od-laranja)}
/* 9 · Técnico (malha de engenharia) */
.orcdoc.tb-m9.tb-claro .od-top{background-image:linear-gradient(rgba(14,26,58,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(14,26,58,.07) 1px,transparent 1px);background-size:14px 14px}
.orcdoc.tb-m9.tb-escuro .od-top{background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:14px 14px}
.orcdoc.tb-m9 .od-top::after{content:"";position:absolute;right:22px;top:16px;width:44px;height:44px;border-top:3px solid var(--od-laranja);border-right:3px solid var(--od-laranja);z-index:0}
.orcdoc.tb-m9 .od-top::before{content:"";position:absolute;left:12px;bottom:12px;width:30px;height:30px;border-bottom:3px solid var(--od-laranja);border-left:3px solid var(--od-laranja);z-index:0}
.orcdoc.tb-m9 .od-faixa{height:2px;background:var(--od-laranja)}
/* 10 · Onda */
.orcdoc.tb-m10 .od-top{border-bottom-left-radius:50% 26px;border-bottom-right-radius:50% 26px;padding-bottom:26px}
.orcdoc.tb-m10.tb-claro .od-top{background:#F1F4FA;border-bottom:4px solid var(--od-laranja)}
.orcdoc.tb-m10.tb-escuro .od-top{border-bottom:5px solid var(--od-laranja)}
.orcdoc.tb-m10 .od-faixa{height:0}
/* miniaturas no formulário de escolha */
.tbmodelos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0 10px}
.tbmod{display:flex;flex-direction:column;gap:6px;padding:6px;border:2px solid var(--line);border-radius:10px;background:transparent;cursor:pointer;text-align:left;color:inherit;font:inherit}
.tbmod.on{border-color:#FF6A13;box-shadow:0 0 0 3px rgba(255,106,19,.25)}
.tbmod .tbthumb{display:block;height:44px;overflow:hidden;border-radius:6px;background:#fff;position:relative;border:1px solid #e3e8f4}
.tbmod .tbthumb .orcdoc{display:block;width:820px;max-width:none;transform:scale(.168);transform-origin:top left;border:0;border-radius:0;margin:0;pointer-events:none}
.tbmod b{font-size:12.5px}
.tbopts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:4px 0 6px}

/* paletas do timbre (amostras no formulário) */
.tbpaletas{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 4px}
.tbpal{display:flex;flex-direction:column;align-items:center;gap:4px;padding:5px 6px;border:2px solid var(--line);border-radius:10px;background:transparent;color:inherit;font:600 11px/1.1 var(--font);cursor:pointer;min-width:74px}
.tbpal.on{border-color:#FF6A13;box-shadow:0 0 0 3px rgba(255,106,19,.25)}
.tbpal i{display:flex;width:56px;height:18px;border-radius:5px;overflow:hidden}
.tbpal i b{flex:1}
.tbcores{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:6px 0 2px}
.tbcores label{display:flex;align-items:center;gap:6px;font-size:12.5px}
.tbcores input[type=color]{width:38px;height:28px;padding:0;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer}
/* folha inteira: na impressão o timbre vai de borda a borda (sem margem do navegador) */
@media print{.orcwin .orcdoc,.orcwin .orcdoc .od-head,.orcwin .orcdoc .od-rod{margin-left:0!important;margin-right:0!important}}
/* faixa da empresa no topo da página (logo pequeno + nome), discreta */
.empbar{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid var(--line);font:600 14px/1.2 var(--font);color:var(--ink);min-height:44px}
.empbar img{height:26px;width:auto;max-width:90px;object-fit:contain;background:#fff;border-radius:5px;padding:2px 4px}
.empbar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand span.sub:empty{display:none}
body:has(.login) .empbar{display:none}
@media(min-width:761px){.empbar{width:calc(100% - 258px);max-width:1480px;margin:0 0 0 258px;padding:10px clamp(24px,4vw,64px)}}
