/*
 * FYB · Simulador — desenho da planta (passo "Planta" de "Construir num terreno")
 * Tudo dentro de .planta, para não interferir com o resto do site.
 */
.planta {
  --p-ink: #16385a; --p-ink2: #4a566b; --p-line: #c5d0e0; --p-sheet: #fff;
  --social: #ffe6b8; --priv: #d6e2f0; --serv: #d5e8c6; --circ: #f2f4f8;
  --mark: #f2800d; --p-note: #fff1cc; --drop: #1e7a4c;
  color: var(--p-ink);
}
.planta-grid { display: flex; flex-direction: column; gap: 1.5rem; }
.planta .colA, .planta .colB { display: contents; }
.planta .quick { order: 1; } .planta .sheet { order: 2; } .planta .editor { order: 3; } .planta .info { order: 4; }
@media (min-width: 980px) {
  .planta-grid { display: grid; grid-template-columns: 21rem minmax(0, 1fr); gap: 1.75rem; align-items: start; }
  .planta .colA, .planta .colB { display: flex; flex-direction: column; gap: 1.5rem; min-width: 0; }
  .planta .jump { display: none; }
}
.planta h3 { margin: 0 0 .3rem; font-weight: 700; font-size: 1.1rem; line-height: 1.2; color: var(--p-ink); }
.planta .hint { margin: 0 0 .75rem; color: var(--p-ink2); font-size: .92rem; line-height: 1.45; }
.planta .quick { display: grid; gap: 1rem; }
.planta .lbl { display: block; font-weight: 600; margin-bottom: .35rem; color: var(--ink, #1b2536); }
.planta .seg { display: flex; border: 1.5px solid var(--p-ink); border-radius: 2px; overflow: hidden; background: var(--p-sheet); }
.planta .seg button { flex: 1; border: 0; background: none; padding: .6rem .5rem; cursor: pointer; font: inherit; font-weight: 600; color: var(--p-ink); border-left: 1.5px solid var(--p-ink); min-height: 2.75rem; }
.planta .seg button:first-child { border-left: 0; }
.planta .seg button[aria-pressed="true"] { background: var(--p-ink); color: #fff; }

.planta #rooms { list-style: none; margin: 0 0 .75rem; padding: 0; display: grid; gap: .5rem; }
.planta .row { display: grid; grid-template-columns: minmax(0, 1fr) 5.75rem 2.5rem; gap: .4rem; align-items: center; }
.planta .two .row { grid-template-columns: minmax(0, 1fr) 4.7rem 5.5rem 2.4rem; }
.planta .row select, .planta .num input { width: 100%; min-height: 2.6rem; padding: .4rem .5rem; border: 1.5px solid #8b99b0; border-radius: 4px; background: var(--p-sheet); font: inherit; color: var(--ink, #1b2536); }
.planta .num { position: relative; display: block; }
.planta .num input { padding-right: 1.9rem; -moz-appearance: textfield; }
.planta .num input::-webkit-outer-spin-button, .planta .num input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.planta .num > span { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); color: var(--p-ink2); font-size: .85rem; pointer-events: none; }
.planta .num input:disabled { opacity: .65; }
.planta .rm, .planta .lib { min-height: 2.6rem; border: 1.5px solid var(--p-line); border-radius: 4px; background: none; cursor: pointer; font: inherit; color: var(--p-ink); }
.planta .rm { font-size: 1.25rem; line-height: 1; }
.planta .lib { padding: 0 .6rem; font-size: .9rem; }
.planta .rm:hover, .planta .lib:hover { border-color: var(--p-ink); }
.planta .sub { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) 5.75rem; gap: .4rem; align-items: center; padding-left: .75rem; border-left: 3px solid var(--priv); font-size: .92rem; color: var(--p-ink2); }
.planta .sub.fx { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; border-left-color: var(--mark); }
.planta .sub.fx > span:first-child { grid-column: 1 / -1; }
.planta .jump { display: block; margin-top: .5rem; text-align: center; padding: .6rem; color: var(--p-ink); font-weight: 600; }
.planta .sbtn.full { width: 100%; }

.planta .sheet { background: var(--p-sheet); border: 1.5px solid var(--p-ink); padding: .75rem; min-width: 0; }
.planta .opts { display: flex; gap: .4rem; flex-wrap: wrap; margin-bottom: .5rem; }
.planta .opts button[data-o] { flex: 1 1 5.2rem; border: 1.5px solid var(--p-line); border-radius: 4px; background: none; padding: .4rem .5rem; cursor: pointer; text-align: left; font: inherit; font-weight: 700; line-height: 1.2; color: var(--p-ink); }
.planta .opts small { display: block; font-weight: 400; color: var(--p-ink2); font-size: .8rem; }
.planta .opts button[aria-pressed="true"] { border-color: var(--p-ink); box-shadow: inset 0 -4px 0 var(--mark); }
.planta .manual { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .75rem; font-size: .92rem; color: var(--p-ink2); }
.planta .manual .sbtn { min-height: 2.2rem; padding: .35rem .9rem; width: auto; }
.planta .plans { display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.planta .plan { flex: 1 1 20rem; margin: 0; min-width: 0; }
.planta .plan figcaption { font-weight: 700; font-size: 1rem; color: var(--p-ink); }
.planta .plan svg { display: block; width: 100%; height: auto; overflow: visible; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.planta .empty { padding: 2rem 1rem; text-align: center; color: var(--p-ink2); }
.planta .edit { margin: .5rem 0 0; padding: .65rem .75rem; border: 1px dashed var(--p-ink2); }
.planta .edit .tap { margin: 0; color: var(--p-ink2); font-size: .92rem; }
.planta .edit h3 { margin: 0 0 .45rem; }
.planta .edrow { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.planta .edrow label { display: grid; gap: .2rem; font-size: .9rem; color: var(--p-ink2); }
.planta .edarea { margin: .45rem 0 0; font-weight: 600; }
.planta .edbtn { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .6rem; }
.planta .edbtn .sbtn { width: auto; flex: 0 1 auto; }

.planta .stamp { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); border: 1.5px solid var(--p-ink); margin-top: .5rem; }
.planta .stamp > div { padding: .4rem .6rem; border-right: 1px solid var(--p-ink); border-bottom: 1px solid var(--p-ink); margin: 0 -1px -1px 0; font-size: .82rem; line-height: 1.3; }
.planta .stamp b { display: block; font-weight: 700; font-size: .98rem; color: var(--p-ink); }
.planta .stamp span { color: var(--p-ink2); }
.planta .bar { display: flex; height: .55rem; border: 1px solid var(--p-ink); margin: .3rem 0 .1rem; max-width: 100%; }
.planta .bar i { display: block; height: 100%; } .planta .bar i:nth-child(odd) { background: var(--p-ink); }
.planta .legend { display: flex; flex-wrap: wrap; gap: .25rem .9rem; margin: .6rem 0 0; padding: 0; list-style: none; font-size: .85rem; color: var(--p-ink2); }
.planta .legend i { display: inline-block; width: .85rem; height: .85rem; border: 1px solid var(--p-ink); vertical-align: -.12rem; margin-right: .3rem; }

.planta .info { display: grid; gap: 1.25rem; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.planta .info > * { min-width: 0; }
.planta .sum { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: 0; margin: 0; border-top: 1.5px solid var(--p-ink); }
.planta .sum div { padding: .6rem .25rem .6rem 0; border-bottom: 1px solid var(--p-line); }
.planta .sum dt { font-size: .88rem; color: var(--p-ink2); }
.planta .sum dd { margin: 0; font-weight: 800; font-size: 1.3rem; line-height: 1.25; color: var(--p-ink); }
.planta .sum dd small { font-size: .9rem; font-weight: 500; color: var(--p-ink2); }
.planta .notes { margin: 0; padding: .75rem 1rem .75rem 2rem; background: var(--p-note); border-left: 4px solid var(--mark); list-style: disc; color: var(--ink, #1b2536); font-size: .95rem; }
.planta .notes li + li { margin-top: .3rem; }
.planta .tw { overflow-x: auto; }
.planta table { border-collapse: collapse; width: 100%; min-width: 23rem; font-variant-numeric: tabular-nums; font-size: .95rem; }
.planta th, .planta td { text-align: left; padding: .4rem .5rem .4rem 0; border-bottom: 1px solid var(--p-line); }
.planta th { font-weight: 700; border-bottom: 1.5px solid var(--p-ink); }
.planta td.r, .planta th.r { text-align: right; white-space: nowrap; }
.planta tr.c td { color: var(--p-ink2); }

/* desenho */
.planta .z-social { fill: var(--social); } .planta .z-privada { fill: var(--priv); } .planta .z-servico { fill: var(--serv); } .planta .z-circ { fill: var(--circ); }
.planta .c-social { stroke: var(--social); } .planta .c-privada { stroke: var(--priv); } .planta .c-servico { stroke: var(--serv); } .planta .c-circ { stroke: var(--circ); }
.planta .wall { fill: none; stroke: var(--p-ink); stroke-width: .1; }
.planta .outer { fill: none; stroke: var(--p-ink); stroke-width: .24; stroke-linecap: square; }
.planta .dash { stroke: var(--p-ink); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-dasharray: 5 4; opacity: .55; }
.planta .ghost { fill: none; stroke: var(--p-ink2); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-dasharray: 7 5; }
.planta .door { fill: none; stroke: var(--p-ink); stroke-width: 1; vector-effect: non-scaling-stroke; }
.planta .tread { fill: none; stroke: var(--p-ink); stroke-width: .8; vector-effect: non-scaling-stroke; opacity: .75; }
.planta .dim { fill: none; stroke: var(--p-ink2); stroke-width: 1; vector-effect: non-scaling-stroke; }
.planta .entr { fill: var(--p-ink); }
.planta svg text { font-family: var(--font, "Montserrat", system-ui, sans-serif); fill: var(--p-ink); font-weight: 500; }
.planta svg .t-n { font-weight: 700; }
.planta svg .t-d, .planta svg .t-dim { fill: var(--p-ink2); }
.planta .hit { fill: var(--mark); fill-opacity: 0; stroke: none; cursor: grab; }
.planta .hit.nodrag { cursor: pointer; }
body.dragging, body.dragging .planta .hit { cursor: grabbing; }
.planta .hit:hover { fill-opacity: .18; }
.planta .hit:focus { outline: none; }
.planta .hit:focus-visible, .planta .hit.sel { fill-opacity: .2; stroke: var(--mark); stroke-width: .14; }
.planta .dragghost { fill: var(--mark); fill-opacity: .5; stroke: var(--p-ink); stroke-width: .06; pointer-events: none; }
.planta .dropmark { fill: var(--drop); fill-opacity: .25; stroke: var(--drop); stroke-width: .2; stroke-linecap: round; pointer-events: none; }
.planta .lock { fill: var(--p-ink); } .planta .lock-s { fill: none; stroke: var(--p-ink); stroke-width: .045; }

/* Integração com os restantes passos */
.sim-app .tipo-topo { background: var(--white); border: 1px solid var(--steel); padding: clamp(1rem, 3vw, 1.5rem); margin-bottom: 1.2rem; }
.sim-app .tipo-topo legend { font-weight: 700; color: var(--navy); font-size: 1.1rem; margin-bottom: .6rem; padding: 0; }
.sim-app .planta-intro { color: var(--ink-2); margin-bottom: 1.2rem; max-width: 52rem; }
.sim-app .ligacao { background: none; border: 0; padding: 0; font: inherit; color: var(--navy); font-weight: 600; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.sim-app .da-planta { display: inline-block; margin-left: .4rem; padding: .05rem .45rem; background: var(--sky); color: var(--navy); font-size: .78rem; font-weight: 700; vertical-align: middle; }
.sim-app .custo-cab { padding: 1.1rem 1.2rem; background: var(--navy); color: var(--white); }
.sim-app .custo-cab .res-rot { opacity: .85; font-size: .88rem; }
.sim-app .custo-cab strong { display: block; font-size: 1.9rem; line-height: 1.15; font-weight: 800; margin: .15rem 0; }
.sim-app .custo-cab span { font-size: .88rem; opacity: .9; }
.sim-app .custo-corpo { padding: 1.1rem 1.2rem; display: grid; gap: .9rem; }
.sim-app .custo-corpo table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.sim-app .custo-corpo th { text-align: left; font-weight: 500; color: var(--ink-2); padding: .35rem .5rem .35rem 0; border-bottom: 1px solid var(--sky); }
.sim-app .custo-corpo td { text-align: right; font-weight: 600; padding: .35rem 0; border-bottom: 1px solid var(--sky); white-space: nowrap; }
.sim-app .custo-corpo tr.total th, .sim-app .custo-corpo tr.total td { font-weight: 800; color: var(--navy); border-bottom: 0; border-top: 1.5px solid var(--navy); }
.sim-app .custo-falta { background: var(--mist); padding: .8rem 1rem; }
.sim-app .custo-falta ul { list-style: disc; padding-left: 1.2rem; color: var(--ink-2); margin-top: .3rem; }
.sim-app .planta-resumo { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .8rem; }
.sim-app .planta-resumo img { display: block; width: 100%; max-width: 15rem; height: auto; border: 1px solid var(--steel); background: #fff; }
