MESA-beta / styles.css
gui-sparim's picture
Upload styles.css
ce00209 verified
/* ============================================================
STYLES.CSS - Estilos combinados para MESA
(Elaboração + Visualização)
============================================================ */
/* ============================================================
LAYOUT GERAL
============================================================ */
:root.dark,
:root .dark {
/* Force LIGHT backgrounds */
--neutral-950: #ffffff !important;
--neutral-900: #ffffff !important;
--neutral-800: #ffffff !important;
--background-fill-primary: #ffffff !important;
--background-fill-secondary: #ffffff !important;
--block-background-fill: #ffffff !important;
--panel-background-fill: #ffffff !important;
--input-background-fill: #ffffff !important;
--code-background-fill: #ffffff !important;
--block-border-color: #ffffff !important;
/* Force readable text */
--body-text-color: #000000 !important;
--block-label-text-color: #000000 !important;
--body-text-color-subdued: #444444 !important;
--block-title-text-color: #000000 !important;
--button-secondary-text-color: #000000 !important;
}
.gradio-container {
max-width: 100% !important;
padding: 15px !important;
background: #f5f5f5 !important;
}
/* Logo MESA — 30% do tamanho original, sem fundo */
#logo-mesa {
max-width: 30% !important;
margin: 0 auto !important;
background: transparent !important;
}
#logo-mesa, #logo-mesa * {
cursor: default !important;
}
#logo-mesa img {
background: transparent !important;
}
/* Textbox trigger hidden — acessível ao JS mas invisível */
.trigger-hidden {
position: absolute !important;
width: 1px !important;
height: 1px !important;
overflow: hidden !important;
opacity: 0 !important;
pointer-events: none !important;
}
.gr-group, .wrap, .wrap label, .table-wrap *, input {
border-color: rgb(228, 228, 231) !important
}
* {--border-color-primary: white !important;}
/* ============================================================
TÍTULOS DE SEÇÃO
============================================================ */
.section-title-orange {
font-weight: 600;
color: #4a5568;
margin: 16px 0 12px 0;
padding: 8px 12px;
border-left: 4px solid #FF8C00;
background: linear-gradient(90deg, #fff8f0 0%, white 100%);
font-size: 14px;
text-transform: uppercase;
letter-spacing: 0.3px;
border-radius: 0 6px 6px 0;
}
/* ============================================================
HEADERS DE SEÇÃO PRINCIPAIS
============================================================ */
.section-header {
display: flex;
align-items: center;
gap: 12px;
margin: 36px 0 12px 0;
padding: 0;
}
.section-header:first-of-type {
margin-top: 70px;
}
.section-number {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
background: #FF8C00;
color: white;
font-weight: 700;
font-size: 16px;
border-radius: 50%;
flex-shrink: 0;
}
.section-title {
font-size: 16px;
font-weight: 600;
color: #333;
text-transform: uppercase;
letter-spacing: 0.5px;
margin: 0;
padding-bottom: 6px;
border-bottom: 2px solid #FF8C00;
flex-grow: 1;
}
/* Container de seção com borda mais definida */
.section-container {
background: white !important;
border: 2px solid #c0c0c0 !important;
border-radius: 12px !important;
padding: 16px !important;
margin: 0 0 8px 0 !important;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06) !important;
}
.section-container:hover {
border-color: #FF8C00 !important;
transition: border-color 0.2s ease;
}
/* Timestamp inline após título de seção */
.section-timestamp {
display: inline-block;
margin-left: 8px;
font-size: 12px;
font-weight: 400;
color: #dc3545;
font-style: italic;
}
/* Área de adoção de sugestões */
.adotar-header {
display: flex;
align-items: center;
justify-content: center;
padding: 10px 16px;
margin: 0 0 10px 0;
background: var(--background-fill-secondary, #f8f9fa);
border: 1px solid var(--border-color-primary, #e2e8f0);
border-radius: 8px;
}
.adotar-titulo {
font-size: 14px;
font-weight: 800;
color: black;
}
.adotar-row {
background: var(--background-fill-secondary, #f8f9fa);
border: 1px dashed var(--border-color-primary, #dee2e6);
border-radius: 8px;
padding: 16px !important;
margin: 0 0 16px 0 !important;
display: flex;
justify-content: center;
gap: 20px;
flex-wrap: wrap;
}
.adotar-separator {
display: flex;
align-items: center;
text-align: center;
margin: 8px 0 16px 0;
color: #9e9e9e;
font-size: 13px;
}
.adotar-separator span{
color: black !important;
font-weight: 800 !important;
}
.adotar-separator::before,
.adotar-separator::after {
content: '';
flex: 1;
border-bottom: 1px solid #e0e0e0;
}
.adotar-separator span {
padding: 0 16px;
text-transform: uppercase;
letter-spacing: 0.5px;
font-weight: 500;
}
/* Botões de adotar transformação — herda estilo primary do Gradio, só ajusta tamanho */
.btn-adotar {
min-width: 110px !important;
}
/* Checkbox para marcar/desmarcar todos */
.checkbox-selecionar-todos {
/* margin-bottom: 6px; */
padding: 4px 12px;
/* background: #f0f0f0; */
/* background: white; */
/* border-radius: 6px;
border: 1px solid #d0d0d0; */
}
.checkbox-selecionar-todos label {
font-weight: 600 !important;
color: #495057 !important;
}
/* ============================================================
CARDS E CONTAINERS
============================================================ */
.diagnosticos-container,
.dai-card {
font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif;
background: white;
border-radius: 12px;
padding: 20px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
line-height: 1.5;
}
/* ============================================================
STATS GRID (micronumerosidade)
============================================================ */
.stats-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 12px;
padding: 12px 0;
}
.stat-item {
display: flex;
justify-content: space-between;
padding: 8px 12px;
background: #f8f9fa;
border-radius: 6px;
border: 1px solid #e9ecef;
}
.stat-label {
font-weight: 500;
color: #6c757d;
}
.stat-value {
font-weight: 600;
font-family: 'Consolas', monospace;
color: #495057;
}
/* ============================================================
TESTES ESTATÍSTICOS (micronumerosidade)
============================================================ */
.teste-item {
display: flex;
flex-wrap: wrap;
gap: 12px;
padding: 10px 12px;
margin: 4px 0;
background: #fafafa;
border-radius: 6px;
align-items: center;
}
.teste-nome {
font-weight: 600;
color: #495057;
min-width: 180px;
}
.teste-valor {
font-family: 'Consolas', monospace;
color: #6c757d;
margin-right: 25px;
}
.teste-interp {
font-style: italic;
color: #6c757d;
font-size: 13px;
}
/* ============================================================
FIELD ROWS (diagnósticos do modelo)
============================================================ */
.field-row {
display: flex;
justify-content: space-between;
padding: 8px 12px;
border-bottom: 1px solid #f0f0f0;
background: #fafafa;
}
.field-row-label {
font-weight: 500;
color: #495057;
}
.field-row-value {
font-weight: 600;
font-family: 'Consolas', monospace;
color: #495057;
}
/* ============================================================
INTERPRETAÇÃO COM BULLETS
============================================================ */
.interpretation-label {
padding: 8px 12px 4px;
font-weight: 500;
color: #495057;
background: #fafafa;
}
.interpretation-item {
padding: 2px 12px 2px 24px;
font-size: 13px;
color: #6c757d;
background: #fafafa;
}
.interpretation-item:last-child {
padding-bottom: 8px;
border-radius: 0 0 6px 6px;
}
/* ============================================================
EQUAÇÃO DO MODELO
============================================================ */
.equation-box {
padding: 16px;
margin: 8px 0;
font-size: 13px;
font-family: 'Consolas', monospace;
word-break: break-word;
background: #f8f9fa;
border-radius: 8px;
border-left: 4px solid #FF8C00;
line-height: 1.6;
}
/* ============================================================
BUSCA AUTOMÁTICA
============================================================ */
.busca-container {
display: flex;
flex-wrap: wrap;
gap: 16px;
padding: 12px;
}
.modelo-card {
flex: 1;
min-width: 200px;
max-width: 300px;
padding: 16px;
background: white;
border-radius: 10px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
border: 1px solid #e0e0e0;
}
.modelo-rank {
font-size: 24px;
font-weight: 700;
color: #FF8C00;
margin-bottom: 8px;
}
.modelo-r2 {
font-size: 18px;
font-weight: 600;
color: #28a745;
margin-bottom: 12px;
padding-bottom: 12px;
border-bottom: 1px solid #e9ecef;
}
.modelo-transf {
font-size: 13px;
color: #6c757d;
line-height: 1.6;
}
.modelo-transf b {
color: #495057;
}
/* ============================================================
ACCORDIONS E GRUPOS
============================================================ */
.gradio-accordion {
border: 2px solid #d0d0d0 !important;
border-radius: 10px !important;
margin: 8px 0 !important;
background: white !important;
}
.gradio-accordion > .label-wrap {
padding: 12px 16px !important;
background: #fafafa !important;
border-radius: 10px 10px 0 0 !important;
}
.gradio-group {
background: white !important;
border-radius: 12px !important;
padding: 15px !important;
margin-bottom: 15px !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
border: 2px solid #c0c0c0 !important;
}
/* ============================================================
BOTÕES
============================================================ */
button.primary {
background: #FF8C00 !important;
border-color: #FF8C00 !important;
}
button.primary:hover {
background: #e67e00 !important;
border-color: #e67e00 !important;
}
button.secondary {
background: #dbdbdb !important;
border-color: black !important;
font-weight: bold !important;
}
button.danger {
background: #FF8B87 !important;
border-color: black !important;
font-weight: bold !important;
color: white !important;
}
button.danger-reverse {
background: white !important;
border-color: black !important;
font-weight: bold !important;
color: red !important;
}
button[aria-label^="Solte arquivos"] {
cursor: default !important;
}
button[aria-label^="Solte arquivos"]:focus {
outline: none !important;
}
/* ============================================================
TABELAS
============================================================ */
.gradio-dataframe table {
font-size: 13px !important;
}
.gradio-dataframe th {
background: #f8f9fa !important;
font-weight: 600 !important;
color: #495057 !important;
text-transform: uppercase !important;
font-size: 12px !important;
letter-spacing: 0.3px !important;
}
.gradio-dataframe td {
padding: 8px 12px !important;
}
.gradio-dataframe tr:hover {
background: #fff8f0 !important;
cursor: pointer;
}
/* ============================================================
MAPA
============================================================ */
.map-container iframe {
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
#map-frame {
border-radius: 10px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
}
/* ============================================================
INPUTS
============================================================ */
.gradio-dropdown,
.gradio-textbox input,
.gradio-checkbox-group {
border-radius: 6px !important;
}
.gradio-checkbox-group label {
padding: 6px 12px !important;
margin: 4px !important;
border-radius: 20px !important;
background: #f8f9fa !important;
border: 1px solid #e0e0e0 !important;
transition: all 0.2s !important;
}
.gradio-checkbox-group label:hover {
background: #fff8f0 !important;
border-color: #FF8C00 !important;
}
.gradio-checkbox-group input:checked + label {
background: #FF8C00 !important;
color: white !important;
border-color: #FF8C00 !important;
}
/* ============================================================
GRÁFICOS PLOTLY
============================================================ */
.gradio-plot {
background: white !important;
border-radius: 8px !important;
padding: 10px !important;
border: 1px solid #e0e0e0 !important;
}
/* ============================================================
SCROLLBARS
============================================================ */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #a1a1a1;
}
/* ============================================================
RESPONSIVIDADE
============================================================ */
@media (max-width: 768px) {
.stats-grid {
grid-template-columns: 1fr;
}
.busca-container {
flex-direction: column;
}
.modelo-card {
max-width: 100%;
}
}
/* ============================================================
CARDS DE TRANSFORMAÇÃO
============================================================ */
/* Instrução acima dos cards: recuo alinhado com o padding do container */
.transf-instrucao {
margin-left: 20px !important;
}
/* Container único: todos os 20 cards fluem num único flex-wrap */
.transf-all-cards {
display: flex !important;
flex-direction: row !important;
flex-wrap: wrap !important;
align-items: flex-start !important;
gap: 14px !important;
padding: 20px 20px !important;
width: 100% !important;
}
/* Cada gr.Row torna-se transparente para o layout — seus cards passam a ser
itens diretos do .transf-all-cards, garantindo distribuição contínua e uniforme */
.transf-cards-row {
display: contents !important;
}
.transf-card {
background: white !important;
border: 2px solid #e0e0e0 !important;
border-radius: 8px !important;
padding: 8px 10px !important;
margin: 10px !important;
flex: 0 0 155px !important;
width: 155px !important;
max-width: 155px !important;
min-width: 155px !important;
box-sizing: border-box !important;
}
.transf-card:hover {
border-color: #FF8C00 !important;
}
.transf-card-y {
border-color: rgb(0, 0, 0) !important;
}
.transf-card-y:hover {
border-color: #2563EB !important;
}
/*
.transf-label-y {
color: #4A90D9;
} */
/* gr.HTML label exibe o nome da variável acima do dropdown */
.transf-card .transf-card-label {
padding: 0 !important;
margin: 0 0 2px 0 !important;
line-height: 1 !important;
background: none !important;
border: none !important;
}
.transf-label-text {
display: block;
font-size: 1rem;
font-weight: 700;
color: #374151;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.4;
}
/* Inputs mais compactos e centralizados dentro dos cards */
.transf-card input,
.transf-card textarea {
padding: 0 4px !important;
min-height: 20px !important;
font-size: 0.7rem !important;
text-align: center !important;
}
.transf-card .wrap {
min-height: 24px !important;
padding: 0 2px !important;
justify-content: center !important;
}
/* Texto selecionado no dropdown centralizado */
.transf-card .wrap .selected-wrap,
.transf-card .wrap .wrap-inner {
justify-content: center !important;
text-align: center !important;
}
/* ============================================================
CARDS DE AVALIAÇÃO (Seção 15 — espelha Seção 9)
============================================================ */
.aval-all-cards {
display: flex !important;
flex-direction: row !important;
flex-wrap: wrap !important;
align-items: flex-start !important;
justify-content: flex-start !important;
gap: 18px 12px !important;
padding: 12px !important;
width: 100% !important;
}
/* Camadas intermediárias do Gradio (gr.Row → div.form) tornam-se
transparentes ao flexbox, fazendo cada card emergir como item direto
do .aval-all-cards — idêntico ao comportamento da Seção 9 */
.aval-cards-row,
.aval-cards-row .form {
display: contents !important;
}
.aval-card {
background: white !important;
border: 2px solid #e0e0e0 !important;
border-radius: 8px !important;
padding: 9px 10px !important;
flex: 0 0 170px !important;
width: 170px !important;
min-width: 170px !important;
max-width: 170px !important;
box-sizing: border-box !important;
margin: 0 !important;
}
.aval-card:hover {
border-color: #FF8C00 !important;
}
/* Label centralizado e bold (Gradio label element) */
.aval-card label {
display: block !important;
text-align: center !important;
margin-bottom: 4px !important;
border-left: none !important;
padding-left: 0 !important;
}
.aval-card label::before,
.aval-card label span::before {
display: none !important;
content: none !important;
}
.aval-card label span {
font-weight: 700 !important;
font-size: 0.95rem !important;
color: #374151 !important;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
}
/* Placeholder com limites da amostra */
.aval-card input::placeholder {
color: #9ca3af !important;
font-size: 0.85rem !important;
font-style: italic;
opacity: 1;
}
/* Input compacto, mais estreito e mais alto */
.aval-card input {
padding: 0 4px !important;
height: 41px !important;
min-height: 41px !important;
font-size: 0.95rem !important;
text-align: center !important;
width: 100% !important;
/* max-width: 72px !important; */
margin: 0 auto !important;
display: block !important;
}
.aval-card .wrap {
min-height: 46px !important;
padding: 0 2px !important;
justify-content: center !important;
}
/* ============================================================
ACCORDIONS DE SEÇÃO (COLAPSÁVEIS)
============================================================ */
/* Accordion de seção - estilo minimalista, label como toggle */
.section-accordion {
margin: 0 !important;
border: none !important;
border-radius: 12px !important;
background: transparent !important;
box-shadow: none !important;
}
/* Label do accordion - pequeno toggle */
.section-accordion > .label-wrap {
padding: 8px 16px !important;
background: #f8f9fa !important;
border: 2px solid #c0c0c0 !important;
border-radius: 0 0 12px 12px !important;
cursor: pointer !important;
font-size: 12px !important;
color: #6c757d !important;
}
.section-accordion > .label-wrap:hover {
background: #fff8f0 !important;
border-color: #FF8C00 !important;
}
.section-accordion[open] > .label-wrap {
border-radius: 0 !important;
border-top: none !important;
}
.section-accordion:not([open]) > .label-wrap {
margin-top: -2px !important;
}
/* Conteúdo da seção */
.section-content {
background: white !important;
border: 2px solid #c0c0c0 !important;
border-bottom: none !important;
border-radius: 12px 12px 0 0 !important;
padding: 16px !important;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06) !important;
}
.section-content:hover {
border-color: #FF8C00 !important;
transition: border-color 0.2s ease;
}
/* Container wrapper para header + accordion */
.section-wrapper {
margin: 24px 0 8px 0 !important;
}
/* Animação de abertura */
.section-content:not([style*="display: none"]) {
animation: sectionFadeIn 0.3s ease-in-out;
}
@keyframes sectionFadeIn {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* ============================================================
BOTÕES DE FILTRO DE OUTLIERS
============================================================ */
/* Base para os 3 botões circulares de controle de filtros (+, −, ↺) */
.btn-filtro-acao {
font-size: 22px !important;
font-weight: 900 !important;
width: 42px !important;
height: 42px !important;
min-width: 42px !important;
max-width: 42px !important;
max-height: 42px !important;
aspect-ratio: 1 / 1 !important;
border-radius: 50% !important;
padding: 0 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
line-height: 1 !important;
transition: all 0.2s ease !important;
box-sizing: border-box !important;
margin: 0 6px !important;
position: relative !important;
overflow: visible !important;
}
/* Tooltip base (aparece abaixo do botão no hover) */
.btn-filtro-acao::after {
position: absolute;
top: calc(100% + 6px);
left: 50%;
transform: translateX(-50%);
padding: 4px 10px;
border-radius: 6px;
background: #333;
color: white;
font-size: 11px;
font-weight: 500;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease;
z-index: 10;
}
.btn-filtro-acao:hover::after {
opacity: 1;
}
/* Tooltip de cada botão */
button.btn-adicionar-filtro::after { content: "Adicionar filtro"; }
button.btn-remover-filtro::after { content: "Remover último filtro"; }
button.btn-voltar-padrao::after { content: "Restaurar padrão"; }
/* Row dos botões de controle — centralizada com margem inferior */
.btn-filtro-acao-row {
justify-content: center !important;
margin-bottom: 12px !important;
}
/* Botão + (adicionar filtro) — verde */
button.btn-adicionar-filtro,
button.btn-adicionar-filtro.secondary {
background: white !important;
border: 2px solid #28a745 !important;
color: #28a745 !important;
}
button.btn-adicionar-filtro:hover {
background: #28a745 !important;
color: white !important;
}
/* Botão − (remover último filtro) — vermelho */
button.btn-remover-filtro,
button.btn-remover-filtro.secondary {
background: white !important;
border: 2px solid #dc3545 !important;
color: #dc3545 !important;
}
button.btn-remover-filtro:hover {
background: #dc3545 !important;
color: white !important;
}
/* Botão ↺ (restaurar padrão) — cinza */
button.btn-voltar-padrao,
button.btn-voltar-padrao.secondary {
background: white !important;
border: 2px solid #6c757d !important;
color: #6c757d !important;
}
button.btn-voltar-padrao:hover {
background: #6c757d !important;
color: white !important;
}
/* ============================================================
OUTLIER SECTIONS — LAYOUT REFINEMENTS
============================================================ */
/* Linha de filtro — card com borda sutil */
.filtro-row {
background: #fafbfc !important;
border: 1px solid #e9ecef !important;
border-radius: 8px !important;
padding: 8px 12px !important;
margin: 4px 0 !important;
transition: border-color 0.2s ease;
}
.filtro-row:hover {
border-color: #FF8C00 !important;
}
/* Botão principal de ação — destaque forte */
.btn-reiniciar-iteracao {
background: linear-gradient(180deg, #FF8C00 0%, #e67e00 100%) !important;
border: 2px solid #cc7000 !important;
color: white !important;
font-weight: 700 !important;
font-size: 14px !important;
padding: 12px 24px !important;
border-radius: 8px !important;
box-shadow: 0 3px 8px rgba(255, 140, 0, 0.3) !important;
transition: all 0.2s ease !important;
}
.btn-reiniciar-iteracao:hover {
background: linear-gradient(180deg, #e67e00 0%, #cc7000 100%) !important;
transform: translateY(-1px) !important;
box-shadow: 0 5px 15px rgba(255, 140, 0, 0.4) !important;
}
/* Resumo de outliers — textbox estilizado e responsivo */
.resumo-outliers textarea {
font-family: 'Consolas', 'Courier New', monospace !important;
font-size: 14px !important;
font-weight: 600 !important;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) !important;
border: 2px solid #dee2e6 !important;
border-radius: 10px !important;
text-align: center !important;
letter-spacing: 0.3px !important;
color: #495057 !important;
white-space: normal !important;
word-break: break-word !important;
height: auto !important;
min-height: 42px !important;
overflow: visible !important;
}
@media (max-width: 768px) {
.resumo-outliers textarea {
font-size: 12px !important;
letter-spacing: 0 !important;
}
}
/* Subtítulo dentro de seção (separador visual) */
.outlier-subheader {
display: flex;
align-items: center;
gap: 8px;
font-weight: 600;
font-size: 13px;
color: #4a5568;
text-transform: uppercase;
letter-spacing: 0.4px;
padding: 0 0 8px 0;
margin: 16px 0 12px 0;
border-bottom: 2px solid #FF8C00;
}
.outlier-subheader:first-child {
margin-top: 0;
}
/* Texto explicativo sutil */
.outlier-dica {
font-size: 13px;
color: #6c757d;
font-style: italic;
margin: -4px 0 12px 0;
line-height: 1.5;
}
/* Divisor visual entre blocos */
.outlier-divider {
display: flex;
align-items: center;
gap: 8px;
margin: 12px 0;
color: #adb5bd;
font-size: 12px;
}
.outlier-divider::before,
.outlier-divider::after {
content: '';
flex: 1;
border-bottom: 1px dashed #dee2e6;
}
.outlier-divider .arrow {
font-size: 16px;
color: #FF8C00;
}
/* ============================================================
VISUALIZAÇÃO - CLASSES REUTILIZÁVEIS (HTML gerado pelo Python)
============================================================ */
/* ----- Título de Seção Sólido (Resumo do modelo) ----- */
.section-title-orange-solid {
font-weight: 600;
color: #4a5568;
margin: 16px 0 8px 0;
padding: 8px 12px;
border-left: 4px solid #FF8C00;
background: #fff8f0;
font-size: 14px;
text-transform: uppercase;
letter-spacing: 0.3px;
}
/* ----- Card Light (transformações) ----- */
.dai-card-light {
display: inline-flex;
align-items: center;
padding: 10px 14px;
background: linear-gradient(135deg, white 0%, #f8f9fa 100%);
border-radius: 8px;
border: 1px solid #e9ecef;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
white-space: nowrap;
box-sizing: border-box;
}
/* ----- Grid de Cards (transformações) ----- */
.dai-cards-grid {
display: grid;
gap: 8px;
padding: 16px;
background: linear-gradient(180deg, #fafbfc 0%, #f5f6f7 100%);
border-radius: 10px;
max-height: 360px;
overflow-y: auto;
}
/* ----- Container com Scroll ----- */
.scrollable-container {
max-height: 700px;
overflow-y: auto;
}
/* ----- Placeholder / Em Desenvolvimento ----- */
.placeholder-alert {
padding: 20px;
background: linear-gradient(135deg, #f8f9fa 0%, white 100%);
border-radius: 10px;
border: 1px dashed #dee2e6;
text-align: center;
color: #6c757d;
}
.placeholder-alert-title {
font-weight: 600;
margin-bottom: 8px;
}
.placeholder-alert-text {
font-size: 13px;
margin: 0;
}
/* ============================================================
VISUALIZAÇÃO - LAYOUT
============================================================ */
/* ===== ÁREA DE UPLOAD ===== */
.upload-area {
background: white !important;
border-radius: 12px !important;
padding: 20px !important;
margin-bottom: 15px !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
border: 1px solid #e0e0e0 !important;
}
.upload-area .row {
margin-top: 15px !important;
padding: 15px !important;
background: #fafafa !important;
border-radius: 8px !important;
}
/* ===== PAINEL DE CONTEÚDO (LARGURA TOTAL) ===== */
.content-panel {
background: white !important;
border-radius: 12px !important;
padding: 15px !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
border: 1px solid #e0e0e0 !important;
}
.tabs-container .tab-nav {
font-size: 13px !important;
}
/* ===== ACCORDION DO MAPA ===== */
.map-accordion {
background: white !important;
border-radius: 12px !important;
margin-bottom: 15px !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
border: 1px solid #e0e0e0 !important;
}
.map-accordion iframe {
border-radius: 8px !important;
}
#map-frame {
border-radius: 8px;
}
/* ===== LABELS DOS COMPONENTES COM ESTILO LARANJA ===== */
.content-panel .label-wrap span,
.content-panel label > span:first-child,
.content-panel .wrap > label > span {
font-weight: 600 !important;
color: #4a5568 !important;
font-size: 13px !important;
letter-spacing: 0.3px !important;
text-transform: uppercase !important;
padding: 6px 10px !important;
border-left: 3px solid #FF8C00 !important;
background: linear-gradient(90deg, #fff8f0 0%, transparent 100%) !important;
border-radius: 0 4px 4px 0 !important;
display: inline-block !important;
margin-bottom: 8px !important;
}