Files
agenciapsilmno/src/assets/styles.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;
}