/**
 * Layout adaptativo — celular, tablet e desktop.
 * Complementa public-layout.css e admin-dashboard.css.
 */

/* ——— Base ——— */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

.app-page {
  padding-left: env(safe-area-inset-left, 0);
  padding-right: env(safe-area-inset-right, 0);
}

/* Alvos de toque confortáveis em telas touch */
@media (hover: none) and (pointer: coarse) {
  .btn-primary,
  .btn-secondary,
  .pub-nav-link,
  .pub-theme-btn,
  .pub-cal-day:not(:disabled),
  .avail-week-chip,
  .admin-ui .tab-btn,
  .consulta-page .input,
  select.input {
    min-height: 2.75rem;
  }

  .pub-cal-day:not(:disabled) {
    min-height: 2.85rem;
  }
}

/* ——— Site público ——— */
.pub-sidebar {
  padding-left: max(0.85rem, env(safe-area-inset-left, 0));
  padding-right: max(0.85rem, env(safe-area-inset-right, 0));
}

@media (max-width: 899px) {
  .pub-sidebar {
    position: sticky;
    top: 0;
    z-index: 40;
    padding-top: max(0.65rem, env(safe-area-inset-top, 0));
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
  }

  html[data-theme='dark'] .pub-sidebar {
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
  }

  .pub-brand-logo {
    max-width: 8.5rem;
    margin: 0 auto;
  }

  .pub-brand-app {
    margin-bottom: 0.65rem;
    font-size: 0.75rem;
  }

  .pub-nav {
    flex-wrap: nowrap;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    gap: 0.4rem;
    padding-bottom: 0.15rem;
    margin: 0 -0.15rem;
    padding-left: 0.15rem;
    padding-right: 0.15rem;
  }

  .pub-nav-link {
    flex: 0 0 auto;
    min-width: 7.25rem;
    max-width: 11rem;
    padding: 0.7rem 0.85rem;
    font-size: 0.8125rem;
  }

  .pub-sidebar-foot {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    width: 100%;
    order: 4;
  }

  .pub-theme-btn {
    min-height: 2.5rem;
    font-size: 0.75rem;
  }

  .pub-page-main {
    padding-left: max(0.85rem, env(safe-area-inset-left, 0));
    padding-right: max(0.85rem, env(safe-area-inset-right, 0));
    padding-bottom: max(2rem, env(safe-area-inset-bottom, 0));
  }

  .pub-page-title {
    font-size: clamp(1.25rem, 4.5vw, 1.5rem);
  }

  .pub-page-desc {
    font-size: 0.875rem;
  }

  .pub-footer {
    padding-bottom: max(1.25rem, env(safe-area-inset-bottom, 0));
  }
}

/* Tablet público */
@media (min-width: 600px) and (max-width: 899px) {
  .pub-nav-link {
    min-width: 8.5rem;
  }

  .pub-brand-logo {
    max-width: 10rem;
  }

  .pub-page-main {
    padding-left: max(1.25rem, env(safe-area-inset-left, 0));
    padding-right: max(1.25rem, env(safe-area-inset-right, 0));
  }
}

/* Desktop público */
@media (min-width: 900px) {
  .pub-sidebar {
    padding-left: max(1rem, env(safe-area-inset-left, 0));
  }

  .pub-page-main {
    padding-left: max(1.5rem, env(safe-area-inset-left, 0));
    padding-right: max(1.5rem, env(safe-area-inset-right, 0));
  }
}

@media (min-width: 1200px) {
  .pub-page-main {
    padding-left: 2rem;
    padding-right: 2rem;
  }
}

/* Calendários */
@media (max-width: 399px) {
  .pub-cal-grid,
  .avail-universal-grid {
    gap: 0.2rem;
  }

  .pub-cal-day {
    min-height: 2.35rem;
    padding: 0.2rem;
    border-radius: 0.45rem;
  }

  .pub-cal-day-num {
    font-size: 0.8125rem;
  }

  .pub-cal-weekdays {
    font-size: 0.5625rem;
    gap: 0.15rem;
  }
}

@media (min-width: 640px) {
  .pub-cal-day {
    min-height: 3.1rem;
  }
}

/* Formulários públicos */
.pub-site .consulta-search-card .btn-primary,
.pub-site #consulta-form .btn-primary {
  width: 100%;
}

@media (min-width: 480px) {
  .pub-site .consulta-search-card .btn-primary.w-full,
  .disp-entry-card .btn-primary.w-full {
    width: auto;
  }
}

.pub-site .admin-search-row {
  flex-direction: column;
  align-items: stretch;
}

@media (min-width: 520px) {
  .pub-site .admin-search-row {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
  }
}

/* Disponibilidade — editor */
.disp-page .avail-month-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.disp-page .avail-live-panel {
  margin-top: 0.5rem;
}

/* Escala paroquial — rolagem em telas pequenas */
.escala-paroquial-viewport {
  scroll-snap-type: x proximity;
}

.escala-paroquial-scroll-hint {
  display: block;
}

@media (min-width: 720px) {
  .escala-paroquial-scroll-hint {
    display: none;
  }
}

/* Cards de resultado da busca */
.consulta-page #consulta-results .card,
.consulta-page .consulta-slot-card {
  overflow-wrap: anywhere;
}

/* ——— Admin ——— */
.admin-ui .admin-login-card {
  margin: max(1rem, env(safe-area-inset-top, 0)) 1rem 1rem;
  max-width: calc(100vw - 2rem);
}

@media (min-width: 480px) {
  .admin-ui .admin-login-card {
    margin-left: auto;
    margin-right: auto;
  }
}

.admin-ui .admin-main {
  padding-left: max(1rem, env(safe-area-inset-left, 0));
  padding-right: max(1rem, env(safe-area-inset-right, 0));
  padding-bottom: max(2rem, env(safe-area-inset-bottom, 0));
}

.admin-ui .admin-search-row {
  flex-direction: column;
  align-items: stretch;
}

.admin-ui .admin-search-row .btn-primary,
.admin-ui .admin-search-row .btn-secondary {
  width: 100%;
}

@media (min-width: 520px) {
  .admin-ui .admin-search-row {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
  }

  .admin-ui .admin-search-row .btn-primary,
  .admin-ui .admin-search-row .btn-secondary {
    width: auto;
  }
}

.admin-ui .escala-toolbar-row {
  gap: 0.75rem;
}

.admin-ui .data-table-wrap,
.admin-ui .admin-report-table-wrap,
.admin-ui .avail-week-table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}

@media (max-width: 1023px) {
  .admin-ui .missa-form-card {
    position: static;
    top: auto;
  }

  .admin-ui .section-title {
    font-size: clamp(1.2rem, 4vw, 1.5rem);
  }

  .admin-ui .config-schedule-blocked-grid,
  .admin-ui .missa-week-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .admin-ui .config-schedule-blocked-grid .pub-cal,
  .admin-ui .avail-month-grid .pub-cal {
    max-width: none;
  }
}

.admin-tool-page .admin-tool-main {
  padding-left: max(1rem, env(safe-area-inset-left, 0));
  padding-right: max(1rem, env(safe-area-inset-right, 0));
  padding-bottom: max(1.5rem, env(safe-area-inset-bottom, 0));
}

.admin-tool-page .admin-tool-header {
  flex-wrap: wrap;
  gap: 0.5rem;
}

@media (max-width: 639px) {
  .admin-tool-page .flex.flex-wrap.items-end {
    flex-direction: column;
    align-items: stretch;
  }

  .admin-tool-page .flex.flex-wrap.items-end .input,
  .admin-tool-page .flex.flex-wrap.items-end select,
  .admin-tool-page .flex.flex-wrap.items-end .btn-primary,
  .admin-tool-page .flex.flex-wrap.items-end .btn-secondary {
    width: 100%;
    min-width: 0 !important;
  }
}

/* Utilitário: esconder rolagem visual mas manter gesto */
.scroll-touch-x {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}
