/* Raízes v1.3.15 | revisão geral de usabilidade mobile.
 * Fora da árvore, o navegador mantém rolagem com um dedo e gestos nativos.
 * Dentro de #mapStage, a lógica própria de gestos da v1.3.14 continua ativa.
 */
:root { --rz-touch-min:44px; }
img,video,svg { max-width:100%; }
input,textarea,select,button { min-width:0; }
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
:where(.rz-page,.auth-page,.app-body,.public-home-wrap,.public-wrap) { overflow-wrap:anywhere; }
:where(.rz-page,.auth-page,.app-body) :where(h1,h2,h3,p,strong) { overflow-wrap:anywhere; }
:where(.app-body,.auth-page,.rz-page) :where(a,button,input,textarea,select) { -webkit-tap-highlight-color:transparent; }
:where(.auth-page,.rz-page,.app-body) :focus-visible { outline:3px solid #087449; outline-offset:2px; }
/* Tabelas continuam acessíveis por rolagem própria, sem alargar a viewport. */
.update-table-wrap, .access-panel { min-width:0; max-width:100%; }
.update-table-wrap { -webkit-overflow-scrolling:touch; overscroll-behavior-inline:contain; }
@media(max-width:800px) {
  html,body { max-width:100%; }
  /* A rolagem horizontal global NÃO é usada como substituto para o layout. */
  body { overflow-x:clip; }
  .app-shell, .main-content, .page-content, .workspace, .auth-card, .access-card,
  .account-wrap, .account-section, .rz-container, .rz-surface, .update-content,
  .update-card, .public-wrap, .public-home-wrap { min-width:0; max-width:100%; }
  .topbar { gap:10px; }
  .topbar .breadcrumb { display:none; }
  .topbar .search-container { flex:1 1 auto; width:auto; min-width:0; margin:0; }
  .topbar .search-container input { width:100%; height:46px; min-height:46px; font-size:16px; padding-right:14px; }
  .topbar .search-shortcut { display:none; }
  .topbar .search-results { max-width:calc(100vw - 80px); max-height:min(55dvh,400px); overflow-y:auto; overscroll-behavior:contain; }
  .heading-row .add-action { min-height:var(--rz-touch-min); }
  .stats-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
  .stats-row .stat { min-width:0; }
  .stat strong { font-variant-numeric:tabular-nums; }
  .workspace-top { align-items:flex-start; }
  .workspace-top > div:first-child { min-width:0; }
  .map-toolbar { display:flex; flex-wrap:wrap; gap:7px; }
  .map-toolbar .tool-btn { min-height:var(--rz-touch-min); }
  .map-stage { width:100%; max-width:100%; min-height:min(55dvh,380px); }
  #mapStage { touch-action:none; overscroll-behavior:contain; }
  #mapStage .map-empty { max-width:100%; }
  #mapStage .node { touch-action:none; }
  .orbit-legend .zoom-control button { min-width:var(--rz-touch-min); min-height:var(--rz-touch-min); }
  .rz-mobile-bottom :where(a,button) { touch-action:manipulation; }
  .sidebar .side-link { min-height:var(--rz-touch-min); touch-action:manipulation; }
  .sidebar .sidebar-bottom { padding-bottom:calc(20px + env(safe-area-inset-bottom,0px)); }
  .inspector { display:flex; flex-direction:column; min-height:0; }
  .inspector-heading { flex:0 0 auto; }
  .inspector-content { min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain; }
  .inspector :where(button,a) { touch-action:manipulation; }
  .inspector .inspector-close { min-width:var(--rz-touch-min); min-height:var(--rz-touch-min); }
  .people-list { max-width:100%; }
  .people-directory-card { align-items:center; gap:8px; }
  .people-directory-card .people-card { flex:1 1 0; min-width:0; min-height:var(--rz-touch-min); }
  .people-directory-card .profile-open-link { min-height:var(--rz-touch-min); display:inline-flex; align-items:center; padding:8px; margin:0; }
  .modal { width:100%; max-width:100%; max-height:calc(100dvh - env(safe-area-inset-top,0px));
     border-radius:20px 20px 0 0; margin:0; inset:auto 0 0; overflow:hidden; }
  .modal.wide { width:100%; max-width:100%; }
  .modal form { display:flex; flex-direction:column; min-height:0;
     max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)); }
  .modal .modal-header { flex:0 0 auto; padding:15px 16px 12px; }
  .modal .modal-header .icon-button { min-height:var(--rz-touch-min); min-width:var(--rz-touch-min); }
  .modal .modal-body { flex:1 1 auto; min-height:0; overflow-y:auto;
      -webkit-overflow-scrolling:touch; overscroll-behavior:contain; padding:15px 16px; }
  .modal .modal-footer { flex:0 0 auto; padding:10px 16px calc(12px + env(safe-area-inset-bottom,0px));
      background:#fff; gap:8px; }
  .modal .modal-footer .btn { flex:1 1 auto; min-height:var(--rz-touch-min); }
  .form-grid { grid-template-columns:minmax(0,1fr); }
  .form-grid .full { grid-column:1; }
  :where(.modal,.auth-card,.install-card,.account-section,.access-card)
      input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  :where(.modal,.auth-card,.install-card,.account-section,.access-card) textarea,
  :where(.modal,.auth-card,.install-card,.account-section,.access-card) select {
    max-width:100%; font-size:16px; min-height:var(--rz-touch-min);
  }
  input[type=file] { max-width:100%; }
  .auth-card,.install-card { width:min(100%,650px); }
  .auth-card .btn, .access-card .btn { min-height:var(--rz-touch-min); }
  .access-grid { grid-template-columns:1fr; }
  .access-panel { padding:14px 12px; overflow-wrap:anywhere; }
  .access-panel table { display:block; width:100%; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .access-panel :where(button,a) { min-height:var(--rz-touch-min); touch-action:manipulation; }
  .account-fields { grid-template-columns:minmax(0,1fr); }
  .account-section { padding:16px 12px; }
  .account-section .account-photo { flex-wrap:wrap; gap:14px; }
  .account-section .account-photo > :not(.account-avatar) { min-width:0; flex:1 1 190px; }
  .account-section .account-photo input[type=file] { width:100%; }
  .account-form button[type=submit] { min-height:var(--rz-touch-min); }
  .account-consent { min-width:0; }
  .account-consent input { flex:0 0 20px !important; }
  .rz-topline { flex-wrap:wrap; }
  .rz-topline nav { width:100%; display:flex; flex-wrap:wrap; gap:4px 12px; }
  .rz-topline nav a { min-height:var(--rz-touch-min); display:inline-flex; align-items:center; }
  .rz-searchbox>div { min-width:0; }
  .rz-searchbox button,.rz-btn,.rz-btn-secondary,.rz-btn-danger { min-height:var(--rz-touch-min); }
  .rz-result { min-width:0; min-height:60px; }
  .rz-actions :where(a,button) { min-height:var(--rz-touch-min); }
  .rz-person-hero { min-width:0; }
  .rz-columns { grid-template-columns:minmax(0,1fr); }
  .public-top { flex-wrap:wrap; }
  .public-top nav { display:flex; flex-wrap:wrap; max-width:100%; }
  .public-top nav a,.public-social a,.home-actions a,.home-pages a { min-height:var(--rz-touch-min); display:inline-flex; align-items:center; }
  .home-people-grid { grid-template-columns:minmax(0,1fr); }
  .home-person-card { min-width:0; }
  .public-search>div { display:flex; flex-wrap:wrap; min-width:0; }
  .public-search input { flex:1 1 180px; min-width:0; font-size:16px; }
  .public-search button { min-height:var(--rz-touch-min); }
  .update-status-cards,.update-cols { grid-template-columns:minmax(0,1fr); }
  .update-content { padding:20px 12px; }
  .update-card { padding:16px 12px; }
  .update-file-box { min-height:140px; }
  .update-table-wrap { width:100%; max-width:100%; }
  .update-table { min-width:650px; }
  .update-table td, .update-table th { white-space:normal; }
  .rz-install-pwa { max-width:calc(100vw - 24px); }
}
@media(max-width:390px) {
 .page-content { padding:14px 10px 18px; }
 .workspace-top { padding:12px 10px; }
 .map-toolbar { gap:5px; }
 .map-toolbar .tool-btn { padding:8px; }
 .stats-row { gap:5px; }
 .stats-row .stat { padding:10px 4px; }
 .stats-row .stat small { font-size:10px; }
 .home-actions a,.rz-actions a { width:100%; }
 .people-directory-card { flex-wrap:wrap; }
 .people-directory-card .profile-open-link { margin-left:auto; }
}
@media(max-height:560px) and (max-width:800px) {
 .modal { max-height:100dvh; }
 .modal form { max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)); }
 .modal .modal-header { padding-top:8px;padding-bottom:8px; }
 .modal .modal-body { padding-top:8px;padding-bottom:8px; }
}
@media(prefers-reduced-motion:reduce) {
 .modal,.rz-mobile-bottom,.sidebar,.inspector { scroll-behavior:auto; }
}

/* v1.3.17: corrige formulários cobertos pelo teclado virtual no Android/iOS.
   O VisualViewport mede a área realmente disponível após o teclado aparecer;
   o cabeçalho e os botões permanecem acessíveis e apenas o corpo rola. */
@media(max-width:800px) {
 dialog.modal.rz-keyboard-adapt[open] {
  position:fixed !important;
  inset:var(--rz-vv-top,0px) 0 auto 0 !important;
  box-sizing:border-box !important;
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  height:var(--rz-vv-height,100dvh) !important;
  max-height:var(--rz-vv-height,100dvh) !important;
  min-height:0 !important;
  padding:0 !important;
  margin:0 !important;
  overflow:hidden !important;
  border-radius:16px 16px 0 0;
 }
 dialog.modal.rz-keyboard-adapt[open] > form {
  height:100% !important;
  max-height:100% !important;
  min-height:0 !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
 }
 dialog.modal.rz-keyboard-adapt[open] .modal-header {
  flex:0 0 auto !important;
  padding:9px 16px !important;
  min-height:0 !important;
 }
 dialog.modal.rz-keyboard-adapt[open] .modal-header h2 {font-size:19px;line-height:1.2}
 dialog.modal.rz-keyboard-adapt[open] .modal-body {
  display:block;
  flex:1 1 0% !important;
  min-height:0 !important;
  overflow-y:auto !important;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch;
  padding:12px 16px 22px !important;
  scroll-padding-top:16px;
  scroll-padding-bottom:18px;
 }
 dialog.modal.rz-keyboard-adapt[open] .modal-footer {
  flex:0 0 auto !important;
  display:flex !important;
  padding:9px 12px max(9px,env(safe-area-inset-bottom,0px)) !important;
  gap:8px;
  background:#fff;
  border-top:1px solid #e7e9eb;
  position:relative;
  z-index:2;
 }
 dialog.modal.rz-keyboard-adapt[open] .modal-footer .btn {
  flex:1 1 0;
  min-width:0;
  min-height:44px;
 }
}
