:root{
  --azul:#124d9b; --azul-esc:#0d3a75; --topo:#124d9b; --ouro:#f5b323; --base-forte:#ff6600; --girassol:#01321d; --fundo:#f4f6f9; --papel:#fff; --tinta:#1c2430; --suave:#667385; --linha:#e1e6ed;
  --verde:#1f8a4c; --vermelho:#c0392b; --amarelo:#b7791f; --fundo-verde:#e4f5ec; --fundo-vermelho:#fbe9e7; --fundo-amarelo:#fff3d6;
  --fundo-azul:#e6eef7; --barra:#c9d8ea; --raio:12px;
}
@media (prefers-color-scheme:dark){:root{
  --azul:#5b94e6; --azul-esc:#7aaaf0; --topo:#0f3d7c; --fundo:#11151b; --papel:#1b212a; --tinta:#e6eaf0; --suave:#98a4b5; --linha:#2a323d;
  --verde:#46c07a; --vermelho:#ef7a6c; --amarelo:#e0b04a; --fundo-verde:#17301f; --fundo-vermelho:#3a1f1c; --fundo-amarelo:#3a2f14;
  --fundo-azul:#1a2a3d; --barra:#2c4260}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fundo);color:var(--tinta);font:16px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:var(--azul)}
h1{font-size:1.4rem;margin:0 0 .3rem}h2{font-size:1.05rem;margin:0 0 .6rem}p{margin:.3rem 0}
small,.suave{color:var(--suave)}.ok{color:var(--verde)}.mau{color:var(--vermelho)}.atencao{color:var(--amarelo)}
.topo{background:var(--topo);border-bottom:3px solid var(--ouro);color:#fff;position:sticky;top:0;z-index:20}
.topo-in{max-width:1080px;margin:auto;padding:.55rem 1rem;display:flex;align-items:center;gap:.7rem}
.marca{font-weight:800;letter-spacing:.03em;color:#fff;text-decoration:none;white-space:nowrap}
.quem{margin-left:auto;font-size:.8rem;text-align:right;line-height:1.2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.quem small{color:#c7d6e8;display:block}
.sair{background:rgba(255,255,255,.18);color:#fff;border:0;border-radius:99px;padding:.35rem .75rem;font-size:.8rem;cursor:pointer}
.fila{display:none;background:#ffd23f;color:#1c2430;border-radius:99px;padding:.15rem .6rem;font-size:.78rem;font-weight:700;text-decoration:none;white-space:nowrap}
.fila.tem{display:inline-block}
#sem-sinal{display:none;background:var(--fundo-amarelo);color:var(--amarelo);text-align:center;padding:.4rem 1rem;font-size:.88rem;font-weight:600}
body.offline #sem-sinal{display:block}
main{max-width:1080px;margin:auto;padding:1rem 1rem 5rem}
.cartao{background:var(--papel);border:1px solid var(--linha);border-radius:var(--raio);padding:1rem;margin-bottom:.9rem;overflow-x:auto}
.grade{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));margin-bottom:1rem}
.duas{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));align-items:start}
.numero{background:var(--papel);border:1px solid var(--linha);border-radius:var(--raio);padding:.9rem}
.numero b{font-size:clamp(1rem,5.2vw,1.5rem);display:block;line-height:1.2;white-space:nowrap}.numero span{font-size:.85rem;color:var(--suave)}
.aviso{padding:.7rem .9rem;border-radius:10px;margin-bottom:.8rem;font-size:.95rem}
.aviso.ok{background:var(--fundo-verde);color:var(--verde)}.aviso.erro{background:var(--fundo-vermelho);color:var(--vermelho)}
.aviso.senha{background:var(--fundo-amarelo);color:var(--amarelo);font-family:ui-monospace,Menlo,monospace;word-break:break-all}
.aviso.info{background:var(--fundo-azul);color:var(--azul)}
label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.25rem;color:var(--suave)}
input,select,textarea,button{font:inherit}
input,select,textarea{width:100%;padding:.65rem .7rem;border:1.5px solid var(--linha);border-radius:10px;background:var(--papel);color:var(--tinta)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--ouro);outline-offset:1px}
input[type=checkbox]{width:auto}
.campo{margin-bottom:.8rem}
.campos{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin-bottom:.8rem}
.btn{display:inline-flex;align-items:center;justify-content:center;font-weight:700;border:0;border-radius:10px;padding:.7rem 1.1rem;cursor:pointer;background:var(--azul);color:#fff;text-decoration:none}
.btn.sec{background:transparent;color:var(--azul);border:1.5px solid var(--linha)}
.btn.mini{padding:.35rem .7rem;font-size:.85rem}.btn.largo{width:100%}
.acoes{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.selo{display:inline-block;font-size:.75rem;font-weight:700;padding:.12rem .55rem;border-radius:99px;background:var(--fundo-azul);color:var(--suave);white-space:nowrap}
.selo.verde{background:var(--fundo-verde);color:var(--verde)}.selo.vermelho{background:var(--fundo-vermelho);color:var(--vermelho)}.selo.amarelo{background:var(--fundo-amarelo);color:var(--amarelo)}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.5rem .45rem;border-bottom:1px solid var(--linha);vertical-align:middle}
th{font-size:.72rem;color:var(--suave);text-transform:uppercase;letter-spacing:.03em}.n{text-align:right;white-space:nowrap}
.barra{height:7px;border-radius:4px;background:var(--barra);min-width:2px}.barra.e{background:var(--verde)}.barra.s{background:var(--vermelho)}
.lista{list-style:none;margin:0;padding:0}
.lista li{display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:.65rem 0;border-bottom:1px solid var(--linha)}
.lista .t{min-width:0;flex:1}.lista .t b{display:block;overflow:hidden;text-overflow:ellipsis}.lista .t small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lista .v{text-align:right;white-space:nowrap;font-weight:700}
details>summary{cursor:pointer;font-weight:700;color:var(--azul)}
dialog{border:1px solid var(--linha);border-radius:var(--raio);background:var(--papel);color:var(--tinta);padding:1rem;width:min(92vw,420px)}
dialog::backdrop{background:rgba(0,0,0,.45)}
.pager{display:flex;gap:1rem;align-items:center;justify-content:center;margin-top:.8rem}
#toast{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);background:var(--tinta);color:var(--papel);padding:.7rem 1rem;border-radius:10px;font-size:.92rem;z-index:50;max-width:92vw;display:none}
.centro{max-width:420px;margin:12vh auto 0}
@media (max-width:560px){main{padding:.8rem .7rem 5rem}.marca small{display:none}th.esconde,td.esconde{display:none}}

.rolagem{max-height:68vh;overflow:auto;border:1px solid var(--linha);border-radius:8px}
.rolagem table th{position:sticky;top:0;background:var(--papel);z-index:1}
.rolagem td,.rolagem th{white-space:nowrap}
.rolagem td:nth-child(2){white-space:normal;min-width:11rem}

.matriz td:first-child,.matriz th:first-child{position:sticky;left:0;background:var(--papel);z-index:2}
.matriz select{min-width:3rem}

/* identidade: Nossa Casa (azul-marinho e dourado). Logos em static/brand: troque os arquivos mantendo os nomes e as cores acima. */
.marca{font-weight:700;color:#fff;text-decoration:none;font-size:1rem;letter-spacing:.01em}
.faixa-ouro{height:3px;background:var(--ouro);border-radius:2px;margin:.2rem 0 .8rem}

/* navegação: menu lateral no computador, barra inferior + gaveta no celular */
.menu-btn{display:none;background:transparent;border:0;color:#fff;font-size:1.5rem;line-height:1;padding:.1rem .3rem;cursor:pointer}
.sino{position:relative;color:#fff;text-decoration:none;font-size:1.25rem;line-height:1;padding:.2rem .3rem}
.sino b{position:absolute;top:-4px;right:-6px;background:var(--vermelho);color:#fff;font-size:.65rem;min-width:1.15rem;height:1.15rem;border-radius:99px;display:grid;place-items:center;padding:0 .25rem}
.lateral{position:fixed;top:49px;bottom:0;left:0;width:260px;background:var(--papel);border-right:1px solid var(--linha);overflow-y:auto;padding:.6rem .5rem 2rem;z-index:18}
.lateral .grupo{margin-bottom:.7rem}.lateral .grupo>span{display:block;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--suave);padding:.3rem .6rem}
.lateral a{display:flex;align-items:center;gap:.55rem;padding:.5rem .6rem;border-radius:9px;color:var(--tinta);text-decoration:none;font-weight:600;font-size:.92rem;border-left:3px solid transparent}
.lateral a i{font-style:normal;width:1.3rem;text-align:center}
.lateral a:hover{background:var(--fundo)}
.lateral a.on{background:var(--fundo-azul);color:var(--azul);border-left-color:var(--ouro)}
.lateral a .n{margin-left:auto;background:var(--vermelho);color:#fff;font-size:.68rem;border-radius:99px;padding:.05rem .45rem}
.veu,.barra-cel{display:none}
body.logado main{margin-left:260px;max-width:1080px;padding-left:1.2rem}
body.logado #sem-sinal{margin-left:260px}
.barra-cel a,.barra-cel button{flex:1;display:flex;flex-direction:column;align-items:center;gap:.1rem;font-size:.68rem;font-weight:700;color:var(--suave);text-decoration:none;background:none;border:0;padding:.45rem 0;cursor:pointer}
.barra-cel i{font-style:normal;font-size:1.3rem;position:relative}
.barra-cel i b{position:absolute;top:-3px;right:-10px;background:var(--vermelho);color:#fff;font-size:.6rem;border-radius:99px;padding:0 .3rem}
.barra-cel a.on{color:var(--azul)}.barra-cel a.on i{filter:none}
@media (max-width:899px){
  .menu-btn{display:block}
  .lateral{transform:translateX(-102%);transition:transform .2s;width:min(300px,84vw);top:49px;bottom:0;box-shadow:4px 0 20px rgba(0,0,0,.25);z-index:40}
  body.menu-aberto .lateral{transform:none}
  .veu{position:fixed;inset:49px 0 0 0;background:rgba(0,0,0,.4);z-index:39}
  body.menu-aberto .veu{display:block}
  body.logado main{margin-left:0;padding-left:.8rem;padding-bottom:5.5rem}
  body.logado #sem-sinal{margin-left:0}
  .barra-cel{display:flex;position:fixed;left:0;right:0;bottom:0;background:var(--papel);border-top:3px solid var(--ouro);z-index:30;padding-bottom:env(safe-area-inset-bottom)}
  .quem{display:none}
  #toast{bottom:4.8rem}
}
/* cartões da tela inicial */
.cartoes{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.8rem;margin:.8rem 0 1.2rem}
.cartao-atalho{display:block;background:var(--papel);border:1px solid var(--linha);border-radius:var(--raio);padding:.9rem 1rem;text-decoration:none;color:var(--tinta);border-top:3px solid var(--ouro);box-shadow:0 1px 2px rgba(6,23,61,.06)}
.cartao-atalho:hover{box-shadow:0 4px 14px rgba(6,23,61,.14)}
.cartao-atalho .ic{font-size:1.5rem}.cartao-atalho h3{margin:.2rem 0 .1rem;font-size:.82rem;color:var(--suave);text-transform:uppercase;letter-spacing:.05em}
.cartao-atalho b{display:block;font-size:1.25rem;color:var(--azul)}.cartao-atalho b.mau{color:var(--vermelho)}.cartao-atalho small{color:var(--suave)}
.aviso-item{display:flex;gap:.7rem;align-items:flex-start;padding:.7rem .9rem;border-radius:10px;margin-bottom:.5rem;text-decoration:none;color:var(--tinta);border-left:5px solid var(--linha);background:var(--papel)}
.aviso-item.critico{border-left-color:var(--vermelho);background:var(--fundo-vermelho)}.aviso-item.atencao{border-left-color:var(--ouro);background:var(--fundo-amarelo)}.aviso-item .ic{font-size:1.3rem}
.aviso-item b{display:block}.aviso-item small{color:var(--suave)}
.grade-obra{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem;margin:.5rem 0 1rem}

/* BrandLogo: imagem oficial sempre sobre branco, proporção preservada, sem filtro/recorte/efeito */
.brand-logo{display:block;width:100%;height:auto;object-fit:contain;background:#fff}
.entrada .brand-logo{max-width:520px;margin:0 auto .4rem;border-radius:8px}
.centro.entrada{max-width:560px}
.lateral-marca{display:block;background:#fff;border-radius:10px;margin:0 0 .6rem;padding:.2rem}
.hero-marca{background:#fff;border:1px solid var(--linha);border-radius:var(--raio);padding:.4rem;margin:0 0 .8rem;max-width:620px}
.cartao-atalho,.lateral a.on,.aviso-item{border-color:var(--linha)}
:focus-visible{outline:3px solid var(--ouro);outline-offset:2px}
table.calor td,table.calor th{text-align:center;padding:.35rem .3rem;font-size:.82rem}
table.calor td.n{min-width:2.3rem}

/* estrutura do DÔCE em Dia: cabeçalho de página, indicadores, painéis, trilha com Voltar */
.cabeca{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin:.2rem 0 1.1rem}
.eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--suave)}
h1{font-size:1.75rem;letter-spacing:-.03em;margin:.1rem 0 .2rem}
.cabeca p{color:var(--suave);margin:.2rem 0 0;font-size:.9rem}
.trilha{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;margin:0 0 .9rem;padding-bottom:.6rem;border-bottom:1px solid var(--linha);font-size:.82rem}
.trilha .voltar{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .8rem;border:1px solid var(--linha);border-radius:99px;background:var(--papel);color:var(--azul);font-weight:700;text-decoration:none;min-height:36px}
.trilha .voltar:hover{background:var(--fundo-azul)}.trilha .voltar small{color:var(--suave);font-weight:600}
.trilha nav{color:var(--suave)}.trilha nav a{color:var(--suave);text-decoration:none}.trilha nav a:hover{color:var(--azul)}.trilha nav b{color:var(--tinta)}
.cartao-atalho{position:relative;border-top:1px solid var(--linha);border-radius:12px;padding:1rem 1.05rem}
.cartao-atalho .chip,.cartao-atalho .ic{position:absolute;top:.8rem;right:.8rem;width:2.1rem;height:2.1rem;display:grid;place-items:center;border-radius:9px;background:var(--fundo-azul);font-style:normal;font-size:1.1rem}
.cartao-atalho h3{padding-right:2.6rem;margin:0 0 .5rem}
.cartao-atalho b{font-size:1.45rem;letter-spacing:-.02em;margin-top:.3rem}
.cartao-atalho:hover{border-color:var(--azul)}
.painel{background:var(--papel);border:1px solid var(--linha);border-radius:12px;padding:1rem 1.1rem;margin-bottom:1rem}
.painel-cab{display:flex;justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:.7rem}
.painel-cab h2{margin:0;font-size:1rem}.painel-cab p{margin:.15rem 0 0;font-size:.78rem;color:var(--suave)}
.painel-cab a{font-size:.8rem;font-weight:700;text-decoration:none;white-space:nowrap}
.lateral .grupo>.grupo-nome{display:block;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--suave);padding:.3rem .6rem;border-left:0;border-radius:6px}
.lateral .grupo>.grupo-nome:hover,.lateral .grupo>.grupo-nome.on{color:var(--azul);background:var(--fundo-azul)}
.lateral-fim{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:1rem;padding:.8rem .6rem 0;border-top:1px solid var(--linha)}
.lateral-fim .avatar{width:2rem;height:2rem;border-radius:50%;background:var(--azul);color:#fff;display:grid;place-items:center;font-weight:800}
.lateral-fim b{display:block;font-size:.85rem}.lateral-fim small{color:var(--suave);font-size:.72rem}.lateral-fim .versao{flex-basis:100%;font-size:.66rem}
@media (max-width:560px){h1{font-size:1.45rem}.trilha{gap:.5rem}.trilha nav{font-size:.75rem}}
@media (max-width:560px){.cartoes{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.cartao-atalho{padding:.8rem .8rem}.cartao-atalho h3{font-size:.7rem;padding-right:2.2rem}.cartao-atalho b{font-size:1.15rem}.cartao-atalho .chip{width:1.8rem;height:1.8rem;top:.6rem;right:.6rem}}

/* mapa do empreendimento */
.mapa-box{padding:.6rem}.mapa-barra{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.5rem;align-items:center}
.mapa-barra button{border:1px solid var(--linha);background:var(--papel);color:var(--azul);border-radius:8px;padding:.4rem .7rem;font-weight:700;cursor:pointer;min-height:38px}
.mapa-vp{position:relative;height:72vh;min-height:360px;overflow:hidden;background:#fff;border:1px solid var(--linha);border-radius:10px;touch-action:none;cursor:grab}
.mapa-vp:active{cursor:grabbing}.mapa-vp img{max-width:none;user-select:none;-webkit-user-drag:none}
.mapa-box:fullscreen{background:var(--papel);padding:.6rem}.mapa-box:fullscreen .mapa-vp{height:calc(100vh - 70px)}
.mapa-card{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1rem;align-items:center;text-decoration:none;color:var(--tinta)}
.mapa-card img{width:100%;border-radius:10px;border:1px solid var(--linha);background:#fff;display:block}
.mapa-card h2{margin:0 0 .3rem}.mapa-card p{color:var(--suave);font-size:.85rem}
@media (max-width:640px){.mapa-card{grid-template-columns:1fr}}
table.analitica td,table.analitica th{padding:.45rem .5rem;vertical-align:top}.nw{white-space:nowrap}.aviso-nota{color:var(--vermelho)}
.filtros{display:flex;gap:.4rem;flex-wrap:wrap;margin:.2rem 0 1rem}.filtros select,.filtros input{min-height:38px}.filtros input[type=search]{flex:1;min-width:200px}
.paginas{display:flex;justify-content:center;align-items:center;gap:.8rem;margin-top:.8rem}
