/* Celular no sol, de luva: letra grande, alto contraste, alvos de 56 px. */
:root{--azul:#283c78;--azul2:#3a4f8f;--ouro:#f06428;--laranja:#f06428;--fundo:#f4f6fa;--texto:#1c2433;--borda:#9aa7b2;--ok:#157a4e;--ruim:#bb3226;--aviso:#b45309}
*{box-sizing:border-box}
html{font-size:18px}
body{margin:0;background:var(--fundo);color:var(--texto);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;line-height:1.4}
h1{font-size:1.4rem;margin:.2rem 0 .6rem}h2{font-size:1.2rem;margin:0 0 .6rem}h3{font-size:1rem;margin:1rem 0 .4rem}
h2 small{font-weight:400;color:#444;font-size:.9rem}
small{display:block;font-size:.85rem;color:#333}
button,.button,.file{font:inherit;font-weight:600;min-height:48px;padding:.5rem 1rem;border-radius:10px;border:2px solid var(--azul);background:var(--azul);color:#fff;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}
button:disabled{opacity:.5;cursor:default}
.secondary{background:#fff;color:var(--azul)}
.ghost{background:transparent;border-color:transparent;color:var(--azul);min-height:40px;padding:.3rem .6rem}
.danger{color:var(--ruim)}
.big{width:100%;min-height:58px;font-size:1.1rem;margin:.4rem 0}
/* ação principal da tela em laranja GSV (texto branco grande e negrito) */
.big:not(.secondary),.bar button:not(.secondary){background:var(--laranja);border-color:var(--laranja)}
input,select,textarea{font:inherit;width:100%;min-height:52px;padding:.5rem .7rem;border:2px solid var(--borda);border-radius:10px;background:#fff;color:var(--texto)}
textarea{min-height:auto}
input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid var(--ouro);outline-offset:1px}
label{display:block;font-weight:600;margin:.7rem 0}
label input,label select,label textarea{margin-top:.25rem;font-weight:400}
.file{position:relative;overflow:hidden}
.file input{position:absolute;inset:0;opacity:0;cursor:pointer}
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:.6rem;padding:.4rem 1rem;background:#fff;color:var(--azul);border-bottom:1px solid #e4e8f0;box-shadow:0 1px 3px #1c243314}
.top .logo{height:36px;width:auto;display:block}
.top strong{font-size:1.15rem;letter-spacing:.03em}
.top .who{margin-left:auto;font-size:.9rem}
.top .ghost{color:var(--azul)}
.note{margin:.6rem 1rem;padding:.8rem 1rem;border-radius:10px;font-weight:600;cursor:pointer}
.note.ok{background:#dff3e6;color:var(--ok);border:2px solid var(--ok)}
.note.bad{background:#fde4e2;color:var(--ruim);border:2px solid var(--ruim)}
.autoria{max-width:40rem;margin:1.5rem auto 1rem;padding:0 1rem;color:#5b6475;font-size:.75rem;line-height:1.4;text-align:center}.autoria p{margin:.3rem 0}
.bad-text{color:var(--ruim);font-weight:600}
.muted{color:#444}
.card{background:#fff;border-radius:14px;padding:1rem;margin:.8rem 1rem;box-shadow:0 1px 3px #0002}
.card.alert{border:3px solid var(--ruim)}
.card.warnbox{border:3px solid var(--aviso)}
.narrow{max-width:460px;margin:2rem auto}
.center{text-align:center;padding:3rem}
.field{max-width:640px;margin:0 auto;padding-bottom:6rem}
.chip{display:inline-block;padding:.15rem .6rem;border-radius:99px;font-size:.8rem;font-weight:700;background:#dde4ea;color:#223}
.chip.enviado{background:#dbe9f6;color:var(--azul)}.chip.devolvido{background:#fde4e2;color:var(--ruim)}.chip.aprovado{background:#dff3e6;color:var(--ok)}.chip.warn{background:#fdecd9;color:var(--aviso)}
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;gap:.6rem;align-items:center;padding:.5rem 0;border-bottom:1px solid #dde}
.list li small{margin-left:auto}
.steps{display:flex;gap:.25rem;overflow-x:auto;padding:.6rem 1rem 0}
.steps button{flex:1;min-width:58px;flex-direction:column;gap:0;background:#fff;color:var(--azul);padding:.3rem;font-size:1rem}
.steps button small{color:inherit;font-size:.7rem;font-weight:600}
.steps button.on{background:var(--azul);color:#fff;box-shadow:inset 0 -5px 0 var(--laranja)}
.row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:.7rem 0;flex-wrap:wrap}
.lbl{font-weight:600}
.toggle{display:flex;gap:.4rem}
.toggle button,.shifts button{background:#fff;color:var(--azul);min-width:84px}
.toggle button.on,.shifts button.on{background:var(--azul);color:#fff}
.toggle button.on.danger{background:var(--ruim);border-color:var(--ruim);color:#fff}
.pick{list-style:none;margin:.3rem 0;padding:0;max-height:55vh;overflow:auto;border:2px solid var(--borda);border-radius:10px}
.pick li+li{border-top:1px solid #dde}
.pick button{width:100%;background:#fff;color:var(--texto);border:0;border-radius:0;display:grid;grid-template-columns:1fr auto;text-align:left;font-weight:400;padding:.6rem .8rem}
.pick button b{grid-column:1}.pick button small{grid-column:1;color:#444}.pick button span{grid-row:1/3;grid-column:2;font-size:1.6rem;color:var(--azul)}
.person,.activity,.photo{border:2px solid #cfd8df;border-radius:12px;padding:.7rem;margin:.6rem 0}
.person-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}
.x{background:#fff;color:var(--ruim);border-color:var(--ruim);min-width:48px;min-height:48px;padding:0}
.shifts{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0}
.shifts button{min-width:0;flex:1}
.times{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.times label{margin:.3rem 0}
.calc{margin-top:.3rem;font-size:.95rem}
.other summary{cursor:pointer;font-weight:600;padding:.6rem 0;color:var(--azul)}
.photo img{width:100%;max-height:50vh;object-fit:contain;background:#000;border-radius:8px}
.photo-buttons{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
select.need{border-color:var(--ruim)}
.summary{padding-left:1.2rem}.summary li{margin:.3rem 0}
.problems{list-style:none;padding:0}
.problems button{width:100%;justify-content:space-between;background:#fde4e2;color:var(--ruim);border-color:var(--ruim);margin:.25rem 0;text-align:left}
.bar{position:fixed;left:0;right:0;bottom:0;display:flex;gap:.6rem;padding:.6rem 1rem;background:#fff;box-shadow:0 -2px 6px #0002;z-index:5}
.bar button{flex:1;min-height:58px;font-size:1.1rem}
/* escritório (PC) */
.tabs{display:flex;gap:.3rem;padding:.6rem 1rem 0;max-width:1200px;margin:0 auto}
.tabs button{background:#fff;color:var(--azul)}.tabs button.on{background:var(--azul);color:#fff;box-shadow:inset 0 -4px 0 var(--laranja)}
.office{max-width:1200px;margin:0 auto;padding:0 0 3rem}
.office .card{margin:.8rem 1rem}
.filters{display:flex;gap:.6rem;padding:.8rem 1rem}
.grid{width:calc(100% - 2rem);margin:0 1rem;border-collapse:collapse;background:#fff;font-size:.9rem}
.card .grid{width:100%;margin:0}
.grid th,.grid td{padding:.45rem .6rem;border-bottom:1px solid #dde;text-align:left;vertical-align:top}
.grid tbody tr[tabindex]{cursor:pointer}.grid tbody tr[tabindex]:hover{background:#f3f7fb}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.8rem}
.thumbs img{width:100%;border-radius:8px}.thumbs figure{margin:0;font-size:.85rem}
.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.form-grid .wide{grid-column:1/-1}
.inline{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}.inline input,.inline select{flex:1;min-width:200px;width:auto}
.linkbox{border:3px solid var(--ouro)}
@media (max-width:640px){.form-grid{grid-template-columns:1fr}.toggle button{min-width:72px}}
.pct-row{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.pct-row input{max-width:140px}.pct-row b{font-size:1.2rem}
.group{border:2px solid #cfd8df;border-radius:10px;margin:.4rem 0}.group summary{padding:.8rem;font-weight:600;cursor:pointer;min-height:48px}.group .pick{border:0;border-top:1px solid #dde;border-radius:0;max-height:none}
.toggle.split{margin:.5rem 0}.toggle.split button{flex:1}
input.need{border-color:var(--ruim)}
.grid input{min-height:40px;padding:.3rem .5rem}.grid input[type=checkbox]{width:26px;min-height:26px}.grid .short{width:100px}

.status-row{display:flex;flex-wrap:wrap;gap:.3rem;margin:.5rem 0}.status-row button{flex:1;min-width:0;padding:.4rem;background:#fff;color:var(--azul);font-size:.9rem}
.status-row button.on{background:var(--azul);color:#fff}.status-row button.on.warn{background:var(--aviso);border-color:var(--aviso)}
.filters label{margin:0;flex:1}.filters{flex-wrap:wrap;align-items:flex-end}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.6rem;margin:0 1rem}
.kpis div{background:#fff;border-radius:12px;padding:.8rem;box-shadow:0 1px 3px #0002}.kpis b{display:block;font-size:1.3rem;color:var(--azul);overflow-wrap:anywhere}
.two{display:grid;grid-template-columns:1fr 1fr}@media (max-width:900px){.two{grid-template-columns:1fr}}

.perm{display:flex;align-items:center;gap:.4rem;font-weight:400;margin:.15rem 0;font-size:.9rem}.perm input{width:20px;min-height:20px;margin:0}

/* troca de passo e de aba sem tranco */
.field>section.card,.office>section.card{animation:entra .18s ease-out}
@keyframes entra{from{opacity:0;transform:translateY(6px)}}
@media (prefers-reduced-motion:reduce){.field>section.card,.office>section.card{animation:none}}
button{transition:background-color .12s,color .12s}button:active:not(:disabled){transform:scale(.98)}
/* celular: abas e tabelas rolam de lado em vez de empurrar a tela (botões fora da vista) */
.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.tabs button{flex:none;white-space:nowrap}
.card{overflow-x:auto}
/* celular: cada linha de tabela vira um cartão com o nome da coluna ao lado (data-label vem do main.js) */
@media (max-width:640px){
 html{font-size:16px}
 .office .card{margin:.6rem .5rem;padding:.8rem}
 .tabs{padding:.5rem .5rem 0}.tabs button{min-height:42px;padding:.3rem .8rem}
 .filters{padding:.6rem .5rem}
 .grid,.card .grid{width:calc(100% - 1rem);margin:0 .5rem;background:transparent}.card .grid{width:100%;margin:0}
 .grid thead{display:none}
 .grid tbody,.grid tr,.grid td{display:block}
 .grid tr{background:#fff;border:1px solid #d6dde6;border-radius:10px;margin:.5rem 0;padding:.4rem .7rem}
 /* rótulo flutuando no recuo de 40% (largura e margem em % do conteúdo, que é 60%): rótulo de 2 linhas aumenta a altura
    da célula em vez de invadir a de baixo (flow-root segura o float) */
 .grid td{display:flow-root;border:0;padding:.25rem 0 .25rem 40%;min-height:1.7em;overflow-wrap:anywhere}
 .grid td::before{content:attr(data-label);float:left;width:61.66%;margin-left:-66.67%;font-weight:600;color:#4a5468;font-size:.85rem}
 .grid td:not([data-label]),.grid td[data-label=""]{padding-left:0}
 .grid td:not([data-label])::before,.grid td[data-label=""]::before{display:none}
 .grid input,.grid select,input,select,textarea{font-size:16px}
 .grid .short{width:100%}
 .actions button,.inline button{flex:1 1 auto}
}

/* painel de saldos (Financeiro e Orçamentos) */
.lede{margin:.2rem 1rem .6rem}
.note.warn{background:#fdecd9;color:#7a3d00;border:2px solid var(--aviso);cursor:default}
.kpis.flat{margin:0 0 .8rem}.kpis.flat div{box-shadow:none;border:1px solid #dde}
.grid tr.grupo td{background:#f1f4f9}
.kpis b.bad-text{color:var(--ruim)}
/* celular: "R$ 2.223.608,52" cabe inteiro no cartão (antes quebrava o último dígito para a linha de baixo) */
@media (max-width:640px){.kpis b{font-size:1.1rem}.kpis div{padding:.7rem}}
.pbar{display:flex;height:12px;min-width:90px;background:#e8edf3;border-radius:6px;overflow:hidden}
.pbar i{display:block;height:100%}.s-real{background:var(--azul)}.s-ciclo{background:#6f86c6}.s-vivo{background:var(--laranja)}
.grid tr.feito td{color:#5b6475;text-decoration:line-through}.grid tr.feito td:first-child,.grid tr.feito td:last-child{text-decoration:none}
.grid.compacta{font-size:.82rem}.grid.compacta td small{font-size:.75rem}
/* só na tela larga: no celular o td precisa do recuo de 40% para o rótulo (antes o texto ficava por cima, 13/11) */
@media (min-width:641px){.grid.compacta th,.grid.compacta td{padding:.4rem .35rem}}
