article,aside{box-sizing:border-box}

article {float: left;width: 67.5%;}
aside{float:left;width:27.5%;margin-left:5%}

@media only screen and (max-width: 576px) {
	article { float: none; width: 100%; }
  aside { float: none; width: 100%; margin: 24px 0; }
}

:is(h1, h2, h3, h4, h5)::first-letter { text-transform: uppercase } 
.content{overflow:hidden}

/* GALLERY */
.mpi-gallery{display:grid;grid-template-columns:1fr;gap:.75rem;list-style:none;margin:unset}
.mpi-gallery li a{position:relative;display:block;width:100%;height:100%;border-radius:.5rem;overflow:hidden}
.mpi-gallery li a::before{content:"\f002";position:absolute;left:0;top:0;width:100%;height:100%;padding-top:20px;opacity:0;transition:opacity .3s,padding .3s;color:#fff;font-family:FontAwesome;font-size:1.75rem;display:flex;justify-content:center;align-items:center;background-color:#000000bf}
.mpi-gallery li a:focus-visible::before,.mpi-gallery li a:hover::before{padding-top:0;opacity:1}
.mpi-gallery li img{width:100%;aspect-ratio:16/9;object-fit:cover}
.mpi-gallery+p.alerta{font-size:.875rem;font-weight:700}

/* Uma coluna no celular, três lado a lado a partir de 576px, como no layout */
@media screen and (min-width: 576px) {
  .mpi-gallery{grid-template-columns:repeat(3,1fr)}
}

/* ASIDE — CARD DE ORÇAMENTO DA MPI */
/* display e box-sizing explícitos: doutor.css aplica "all: unset" em aside no
   site inteiro, o que zera o display. No desktop o float do próprio mpi.css
   devolvia block por tabela, mas abaixo de 576px o float é removido e o aside
   voltava a ser inline — aí fundo, padding e raio deixavam de formar o cartão. */
.mpi-aside--orcamento{display:block;box-sizing:border-box;padding:1.5rem;background-color:var(--mpi-aside-bg);border-radius:1rem}
.mpi-aside--orcamento .form-label{margin-bottom:.375rem;color:var(--dark);font-size:.875rem;font-weight:600}
.mpi-aside--orcamento .form-control{border-radius:.5rem;font-size:.875rem}
.mpi-aside--orcamento .form-control::placeholder{color:var(--bs-secondary-color);opacity:.7}
.mpi-form__opcional{color:var(--bs-secondary-color);font-size:.75rem;font-weight:400}
.mpi-form__obrigatorios{margin:0 0 1rem;color:var(--bs-secondary-color);font-size:.75rem;text-align:center}
.mpi-form__enviar{min-height:3rem;border-radius:.5rem;font-weight:600}

/* ASIDE */
.mpi-aside .aside-title a{display:block;padding-bottom:.5rem;color:var(--bs-body-color);border-bottom:2px solid var(--primary-color);transition:color var(--transition)}
.mpi-aside .aside-title a:focus,.mpi-aside .aside-title a:hover{color:var(--primary-color)}
.mpi-aside .nav .nav-item a{display:block;margin:unset;width:100%;padding:.5rem .75rem;color:var(--bs-body-color);font-size:.875rem;background-color:rgba(0,0,0,.05);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:var(--transition)}
.mpi-aside .nav .nav-item a:hover{color:var(--primary-color);border-color:currentColor}
.mpi-aside .nav .nav-item a.active,.mpi-aside .nav .nav-item a:focus{color:#fff;border-color:rgba(0,0,0,.5);background-color:var(--primary-color)}
.mpi-aside .aside-contato a.aside-contato-link{color:#fff;border-bottom:1px solid transparent;transition:var(--transition)}
.mpi-aside .aside-contato a.aside-contato-link:focus,.mpi-aside .aside-contato a.aside-contato-link:hover{border-color:currentColor}

/* TABS REGIOES */
.regioes-tabs{display:flex;flex-flow:row wrap;justify-content:space-between;width:100%;padding:.25rem;gap:.125rem}
.regioes-tabs .nav-link{min-height:38px;min-width:38px;display:inline-flex;align-items:center;justify-content:center; flex-grow: 1; padding:.5rem .625rem;font-size:.75rem;font-weight:700;color:var(--bs-body-color)}
.regioes-tabs .nav-link:hover{color:#fff;background-color:var(--grey)}
.regioes-tabs .nav-link.active,.regioes-tabs .nav-link:focus-visible{color:#fff;background-color:var(--primary-color)}
.regioes-content ul{padding:unset;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.5rem;margin: unset;max-height: 30rem;overflow-y: scroll;}
.regioes-content ul li{display:flex;align-items:center;justify-content:flex-start;font-size:.75rem;font-weight: bold;padding:.25rem 0;border-bottom:1px solid rgba(0,0,0,.25)}

/* COPYRIGHT */
.copyright { font-size: .75rem; color: var(--bs-body-color); margin-bottom: 1rem; }

/* No celular a lista de cidades fica em coluna única — com o auto-fit de 150px
   cabiam duas colunas e os nomes maiores quebravam em duas linhas. */
@media only screen and (max-width:767.98px) {
  .regioes-content ul{grid-template-columns:1fr}
  .regioes-content ul li{padding:.5rem 0}
}

/* ============ PÁGINAS RELACIONADAS ============ */
/* No celular os cards ficam mais estreitos e centralizados, com mais respiro
   entre eles do que o gutter padrão da grade. */
@media only screen and (max-width:767.98px) {
  .related-posting>.row{--bs-gutter-y:1.5rem}
  .related-posting>.row>*{max-width:80%;margin-inline:auto}
}

/* ==================== CTA MPI ==================== */
.cta-mpi{position:relative;z-index:2}
.cta__content{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center;width:100%;min-height:256px;padding:2.5rem 0;gap:.75rem}
.cta-mpi::after{content:"";bottom:0;left:50%;transform:translateX(-50%);background-color:var(--cta-mpi-bg);position:absolute;width:300%;height:100%;z-index:-1}
@media only screen and (min-width:768.05px) {
  .cta-mpi{transform:translateX(25%)}
}

/* No celular a faixa fica mais alta e a coluna de texto mais estreita, para o
   título e o parágrafo quebrarem como no layout, e a tipografia sobe junto. */
@media only screen and (max-width:767.98px) {
  .cta__content{min-height:auto;max-width:22rem;margin-inline:auto;padding-block:3.5rem;gap:1rem}
  .cta__content h2{font-size:1.375rem;line-height:1.3}
  .cta__content p{font-size:.9375rem;line-height:1.55}
  .cta__content .btn{--bs-btn-padding-y:.75rem;min-height:3rem;padding-inline:1.75rem;font-size:.9375rem;font-weight:600}
}