Spaces:
Sleeping
Sleeping
| /* ============================================================ | |
| STYLES.CSS - Estilos combinados para MESA | |
| (Elaboração + Visualização) | |
| ============================================================ */ | |
| /* ============================================================ | |
| LAYOUT GERAL | |
| ============================================================ */ | |
| :root.dark, | |
| :root .dark { | |
| /* Force LIGHT backgrounds */ | |
| --neutral-950: #ffffff ; | |
| --neutral-900: #ffffff ; | |
| --neutral-800: #ffffff ; | |
| --background-fill-primary: #ffffff ; | |
| --background-fill-secondary: #ffffff ; | |
| --block-background-fill: #ffffff ; | |
| --panel-background-fill: #ffffff ; | |
| --input-background-fill: #ffffff ; | |
| --code-background-fill: #ffffff ; | |
| --block-border-color: #ffffff ; | |
| /* Force readable text */ | |
| --body-text-color: #000000 ; | |
| --block-label-text-color: #000000 ; | |
| --body-text-color-subdued: #444444 ; | |
| --block-title-text-color: #000000 ; | |
| --button-secondary-text-color: #000000 ; | |
| } | |
| .gradio-container { | |
| max-width: 100% ; | |
| padding: 15px ; | |
| background: #f5f5f5 ; | |
| } | |
| /* Logo MESA — 30% do tamanho original, sem fundo */ | |
| #logo-mesa { | |
| max-width: 30% ; | |
| margin: 0 auto ; | |
| background: transparent ; | |
| } | |
| #logo-mesa, #logo-mesa * { | |
| cursor: default ; | |
| } | |
| #logo-mesa img { | |
| background: transparent ; | |
| } | |
| /* Textbox trigger hidden — acessível ao JS mas invisível */ | |
| .trigger-hidden { | |
| position: absolute ; | |
| width: 1px ; | |
| height: 1px ; | |
| overflow: hidden ; | |
| opacity: 0 ; | |
| pointer-events: none ; | |
| } | |
| .gr-group, .wrap, .wrap label, .table-wrap *, input { | |
| border-color: rgb(228, 228, 231) | |
| } | |
| * {--border-color-primary: white ;} | |
| /* ============================================================ | |
| 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 ; | |
| border: 2px solid #c0c0c0 ; | |
| border-radius: 12px ; | |
| padding: 16px ; | |
| margin: 0 0 8px 0 ; | |
| box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06) ; | |
| } | |
| .section-container:hover { | |
| border-color: #FF8C00 ; | |
| 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 ; | |
| margin: 0 0 16px 0 ; | |
| 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 ; | |
| font-weight: 800 ; | |
| } | |
| .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 ; | |
| } | |
| /* 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 ; | |
| color: #495057 ; | |
| } | |
| /* ============================================================ | |
| 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 ; | |
| border-radius: 10px ; | |
| margin: 8px 0 ; | |
| background: white ; | |
| } | |
| .gradio-accordion > .label-wrap { | |
| padding: 12px 16px ; | |
| background: #fafafa ; | |
| border-radius: 10px 10px 0 0 ; | |
| } | |
| .gradio-group { | |
| background: white ; | |
| border-radius: 12px ; | |
| padding: 15px ; | |
| margin-bottom: 15px ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) ; | |
| border: 2px solid #c0c0c0 ; | |
| } | |
| /* ============================================================ | |
| BOTÕES | |
| ============================================================ */ | |
| button.primary { | |
| background: #FF8C00 ; | |
| border-color: #FF8C00 ; | |
| } | |
| button.primary:hover { | |
| background: #e67e00 ; | |
| border-color: #e67e00 ; | |
| } | |
| button.secondary { | |
| background: #dbdbdb ; | |
| border-color: black ; | |
| font-weight: bold ; | |
| } | |
| button.danger { | |
| background: #FF8B87 ; | |
| border-color: black ; | |
| font-weight: bold ; | |
| color: white ; | |
| } | |
| button.danger-reverse { | |
| background: white ; | |
| border-color: black ; | |
| font-weight: bold ; | |
| color: red ; | |
| } | |
| button[aria-label^="Solte arquivos"] { | |
| cursor: default ; | |
| } | |
| button[aria-label^="Solte arquivos"]:focus { | |
| outline: none ; | |
| } | |
| /* ============================================================ | |
| TABELAS | |
| ============================================================ */ | |
| .gradio-dataframe table { | |
| font-size: 13px ; | |
| } | |
| .gradio-dataframe th { | |
| background: #f8f9fa ; | |
| font-weight: 600 ; | |
| color: #495057 ; | |
| text-transform: uppercase ; | |
| font-size: 12px ; | |
| letter-spacing: 0.3px ; | |
| } | |
| .gradio-dataframe td { | |
| padding: 8px 12px ; | |
| } | |
| .gradio-dataframe tr:hover { | |
| background: #fff8f0 ; | |
| 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 ; | |
| } | |
| .gradio-checkbox-group label { | |
| padding: 6px 12px ; | |
| margin: 4px ; | |
| border-radius: 20px ; | |
| background: #f8f9fa ; | |
| border: 1px solid #e0e0e0 ; | |
| transition: all 0.2s ; | |
| } | |
| .gradio-checkbox-group label:hover { | |
| background: #fff8f0 ; | |
| border-color: #FF8C00 ; | |
| } | |
| .gradio-checkbox-group input:checked + label { | |
| background: #FF8C00 ; | |
| color: white ; | |
| border-color: #FF8C00 ; | |
| } | |
| /* ============================================================ | |
| GRÁFICOS PLOTLY | |
| ============================================================ */ | |
| .gradio-plot { | |
| background: white ; | |
| border-radius: 8px ; | |
| padding: 10px ; | |
| border: 1px solid #e0e0e0 ; | |
| } | |
| /* ============================================================ | |
| 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 ; | |
| } | |
| /* Container único: todos os 20 cards fluem num único flex-wrap */ | |
| .transf-all-cards { | |
| display: flex ; | |
| flex-direction: row ; | |
| flex-wrap: wrap ; | |
| align-items: flex-start ; | |
| gap: 14px ; | |
| padding: 20px 20px ; | |
| width: 100% ; | |
| } | |
| /* 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 ; | |
| } | |
| .transf-card { | |
| background: white ; | |
| border: 2px solid #e0e0e0 ; | |
| border-radius: 8px ; | |
| padding: 8px 10px ; | |
| margin: 10px ; | |
| flex: 0 0 155px ; | |
| width: 155px ; | |
| max-width: 155px ; | |
| min-width: 155px ; | |
| box-sizing: border-box ; | |
| } | |
| .transf-card:hover { | |
| border-color: #FF8C00 ; | |
| } | |
| .transf-card-y { | |
| border-color: rgb(0, 0, 0) ; | |
| } | |
| .transf-card-y:hover { | |
| border-color: #2563EB ; | |
| } | |
| /* | |
| .transf-label-y { | |
| color: #4A90D9; | |
| } */ | |
| /* gr.HTML label exibe o nome da variável acima do dropdown */ | |
| .transf-card .transf-card-label { | |
| padding: 0 ; | |
| margin: 0 0 2px 0 ; | |
| line-height: 1 ; | |
| background: none ; | |
| border: none ; | |
| } | |
| .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 ; | |
| min-height: 20px ; | |
| font-size: 0.7rem ; | |
| text-align: center ; | |
| } | |
| .transf-card .wrap { | |
| min-height: 24px ; | |
| padding: 0 2px ; | |
| justify-content: center ; | |
| } | |
| /* Texto selecionado no dropdown centralizado */ | |
| .transf-card .wrap .selected-wrap, | |
| .transf-card .wrap .wrap-inner { | |
| justify-content: center ; | |
| text-align: center ; | |
| } | |
| /* ============================================================ | |
| CARDS DE AVALIAÇÃO (Seção 15 — espelha Seção 9) | |
| ============================================================ */ | |
| .aval-all-cards { | |
| display: flex ; | |
| flex-direction: row ; | |
| flex-wrap: wrap ; | |
| align-items: flex-start ; | |
| justify-content: flex-start ; | |
| gap: 18px 12px ; | |
| padding: 12px ; | |
| width: 100% ; | |
| } | |
| /* 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 ; | |
| } | |
| .aval-card { | |
| background: white ; | |
| border: 2px solid #e0e0e0 ; | |
| border-radius: 8px ; | |
| padding: 9px 10px ; | |
| flex: 0 0 170px ; | |
| width: 170px ; | |
| min-width: 170px ; | |
| max-width: 170px ; | |
| box-sizing: border-box ; | |
| margin: 0 ; | |
| } | |
| .aval-card:hover { | |
| border-color: #FF8C00 ; | |
| } | |
| /* Label centralizado e bold (Gradio label element) */ | |
| .aval-card label { | |
| display: block ; | |
| text-align: center ; | |
| margin-bottom: 4px ; | |
| border-left: none ; | |
| padding-left: 0 ; | |
| } | |
| .aval-card label::before, | |
| .aval-card label span::before { | |
| display: none ; | |
| content: none ; | |
| } | |
| .aval-card label span { | |
| font-weight: 700 ; | |
| font-size: 0.95rem ; | |
| color: #374151 ; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| display: block; | |
| } | |
| /* Placeholder com limites da amostra */ | |
| .aval-card input::placeholder { | |
| color: #9ca3af ; | |
| font-size: 0.85rem ; | |
| font-style: italic; | |
| opacity: 1; | |
| } | |
| /* Input compacto, mais estreito e mais alto */ | |
| .aval-card input { | |
| padding: 0 4px ; | |
| height: 41px ; | |
| min-height: 41px ; | |
| font-size: 0.95rem ; | |
| text-align: center ; | |
| width: 100% ; | |
| /* max-width: 72px !important; */ | |
| margin: 0 auto ; | |
| display: block ; | |
| } | |
| .aval-card .wrap { | |
| min-height: 46px ; | |
| padding: 0 2px ; | |
| justify-content: center ; | |
| } | |
| /* ============================================================ | |
| ACCORDIONS DE SEÇÃO (COLAPSÁVEIS) | |
| ============================================================ */ | |
| /* Accordion de seção - estilo minimalista, label como toggle */ | |
| .section-accordion { | |
| margin: 0 ; | |
| border: none ; | |
| border-radius: 12px ; | |
| background: transparent ; | |
| box-shadow: none ; | |
| } | |
| /* Label do accordion - pequeno toggle */ | |
| .section-accordion > .label-wrap { | |
| padding: 8px 16px ; | |
| background: #f8f9fa ; | |
| border: 2px solid #c0c0c0 ; | |
| border-radius: 0 0 12px 12px ; | |
| cursor: pointer ; | |
| font-size: 12px ; | |
| color: #6c757d ; | |
| } | |
| .section-accordion > .label-wrap:hover { | |
| background: #fff8f0 ; | |
| border-color: #FF8C00 ; | |
| } | |
| .section-accordion[open] > .label-wrap { | |
| border-radius: 0 ; | |
| border-top: none ; | |
| } | |
| .section-accordion:not([open]) > .label-wrap { | |
| margin-top: -2px ; | |
| } | |
| /* Conteúdo da seção */ | |
| .section-content { | |
| background: white ; | |
| border: 2px solid #c0c0c0 ; | |
| border-bottom: none ; | |
| border-radius: 12px 12px 0 0 ; | |
| padding: 16px ; | |
| box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06) ; | |
| } | |
| .section-content:hover { | |
| border-color: #FF8C00 ; | |
| transition: border-color 0.2s ease; | |
| } | |
| /* Container wrapper para header + accordion */ | |
| .section-wrapper { | |
| margin: 24px 0 8px 0 ; | |
| } | |
| /* 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 ; | |
| font-weight: 900 ; | |
| width: 42px ; | |
| height: 42px ; | |
| min-width: 42px ; | |
| max-width: 42px ; | |
| max-height: 42px ; | |
| aspect-ratio: 1 / 1 ; | |
| border-radius: 50% ; | |
| padding: 0 ; | |
| display: flex ; | |
| align-items: center ; | |
| justify-content: center ; | |
| line-height: 1 ; | |
| transition: all 0.2s ease ; | |
| box-sizing: border-box ; | |
| margin: 0 6px ; | |
| position: relative ; | |
| overflow: visible ; | |
| } | |
| /* 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 ; | |
| margin-bottom: 12px ; | |
| } | |
| /* Botão + (adicionar filtro) — verde */ | |
| button.btn-adicionar-filtro, | |
| button.btn-adicionar-filtro.secondary { | |
| background: white ; | |
| border: 2px solid #28a745 ; | |
| color: #28a745 ; | |
| } | |
| button.btn-adicionar-filtro:hover { | |
| background: #28a745 ; | |
| color: white ; | |
| } | |
| /* Botão − (remover último filtro) — vermelho */ | |
| button.btn-remover-filtro, | |
| button.btn-remover-filtro.secondary { | |
| background: white ; | |
| border: 2px solid #dc3545 ; | |
| color: #dc3545 ; | |
| } | |
| button.btn-remover-filtro:hover { | |
| background: #dc3545 ; | |
| color: white ; | |
| } | |
| /* Botão ↺ (restaurar padrão) — cinza */ | |
| button.btn-voltar-padrao, | |
| button.btn-voltar-padrao.secondary { | |
| background: white ; | |
| border: 2px solid #6c757d ; | |
| color: #6c757d ; | |
| } | |
| button.btn-voltar-padrao:hover { | |
| background: #6c757d ; | |
| color: white ; | |
| } | |
| /* ============================================================ | |
| OUTLIER SECTIONS — LAYOUT REFINEMENTS | |
| ============================================================ */ | |
| /* Linha de filtro — card com borda sutil */ | |
| .filtro-row { | |
| background: #fafbfc ; | |
| border: 1px solid #e9ecef ; | |
| border-radius: 8px ; | |
| padding: 8px 12px ; | |
| margin: 4px 0 ; | |
| transition: border-color 0.2s ease; | |
| } | |
| .filtro-row:hover { | |
| border-color: #FF8C00 ; | |
| } | |
| /* Botão principal de ação — destaque forte */ | |
| .btn-reiniciar-iteracao { | |
| background: linear-gradient(180deg, #FF8C00 0%, #e67e00 100%) ; | |
| border: 2px solid #cc7000 ; | |
| color: white ; | |
| font-weight: 700 ; | |
| font-size: 14px ; | |
| padding: 12px 24px ; | |
| border-radius: 8px ; | |
| box-shadow: 0 3px 8px rgba(255, 140, 0, 0.3) ; | |
| transition: all 0.2s ease ; | |
| } | |
| .btn-reiniciar-iteracao:hover { | |
| background: linear-gradient(180deg, #e67e00 0%, #cc7000 100%) ; | |
| transform: translateY(-1px) ; | |
| box-shadow: 0 5px 15px rgba(255, 140, 0, 0.4) ; | |
| } | |
| /* Resumo de outliers — textbox estilizado e responsivo */ | |
| .resumo-outliers textarea { | |
| font-family: 'Consolas', 'Courier New', monospace ; | |
| font-size: 14px ; | |
| font-weight: 600 ; | |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) ; | |
| border: 2px solid #dee2e6 ; | |
| border-radius: 10px ; | |
| text-align: center ; | |
| letter-spacing: 0.3px ; | |
| color: #495057 ; | |
| white-space: normal ; | |
| word-break: break-word ; | |
| height: auto ; | |
| min-height: 42px ; | |
| overflow: visible ; | |
| } | |
| @media (max-width: 768px) { | |
| .resumo-outliers textarea { | |
| font-size: 12px ; | |
| letter-spacing: 0 ; | |
| } | |
| } | |
| /* 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 ; | |
| border-radius: 12px ; | |
| padding: 20px ; | |
| margin-bottom: 15px ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) ; | |
| border: 1px solid #e0e0e0 ; | |
| } | |
| .upload-area .row { | |
| margin-top: 15px ; | |
| padding: 15px ; | |
| background: #fafafa ; | |
| border-radius: 8px ; | |
| } | |
| /* ===== PAINEL DE CONTEÚDO (LARGURA TOTAL) ===== */ | |
| .content-panel { | |
| background: white ; | |
| border-radius: 12px ; | |
| padding: 15px ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) ; | |
| border: 1px solid #e0e0e0 ; | |
| } | |
| .tabs-container .tab-nav { | |
| font-size: 13px ; | |
| } | |
| /* ===== ACCORDION DO MAPA ===== */ | |
| .map-accordion { | |
| background: white ; | |
| border-radius: 12px ; | |
| margin-bottom: 15px ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) ; | |
| border: 1px solid #e0e0e0 ; | |
| } | |
| .map-accordion iframe { | |
| border-radius: 8px ; | |
| } | |
| #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 ; | |
| color: #4a5568 ; | |
| font-size: 13px ; | |
| letter-spacing: 0.3px ; | |
| text-transform: uppercase ; | |
| padding: 6px 10px ; | |
| border-left: 3px solid #FF8C00 ; | |
| background: linear-gradient(90deg, #fff8f0 0%, transparent 100%) ; | |
| border-radius: 0 4px 4px 0 ; | |
| display: inline-block ; | |
| margin-bottom: 8px ; | |
| } | |