:root {
  --ink: #111714;
  --muted: #6d7772;
  --line: #dfe4e1;
  --soft: #f4f6f4;
  --green: #2f6a52;
  --green2: #75b899;
  --green3: #dfece5;
  --amber: #8a5a00;
  --amber-bg: #fdf3dc;
  --red: #9b2c1f;
  --red-bg: #fbe7e3;
  --panel-w: 460px;
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body { color: var(--ink); background: #fff; font: 14px/1.5 "DM Sans", sans-serif; }
h1, h2, h3 { font-family: "Manrope", sans-serif; margin: 0; line-height: 1.15; }
button { font: inherit; cursor: pointer; }

.layout { display: grid; grid-template-columns: 1fr var(--panel-w); height: 100vh; }
.map-wrap { position: relative; min-height: 0; }
#map { position: absolute; inset: 0; }

.panel { border-left: 1px solid var(--line); overflow-y: auto; display: flex; flex-direction: column; }
.panel-head { padding: 22px 24px 18px; border-bottom: 1px solid var(--line); }
.brand { font: 700 11px/1 "Manrope", sans-serif; letter-spacing: .12em; color: var(--green); }
.brand span { color: var(--muted); font-weight: 500; letter-spacing: .04em; }
.panel-head h1 { font-size: 26px; letter-spacing: -.03em; margin: 10px 0 6px; }
.sub { margin: 0 0 14px; color: var(--muted); font-size: 13px; }

.coord-form { display: flex; gap: 8px; }
.coord-form input { flex: 1; min-width: 0; padding: 9px 10px; border: 1px solid #cfd6d2; border-radius: 2px; font: inherit; }
.coord-form button, .ask-row button, .btn {
  padding: 9px 14px; border: 0; border-radius: 2px; background: var(--ink); color: #fff; font-weight: 700; font-size: 12px;
}
.btn.green { background: var(--green); }
button:disabled { opacity: .55; cursor: progress; }

.ficha { padding: 20px 24px; border-bottom: 1px solid var(--line); }
.empty { color: var(--muted); font-size: 13px; }
.kicker { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: #53605a; margin: 16px 0 5px; }
.kicker:first-child { margin-top: 0; }
.classe { display: inline-block; padding: 3px 8px; border-radius: 2px; font-size: 11px; font-weight: 700; background: var(--green3); color: var(--green); }
.classe.urbano { background: #f6e3dd; color: #8c3a27; }
.designacao { font-size: 13px; color: #3b4440; }
.categoria { font: 600 17px/1.3 "Manrope", sans-serif; }
.estado { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 10px; font: 600 10.5px/1.6 "DM Sans", sans-serif; vertical-align: 2px; border: 1px solid currentColor; }
.estado.direta, .estado.renomeada { color: var(--green); }
.estado.provavel { color: #5b6b2a; }
.estado.incerta { color: var(--amber); }
.estado.revogada, .estado.sem_correspondencia { color: var(--red); }
.nota { font-size: 12.5px; color: #4b5651; margin-top: 6px; }

.avisos { margin: 14px 0 0; padding: 0; list-style: none; }
.avisos li { background: var(--amber-bg); color: var(--amber); padding: 8px 10px; font-size: 12.5px; border-left: 3px solid #d9a63a; margin-top: 6px; }
.avisos li.erro { background: var(--red-bg); color: var(--red); border-color: var(--red); }

.cond { list-style: none; margin: 0; padding: 0; }
.cond-item { border-left: 3px solid var(--line); padding: 6px 10px; margin-bottom: 6px; font-size: 12.5px; }
.cond-item.impeditivo { border-color: var(--red); background: var(--red-bg); }
.cond-item.condiciona { border-color: #d9a63a; background: var(--amber-bg); }
.cond-item.informativo .cond-res { color: var(--muted); }
.cond-nome { font-weight: 700; }
.cond-regra { margin-top: 3px; color: #2d3531; }
.cond-fonte { margin-top: 3px; font-size: 11px; color: var(--muted); }

.artigos { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.artigos li { border-bottom: 1px solid var(--line); }
.art-toggle { width: 100%; text-align: left; background: none; border: 0; padding: 8px 0; display: flex; gap: 8px; align-items: baseline; color: var(--ink); }
.art-toggle:hover .art-titulo { text-decoration: underline; }
.art-id { font-weight: 700; min-width: 54px; color: var(--green); }
.art-titulo { flex: 1; }
.art-pag { color: var(--muted); font-size: 11.5px; }
.revogado .art-titulo { color: var(--muted); text-decoration: line-through; }
.art-texto { padding: 2px 0 12px 62px; font-size: 12.5px; color: #333b37; white-space: pre-line; }
.art-texto p { margin: 0 0 8px; }
.art-caminho { color: var(--muted); font-size: 11px; margin-bottom: 6px; }

details.comuns summary { cursor: pointer; font-size: 12.5px; color: #3b4440; margin: 14px 0 6px; }
.ficha-acoes { margin-top: 16px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.coords { color: var(--muted); font-size: 11.5px; }

.assistente { padding: 20px 24px; border-bottom: 1px solid var(--line); }
.assistente h2 { font-size: 16px; margin-bottom: 10px; }
.assistente textarea { width: 100%; padding: 10px; border: 1px solid #cfd6d2; border-radius: 2px; font: inherit; resize: vertical; }
.ask-row { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; gap: 10px; }
.check { font-size: 12.5px; color: #4b5651; display: flex; gap: 6px; align-items: center; }

.resposta { margin-top: 14px; }
.resposta .pergunta { font-size: 12.5px; color: var(--muted); margin-bottom: 8px; }
.resposta .corpo { font-size: 13.5px; }
.resposta .corpo p, .resposta .corpo ul, .resposta .corpo ol { margin: 0 0 10px; }
.resposta .corpo ul, .resposta .corpo ol { padding-left: 20px; }
.resposta .corpo h3, .resposta .corpo h4 { font-size: 14px; margin: 14px 0 6px; }
.resposta .corpo hr { border: 0; border-top: 1px solid var(--line); margin: 14px 0; }
.resposta .corpo blockquote { margin: 0 0 10px; padding: 6px 10px; background: var(--soft); border-left: 3px solid var(--green2); }
.cit { font-size: 10px; font-weight: 700; color: var(--green); text-decoration: none; padding: 0 1px; }
.cit:hover { text-decoration: underline; }
.fontes { margin-top: 14px; border-top: 1px solid var(--line); padding-top: 10px; }
.fontes h3 { font-size: 12px; text-transform: uppercase; letter-spacing: .07em; color: #53605a; margin-bottom: 6px; }
.fonte { font-size: 12.5px; padding: 6px 0; border-bottom: 1px dashed var(--line); }
.fonte.realce { background: var(--green3); }
.fonte blockquote { margin: 4px 0 0; padding-left: 10px; border-left: 2px solid var(--green2); color: #4b5651; white-space: pre-line; }
.uso { margin-top: 10px; font-size: 11px; color: var(--muted); }
.loading { display: flex; gap: 10px; align-items: center; color: var(--muted); font-size: 13px; }
.spinner { width: 16px; height: 16px; border: 2px solid var(--line); border-top-color: var(--green); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.erro-box { background: var(--red-bg); color: var(--red); padding: 10px; font-size: 13px; }

.disclaimer { padding: 16px 24px 24px; font-size: 11px; color: #8a938f; line-height: 1.5; margin-top: auto; }

.legend { position: absolute; left: 12px; bottom: 28px; background: rgba(255,255,255,.95); border: 1px solid var(--line); padding: 10px 12px; font-size: 11.5px; max-width: 260px; }
.legend summary { cursor: pointer; font: 700 11px/1.4 "Manrope", sans-serif; text-transform: uppercase; letter-spacing: .07em; color: #53605a; }
.legend[open] summary { margin-bottom: 6px; }
.legend .item { display: flex; align-items: center; gap: 7px; margin: 3px 0; }
.legend .sw { width: 13px; height: 13px; flex: none; border: 1px solid rgba(0,0,0,.25); }
.legend .sw.dash { background: repeating-linear-gradient(45deg, #fff, #fff 2px, #9b2c1f 2px, #9b2c1f 4px); }
.legend-sub { font: 700 10.5px/1.4 "Manrope", sans-serif; text-transform: uppercase; letter-spacing: .07em; color: #53605a; margin: 10px 0 4px; padding-top: 8px; border-top: 1px solid var(--line); }
.legend .toggle { cursor: pointer; }
.legend .toggle input { margin: 0; }
.legend .toggle .sw { border-width: 2px; border-style: dashed; }

@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; grid-template-rows: 55vh auto; height: auto; }
  .map-wrap { height: 55vh; }
  .panel { border-left: 0; border-top: 1px solid var(--line); overflow: visible; }
  .panel-head, .ficha, .assistente, .disclaimer { padding-left: 16px; padding-right: 16px; }
  .legend { max-width: 200px; font-size: 10.5px; bottom: 30px; }
  .art-texto { padding-left: 0; }
}

/* ---------------- pré-verificação documental ---------------- */
.pv { background: var(--soft); }
.pv-wrap { max-width: 1080px; margin: 0 auto; padding: 0 24px; }
.pv-head { background: #fff; border-bottom: 1px solid var(--line); padding: 22px 0 18px; margin-bottom: 18px; }
.pv-head h1 { font-size: 26px; letter-spacing: -.03em; margin: 10px 0 6px; }
.pv-head .sub { max-width: 760px; }
.pv-nav { display: flex; gap: 14px; font-size: 12.5px; margin-top: 10px; }
.pv-nav a { color: var(--green); }
.pv-nav span { font-weight: 700; }
.pv-card { background: #fff; border: 1px solid var(--line); padding: 18px 20px; margin-bottom: 14px; }
.pv-card h2 { font-size: 15px; margin-bottom: 10px; }
.pv-campos { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pv-card label { display: flex; flex-direction: column; gap: 5px; font-size: 12px; font-weight: 600; color: #3b4440; }
.pv-card label.check { flex-direction: row; font-weight: 400; margin-top: 10px; }
.pv-card select, .pv-card input[type=text], .pv-card input:not([type]), .pv-card textarea {
  padding: 8px 10px; border: 1px solid #cfd6d2; border-radius: 2px; font: inherit; font-weight: 400; }
.pv-ficheiros { margin-top: 12px; }
.pv-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }
.pv-chip { background: var(--green3); color: var(--green); padding: 3px 8px; font-size: 11.5px; border-radius: 2px; }
.pv-chip small { color: var(--muted); }
.pv-acoes { display: flex; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.pv-nota { color: var(--muted); font-size: 12px; margin: 6px 0 0; }
.pv-meta { color: #4b5651; font-size: 12.5px; margin: 0 0 10px; }
.pv-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.pv-badge { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11.5px; font-weight: 700; border: 1px solid currentColor; white-space: nowrap; }
.pv-badge.presente { color: var(--green); }
.pv-badge.falta { color: var(--red); background: var(--red-bg); }
.pv-badge.incompleto { color: var(--amber); background: var(--amber-bg); }
.pv-badge.confirmar { color: #5b6b2a; }
.pv-badge.na { color: var(--muted); }
.pv-cond { list-style: none; padding: 0; margin: 6px 0 0; font-size: 12.5px; }
.pv-cond li { padding: 3px 8px; border-left: 3px solid var(--line); margin-bottom: 3px; }
.pv-cond li.impeditivo { border-color: var(--red); background: var(--red-bg); }
.pv-cond li.condiciona { border-color: #d9a63a; background: var(--amber-bg); }
.pv-docs { margin: 0; padding-left: 18px; font-size: 12.5px; }
.pv-docs li { margin-bottom: 3px; }
.pv-tabela { width: 100%; border-collapse: collapse; font-size: 13px; }
.pv-tabela th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .07em; color: #53605a; border-bottom: 1px solid var(--line); padding: 6px; }
.pv-tabela td { border-bottom: 1px solid var(--line); padding: 10px 6px; vertical-align: top; }
.pv-linha.falta { background: #fdf6f4; }
.pv-linha.incompleto { background: #fffaf0; }
.pv-ref { color: var(--muted); font-size: 11.5px; width: 150px; }
.pv-nome { font-weight: 700; }
.pv-regime { font-weight: 400; font-size: 10.5px; color: var(--muted); border: 1px solid var(--line); padding: 0 5px; border-radius: 8px; margin-left: 4px; }
.pv-just { margin-top: 3px; color: #2d3531; }
.pv-evs { list-style: none; padding: 0; margin: 6px 0 0; font-size: 12px; }
.pv-evs li { margin-bottom: 4px; }
.pv-evs a { color: var(--green); font-weight: 600; }
.pv-evs q { color: #4b5651; font-style: italic; }
.pv-ver { font-size: 11px; white-space: nowrap; }
.pv-ver.ok { color: var(--green); }
.pv-ver.aviso { color: var(--amber); }
.pv-ver.erro { color: var(--red); }
.pv-item { border-left: 3px solid #d9a63a; background: #fffaf0; padding: 8px 12px; margin-bottom: 8px; font-size: 13px; }
.pv-art { font-weight: 700; color: var(--green); font-size: 12px; margin-bottom: 2px; }
.pv-decisao { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 8px; }
.pv-decisao button { background: #fff; border: 1px solid #cfd6d2; padding: 3px 9px; font-size: 11.5px; border-radius: 2px; }
.pv-decisao button:hover { border-color: var(--ink); }
.pv-decisao button.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.pv-dec-estado { font-size: 11.5px; color: var(--muted); }
.pv-correcao { display: inline-flex; gap: 4px; }
.pv-correcao input { padding: 3px 6px; border: 1px solid #cfd6d2; font: inherit; font-size: 12px; width: 240px; }
#pv-rascunho { width: 100%; font-size: 13px; line-height: 1.5; }
.pv-stats { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.pv-stats div { border: 1px solid var(--line); padding: 10px; }
.pv-stats b { display: block; font: 700 20px/1.2 "Manrope", sans-serif; }
.pv-stats span { font-size: 11.5px; color: var(--muted); }
@media (max-width: 760px) {
  .pv-wrap { padding: 0 16px; }
  .pv-campos { grid-template-columns: 1fr; }
  .pv-stats { grid-template-columns: 1fr 1fr; }
  .pv-ref { width: auto; }
}
