/* Gestao tecnica do catalogo - as cinco telas de /gestao/catalogo/.
 *
 * A classe `catalogo-gestao-compact` e posta no body pelo base.html so nessas
 * paginas. Quem usa esta tela e o superusuario configurando catalogo no
 * computador: a densidade e de planilha, nao de balcao. Por isso nada de
 * cabecalho de apresentacao, texto explicando cada bloco ou etiqueta de fase -
 * o sistema ja esta em uso, e esses textos so tomavam a tela.
 *
 * Os componentes `g-*` (topo, filtros, numeros) sao os mesmos nas cinco telas.
 * O miolo de cada tela continua no CSS dela; o que esta aqui embaixo de
 * "Miolo das telas" so aperta tamanhos que la eram de vitrine.
 */

body.catalogo-gestao-compact {
    --g-fundo: #f3f6fa;
    --g-texto: #0f1f33;
    --g-apagado: #667085;
    --g-borda: #dde6f0;
    --g-primaria: #0b5cad;
    --g-info: #00a8cc;
    --g-suave: #eef5fc;
    --g-ok: #067647;
    --g-ok-suave: #e8f7ee;
    --g-alerta: #b54708;
    --g-alerta-suave: #fff4e5;
    --g-erro: #b42318;
    --g-erro-suave: #fdecea;
    background: var(--g-fundo);
    color: var(--g-texto);
    font-size: 14px;
    line-height: 1.3;
    overflow: auto;
}

body.catalogo-gestao-compact .app-bg {
    opacity: .08;
}

/* ------------------------------------------------------------------ */
/* Topo: voltar, titulo, filtros de grupo/unidade e atalhos numa linha */
/* ------------------------------------------------------------------ */

.g-topo {
    position: sticky;
    top: 0;
    z-index: 30;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin: 0 -14px 12px;
    /* Barra de status do iPad quando o sistema roda instalado como app. */
    padding: calc(8px + env(safe-area-inset-top)) 14px 8px;
    background: rgba(243, 246, 250, .94);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--g-borda);
}

.g-voltar {
    width: 34px;
    height: 34px;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    border: 1px solid var(--g-borda);
    background: #fff;
    color: var(--g-texto);
    text-decoration: none;
    font-size: 1rem;
}

.g-voltar:hover {
    border-color: rgba(11, 92, 173, .4);
    color: var(--g-primaria);
}

.g-titulo {
    min-width: 0;
    margin-right: auto;
}

.g-titulo h1 {
    margin: 0;
    font-size: 1rem;
    font-weight: 900;
    letter-spacing: -.02em;
    line-height: 1.15;
}

.g-titulo p {
    margin: 1px 0 0;
    color: var(--g-apagado);
    font-size: .72rem;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 46vw;
}

.g-filtros {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin: 0;
}

/* Campo com o rotulo DENTRO da caixa: numa barra de uma linha, rotulo em cima
   dobraria a altura. */
.g-campo {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    margin: 0;
    padding: 0 0 0 10px;
    border: 1px solid var(--g-borda);
    border-radius: 10px;
    background: #fff;
}

.g-campo:focus-within {
    border-color: var(--g-primaria);
    box-shadow: 0 0 0 3px rgba(11, 92, 173, .1);
}

.g-campo > span {
    color: var(--g-apagado);
    font-size: .62rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
    white-space: nowrap;
}

.g-campo select,
.g-campo input {
    height: 32px;
    min-width: 0;
    max-width: 230px;
    padding: 0 10px 0 2px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--g-texto);
    font-size: .8rem;
    font-weight: 800;
    outline: 0;
}

.g-campo input {
    width: 190px;
    font-weight: 700;
}

.g-acoes {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.g-link,
.g-botao {
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 0 11px;
    border-radius: 10px;
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}

.g-link {
    border: 1px solid var(--g-borda);
    background: #fff;
    color: var(--g-texto);
}

.g-link:hover {
    border-color: rgba(11, 92, 173, .4);
    color: var(--g-primaria);
}

.g-botao {
    border: 0;
    background: var(--g-primaria);
    color: #fff;
}

.g-botao:hover {
    background: #094c8f;
    color: #fff;
}

.g-botao.suave {
    background: var(--g-suave);
    color: var(--g-primaria);
}

/* ------------------------------------------------------------------ */
/* Faixa de numeros (no lugar dos cartoes grandes de indicador)       */
/* ------------------------------------------------------------------ */

.g-numeros {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 12px;
}

.g-numero {
    display: inline-flex;
    align-items: baseline;
    gap: 7px;
    padding: 6px 11px;
    border: 1px solid var(--g-borda);
    border-radius: 10px;
    background: #fff;
}

.g-numero span {
    color: var(--g-apagado);
    font-size: .72rem;
    font-weight: 700;
}

.g-numero strong {
    font-size: 1rem;
    font-weight: 900;
    letter-spacing: -.02em;
}

.g-numero.alerta {
    border-color: rgba(181, 71, 8, .3);
    background: var(--g-alerta-suave);
}

.g-numero.alerta strong {
    color: var(--g-alerta);
}

/* ------------------------------------------------------------------ */
/* Cartao, cabecalho de cartao, selos e avisos                        */
/* ------------------------------------------------------------------ */

.g-cartao {
    background: #fff;
    border: 1px solid var(--g-borda);
    border-radius: 12px;
    box-shadow: 0 3px 12px rgba(15, 23, 42, .04);
    overflow: hidden;
}

.g-cartao-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 42px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--g-borda);
    background: #fbfcfe;
}

.g-cartao-topo h2,
.g-cartao-topo h3 {
    margin: 0;
    font-size: .9rem;
    font-weight: 900;
    letter-spacing: -.01em;
}

.g-selo {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--g-suave);
    color: var(--g-primaria);
    font-size: .68rem;
    font-weight: 800;
    white-space: nowrap;
}

.g-selo.ok { background: var(--g-ok-suave); color: var(--g-ok); }
.g-selo.alerta { background: var(--g-alerta-suave); color: var(--g-alerta); }
.g-selo.erro { background: var(--g-erro-suave); color: var(--g-erro); }

.g-aviso {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 8px;
    padding: 8px 12px;
    border-radius: 10px;
    border: 1px solid var(--g-borda);
    background: #fff;
    font-size: .8rem;
    font-weight: 700;
}

.g-aviso.success, .g-aviso.ok { background: var(--g-ok-suave); color: var(--g-ok); border-color: rgba(6, 118, 71, .2); }
.g-aviso.error, .g-aviso.erro { background: var(--g-erro-suave); color: var(--g-erro); border-color: rgba(180, 35, 24, .2); }
.g-aviso.warning, .g-aviso.alerta { background: var(--g-alerta-suave); color: var(--g-alerta); border-color: rgba(181, 71, 8, .2); }

/* ------------------------------------------------------------------ */
/* Miolo das telas: modelos, mao de obra e produtos                    */
/* ------------------------------------------------------------------ */

body.catalogo-gestao-compact .gestao-shell,
body.catalogo-gestao-compact .mv-shell,
body.catalogo-gestao-compact .produtos-page {
    min-height: 100vh;
    padding: 0 14px 28px !important;
    background: transparent;
}

body.catalogo-gestao-compact .btn,
body.catalogo-gestao-compact .pill-btn,
body.catalogo-gestao-compact .light-btn,
body.catalogo-gestao-compact .primary-btn,
body.catalogo-gestao-compact .admin-btn,
body.catalogo-gestao-compact .version-edit-btn,
body.catalogo-gestao-compact .btn-search {
    min-height: 32px !important;
    padding: .3rem .65rem !important;
    border-radius: 10px !important;
    font-size: .78rem !important;
    box-shadow: none !important;
}

body.catalogo-gestao-compact .form-label,
body.catalogo-gestao-compact .field label,
body.catalogo-gestao-compact .edit-field label {
    font-size: .64rem !important;
    margin-bottom: .15rem !important;
    letter-spacing: .035em !important;
}

body.catalogo-gestao-compact .form-control,
body.catalogo-gestao-compact .form-select,
body.catalogo-gestao-compact .field input,
body.catalogo-gestao-compact .field select,
body.catalogo-gestao-compact .field textarea,
body.catalogo-gestao-compact .edit-field input,
body.catalogo-gestao-compact .edit-field textarea {
    min-height: 34px !important;
    padding: .3rem .6rem !important;
    font-size: .82rem !important;
    border-radius: 9px !important;
}

body.catalogo-gestao-compact textarea.form-control,
body.catalogo-gestao-compact .field textarea,
body.catalogo-gestao-compact .edit-field textarea {
    min-height: 58px !important;
}

body.catalogo-gestao-compact .badge-soft,
body.catalogo-gestao-compact .badge {
    font-size: .66rem !important;
    padding: .2rem .5rem !important;
}

body.catalogo-gestao-compact .card,
body.catalogo-gestao-compact .mv-card,
body.catalogo-gestao-compact .panel-card,
body.catalogo-gestao-compact .section-card {
    border-radius: 12px !important;
    box-shadow: 0 3px 12px rgba(15, 23, 42, .04) !important;
}

body.catalogo-gestao-compact .card-body,
body.catalogo-gestao-compact .detail-body {
    padding: .7rem !important;
}

body.catalogo-gestao-compact .card-header,
body.catalogo-gestao-compact .panel-head,
body.catalogo-gestao-compact .section-head {
    padding: .5rem .75rem !important;
    min-height: 42px;
}

body.catalogo-gestao-compact .panel-head h3,
body.catalogo-gestao-compact .section-head h3 {
    font-size: .9rem !important;
}

body.catalogo-gestao-compact .selected-title h2 {
    font-size: 1.1rem !important;
}

body.catalogo-gestao-compact .info-box {
    padding: .45rem .6rem !important;
    border-radius: 10px !important;
}

body.catalogo-gestao-compact .model-item,
body.catalogo-gestao-compact .model-row,
body.catalogo-gestao-compact .mini-item,
body.catalogo-gestao-compact .service-card,
body.catalogo-gestao-compact .list-group-item {
    padding: .5rem .7rem !important;
    border-radius: 10px !important;
}

body.catalogo-gestao-compact .model-item strong,
body.catalogo-gestao-compact .model-row strong,
body.catalogo-gestao-compact .mini-item strong,
body.catalogo-gestao-compact .service-card strong {
    font-size: .84rem !important;
}

body.catalogo-gestao-compact .model-item small,
body.catalogo-gestao-compact .model-row small,
body.catalogo-gestao-compact .mini-item small,
body.catalogo-gestao-compact .service-card small {
    font-size: .7rem !important;
}

/* Listas longas rolam dentro do cartao. A lista de pacotes (review-list) NAO:
   presa numa caixa de meia tela, o editor de pacote ficava espremido. */
body.catalogo-gestao-compact .model-list,
body.catalogo-gestao-compact .mini-list,
body.catalogo-gestao-compact .service-list,
body.catalogo-gestao-compact .produto-table-wrap {
    max-height: 62vh !important;
    overflow: auto !important;
}

body.catalogo-gestao-compact .main-grid,
body.catalogo-gestao-compact .layout,
body.catalogo-gestao-compact .produtos-grid {
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    gap: 10px !important;
}

/* Produtos */
body.catalogo-gestao-compact .produto-table { font-size: .78rem !important; }
body.catalogo-gestao-compact .produto-table thead th { font-size: .62rem !important; padding: .42rem .55rem !important; }
body.catalogo-gestao-compact .produto-table td { padding: .42rem .55rem !important; }
body.catalogo-gestao-compact .produto-name { max-width: 420px; font-size: .8rem !important; }
body.catalogo-gestao-compact .produto-sub,
body.catalogo-gestao-compact .code-pill { font-size: .66rem !important; }

/* Mao de obra */
body.catalogo-gestao-compact .service-form,
body.catalogo-gestao-compact .form-box { padding: .7rem !important; }
body.catalogo-gestao-compact .form-grid { gap: 8px !important; }
body.catalogo-gestao-compact .service-head { padding: .55rem .7rem !important; }

@media (min-width: 992px) {
    body.catalogo-gestao-compact .form-card {
        position: sticky !important;
        top: 60px !important;
    }
}

/* iPad em pe e celular: o topo quebra em duas linhas (filtros embaixo) e as
   grades viram uma coluna. */
@media (max-width: 991px) {
    .g-filtros { order: 3; width: 100%; }
    .g-campo { flex: 1 1 200px; }
    .g-campo select, .g-campo input { max-width: none; width: 100%; }
    .g-titulo p { max-width: 70vw; }

    body.catalogo-gestao-compact .main-grid,
    body.catalogo-gestao-compact .layout,
    body.catalogo-gestao-compact .produtos-grid,
    body.catalogo-gestao-compact .filter-grid {
        grid-template-columns: 1fr !important;
    }

    body.catalogo-gestao-compact .model-list,
    body.catalogo-gestao-compact .mini-list,
    body.catalogo-gestao-compact .service-list,
    body.catalogo-gestao-compact .produto-table-wrap {
        max-height: 420px !important;
    }
}
