/* Parte de src/estilos/, carregado pelo index.html em ordem numerada.
   A ordem importa: regras de arquivos posteriores sobrepõem as anteriores,
   de propósito. */

/* ===== Visor do croqui: zoom, deslocamento e opacidade ===== */
.sketch-viewport{
  position:relative
}
/* o elemento acompanha a proporção do viewBox (1000x650) para a planta não distorcer
   e para o mapeamento tela <-> planta continuar linear em qualquer tamanho de tela */
.sketch-canvas{
  width:100%;
  height:auto;
  aspect-ratio:1000 / 650;
  touch-action:none
}
@supports not (aspect-ratio:1/1){
  .sketch-canvas{
    height:min(58vh,420px)
  }
}
.sketch-canvas.mode-pan{
  cursor:grab
}
.sketch-canvas.mode-draw{
  cursor:crosshair
}
.sketch-canvas.mode-edit{
  cursor:default
}
.sketch-zoom{
  position:absolute;
  right:8px;
  bottom:8px;
  display:grid;
  gap:5px
}
.sketch-zoom button{
  width:40px;
  height:40px;
  border:1px solid #d8d9da;
  border-radius:9px;
  background:#ffffffee;
  color:#595a5c;
  font-size:15px;
  font-weight:700;
  display:grid;
  place-items:center;
  box-shadow:0 2px 6px #5b171f22
}
.sketch-mode{
  display:flex;
  gap:4px;
  padding:3px;
  background:#f3f3f3;
  border-radius:9px;
  margin:0 0 8px
}
.sketch-mode button{
  flex:1;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#7c7e80;
  min-height:42px;
  font-size:9px;
  font-weight:700;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px
}
.sketch-mode button[aria-pressed="true"]{
  background:#fff;
  color:var(--blue);
  box-shadow:0 1px 4px #57181f20
}
.sketch-opacity{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:8px;
  font-size:8px;
  color:#88898b
}
.sketch-opacity input{
  flex:1;
  min-width:110px;
  accent-color:var(--blue);
  height:30px
}
.sketch-zoom-readout{
  font-size:8px;
  color:#88898b;
  min-width:62px;
  text-align:right;
  white-space:nowrap
}
.sketch-handle{
  cursor:nwse-resize
}
/* ===== Tela da planta: pintar setores (igual ao aplicativo de campo) ===== */
.plan-dialog{
  width:min(620px,calc(100% - 20px));
  max-height:94vh;
  background:#fafafb
}
.plan-topbar{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  background:#fff;
  border-bottom:1px solid #f0f0f0
}
.plan-topbar h2{
  flex:1;
  min-width:0;
  margin:0;
  font:800 17px/1.25 var(--display);
  color:#252526;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.plan-back,.plan-topbar-icon{
  width:40px;
  height:40px;
  flex:none;
  border:0;
  border-radius:10px;
  background:transparent;
  color:#252526;
  font-size:19px;
  display:grid;
  place-items:center
}
.plan-back:hover,.plan-topbar-icon:hover{
  background:#f4f4f4
}
.plan-body{
  background:#fafafb;
  padding-top:12px
}
.paint-bar{
  margin:0 0 10px
}
.paint-bar-label{
  display:block;
  font-size:11px;
  font-weight:600;
  letter-spacing:.02em;
  color:#87888a;
  margin-bottom:9px
}
/* Cada cor leva o próprio nome: a paleta se explica sozinha e o cargo de campo não
   precisa decorar o significado dos quadradinhos. A cor ativa é marcada por anel na
   própria cor mais um "✓" dentro do quadrado — antes o estado selecionado pintava o
   botão de verde, que se confundia com a cor "Executado". */
.paint-swatches{
  display:flex;
  gap:9px;
  flex-wrap:wrap
}
.paint-swatches button{
  flex:1 1 78px;
  max-width:132px;
  min-height:68px;
  padding:8px 6px;
  border:2px solid transparent;
  border-radius:15px;
  background:#f5f5f6;
  display:grid;
  justify-items:center;
  align-content:center;
  gap:5px;
  transition:border-color .12s,background .12s,box-shadow .12s
}
.paint-swatches button:hover{
  background:#f0f0f0
}
.paint-swatches i{
  display:block;
  width:26px;
  height:26px;
  border-radius:5px;
  box-shadow:inset 0 0 0 1px #0000001a
}
.paint-swatches i.round{
  border-radius:50%
}
.paint-swatches span{
  font-size:9px;
  font-weight:700;
  line-height:1.15;
  text-align:center;
  color:#686a6c
}
.paint-swatches i.tool{
  display:grid;
  place-items:center;
  color:#fff;
  font-size:15px;
  line-height:1
}
/* `.sketch-tools` e `.sketch-edit-tools` declaram `display:flex`, que ganha do
   `display:none` embutido no atributo [hidden]. Sem isto a fileira do desenho
   aparecia fora do modo de desenho. */
.sketch-tools[hidden],.sketch-edit-tools[hidden]{
  display:none
}
.paint-swatches button:disabled{
  opacity:.45
}
/* A grade da folha acomoda as quatro situações mais o total sem apertar. */
.rf-breakdown{
  grid-template-columns:repeat(auto-fit,minmax(84px,1fr))
}
.paint-swatches button[aria-pressed="true"]{
  background:#fff;
  border-color:var(--sw,#e82239);
  box-shadow:0 1px 8px #2525261f
}
.paint-swatches button[aria-pressed="true"] span{
  color:#252526
}
.paint-swatches button[aria-pressed="true"] i{
  display:grid;
  place-items:center
}
.paint-swatches button[aria-pressed="true"] i:after{
  content:"✓";
  font:800 15px/1 var(--display);
  color:var(--ink,#fff)
}
.plan-progress{
  margin-top:12px;
  background:#fff;
  border:1px solid #f0f0f0;
  border-radius:14px;
  padding:14px 15px;
  box-shadow:0 2px 10px #25252608
}
.plan-progress-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:10px
}
.plan-progress-head strong{
  font:800 14px/1 var(--display);
  color:#252526
}
.plan-progress-head b{
  font:800 26px/1 var(--display);
  color:#e82239
}
.plan-progress-track{
  height:9px;
  border-radius:99px;
  background:#eeeeee;
  overflow:hidden;
  margin:12px 0 13px
}
.plan-progress-track i{
  display:block;
  height:100%;
  border-radius:99px;
  background:#e8263c
}
/* Duas colunas fixas cabiam quando os rotulos eram "Finalizado" e
   "Liberado". Com "Impermeabilizacao: 1.234,5 m2" a linha pede cerca de
   200px, e metade de uma tela de 320px da 153px — o texto saia do lugar,
   porque o `display:flex` sem `wrap` nao deixa quebrar.

   `auto-fit` com minimo de 150px resolve os dois lados: no computador
   continuam duas ou tres colunas, e no celular vira uma coluna inteira, que
   e larga o bastante para o nome maior. O `flex-wrap` e a garantia de que,
   mesmo apertado, o valor desce para a linha de baixo em vez de vazar. */
.plan-progress-legend{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:7px 14px
}
.plan-progress-legend span{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:2px 7px;
  font-size:12px;
  color:#747577;
  min-width:0
}
.plan-progress-legend i{
  width:14px;
  height:14px;
  flex:none;
  border-radius:3px
}
.plan-progress-legend b{
  color:#252526;
  font-weight:700
}
.plan-progress-total{
  margin:12px 0 0;
  font-size:12px;
  color:#747577
}
.plan-tools{
  margin-top:12px;
  border:1px solid #ebebec;
  border-radius:12px;
  background:#fff;
  padding:0 11px
}
.plan-tools[open]{
  padding-bottom:11px
}
.plan-tools>summary{
  list-style:none;
  cursor:pointer;
  padding:12px 2px;
  font-size:11px;
  font-weight:700;
  color:#68696b;
  display:flex;
  align-items:center;
  gap:7px
}
.plan-tools>summary::-webkit-details-marker{
  display:none
}
.plan-dialog .sketch-zoom{
  right:10px;
  bottom:10px;
  gap:8px
}
.plan-dialog .sketch-zoom button{
  width:44px;
  height:44px;
  border:0;
  border-radius:13px;
  background:#f0f0f0ee;
  color:#252526;
  font-size:17px;
  box-shadow:0 1px 4px #25252614
}
.region-label{
  font:800 13px var(--display);
  fill:#271114;
  paint-order:stroke;
  stroke:#fff;
  stroke-width:4px;
  stroke-linejoin:round;
  pointer-events:none
}
.region-label.area{
  font-size:12px
}

/* ===== Lista das áreas, ao lado da planta ===== */
.plan-stage{
  display:grid;
  grid-template-columns:minmax(0,1fr) 190px;
  gap:10px;
  align-items:start
}
.plan-list{
  max-height:420px;
  overflow-y:auto;
  border:1px solid #e7e7e7;
  border-radius:10px;
  background:#fff;
  padding:8px
}
.plan-list-head{
  margin:2px 0 8px;
  font:700 10px var(--display);
  letter-spacing:.06em;
  text-transform:uppercase;
  color:#8a8b8d
}
.plan-list-empty{
  margin:0;
  font-size:10px;
  color:#9a9b9d
}
.plan-list-item{
  width:100%;
  display:flex;
  align-items:center;
  gap:8px;
  border:0;
  border-radius:8px;
  background:none;
  padding:8px 7px;
  text-align:left
}
.plan-list-item:hover{
  background:#f4f4f5
}
/* A área selecionada no desenho é a mesma que fica marcada na lista: sem esse
   vínculo, as duas visões da mesma planta contariam histórias diferentes. */
.plan-list-item.ativo{
  background:var(--brand-soft)
}
.plan-list-item i{
  flex:none;
  width:13px;
  height:13px;
  border-radius:4px
}
.plan-list-item strong{
  display:block;
  font:700 11px var(--display);
  color:var(--ink)
}
.plan-list-item small{
  display:block;
  font-size:9px;
  color:#8a8b8d
}
/* No celular a lista desce para baixo do desenho: 190px de coluna comeriam a
   planta, que é o que a pessoa foi ali ver. */
@media (max-width:760px){
  .plan-stage{
    grid-template-columns:minmax(0,1fr)
  }
  .plan-list{
    max-height:170px
  }
}
@media print{
  .plan-list{
    display:none
  }
}
