.grelha-envolvente{overflow-x:auto;-webkit-overflow-scrolling:touch}
.grelha{
  width:100%;border-collapse:separate;border-spacing:4px;
  background:var(--superficie);border:1px solid var(--linha);
  border-radius:var(--raio);padding:8px;min-width:640px;
}
.grelha th{font-weight:600;font-size:.8rem;color:var(--tinta-suave);padding:.35rem 0}
.grelha thead th.hoje .dia-num{color:var(--verde-escuro)}
.dia-nome{display:block;text-transform:lowercase}
.dia-num{display:block;font-size:1.15rem;color:var(--tinta);font-weight:700}
.grelha th.hora{
  width:56px;text-align:right;padding-right:.6rem;
  font-variant-numeric:tabular-nums;font-size:.78rem;
}
.canto{width:56px}
.oculto{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.celula{
  display:block;width:100%;padding:.6rem .25rem;border-radius:8px;
  font:inherit;font-size:.85rem;text-align:center;border:1px solid transparent;
}
.celula.livre{
  background:var(--livre);color:var(--verde-escuro);
  border-color:#dcebcd;cursor:pointer;font-weight:600;
}
.celula.livre:hover{border-color:var(--verde)}
.celula.livre.escolhida{background:var(--verde);color:#fff;border-color:var(--verde-escuro)}
.celula.ocupada{background:#f1f2f0;color:var(--tinta-suave);font-size:.75rem}
.celula.passada{background:transparent;color:#d6dad3}
.resumo{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  background:var(--superficie);border-top:1px solid var(--linha);
  box-shadow:0 -6px 24px rgba(0,0,0,.06);padding:.9rem 1.25rem;
  display:flex;align-items:center;gap:1.5rem;max-width:1100px;margin:0 auto;
}
.resumo[hidden]{display:none}
.resumo-linhas{flex:1;min-width:0}
.resumo-detalhe{font-size:.8rem;color:var(--tinta-suave);margin-bottom:.3rem}
.resumo-valores{display:flex;gap:1.75rem}
.resumo-valores .etiqueta{display:block;font-size:.72rem;color:var(--tinta-suave)}
.resumo-valores strong{font-size:1.15rem}
.botao-principal{
  background:var(--verde);color:#fff;border:0;border-radius:var(--raio);
  padding:.8rem 1.5rem;font:inherit;font-weight:600;cursor:pointer;
  text-decoration:none;display:inline-block;
}
.botao-principal:hover{background:var(--verde-escuro)}
.pagina-erro{text-align:center;padding:4rem 0}
.pagina-erro .codigo{font-size:3rem;font-weight:800;color:var(--linha);margin:0}
.rodape{
  border-top:1px solid var(--linha);padding:1.25rem;
  display:flex;justify-content:space-between;gap:1rem;
  font-size:.8rem;color:var(--tinta-suave);
}
.aviso{color:#c08a2e}
@media (max-width:640px){
  main{padding:1rem .75rem 8rem}
  .topo nav{display:none}
  .resumo{flex-direction:column;align-items:stretch;gap:.75rem}
  .botao-principal{width:100%}
}
