/* Gestão de Alojamento — folha de estilos local (sem recursos externos). */
:root {
  --azul: #1f3a5f;
  --azul-escuro: #142740;
  --azul-claro: #e8eef6;
  --texto: #1d2733;
  --texto-suave: #5b6878;
  --linha: #d7dde5;
  --fundo: #f4f6f9;
  --branco: #ffffff;
  --ok: #1e7a4c;      --ok-fundo: #e3f4ea;
  --aviso: #8a5a00;   --aviso-fundo: #fff3d6;
  --erro: #a32020;    --erro-fundo: #fbe5e5;
  --info: #1f5fa6;    --info-fundo: #e4effb;
  --neutro: #55606e;  --neutro-fundo: #eceff3;
  /* situações das camas (sempre acompanhadas de texto) */
  --s-livre: #2e8b57;
  --s-fixo: #1f5fa6;
  --s-temporario: #7b4fb0;
  --s-inoperacional: #b23a3a;
  --s-obras: #b8860b;
  --s-bloqueada: #6b7280;
  --raio: 6px;
  font-size: 15px;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body {
  font-family: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  color: var(--texto); background: var(--fundo); line-height: 1.45;
}
a { color: var(--info); }
h1 { font-size: 1.45rem; margin: 0 0 .25rem; }
h2 { font-size: 1.12rem; margin: 1.6rem 0 .6rem; }
h3 { font-size: 1rem; margin: 1rem 0 .4rem; }
p { margin: .3rem 0 .8rem; }
.subtitulo { color: var(--texto-suave); margin-bottom: 1.2rem; }
.mono { font-family: Consolas, "Cascadia Mono", monospace; font-size: .92em; }
.suave { color: var(--texto-suave); }
.pequeno { font-size: .86rem; }
.direita { text-align: right; }
.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Estrutura */
.estrutura { display: grid; grid-template-columns: 232px 1fr; min-height: 100vh; }
.lateral { background: var(--azul-escuro); color: #dbe4ef; padding: 1rem .7rem; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.marca { display: flex; gap: .6rem; align-items: center; color: #fff; text-decoration: none; font-weight: 600; line-height: 1.15; margin: 0 .3rem 1.2rem; }
.marca-sigla { background: #fff; color: var(--azul-escuro); border-radius: 4px; padding: .35rem .4rem; font-weight: 800; letter-spacing: .5px; }
.lateral ul { list-style: none; margin: 0; padding: 0; }
.lateral li a { display: block; padding: .48rem .7rem; color: #dbe4ef; text-decoration: none; border-radius: var(--raio); font-size: .94rem; }
.lateral li a:hover { background: rgba(255,255,255,.08); color: #fff; }
.lateral li a.ativo { background: #fff; color: var(--azul-escuro); font-weight: 600; }
.principal { min-width: 0; display: flex; flex-direction: column; }
.topo { display: flex; justify-content: space-between; align-items: center; padding: .6rem 1.6rem; background: var(--branco); border-bottom: 1px solid var(--linha); }
.topo-inst { color: var(--texto-suave); font-size: .9rem; }
.topo-utilizador { display: flex; gap: 1rem; align-items: center; font-size: .9rem; }
.topo-utilizador form { margin: 0; }
.conteudo { padding: 1.4rem 1.6rem 3rem; max-width: 1400px; width: 100%; }
.conteudo-simples { min-height: 100vh; display: grid; place-items: center; padding: 1rem; }
.faixa-ambiente { background: var(--aviso-fundo); color: var(--aviso); border-bottom: 1px solid #f0d9a0; padding: .55rem 1.6rem; font-size: .9rem; }

/* Mensagens */
.mensagens { margin-bottom: 1rem; display: grid; gap: .4rem; }
.msg { padding: .65rem .9rem; border-radius: var(--raio); border-left: 4px solid; background: var(--branco); }
.msg-success { border-color: var(--ok); background: var(--ok-fundo); }
.msg-error { border-color: var(--erro); background: var(--erro-fundo); }
.msg-info { border-color: var(--info); background: var(--info-fundo); }
.msg-warning { border-color: var(--aviso); background: var(--aviso-fundo); }

/* Cabeçalho de página */
.cabecalho { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.acoes { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }

/* Botões */
.botao, button.botao, input[type=submit] {
  display: inline-flex; align-items: center; gap: .35rem; background: var(--azul); color: #fff; border: 1px solid var(--azul);
  padding: .45rem .9rem; border-radius: var(--raio); text-decoration: none; font: inherit; font-size: .92rem; cursor: pointer; white-space: nowrap;
}
.botao:hover { background: var(--azul-escuro); }
.botao.secundario { background: var(--branco); color: var(--azul); }
.botao.secundario:hover { background: var(--azul-claro); }
.botao.perigo { background: var(--erro); border-color: var(--erro); }
.botao.pequeno { padding: .25rem .55rem; font-size: .84rem; }
.botao:disabled { opacity: .5; cursor: not-allowed; }
button.ligacao { background: none; border: 0; color: var(--info); font: inherit; cursor: pointer; padding: 0; text-decoration: underline; }

/* Cartões */
.cartao { background: var(--branco); border: 1px solid var(--linha); border-radius: var(--raio); padding: 1rem 1.15rem; margin-bottom: 1rem; }
.cartao > h2:first-child, .cartao > h3:first-child { margin-top: 0; }
.grelha { display: grid; gap: 1rem; }
.g2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.g3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1000px) { .g2, .g3 { grid-template-columns: 1fr; } .estrutura { grid-template-columns: 1fr; } .lateral { position: static; height: auto; } }

/* Indicadores */
.indicadores { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .75rem; margin-bottom: 1.2rem; }
.indicador { background: var(--branco); border: 1px solid var(--linha); border-radius: var(--raio); padding: .75rem .9rem; text-decoration: none; color: inherit; display: block; }
a.indicador:hover { border-color: var(--azul); }
.indicador .valor { font-size: 1.6rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.15; }
.indicador .rotulo { color: var(--texto-suave); font-size: .86rem; }
.indicador.destaque { border-left: 4px solid var(--azul); }
.indicador.atencao { border-left: 4px solid var(--aviso); }
.secao-titulo { display: flex; align-items: baseline; justify-content: space-between; margin: 1.3rem 0 .6rem; }
.secao-titulo h2 { margin: 0; }
.atalhos { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.2rem; }

/* Tabelas */
.tabela-envolvente { overflow-x: auto; background: var(--branco); border: 1px solid var(--linha); border-radius: var(--raio); }
table { border-collapse: collapse; width: 100%; font-size: .92rem; }
th, td { padding: .5rem .65rem; border-bottom: 1px solid var(--linha); text-align: left; vertical-align: top; }
th { background: #f0f3f7; font-weight: 600; color: #334155; white-space: nowrap; }
tbody tr:hover { background: #f8fafc; }
tfoot td { font-weight: 700; background: #f8fafc; }
table.ficha th { width: 34%; background: transparent; font-weight: 500; color: var(--texto-suave); white-space: normal; }
.vazio { padding: 1.4rem; text-align: center; color: var(--texto-suave); }

/* Filtros e formulários */
.filtros { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; background: var(--branco); border: 1px solid var(--linha); border-radius: var(--raio); padding: .7rem .8rem; margin-bottom: 1rem; }
.filtros label { display: flex; flex-direction: column; font-size: .8rem; color: var(--texto-suave); gap: .15rem; }
input[type=text], input[type=search], input[type=email], input[type=number], input[type=date], input[type=password], input[type=month], input[type=file], select, textarea {
  font: inherit; font-size: .93rem; padding: .4rem .5rem; border: 1px solid #b9c3cf; border-radius: 5px; background: #fff; color: var(--texto); max-width: 100%;
}
textarea { width: 100%; }
input:focus, select:focus, textarea:focus, .botao:focus, a:focus { outline: 3px solid #9cc0ea; outline-offset: 1px; }
.formulario .campo { margin-bottom: .85rem; }
.formulario .campo > label { display: block; font-weight: 600; font-size: .9rem; margin-bottom: .2rem; }
.formulario .campo input:not([type=checkbox]):not([type=radio]), .formulario .campo select { width: 100%; max-width: 520px; }
.formulario .ajuda { color: var(--texto-suave); font-size: .82rem; margin-top: .15rem; }
.formulario .erro, .erros-form { color: var(--erro); font-size: .86rem; }
.erros-form { background: var(--erro-fundo); padding: .5rem .7rem; border-radius: 5px; margin-bottom: .8rem; }
.formulario .obrigatorio::after { content: " *"; color: var(--erro); }
.formulario ul.escolhas, .formulario .campo ul { list-style: none; padding: 0; margin: .2rem 0; columns: 2; }
.formulario .campo ul li { break-inside: avoid; margin-bottom: .2rem; }
.formulario .campo ul label { font-weight: 400; }
.linha-form { display: flex; gap: 1rem; flex-wrap: wrap; }
.linha-form > .campo { flex: 1 1 220px; }
fieldset { border: 1px solid var(--linha); border-radius: var(--raio); padding: .7rem 1rem; margin: 0 0 1rem; }
legend { font-weight: 600; padding: 0 .3rem; }
.form-inline { display: inline; margin: 0; }

/* Estados (sempre com texto + ícone, nunca só cor) */
.estado { display: inline-flex; gap: .3rem; align-items: center; padding: .08rem .5rem; border-radius: 999px; font-size: .82rem; font-weight: 600; white-space: nowrap; border: 1px solid transparent; }
.estado-ok { background: var(--ok-fundo); color: var(--ok); border-color: #bfe3cf; }
.estado-erro { background: var(--erro-fundo); color: var(--erro); border-color: #f1c2c2; }
.estado-aviso { background: var(--aviso-fundo); color: var(--aviso); border-color: #f0d9a0; }
.estado-info { background: var(--info-fundo); color: var(--info); border-color: #bcd5f2; }
.estado-neutro { background: var(--neutro-fundo); color: var(--neutro); border-color: #d5dae1; }

/* Etapas (vistos de controlo) */
.etapas { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.etapa { display: grid; grid-template-columns: 2rem 1fr auto; gap: .6rem; align-items: start; padding: .55rem .7rem; border: 1px solid var(--linha); border-radius: var(--raio); background: #fff; }
.etapa .visto { width: 1.7rem; height: 1.7rem; border-radius: 50%; display: grid; place-items: center; font-weight: 700; border: 2px solid var(--linha); color: var(--texto-suave); }
.etapa.concluida .visto { background: var(--ok); border-color: var(--ok); color: #fff; }
.etapa.com_problema .visto { background: var(--erro); border-color: var(--erro); color: #fff; }
.etapa.em_curso .visto { border-color: var(--info); color: var(--info); }
.etapa.nao_aplicavel { opacity: .7; }
.etapa .det { font-size: .84rem; color: var(--texto-suave); }
.proxima { background: var(--info-fundo); border: 1px solid #bcd5f2; padding: .6rem .8rem; border-radius: var(--raio); margin-bottom: 1rem; }

/* Esquema visual */
.legenda { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin: .4rem 0 1rem; font-size: .86rem; }
.legenda .sit { font-size: .8rem; }
.sit { display: inline-block; padding: .1rem .45rem; border-radius: 4px; font-weight: 600; font-size: .78rem; color: #fff; }
.sit-livre { background: var(--s-livre); }
.sit-fixo { background: var(--s-fixo); }
.sit-temporario { background: var(--s-temporario); }
.sit-inoperacional { background: var(--s-inoperacional); background-image: repeating-linear-gradient(45deg, transparent 0 5px, rgba(255,255,255,.22) 5px 7px); }
.sit-obras { background: var(--s-obras); background-image: repeating-linear-gradient(-45deg, transparent 0 6px, rgba(0,0,0,.18) 6px 9px); }
.sit-bloqueada, .sit-outro, .sit-desativada { background: var(--s-bloqueada); }
.mapa-nav { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .6rem; }
.mapa-nav a { padding: .3rem .7rem; border: 1px solid var(--linha); border-radius: 999px; text-decoration: none; background: #fff; color: var(--texto); font-size: .88rem; }
.mapa-nav a.ativo { background: var(--azul); color: #fff; border-color: var(--azul); }
.mapa { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .75rem; }
.quarto { background: #fff; border: 1px solid var(--linha); border-radius: var(--raio); overflow: hidden; }
.quarto.q-obras { border: 2px dashed var(--s-obras); }
.quarto.q-inativo { opacity: .65; }
.quarto-cab { padding: .45rem .6rem; background: #f0f3f7; display: flex; justify-content: space-between; gap: .4rem; font-size: .86rem; }
.quarto-cab a { font-weight: 700; color: var(--texto); text-decoration: none; }
.quarto-cab .cap { color: var(--texto-suave); white-space: nowrap; }
.camas { display: grid; gap: 4px; padding: .45rem; }
.cama { display: block; border-radius: 5px; padding: .35rem .5rem; text-decoration: none; color: #fff; font-size: .82rem; line-height: 1.25; }
.cama .c-id { font-weight: 700; }
.cama .c-sit { display: block; font-size: .74rem; opacity: .95; }
.cama .c-ocupante { display: block; font-weight: 600; }
.cama:hover { filter: brightness(1.08); outline: 2px solid var(--azul-escuro); }
.cama.sit-livre { background: #fff; color: var(--s-livre); border: 2px solid var(--s-livre); }

/* Paginação */
.paginacao { display: flex; gap: .4rem; align-items: center; justify-content: flex-end; margin: .7rem 0; font-size: .9rem; }
.paginacao a, .paginacao span { padding: .25rem .55rem; border: 1px solid var(--linha); border-radius: 5px; background: #fff; text-decoration: none; }

/* Entrada */
.caixa-entrada { background: #fff; border: 1px solid var(--linha); border-radius: 10px; padding: 2rem; width: 100%; max-width: 400px; box-shadow: 0 6px 24px rgba(20,39,64,.08); }
.caixa-entrada h1 { margin-bottom: .2rem; }

/* Diversos */
dl.lista { display: grid; grid-template-columns: max-content 1fr; gap: .3rem 1rem; margin: 0; }
dl.lista dt { color: var(--texto-suave); }
dl.lista dd { margin: 0; }
.aviso-caixa { background: var(--aviso-fundo); border: 1px solid #f0d9a0; color: #5c3d00; padding: .7rem .9rem; border-radius: var(--raio); margin-bottom: 1rem; }
.erro-caixa { background: var(--erro-fundo); border: 1px solid #f1c2c2; color: #6d1515; padding: .7rem .9rem; border-radius: var(--raio); margin-bottom: 1rem; }
.ok-caixa { background: var(--ok-fundo); border: 1px solid #bfe3cf; color: #134d30; padding: .7rem .9rem; border-radius: var(--raio); margin-bottom: 1rem; }
details.acao { border: 1px solid var(--linha); border-radius: var(--raio); background: #fff; margin-bottom: .6rem; }
details.acao > summary { cursor: pointer; padding: .55rem .8rem; font-weight: 600; }
details.acao[open] > summary { border-bottom: 1px solid var(--linha); }
details.acao > div { padding: .8rem; }
pre.json { background: #f6f8fa; border: 1px solid var(--linha); padding: .6rem; border-radius: 5px; overflow-x: auto; font-size: .82rem; white-space: pre-wrap; }
.senha-temporaria { font-size: 1.3rem; font-family: Consolas, monospace; background: #f6f8fa; padding: .6rem .9rem; border: 1px dashed var(--azul); display: inline-block; user-select: all; }
.oculto { display: none; }
@media print {
  .lateral, .topo, .faixa-ambiente, .acoes, .filtros, .mensagens, details, button, select, textarea,
  input[type=checkbox], input[type=date], input[type=text], form.formulario, form.form-inline, form.em-linha { display: none !important; }
  .estrutura { display: block; }
  body { background: #fff; }
  .cartao, .indicador, table { break-inside: avoid; box-shadow: none; }
  .tabela-envolvente { overflow: visible; }
}
.estreito { max-width: 640px; }
.mt1 { margin-top: 1rem; }
.sit-servico { background: #0f766e; background-image: radial-gradient(rgba(255,255,255,.28) 1px, transparent 1.5px); background-size: 6px 6px; }
.quadro-resumo td.num, .quadro-resumo th.num { min-width: 4.5rem; }
.sit-camafria { background: #0369a1; background-image: repeating-linear-gradient(90deg, transparent 0 8px, rgba(255,255,255,.18) 8px 10px); }
.sit-marcada { background: #fff; color: #9a3412; border: 2px dashed #c2410c; }
.cama.sit-marcada { background: #fff7ed; color: #9a3412; border: 2px dashed #c2410c; }
.grupo-quarto { border: 1px solid var(--linha); border-radius: var(--raio); padding: .5rem .7rem; margin-bottom: .5rem; background: #fff; }
.grupo-quarto label { margin-right: 1rem; font-weight: 400; }
.qr { text-align: center; margin: 1rem 0; } .qr img { background: #fff; border: 1px solid var(--linha); border-radius: 6px; }
.em-linha { display: inline; margin-left: .6rem; }
.c-proxima { display: block; font-size: .72rem; color: #8a5a00; margin-top: .15rem; }
tr.linha-incompleta td { background: #fff7d6; }
.falta { color: #8a5a00; }
.legenda-incompleta { display: inline-block; width: .9em; height: .9em; background: #fff7d6; border: 1px solid #e5c76b; vertical-align: -1px; border-radius: 2px; }

label.caixa { display: flex; align-items: center; gap: .5rem; margin: .35rem 0; font-weight: 500; }
label.caixa input { width: auto; }
.lista-caixas .campo div > div label, .lista-caixas ul label { display: flex; align-items: center; gap: .5rem; font-weight: 400; }
.lista-caixas input[type=checkbox] { width: auto; }
.lista-caixas .campo > div[id], .lista-caixas ul { max-height: 22rem; overflow-y: auto; border: 1px solid var(--linha); border-radius: 6px; padding: .4rem .6rem; list-style: none; margin: 0; }

.info-alojado { margin-top: .4rem; padding: .5rem .7rem; border-left: 4px solid #2e7d32; background: #eef7ee; border-radius: 4px; font-size: .92rem; line-height: 1.45; }
.info-alojado a { display: inline-block; margin-top: .2rem; font-size: .85rem; }
.info-alojado.nao-encontrado { border-left-color: #b26a00; background: #fff6e5; }
