*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-ui);
  -webkit-font-smoothing:antialiased;
}
.app{
  max-width:1100px;
  margin:0 auto;
  padding:32px 24px 100px;
}

.masthead{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  padding-bottom:18px;
  margin-bottom:4px;
  gap:24px;
  flex-wrap:wrap;
}
.masthead-sub{ font-size:12.5px; letter-spacing:0.04em; color:var(--ink-soft); margin:0 0 4px 0; text-transform:uppercase; }
.masthead-title{ font-family:var(--font-display); font-weight:700; font-size:26px; margin:0; color:var(--ink); }
.cong-name{ font-size:13px; color:var(--text-muted); text-align:right; line-height:1.5; }
.cong-name strong{ display:block; color:var(--ink); font-size:14.5px; font-weight:600; }

/* =========================================================
   CURSOR E SELEÇÃO DE TEXTO
   Regra invertida: por padrão NADA na interface é selecionável
   (então o navegador nunca mostra a barrinha de digitar), e
   liberamos a seleção apenas onde faz sentido copiar — campos
   digitáveis e blocos de conteúdo marcados abaixo.
   Isso vale para componentes novos automaticamente.
========================================================= */
html, body{ cursor: default; }

#appRoot, #appRoot *,
#loginScreen, #loginScreen *,
#platformAdminRoot, #platformAdminRoot *,
.modal-overlay, .modal-overlay *,
.pf-modal-overlay, .pf-modal-overlay *, .mt-screen, .mt-screen *,
.cd-overlay, .cd-overlay *, .pr-overlay, .pr-overlay *, .pwa-help-overlay, .pwa-help-overlay *,
.notif-panel, .notif-panel *,
.toast, .tmap, .tmap *{
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  cursor: default;
}

/* --- Campos digitáveis: barra de texto (exceção nº 1) --- */
:is(#appRoot, #loginScreen, #platformAdminRoot, .modal-overlay, .pf-modal-overlay, .mt-screen, .cd-overlay, .pr-overlay, .pwa-help-overlay, .notif-panel, .tmap)
:is(input, textarea, [contenteditable="true"]),
input, textarea, [contenteditable="true"]{
  -webkit-user-select: text;
  user-select: text;
  cursor: text;
}

/* --- Elementos clicáveis: mãozinha ---
   Usamos :is() com a casca do app para vencer a especificidade
   da regra geral acima em qualquer tela (app, login, modais). */
:is(#appRoot, #loginScreen, #platformAdminRoot, .modal-overlay, .pf-modal-overlay, .mt-screen, .cd-overlay, .pr-overlay, .pwa-help-overlay, .notif-panel, .tmap)
:is(button, a, summary, label[for], [role="button"], .btn, .icon-btn, .tab-btn, .link-btn,
    .assign-field, .pcard-row, .territory-card, .bus-card, .progress-dot, .dropdown-item,
    .notif-item, .group-chip, .lv-toggle, .sheet-filters button, .segmented button,
    .pf-choice, .pf-cong-item, .pf-check, .pf-seg button, .lv-remember, .lo-opt,
    input[type="checkbox"], input[type="radio"], input[type="submit"], input[type="button"],
    input[type="reset"], input[type="file"], input[type="range"], input[type="color"], select),
button, a, summary, label[for], [role="button"], .btn, .icon-btn, .tab-btn, .link-btn{
  cursor: pointer;
}
button[disabled], .btn[disabled], .btn.disabled, [aria-disabled="true"]{ cursor: not-allowed; }

/* --- Conteúdo que DEVE poder ser copiado (exceção nº 2) --- */
.selectable, .selectable *,
.pcard-grid, .pcard-grid *,
.pcard-table, .pcard-table *,
.sheet td, .sheet th,
.territory-bounds, .territory-hist-table, .territory-hist-table *,
.announcement-row, .event-row,
.bus-table, .bus-table *, .bus-pix-name,
.ro-part-name, .mydesig-meta, .mydesig-title,
#printArea, #printArea *{
  -webkit-user-select: text;
  user-select: text;
}
/* O texto copiável mantém cursor de seta, não de digitação */
.selectable, .pcard-grid, .pcard-table, .sheet td, .sheet th,
.territory-bounds, .announcement-row, .event-row, .bus-table{
  cursor: default;
}
