/* === CADASTROS: tabela genérica + formulários V2 === */

/* TABELA GENÉRICA */
/* ── CADASTROS GENERIC TABLE ── */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.page-title{font-weight:700;font-size:18px;color:var(--txt)}
.search-row{display:flex;gap:8px;margin-bottom:14px}
.search-row input{flex:1;border:1px solid var(--border2);border-radius:var(--radius-sm);padding:7px 10px;font-size:12px;font-family:inherit;color:var(--txt);background:var(--surface);outline:none}
/* Responsivo: filtros centralizados no celular/tablet (busca ocupa a linha, demais centralizam) */
@media(max-width:820px){
  .search-row{flex-wrap:wrap;justify-content:center;align-items:center}
  .search-row > div{justify-content:center;flex-wrap:wrap}
  .search-row > input{flex:1 1 100%}
}
.search-row input:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(155,61,143,.12)}
.data-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.dt-head{display:grid;padding:9px 14px;font-size:10px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.06em;background:var(--bg);border-bottom:1px solid var(--border)}
.dt-row{display:grid;padding:10px 14px;border-bottom:1px solid var(--border);align-items:center;font-size:12.5px;transition:background .1s}
.dt-row:last-child{border-bottom:none}
.dt-row:hover{background:var(--bg)}
.dt-actions{display:flex;gap:4px;justify-content:flex-end}
.ic-btn{border:none;background:none;cursor:pointer;color:var(--txt3);padding:4px;border-radius:4px;font-size:14px}
.ic-btn:hover{background:var(--bg);color:var(--txt)}
.ic-btn.danger:hover{color:#A32D2D;background:#FCEBEB}
.tag{display:inline-flex;align-items:center;font-size:10px;font-weight:500;padding:2px 8px;border-radius:20px}
.tag-purple{background:var(--primary-l);color:var(--primary-d,#5A1F54)}
.tag-teal{background:var(--teal-l);color:var(--teal-d,#085041)}
.tag-amber{background:var(--amber-l);color:var(--amber-d,#633806)}
.tag-blue{background:var(--blue-l);color:var(--blue-d,#0C447C)}
.tag-coral{background:var(--coral-l);color:var(--coral-d,#712B13)}
.tag-gray{background:var(--gray-l);color:#444441}

/* FORMS V2 */
/* ── FORMS V2 (cadastros em seções) ── */
.form-page{max-width:920px;width:100%;margin:0 auto;padding-bottom:24px}
.form-section{
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  margin-bottom:14px;overflow:hidden;
}
.form-section-head{
  display:flex;align-items:center;gap:10px;padding:13px 18px;
  border-bottom:1px solid var(--border);background:linear-gradient(to right,var(--primary-l) 0%,transparent 80%);
}
.form-section-head i{
  width:28px;height:28px;border-radius:8px;
  background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;
}
.form-section-title{font-size:14px;font-weight:700;color:var(--txt)}
.form-section-sub{font-size:11px;color:var(--txt3);margin-left:auto}
.form-section-body{padding:18px}
.form-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.form-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.form-grid-3 .form-group.full,.form-grid-4 .form-group.full{grid-column:1/-1}
.form-grid-3 .form-group.span-2{grid-column:span 2}
.form-grid-4 .form-group.span-2{grid-column:span 2}
.form-grid-4 .form-group.span-3{grid-column:span 3}

/* Input com botão (CEP) */
.input-with-btn{display:flex;gap:6px}
.input-with-btn input{flex:1}
.input-with-btn button{
  border:1px solid var(--primary);background:var(--primary-l);color:var(--primary);
  border-radius:var(--radius-sm);padding:0 12px;cursor:pointer;font-size:12px;
  font-family:inherit;font-weight:500;display:flex;align-items:center;gap:5px;
  transition:all .15s;white-space:nowrap;
}
.input-with-btn button:hover{background:var(--primary);color:#fff}
.input-with-btn button:disabled{opacity:.6;cursor:wait}

/* Input com ícone à esquerda */
.input-icon{position:relative}
.input-icon input{padding-left:32px}
.input-icon i{
  position:absolute;left:10px;top:50%;transform:translateY(-50%);
  color:var(--txt3);font-size:14px;pointer-events:none;
}

/* Upload de logomarca */
.logo-upload{
  display:flex;align-items:center;gap:18px;padding:6px 0;
}
.logo-preview{
  width:96px;height:96px;border-radius:50%;
  background:var(--primary-l);color:var(--primary);
  display:flex;align-items:center;justify-content:center;
  font-size:32px;flex-shrink:0;border:2px dashed var(--border2);
  overflow:hidden;cursor:pointer;transition:all .15s;
}
.logo-preview:hover{border-color:var(--primary);background:#fff}
/* Logo enquadrada: cabe inteira (sem cortar/ampliar), com respiro e fundo branco */
.logo-preview.has-img{background:#fff;border-style:solid;border-color:var(--border2);padding:10px}
.logo-preview img{width:100%;height:100%;object-fit:contain}
.logo-actions{display:flex;flex-direction:column;gap:6px}
.logo-actions .form-label{font-size:11px;color:var(--txt2);margin-bottom:2px}
.logo-actions-row{display:flex;gap:6px}
.logo-help{font-size:10.5px;color:var(--txt3);margin-top:2px;line-height:1.4}

/* Switch toggle */
.switch{
  position:relative;display:inline-flex;align-items:center;cursor:pointer;
  font-size:12px;color:var(--txt);gap:9px;user-select:none;
}
.switch input{display:none}
.switch-track{
  width:34px;height:20px;border-radius:20px;background:var(--border2);
  position:relative;transition:background .2s;flex-shrink:0;
}
.switch-track::after{
  content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;
  background:#fff;border-radius:50%;transition:transform .2s;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
}
.switch input:checked + .switch-track{background:var(--primary)}
.switch input:checked + .switch-track::after{transform:translateX(14px)}

/* Status pills (radio group) */
.pill-group{display:flex;gap:6px;flex-wrap:wrap}
.pill-radio{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  border:1.5px solid var(--border2);border-radius:20px;
  padding:5px 12px;font-size:11.5px;color:var(--txt2);
  transition:all .15s;font-weight:500;background:var(--surface);
}
.pill-radio input{display:none}
.pill-radio .pill-dot{width:8px;height:8px;border-radius:50%;background:var(--pill-c,var(--primary))}
.pill-radio:hover{border-color:var(--pill-c,var(--primary));color:var(--pill-c,var(--primary))}
.pill-radio.on{
  border-color:var(--pill-c,var(--primary));
  background:var(--pill-bg,var(--primary-l));
  color:var(--pill-c,var(--primary));
}

/* Tabs (sub-nav reaproveitado para edição usuário) */
.edit-page-head{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:14px 18px;margin-bottom:14px;
}
.edit-page-head-l{display:flex;align-items:center;gap:14px}
.edit-page-head .pc-av{width:48px;height:48px;font-size:14px}
.edit-page-head-nm{font-weight:700;font-size:18px;color:var(--txt);line-height:1.15}
.edit-page-head-sub{font-size:12px;color:var(--txt3);margin-top:2px}
.edit-tabs{
  display:flex;gap:0;background:var(--surface);border:1px solid var(--border);
  border-radius:12px;padding:5px;margin-bottom:14px;overflow-x:auto;
}
.edit-tab{
  padding:8px 14px;font-size:12px;color:var(--txt2);cursor:pointer;
  border-radius:8px;transition:all .15s;display:flex;align-items:center;gap:6px;
  white-space:nowrap;font-weight:500;
}
.edit-tab:hover{background:var(--bg);color:var(--txt)}
.edit-tab.on{background:var(--primary);color:#fff}
.edit-tab.on i{color:#fff}
.edit-tab i{font-size:14px;color:var(--txt3)}
.edit-content > div{display:none}
.edit-content > div.on{display:block}

/* Tabela de permissões */
.perm-table{width:100%;border-collapse:collapse;font-size:12px}
.perm-table thead th{
  text-align:left;padding:10px 12px;background:var(--bg);
  font-size:10.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.05em;
  border-bottom:1px solid var(--border);
}
.perm-table thead th.center{text-align:center;width:80px}
.perm-table tbody td{padding:10px 12px;border-bottom:1px solid var(--border)}
.perm-table tbody td.center{text-align:center}
.perm-table tbody tr:last-child td{border-bottom:none}
.perm-table tbody tr:hover{background:var(--bg)}
.perm-table tbody tr.perm-grupo:hover{background:var(--primary-l)}
.perm-table tbody tr.perm-grupo td{
  background:var(--primary-l);color:var(--primary);
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  padding:6px 12px;
}
.dashw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.dashw-item{
  display:flex;align-items:center;gap:8px;cursor:pointer;
  padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);
  font-size:12.5px;background:var(--surface);
}
.dashw-item:hover{border-color:var(--primary)}
.dashw-item input{accent-color:var(--primary);width:15px;height:15px;flex-shrink:0}
.senha-box{border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:12px;background:var(--surface)}
.senha-box:last-child{margin-bottom:0}
.senha-box-tit{font-size:13px;font-weight:600;color:var(--primary-d);margin-bottom:2px}
.senha-box-txt{font-size:11.5px;color:var(--txt2);margin-bottom:10px}
.senha-row{display:flex;gap:8px;flex-wrap:wrap}
.senha-row input{flex:1;min-width:180px;border:1px solid var(--border2);border-radius:6px;padding:8px 11px;font-size:13px;font-family:inherit}
.perm-module{display:flex;align-items:center;gap:9px;font-weight:500;color:var(--txt)}
.perm-module i{
  width:24px;height:24px;border-radius:6px;
  background:var(--primary-l);color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:13px;
}
.perm-check{accent-color:var(--primary);cursor:pointer;width:15px;height:15px}

/* Header da página de edição com ações */
.btn-back{
  border:1px solid var(--border2);background:none;border-radius:var(--radius-sm);
  padding:6px 12px;cursor:pointer;font-size:12px;color:var(--txt2);font-family:inherit;
  display:inline-flex;align-items:center;gap:6px;transition:all .15s;
}
.btn-back:hover{background:var(--bg);color:var(--txt)}
.actions-bar{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;gap:10px;
}
.actions-bar-l{display:flex;align-items:center;gap:8px}

/* Loader CEP */
.cep-loading{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--primary);
  margin-top:4px;
}
.cep-loading i{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Seletor de cor do usuário */
.user-cor-opt{width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 0 0 1px var(--border2);transition:transform .1s}
.user-cor-opt:hover{transform:scale(1.15)}

/* Avatar circular nas listas */
.user-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#26215C;flex-shrink:0}

/* ─── Editor de turnos (edição de usuário) ─── */
.turnos-wrap{display:flex;flex-direction:column;gap:9px}
.turno-dia{
  border:1px solid var(--border);
  border-radius:12px;
  padding:13px 15px;
  background:var(--surface);
  transition:border-color .15s,box-shadow .15s,opacity .15s,background .15s;
}
.turno-dia.is-ativo{border-left:3px solid var(--primary);padding-left:13px}
.turno-dia.is-ativo:hover{box-shadow:0 2px 12px rgba(155,61,143,.07)}
.turno-dia.is-folga{background:var(--bg);opacity:.7}
.turno-dia-head{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.turno-dia-nome{
  font-size:13px;font-weight:600;color:var(--txt);
  width:62px;flex-shrink:0;
}
.turno-presets{display:flex;gap:5px;flex-wrap:wrap}
.turno-preset{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 11px;border-radius:999px;
  border:1.5px solid var(--border2);background:var(--surface);
  color:var(--txt2);font-size:11px;font-weight:500;
  cursor:pointer;font-family:inherit;white-space:nowrap;
  transition:all .13s;
}
.turno-preset i{font-size:13px;opacity:.85}
.turno-preset:hover{
  border-color:var(--primary);color:var(--primary);
  background:var(--primary-l);
}
.turno-preset.on{
  background:var(--primary);border-color:var(--primary);
  color:#fff;font-weight:600;
  box-shadow:0 2px 7px rgba(155,61,143,.28);
}
.turno-preset.on i{opacity:1}
.turno-resumo{
  margin-left:auto;
  display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;font-weight:500;
  padding:4px 11px;border-radius:999px;
  background:var(--bg);color:var(--txt2);
  white-space:nowrap;
}
.turno-resumo i{font-size:13px}
.turno-resumo.is-folga{background:transparent;color:var(--txt3)}
.turno-resumo.is-warn{background:var(--amber-l);color:#7A4F08}
.turno-campos{
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;
  margin-top:12px;
}
.turno-campo-lbl{
  font-size:9.5px;font-weight:700;color:var(--txt3);
  text-transform:uppercase;letter-spacing:.04em;
  margin-bottom:4px;
}
.turno-campo-lbl span{font-weight:500;text-transform:none;letter-spacing:0;opacity:.7}
.turno-campos input[type=time]{
  width:100%;border:1px solid var(--border2);border-radius:8px;
  padding:7px 9px;font-size:12.5px;font-family:inherit;color:var(--txt);
  background:var(--surface);outline:none;
  transition:border-color .12s,box-shadow .12s;
}
.turno-campos input[type=time]:focus{
  border-color:var(--primary);
  box-shadow:0 0 0 2px rgba(155,61,143,.13);
}
.turno-extra{margin-top:9px}
.turno-extra label{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  font-size:11px;color:var(--txt2);
}

/* ── Lista de Usuários no celular/tablet: vira CARDS (avatar+nome no topo, campos rotulados) ── */
@media(max-width:820px){
  .usuarios-table .dt-head{display:none}
  .usuarios-table #tbl-user{display:flex;flex-direction:column;gap:12px}
  .usuarios-table .dt-row{
    display:flex!important;flex-wrap:wrap;align-items:center;gap:6px 10px;
    border:1px solid var(--border);border-left:4px solid var(--primary);
    border-radius:14px;background:var(--surface);
    box-shadow:0 4px 16px -10px rgba(122,45,114,.25);padding:14px 16px;
  }
  .usuarios-table .dt-row .user-avatar{flex:0 0 auto}
  .usuarios-table .dt-row .us-nome{flex:1;min-width:0;font-size:15px!important;font-weight:700}
  /* Campos rotulados, um por linha */
  .usuarios-table .dt-row > span[data-th]{
    flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px;
    font-size:13px!important;padding:7px 0;border-top:1px dashed var(--border);
  }
  .usuarios-table .dt-row > span[data-th]::before{
    content:attr(data-th);color:var(--txt3);font-weight:600;font-size:9.5px;
    text-transform:uppercase;letter-spacing:.04em;flex:0 0 70px;
  }
  /* Ações: toolbar embaixo, botões maiores */
  .usuarios-table .dt-row .dt-actions{
    flex:1 1 100%;display:flex!important;flex-wrap:wrap;gap:8px;justify-content:flex-start;
    margin-top:9px;padding:8px;background:var(--bg,#FAF7FB);border-radius:12px;
  }
  .usuarios-table .dt-row .dt-actions .ic-btn{
    width:38px;height:38px;font-size:17px;background:var(--surface);
    border:1px solid var(--border);border-radius:10px;
  }
}

/* ════════════════════════════════════════════════════════════════════
   RESPONSIVO GLOBAL DE LISTAS — toda .data-table vira CARDS no celular/tablet.
   Exceções: #p-financeiro (deixado por último) e as tabelas que já têm card
   próprio com rótulos (.vendas-table, .usuarios-table).
   ════════════════════════════════════════════════════════════════════ */
@media(max-width:820px){
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table){
    border:none;background:transparent;overflow:visible;box-shadow:none;
  }
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-head{display:none}
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row{
    display:flex!important;flex-direction:column;align-items:stretch;gap:5px;
    grid-template-columns:none!important;
    border:1px solid var(--border);border-left:4px solid var(--primary);
    border-radius:14px;background:var(--surface);
    box-shadow:0 4px 16px -10px rgba(122,45,114,.2);
    padding:13px 15px;margin-bottom:10px;
  }
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row:hover{background:var(--surface)}
  /* avatar (quando existe) fica pequeno no topo */
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row > .user-avatar,
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row > .recent-av{align-self:flex-start;margin-bottom:2px}
  /* 1ª coluna de texto = título do card */
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row > span:first-of-type{
    font-size:14px;font-weight:600;color:var(--txt);
  }
  /* células com rótulo (data-th) — rótulo numa coluna + valor ao lado */
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row > span[data-th]{
    display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 8px;font-size:13px;padding:6px 0;border-top:1px dashed var(--border);
  }
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row > span[data-th]::before{
    content:attr(data-th);color:var(--txt3);font-weight:600;font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;flex:0 0 76px;
  }
  /* ações: toolbar embaixo, botões maiores */
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row .dt-actions{
    display:flex!important;flex-wrap:wrap;gap:8px;justify-content:flex-start;
    margin-top:8px;padding:8px;background:var(--bg,#FAF7FB);border-radius:12px;
  }
  .panel:not(#p-financeiro) .data-table:not(.vendas-table):not(.usuarios-table) .dt-row .dt-actions .ic-btn{
    width:36px;height:36px;font-size:16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;
  }
}
