/* ══════════════════════════════════════════════════════════════
   PLIN ERP — CSS Responsivo Compartilhado v2
   Aplicar em TODAS as páginas via <link>

   Breakpoints:
     1600px+ (wide desktop)
     1366px  (small laptop — mais comum)
     1200px  (tablet landscape)
     900px   (tablet portrait)
     600px   (mobile)
     400px   (mobile small)

   Features:
     - Fontes responsivas com clamp()
     - Escala global (--scale)
     - Modo compacto automático em telas menores
     - Densidade de informação adaptável
     - Grid fluido para mesas/cards
   ══════════════════════════════════════════════════════════════ */

/* ── ESCALA GLOBAL ─────────────────────────────────────────── */
:root {
  --scale: 1;
  --font-xs:  clamp(9px,  0.55vw + 6px, 11px);
  --font-sm:  clamp(10px, 0.6vw + 7px, 12px);
  --font-md:  clamp(12px, 0.7vw + 8px, 14px);
  --font-lg:  clamp(14px, 0.8vw + 9px, 16px);
  --font-xl:  clamp(16px, 1vw + 10px, 20px);
  --font-2xl: clamp(18px, 1.2vw + 12px, 24px);
  --font-3xl: clamp(22px, 1.5vw + 14px, 32px);
  --space-xs: clamp(2px, 0.3vw, 4px);
  --space-sm: clamp(4px, 0.5vw, 8px);
  --space-md: clamp(8px, 0.8vw, 14px);
  --space-lg: clamp(12px, 1vw, 20px);
}

/* ── FONTES RESPONSIVAS BASE ───────────────────────────────── */
body {
  font-size: var(--font-md);
}

/* Headers / Títulos */
.header-title, .top-bar-title, .topbar .page-title,
.det-title, .modal-title, .card-title, .sec-card-title {
  font-size: var(--font-xl) !important;
}
.header-sub, .top-bar-sub, .det-sub {
  font-size: var(--font-xs) !important;
}

/* KPIs */
.hkpi-val, .kpi-value, .dlv-kpi-val {
  font-size: clamp(14px, 1.2vw + 8px, 22px) !important;
}
.hkpi-lbl, .kpi-label, .dlv-kpi-lbl {
  font-size: var(--font-xs) !important;
}

/* Botões */
.btn {
  font-size: var(--font-sm) !important;
  padding: var(--space-sm) var(--space-md) !important;
}
.btn-sm {
  font-size: var(--font-xs) !important;
  padding: var(--space-xs) var(--space-sm) !important;
}

/* Cards / Itens */
.ped-cliente, .ped-valor, .mesa-num, .ticket-mesa-nome {
  font-size: var(--font-lg) !important;
}
.ped-num, .ped-end, .ped-itens-preview, .ped-tempo,
.mesa-lbl, .mesa-val, .mesa-extra {
  font-size: var(--font-xs) !important;
}
.status-pill, .pill, .badge {
  font-size: var(--font-xs) !important;
  padding: var(--space-xs) var(--space-sm) !important;
}

/* Tabelas */
.tbl th {
  font-size: var(--font-xs) !important;
  padding: var(--space-sm) var(--space-md) !important;
}
.tbl td {
  font-size: var(--font-sm) !important;
  padding: var(--space-sm) var(--space-md) !important;
}

/* Inputs */
.fi, .form-input, .form-select,
input[type="text"], input[type="number"], input[type="email"],
input[type="password"], input[type="date"], input[type="tel"],
input[type="search"], select, textarea {
  font-size: var(--font-md) !important;
}

/* ── GRIDS FLUIDOS ─────────────────────────────────────────── */

/* Mesas: auto-fit com min dinâmico */
.mesas-grid, #mesas-grid, [class*="mesa-grid"],
.mesas-grid-work, #mesas-grid-work {
  grid-template-columns: repeat(auto-fill, minmax(clamp(80px, 8vw, 120px), 1fr)) !important;
  gap: var(--space-sm) !important;
}

/* Cards de produto (cardápio) */
.itens-grid {
  grid-template-columns: repeat(auto-fill, minmax(clamp(180px, 15vw, 260px), 1fr)) !important;
  gap: var(--space-md) !important;
}

/* ── SMALL LAPTOP (≤ 1366px) — breakpoint mais comum ─────── */
@media (max-width: 1366px) {
  :root {
    --scale: 0.95;
    --font-xs:  clamp(8px,  0.5vw + 5px, 10px);
    --font-sm:  clamp(9px,  0.55vw + 6px, 11px);
    --font-md:  clamp(11px, 0.65vw + 7px, 13px);
    --font-lg:  clamp(12px, 0.7vw + 8px, 15px);
    --font-xl:  clamp(14px, 0.9vw + 8px, 18px);
    --font-2xl: clamp(16px, 1vw + 10px, 22px);
  }

  /* Sidebar mais compacta */
  #sidebar, .sidebar { width: 190px !important; }
  .sidenav { width: 170px !important; }

  /* Header KPIs menores */
  .header-kpis { gap: 3px !important; }
  .hkpi { padding: 4px 10px !important; min-width: 60px !important; }

  /* Cards compactos */
  .card, .sec-card { padding: 12px !important; }

  /* Mesa cards menores */
  .mesa-card {
    padding: 8px 6px !important;
  }
  .mesa-num {
    font-size: clamp(16px, 1.5vw, 22px) !important;
  }

  /* Toolbar compacta */
  .toolbar, .filtro-btn {
    padding-top: 5px !important;
    padding-bottom: 5px !important;
  }
  .filtro-btn { font-size: 10px !important; padding: 3px 10px !important; }

  /* Tabs compactas */
  .tab, .tab-item {
    font-size: 11px !important;
    padding: 6px 12px !important;
  }
}

/* ── TABLET LANDSCAPE (≤ 1200px) ────────────────────────────── */
@media (max-width: 1200px) {
  :root { --scale: 0.9; }

  /* Sidebar menor */
  #sidebar, .sidebar { width: 180px !important; }
  .sidenav { width: 160px !important; }

  /* Grids de 3 colunas → 2 */
  .fgrid-3 { grid-template-columns: 1fr 1fr !important; }

  /* PDV grid adapta */
  .grid-pdv { grid-template-columns: 1fr 300px !important; }

  /* Main padding reduz */
  .main, main, [class*="main-content"] { padding-left: 12px !important; padding-right: 12px !important; }

  /* Esconder info secundária */
  .hide-compact, [data-compact-hide] { display: none !important; }

  /* KPIs em scroll horizontal */
  .header-kpis {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    flex-wrap: nowrap !important;
  }
}

/* ── TABLET PORTRAIT (≤ 900px) ──────────────────────────────── */
@media (max-width: 900px) {
  :root { --scale: 0.85; }

  /* Sidebar esconde — overlay */
  #sidebar, .sidebar {
    position: fixed !important;
    left: -260px !important;
    width: 250px !important;
    height: 100vh !important;
    z-index: 1100 !important;
    transition: left .25s ease !important;
    box-shadow: 4px 0 24px rgba(0,0,0,.5) !important;
  }
  #sidebar.open, .sidebar.open { left: 0 !important; }

  .sidenav {
    position: fixed !important;
    left: -220px !important;
    width: 210px !important;
    height: 100vh !important;
    z-index: 1100 !important;
    transition: left .25s ease !important;
    box-shadow: 4px 0 24px rgba(0,0,0,.5) !important;
  }
  .sidenav.open { left: 0 !important; }

  /* Main sem margem da sidebar */
  body { padding-left: 0 !important; }
  .main, main, [class*="main-content"] {
    margin-left: 0 !important;
    padding: 10px !important;
    width: 100% !important;
  }

  /* Botão hamburger visível */
  .plin-menu-toggle { display: flex !important; }
  .plin-sidebar-backdrop.open { display: block !important; }

  /* PDV → coluna única */
  .grid-pdv { grid-template-columns: 1fr !important; }

  /* Form grids → coluna única */
  .fgrid { grid-template-columns: 1fr !important; }
  .fgrid-3 { grid-template-columns: 1fr !important; }

  /* Shortcuts scroll */
  #shortcuts-bar {
    left: 0 !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }

  /* Tabelas scroll horizontal */
  .table-wrap, .tbl-wrap, [class*="table-container"] {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
  table { min-width: 500px; }

  /* Modal quase full */
  .modal, .modal-box {
    width: 95vw !important;
    max-width: 95vw !important;
    max-height: 90vh !important;
    margin: 5vh auto !important;
  }

  /* Header compacta */
  .header, .top-bar, .topbar {
    padding: 6px 10px !important;
    gap: 8px !important;
  }
  .header-sub, .top-bar-sub { display: none !important; }

  /* KPIs grid 2 colunas */
  .kpi-bar, .stats-bar, [class*="kpi-grid"], [class*="stats-grid"] {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 6px !important;
  }

  /* Kanban cols: 2 por linha com wrap */
  .kanban-wrap, .kds-board, .dlv-kanban {
    flex-wrap: wrap !important;
  }
  .kanban-col, .kds-col, .dlv-kbn-col {
    min-width: 48% !important;
    flex: 1 1 48% !important;
  }
}

/* ── MOBILE (≤ 600px) ───────────────────────────────────────── */
@media (max-width: 600px) {
  :root { --scale: 0.8; }

  /* Header compacta */
  .header, .top-bar, .topbar {
    height: auto !important;
    min-height: 44px !important;
    padding: 4px 8px !important;
  }
  .header-kpis { display: none !important; }
  .logo-pill { font-size: 10px !important; padding: 3px 8px !important; }

  /* Cards menos padding */
  .card, .sec-card {
    padding: 10px !important;
    border-radius: 8px !important;
  }

  /* Mesa grid → 3 colunas compactas */
  .mesas-grid, #mesas-grid, [class*="mesa-grid"],
  .mesas-grid-work, #mesas-grid-work {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 6px !important;
    padding: 8px !important;
  }
  .mesa-card {
    padding: 6px 4px !important;
    border-radius: 8px !important;
  }

  /* Kanban cols: 1 por linha */
  .kanban-col, .kds-col, .dlv-kbn-col {
    min-width: 100% !important;
    flex: 1 1 100% !important;
    max-height: 300px !important;
  }

  /* Modal full screen */
  .modal, .modal-box {
    width: 100vw !important;
    max-width: 100vw !important;
    max-height: 100vh !important;
    margin: 0 !important;
    border-radius: 0 !important;
  }
  .modal-header, .modal-body, .modal-footer {
    padding: 10px 14px !important;
  }

  /* KPIs coluna única */
  .kpi-bar, .stats-bar, [class*="kpi-grid"], [class*="stats-grid"] {
    grid-template-columns: 1fr !important;
  }

  /* Tabs scroll horizontal */
  .tabs, .tab-bar, [class*="tab-nav"] {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    flex-wrap: nowrap !important;
    gap: 3px !important;
  }
  .tab, .tab-item, [class*="tab-btn"] {
    font-size: 10px !important;
    padding: 5px 8px !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }

  /* Toast mais largo */
  #toast-container, #toasts, #toast {
    left: 8px !important;
    right: 8px !important;
    bottom: 8px !important;
  }
}

/* ── MOBILE PEQUENO (≤ 400px) ───────────────────────────────── */
@media (max-width: 400px) {
  :root { --scale: 0.75; }

  .header, .top-bar, .topbar {
    min-height: 40px !important;
    padding: 2px 6px !important;
  }

  /* Mesa grid → 2 colunas */
  .mesas-grid, #mesas-grid, [class*="mesa-grid"],
  .mesas-grid-work, #mesas-grid-work {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 4px !important;
  }

  .fgrid, .fgrid-3 {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }
}

/* ── MODO COMPACTO (automático em ≤1366 ou via classe .compacto) ── */
@media (max-width: 1366px) {
  /* Auto-compact */
  .header-kpis .hkpi { padding: 3px 8px !important; }
  .toolbar { padding: 4px 12px !important; }
  .filtro-btn { padding: 3px 8px !important; font-size: 10px !important; }
  .ped-card, .dlv-card, .mesa-card { padding: 8px 10px !important; }
  .det-sec-body { padding: 8px 10px !important; }
  .detalhe-body { padding: 10px 14px !important; }
  .action-btn { padding: 8px !important; font-size: 11px !important; }
}

/* Classe manual .compacto (pode ser adicionada ao body) */
.compacto {
  --font-xs:  9px;
  --font-sm:  10px;
  --font-md:  11px;
  --font-lg:  13px;
  --font-xl:  15px;
  --space-xs: 2px;
  --space-sm: 4px;
  --space-md: 8px;
  --space-lg: 10px;
}
.compacto .header-kpis .hkpi { padding: 2px 6px !important; min-width: 50px !important; }
.compacto .toolbar { padding: 3px 10px !important; }
.compacto .ped-card, .compacto .dlv-card { padding: 6px 8px !important; }
.compacto .mesa-card { padding: 6px 4px !important; }
.compacto .btn { padding: 4px 8px !important; }
.compacto .card, .compacto .sec-card { padding: 8px !important; }

/* ── IMPRESSÃO ──────────────────────────────────────────────── */
@media print {
  #sidebar, .sidebar, .sidenav, .topbar, .header, .top-bar,
  .plin-menu-toggle, .plin-sidebar-backdrop,
  #toast-container, #toasts, #toast, .fab, .btn-sm,
  #shortcuts-bar { display: none !important; }

  body {
    background: white !important;
    color: black !important;
    font-size: 11pt !important;
  }
  .main, main {
    margin: 0 !important;
    padding: 0 !important;
  }
  .card, .sec-card {
    border: 1px solid #ccc !important;
    box-shadow: none !important;
    background: white !important;
    page-break-inside: avoid;
  }
  table { min-width: unset !important; }
  th, td { color: black !important; border-color: #ccc !important; }
}

/* ══════════════════════════════════════════════════════════════
   COMPONENTES DE SUPORTE
   ══════════════════════════════════════════════════════════════ */

/* Botão hamburger (hidden em desktop) */
.plin-menu-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--surface2, var(--s2, #181c24));
  border: 1px solid var(--border, #232830);
  border-radius: 8px;
  color: var(--text, #e8edf5);
  font-size: 18px;
  cursor: pointer;
  flex-shrink: 0;
  z-index: 1200;
}
.plin-menu-toggle:active { transform: scale(.92); }

/* Backdrop sidebar */
.plin-sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.5);
  z-index: 1050;
}
.plin-sidebar-backdrop.open { display: block; }

/* Utilitários */
.hide-mobile { }
@media (max-width: 600px) { .hide-mobile { display: none !important; } }
.hide-tablet { }
@media (max-width: 900px) { .hide-tablet { display: none !important; } }
.hide-compact { }
@media (max-width: 1366px) { .hide-compact { display: none !important; } }
.hide-desktop { display: none !important; }
@media (max-width: 900px) { .hide-desktop { display: initial !important; } }
.text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
