/*
  Orbis Jur — camada global de responsividade mobile
  Escopo: telas administrativas e portais, exceto calendário.
  Não altera regras de negócio, rotas, endpoints ou banco.
*/

:root {
  --orbis-mobile-gutter: clamp(.75rem, 3vw, 1rem);
  --orbis-mobile-radius: 14px;
  --orbis-touch-target: 42px;
}

html {
  max-width: 100%;
  overflow-x: hidden;
}

body {
  max-width: 100%;
  overflow-x: hidden;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

img,
svg,
video,
canvas,
iframe,
object,
embed {
  max-width: 100%;
}

iframe,
object,
embed {
  display: block;
}

.main-wrapper,
.content-body,
.portal-main,
.portal-card,
.portal-content,
.main-content,
.container,
.container-fluid,
.row,
.row > *,
.card,
.card-body,
.card-header,
.card-footer,
.modal-content,
.offcanvas,
.orbis-card,
.orbis-table-shell,
.orbis-page-header,
.official-page-header,
.official-page-header__main,
.official-page-header__actions,
.orbis-filter-bar,
.orbis-search-wrapper,
.form-inline,
.d-flex,
[class*="d-flex"] {
  min-width: 0;
}

.text-break,
.text-wrap,
.card,
.card-body,
.card-title,
.card-text,
.orbis-card,
.orbis-card *,
.portal-card,
.portal-card *,
.official-page-header,
.official-page-header *,
.orbis-page-header,
.orbis-page-header *,
.table td,
.table th,
.orbis-table td,
.orbis-table th,
.portal-table td,
.portal-table th,
.dropdown-menu,
.alert,
.badge,
.orbis-badge,
.portal-badge {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Utilitários reutilizáveis para novas telas. */
.page-header-responsive,
.actions-responsive,
.filters-responsive,
.form-grid-responsive {
  min-width: 0;
}

.actions-responsive,
.filters-responsive {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}

.form-grid-responsive {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 1rem;
}

.card-mobile {
  max-width: 100%;
  min-width: 0;
}

.table-mobile {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}

/* Cabeçalhos e ações do topo. */
.official-page-header,
.orbis-page-header,
.screen-list-header,
.page-header-responsive {
  max-width: 100%;
}

.official-breadcrumb-row,
.breadcrumb-row,
.breadcrumb {
  min-width: 0;
  max-width: 100%;
}

.breadcrumb {
  flex-wrap: wrap;
  row-gap: .25rem;
}

.official-page-header__title,
.orbis-page-header h1,
.orbis-page-header h2,
.page-title,
.card-title,
.h1,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: anywhere;
}

.official-page-header__subtitle,
.orbis-page-header p,
.page-subtitle,
.text-muted {
  max-width: 100%;
}

/* Cards e KPIs. */
.orbis-card-grid,
.orbis-card-grid-2,
.orbis-card-grid-3,
.orbis-card-grid-4,
.orbis-kpi-grid,
.kpi-grid,
.stats-grid,
.metrics-grid,
.dashboard-grid,
.module-grid,
.portal-grid,
.admin-grid,
.cards-grid,
.ctrl-kpi-grid,
.atendimentos-kpi-grid,
.crm-kpi-grid,
.orbisprev-grid,
.orbisprev-kpi-grid {
  max-width: 100%;
  min-width: 0;
}

.orbis-card,
.premium-card,
.portal-card,
.surface-card,
.metric-card,
.stats-card,
.form-card,
.control-card,
.detail-card,
.platform-module-card,
.hub-card-v2,
.card-kpi,
.kpi-card,
.ctrl-kpi-card,
.atendimentos-kpi-card,
.processos-kpi-card,
.orbisprev-card,
.orbisprev-kpi {
  max-width: 100%;
  min-width: 0;
}

.card h1,
.card h2,
.card h3,
.card h4,
.card h5,
.card h6,
.orbis-card h1,
.orbis-card h2,
.orbis-card h3,
.orbis-card h4,
.orbis-card h5,
.orbis-card h6,
.portal-card h1,
.portal-card h2,
.portal-card h3,
.portal-card h4,
.portal-card h5,
.portal-card h6,
.card .display-1,
.card .display-2,
.card .display-3,
.card .display-4,
.orbis-card .display-1,
.orbis-card .display-2,
.orbis-card .display-3,
.orbis-card .display-4,
.portal-card .display-1,
.portal-card .display-2,
.portal-card .display-3,
.portal-card .display-4 {
  max-width: 100%;
  overflow-wrap: anywhere;
}

/* Tabelas: no desktop preserva dropdowns; no mobile restringe o scroll ao bloco. */
.table-responsive,
.orbis-table-responsive,
.table-mobile,
.screen-list-table,
.portal-table-wrapper,
.dataTables_wrapper {
  max-width: 100%;
}

.table,
.orbis-table,
.portal-table,
.unified-table {
  max-width: 100%;
}

.table td,
.table th,
.orbis-table td,
.orbis-table th,
.portal-table td,
.portal-table th {
  vertical-align: middle;
}

.table td .btn,
.table th .btn,
.orbis-table td .btn,
.portal-table td .btn {
  white-space: normal;
}

/* DataTables e wrappers de listagem. */
.dataTables_wrapper {
  width: 100%;
}

.dataTables_wrapper .row,
.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_paginate {
  min-width: 0;
  max-width: 100%;
}

.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
  max-width: 100%;
}

/* Formulários e filtros. */
.form-control,
.form-select,
.input-group,
.select2,
.select2-container,
.select2-container--bootstrap-5,
textarea,
input,
select {
  max-width: 100%;
}

.form-control,
.form-select,
.select2-container--bootstrap-5 .select2-selection,
.select2-selection {
  min-height: var(--orbis-touch-target);
}

textarea.form-control {
  min-height: 96px;
}

.input-group > .form-control,
.input-group > .form-select {
  min-width: 0;
}

.orbis-filter-bar,
.filters-responsive,
.filter-bar,
.filters-bar,
.search-filter-bar,
.kanban-context-bar,
.crm-filter-bar,
.financeiro-filter-bar {
  flex-wrap: wrap;
  gap: .5rem;
}

.orbis-filter-bar .ms-auto,
.filters-responsive .ms-auto,
.filter-bar .ms-auto,
.filters-bar .ms-auto,
.search-filter-bar .ms-auto,
.kanban-context-actions,
.kanban-context-form,
.crm-filter-actions {
  min-width: 0;
  flex-wrap: wrap;
}

.orbis-search-wrapper,
.search-wrapper,
.search-box,
.kanban-field-area,
.kanban-field-fluxo,
.crm-search,
.orbis-kanban-search {
  max-width: 100%;
}

/* Botões e grupos de ações. */
.btn,
.orbis-btn,
.portal-btn-primary,
.portal-btn-light,
.btn-product {
  min-height: 38px;
  align-items: center;
  justify-content: center;
  white-space: normal;
}

.btn-group,
.btn-toolbar,
.actions-responsive,
.action-buttons,
.header-actions,
.page-actions,
.card-actions,
.table-actions,
.orbis-actions,
.official-page-header__actions,
.portal-actions {
  flex-wrap: wrap;
  min-width: 0;
}

.dropdown-menu {
  max-width: min(92vw, 420px);
}

.nav-tabs,
.nav-pills,
.docs-tabs,
.portal-tabs {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  flex-wrap: nowrap;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}

.nav-tabs .nav-link,
.nav-pills .nav-link,
.docs-tabs .nav-link,
.portal-tabs .nav-link {
  white-space: nowrap;
}

/* Modais e offcanvas. */
.modal-dialog {
  max-width: calc(100vw - 1rem);
  margin-right: auto;
  margin-left: auto;
}

.modal-body {
  min-width: 0;
  overflow-x: auto;
}

.offcanvas-end,
.offcanvas-start {
  max-width: 100vw;
}

/* Kanban/funil: scroll controlado no componente, não no body. */
.orbis-kanban-shell,
.kanban-board-wrapper,
.kanban-wrapper,
.kanban-container,
.funil-wrapper,
.funil-board,
.crm-board,
.pipeline-board,
.atendimentos-funil-list,
.crm-funil-list {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}

.orbis-kanban-board,
.kanban-board,
.board-columns,
.pipeline-columns,
.crm-columns,
.funil-columns {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

.orbis-kanban-card,
.kanban-card,
.pipeline-card,
.funil-card,
.crm-card,
.atendimento-card {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Portais externos. */
.portal-topbar,
.portal-main,
.portal-page-header,
.portal-card,
.portal-table,
.sidebar,
.main-content,
.header-bar {
  max-width: 100%;
}

.portal-nav-scroll,
.portal-mobile-nav {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Ajustes progressivos para tablets e celulares. */
@media (max-width: 991.98px) {
  .main-wrapper {
    width: 100%;
    max-width: 100vw;
    padding: 1rem;
  }

  .navbar-global {
    padding-right: 1rem;
    padding-left: 1rem;
  }

  .navbar-actions {
    gap: .5rem !important;
    min-width: 0;
  }

  .official-page-header,
  .page-header-responsive {
    flex-direction: column;
    align-items: stretch;
  }

  .official-page-header__main {
    width: 100%;
  }

  .official-page-header__actions,
  .actions-responsive,
  .header-actions,
  .page-actions {
    width: 100%;
    justify-content: flex-start;
  }

  .table-responsive,
  .orbis-table-responsive,
  .table-mobile,
  .screen-list-table,
  .portal-table-wrapper {
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch;
  }

  .table-responsive > table,
  .orbis-table-responsive > table,
  .table-mobile > table,
  .screen-list-table > table,
  .portal-table-wrapper > table {
    width: max-content;
    min-width: 100%;
  }

  .content-body > table,
  .portal-card > table,
  .card > table,
  .card-body > table,
  form > table,
  .modal-body > table {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .table th,
  .table td,
  .orbis-table th,
  .orbis-table td,
  .portal-table th,
  .portal-table td {
    padding: .72rem .75rem !important;
    font-size: .82rem !important;
  }

  .dataTables_wrapper .row {
    row-gap: .75rem;
  }

  .dataTables_wrapper .dataTables_length,
  .dataTables_wrapper .dataTables_filter,
  .dataTables_wrapper .dataTables_info,
  .dataTables_wrapper .dataTables_paginate {
    width: 100%;
    text-align: left !important;
  }

  .dataTables_wrapper .dataTables_filter label,
  .dataTables_wrapper .dataTables_length label {
    width: 100%;
    flex-wrap: wrap;
    align-items: stretch;
  }

  .dataTables_wrapper .dataTables_filter input {
    width: 100% !important;
    margin-left: 0 !important;
  }

  .orbis-filter-bar,
  .filters-responsive,
  .filter-bar,
  .filters-bar,
  .search-filter-bar,
  .kanban-context-bar,
  .crm-filter-bar,
  .financeiro-filter-bar {
    align-items: stretch !important;
  }

  .orbis-filter-bar > *,
  .filters-responsive > *,
  .filter-bar > *,
  .filters-bar > *,
  .search-filter-bar > *,
  .kanban-context-bar > *,
  .crm-filter-bar > *,
  .financeiro-filter-bar > * {
    min-width: 0;
  }

  .orbis-kanban-toolbar,
  .orbis-kanban-toolbar-left,
  .orbis-kanban-toolbar-right,
  .kanban-context-form,
  .kanban-context-actions {
    align-items: stretch;
    width: 100%;
  }

  .kanban-field-area,
  .kanban-field-fluxo,
  .orbis-kanban-search {
    flex: 1 1 220px;
    min-width: min(100%, 220px) !important;
  }
}

@media (max-width: 767.98px) {
  .main-wrapper {
    padding: .85rem;
  }

  .content-body {
    width: 100%;
  }

  .official-page-header,
  .portal-page-header,
  .orbis-page-header {
    padding: 1rem !important;
    border-radius: 16px !important;
    margin-bottom: 1rem !important;
  }

  .official-page-header__main {
    gap: .75rem;
  }

  .official-page-header__icon {
    width: 44px;
    height: 44px;
    border-radius: 14px;
    font-size: 1.1rem;
  }

  .official-page-header__title,
  .portal-page-header h1,
  .orbis-page-header h1,
  .orbis-page-header h2 {
    font-size: clamp(1.15rem, 5vw, 1.45rem) !important;
    line-height: 1.15 !important;
  }

  .official-page-header__subtitle,
  .portal-page-header p,
  .orbis-page-header p {
    font-size: .86rem !important;
  }

  .row.g-4,
  .row.g-3,
  .row.g-2 {
    --bs-gutter-x: .75rem;
  }

  .card,
  .orbis-card,
  .portal-card,
  .orbis-table-shell,
  .premium-card,
  .surface-card,
  .form-card,
  .detail-card,
  .control-card,
  .metric-card,
  .stats-card,
  .orbisprev-card {
    border-radius: var(--orbis-mobile-radius) !important;
  }

  .card-body,
  .portal-card,
  .orbis-card-body,
  .form-card,
  .detail-card {
    padding: 1rem !important;
  }

  .orbis-card-grid,
  .orbis-card-grid-2,
  .orbis-card-grid-3,
  .orbis-card-grid-4,
  .dashboard-grid,
  .module-grid,
  .portal-grid,
  .admin-grid,
  .cards-grid,
  .orbisprev-grid {
    grid-template-columns: 1fr !important;
  }

  .orbis-kpi-grid,
  .kpi-grid,
  .stats-grid,
  .metrics-grid,
  .ctrl-kpi-grid,
  .atendimentos-kpi-grid,
  .crm-kpi-grid,
  .orbisprev-kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .form-grid-responsive,
  .form-inline,
  .filters-grid,
  .financeiro-form-grid {
    grid-template-columns: 1fr !important;
  }

  .form-grid-responsive > *,
  .form-inline > *,
  .filters-grid > *,
  .financeiro-form-grid > * {
    grid-column: 1 / -1 !important;
  }

  form .row > [class*="col-"],
  .filters-responsive .row > [class*="col-"],
  .orbis-filter-bar .row > [class*="col-"] {
    flex: 0 0 100%;
    max-width: 100%;
  }

  .modal-dialog {
    margin: .5rem;
    max-width: calc(100vw - 1rem);
  }

  .modal-footer {
    align-items: stretch;
    flex-direction: column-reverse;
    gap: .5rem;
  }

  .modal-footer > * {
    width: 100%;
    margin: 0 !important;
  }

  .offcanvas-end,
  .offcanvas-start {
    width: min(100vw, 420px) !important;
  }

  .portal-topbar .navbar-nav,
  .portal-topbar .navbar-collapse {
    width: 100%;
  }

  .portal-nav-link {
    width: max-content;
  }

  .header-bar {
    align-items: flex-start !important;
    flex-direction: column;
    gap: .75rem;
  }
}

@media (max-width: 575.98px) {
  .main-wrapper {
    padding: .75rem;
  }

  .navbar-global {
    height: 64px;
    padding: 0 .75rem;
  }

  .navbar-brand-logo {
    width: 34px;
    height: 34px;
    flex-basis: 34px;
  }

  .navbar-brand-name {
    font-size: 1.05rem !important;
  }

  .navbar-brand-subtitle,
  .user-dropdown-toggle .d-none,
  .user-dropdown-toggle span:not(.user-avatar-small) {
    display: none !important;
  }

  .user-dropdown-toggle {
    padding: .25rem !important;
  }

  .official-page-header__actions .btn,
  .actions-responsive .btn,
  .actions-responsive .orbis-btn,
  .btn-mobile-full,
  .filter-actions .btn,
  .form-actions .btn,
  .portal-actions .btn,
  .portal-btn-primary,
  .portal-btn-light {
    width: 100%;
  }

  .btn-group:not(.dropdown),
  .btn-toolbar {
    width: 100%;
    display: flex;
  }

  .btn-group:not(.dropdown) > .btn,
  .btn-toolbar > .btn,
  .btn-toolbar .btn-group {
    flex: 1 1 auto;
  }

  .orbis-filter-bar,
  .filters-responsive,
  .filter-bar,
  .filters-bar,
  .search-filter-bar,
  .kanban-context-bar,
  .crm-filter-bar,
  .financeiro-filter-bar,
  .orbis-filter-bar .ms-auto,
  .filters-responsive .ms-auto,
  .filter-bar .ms-auto,
  .filters-bar .ms-auto,
  .search-filter-bar .ms-auto,
  .kanban-context-actions,
  .kanban-context-form,
  .crm-filter-actions {
    flex-direction: column;
    align-items: stretch !important;
    width: 100%;
  }

  .orbis-filter-bar select,
  .orbis-filter-bar input,
  .filters-responsive select,
  .filters-responsive input,
  .filter-bar select,
  .filter-bar input,
  .search-filter-bar select,
  .search-filter-bar input,
  .kanban-context-form select,
  .kanban-context-form input,
  .crm-filter-bar select,
  .crm-filter-bar input {
    width: 100% !important;
  }

  .orbis-search-wrapper,
  .search-wrapper,
  .search-box,
  .kanban-field-area,
  .kanban-field-fluxo,
  .crm-search,
  .orbis-kanban-search {
    width: 100% !important;
    min-width: 0 !important;
  }

  .table th,
  .table td,
  .orbis-table th,
  .orbis-table td,
  .portal-table th,
  .portal-table td {
    padding: .65rem .65rem !important;
    font-size: .78rem !important;
  }

  .table thead th,
  .orbis-table thead th,
  .portal-table thead th {
    letter-spacing: .02em !important;
    white-space: normal !important;
  }

  .table .dropdown,
  .orbis-table .dropdown,
  .portal-table .dropdown,
  .table-actions,
  .action-buttons {
    position: static;
  }

  .pagination {
    flex-wrap: wrap;
    row-gap: .35rem;
  }

  .pagination .page-link {
    min-width: 36px;
    text-align: center;
  }

  .dropdown-menu-end {
    right: 0 !important;
    left: auto !important;
  }

  .dropdown-menu[style*="width: 320px"],
  .notification-dropdown,
  #notificationDropdownContainer .dropdown-menu {
    width: min(92vw, 320px) !important;
  }

  .portal-page-header,
  .portal-card {
    padding: 1rem !important;
  }

  .portal-badge,
  .orbis-badge,
  .badge {
    white-space: normal !important;
  }

  .orbis-kanban-column,
  .kanban-column,
  .pipeline-column {
    width: min(82vw, 280px) !important;
    min-width: min(82vw, 280px) !important;
    max-width: min(82vw, 280px) !important;
  }

  .orbis-kanban-board,
  .kanban-board,
  .board-columns,
  .pipeline-columns,
  .crm-columns,
  .funil-columns {
    padding-bottom: .75rem;
  }
}

@media (max-width: 430px) {
  .main-wrapper {
    padding: .65rem;
  }

  .official-page-header,
  .portal-page-header,
  .orbis-page-header,
  .card-body,
  .portal-card,
  .orbis-card-body,
  .form-card,
  .detail-card {
    padding: .85rem !important;
  }

  .official-page-header__main {
    align-items: flex-start;
  }

  .official-page-header__icon {
    width: 40px;
    height: 40px;
  }

  .orbis-kpi-grid,
  .kpi-grid,
  .stats-grid,
  .metrics-grid,
  .ctrl-kpi-grid,
  .atendimentos-kpi-grid,
  .crm-kpi-grid,
  .orbisprev-kpi-grid {
    grid-template-columns: 1fr !important;
  }

  .card .fs-1,
  .card .fs-2,
  .orbis-card .fs-1,
  .orbis-card .fs-2,
  .portal-card .fs-1,
  .portal-card .fs-2 {
    font-size: 1.55rem !important;
  }

  .orbis-table-header,
  .screen-list-header,
  .card-header {
    padding: .85rem !important;
  }

  .orbis-table-title,
  .screen-list-title {
    font-size: 1rem !important;
  }

  .modal-header,
  .modal-body,
  .modal-footer {
    padding: .85rem !important;
  }

  .offcanvas-end,
  .offcanvas-start {
    width: 100vw !important;
  }

  .orbis-kanban-column,
  .kanban-column,
  .pipeline-column {
    width: min(86vw, 270px) !important;
    min-width: min(86vw, 270px) !important;
    max-width: min(86vw, 270px) !important;
  }
}

@media (max-width: 360px) {
  .main-wrapper {
    padding: .55rem;
  }

  .navbar-brand-text {
    display: none !important;
  }

  .official-page-header,
  .portal-page-header,
  .orbis-page-header,
  .card-body,
  .portal-card,
  .orbis-card-body,
  .form-card,
  .detail-card {
    padding: .75rem !important;
  }

  .btn,
  .orbis-btn,
  .portal-btn-primary,
  .portal-btn-light,
  .btn-product {
    padding-right: .65rem !important;
    padding-left: .65rem !important;
    font-size: .86rem !important;
  }

  .table th,
  .table td,
  .orbis-table th,
  .orbis-table td,
  .portal-table th,
  .portal-table td {
    padding: .58rem .55rem !important;
    font-size: .75rem !important;
  }

  .orbis-kanban-column,
  .kanban-column,
  .pipeline-column {
    width: min(88vw, 260px) !important;
    min-width: min(88vw, 260px) !important;
    max-width: min(88vw, 260px) !important;
  }
}
