330 lines
8.0 KiB
SCSS
330 lines
8.0 KiB
SCSS
@import "bootstrap-icons/font/bootstrap-icons.css";
|
|
|
|
/* Variáveis baseadas na sua marca, mas modernizadas */
|
|
:root {
|
|
--brand-primary: #E33DCF;
|
|
--brand-hover: #c91eb5;
|
|
--brand-soft: rgba(227, 61, 207, 0.08);
|
|
--text-main: #0F172A; /* Slate 900 - Preto moderno */
|
|
--text-muted: #64748B; /* Slate 500 - Cinza moderno */
|
|
--bg-body: #F8FAFC;
|
|
--glass-border: rgba(255, 255, 255, 0.6);
|
|
--glass-bg: rgba(255, 255, 255, 0.7);
|
|
--shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
|
|
--shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.05), 0 8px 10px -6px rgba(0, 0, 0, 0.01);
|
|
--radius-lg: 16px;
|
|
--font-sans: 'Inter', sans-serif;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--bg-body);
|
|
color: var(--text-main);
|
|
font-family: var(--font-sans);
|
|
-webkit-font-smoothing: antialiased;
|
|
/* Garante scroll da página em todo o app */
|
|
overflow-y: auto !important;
|
|
/* Global select styling to match LineGestao UI */
|
|
select,
|
|
select.form-select,
|
|
select.form-control {
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
appearance: none;
|
|
height: 42px;
|
|
border-radius: 10px;
|
|
border: 1.5px solid rgba(15, 23, 42, 0.12);
|
|
padding: 0 36px 0 12px;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: var(--text-main);
|
|
background-color: #fff;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 20 20'%3E%3Cpath fill='%2364748B' d='M5.25 7.5 10 12.25 14.75 7.5'/%3E%3C/svg%3E");
|
|
background-repeat: no-repeat;
|
|
background-position: right 12px center;
|
|
background-size: 14px 14px;
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
|
|
}
|
|
|
|
select:focus,
|
|
select.form-select:focus,
|
|
select.form-control:focus {
|
|
outline: none;
|
|
border-color: var(--brand-primary);
|
|
box-shadow: 0 0 0 3px var(--brand-soft);
|
|
}
|
|
|
|
select:disabled,
|
|
select.form-select:disabled,
|
|
select.form-control:disabled {
|
|
background-color: #f1f5f9;
|
|
color: var(--text-muted);
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
select.form-select-sm,
|
|
select.form-control-sm {
|
|
height: 36px;
|
|
font-size: 13px;
|
|
padding-right: 32px;
|
|
background-position: right 10px center;
|
|
}
|
|
}
|
|
|
|
/* Utilitário de animação suave */
|
|
.fade-in-up {
|
|
animation: fadeInUp 0.6s ease-out forwards;
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
|
|
@keyframes fadeInUp {
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
/* Empurra o conteúdo pra baixo do header fixo */
|
|
.app-main.has-header {
|
|
position: relative;
|
|
padding-top: 84px; /* altura segura p/ header (mobile/desktop) */
|
|
background:
|
|
radial-gradient(900px 420px at 20% 10%, rgba(227, 61, 207, 0.1), transparent 60%),
|
|
radial-gradient(820px 380px at 80% 30%, rgba(227, 61, 207, 0.06), transparent 60%),
|
|
linear-gradient(180deg, #ffffff 0%, #f5f5f7 70%);
|
|
}
|
|
|
|
@media (max-width: 600px) {
|
|
.app-main.has-header {
|
|
padding-top: 96px;
|
|
}
|
|
}
|
|
|
|
/* Ajuste para monitores grandes: elimina o "vão" visual entre header e corpo. */
|
|
@media (min-width: 1400px) {
|
|
.app-main.has-header {
|
|
padding-top: 72px;
|
|
}
|
|
|
|
.container-geral,
|
|
.container-geral-responsive,
|
|
.container-fat,
|
|
.container-mureg,
|
|
.container-troca {
|
|
margin-top: 14px !important;
|
|
}
|
|
}
|
|
|
|
/* ========================================================== */
|
|
/* 🚀 GLOBAL FIX: Proporção Horizontal e Vertical */
|
|
/* ========================================================== */
|
|
|
|
/* 1. HORIZONTAL: Mantém a proporção mais "fechada" que você gostou */
|
|
.container-geral,
|
|
.container-fat,
|
|
.container-mureg,
|
|
.container-troca,
|
|
.container-geral-responsive {
|
|
max-width: 1100px !important; /* Largura controlada */
|
|
width: 96% !important; /* Margem segura em telas menores */
|
|
margin-left: auto !important;
|
|
margin-right: auto !important;
|
|
display: block !important;
|
|
}
|
|
|
|
/* 2. TABELAS: Remove limites de largura mínima desnecessários */
|
|
.table-modern {
|
|
width: 100% !important;
|
|
min-width: unset !important;
|
|
}
|
|
|
|
/* 3. VERTICAL: Libera o crescimento dos cards em todas as páginas */
|
|
.geral-card,
|
|
.fat-card,
|
|
.mureg-card,
|
|
.troca-card,
|
|
.vigencia-page .geral-card {
|
|
height: auto !important; /* Cresce conforme o conteúdo */
|
|
max-height: none !important; /* Remove limites fixos */
|
|
min-height: 80vh; /* Garante um tamanho mínimo bonito */
|
|
overflow: visible !important; /* Remove scroll interno, usa o da janela */
|
|
margin-bottom: 40px !important; /* Respiro no final */
|
|
}
|
|
|
|
/* 4. LISTAS E WRAPPERS: Destrava o crescimento interno */
|
|
.groups-container,
|
|
.table-wrap,
|
|
.table-wrap-tall,
|
|
.inner-table-wrap {
|
|
height: auto !important;
|
|
max-height: none !important; /* CRÍTICO: Remove travas de pixels */
|
|
overflow: visible !important;
|
|
}
|
|
|
|
/* 5. PÁGINAS: Garante que o scroll do navegador funcione */
|
|
.geral-page,
|
|
.users-page,
|
|
.fat-page,
|
|
.mureg-page,
|
|
.troca-page,
|
|
.historico-page,
|
|
.perfil-page,
|
|
.dashboard-page,
|
|
.chips-page,
|
|
.parcelamentos-page,
|
|
.resumo-page,
|
|
.create-user-page {
|
|
overflow-y: auto !important;
|
|
height: auto !important;
|
|
display: block !important;
|
|
}
|
|
|
|
/* ========================================================== */
|
|
/* Modal Criar Usuário (forçar estilo global) */
|
|
/* ========================================================== */
|
|
app-header .modal-overlay {
|
|
position: fixed;
|
|
inset: 0;
|
|
background: rgba(15, 23, 42, 0.35);
|
|
z-index: 1400;
|
|
}
|
|
|
|
app-header .modal-card {
|
|
position: fixed;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
width: min(720px, calc(100vw - 32px));
|
|
background: #fff;
|
|
border-radius: 18px;
|
|
border: 1px solid rgba(15, 23, 42, 0.08);
|
|
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
|
|
z-index: 1450;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
app-header .modal-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 18px 20px;
|
|
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
app-header .modal-header h3 {
|
|
margin: 0;
|
|
font-size: 18px;
|
|
font-weight: 700;
|
|
color: #0f172a;
|
|
}
|
|
|
|
app-header .modal-body {
|
|
padding: 18px 20px 10px;
|
|
}
|
|
|
|
app-header .modal-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 12px;
|
|
padding: 0 20px 18px;
|
|
}
|
|
|
|
app-header .modal-card .user-form {
|
|
display: grid;
|
|
gap: 14px;
|
|
}
|
|
|
|
app-header .modal-card .form-field {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
app-header .modal-card .form-field label {
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
color: #0f172a;
|
|
}
|
|
|
|
app-header .modal-card .form-field input,
|
|
app-header .modal-card .form-field select {
|
|
height: 42px;
|
|
border-radius: 10px;
|
|
border: 1.5px solid #d7dbe6;
|
|
padding: 0 12px;
|
|
font-size: 14px;
|
|
color: #0f172a;
|
|
background: #fff;
|
|
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
app-header .modal-card .form-field input:focus,
|
|
app-header .modal-card .form-field select:focus {
|
|
outline: none;
|
|
border-color: #2f6bff;
|
|
box-shadow: 0 0 0 3px rgba(47, 107, 255, 0.15);
|
|
}
|
|
|
|
app-header .modal-card .btn-primary,
|
|
app-header .modal-card .btn-secondary {
|
|
height: 40px;
|
|
min-width: 110px;
|
|
border-radius: 10px;
|
|
border: none;
|
|
font-weight: 600;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
|
}
|
|
|
|
app-header .modal-card .btn-primary {
|
|
background: #2f6bff;
|
|
color: #fff;
|
|
box-shadow: 0 10px 20px rgba(47, 107, 255, 0.2);
|
|
}
|
|
|
|
app-header .modal-card .btn-secondary {
|
|
background: #e2e8f0;
|
|
color: #0f172a;
|
|
}
|
|
|
|
app-header .modal-card .btn-primary:hover,
|
|
app-header .modal-card .btn-secondary:hover {
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
app-header .modal-card {
|
|
width: min(520px, calc(100vw - 24px));
|
|
}
|
|
|
|
app-header .modal-actions {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
app-header .modal-card .btn-primary,
|
|
app-header .modal-card .btn-secondary {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
/* Remove separators inside search inputs (icon / text / clear button). */
|
|
.input-group.search-group {
|
|
> .input-group-text,
|
|
> .form-control,
|
|
> .btn,
|
|
> .btn-clear {
|
|
border: 0 !important;
|
|
box-shadow: none !important;
|
|
background: transparent !important;
|
|
}
|
|
|
|
> :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.invalid-tooltip) {
|
|
margin-left: 0 !important;
|
|
}
|
|
|
|
> .form-control:focus {
|
|
box-shadow: none !important;
|
|
}
|
|
}
|
|
|