/*
 * PLANOZERO Mobile System
 * Camada terminal, partilhada e exclusivamente responsiva.
 * Mantem os contratos HTML/JS existentes e nao altera o desktop.
 */

@media (max-width: 1120px) {
  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-header-actions {
    gap: 8px !important;
    min-width: 0 !important;
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-toggle {
    align-items: center !important;
    display: flex !important;
    flex: 0 0 44px !important;
    height: 44px !important;
    justify-content: center !important;
    margin: 0 !important;
    visibility: visible !important;
    width: 44px !important;
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-nav {
    box-shadow: 0 18px 36px rgba(11, 38, 61, .12);
    max-height: min(620px, calc(100dvh - 80px));
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-nav .pz-container {
    width: min(calc(100% - 24px), 720px);
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-list {
    align-items: stretch;
    display: grid !important;
    gap: 6px !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 6px 0 0 !important;
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-list > li,
  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-list > li > a {
    min-width: 0;
    width: 100%;
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-list > li > a {
    align-items: center;
    border: 1px solid rgba(11, 38, 61, .08);
    border-radius: 10px;
    display: flex;
    min-height: 44px;
    padding: 9px 11px;
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-actions {
    display: grid;
    gap: 8px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-actions .pz-btn {
    display: inline-flex !important;
    width: 100%;
  }
}

/* O menu do portal abre no fluxo, para baixo, em vez do drawer fixo 82vw x 100dvh. */
@media (max-width: 1024px) {
  body.pz-portal-page .pz-portal {
    display: block !important;
    min-height: 0 !important;
    overflow: visible !important;
    position: relative;
    width: 100%;
  }

  body.pz-portal-page .pz-portal-menu-button {
    align-items: center;
    display: inline-flex !important;
    margin: 8px 12px !important;
    min-height: 44px !important;
    padding: 10px 13px !important;
    position: relative !important;
    z-index: 2 !important;
  }

  body.pz-portal-page .pz-portal-sidebar {
    border-radius: 14px !important;
    box-shadow: 0 16px 38px rgba(4, 20, 33, .18) !important;
    display: none !important;
    height: auto !important;
    inset: auto !important;
    margin: 0 12px 10px !important;
    max-height: min(640px, 72dvh) !important;
    max-width: none !important;
    min-width: 0 !important;
    overflow: hidden !important;
    position: relative !important;
    top: auto !important;
    transform: none !important;
    transition: none !important;
    visibility: hidden !important;
    width: calc(100% - 24px) !important;
    z-index: 1 !important;
  }

  body.pz-portal-page .pz-portal-nav-toggle:checked ~ .pz-portal-sidebar {
    display: flex !important;
    transform: none !important;
    visibility: visible !important;
  }

  body.pz-portal-page .pz-portal-menu-backdrop {
    display: none !important;
  }

  body.pz-portal-page .pz-portal-brand {
    display: grid !important;
    gap: 4px 12px !important;
    grid-template-columns: auto minmax(0, 1fr) auto;
    padding: 14px 16px !important;
  }

  body.pz-portal-page .pz-portal-brand .pz-portal-kicker {
    align-self: center;
    grid-row: 1 / 3;
  }

  body.pz-portal-page .pz-portal-brand strong {
    white-space: normal !important;
  }

  body.pz-portal-page .pz-portal-brand .pz-small {
    align-self: center;
    grid-column: 3;
    grid-row: 1 / 3;
  }

  body.pz-portal-page .pz-portal-nav {
    display: grid !important;
    flex: 1 1 auto !important;
    gap: 5px 8px !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-height: min(450px, 54dvh) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    padding: 10px 12px !important;
  }

  /* Neutraliza o carrossel horizontal imposto pelo portal de cliente legado. */
  body.pz-portal-page .pz-portal[class*="pz-portal--"] .pz-portal-nav {
    display: grid !important;
    flex: 1 1 auto !important;
    flex-flow: row wrap !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    height: auto !important;
    max-height: min(450px, 54dvh) !important;
    min-width: 0 !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }

  body.pz-portal-page .pz-portal-nav-group {
    grid-column: 1 / -1;
    margin: 9px 6px 2px !important;
  }

  body.pz-portal-page .pz-portal-nav a {
    min-height: 44px !important;
    min-width: 0;
    padding: 8px 11px !important;
    white-space: normal !important;
  }

  body.pz-portal-page .pz-portal[class*="pz-portal--"] .pz-portal-nav a {
    flex: none !important;
    min-width: 0 !important;
    width: 100% !important;
  }

  body.pz-portal-page .pz-portal-logout {
    padding: 10px 12px 12px !important;
  }

  body.pz-portal-page .pz-portal-content {
    min-height: 0 !important;
    min-width: 0;
    width: 100%;
  }
}

@media (max-width: 760px) {
  html,
  body.pz-theme,
  body.pz-portal-page {
    max-width: 100%;
    overflow-x: clip !important;
  }

  body.pz-theme > header.pz-header .pz-header-inner {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  body.pz-theme > header.pz-header .pz-header-contact-link--phone,
  body.pz-theme > header.pz-header .pz-account-link--secondary {
    display: none !important;
  }

  body.pz-theme > header.pz-header .pz-header-actions {
    gap: 7px !important;
  }

  body.pz-theme > header.pz-header :where(.pz-header-contact-link--whatsapp, .pz-account-avatar-btn, .pz-mobile-toggle) {
    flex: 0 0 44px !important;
    height: 44px !important;
    min-height: 44px !important;
    width: 44px !important;
  }

  body.pz-portal-page .pz-main--portal-shell {
    padding: 0 0 24px !important;
  }

  body.pz-portal-page .pz-main--portal-shell > .pz-portal-shell {
    padding: 0 !important;
  }

  body.pz-portal-page .pz-main--portal-shell > .pz-portal-shell > .pz-container--wide {
    margin: 0 !important;
    max-width: none !important;
    padding: 0 !important;
    width: 100% !important;
  }

  body.pz-portal-page .pz-portal-menu-button {
    margin: 8px !important;
  }

  body.pz-portal-page .pz-portal-sidebar {
    margin: 0 8px 8px !important;
    max-width: calc(100% - 16px) !important;
    width: calc(100% - 16px) !important;
  }

  body.pz-portal-page .pz-portal-brand {
    grid-template-columns: 1fr !important;
  }

  body.pz-portal-page .pz-portal-brand .pz-portal-kicker,
  body.pz-portal-page .pz-portal-brand .pz-small {
    grid-column: 1 !important;
    grid-row: auto !important;
  }

  body.pz-portal-page .pz-portal-nav {
    grid-template-columns: 1fr;
  }

  body.pz-portal-page .pz-portal[class*="pz-portal--"] .pz-portal-nav {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  body.pz-portal-page .pz-portal-content {
    display: grid !important;
    gap: 12px !important;
    padding: 4px 8px 24px !important;
  }

  body.pz-portal-page .pz-portal-content > *,
  body.pz-portal-page .pza-shell,
  body.pz-portal-page .pza-shell-body,
  body.pz-portal-page .pza-shell-body > * {
    max-width: 100% !important;
    min-width: 0 !important;
    width: 100% !important;
  }

  body.pz-portal-page .pza-shell {
    margin: 0 !important;
    padding: 0 !important;
  }

  body.pz-portal-page .pza-shell-body {
    display: grid;
    gap: 12px;
  }

  body.pz-portal-page .pza-header {
    align-items: stretch !important;
    border-radius: 14px !important;
    display: grid !important;
    gap: 12px !important;
    grid-template-columns: 1fr !important;
    margin: 0 0 10px !important;
    min-height: 0 !important;
    padding: 16px !important;
  }

  body.pz-portal-page .pza-header h2 {
    font-size: clamp(22px, 7vw, 30px) !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
  }

  body.pz-portal-page .pza-header p {
    font-size: 14px !important;
    line-height: 1.45 !important;
  }

  body.pz-portal-page .pza-header-actions,
  body.pz-portal-page .pza-form-actions,
  body.pz-portal-page .pz-form-actions,
  body.pz-portal-page .pz-action-bar-actions {
    display: grid !important;
    gap: 8px !important;
    grid-template-columns: 1fr !important;
    width: 100%;
  }

  body.pz-portal-page :where(.pza-header-actions, .pza-form-actions, .pz-form-actions, .pz-action-bar-actions) :where(.pza-btn, .pz-btn, button, a) {
    justify-self: stretch !important;
    min-height: 44px !important;
    width: 100% !important;
  }

  body.pz-portal-page .pza-kpis {
    display: grid !important;
    gap: 1px !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    margin: 0 0 10px !important;
    overflow: hidden;
  }

  body.pz-portal-page .pza-kpi {
    min-width: 0 !important;
    padding: 10px !important;
  }

  body.pz-portal-page :where(.pza-panel, .pza-card, .pza-detail, .pza-alert, .pza-list) {
    border-radius: 12px !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.pz-portal-page :where(.pza-panel, .pza-card, .pza-detail) {
    padding: 12px !important;
  }

  body.pz-portal-page :where(.pza-dashboard-grid, .pza-quick-links, .pza-summary, .pza-inline-form, .pz-grid-2, .pz-grid-3, .pz-field-grid, .pz-builder-layout, .pz-master-detail, .pz-request-detail-grid, .pz-request-file-grid, .pz-cloud-choice-grid, .pz-profile-shell, .pz-grid-2--support) {
    display: grid !important;
    gap: 10px !important;
    grid-template-columns: 1fr !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.pz-portal-page .pz-admin-payments-page,
  body.pz-portal-page .pz-admin-payments-page > *,
  body.pz-portal-page .pz-admin-payments-workbench,
  body.pz-portal-page .pz-admin-payments-workbench > * {
    max-width: 100% !important;
    min-width: 0 !important;
    width: 100% !important;
  }

  body.pz-portal-page .pz-admin-payments-page,
  body.pz-portal-page .pz-admin-payments-workbench {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  body.pz-portal-page .pz-site-admin-tabs {
    display: grid !important;
    gap: 7px !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    overflow: visible !important;
  }

  body.pz-portal-page .pz-site-admin-tabs .pz-chip-link {
    justify-content: center;
    min-width: 0 !important;
    white-space: normal !important;
    width: 100% !important;
  }

  body.pz-portal-page :where(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
    font-size: 16px !important;
    max-width: 100% !important;
    min-height: 44px;
    min-width: 0 !important;
    width: 100% !important;
  }

  body.pz-portal-page .pz-profile-form .pz-btn:has(input[type="file"]) {
    overflow: hidden !important;
    position: relative !important;
  }

  body.pz-portal-page .pz-profile-form .pz-btn input[type="file"] {
    cursor: pointer;
    height: 100% !important;
    inset: 0 !important;
    opacity: 0;
    position: absolute !important;
    width: 100% !important;
  }

  body.pz-portal-page :where(.pza-row, .pz-request-spa-row) {
    display: grid !important;
    gap: 10px !important;
    grid-template-columns: 1fr !important;
    min-height: 0 !important;
    min-width: 0 !important;
    padding: 12px !important;
  }

  body.pz-portal-page :where(.pza-row-main, .pz-request-spa-row-main, .pz-request-spa-row-main strong, .pz-request-spa-detail-head h3, .pz-request-file-card strong) {
    max-width: 100% !important;
    min-width: 0 !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
  }

  /* Pedidos: um unico workspace, sem tabs ou colunas com scroll horizontal. */
  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pza-requests-workspace-panel,
  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa--board {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pza-requests-workspace-panel > .pza-panel-head {
    padding: 2px 2px 8px !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa-tabs,
  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa--board > .pz-request-spa-tabs {
    display: grid !important;
    gap: 6px !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    height: auto !important;
    max-width: 100% !important;
    min-height: 0 !important;
    overflow: visible !important;
    padding: 6px !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa-tabs > .pz-request-spa-tab,
  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa--board > .pz-request-spa-tabs > .pz-request-spa-tab {
    display: grid !important;
    flex: 0 1 auto !important;
    grid-template-columns: 1fr !important;
    height: auto !important;
    min-height: 52px !important;
    min-width: 0 !important;
    padding: 8px 6px !important;
    text-align: center !important;
    width: auto !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa-tab span {
    font-size: 11px !important;
    overflow-wrap: break-word !important;
    padding-left: 0 !important;
    word-break: normal !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa-tab strong {
    font-size: 11px !important;
    justify-self: center;
    min-height: 24px !important;
    min-width: 24px !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) :where(.pz-request-spa-layout, .pz-request-detail-flow, .pz-request-detail-grid, .pz-request-detail-main, .pz-request-detail-side) {
    display: grid !important;
    gap: 10px !important;
    grid-template-columns: 1fr !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) :where(.pz-request-spa-detail-head, .pz-request-detail-flow > .pz-request-detail-tabs) {
    position: static !important;
    top: auto !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-detail-tabs {
    display: grid !important;
    gap: 6px !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    max-width: 100% !important;
    overflow: visible !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-detail-tabs > .pz-request-detail-tab {
    flex-basis: auto !important;
    min-height: 44px !important;
    min-width: 0 !important;
    padding: 8px !important;
    white-space: normal !important;
    width: 100% !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) :where(.pz-request-summary-panel, .pz-request-files-hub, .pz-request-payment-panel, .pz-request-followup-zone > *, .pz-request-history-zone > *) {
    border-radius: 12px !important;
    box-shadow: none !important;
    margin: 0 !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 12px !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) :where(.pz-request-file-grid, .pz-request-file-form, .pz-cloud-reuse-panel, .pz-cloud-choice-grid) {
    display: grid !important;
    gap: 10px !important;
    grid-template-columns: 1fr !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-file-card {
    grid-template-columns: 40px minmax(0, 1fr) !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 10px !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-dropzone {
    min-width: 0 !important;
    padding: 14px !important;
    width: 100% !important;
  }

  /* Data views: cards reais quando existem; fallback de linhas empilhadas nos restantes. */
  body.pz-portal-page .pza-data-view--has-mobile-cards .pza-data-view__table-wrap {
    display: none !important;
  }

  body.pz-portal-page .pza-data-view--has-mobile-cards .pza-data-view__mobile {
    display: grid !important;
    gap: 10px;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) .pza-data-view__table-wrap {
    overflow: visible !important;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) :where(table, tbody, tr, td) {
    display: block !important;
    min-width: 0 !important;
    width: 100% !important;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) thead {
    display: none !important;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) tr {
    background: #fff;
    border: 1px solid var(--pza-line, #dfe7ee);
    border-radius: 12px;
    margin-bottom: 10px;
    overflow: hidden;
    padding: 6px 10px;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) td {
    border: 0 !important;
    border-bottom: 1px solid var(--pza-line, #dfe7ee) !important;
    display: grid !important;
    gap: 8px;
    grid-template-columns: minmax(84px, .42fr) minmax(0, 1fr);
    padding: 9px 0 !important;
    text-align: left !important;
    white-space: normal !important;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) td:last-child {
    border-bottom: 0 !important;
  }

  body.pz-portal-page .pza-data-view:not(.pza-data-view--has-mobile-cards) td::before {
    color: var(--pza-muted, #657789);
    content: attr(data-label);
    font-size: 9px;
    font-weight: 850;
    letter-spacing: .06em;
    text-transform: uppercase;
  }

  body.pz-portal-page .pz-admin-logs-table :where(table, tbody, tr, td) {
    min-width: 0 !important;
    width: 100% !important;
  }

  /* Editor de eventos e workbenches administrativos sem grelhas largas. */
  body.pz-portal-page :where(.pz-event-admin-grid, .pz-event-admin-row, .pz-event-admin-field-row, .pz-event-admin-workspace, .pz-event-admin-editor) {
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.pz-portal-page :where(.pz-event-admin-grid, .pz-event-admin-row, .pz-event-admin-field-row) {
    display: grid !important;
    gap: 9px !important;
    grid-template-columns: 1fr !important;
  }

  body.pz-portal-page :where(.pz-event-admin-table, .pz-admin-table-wrap, .pz-portal-table-wrap) {
    max-width: 100% !important;
    overflow-x: clip !important;
  }
}

@media (max-width: 420px) {
  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-list,
  body.pz-theme > header.pz-header:not(.pz-header--portal):not(.pz-header--auth) .pz-mobile-actions {
    grid-template-columns: 1fr;
  }

  body.pz-portal-page .pz-portal-content {
    padding-left: 6px !important;
    padding-right: 6px !important;
  }

  body.pz-portal-page .pza-header {
    padding: 14px !important;
  }

  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa-tabs,
  body.pz-portal-page .pza-shell:is(.pza-page--client-requests, .pza-page--professional-requests) .pz-request-spa--board > .pz-request-spa-tabs {
    grid-template-columns: 1fr !important;
  }
}
