# Diretrizes de Estilo do Mindforge

Diretrizes visuais da página de revisão de flashcards: usabilidade moderna com toques acadêmicos vintage — mesa de estudo pessoal, quente, tátil e iluminada.

---

## 1. Identidade do Produto

- **Nome**: Mindforge
- **Conceito**: Estrutura moderna (grade limpa, vidro translúcido, cartões arredondados) + dicas vintage (papel, serifa, cores pergaminho, carimbo, ficha pautada).
- **Tom**: Ambiente de biblioteca com legibilidade de aplicativo moderno. Sempre priorizar foco e UX para estudo.

---

## 2. Princípios de Design

1. **Claro e quente**: Fundos creme/pergaminho/dourado/azul desbotado. Sem tema escuro.
2. **Vintage ao redor, legível no centro**: Serifa na marca e cabeçalhos; sem serifa no conteúdo do flashcard.
3. **Sem animações contínuas**: Progresso estático, sem pulsos, sem cintilações. Movimento apenas para feedback direto (virar, carimbar, celebrar).
4. **Hierarquia forte**: Flashcard é o ponto focal. Sidebar, topbar e painéis são suporte visual mais leve.
5. **Tátil e limpo**: Texturas de papel, bordas tracejadas, sombras suaves. Evitar grunge pesado ou baixo contraste.

---

## 3. Variáveis CSS

```css
:root {
  --bg: #fbf3df;
  --bg-soft: #fff9ea;
  --paper: #fffaf0;
  --paper-deep: #f2dfb3;
  --ink: #2b241c;
  --muted: #7b6a50;
  --line: rgba(82, 60, 28, 0.18);

  --blue: #3f7cac;
  --blue-deep: #255f8d;
  --green: #4f8f5a;
  --green-deep: #32683b;
  --red: #b75b4d;
  --red-deep: #8d3c32;
  --gold: #c79539;
  --violet: #7e65a8;

  --shadow: 0 28px 70px rgba(58, 42, 17, 0.18);
  --card-shadow: 0 30px 90px rgba(76, 48, 12, 0.20);

  --radius-xl: 32px;
  --radius-lg: 22px;
  --radius-md: 16px;

  --ease: cubic-bezier(.2,.75,.2,1);
}
```

| Token | Valor | Função |
| --- | --- | --- |
| `--bg` | `#fbf3df` | Fundo geral |
| `--bg-soft` | `#fff9ea` | Superfícies claras |
| `--paper` | `#fffaf0` | Face do cartão |
| `--paper-deep` | `#f2dfb3` | Pergaminho profundo |
| `--ink` | `#2b241c` | Texto principal |
| `--muted` | `#7b6a50` | Texto secundário |
| `--line` | `rgba(82, 60, 28, 0.18)` | Bordas/divisores |
| `--blue` / `--blue-deep` | `#3f7cac` / `#255f8d` | Destaque, progresso, nota |
| `--green` / `--green-deep` | `#4f8f5a` / `#32683b` | Correto, status ativo |
| `--red` / `--red-deep` | `#b75b4d` / `#8d3c32` | Incorreto, difícil |
| `--gold` | `#c79539` | Destaque vintage, médio |
| `--violet` | `#7e65a8` | Celebração/destaque secundário |

Sombras são marrom-quentes (nunca preto neutro). Raio de borda: `--radius-xl` (contêineres grandes), `--radius-lg` (cartões médios), `--radius-md` (itens compactos). Easing: `cubic-bezier(.2,.75,.2,1)`.

---

## 4. Estilo Global

```css
* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  color: var(--ink);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background:
    radial-gradient(circle at top left, rgba(255, 221, 146, .8), transparent 35%),
    radial-gradient(circle at 85% 15%, rgba(99, 153, 188, .22), transparent 34%),
    linear-gradient(135deg, #fff8e6 0%, #f9edcc 50%, #fbf5e7 100%);
  overflow-x: hidden;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(92, 68, 30, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(92, 68, 30, 0.035) 1px, transparent 1px);
  background-size: 24px 24px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.65), rgba(0,0,0,.12));
}
```

---

## 5. Tipografia

- **UI global**: `Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`
- **Marca e cabeçalhos**: `Georgia, "Times New Roman", serif`
- **Conteúdo do flashcard (pergunta/resposta)**: `"Segoe UI", Inter, Avenir, system-ui, -apple-system, BlinkMacSystemFont, sans-serif`

Cabeçalho da pergunta: `font-size: clamp(28px, 4.5vw, 46px)`, `line-height: 1.16`, `letter-spacing: -.035em`, `font-weight: 850`.
Cabeçalho da resposta: `font-size: clamp(24px, 3.7vw, 36px)`, `line-height: 1.24`.
Texto de apoio: `max-width: 590px`, `color: #66543d`, `font-size: 17px`, `line-height: 1.68`.

Metadados (rótulos, tags, estatísticas): `text-transform: uppercase`, `letter-spacing: .10em a .14em`, `font-weight: 900 a 950`.

---

## 6. Layout

```css
.app {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 288px minmax(0, 1fr);
}

.main {
  min-width: 0;
  padding: 22px 28px 38px;
}

.content-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 330px;
  gap: 24px;
  align-items: start;
}
```

---

## 7. Barra Lateral

```css
.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 24px 18px;
  background:
    linear-gradient(180deg, rgba(255, 249, 234, .9), rgba(245, 226, 183, .84)),
    repeating-linear-gradient(45deg, rgba(113, 74, 18, .04) 0 1px, transparent 1px 8px);
  border-right: 1px solid var(--line);
  box-shadow: 16px 0 40px rgba(80, 54, 18, .08);
  z-index: 2;
}
```

### Marca

```css
.brand { display: flex; align-items: center; gap: 14px; padding: 12px 12px 24px; }

.brand-mark {
  width: 46px; height: 46px;
  display: grid; place-items: center;
  border-radius: 15px;
  background: linear-gradient(135deg, #f2cf82, #fff2c8);
  border: 1px solid rgba(105, 73, 21, .18);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 10px 22px rgba(129, 86, 27, .17);
  font-family: Georgia, serif; font-size: 22px; font-weight: 800; color: #51340d;
}

.brand h1 { font-family: Georgia, "Times New Roman", serif; font-size: 22px; letter-spacing: -.03em; }
```

### Navegação

```css
.nav-section-title {
  margin: 20px 12px 10px;
  color: var(--muted); font-size: 11px; font-weight: 900;
  letter-spacing: .14em; text-transform: uppercase;
}

.nav-item {
  position: relative; width: 100%;
  display: flex; align-items: center; gap: 12px;
  padding: 13px 13px; margin: 4px 0;
  border: 1px solid transparent; border-radius: 16px;
  color: #4b3b27; text-decoration: none;
  font-weight: 800; font-size: 14px;
  transition: .25s var(--ease); cursor: pointer;
}

.nav-item:hover { transform: translateX(4px); background: rgba(255,255,255,.45); border-color: var(--line); }

.nav-item.active {
  background: #fff7df; border-color: rgba(129, 86, 27, .16);
  box-shadow: 0 12px 28px rgba(104, 65, 14, .10);
}

.nav-icon {
  width: 30px; height: 30px;
  display: grid; place-items: center;
  border-radius: 11px;
  background: rgba(255,255,255,.64);
  border: 1px solid rgba(80, 54, 18, .10);
}
```

### Cartão do baralho e progresso

```css
.deck-card {
  margin-top: 24px; padding: 16px;
  border-radius: 22px;
  background: linear-gradient(145deg, rgba(255,255,255,.62), rgba(255,238,193,.70));
  border: 1px solid rgba(105, 73, 21, .16);
  box-shadow: 0 18px 40px rgba(82, 55, 18, .10);
}

.mini-progress {
  height: 10px; border-radius: 999px; overflow: hidden;
  background: rgba(95, 72, 35, .14);
}
.mini-progress span { width: 54%; background: linear-gradient(90deg, var(--blue), #79a9c8, var(--gold)); }
```

---

## 8. Barra Superior

```css
.topbar {
  min-height: 72px;
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  padding: 14px 18px; margin-bottom: 24px;
  background: rgba(255, 250, 239, .72);
  border: 1px solid rgba(104, 69, 22, .13); border-radius: 26px;
  backdrop-filter: blur(18px);
  box-shadow: 0 18px 50px rgba(86, 57, 17, .08);
}

.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  margin-bottom: 4px;
  color: var(--blue-deep); font-size: 12px; font-weight: 950;
  letter-spacing: .14em; text-transform: uppercase;
}

.pulse-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 0 4px rgba(79, 143, 90, .16);
  /* ESTÁTICO - nunca pulsar */
}

.topbar h2 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(24px, 3vw, 34px); letter-spacing: -.04em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.chip, .icon-button {
  min-height: 42px;
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  padding: 0 14px; border-radius: 999px;
  border: 1px solid rgba(96, 67, 28, .15);
  background: rgba(255,255,255,.62);
  color: #4b3b27; font-weight: 850; font-size: 13px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.72);
}

.icon-button:hover { transform: translateY(-2px) rotate(-2deg); box-shadow: 0 10px 20px rgba(86, 57, 17, .12); }
```

---

## 9. Painel de Revisão

```css
.review-panel {
  position: relative;
  min-height: 650px;
  padding: clamp(18px, 3vw, 34px);
  border-radius: var(--radius-xl);
  background:
    linear-gradient(145deg, rgba(255,255,255,.54), rgba(255,240,202,.46)),
    radial-gradient(circle at 15% 20%, rgba(255, 201, 101, .25), transparent 35%),
    radial-gradient(circle at 90% 10%, rgba(63, 124, 172, .16), transparent 32%);
  border: 1px solid rgba(104, 69, 22, .13);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.review-panel::before {
  width: 220px; height: 220px;
  right: -92px; top: 100px;
  background: rgba(63, 124, 172, .13);
  /* forma decorativa - nunca cobrir conteúdo */
}

.review-panel::after {
  width: 180px; height: 180px;
  left: -70px; bottom: 60px;
  background: rgba(199, 149, 57, .18);
}

.review-panel::before, .review-panel::after {
  position: absolute; border-radius: 999px; pointer-events: none; filter: blur(2px); opacity: .5;
}

.session-header {
  position: relative; z-index: 1;
  display: flex; justify-content: space-between; align-items: flex-start; gap: 16px;
  margin-bottom: 24px;
}

.session-title h3 { font-family: Georgia, serif; font-size: clamp(24px, 3vw, 36px); letter-spacing: -.04em; }
.session-title p { max-width: 660px; color: var(--muted); font-size: 15px; line-height: 1.55; }

.score-pill {
  min-width: 76px; padding: 11px 12px; border-radius: 18px;
  background: rgba(255,255,255,.55); border: 1px solid rgba(100, 65, 18, .12);
  text-align: center; box-shadow: inset 0 1px 0 rgba(255,255,255,.72);
}
.score-pill b { display: block; font-size: 19px; }
.score-pill span { color: var(--muted); font-size: 10px; font-weight: 950; letter-spacing: .12em; text-transform: uppercase; }
```

---

## 10. Flashcard

```css
.stage {
  position: relative; z-index: 1;
  display: grid; place-items: center;
  min-height: 390px;
  perspective: 1400px;
  padding: 22px 0;
}

.flashcard {
  position: relative;
  width: min(680px, 100%); min-height: 355px;
  cursor: pointer;
  transform-style: preserve-3d;
  transition: transform .78s var(--ease), filter .35s var(--ease);
  outline: none;
}

.flashcard:hover .card-face { border-color: rgba(63, 124, 172, .28); }
.flashcard.is-flipped { transform: rotateY(180deg); }
.flashcard.is-reviewed { animation: cardExit .58s var(--ease); }

.card-face {
  position: absolute; inset: 0; min-height: 355px;
  display: flex; flex-direction: column; justify-content: space-between;
  padding: clamp(24px, 5vw, 42px);
  border-radius: 30px;
  backface-visibility: hidden;
  background:
    linear-gradient(90deg, rgba(168, 111, 36, .09) 0 1px, transparent 1px 22px),
    linear-gradient(rgba(168, 111, 36, .08) 0 1px, transparent 1px 30px),
    linear-gradient(145deg, #fffaf0, #f5dfaa);
  border: 1px solid rgba(82, 54, 17, .18);
  box-shadow: var(--card-shadow), inset 0 0 0 8px rgba(255,255,255,.24);
  overflow: hidden;
}

/* Borda tracejada de arquivo */
.card-face::before {
  content: ""; position: absolute; inset: 18px;
  border: 1px dashed rgba(82, 54, 17, .18); border-radius: 22px;
  pointer-events: none;
}

/* Brilho decorativo */
.card-face::after {
  content: ""; position: absolute;
  width: 140px; height: 140px;
  right: -46px; bottom: -50px; border-radius: 50%;
  background: radial-gradient(circle, rgba(199,149,57,.25), transparent 66%);
  pointer-events: none;
}

/* Verso: mais frio/azulado para diferenciar */
.card-back {
  transform: rotateY(180deg);
  background:
    linear-gradient(90deg, rgba(63,124,172,.08) 0 1px, transparent 1px 22px),
    linear-gradient(rgba(63,124,172,.07) 0 1px, transparent 1px 30px),
    linear-gradient(145deg, #fffaf1, #dfeef2);
}

.card-meta {
  position: relative; z-index: 1;
  display: flex; justify-content: space-between; gap: 12px; align-items: center;
  color: var(--muted); font-size: 12px; font-weight: 950;
  letter-spacing: .12em; text-transform: uppercase;
}

.tag {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 12px; border-radius: 999px;
  background: rgba(255,255,255,.54); border: 1px solid rgba(82, 54, 17, .12);
}

.card-question, .card-answer {
  position: relative; z-index: 1;
  display: grid; align-content: center; gap: 12px;
  min-height: 190px;
}

.card-footer {
  position: relative; z-index: 1;
  display: flex; justify-content: space-between; gap: 14px; align-items: center;
  color: var(--muted); font-size: 13px; font-weight: 800;
}

.spacebar {
  padding: 4px 9px; border-radius: 8px;
  color: #4f3a1d; background: rgba(255,255,255,.58);
  border: 1px solid rgba(82, 54, 17, .14);
  box-shadow: inset 0 -2px 0 rgba(82, 54, 17, .08);
  font-size: 11px; font-weight: 950; letter-spacing: .08em; text-transform: uppercase;
}

@keyframes cardExit {
  0%   { transform: translateX(0) rotateY(180deg) rotateZ(0); opacity: 1; }
  45%  { transform: translateX(28px) rotateY(180deg) rotateZ(2deg); opacity: .9; }
  100% { transform: translateX(-32px) rotateY(180deg) rotateZ(-2deg); opacity: 0; }
}
```

---

## 11. Controles de Revisão

```css
.controls {
  position: relative; z-index: 1;
  display: flex; justify-content: center; gap: 16px; flex-wrap: wrap;
  opacity: .36; transform: translateY(10px);
  pointer-events: none;
  transition: .35s var(--ease);
}

.controls.ready { opacity: 1; transform: translateY(0); pointer-events: auto; }

.review-button {
  position: relative;
  min-width: 170px; min-height: 60px;
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  border: 0; border-radius: 20px;
  color: white; font-weight: 950; font-size: 16px; cursor: pointer;
  box-shadow: 0 16px 34px rgba(63, 44, 20, .18), inset 0 1px 0 rgba(255,255,255,.32);
  overflow: hidden;
  transition: .25s var(--ease);
}

.review-button.correct { background: linear-gradient(135deg, var(--green), var(--green-deep)); }
.review-button.wrong   { background: linear-gradient(135deg, var(--red), var(--red-deep)); }

.review-button:hover { transform: translateY(-4px); box-shadow: 0 22px 42px rgba(63, 44, 20, .22), inset 0 1px 0 rgba(255,255,255,.32); }

/* Brilho no hover */
.review-button::before {
  content: ""; position: absolute; inset: -90% -40%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.32), transparent);
  transform: rotate(20deg) translateX(-80%);
  transition: .55s var(--ease);
}
.review-button:hover::before { transform: rotate(20deg) translateX(80%); }
```

---

## 12. Carimbo de Feedback

```css
.stamp {
  position: absolute; right: 38px; top: 36px; z-index: 4;
  padding: 12px 18px;
  border: 4px double currentColor; border-radius: 10px;
  font-family: Georgia, serif; font-size: 26px; font-weight: 900;
  letter-spacing: .08em; text-transform: uppercase;
  opacity: 0; transform: rotate(-12deg) scale(1.3);
  pointer-events: none;
}
.stamp.correct { color: var(--green-deep); }
.stamp.wrong   { color: var(--red-deep); }

.stamp.show { animation: stampIn .7s var(--ease); }

@keyframes stampIn {
  0%   { opacity: 0; transform: rotate(-18deg) scale(1.8); }
  38%  { opacity: 1; transform: rotate(-10deg) scale(.9); }
  58%  { transform: rotate(-12deg) scale(1.04); }
  100% { opacity: 0; transform: rotate(-12deg) scale(1); }
}
```

---

## 13. Painel Lateral Direito

```css
.side-panel { display: grid; gap: 18px; }

.panel-card {
  padding: 20px; border-radius: 26px;
  background: rgba(255, 250, 239, .68);
  border: 1px solid rgba(104, 69, 22, .13);
  box-shadow: 0 18px 48px rgba(86, 57, 17, .09);
  backdrop-filter: blur(16px);
}

.panel-card h3 { margin: 0 0 14px; font-family: Georgia, serif; font-size: 22px; letter-spacing: -.03em; }

.stat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }

.stat {
  padding: 14px; border-radius: 18px;
  background: rgba(255,255,255,.52); border: 1px solid rgba(82, 54, 17, .10);
}
.stat b { display: block; font-size: 24px; letter-spacing: -.04em; }
.stat span { color: var(--muted); font-size: 11px; font-weight: 950; letter-spacing: .10em; text-transform: uppercase; }

.track {
  height: 14px; border-radius: 999px; overflow: hidden;
  background: rgba(80, 54, 18, .12);
}
.track span { display: block; width: 42%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--red), var(--gold), var(--green)); }

.queue { display: grid; gap: 10px; }

.queue-item {
  display: grid; grid-template-columns: 38px minmax(0, 1fr) auto;
  gap: 10px; align-items: center; padding: 10px;
  border-radius: 16px;
  background: rgba(255,255,255,.48); border: 1px solid rgba(82, 54, 17, .10);
}
.queue-item strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.queue-number {
  width: 38px; height: 38px;
  display: grid; place-items: center;
  border-radius: 13px;
  background: #fff5d8; border: 1px solid rgba(82, 54, 17, .12);
  color: #74531c; font-family: Georgia, serif; font-weight: 900;
}

.difficulty { width: 11px; height: 11px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 5px rgba(199, 149, 57, .14); }
.difficulty.easy { background: var(--green); box-shadow: 0 0 0 5px rgba(79, 143, 90, .14); }
.difficulty.hard { background: var(--red);   box-shadow: 0 0 0 5px rgba(183, 91, 77, .14); }

.note {
  position: relative;
  padding: 18px 18px 18px 22px; border-radius: 22px;
  background: linear-gradient(145deg, rgba(255, 246, 211, .9), rgba(255,255,255,.52));
  border: 1px solid rgba(104, 69, 22, .13);
  color: #5e4a2f; font-size: 14px; line-height: 1.55;
}
.note::before {
  content: ""; position: absolute;
  left: 10px; top: 16px; bottom: 16px; width: 4px; border-radius: 999px;
  background: var(--blue);
}
```

---

## 14. Animações

### Permitidas (curtas, acionadas pelo usuário)

| Animação | Gatilho | Duração |
| --- | --- | --- |
| Virada do flashcard (`rotateY(180deg)`) | Clique/Espaço/Enter | `.78s` |
| Saída do cartão (`cardExit`) | Marcar Correto/Incorreto | `.58s` |
| Carimbo (`stampIn`) | Marcar Correto/Incorreto | `.7s` |
| Brilho do botão (hover) | Hover | `.55s` |
| Confete (`confettiFly`) | Marcar Correto | `850ms` |
| Revelação dos controles (`.controls.ready`) | Revelação da resposta | `.35s` |

### Proibidas

- Pulsos infinitos (pontos de status, progresso)
- Barras de progresso animadas ou cintilantes
- Movimento de fundo contínuo
- Hover que transforme `.flashcard` conflitando com `rotateY`
- Movimento decorativo durante leitura

---

## 15. Responsivo

### Tablet (`max-width: 1120px`)

```css
@media (max-width: 1120px) {
  .app { grid-template-columns: 84px minmax(0, 1fr); }
  .sidebar { padding: 20px 10px; }
  .brand { justify-content: center; padding: 8px 0 18px; }
  .brand div:not(.brand-mark), .nav-section-title, .nav-text, .deck-card { display: none; }
  .nav-item { justify-content: center; padding: 12px; }
  .content-grid { grid-template-columns: 1fr; }
  .side-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
```

### Mobile (`max-width: 760px`)

```css
@media (max-width: 760px) {
  .app { grid-template-columns: 1fr; }
  .sidebar { position: static; height: auto; display: flex; align-items: center; gap: 8px; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  .brand { min-width: 64px; padding: 0; }
  .nav-item { min-width: 56px; }
  .main { padding: 16px; }
  .topbar { align-items: flex-start; flex-direction: column; }
  .topbar h2 { white-space: normal; }
  .session-header { flex-direction: column; }
  .score-pills { justify-content: flex-start; }
  .review-panel { min-height: auto; }
  .stage { min-height: 420px; }
  .flashcard, .card-face { min-height: 380px; }
  .side-panel { grid-template-columns: 1fr; }
  .review-button { width: 100%; }
}
```

---

## 16. Interação

- Revelar cartão: clique no flashcard, `Espaço` ou `Enter`. Adiciona `.is-flipped` e `.controls.ready`.
- Botões inativos antes da revelação. Após: `Correto` (gradiente verde, carimbo verde + confete), `Incorreto` (gradiente vermelho, carimbo vermelho).
- Atalhos: `Espaço` (revelar), `C` (correto), `W` (incorreto).

---

## 17. Acessibilidade

- Texto principal em tinta escura quente (`--ink`), nunca preto puro.
- Conteúdo do flashcard sempre sem serifa legível.
- Sem animações em loop. Movimento apenas sob ação do usuário.
- Flashcard alcançável por teclado.
- Flashcard é o ponto focal; painéis secundários usam menor contraste e fontes menores.

---

## 18. O que Fazer e Não Fazer

**Fazer**: creme quente, pergaminho, dourado, azul atenuado; página iluminada; serifa na marca e cabeçalhos; sem serifa no flashcard; linhas de papel e bordas tracejadas; progresso estático; animações curtas para feedback; espaçamento generoso.

**Não fazer**: tema escuro; pulsos ou cintilações infinitas; animar barras de progresso; hover no `.flashcard` que conflite com `rotateY`; fontes decorativas no conteúdo; opacidade alta na textura; sidebar/topbar mais fortes que o cartão; cores fora da paleta.
