/* ==========================================================================
   RESPONSIVIDADE — mobile ▸ tablet ▸ notebook ▸ desktop
   O CSS é mobile-first: o layout base é o do celular e cada breakpoint
   só ADICIONA colunas. Nada é desfeito, então não há regra brigando com regra.
   ========================================================================== */

/* Alvos de toque confortáveis em telas sem mouse */
@media (hover: none) {
  .btn { min-height: 40px; }
  .nav-item { height: 42px; }
  .pager__btn { min-width: 34px; height: 34px; }
}

/* --------------------------------------------------------------------------
   ≥ 480px — celular grande
   -------------------------------------------------------------------------- */
@media (min-width: 480px) {
  .kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* --------------------------------------------------------------------------
   ≥ 768px — tablet
   -------------------------------------------------------------------------- */
@media (min-width: 768px) {
  :root { --gutter: 28px; }

  .kpi-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }

  .span-4,
  .span-6 { grid-column: span 6; }

  .auth__main { padding: 48px; }
  /* Divisórias entre os números, em vez de três caixas separadas */
  .admin-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .admin-stat__item + .admin-stat__item { border-left: 1px solid var(--line-soft); }
  .form-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* --------------------------------------------------------------------------
   ≥ 1024px — notebook. A sidebar aparece; abaixo disso ela vira gaveta.
   -------------------------------------------------------------------------- */
@media (min-width: 1024px) {
  .span-4 { grid-column: span 4; }
  .span-6 { grid-column: span 6; }
  .span-8 { grid-column: span 8; }

  .auth { grid-template-columns: 1.05fr 1fr; }
  .auth__aside { display: flex; }
}

/* --------------------------------------------------------------------------
   ≥ 1280px
   -------------------------------------------------------------------------- */
@media (min-width: 1280px) {
  .kpi-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

@media (min-width: 1600px) {
  :root { --gutter: 32px; }
}

/* --------------------------------------------------------------------------
   < 1024px — sidebar vira gaveta sobreposta
   -------------------------------------------------------------------------- */
@media (max-width: 1023.98px) {
  .sidebar {
    position: fixed;
    top: 0;
    left: 0;
    transform: translateX(-100%);
    box-shadow: var(--shadow-pop);
    transition: transform var(--t) var(--ease);
    width: var(--sidebar-w-open);
    padding: 18px 12px 12px;
  }

  .sidebar .sidebar__brand { flex-direction: row; padding: 4px 8px 22px; }
  .sidebar .logo__text,
  .sidebar .nav-item__label,
  .sidebar .nav-item__badge,
  .sidebar .sidebar__account-text,
  .sidebar .sidebar__account > .icon { display: flex !important; }
  .sidebar .sidebar__section { display: block !important; }
  .sidebar .sidebar__nav { gap: 2px !important; }
  .sidebar .nav-item { justify-content: flex-start !important; padding: 0 10px !important; }
  .sidebar .sidebar__account { justify-content: flex-start !important; padding: 8px !important; }
  .sidebar__resize { display: none !important; }

  .sidebar--open { transform: translateX(0); }

  .sidebar__scrim {
    position: fixed;
    inset: 0;
    z-index: 39;
    background: rgba(11, 11, 13, 0.35);
    backdrop-filter: blur(2px);
    animation: fade-in var(--t) var(--ease) both;
  }

  .topbar { padding-left: 16px; padding-right: 16px; }
  .shell__content { padding: 16px; }
  .page-head { flex-direction: column; align-items: stretch; gap: 14px; }
}

/* Em ≥1024 o botão de gaveta e o scrim não existem */
@media (min-width: 1024px) {
  .drawer-toggle,
  .sidebar__scrim { display: none !important; }
}

/* --------------------------------------------------------------------------
   < 640px — celular: os controles do topo quebram em linha própria
   -------------------------------------------------------------------------- */
@media (max-width: 639.98px) {
  .topbar { flex-wrap: wrap; gap: 10px; }
  .topbar__actions { width: 100%; justify-content: space-between; }
  .topbar__client { font-size: 15px; }
  .topbar__sep { display: none; }

  .kpi { min-height: 88px; padding: 12px; }
  .kpi__value { font-size: 17px; }
  .kpi__spark { display: none; }   /* microgeometria some antes de ficar ilegível */

  .card__header { padding: 16px 16px 12px; }
  .card__body { padding: 0 16px 16px; }
  .table-toolbar { padding: 14px 16px; }
  .table-toolbar > .row { width: 100%; flex-wrap: wrap; }
  .table-status-filter { width: 100%; }
  .table-toolbar .field__wrap { flex: 1 1 180px; }
  .table-toolbar .field__wrap .input { width: 100% !important; }
  .pager { padding: 12px 16px; }
  .funnel { padding: 4px 16px 16px; }
  .metric-pick { grid-template-columns: 1fr; }

  .auth__card { padding: 24px 20px; border: none; box-shadow: none; }
  .auth__headline { font-size: 28px; }
  .ad-preview-overlay { padding: 8px; }
  .ad-preview-overlay__card { max-height: calc(100vh - 16px); border-radius: 12px; }
  .ad-preview__media { min-height: 260px; padding: 14px; }
  .ad-preview__image { max-height: 44vh; }
  .ad-preview__details { padding: 22px 16px 18px; }
  .ad-preview__title { font-size: 18px; }
}
