/*
 * Painel (admin e admin_empresa) e tela de login.
 * Substitui o AdminLTE: estrutura (topo, menu lateral, navegação de baixo no
 * celular) e o visual dos componentes do Bootstrap 3 e das classes do AdminLTE
 * que as telas ainda usam (.box, .info-box, .small-box, .bg-*...).
 * Componentes das telas de gestão ficam em custom.css (carregado depois).
 */

:root {
    --p-roxo: #4a2381;
    --p-roxo-escuro: #3a1a68;
    --p-roxo-claro: #f3eefb;
    --p-roxo-medio: #ddd0f1;
    --p-laranja: #ff8000;
    --p-laranja-forte: #d96400;
    --p-laranja-claro: #fff3e6;
    --p-verde: #15803d;
    --p-verde-forte: #116632;
    --p-verde-claro: #e8f6ee;
    --p-vermelho: #c62f2f;
    --p-vermelho-forte: #a52323;
    --p-vermelho-claro: #fdecec;
    --p-amarelo: #a35a00;
    --p-amarelo-claro: #fff5e0;
    --p-azul: #1d63c9;
    --p-azul-claro: #e9f1fc;
    --p-texto: #1f1a29;
    --p-texto-2: #3b3446;
    --p-suave: #6b6577;
    --p-fraco: #9a95a3;
    --p-borda: #e7e4ec;
    --p-borda-forte: #d3cedb;
    --p-fundo: #f6f5f8;
    --p-fundo-2: #faf9fb;
    --p-branco: #fff;
    --p-raio: 12px;
    --p-raio-sm: 8px;
    --p-sombra: 0 1px 2px rgba(31, 26, 41, .05);
    --p-sombra-media: 0 4px 16px rgba(31, 26, 41, .08);
    --p-sombra-alta: 0 16px 48px rgba(31, 26, 41, .18);
    --p-foco: 0 0 0 3px rgba(74, 35, 129, .22);
    --p-lateral: 252px;
    --p-topo: 60px;
    --p-nav: 62px;
    --p-seguro: env(safe-area-inset-bottom, 0px);
    --p-fonte: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

/* ------------------------------------------------------------------
 * Base
 * ---------------------------------------------------------------- */
html { -webkit-text-size-adjust: 100%; }

body.sf-painel {
    margin: 0;
    font-family: var(--p-fonte);
    font-size: 14px;
    line-height: 1.5;
    color: var(--p-texto);
    background: var(--p-fundo);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-tap-highlight-color: transparent;
}

.sf-painel h1, .sf-painel h2, .sf-painel h3, .sf-painel h4, .sf-painel h5,
.sf-painel .h1, .sf-painel .h2, .sf-painel .h3, .sf-painel .h4 {
    font-family: var(--p-fonte);
    color: var(--p-texto);
    letter-spacing: -.01em;
}
.sf-painel h4, .sf-painel .h4 { font-size: 16px; font-weight: 600; }

.sf-painel a { color: var(--p-roxo); }
.sf-painel a:hover, .sf-painel a:focus { color: var(--p-roxo-escuro); }
.sf-painel a:focus, .sf-painel button:focus { outline: none; }
.sf-painel a:focus-visible, .sf-painel button:focus-visible, .sf-painel [tabindex]:focus-visible {
    outline: 2px solid var(--p-roxo);
    outline-offset: 2px;
}

.sf-painel hr { border-top-color: var(--p-borda); }
.sf-painel code { color: var(--p-roxo); background: var(--p-roxo-claro); border-radius: 4px; }
.sf-painel small, .sf-painel .small { font-size: 86%; }
.sf-painel img { max-width: 100%; }

.sf-pular {
    position: absolute;
    top: -60px;
    left: 8px;
    z-index: 2000;
    padding: 10px 14px;
    border-radius: var(--p-raio-sm);
    background: var(--p-roxo);
    color: #fff !important;
    font-weight: 600;
}
.sf-pular:focus { top: 8px; }

/* Cores de texto e fundo (nomes do AdminLTE/Bootstrap que as telas usam) */
.sf-painel .text-muted { color: var(--p-suave); }
.sf-painel .text-primary { color: var(--p-roxo); }
.sf-painel .text-success, .sf-painel .text-green { color: var(--p-verde); }
.sf-painel .text-danger, .sf-painel .text-red { color: var(--p-vermelho); }
.sf-painel .text-warning, .sf-painel .text-yellow { color: var(--p-amarelo); }
.sf-painel .text-orange { color: var(--p-laranja-forte); }
.sf-painel .text-info, .sf-painel .text-aqua, .sf-painel .text-blue { color: var(--p-azul); }
.sf-painel .text-purple { color: var(--p-roxo); }

.bg-aqua, .bg-blue, .bg-light-blue { background-color: var(--p-azul) !important; color: #fff !important; }
.bg-green { background-color: var(--p-verde) !important; color: #fff !important; }
.bg-red, .bg-maroon { background-color: var(--p-vermelho) !important; color: #fff !important; }
.bg-yellow, .bg-orange { background-color: var(--p-laranja) !important; color: #fff !important; }
.bg-purple, .bg-navy { background-color: var(--p-roxo) !important; color: #fff !important; }
.bg-gray { background-color: #ece9f0 !important; color: var(--p-texto) !important; }

/* ------------------------------------------------------------------
 * Topo
 * ---------------------------------------------------------------- */
.sf-topo {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 1030;
    display: flex;
    align-items: center;
    gap: 4px;
    height: var(--p-topo);
    padding: 0 10px 0 6px;
    background: rgba(255, 255, 255, .96);
    border-bottom: 1px solid var(--p-borda);
    -webkit-backdrop-filter: saturate(180%) blur(8px);
    backdrop-filter: saturate(180%) blur(8px);
}

.sf-topo-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--p-texto-2) !important;
    font-size: 19px;
    cursor: pointer;
}
.sf-topo-btn:hover { background: var(--p-fundo); }

.sf-topo-marca {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: var(--p-texto) !important;
    font-weight: 700;
    font-size: 16px;
    text-decoration: none !important;
    white-space: nowrap;
}
.sf-topo-marca img { width: 32px; height: 32px; }
.sf-topo-titulo {
    overflow: hidden;
    min-width: 0;
    font-size: 15px;
    font-weight: 600;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.sf-topo-espaco { flex: 1 1 auto; min-width: 0; }

/* Situação da loja (só empresa): abre e fecha a loja sem sair da tela */
.sf-loja-form { margin: 0 4px 0 0; }
.sf-loja-pill {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 34px;
    padding: 0 12px 0 10px;
    border: 1px solid;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
    transition: background .15s, border-color .15s;
}
.sf-loja-pill .sf-ponto { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.sf-loja-pill.is-aberta { background: var(--p-verde-claro); border-color: #bfe3cc; color: var(--p-verde); }
.sf-loja-pill.is-aberta .sf-ponto { box-shadow: 0 0 0 3px rgba(21, 128, 61, .18); }
.sf-loja-pill.is-fechada { background: var(--p-fundo); border-color: var(--p-borda-forte); color: var(--p-suave); }
.sf-loja-pill:hover { filter: brightness(.97); }
.sf-loja-pill .sf-loja-acao { display: none; font-weight: 500; color: var(--p-suave); }

/* Usuário */
.sf-usuario { position: relative; }
.sf-usuario > .dropdown-toggle {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 44px;
    padding: 0 6px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--p-texto);
    text-align: left;
    cursor: pointer;
}
.sf-usuario > .dropdown-toggle:hover { background: var(--p-fundo); }
.sf-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--p-roxo);
    color: #fff;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .02em;
}
.sf-usuario-nome { display: none; line-height: 1.2; max-width: 180px; }
.sf-usuario-nome b, .sf-usuario-nome small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.sf-usuario-nome b { font-size: 13px; font-weight: 600; }
.sf-usuario-nome small { font-size: 12px; color: var(--p-suave); }
.sf-usuario > .dropdown-toggle .fa-angle-down { display: none; color: var(--p-fraco); }
.sf-usuario .dropdown-menu { min-width: 240px; margin-top: 6px; }
.sf-usuario-cabeca { padding: 10px 12px 12px; margin-bottom: 4px; border-bottom: 1px solid var(--p-borda); line-height: 1.35; }
.sf-usuario-cabeca b { display: block; font-size: 14px; }
.sf-usuario-cabeca small { display: block; color: var(--p-suave); overflow-wrap: anywhere; }

/* ------------------------------------------------------------------
 * Menu lateral (fixo no computador, gaveta no celular)
 * ---------------------------------------------------------------- */
.sf-lateral {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: 1050;
    display: flex;
    flex-direction: column;
    width: min(86vw, 300px);
    background: var(--p-branco);
    border-right: 1px solid var(--p-borda);
    transform: translateX(-102%);
    transition: transform .25s ease, box-shadow .25s ease;
    visibility: hidden;
}
body.sidebar-open .sf-lateral { transform: none; visibility: visible; box-shadow: var(--p-sombra-alta); }

.sf-lateral-fundo {
    position: fixed;
    inset: 0;
    z-index: 1045;
    background: rgba(20, 14, 30, .45);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease, visibility .25s;
}
body.sidebar-open .sf-lateral-fundo { opacity: 1; visibility: visible; }
body.sidebar-open { overflow: hidden; }

.sf-lateral-topo {
    display: flex;
    align-items: center;
    gap: 8px;
    height: var(--p-topo);
    padding: 0 8px 0 16px;
    border-bottom: 1px solid var(--p-borda);
    flex: 0 0 auto;
}
.sf-marca {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
    color: var(--p-texto) !important;
    text-decoration: none !important;
}
.sf-marca img { width: 34px; height: 34px; flex: 0 0 auto; }
.sf-marca span { min-width: 0; line-height: 1.15; }
.sf-marca b { display: block; font-size: 15px; font-weight: 700; }
.sf-marca small { display: block; overflow: hidden; font-size: 12px; color: var(--p-suave); white-space: nowrap; text-overflow: ellipsis; }

.sf-lateral-org {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 12px 12px 0;
    padding: 10px 12px;
    border: 1px solid var(--p-borda);
    border-radius: 10px;
    background: var(--p-fundo-2);
    color: var(--p-texto) !important;
    text-decoration: none !important;
}
.sf-lateral-org:hover { border-color: var(--p-roxo-medio); background: var(--p-roxo-claro); }
.sf-lateral-org img, .sf-lateral-org .sf-org-inicial {
    width: 32px;
    height: 32px;
    flex: 0 0 auto;
    border-radius: 8px;
    object-fit: cover;
    background: #fff;
    border: 1px solid var(--p-borda);
}
.sf-org-inicial { display: inline-flex; align-items: center; justify-content: center; font-weight: 700; color: var(--p-roxo); }
.sf-lateral-org span { flex: 1 1 auto; min-width: 0; line-height: 1.25; }
.sf-lateral-org b { display: block; overflow: hidden; font-size: 13px; white-space: nowrap; text-overflow: ellipsis; }
.sf-lateral-org small { display: block; font-size: 12px; color: var(--p-suave); }
.sf-lateral-org .fa { color: var(--p-fraco); }

/* "Instalar o app" (PWA) no topo do menu: pwa.js mostra só no navegador do celular */
.sf-lateral-app {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
    margin: 12px 12px 0;
    padding: 10px 12px;
    border: 1px solid var(--p-roxo-medio);
    border-radius: 10px;
    background: var(--p-roxo-claro);
    color: var(--p-texto) !important;
    text-decoration: none !important;
}
.sf-lateral-app:hover { border-color: var(--p-roxo); }
.sf-lateral-app-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    flex: 0 0 auto;
    border-radius: 8px;
    background: var(--p-roxo);
    color: #fff;
    font-size: 20px;
}
.sf-lateral-app > span:nth-child(2) { flex: 1 1 auto; min-width: 0; line-height: 1.25; }
.sf-lateral-app b { display: block; font-size: 13px; }
.sf-lateral-app small { display: block; font-size: 12px; color: var(--p-suave); }
.sf-lateral-app > .fa { color: var(--p-roxo); }

.sf-menu {
    flex: 1 1 auto;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 4px 12px 16px;
}
.sf-menu-titulo {
    margin: 18px 10px 6px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--p-fraco);
}
.sf-menu ul { margin: 0; padding: 0; list-style: none; }
.sf-menu li { margin: 1px 0; }
.sf-menu a {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 40px;
    padding: 8px 10px;
    border-radius: 8px;
    color: var(--p-texto-2);
    font-weight: 500;
    text-decoration: none !important;
    transition: background .12s, color .12s;
}
.sf-menu a > .fa:first-child { width: 20px; flex: 0 0 auto; font-size: 16px; text-align: center; color: var(--p-fraco); transition: color .12s; }
.sf-menu a:hover { background: var(--p-fundo); color: var(--p-texto); }
.sf-menu a:hover > .fa:first-child { color: var(--p-texto-2); }
.sf-menu li.active > a { background: var(--p-roxo-claro); color: var(--p-roxo); font-weight: 600; }
.sf-menu li.active > a > .fa:first-child { color: var(--p-roxo); }
.sf-menu .sf-externo { margin-left: auto; font-size: 11px; color: var(--p-fraco); }

.sf-contador {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    margin-left: auto;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--p-laranja);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}
.sf-contador:empty { display: none !important; }

.sf-lateral-rodape {
    flex: 0 0 auto;
    padding: 10px 12px calc(10px + var(--p-seguro));
    border-top: 1px solid var(--p-borda);
}
.sf-lateral-rodape ul { margin: 0; padding: 0; list-style: none; }
.sf-lateral-rodape a {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 40px;
    padding: 8px 10px;
    border-radius: 8px;
    color: var(--p-texto-2);
    font-weight: 500;
    text-decoration: none !important;
}
.sf-lateral-rodape a:hover { background: var(--p-fundo); }
.sf-lateral-rodape a > .fa:first-child { width: 20px; text-align: center; font-size: 16px; color: var(--p-fraco); }
.sf-lateral-rodape .sf-sair, .sf-lateral-rodape .sf-sair > .fa:first-child { color: var(--p-vermelho); }

/* ------------------------------------------------------------------
 * Navegação de baixo (celular e tablet)
 * ---------------------------------------------------------------- */
.sf-nav-baixo {
    position: fixed;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1020;
    display: flex;
    padding-bottom: var(--p-seguro);
    background: rgba(255, 255, 255, .98);
    border-top: 1px solid var(--p-borda);
    box-shadow: 0 -2px 12px rgba(31, 26, 41, .04);
}
.sf-nav-baixo a, .sf-nav-baixo button {
    position: relative;
    display: flex;
    flex: 1 1 0;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    min-width: 0;
    height: var(--p-nav);
    padding: 0 2px;
    border: 0;
    background: none;
    color: var(--p-suave) !important;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.1;
    text-decoration: none !important;
    cursor: pointer;
}
.sf-nav-baixo .fa { font-size: 20px; line-height: 1; }
.sf-nav-baixo span { max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.sf-nav-baixo .is-ativo { color: var(--p-roxo) !important; }
.sf-nav-baixo .is-ativo::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 32px;
    height: 3px;
    margin-left: -16px;
    border-radius: 0 0 3px 3px;
    background: var(--p-roxo);
}
.sf-nav-baixo .sf-contador {
    position: absolute;
    top: 6px;
    left: 50%;
    margin-left: 4px;
    min-width: 18px;
    height: 18px;
    font-size: 10.5px;
    border: 2px solid #fff;
    box-sizing: content-box;
}

/* ------------------------------------------------------------------
 * Área de conteúdo
 * ---------------------------------------------------------------- */
.wrapper { position: relative; min-height: 100vh; overflow-x: clip; }

.content-wrapper {
    min-height: 100vh;
    padding-top: var(--p-topo);
    padding-bottom: calc(var(--p-nav) + var(--p-seguro) + 20px);
    background: var(--p-fundo);
}

.content-header {
    display: flex;
    flex-direction: column;
    max-width: 1440px;
    padding: 18px 16px 6px;
}
.content-header > h1 {
    margin: 0;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
.content-header > h1 > small {
    display: block;
    margin-top: 2px;
    padding: 0;
    font-size: 13px;
    font-weight: 400;
    color: var(--p-suave);
    letter-spacing: 0;
}
.content-header > .breadcrumb {
    order: -1;
    display: flex;
    flex-wrap: nowrap;
    margin: 0 0 4px;
    padding: 0;
    overflow: hidden;
    background: none;
    font-size: 12.5px;
    white-space: nowrap;
}
.content-header > .breadcrumb > li { display: inline-flex; align-items: center; min-width: 0; color: var(--p-suave); }
.content-header > .breadcrumb > li:last-child { overflow: hidden; text-overflow: ellipsis; display: block; }
.content-header > .breadcrumb > li + li::before { content: "\203A"; padding: 0 7px; color: var(--p-fraco); font-size: 14px; }
.content-header > .breadcrumb a { color: var(--p-suave); }
.content-header > .breadcrumb a:hover { color: var(--p-roxo); }
.content-header > .breadcrumb .fa { display: none; }
.content-header > .breadcrumb > .active { color: var(--p-texto-2); }
/* Tela de primeiro nível (Início › Pedidos): o título já diz onde está */
.content-header > .breadcrumb:not(:has(> li:nth-child(3))) { display: none; }

/* Voltar (celular): criado pelo painel.js a partir da trilha */
.sf-voltar-topo {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    order: -1;
    align-self: flex-start;
    margin: -4px 0 6px -6px;
    padding: 6px 8px;
    border-radius: 8px;
    color: var(--p-suave) !important;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none !important;
}
.sf-voltar-topo:hover { background: #ece9f0; color: var(--p-texto) !important; }

.content {
    max-width: 1440px;
    padding: 10px 16px 16px;
}
.content::after { content: ""; display: table; clear: both; }

.sf-rodape {
    display: none;
    max-width: 1440px;
    padding: 0 24px 24px;
    font-size: 12px;
    color: var(--p-fraco);
}

/* ------------------------------------------------------------------
 * Cartões (.box do AdminLTE)
 * ---------------------------------------------------------------- */
.box {
    position: relative;
    margin-bottom: 16px;
    background: var(--p-branco);
    border: 1px solid var(--p-borda);
    border-radius: var(--p-raio);
    box-shadow: var(--p-sombra);
}
.box.box-solid, .box.box-primary, .box.box-success, .box.box-warning, .box.box-danger, .box.box-info, .box.box-default { border-top: 1px solid var(--p-borda); }
.box-header {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    min-height: 52px;
    padding: 12px 16px;
}
.box-header::before, .box-header::after { display: none; }
.box-header.with-border { border-bottom: 1px solid var(--p-borda); }
.box-header > .fa, .box-header > .glyphicon { color: var(--p-suave); }
.box-header .box-title {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    font-size: 15px;
    font-weight: 650;
    line-height: 1.35;
    color: var(--p-texto);
    overflow-wrap: anywhere;
}
.box-header .box-title .label { vertical-align: 2px; }
.box-header > .box-tools,
.box-header > .pull-right {
    position: static;
    float: none !important;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}
.box-header > .box-tools .btn { margin: 0; }
.box-body { padding: 16px; border-radius: 0 0 var(--p-raio) var(--p-raio); }
.box-body::before, .box-body::after { content: " "; display: table; }
.box-body::after { clear: both; }
.box-body > .table:last-child, .box-body > .table-responsive:last-child > .table { margin-bottom: 0; }
.box-footer {
    padding: 12px 16px;
    border-top: 1px solid var(--p-borda);
    background: var(--p-fundo-2);
    border-radius: 0 0 var(--p-raio) var(--p-raio);
}
.box-footer::after { content: ""; display: table; clear: both; }
.btn-box-tool {
    padding: 6px 8px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--p-suave);
    font-size: 13px;
    font-weight: 600;
}
.btn-box-tool:hover, .btn-box-tool:focus { background: var(--p-fundo); color: var(--p-roxo); }

/* Abas dentro de cartão (.nav-tabs-custom) */
.nav-tabs-custom {
    margin-bottom: 16px;
    background: var(--p-branco);
    border: 1px solid var(--p-borda);
    border-radius: var(--p-raio);
    box-shadow: var(--p-sombra);
}
.nav-tabs-custom > .nav-tabs { padding: 0 8px; }
.nav-tabs-custom > .tab-content { padding: 16px; }

/* ------------------------------------------------------------------
 * Indicadores (.info-box e .small-box do AdminLTE)
 * ---------------------------------------------------------------- */
.info-box {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 0;
    margin-bottom: 16px;
    padding: 14px 16px;
    background: var(--p-branco);
    border: 1px solid var(--p-borda);
    border-radius: var(--p-raio);
    box-shadow: var(--p-sombra);
    color: var(--p-texto);
}
a.info-box:hover { border-color: var(--p-roxo-medio); box-shadow: var(--p-sombra-media); color: var(--p-texto); text-decoration: none; }
.info-box-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    float: none;
    width: 46px;
    height: 46px;
    border-radius: 12px;
    font-size: 20px;
    line-height: 1;
}
.info-box-icon > img { max-width: 100%; }
/* Indicadores lado a lado com a mesma altura */
.sf-painel .row:has(> [class*="col-"] > .info-box) { display: flex; flex-wrap: wrap; }
.sf-painel .row:has(> [class*="col-"] > .info-box)::before, .sf-painel .row:has(> [class*="col-"] > .info-box)::after { display: none; }
.sf-painel .row > [class*="col-"] > .info-box { height: calc(100% - 16px); }
@media (max-width: 767px) { .sf-painel .row > [class*="col-"] > .info-box { height: calc(100% - 12px); } }
.info-box-icon.bg-aqua, .info-box-icon.bg-blue { background: var(--p-azul-claro) !important; color: var(--p-azul) !important; }
.info-box-icon.bg-green { background: var(--p-verde-claro) !important; color: var(--p-verde) !important; }
.info-box-icon.bg-red { background: var(--p-vermelho-claro) !important; color: var(--p-vermelho) !important; }
.info-box-icon.bg-yellow, .info-box-icon.bg-orange { background: var(--p-laranja-claro) !important; color: var(--p-laranja-forte) !important; }
.info-box-icon.bg-purple, .info-box-icon.bg-navy { background: var(--p-roxo-claro) !important; color: var(--p-roxo) !important; }
.info-box-content { flex: 1 1 auto; min-width: 0; margin: 0; padding: 0; }
.info-box-text {
    display: block;
    overflow: hidden;
    font-size: 13px;
    font-weight: 500;
    color: var(--p-suave);
    text-transform: none;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.info-box-number { display: block; font-size: 22px; font-weight: 700; line-height: 1.25; }
.info-box-number small { font-size: 12px; font-weight: 400; color: var(--p-suave); }
.info-box .progress { height: 4px; margin: 6px 0 4px; }
.progress-description { font-size: 12px; color: var(--p-suave); }

.small-box {
    position: relative;
    display: block;
    margin-bottom: 16px;
    overflow: hidden;
    border-radius: var(--p-raio);
    box-shadow: var(--p-sombra);
}
.small-box > .inner { padding: 16px; }
.small-box h3 { margin: 0 0 4px; font-size: 26px; font-weight: 700; color: inherit; }
.small-box p { margin: 0; font-size: 14px; }
.small-box .icon { position: absolute; top: 12px; right: 14px; font-size: 48px; opacity: .2; }
.small-box > .small-box-footer {
    display: block;
    padding: 8px 16px;
    background: rgba(0, 0, 0, .08);
    color: rgba(255, 255, 255, .92);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
}
.small-box > .small-box-footer:hover { background: rgba(0, 0, 0, .15); color: #fff; }

/* ------------------------------------------------------------------
 * Botões
 * ---------------------------------------------------------------- */
.sf-painel .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin: 0;
    padding: 8px 14px;
    border: 1px solid transparent;
    border-radius: var(--p-raio-sm);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.43;
    box-shadow: none;
    transition: background-color .15s, border-color .15s, color .15s, box-shadow .15s;
    -webkit-user-select: none;
    user-select: none;
}
.sf-painel .btn:focus, .sf-painel .btn:active:focus, .sf-painel .btn.active:focus { outline: none; box-shadow: var(--p-foco); }
.sf-painel .btn:active, .sf-painel .btn.active { box-shadow: none; }
.sf-painel .btn .fa { font-size: 1em; }
.sf-painel .btn + .btn,
.sf-painel .btn + form,
.sf-painel form + .btn,
.sf-painel .btn + .btn-group,
.sf-painel .btn-group + .btn,
.sf-painel a + a > .btn,
.sf-painel .sf-form-inline + .sf-form-inline,
.sf-painel .sf-form-inline + .btn,
.sf-painel .btn + .sf-form-inline { margin-left: 6px; }
.sf-painel .btn-block { display: flex; width: 100%; }
.sf-painel .btn-block + .btn-block { margin-top: 8px; margin-left: 0; }
.sf-painel .btn-block + form, .sf-painel form + .btn-block { margin-left: 0; }

.sf-painel .btn-lg { padding: 11px 20px; font-size: 16px; border-radius: 10px; }
.sf-painel .btn-sm { padding: 6px 11px; font-size: 13px; }
.sf-painel .btn-xs { gap: 4px; padding: 3px 9px; font-size: 12px; border-radius: 6px; }
.sf-painel .btn-flat { border-radius: var(--p-raio-sm); }
.sf-painel .btn-xs.btn-flat { border-radius: 6px; }

.sf-painel .btn-default { background: #fff; border-color: var(--p-borda-forte); color: var(--p-texto-2); }
.sf-painel .btn-default:hover, .sf-painel .btn-default:focus { background: var(--p-fundo); border-color: #c4bfcd; color: var(--p-texto); }
.sf-painel .btn-default:active, .sf-painel .btn-default.active, .sf-painel .open > .btn-default.dropdown-toggle { background: #ece9f0; border-color: #c4bfcd; color: var(--p-texto); }

.sf-painel .btn-primary { background: var(--p-roxo); border-color: var(--p-roxo); color: #fff; }
.sf-painel .btn-primary:hover, .sf-painel .btn-primary:focus, .sf-painel .btn-primary:active, .sf-painel .btn-primary.active,
.sf-painel .open > .btn-primary.dropdown-toggle { background: var(--p-roxo-escuro); border-color: var(--p-roxo-escuro); color: #fff; }

.sf-painel .btn-success { background: var(--p-verde); border-color: var(--p-verde); color: #fff; }
.sf-painel .btn-success:hover, .sf-painel .btn-success:focus, .sf-painel .btn-success:active, .sf-painel .btn-success.active { background: var(--p-verde-forte); border-color: var(--p-verde-forte); color: #fff; }

.sf-painel .btn-danger { background: var(--p-vermelho); border-color: var(--p-vermelho); color: #fff; }
.sf-painel .btn-danger:hover, .sf-painel .btn-danger:focus, .sf-painel .btn-danger:active, .sf-painel .btn-danger.active { background: var(--p-vermelho-forte); border-color: var(--p-vermelho-forte); color: #fff; }

.sf-painel .btn-warning { background: var(--p-laranja); border-color: var(--p-laranja); color: #fff; }
.sf-painel .btn-warning:hover, .sf-painel .btn-warning:focus, .sf-painel .btn-warning:active, .sf-painel .btn-warning.active { background: var(--p-laranja-forte); border-color: var(--p-laranja-forte); color: #fff; }

.sf-painel .btn-info { background: var(--p-azul); border-color: var(--p-azul); color: #fff; }
.sf-painel .btn-info:hover, .sf-painel .btn-info:focus, .sf-painel .btn-info:active { background: #1652a8; border-color: #1652a8; color: #fff; }

.sf-painel .btn-link { color: var(--p-roxo); font-weight: 600; }
.sf-painel .btn-link:hover, .sf-painel .btn-link:focus { color: var(--p-roxo-escuro); text-decoration: underline; box-shadow: none; }

.sf-painel .btn.disabled, .sf-painel .btn[disabled], .sf-painel fieldset[disabled] .btn { opacity: .5; }
.sf-painel .btn.is-enviando { position: relative; color: transparent !important; pointer-events: none; }
.sf-painel .btn.is-enviando::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 16px;
    height: 16px;
    margin: -8px 0 0 -8px;
    border: 2px solid rgba(255, 255, 255, .45);
    border-top-color: #fff;
    border-radius: 50%;
    animation: sf-girar .7s linear infinite;
}
.sf-painel .btn-default.is-enviando::after { border-color: rgba(31, 26, 41, .2); border-top-color: var(--p-texto); }
@keyframes sf-girar { to { transform: rotate(360deg); } }

.sf-painel .btn-group { display: inline-flex; }
.sf-painel .btn-group > .btn { margin: 0; }
.sf-painel .btn-group > .btn + .btn, .sf-painel .btn-group > .btn + .dropdown-toggle, .sf-painel .btn-group > .btn-group + .btn { margin-left: -1px; }
.sf-painel .btn-group > .btn:not(:first-child):not(:last-child) { border-radius: 0; }
.sf-painel .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.sf-painel .btn-group > .btn:last-child:not(:first-child), .sf-painel .btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.sf-painel .btn-group > .btn:first-child:not(:last-child).dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.sf-painel .btn-group.open .dropdown-toggle { box-shadow: none; }
.sf-painel .btn .caret { margin-left: 2px; }

/* ------------------------------------------------------------------
 * Formulários
 * ---------------------------------------------------------------- */
.sf-painel label { font-weight: 600; color: var(--p-texto-2); }
.sf-painel .control-label { font-size: 13.5px; }
.sf-painel .form-group { margin-bottom: 16px; }

.sf-painel .form-control,
.sf-painel input[type="search"],
.sf-painel .dataTables_length select {
    height: 40px;
    padding: 8px 12px;
    border: 1px solid var(--p-borda-forte);
    border-radius: var(--p-raio-sm);
    background-color: #fff;
    color: var(--p-texto);
    font-size: 14px;
    box-shadow: none;
    transition: border-color .15s, box-shadow .15s;
}
.sf-painel textarea.form-control { height: auto; min-height: 84px; line-height: 1.5; }
.sf-painel select.form-control[multiple], .sf-painel select.form-control[size] { height: auto; }
.sf-painel .form-control::placeholder { color: var(--p-fraco); }
.sf-painel .form-control:hover { border-color: #c4bfcd; }
.sf-painel .form-control:focus,
.sf-painel input[type="search"]:focus,
.sf-painel .dataTables_length select:focus { border-color: var(--p-roxo); outline: none; box-shadow: var(--p-foco); }
.sf-painel .form-control[disabled], .sf-painel .form-control[readonly], .sf-painel fieldset[disabled] .form-control { background: var(--p-fundo); color: var(--p-suave); }
.sf-painel .form-control-static { min-height: 40px; padding-top: 10px; padding-bottom: 10px; }
.sf-painel input[type="file"].form-control, .sf-painel input[type="file"] { height: auto; padding: 7px; font-size: 13px; }
.sf-painel input[type="file"]::file-selector-button {
    margin-right: 10px;
    padding: 6px 12px;
    border: 1px solid var(--p-borda-forte);
    border-radius: 6px;
    background: var(--p-fundo);
    color: var(--p-texto-2);
    font: 600 13px var(--p-fonte);
    cursor: pointer;
}
.sf-painel input[type="color"].form-control { padding: 4px; }

.sf-painel .input-sm, .sf-painel .form-group-sm .form-control, .sf-painel .input-group-sm > .form-control { height: 34px; padding: 6px 10px; font-size: 13px; border-radius: 7px; }
.sf-painel .input-lg { height: 48px; font-size: 16px; border-radius: 10px; }

.sf-painel .input-group-addon {
    padding: 0 12px;
    border-color: var(--p-borda-forte);
    border-radius: var(--p-raio-sm);
    background: var(--p-fundo);
    color: var(--p-suave);
    font-size: 13px;
    font-weight: 600;
}
.sf-painel .input-group-sm > .input-group-addon { font-size: 12px; border-radius: 7px; }
.sf-painel .input-group .form-control:first-child,
.sf-painel .input-group-addon:first-child,
.sf-painel .input-group-btn:first-child > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.sf-painel .input-group .form-control:last-child,
.sf-painel .input-group-addon:last-child,
.sf-painel .input-group-btn:last-child > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.sf-painel .input-group-btn > .btn { height: 40px; margin: 0; }
.sf-painel .input-group-sm > .input-group-btn > .btn { height: 34px; }
.sf-painel .input-group .form-control:focus { z-index: 3; }

.sf-painel .help-block { margin: 6px 0 0; font-size: 12.5px; color: var(--p-suave); }
.sf-painel .has-error .form-control { border-color: var(--p-vermelho); }
.sf-painel .has-error .form-control:focus { box-shadow: 0 0 0 3px rgba(198, 47, 47, .18); }
.sf-painel .has-error .help-block, .sf-painel .has-error .control-label { color: var(--p-vermelho); }
.sf-painel .has-success .form-control { border-color: var(--p-verde); }

.sf-painel input[type="checkbox"], .sf-painel input[type="radio"] { width: 18px; height: 18px; margin-top: 1px; accent-color: var(--p-roxo); cursor: pointer; }
.sf-painel .checkbox label, .sf-painel .radio label, .sf-painel .checkbox-inline, .sf-painel .radio-inline {
    min-height: 22px;
    padding-left: 26px;
    font-weight: 500;
    color: var(--p-texto-2);
    line-height: 22px;
}
.sf-painel .checkbox input[type="checkbox"], .sf-painel .checkbox-inline input[type="checkbox"],
.sf-painel .radio input[type="radio"], .sf-painel .radio-inline input[type="radio"] { margin-left: -26px; margin-top: 2px; }
.sf-painel .checkbox-inline + .checkbox-inline, .sf-painel .radio-inline + .radio-inline { margin-left: 16px; }
.sf-painel .form-check { position: relative; display: block; padding-left: 26px; margin-bottom: 6px; }
.sf-painel .form-check-inline { display: inline-block; margin-right: 16px; }
.sf-painel .form-check-input { position: absolute; margin: 2px 0 0 -26px; }
.sf-painel .form-check-label { font-weight: 500; }
/* Várias opções dentro de um só .form-check-inline (formulários de produto) */
.sf-painel .form-check.form-check-inline { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 !important; padding: 9px 0 0; }
.sf-painel .form-check-inline .form-check-input { position: static; margin: 0; }
.sf-painel .form-check-inline .form-check-label { margin: 0 14px 0 0 !important; }

/* Etiquetas digitadas (tagsinput) com cara de campo */
.sf-painel .bootstrap-tagsinput {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    width: 100%;
    height: auto;
    min-height: 40px;
    padding: 5px 8px;
    border: 1px solid var(--p-borda-forte);
    border-radius: var(--p-raio-sm);
    box-shadow: none;
    line-height: 1.4;
}
.sf-painel .bootstrap-tagsinput:focus-within { border-color: var(--p-roxo); box-shadow: var(--p-foco); }
.sf-painel .bootstrap-tagsinput .tag { margin: 0; padding: 4px 6px 4px 10px; color: var(--p-roxo); background: var(--p-roxo-claro); }
.sf-painel .bootstrap-tagsinput .tag [data-role="remove"] { margin-left: 4px; padding: 0 4px; border-radius: 50%; }
.sf-painel .bootstrap-tagsinput input { flex: 1 1 80px; min-width: 80px; height: 28px; font-size: 14px; }

/* Preços do produto (linhas criadas pelo custom.js e pelo formulário de edição) */
.sf-painel .sf-preco-linha {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 8px;
    padding: 8px 8px 8px 14px;
    border: 1px solid var(--p-borda);
    border-radius: 10px;
    background: #fff;
}
.sf-painel .sf-preco-linha::before, .sf-painel .sf-preco-linha::after { display: none; }
.sf-painel .sf-preco-linha > div { float: none; width: auto; padding: 0 !important; text-align: left !important; }
.sf-painel .sf-preco-linha > div:nth-child(1), .sf-painel .sf-preco-linha > div:nth-child(3) { display: none; }
.sf-painel .sf-preco-linha > div:nth-child(2) { flex: 1 1 auto; min-width: 0; }
.sf-painel .sf-preco-linha > div:nth-child(4) { flex: 0 0 auto; color: var(--p-texto); font-variant-numeric: tabular-nums; }
.sf-painel .sf-preco-linha > div:nth-child(4)::before { content: "R$ "; color: var(--p-suave); font-size: 12px; }
.sf-painel .sf-preco-linha > div:last-child { flex: 0 0 auto; }
.sf-painel .sf-preco-linha .js-remover-preco { min-height: 32px; padding: 4px 10px; border: 1px solid #f3c4c4; background: #fff; color: var(--p-vermelho); font-size: 12.5px; }
.sf-painel .sf-preco-linha .js-remover-preco:hover { background: var(--p-vermelho-claro); }

/* Rótulos ao lado (form-horizontal): alinhados à esquerda, à altura do campo */
.sf-painel .form-horizontal .control-label { padding-top: 10px; text-align: left; }
.sf-painel .form-horizontal .form-group { margin-left: -8px; margin-right: -8px; }
.sf-painel .form-horizontal .form-group > [class*="col-"] { padding-left: 8px; padding-right: 8px; }
.sf-painel .form-horizontal .radio-inline, .sf-painel .form-horizontal .checkbox-inline,
.sf-painel .form-horizontal .radio, .sf-painel .form-horizontal .checkbox { padding-top: 9px; }

.sf-painel fieldset { min-width: 0; }
.sf-painel legend { margin-bottom: 14px; padding-bottom: 8px; border-bottom-color: var(--p-borda); font-size: 15px; font-weight: 650; color: var(--p-texto); }

/* Telas antigas: "Salvar | Limpar | Cancelar" num btn-group. O "Limpar" apaga o
   que foi digitado sem perguntar: sai; os outros viram botões separados */
.sf-painel form [type="reset"] { display: none !important; }
.sf-painel .btn-group:has(> [type="submit"]) { display: flex; flex-wrap: wrap; gap: 8px; }
.sf-painel .btn-group:has(> [type="submit"]) > .btn { float: none; margin: 0 !important; border-radius: var(--p-raio-sm) !important; }
.sf-painel .btn-group:has(> [type="submit"]) > a.btn { background: #fff; border-color: var(--p-borda-forte); color: var(--p-texto-2); }

/* Barra de salvar dos formulários (rodapé fixo no celular) */
.sf-form-acoes {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid var(--p-borda);
}
.sf-form-acoes .btn { margin: 0 !important; }

/* ------------------------------------------------------------------
 * Tabelas
 * ---------------------------------------------------------------- */
.sf-painel .table { margin-bottom: 16px; color: var(--p-texto); }
.sf-painel .table > thead > tr > th {
    padding: 10px 12px;
    border-bottom: 1px solid var(--p-borda);
    background: var(--p-fundo-2);
    color: var(--p-suave);
    font-size: 12px;
    font-weight: 650;
    letter-spacing: .03em;
    text-transform: uppercase;
    white-space: nowrap;
    vertical-align: middle;
}
.sf-painel .table > thead > tr > th:first-child { border-top-left-radius: 8px; }
.sf-painel .table > thead > tr > th:last-child { border-top-right-radius: 8px; }
.sf-painel .table > tbody > tr > td,
.sf-painel .table > tbody > tr > th,
.sf-painel .table > tfoot > tr > td,
.sf-painel .table > tfoot > tr > th {
    padding: 12px;
    border-top: 1px solid var(--p-borda);
    vertical-align: middle;
}
.sf-painel .table > thead:first-child > tr:first-child > th { border-top: 0; }
.sf-painel .table > tbody > tr > th { font-weight: 600; color: var(--p-texto-2); }
.sf-painel .table-condensed > thead > tr > th,
.sf-painel .table-condensed > tbody > tr > td,
.sf-painel .table-condensed > tbody > tr > th,
.sf-painel .table-condensed > tfoot > tr > td,
.sf-painel .table-condensed > tfoot > tr > th { padding: 8px 10px; }
.sf-painel .table-striped > tbody > tr:nth-of-type(odd) { background: var(--p-fundo-2); }
.sf-painel .table-hover > tbody > tr:hover { background: #f4f1f8; }
.sf-painel .table-bordered { border-color: var(--p-borda); border-radius: 8px; }
.sf-painel .table-bordered > thead > tr > th, .sf-painel .table-bordered > tbody > tr > td, .sf-painel .table-bordered > tbody > tr > th { border-color: var(--p-borda); }
.sf-painel .table > tbody > tr.active > td, .sf-painel .table > tbody > tr > td.active { background: var(--p-fundo); }
.sf-painel .table > tbody > tr.success > td { background: var(--p-verde-claro); }
.sf-painel .table > tbody > tr.danger > td { background: var(--p-vermelho-claro); }
.sf-painel .table > tbody > tr.warning > td { background: var(--p-amarelo-claro); }
.sf-painel .table > tbody > tr.info > td { background: var(--p-azul-claro); }
.sf-painel .table-responsive { border: 0; margin-bottom: 0; -webkit-overflow-scrolling: touch; }
/* Telas antigas: botões da linha separados por <br> ficam lado a lado */
.sf-painel .table td > a:has(> .btn) + br { display: none; }
.sf-painel .table td > a:has(> .btn) + br + a > .btn { margin-left: 6px; }

/* Ações de uma linha (Editar / Ver / Excluir) */
.sf-acoes-linha { display: inline-flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.sf-acoes-linha .btn, .sf-acoes-linha > a + a > .btn { margin: 0 !important; }

/* Detalhes em duas colunas (perfil/ver): tabela sem cabeçalho */
.sf-painel .table.sf-detalhes > tbody > tr > th,
.sf-painel .table.sf-detalhes > tbody > tr > td:first-child:not(:last-child) { width: 34%; color: var(--p-suave); font-weight: 500; }

/* ------------------------------------------------------------------
 * Etiquetas, contadores, avisos
 * ---------------------------------------------------------------- */
.sf-painel .label {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 650;
    line-height: 1.35;
    letter-spacing: .01em;
    vertical-align: 1px;
    white-space: nowrap;
}
.sf-painel .label-default { background: #eceaf0; color: var(--p-texto-2); }
.sf-painel .label-primary { background: var(--p-roxo-claro); color: var(--p-roxo); }
.sf-painel .label-success { background: var(--p-verde-claro); color: var(--p-verde); }
.sf-painel .label-info { background: var(--p-azul-claro); color: var(--p-azul); }
.sf-painel .label-warning { background: var(--p-amarelo-claro); color: var(--p-amarelo); }
.sf-painel .label-danger { background: var(--p-vermelho-claro); color: var(--p-vermelho); }
.sf-painel .label.bg-orange, .sf-painel .label.bg-yellow { background: var(--p-laranja-claro) !important; color: var(--p-laranja-forte) !important; }
.sf-painel .label.bg-green { background: var(--p-verde-claro) !important; color: var(--p-verde) !important; }
.sf-painel .label.bg-red { background: var(--p-vermelho-claro) !important; color: var(--p-vermelho) !important; }
.sf-painel .label.bg-aqua, .sf-painel .label.bg-blue { background: var(--p-azul-claro) !important; color: var(--p-azul) !important; }
.sf-painel .label.bg-purple, .sf-painel .label.bg-navy { background: var(--p-roxo-claro) !important; color: var(--p-roxo) !important; }

.sf-painel .badge {
    min-width: 20px;
    padding: 3px 7px;
    border-radius: 999px;
    background: #e4e0ea;
    color: var(--p-texto-2);
    font-size: 11.5px;
    font-weight: 700;
}
.sf-painel .btn-primary .badge { background: rgba(255, 255, 255, .22); color: #fff; }
.sf-painel .badge.bg-orange { background: var(--p-laranja) !important; color: #fff !important; }

.sf-painel .alert {
    position: relative;
    margin-bottom: 16px;
    padding: 12px 16px;
    border: 1px solid;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.5;
}
.sf-painel .alert > p { margin: 0; }
.sf-painel .alert > p + p { margin-top: 4px; }
.sf-painel .alert a { font-weight: 600; text-decoration: underline; color: inherit; }
.sf-painel .alert-success { background: var(--p-verde-claro); border-color: #bfe3cc; color: #0f5a2b; }
.sf-painel .alert-danger { background: var(--p-vermelho-claro); border-color: #f3c4c4; color: #8f1d1d; }
.sf-painel .alert-warning { background: var(--p-amarelo-claro); border-color: #f4d9a4; color: #7a4300; }
.sf-painel .alert-info { background: var(--p-azul-claro); border-color: #c4d8f5; color: #174d9c; }
.sf-painel .alert .alert-link { color: inherit; }
.sf-painel .alert-dismissible { padding-right: 44px; }
.sf-painel .alert-dismissible .close {
    position: absolute;
    top: 8px;
    right: 10px;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    color: inherit;
    opacity: .55;
    font-size: 22px;
    text-shadow: none;
}
.sf-painel .alert-dismissible .close:hover { opacity: 1; background: rgba(0, 0, 0, .06); }
.sf-painel .alert h4 { margin-top: 0; color: inherit; font-size: 15px; }

/* Mensagens soltas das telas antigas (<p class="text-red">...) viram aviso */
.content > p.text-red:first-child,
.content > p.text-success:first-child,
.box-body > p.text-red:first-child {
    padding: 12px 16px;
    border: 1px solid #f3c4c4;
    border-radius: 10px;
    background: var(--p-vermelho-claro);
}
.box-body > p.text-success:first-child, .content > p.text-success:first-child { border-color: #bfe3cc; background: var(--p-verde-claro); }

.sf-painel .callout { margin-bottom: 16px; padding: 12px 16px; border-left: 4px solid var(--p-borda-forte); border-radius: 8px; background: #fff; }
.sf-painel .callout.callout-info { border-left-color: var(--p-azul); background: var(--p-azul-claro); }
.sf-painel .callout.callout-warning { border-left-color: var(--p-laranja); background: var(--p-amarelo-claro); }
.sf-painel .callout.callout-danger { border-left-color: var(--p-vermelho); background: var(--p-vermelho-claro); }
.sf-painel .callout.callout-success { border-left-color: var(--p-verde); background: var(--p-verde-claro); }

.sf-painel .well { padding: 14px 16px; border: 1px solid var(--p-borda); border-radius: 10px; background: var(--p-fundo-2); box-shadow: none; }

.sf-painel .progress { height: 8px; margin-bottom: 8px; border-radius: 999px; background: #eceaf0; box-shadow: none; }
.sf-painel .progress.xs, .sf-painel .progress-xxs, .sf-painel .progress-xs { height: 4px; }
.sf-painel .progress-bar { background: var(--p-roxo); box-shadow: none; }
.sf-painel .progress-bar-aqua, .sf-painel .progress-bar-info { background: var(--p-azul); }
.sf-painel .progress-bar-success, .sf-painel .progress-bar-green { background: var(--p-verde); }
.sf-painel .progress-bar-danger, .sf-painel .progress-bar-red { background: var(--p-vermelho); }
.sf-painel .progress-bar-warning, .sf-painel .progress-bar-yellow { background: var(--p-laranja); }

/* ------------------------------------------------------------------
 * Abas, menus suspensos, paginação, trilha
 * ---------------------------------------------------------------- */
.sf-painel .nav-tabs {
    display: flex;
    flex-wrap: nowrap;
    margin-bottom: 16px;
    overflow-x: auto;
    border-bottom: 1px solid var(--p-borda);
    scrollbar-width: none;
}
.sf-painel .nav-tabs::-webkit-scrollbar { display: none; }
.sf-painel .nav-tabs::before, .sf-painel .nav-tabs::after { display: none; }
.sf-painel .nav-tabs > li { float: none; flex: 0 0 auto; margin-bottom: -1px; }
.sf-painel .nav-tabs > li > a {
    margin: 0;
    padding: 11px 14px;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    background: none;
    color: var(--p-suave);
    font-weight: 600;
    white-space: nowrap;
}
.sf-painel .nav-tabs > li > a:hover { background: none; color: var(--p-texto); border-bottom-color: var(--p-borda-forte); }
.sf-painel .nav-tabs > li.active > a,
.sf-painel .nav-tabs > li.active > a:hover,
.sf-painel .nav-tabs > li.active > a:focus { border: 0; border-bottom: 2px solid var(--p-roxo); background: none; color: var(--p-roxo); }
.sf-painel .nav-tabs.nav-justified > li > a { border-bottom: 2px solid transparent; border-radius: 0; }
.sf-painel .nav-tabs.nav-justified > li { flex: 1 1 0; }
.sf-painel .nav-tabs .badge { margin-left: 4px; }
.sf-painel .nav-pills > li > a { border-radius: 8px; color: var(--p-texto-2); font-weight: 600; }
.sf-painel .nav-pills > li.active > a, .sf-painel .nav-pills > li.active > a:hover { background: var(--p-roxo); }

.sf-painel .dropdown-menu {
    padding: 6px;
    border: 1px solid var(--p-borda);
    border-radius: 12px;
    box-shadow: var(--p-sombra-alta);
    font-size: 14px;
}
.sf-painel .dropdown-menu > li > a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 12px;
    border-radius: 8px;
    color: var(--p-texto-2);
    font-weight: 500;
}
.sf-painel .dropdown-menu > li > a > .fa { width: 16px; text-align: center; color: var(--p-fraco); }
.sf-painel .dropdown-menu > li > a:hover, .sf-painel .dropdown-menu > li > a:focus { background: var(--p-fundo); color: var(--p-texto); }
.sf-painel .dropdown-menu > li > a.text-danger, .sf-painel .dropdown-menu > li > a.text-red, .sf-painel .dropdown-menu > li > a.text-danger > .fa { color: var(--p-vermelho); }
.sf-painel .dropdown-menu .divider { margin: 6px 0; background: var(--p-borda); }
.sf-painel .dropdown-menu > li > button.sf-item-menu,
.sf-painel .dropdown-menu > li > form > button {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 12px;
    border: 0;
    border-radius: 8px;
    background: none;
    color: var(--p-texto-2);
    font-weight: 500;
    text-align: left;
}
.sf-painel .dropdown-menu > li > button.sf-item-menu:hover,
.sf-painel .dropdown-menu > li > form > button:hover { background: var(--p-fundo); }
.sf-painel .dropdown-header { padding: 6px 12px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--p-fraco); }

.sf-painel .pagination > li > a, .sf-painel .pagination > li > span {
    margin: 0 2px;
    min-width: 36px;
    padding: 7px 10px;
    border: 1px solid var(--p-borda);
    border-radius: 8px !important;
    color: var(--p-texto-2);
    text-align: center;
    font-weight: 600;
}
.sf-painel .pagination > .active > a, .sf-painel .pagination > .active > span,
.sf-painel .pagination > .active > a:hover { background: var(--p-roxo); border-color: var(--p-roxo); color: #fff; }

.sf-painel .list-group-item { border-color: var(--p-borda); }
.sf-painel .list-group-item:first-child { border-top-left-radius: 10px; border-top-right-radius: 10px; }
.sf-painel .list-group-item:last-child { border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; }

.sf-painel .panel { border-color: var(--p-borda); border-radius: var(--p-raio); box-shadow: var(--p-sombra); }
.sf-painel .panel-heading { border-top-left-radius: var(--p-raio); border-top-right-radius: var(--p-raio); }
.sf-painel .panel-default > .panel-heading { background: var(--p-fundo-2); border-color: var(--p-borda); }

.sf-painel .tooltip-inner { padding: 6px 9px; border-radius: 6px; background: var(--p-texto); font-size: 12px; }

/* ------------------------------------------------------------------
 * Janelas (modal): folha que sobe no celular
 * ---------------------------------------------------------------- */
.sf-painel .modal-backdrop.in { opacity: .45; }
.sf-painel .modal-backdrop { background: #140e1e; }
.sf-painel .modal-content { border: 0; border-radius: 16px; box-shadow: var(--p-sombra-alta); }
.sf-painel .modal-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
    border-bottom-color: var(--p-borda);
}
.sf-painel .modal-header::before, .sf-painel .modal-header::after { display: none; }
.sf-painel .modal-header .modal-title { flex: 1 1 auto; order: 0; font-size: 17px; font-weight: 700; }
.sf-painel .modal-header .close {
    order: 1;
    width: 36px;
    height: 36px;
    margin: -6px -8px -6px 0;
    border-radius: 8px;
    opacity: .5;
    font-size: 26px;
    font-weight: 400;
    text-shadow: none;
}
.sf-painel .modal-header .close:hover { opacity: 1; background: var(--p-fundo); }
.sf-painel .modal-body { padding: 20px; }
.sf-painel .modal-footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    padding: 14px 20px;
    border-top-color: var(--p-borda);
    background: var(--p-fundo-2);
    border-radius: 0 0 16px 16px;
}
.sf-painel .modal-footer::before, .sf-painel .modal-footer::after { display: none; }
.sf-painel .modal-footer .btn { margin: 0 !important; }

/* ------------------------------------------------------------------
 * DataTables, select2, calendário
 * ---------------------------------------------------------------- */
.dataTables_wrapper { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; }
.dataTables_wrapper::after { display: none; }
.dataTables_wrapper > table, .dataTables_wrapper > .table-responsive, .dataTables_wrapper > .dataTables_scroll { flex: 1 1 100%; width: 100% !important; margin: 4px 0 !important; }
.dataTables_wrapper .dataTables_length { order: 1; float: none; color: var(--p-suave); font-size: 13px; }
.dataTables_wrapper .dataTables_length label, .dataTables_wrapper .dataTables_filter label {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-weight: 500;
    color: var(--p-suave);
    font-size: 13px;
}
.sf-painel .dataTables_wrapper .dataTables_length select { width: auto; height: 36px; padding: 4px 8px; }
.dataTables_wrapper .dt-buttons { order: 2; float: none; display: flex; flex-wrap: wrap; gap: 4px; width: auto; margin: 0; }
.dataTables_wrapper .dataTables_filter { order: 3; float: none; margin-left: auto; text-align: left; }
/* O campo já diz "Buscar": some o rótulo "Buscar:" que algumas telas passam */
.sf-painel .dataTables_wrapper .dataTables_filter label { font-size: 0; gap: 0; }
.sf-painel .dataTables_wrapper .dataTables_filter input { width: 240px; max-width: 100%; height: 38px; margin: 0; padding-left: 34px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%239a95a3' stroke-width='2' stroke-linecap='round' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 11px center; }
.dataTables_wrapper > table { order: 4; }
.dataTables_wrapper .dataTables_info { order: 5; padding: 0 !important; color: var(--p-suave); font-size: 13px; }
.dataTables_wrapper .dataTables_paginate { order: 6; float: none; margin-left: auto; padding: 0 !important; }
.dataTables_wrapper .dataTables_processing { order: 7; }
.dataTables_wrapper .dataTables_paginate .paginate_button {
    display: inline-block;
    min-width: 34px;
    margin: 0 2px;
    padding: 6px 10px !important;
    border: 1px solid var(--p-borda) !important;
    border-radius: 8px;
    background: #fff !important;
    color: var(--p-texto-2) !important;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover { background: var(--p-fundo) !important; color: var(--p-texto) !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { background: var(--p-roxo) !important; border-color: var(--p-roxo) !important; color: #fff !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover { opacity: .45; background: #fff !important; color: var(--p-suave) !important; cursor: default; }
.dataTables_wrapper .dataTables_paginate .ellipsis { padding: 0 4px; color: var(--p-fraco); }
table.dataTable { border-collapse: separate !important; border-spacing: 0; }
table.dataTable thead th, table.dataTable thead td, table.dataTable.no-footer { border-bottom: 1px solid var(--p-borda) !important; }
table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc { background-image: none !important; cursor: pointer; position: relative; padding-right: 24px !important; }
table.dataTable thead .sorting::after, table.dataTable thead .sorting_asc::after, table.dataTable thead .sorting_desc::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 10px;
    margin-top: -5px;
    border: 4px solid transparent;
    opacity: .35;
}
table.dataTable thead .sorting::after { border-top-color: currentColor; margin-top: -1px; }
table.dataTable thead .sorting_asc::after { border-bottom-color: var(--p-roxo); margin-top: -7px; opacity: 1; }
table.dataTable thead .sorting_desc::after { border-top-color: var(--p-roxo); margin-top: -1px; opacity: 1; }
table.dataTable tbody td { border-top: 1px solid var(--p-borda); }
table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { background: var(--p-fundo-2); }
table.dataTable tbody tr { background: transparent; }
.dt-button, a.dt-button, button.dt-button {
    float: none;
    margin: 0 !important;
    padding: 6px 10px;
    border: 1px solid var(--p-borda-forte);
    border-radius: 7px;
    background: #fff;
    color: var(--p-texto-2);
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.4;
    cursor: pointer;
}
.dt-button:hover, a.dt-button:hover { background: var(--p-fundo); text-decoration: none; color: var(--p-texto); }
div.dt-button-info { border-radius: 12px; box-shadow: var(--p-sombra-alta); border: 0; }

.sf-painel .select2-container { width: 100% !important; max-width: 100%; }
.sf-painel .select2-container--default .select2-selection--single,
.sf-painel .select2-container--default .select2-selection--multiple {
    min-height: 40px;
    border: 1px solid var(--p-borda-forte);
    border-radius: var(--p-raio-sm);
}
.sf-painel .select2-container--default .select2-selection--single .select2-selection__rendered { padding-left: 12px; padding-right: 30px; line-height: 38px !important; color: var(--p-texto); }
.sf-painel .select2-container--default .select2-selection--single .select2-selection__arrow { height: 38px; right: 6px; }
.sf-painel .select2-container--default.select2-container--focus .select2-selection--multiple,
.sf-painel .select2-container--default.select2-container--open .select2-selection--single,
.sf-painel .select2-container--default.select2-container--focus .select2-selection--single { border-color: var(--p-roxo); box-shadow: var(--p-foco); }
.sf-painel .select2-container--default .select2-selection--multiple .select2-selection__choice {
    margin-top: 6px;
    padding: 2px 8px;
    border: 0;
    border-radius: 999px;
    background: var(--p-roxo-claro);
    color: var(--p-roxo) !important;
    font-weight: 600;
    font-size: 12.5px;
}
.sf-painel .select2-dropdown { border-color: var(--p-borda-forte); border-radius: 10px; overflow: hidden; box-shadow: var(--p-sombra-media); }
.sf-painel .select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--p-roxo); }
.sf-painel .select2-search--dropdown .select2-search__field { height: 36px; border-radius: 7px; border-color: var(--p-borda-forte); }

.sf-painel .bootstrap-datetimepicker-widget.dropdown-menu { padding: 8px; border-radius: 12px; }
.sf-painel .bootstrap-datetimepicker-widget table td.active, .sf-painel .bootstrap-datetimepicker-widget table td.active:hover,
.sf-painel .bootstrap-datetimepicker-widget table td span.active { background: var(--p-roxo); }
.sf-painel .bootstrap-datetimepicker-widget table td.today::before { border-bottom-color: var(--p-roxo); }

/* ------------------------------------------------------------------
 * Componentes do painel
 * ---------------------------------------------------------------- */

/* Cabeçalho de lista: título do cartão + busca + botão "Novo" */
.sf-lista-topo { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; margin-bottom: 16px; }
.sf-lista-topo > h2, .sf-lista-topo > .sf-lista-titulo { flex: 1 1 auto; margin: 0; font-size: 15px; font-weight: 650; }
.sf-lista-topo > .btn { margin: 0 0 0 auto; }

/* Estado vazio */
.sf-vazio-painel {
    padding: 40px 16px;
    text-align: center;
    color: var(--p-suave);
}
.sf-vazio-painel > .fa { display: block; margin-bottom: 10px; font-size: 34px; color: var(--p-borda-forte); }
.sf-vazio-painel b { display: block; margin-bottom: 4px; font-size: 15px; color: var(--p-texto); }
.sf-vazio-painel .btn { margin-top: 14px; }

/* Grade de atalhos/cartões do dashboard do admin */
.sf-grade-modulos { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; }
.sf-modulo {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--p-borda);
    border-radius: var(--p-raio);
    background: #fff;
    color: var(--p-texto) !important;
    text-decoration: none !important;
    transition: border-color .15s, box-shadow .15s, transform .15s;
}
.sf-modulo:hover { border-color: var(--p-roxo-medio); box-shadow: var(--p-sombra-media); }
.sf-modulo-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--p-roxo-claro);
    color: var(--p-roxo);
    font-size: 18px;
}
.sf-modulo b { display: block; font-size: 14px; font-weight: 650; }
.sf-modulo small { display: block; margin-top: 2px; color: var(--p-suave); font-size: 12.5px; line-height: 1.4; }
.sf-modulo .sf-contador { margin-left: 6px; vertical-align: 1px; }

/* Lista de produtos da empresa no celular: produto em cima, disponibilidade e ações embaixo */
@media (max-width: 767px) {
    .sf-filtro-categoria { flex: 1 1 100%; width: 100%; }
    .sf-painel table.sf-tabela-produtos, .sf-painel table.sf-tabela-produtos > tbody { display: block; width: 100% !important; }
    .sf-painel table.sf-tabela-produtos > thead { display: none; }
    .sf-painel table.sf-tabela-produtos > tbody > tr {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 10px;
        padding: 12px 0;
        border-bottom: 1px solid var(--p-borda);
    }
    .sf-painel table.sf-tabela-produtos > tbody > tr:last-child { border-bottom: 0; }
    .sf-painel table.sf-tabela-produtos > tbody > tr > td { display: block; padding: 0 !important; border: 0 !important; }
    .sf-painel table.sf-tabela-produtos > tbody > tr > td:first-child { flex: 1 1 100%; }
    .sf-painel table.sf-tabela-produtos > tbody > tr > td.hidden-xs { display: none; }
    .sf-painel table.sf-tabela-produtos > tbody > tr > td:nth-child(4) { margin-left: 52px; }
    .sf-painel table.sf-tabela-produtos > tbody > tr > td:last-child { margin-left: auto; }
    .sf-painel table.sf-tabela-produtos .btn-xs { min-height: 34px; padding: 6px 12px; font-size: 13px; }
    .sf-painel table.sf-tabela-produtos > tbody > tr > td.dataTables_empty { flex: 1 1 100%; margin: 0; text-align: center; }
}
.sf-produto-linha small.text-muted { margin-left: 4px; }
.sf-produto-linha br + small.text-muted, .sf-produto-linha small + br + small { margin-left: 0; }

/* Situação clicável (painel_status no menu_helper) */
.sf-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border: 1px solid var(--p-borda-forte);
    border-radius: 999px;
    background: #fff;
    color: var(--p-suave) !important;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
    text-decoration: none !important;
    transition: background .15s, border-color .15s;
}
.sf-status-ponto { width: 7px; height: 7px; border-radius: 50%; background: var(--p-fraco); }
.sf-status:hover { border-color: #c4bfcd; background: var(--p-fundo); }
.sf-status.is-ativo { border-color: #bfe3cc; background: var(--p-verde-claro); color: var(--p-verde) !important; }
.sf-status.is-ativo .sf-status-ponto { background: var(--p-verde); }
.sf-status.is-ativo:hover { border-color: var(--p-verde); }

/* Item de lista com imagem e texto (nome + detalhe) */
.sf-item { display: flex; align-items: center; gap: 12px; min-width: 0; text-align: left; }
.sf-item > span { min-width: 0; }
.sf-item b { display: block; font-weight: 600; color: var(--p-texto); overflow-wrap: anywhere; }
.sf-item small { display: block; color: var(--p-suave); overflow-wrap: anywhere; }
.sf-item img, .sf-item .sf-org-inicial { width: 40px; height: 40px; flex: 0 0 auto; border-radius: 8px; object-fit: cover; border: 1px solid var(--p-borda); background: #fff; }
.sf-item img.sf-banner { width: 96px; height: 48px; }
.sf-linha-plataforma > td { background: var(--p-roxo-claro) !important; }

@media (max-width: 767px) {
    .sf-painel table.sf-tabela-lista > tbody > tr > td.sf-col-id { display: none; }
}

/* Minha empresa: cabeçalho e dados */
.sf-empresa-cabeca .box-body { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.sf-empresa-cabeca img, .sf-empresa-cabeca .sf-org-inicial { width: 72px; height: 72px; flex: 0 0 auto; border-radius: 16px; border: 1px solid var(--p-borda); object-fit: cover; font-size: 28px; }
.sf-empresa-nome { flex: 1 1 220px; min-width: 0; }
.sf-empresa-nome h2 { margin: 0 0 2px; font-size: 20px; font-weight: 700; }
.sf-empresa-nome p { margin: 0 0 4px; color: var(--p-suave); }
.sf-empresa-nome a { font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.sf-empresa-acoes { display: flex; gap: 8px; }
.sf-dados { margin: 0; }
.sf-dados > div { display: grid; grid-template-columns: minmax(120px, 38%) 1fr; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--p-borda); }
.sf-dados > div:first-child { padding-top: 0; }
.sf-dados > div:last-child { padding-bottom: 0; border-bottom: 0; }
.sf-dados dt { font-weight: 500; color: var(--p-suave); }
.sf-dados dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 479px) {
    .sf-empresa-acoes, .sf-empresa-acoes .btn { flex: 1 1 100%; }
    .sf-dados > div { grid-template-columns: 1fr; gap: 2px; }
}

/* Imagem pequena em listas */
.sf-miniatura { width: 44px; height: 44px; border-radius: 8px; object-fit: cover; background: var(--p-fundo); border: 1px solid var(--p-borda); }

/* Tabela de lista que vira cartões no celular (painel.js põe o data-label de cada célula) */
@media (max-width: 767px) {
    .sf-painel table.sf-tabela-lista,
    .sf-painel table.sf-tabela-lista > tbody { display: block; width: 100% !important; }
    .sf-painel table.sf-tabela-lista > thead { display: none; }
    .sf-painel table.sf-tabela-lista > tbody > tr {
        display: block;
        padding: 12px 0;
        border-bottom: 1px solid var(--p-borda);
        background: transparent !important;
    }
    .sf-painel table.sf-tabela-lista > tbody > tr:last-child { border-bottom: 0; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 12px;
        padding: 3px 0 !important;
        border: 0 !important;
        text-align: right;
        overflow-wrap: anywhere;
    }
    .sf-painel table.sf-tabela-lista > tbody > tr > td::before {
        content: attr(data-label);
        flex: 0 0 auto;
        max-width: 42%;
        color: var(--p-suave);
        font-size: 12.5px;
        font-weight: 500;
        text-align: left;
    }
    .sf-painel table.sf-tabela-lista > tbody > tr > td[data-label=""]::before { display: none; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td[data-label=""] { justify-content: flex-start; text-align: left; }
    /* Primeira coluna de texto vira o título do cartão */
    .sf-painel table.sf-tabela-lista > tbody > tr > td.sf-col-titulo { display: block; padding-bottom: 6px !important; text-align: left; font-size: 15px; font-weight: 600; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td.sf-col-titulo::before { display: none; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td.sf-col-acoes { justify-content: flex-start; padding-top: 10px !important; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td.sf-col-acoes::before { display: none; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td.dataTables_empty { display: block; text-align: center; }
    .sf-painel table.sf-tabela-lista > tbody > tr > td.dataTables_empty::before { display: none; }
    .sf-painel table.sf-tabela-lista .sf-acoes-linha { justify-content: flex-start; }
    .sf-painel table.sf-tabela-lista .btn-xs { padding: 6px 12px; font-size: 13px; }
}

/* ------------------------------------------------------------------
 * Tela de login
 * ---------------------------------------------------------------- */
.sf-login-pagina {
    margin: 0;
    min-height: 100vh;
    font-family: var(--p-fonte);
    font-size: 15px;
    line-height: 1.5;
    color: var(--p-texto);
    background: #fff;
    -webkit-font-smoothing: antialiased;
}
.sf-login-pagina *, .sf-login-pagina *::before, .sf-login-pagina *::after { box-sizing: border-box; }
.sf-login { display: flex; min-height: 100vh; min-height: 100dvh; }

.sf-login-marca {
    display: none;
    position: relative;
    flex: 1 1 50%;
    flex-direction: column;
    justify-content: space-between;
    padding: 48px 56px;
    overflow: hidden;
    color: #fff;
    background:
        radial-gradient(circle at 85% 10%, rgba(255, 128, 0, .28), transparent 40%),
        radial-gradient(circle at 10% 90%, rgba(255, 255, 255, .08), transparent 45%),
        linear-gradient(150deg, #5a2c9b 0%, #4a2381 45%, #2e1556 100%);
}
.sf-login-marca::after {
    content: "";
    position: absolute;
    right: -120px;
    bottom: -120px;
    width: 420px;
    height: 420px;
    border-radius: 50%;
    border: 64px solid rgba(255, 255, 255, .05);
}
.sf-login-logo { display: flex; align-items: center; gap: 12px; color: #fff; font-size: 20px; font-weight: 700; text-decoration: none; }
.sf-login-logo img { width: 44px; height: 44px; padding: 4px; border-radius: 12px; background: #fff; }
.sf-login-marca h2 { max-width: 460px; margin: 0 0 14px; font-size: 34px; font-weight: 750; line-height: 1.15; letter-spacing: -.02em; color: #fff; }
.sf-login-marca p { max-width: 440px; margin: 0; font-size: 16px; color: rgba(255, 255, 255, .82); }
.sf-login-vantagens { position: relative; z-index: 1; margin: 32px 0 0; padding: 0; list-style: none; }
.sf-login-vantagens li { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 16px; font-size: 15px; color: rgba(255, 255, 255, .92); }
.sf-login-vantagens svg { flex: 0 0 auto; width: 22px; height: 22px; padding: 4px; border-radius: 7px; background: rgba(255, 255, 255, .14); }
.sf-login-marca small { position: relative; z-index: 1; font-size: 13px; color: rgba(255, 255, 255, .6); }

.sf-login-lado {
    display: flex;
    flex: 1 1 50%;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 32px 20px calc(24px + var(--p-seguro));
    background: var(--p-fundo);
}
.sf-login-caixa { width: 100%; max-width: 400px; }
.sf-login-topo { display: flex; flex-direction: column; align-items: center; margin-bottom: 28px; text-align: center; }
.sf-login-topo img { width: 64px; height: 64px; margin-bottom: 12px; }
.sf-login-topo b { font-size: 20px; font-weight: 700; }
.sf-login-cartao {
    padding: 28px 24px;
    border: 1px solid var(--p-borda);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(31, 26, 41, .04), 0 10px 30px rgba(31, 26, 41, .06);
}
.sf-login-cartao h1 { margin: 0 0 4px; font-size: 24px; font-weight: 750; letter-spacing: -.02em; }
.sf-login-cartao > p { margin: 0 0 22px; color: var(--p-suave); font-size: 14.5px; }

.sf-login-erro {
    display: flex;
    gap: 10px;
    margin-bottom: 18px;
    padding: 12px 14px;
    border: 1px solid #f3c4c4;
    border-radius: 10px;
    background: var(--p-vermelho-claro);
    color: #8f1d1d;
    font-size: 14px;
}
.sf-login-erro.is-info { border-color: #c4d8f5; background: var(--p-azul-claro); color: #174d9c; }
.sf-login-erro svg { flex: 0 0 auto; width: 20px; height: 20px; margin-top: 1px; }
.sf-login-erro p { margin: 0; }
.sf-login-erro p + p { margin-top: 4px; }
.sf-login-erro .text-red { color: inherit; }

.sf-login-campo { margin-bottom: 16px; }
.sf-login-campo label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 600; color: var(--p-texto-2); }
.sf-login-entrada { position: relative; }
.sf-login-entrada input {
    display: block;
    width: 100%;
    height: 48px;
    padding: 0 14px;
    border: 1px solid var(--p-borda-forte);
    border-radius: 10px;
    background: #fff;
    color: var(--p-texto);
    font: 16px var(--p-fonte);
    transition: border-color .15s, box-shadow .15s;
    -webkit-appearance: none;
    appearance: none;
}
.sf-login-entrada input:hover { border-color: #c4bfcd; }
.sf-login-entrada input:focus { border-color: var(--p-roxo); outline: none; box-shadow: var(--p-foco); }
.sf-login-entrada input.is-senha { padding-right: 52px; }
.sf-login-olho {
    position: absolute;
    top: 2px;
    right: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 8px;
    background: none;
    color: var(--p-suave);
    cursor: pointer;
}
.sf-login-olho:hover { color: var(--p-texto); }
.sf-login-olho:focus-visible { outline: 2px solid var(--p-roxo); outline-offset: -2px; }
.sf-login-olho svg { width: 20px; height: 20px; }
.sf-login-olho .sf-olho-fechado, .sf-login-olho.is-visivel .sf-olho-aberto { display: none; }
.sf-login-olho.is-visivel .sf-olho-fechado { display: block; }

.sf-login-opcoes { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 4px 0 20px; }
.sf-login-lembrar { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; color: var(--p-texto-2); cursor: pointer; }
.sf-login-lembrar input { width: 20px; height: 20px; margin: 0; accent-color: var(--p-roxo); cursor: pointer; }

.sf-login-botao {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    height: 50px;
    border: 0;
    border-radius: 10px;
    background: var(--p-roxo);
    color: #fff;
    font: 700 16px var(--p-fonte);
    cursor: pointer;
    transition: background .15s, box-shadow .15s;
}
.sf-login-botao:hover { background: var(--p-roxo-escuro); }
.sf-login-botao:focus-visible { outline: none; box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--p-roxo); }
.sf-login-botao .sf-girando { display: none; width: 18px; height: 18px; border: 2px solid rgba(255, 255, 255, .4); border-top-color: #fff; border-radius: 50%; animation: sf-girar .7s linear infinite; }
.sf-login-botao.is-enviando { pointer-events: none; opacity: .9; }
.sf-login-botao.is-enviando .sf-girando { display: block; }

.sf-login-ajuda, .sf-login-cartao > .sf-login-ajuda { margin: 18px 0 0; text-align: center; font-size: 14px; color: var(--p-suave); }
.sf-login-ajuda a { color: var(--p-roxo); font-weight: 600; text-decoration: none; }
.sf-login-ajuda a:hover { text-decoration: underline; }
.sf-login-voltar { display: inline-flex; align-items: center; gap: 6px; margin-top: 24px; color: var(--p-suave); font-size: 14px; text-decoration: none; }
.sf-login-voltar:hover { color: var(--p-texto); }
.sf-login-voltar svg { width: 16px; height: 16px; }
.sf-login-rodape { margin-top: 18px; text-align: center; }
.sf-so-leitor { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

@media (min-width: 992px) {
    .sf-login-marca { display: flex; }
    .sf-login-lado { background: #fff; }
    .sf-login-topo { display: none; }
    .sf-login-cartao { padding: 0; border: 0; box-shadow: none; }
    .sf-login-cartao h1 { font-size: 28px; }
}
@media (max-width: 400px) {
    .sf-login-lado { padding-left: 16px; padding-right: 16px; }
    .sf-login-cartao { padding: 22px 18px; }
}

/* ------------------------------------------------------------------
 * Celular: campos maiores (sem zoom no iPhone) e ajustes de espaço
 * ---------------------------------------------------------------- */
@media (max-width: 767px) {
    .sf-painel .form-control,
    .sf-painel input[type="search"],
    .sf-painel .select2-container--default .select2-selection--single { height: 44px; font-size: 16px; }
    .sf-painel .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 42px !important; }
    .sf-painel .select2-container--default .select2-selection--single .select2-selection__arrow { height: 42px; }
    .sf-painel .input-group-btn > .btn { height: 44px; }
    .sf-painel .input-sm, .sf-painel .input-group-sm > .form-control { height: 38px; font-size: 16px; }
    .sf-painel .input-group-sm > .input-group-btn > .btn { height: 38px; }
    .sf-painel textarea.form-control { height: auto; }
    .sf-painel .btn { min-height: 40px; }
    .sf-painel .btn-sm { min-height: 36px; }
    .sf-painel .btn-xs { min-height: 30px; }
    .sf-painel .form-horizontal .control-label { padding-top: 0; margin-bottom: 6px; }
    .sf-painel .form-horizontal .radio-inline, .sf-painel .form-horizontal .checkbox-inline { padding-top: 0; }
    .sf-painel .form-group { margin-bottom: 14px; }
    .sf-painel .checkbox-inline + .checkbox-inline, .sf-painel .radio-inline + .radio-inline { margin-left: 0; }
    .sf-painel .radio-inline, .sf-painel .checkbox-inline { display: inline-block; margin-right: 16px; margin-bottom: 8px; }
    [class*="col-sm-offset-"] { margin-left: 0; }

    .box-header { padding: 12px 14px; min-height: 48px; }
    .box-body { padding: 14px; }
    .box-footer { padding: 12px 14px; }
    .sf-painel .table > thead > tr > th, .sf-painel .table > tbody > tr > td { padding: 10px 8px; }
    /* Tabelas compactas (itens do pedido, resumos): cabem sem rolar para o lado */
    .sf-painel .table-condensed { font-size: 13px; }
    .sf-painel .table-condensed > thead > tr > th,
    .sf-painel .table-condensed > tbody > tr > td,
    .sf-painel .table-condensed > tfoot > tr > td,
    .sf-painel .table-condensed > tfoot > tr > th { padding: 8px 5px; }
    .sf-painel .table-condensed > thead > tr > th { font-size: 11px; letter-spacing: 0; white-space: normal; }
    /* Texto e totais podem quebrar linha; valores das colunas da direita não */
    .sf-painel .table-condensed > tbody > tr > td:not(.text-right),
    .sf-painel .table-condensed > tfoot > tr > td,
    .sf-painel .table-condensed > tfoot > tr > th { white-space: normal !important; }
    .sf-painel .table-condensed > thead > tr > th:first-child,
    .sf-painel .table-condensed > tbody > tr > td:first-child { padding-left: 0; }
    .sf-painel .table-condensed > thead > tr > th:last-child,
    .sf-painel .table-condensed > tbody > tr > td:last-child,
    .sf-painel .table-condensed > tfoot > tr > td:last-child,
    .sf-painel .table-condensed > tfoot > tr > th:last-child { padding-right: 0; }
    .sf-painel .modal-body { padding: 16px; }
    .sf-painel .modal-header { padding: 14px 16px; }
    .sf-painel .modal-footer { padding: 12px 16px calc(12px + var(--p-seguro)); }
    .sf-painel .modal-footer .btn { flex: 1 1 auto; }

    /* Janela vira folha presa embaixo */
    .sf-painel .modal { padding: 0 !important; }
    .sf-painel .modal-dialog { position: fixed; right: 0; bottom: 0; left: 0; width: auto; margin: 0; }
    .sf-painel .modal.fade .modal-dialog { transform: translateY(100%); transition: transform .25s ease-out; }
    .sf-painel .modal.in .modal-dialog { transform: none; }
    .sf-painel .modal-content { max-height: 92vh; max-height: 92dvh; overflow-y: auto; border-radius: 18px 18px 0 0; }
    .sf-painel .modal-footer { position: sticky; bottom: 0; border-radius: 0; }

    .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dt-buttons { display: none; }
    .dataTables_wrapper .dataTables_filter { flex: 1 1 100%; margin: 0; }
    .dataTables_wrapper .dataTables_filter label { display: block; font-size: 0; }
    .sf-painel .dataTables_wrapper .dataTables_filter input { width: 100%; height: 44px; font-size: 16px; }
    .dataTables_wrapper .dataTables_info { flex: 1 1 100%; text-align: center; }
    .dataTables_wrapper .dataTables_paginate { flex: 1 1 100%; margin: 0; text-align: center; }

    .sf-lista-topo > .btn { flex: 1 1 100%; margin: 0; }
    .sf-form-acoes { position: sticky; bottom: calc(var(--p-nav) + var(--p-seguro)); z-index: 5; margin: 8px -14px -14px; padding: 12px 14px; background: rgba(255, 255, 255, .97); border-radius: 0 0 var(--p-raio) var(--p-raio); }
    .sf-form-acoes .btn { flex: 1 1 auto; }

    /* Dois por linha no celular: ícone em cima e texto inteiro (sem "...") */
    .info-box { flex-direction: column; align-items: flex-start; gap: 8px; padding: 12px; margin-bottom: 12px; }
    .info-box-icon { width: 34px; height: 34px; font-size: 16px; border-radius: 9px; }
    .info-box-text { white-space: normal; line-height: 1.3; font-size: 12.5px; }
    .info-box-number { font-size: 19px; overflow-wrap: anywhere; }

    .sf-painel .dl-horizontal dt { margin-top: 8px; color: var(--p-suave); font-weight: 500; font-size: 12.5px; }
    .sf-painel .dl-horizontal dt:first-child { margin-top: 0; }
}

/* Tablet e acima */
@media (min-width: 768px) {
    .content-header { padding: 24px 24px 8px; }
    .content-header > h1 { font-size: 24px; }
    .content { padding: 12px 24px 24px; }
    .sf-usuario-nome { display: block; }
    .sf-usuario > .dropdown-toggle { padding: 0 10px 0 6px; }
    .sf-usuario > .dropdown-toggle .fa-angle-down { display: inline-block; }
    .sf-loja-pill .sf-loja-acao { display: inline; }
    .sf-painel .dl-horizontal dt { width: 140px; color: var(--p-suave); font-weight: 500; text-align: left; }
    .sf-painel .dl-horizontal dd { margin-left: 160px; margin-bottom: 8px; }
}

/* Computador: menu lateral fixo */
@media (min-width: 992px) {
    .sf-topo { left: var(--p-lateral); padding: 0 20px 0 16px; }
    .sf-topo-menu, .sf-topo-marca, .sf-lateral-fechar { display: none !important; }
    .sf-lateral {
        width: var(--p-lateral);
        transform: none;
        visibility: visible;
        transition: none;
    }
    .sf-lateral-fundo, .sf-nav-baixo { display: none !important; }
    body.sidebar-open { overflow: auto; }
    .content-wrapper { margin-left: var(--p-lateral); padding-bottom: 8px; min-height: calc(100vh - 44px); }
    .sf-rodape { display: block; margin-left: var(--p-lateral); }
    .sf-voltar-topo { display: none; }

    /* Tela cheia do quadro da cozinha (producao.js põe sidebar-collapse no body) */
    body.sidebar-collapse .sf-lateral { display: none; }
    body.sidebar-collapse .sf-topo { left: 0; }
    body.sidebar-collapse .content-wrapper, body.sidebar-collapse .sf-rodape { margin-left: 0; }
    body.sidebar-collapse .content-header, body.sidebar-collapse .content { max-width: none; }
}

/* Celular: trilha só nas telas internas; o botão Voltar faz o papel dela */
@media (max-width: 991px) {
    .content-header > .breadcrumb { display: none; }
}

/* Celular estreito: no topo fica só o logo (o nome não cabe ao lado da situação da loja) */
@media (max-width: 379px) {
    .sf-topo-marca span { display: none; }
}
@media (max-width: 359px) {
    .sf-loja-pill { padding: 0 10px; }
    .content-header, .content { padding-left: 12px; padding-right: 12px; }
    .sf-nav-baixo a, .sf-nav-baixo button { font-size: 10px; }
}

@media (prefers-reduced-motion: reduce) {
    .sf-lateral, .sf-lateral-fundo, .sf-painel .modal.fade .modal-dialog { transition: none; }
}

@media print {
    .sf-topo, .sf-lateral, .sf-lateral-fundo, .sf-nav-baixo, .sf-rodape, .content-header > .breadcrumb, .sf-voltar-topo { display: none !important; }
    .content-wrapper { margin: 0 !important; padding: 0 !important; }
    body.sf-painel { background: #fff; }
}

/* ------------------------------------------------------------------
 * Pedido novo: lista do sino no topo e cartão no canto superior
 * direito (pedidos_alerta.js)
 * ---------------------------------------------------------------- */
.sf-sino { position: relative; }
.js-sino.tem-novos > .fa { color: var(--p-laranja-forte); }
.js-sino.is-tocando > .fa { animation: sf-sino-balanca .8s ease-in-out 3; transform-origin: 50% 2px; }
@keyframes sf-sino-balanca {
    0%, 100% { transform: rotate(0); }
    20% { transform: rotate(16deg); }
    40% { transform: rotate(-14deg); }
    60% { transform: rotate(9deg); }
    80% { transform: rotate(-5deg); }
}

.sf-sino-menu { width: 360px; margin-top: 6px; padding: 0; overflow: hidden; border-radius: var(--p-raio); }
.sf-sino-cabeca {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 12px 14px; border-bottom: 1px solid var(--p-borda); font-size: 14px;
}
.sf-sino-cabeca a { font-size: 13px; font-weight: 600; }
.sf-sino-lista { max-height: min(60vh, 380px); overflow-y: auto; }
.sf-sino-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 14px; border-bottom: 1px solid var(--p-borda);
    color: var(--p-texto); text-decoration: none;
}
.sf-sino-item:hover, .sf-sino-item:focus { background: var(--p-laranja-claro); color: var(--p-texto); text-decoration: none; }
.sf-sino-num { flex: 0 0 auto; color: var(--p-roxo); font-size: 13px; font-weight: 700; }
.sf-sino-info { flex: 1 1 auto; min-width: 0; }
.sf-sino-info b { display: block; overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.sf-sino-info small { display: block; color: var(--p-suave); font-size: 12px; line-height: 1.35; }
.sf-sino-total { flex: 0 0 auto; font-size: 13px; font-weight: 700; white-space: nowrap; }
.sf-sino-vazio, .sf-sino-mais { margin: 0; padding: 18px 14px; color: var(--p-suave); font-size: 13px; text-align: center; }
.sf-sino-vazio .fa-check-circle { color: var(--p-verde); }
.sf-sino-mais { padding: 10px 14px; }
.sf-sino-rodape { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; padding: 10px 14px; background: var(--p-fundo-2); font-size: 13px; }
.sf-sino-rodape a { font-weight: 600; }
.sf-sino-ativar { padding: 0; border: 0; background: none; color: var(--p-laranja-forte); font-weight: 600; }

.sf-pedido-cartoes {
    position: fixed; top: calc(var(--p-topo) + 12px); right: 16px; z-index: 1025; /* abaixo do topo (1030): a lista do sino abre por cima */
    display: flex; flex-direction: column; gap: 10px;
    width: 360px; max-width: calc(100vw - 24px);
    pointer-events: none;
}
.sf-pedido-cartao {
    position: relative; display: flex; gap: 12px;
    padding: 14px 42px 14px 14px;
    border: 1px solid var(--p-borda); border-left: 4px solid var(--p-laranja); border-radius: var(--p-raio);
    background: #fff; box-shadow: 0 16px 40px rgba(20, 14, 30, .18);
    pointer-events: auto;
    animation: sf-cartao-entra .3s ease-out;
}
.sf-pedido-cartao-icone {
    flex: 0 0 38px; display: flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; border-radius: 50%;
    background: var(--p-laranja-claro); color: var(--p-laranja-forte); font-size: 17px;
}
.sf-pedido-cartao-corpo { flex: 1 1 auto; min-width: 0; }
.sf-pedido-cartao-corpo b { display: block; font-size: 15px; }
.sf-pedido-cartao-corpo span { display: block; overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.sf-pedido-cartao-corpo small { display: block; margin-top: 2px; color: var(--p-suave); font-size: 12.5px; line-height: 1.35; }
.sf-pedido-cartao-acoes { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.sf-pedido-cartao-fechar {
    position: absolute; top: 6px; right: 6px;
    width: 32px; height: 32px; padding: 0; border: 0; border-radius: 8px;
    background: transparent; color: var(--p-suave); font-size: 22px; line-height: 1;
}
.sf-pedido-cartao-fechar:hover { background: var(--p-fundo); color: var(--p-texto); }
.sf-pedido-cartao-resumo { border-left-color: var(--p-roxo); }
@keyframes sf-cartao-entra { from { transform: translateX(16px); opacity: 0; } to { transform: none; opacity: 1; } }

@media (max-width: 767px) {
    .sf-sino { position: static; }
    .sf-sino-menu { position: fixed; top: calc(var(--p-topo) + 4px); right: 8px; left: 8px; width: auto; }
    .sf-pedido-cartoes { top: calc(var(--p-topo) + 8px); right: 12px; left: 12px; width: auto; max-width: none; }
}

@media (prefers-reduced-motion: reduce) {
    .js-sino.is-tocando > .fa, .sf-pedido-cartao { animation: none; }
}
