235 lines
6.8 KiB
SCSS
235 lines
6.8 KiB
SCSS
/*
|
|
|--------------------------------------------------------------------------
|
|
| Agência PSI
|
|
|--------------------------------------------------------------------------
|
|
| Criado e desenvolvido por Leonardo Nohama
|
|
|
|
|
| Tecnologia aplicada à escuta.
|
|
| Estrutura para o cuidado.
|
|
|
|
|
| Arquivo: src/assets/styles.scss
|
|
| Data: 2026
|
|
| Local: São Carlos/SP — Brasil
|
|
|--------------------------------------------------------------------------
|
|
| © 2026 — Todos os direitos reservados
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* ── Imports ─────────────────────────── */
|
|
@use 'primeicons/primeicons.css';
|
|
@use '@/assets/layout/layout.scss';
|
|
|
|
/* ── Design Tokens (Tailwind override) ─ */
|
|
:root {
|
|
--text-xs: 0.8rem;
|
|
}
|
|
|
|
/* ── Dark mode (opcional) ───────────── */
|
|
.app-dark {
|
|
--text-xs: 0.82rem;
|
|
}
|
|
|
|
/* ── Responsivo (opcional) ─────────── */
|
|
@media (min-width: 768px) {
|
|
:root {
|
|
--text-xs: 0.85rem;
|
|
}
|
|
}
|
|
|
|
/* Highlight pulse (acionado externamente via classe JS) */
|
|
@keyframes highlight-pulse {
|
|
0% { box-shadow: 0 0 0 0 rgba(99,102,241,0.7), 0 0 0 0 rgba(99,102,241,0.4); }
|
|
40% { box-shadow: 0 0 0 8px rgba(99,102,241,0.3), 0 0 0 16px rgba(99,102,241,0.1); }
|
|
100% { box-shadow: 0 0 0 0 rgba(99,102,241,0), 0 0 0 0 rgba(99,102,241,0); }
|
|
}
|
|
.notif-card--highlight {
|
|
animation: highlight-pulse 1s ease-out 3;
|
|
border-color: rgba(99,102,241,0.6) !important;
|
|
}
|
|
.agenda-altura {
|
|
height: calc(90vh - 150px);
|
|
overflow-y: auto;
|
|
}
|
|
.fade-up-enter-active {
|
|
transition: opacity 0.4s ease, transform 0.4s ease;
|
|
}
|
|
.fade-up-enter-from {
|
|
opacity: 0;
|
|
transform: translateY(16px);
|
|
}
|
|
.fade-up-enter-active .anim-child {
|
|
transition: opacity 0.45s ease, transform 0.45s ease;
|
|
transition-delay: var(--delay, 0ms);
|
|
}
|
|
.fade-up-enter-from .anim-child {
|
|
opacity: 0;
|
|
transform: translateY(16px);
|
|
}
|
|
.menu-enter-from {
|
|
opacity: 0;
|
|
transform: translateY(4px) scale(1.5);
|
|
}
|
|
|
|
.menu-enter-active {
|
|
transition:
|
|
opacity 140ms ease,
|
|
transform 260ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
}
|
|
|
|
.menu-enter-to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
|
|
/* ── LoadedPhraseBlock ───────────────── */
|
|
.loaded-phrase-block {
|
|
border: 2px dashed var(--surface-border);
|
|
border-radius: 12px;
|
|
padding: 0.875rem 1.125rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.35rem;
|
|
background: color-mix(in srgb, var(--primary-color, #6366f1) 3%, var(--surface-card));
|
|
}
|
|
.loaded-phrase-block__header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
.loaded-phrase-block__icon {
|
|
font-size: 0.9rem;
|
|
color: var(--green-500, #22c55e);
|
|
}
|
|
.loaded-phrase-block__title {
|
|
font-size: 0.72rem;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
color: var(--text-color-secondary);
|
|
}
|
|
.loaded-phrase-block__text {
|
|
font-size: 0.88rem;
|
|
color: var(--text-color);
|
|
font-style: italic;
|
|
line-height: 1.5;
|
|
margin: 0;
|
|
}
|
|
.loaded-phrase-in-enter-active {
|
|
transition: opacity 0.5s ease, transform 0.5s ease;
|
|
}
|
|
.loaded-phrase-in-enter-from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
/* ── Subheader de seção ──────────────────────────────── */
|
|
.cfg-subheader {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.65rem;
|
|
padding: 0.875rem 1rem;
|
|
border-radius: 6px;
|
|
border: 1px solid color-mix(in srgb, var(--primary-color, #6366f1) 30%, transparent);
|
|
background: linear-gradient(
|
|
135deg,
|
|
color-mix(in srgb, var(--primary-color, #6366f1) 12%, var(--surface-card)) 0%,
|
|
color-mix(in srgb, var(--primary-color, #6366f1) 4%, var(--surface-card)) 60%,
|
|
var(--surface-card) 100%
|
|
);
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
/* Brilho sutil no canto */
|
|
.cfg-subheader::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: -20px; right: -20px;
|
|
width: 80px; height: 80px;
|
|
border-radius: 50%;
|
|
background: color-mix(in srgb, var(--primary-color, #6366f1) 15%, transparent);
|
|
filter: blur(20px);
|
|
pointer-events: none;
|
|
}
|
|
.cfg-subheader__icon {
|
|
display: grid; place-items: center;
|
|
flex-shrink: 0;
|
|
background: color-mix(in srgb, var(--primary-color, #6366f1) 20%, transparent);
|
|
color: var(--primary-color, #6366f1);
|
|
}
|
|
.cfg-subheader__title {
|
|
font-size: 0.95rem;
|
|
font-weight: 700;
|
|
color: var(--primary-color, #6366f1);
|
|
letter-spacing: -0.01em;
|
|
}
|
|
.cfg-subheader__sub {
|
|
font-size: 0.75rem;
|
|
color: var(--text-color-secondary);
|
|
opacity: 0.85;
|
|
}
|
|
.cfg-card__icon-wrap {
|
|
border: 1px solid var(--surface-border);
|
|
background: var(--surface-ground);
|
|
display: grid;
|
|
place-items: center;
|
|
flex-shrink: 0;
|
|
}
|
|
/* ── Dash cards ───────────────────────────────────── */
|
|
|
|
.dash-card {
|
|
display: flex; flex-direction: column;
|
|
background: var(--surface-card);
|
|
border: 1px solid var(--surface-border);
|
|
overflow: hidden;
|
|
transition: box-shadow 0.2s;
|
|
}
|
|
.dash-card:hover { box-shadow: 0 4px 20px rgba(0,0,0,0.07); }
|
|
.dash-card__head {
|
|
display: flex; align-items: center;
|
|
border-bottom: 1px solid var(--surface-border);
|
|
background: var(--surface-ground);
|
|
}
|
|
.dash-card__icon {
|
|
width: 2.25rem; height: 2.25rem;
|
|
border-radius: 8px;
|
|
display: grid; place-items: center;
|
|
flex-shrink: 0; font-size: 1rem;
|
|
}
|
|
.dash-card__sub { font-size: 0.875rem; color: var(--text-color-secondary); margin-top: 1px; }
|
|
.dash-card__badge {
|
|
margin-left: auto; flex-shrink: 0;
|
|
padding: 2px 10px; border-radius: 999px;
|
|
font-size: 0.875rem; font-weight: 700;
|
|
}
|
|
.dash-card__body {
|
|
flex: 1; padding: 0.75rem 1rem;
|
|
display: flex; flex-direction: column; gap: 0.625rem;
|
|
min-height: 88px;
|
|
}
|
|
.dash-card__foot {
|
|
padding: 0.625rem 1rem;
|
|
border-top: 1px solid var(--surface-border);
|
|
font-size: 0.875rem; font-weight: 700;
|
|
color: var(--primary-color, #6366f1);
|
|
cursor: pointer; transition: background 0.1s;
|
|
}
|
|
.dash-card__foot:hover { background: var(--surface-ground); }
|
|
|
|
/* ── Dash items (dentro dos cards) ───────────────── */
|
|
.dash-item {
|
|
display: flex; align-items: center;
|
|
}
|
|
.dash-item__avatar {
|
|
width: 2rem; height: 2rem; border-radius: 50%;
|
|
flex-shrink: 0; display: grid; place-items: center;
|
|
font-size: 0.75rem; font-weight: 700; color: #fff;
|
|
}
|
|
.dash-item__name { font-size: 0.9375rem; font-weight: 600; color: var(--text-color); }
|
|
.dash-item__sub { font-size: 0.8125rem; color: var(--text-color-secondary); margin-top: 1px; }
|
|
.dash-item__actions { display: flex; gap: 0.375rem; margin-left: auto; flex-shrink: 0; }
|
|
|
|
/* ── Empty state dos cards ────────────────────────── */
|
|
.dash-empty {
|
|
display: flex; align-items: center; gap: 0.5rem;
|
|
font-size: 0.875rem; color: var(--text-color-secondary);
|
|
padding: 0.5rem 0;
|
|
} |