/* ============================================================
   casei · Design System — global stylesheet entry point.
   Consumers link THIS one file. It only @imports; no rules here.

   >>> FONTE UNICA. A palavra sobre COMO usar estes tokens (qual camada,
   >>> quando, e o que o Claude Design pode copiar) esta em
   >>> docs/design/design_system.md. Valor divergente entre os dois:
   >>> ESTE arquivo vence, e o doc se corrige.

   ---- Revisao 2026-08-18 · T2 do epico CS-E10 `revisar-o-design-system'
   Identidade cravada: scrapbook "papel & calor". A identidade cosmos
   (roxo/lavanda escuro, origem docs/design/casei_design_handoff.md de
   2026-06-16) esta MORTA por decreto do Capitao.

   O que mudou nesta revisao (213 -> 206 declaracoes):

   + 13 NASCEM
     --ink-800 / --ink-600 / --amber-400 : eram USADOS 33 / 28 / 3 vezes
       nas fontes do prototipo e NUNCA foram declarados em lugar nenhum —
       61 referencias resolviam para nada (a declaracao CSS caia e a cor
       era herdada). Valor = ponto medio dos degraus vizinhos da escala.
       ---- T2a (mesmo dia, follow-up) — os tres passaram de hex congelado
       para `color-mix(in srgb, var(--vizinho-a), var(--vizinho-b))`: o
       ponto medio agora e DERIVADO (ajustar um vizinho arrasta o
       derivado), nao mais copiado a mao. Hex resolvido idem (dif. de
       1/255 por arredondamento) — ver comentario em cada declaracao e
       design_system.md §3.1/§9.3.
     --plum-300 / --plum-100 : o runtime CONSTROI o nome do token
       (`var(--${tone}-300)` em casei-extra.js:1763/1777 e
       `var(--${tone}-100)` em vendors/avaliar/buscar) e `tone: "plum"`
       existe no data.js — a fatia "Decoracao" do grafico de orcamento
       renderiza HOJE sem fundo. Declarados fecham o buraco.
     ~ --slate-blue-100 — --info-tint era o unico da camada semantica
       apontando para um hex cru (#DFE7EE); agora aponta para um primitivo.
     ~ --text-on-brand — pedido nominal da auditoria (secao 2.1).
     --status-aprovado/-rejeitado/-pendente + os tres -tint : C3.

   - 20 MORREM (nenhum tinha uso NEM copia literal do valor nas fontes):
     zero que so repete o default do CSS ... --space-0 --ls-normal --z-base
     estetica estranha a identidade cravada .. --graph-grid --graph-grid-size
     capacidade ja coberta por --radius-deckle  --deckle-edge
     papel que o produto nunca teve ........... --font-mono --fs-display
                                                --fw-light --fw-regular
                                                --lh-relaxed
     degrau sem papel nas familias pastel
     (butter/mint/sky sao FILL 300 + WASH 100) --mint-500 --mint-600
                                                --sky-500 --sky-600
                                                --butter-600
     navy e escala de 2 degraus (contorno 700
     + linha 500), nao de 4 .................. --navy-900 --navy-300
     variante sem consumidor ................. --stitch-navy
                                                --shadow-sticker-seam

   Os outros 52 tokens sem `var()` continuam vivos COM justificativa —
   a tabela token-a-token esta em docs/design/design_system.md, secao 9.
   Voltar um removido custa uma linha aqui + uma no changelog do doc.
   ============================================================ */

/* ============================================================
   casei · Fonts
   Loaded from Google Fonts (nearest matches — see README caveat;
   swap the @import for local @font-face if licensed files arrive).

   Cormorant Garamond — romantic high-contrast display serif (keepsake)
   Nunito            — rounded, assertive display for sticker headlines
   Caveat            — flowing handwritten scrapbook annotations
   Gochi Hand        — chunky marker doodle (labels, arrows, stamps)
   Mulish            — warm humanist sans for UI & body (operational)
   ============================================================ */

/* cyrillic-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/407fd231-520d-474d-abe6-c7d102695111.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/541738cc-ca22-4e18-b033-f7167b881913.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/df9d8897-68fd-4bff-8d7a-4dfe6004ddc6.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/f159c7bc-7516-4c38-9725-b2530bcbad31.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/407fd231-520d-474d-abe6-c7d102695111.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/541738cc-ca22-4e18-b033-f7167b881913.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/df9d8897-68fd-4bff-8d7a-4dfe6004ddc6.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/f159c7bc-7516-4c38-9725-b2530bcbad31.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/407fd231-520d-474d-abe6-c7d102695111.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/541738cc-ca22-4e18-b033-f7167b881913.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/df9d8897-68fd-4bff-8d7a-4dfe6004ddc6.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/f159c7bc-7516-4c38-9725-b2530bcbad31.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/407fd231-520d-474d-abe6-c7d102695111.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/541738cc-ca22-4e18-b033-f7167b881913.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/df9d8897-68fd-4bff-8d7a-4dfe6004ddc6.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/f159c7bc-7516-4c38-9725-b2530bcbad31.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/8844711d-59a0-49e3-b4ba-856843e5471d.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/4c5ecb6e-bf1a-44b9-af95-4f9aadaf865a.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/70137722-4da7-439d-9400-20d1e0ab4ec2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/caf02c46-d541-41b0-8d39-971044a9220b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/237c4333-b07f-401e-9e93-c31c9a2ebf41.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/8844711d-59a0-49e3-b4ba-856843e5471d.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/4c5ecb6e-bf1a-44b9-af95-4f9aadaf865a.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/70137722-4da7-439d-9400-20d1e0ab4ec2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/caf02c46-d541-41b0-8d39-971044a9220b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/237c4333-b07f-401e-9e93-c31c9a2ebf41.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/8844711d-59a0-49e3-b4ba-856843e5471d.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/4c5ecb6e-bf1a-44b9-af95-4f9aadaf865a.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/70137722-4da7-439d-9400-20d1e0ab4ec2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/caf02c46-d541-41b0-8d39-971044a9220b.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/237c4333-b07f-401e-9e93-c31c9a2ebf41.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/edb02417-3cbc-499a-9d10-c471e6656096.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/a7941409-fef6-44b8-acbf-09273776e3d0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/287aeaf6-6323-4958-b5dc-d0f250ee51e8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/8c468fc7-f7b8-4b30-aef5-2fcc49410ce8.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/5bee16d1-593d-4113-9fc8-0480cf30581b.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/edb02417-3cbc-499a-9d10-c471e6656096.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/a7941409-fef6-44b8-acbf-09273776e3d0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/287aeaf6-6323-4958-b5dc-d0f250ee51e8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/8c468fc7-f7b8-4b30-aef5-2fcc49410ce8.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/5bee16d1-593d-4113-9fc8-0480cf30581b.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/edb02417-3cbc-499a-9d10-c471e6656096.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/a7941409-fef6-44b8-acbf-09273776e3d0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/287aeaf6-6323-4958-b5dc-d0f250ee51e8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/8c468fc7-f7b8-4b30-aef5-2fcc49410ce8.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/5bee16d1-593d-4113-9fc8-0480cf30581b.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/edb02417-3cbc-499a-9d10-c471e6656096.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/a7941409-fef6-44b8-acbf-09273776e3d0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/287aeaf6-6323-4958-b5dc-d0f250ee51e8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/8c468fc7-f7b8-4b30-aef5-2fcc49410ce8.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/5bee16d1-593d-4113-9fc8-0480cf30581b.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: 'Gochi Hand';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/f6251a66-f7d1-4ab6-9b9a-e6b8825740fb.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/e8d3d926-96cc-4615-9690-e282b730fdfa.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/3025f7ff-483a-42d4-ad26-c66761cd6338.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/a6faca0c-09b6-4635-838b-3866bf4f853b.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/942c0f36-7845-4b88-b86f-a8b8cb5a0da2.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/99adff89-67df-46ea-bcf0-1da3f92e1121.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/e8d3d926-96cc-4615-9690-e282b730fdfa.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/3025f7ff-483a-42d4-ad26-c66761cd6338.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/a6faca0c-09b6-4635-838b-3866bf4f853b.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/942c0f36-7845-4b88-b86f-a8b8cb5a0da2.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/99adff89-67df-46ea-bcf0-1da3f92e1121.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("fonts/64366c06-ea99-4141-a225-5fe48dfb8978.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("fonts/2d3d7993-6295-4a24-a0de-51ce978233cf.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("fonts/3d35f7bf-2a46-44a8-ba94-62d8560b2004.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("fonts/ad625aa0-a12b-4fe2-a506-9b9a24b9fd6a.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("fonts/87c53472-55dc-4601-b0ae-2c217170e1e4.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/64366c06-ea99-4141-a225-5fe48dfb8978.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/2d3d7993-6295-4a24-a0de-51ce978233cf.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/3d35f7bf-2a46-44a8-ba94-62d8560b2004.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/ad625aa0-a12b-4fe2-a506-9b9a24b9fd6a.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/87c53472-55dc-4601-b0ae-2c217170e1e4.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/64366c06-ea99-4141-a225-5fe48dfb8978.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/2d3d7993-6295-4a24-a0de-51ce978233cf.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/3d35f7bf-2a46-44a8-ba94-62d8560b2004.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/ad625aa0-a12b-4fe2-a506-9b9a24b9fd6a.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/87c53472-55dc-4601-b0ae-2c217170e1e4.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/64366c06-ea99-4141-a225-5fe48dfb8978.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/2d3d7993-6295-4a24-a0de-51ce978233cf.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/3d35f7bf-2a46-44a8-ba94-62d8560b2004.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/ad625aa0-a12b-4fe2-a506-9b9a24b9fd6a.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/87c53472-55dc-4601-b0ae-2c217170e1e4.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/64366c06-ea99-4141-a225-5fe48dfb8978.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/2d3d7993-6295-4a24-a0de-51ce978233cf.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/3d35f7bf-2a46-44a8-ba94-62d8560b2004.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/ad625aa0-a12b-4fe2-a506-9b9a24b9fd6a.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/87c53472-55dc-4601-b0ae-2c217170e1e4.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/64366c06-ea99-4141-a225-5fe48dfb8978.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/2d3d7993-6295-4a24-a0de-51ce978233cf.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/3d35f7bf-2a46-44a8-ba94-62d8560b2004.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/ad625aa0-a12b-4fe2-a506-9b9a24b9fd6a.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Mulish';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/87c53472-55dc-4601-b0ae-2c217170e1e4.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/9090ff39-829c-4ca0-8fd2-93eb42e54734.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/8f15af0c-5169-41da-8240-9f4b9f2eedca.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/c09cbe6a-571e-4c74-b30a-91728cab70c2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/5f6a3bca-c7d3-4ce7-8f7c-4ad0834a3264.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/231108ee-9c1a-4c1d-944a-a840e147028c.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/9090ff39-829c-4ca0-8fd2-93eb42e54734.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/8f15af0c-5169-41da-8240-9f4b9f2eedca.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/c09cbe6a-571e-4c74-b30a-91728cab70c2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/5f6a3bca-c7d3-4ce7-8f7c-4ad0834a3264.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/231108ee-9c1a-4c1d-944a-a840e147028c.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/007a212e-75ef-49fa-89f9-617db93bc428.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/3e1b9f9d-8c20-4218-8f7b-7d6edf77c0c0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/b622fc34-0f5a-4718-bb5b-57f63456c060.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/5687db82-7ad2-48dd-9220-dfc66d3a8a79.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/bb79df02-1707-4ef8-8624-089c4fb2c362.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/007a212e-75ef-49fa-89f9-617db93bc428.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/3e1b9f9d-8c20-4218-8f7b-7d6edf77c0c0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/b622fc34-0f5a-4718-bb5b-57f63456c060.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/5687db82-7ad2-48dd-9220-dfc66d3a8a79.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/bb79df02-1707-4ef8-8624-089c4fb2c362.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/007a212e-75ef-49fa-89f9-617db93bc428.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/3e1b9f9d-8c20-4218-8f7b-7d6edf77c0c0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/b622fc34-0f5a-4718-bb5b-57f63456c060.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/5687db82-7ad2-48dd-9220-dfc66d3a8a79.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("fonts/bb79df02-1707-4ef8-8624-089c4fb2c362.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/007a212e-75ef-49fa-89f9-617db93bc428.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/3e1b9f9d-8c20-4218-8f7b-7d6edf77c0c0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/b622fc34-0f5a-4718-bb5b-57f63456c060.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/5687db82-7ad2-48dd-9220-dfc66d3a8a79.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("fonts/bb79df02-1707-4ef8-8624-089c4fb2c362.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("fonts/007a212e-75ef-49fa-89f9-617db93bc428.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("fonts/3e1b9f9d-8c20-4218-8f7b-7d6edf77c0c0.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("fonts/b622fc34-0f5a-4718-bb5b-57f63456c060.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("fonts/5687db82-7ad2-48dd-9220-dfc66d3a8a79.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("fonts/bb79df02-1707-4ef8-8624-089c4fb2c362.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ============================================================
   casei · Color tokens
   A warm PASTEL scrapbook–wedding palette: aged cream paper,
   honey amber (after "Âmbar", the assistant), plus a pastel
   sticker-planner layer — blush, butter, mint & sky — outlined
   in a soft navy ink. Warmth of a keepsake, play of a planner.
   Base values first, semantic aliases below.
   ============================================================ */

:root {
  /* ---- Paper & ink (the scrapbook page) ---- */
  --paper-50:   #FEFBF5;   /* lightest cream — floated cards      */
  --paper-100:  #FBF7EF;   /* main page cream (softer, pastel)    */
  --paper-200:  #F4ECDD;   /* recessed / secondary surface        */
  --paper-300:  #E7D7BC;   /* kraft edge, dividers                */
  --kraft:      #D8BF98;   /* kraft-paper tan (tags, envelopes)   */
  --kraft-deep: #B99B6D;   /* kraft shadow line                   */

  --ink-900:    #33291F;   /* near-black warm brown — headings    */
  --ink-800:    color-mix(in srgb, var(--ink-900), var(--ink-700));
                           /* -> #3E3327 · derivado de --ink-900 + --ink-700 · T2a/CS-E10 */
  --ink-700:    #4A3D30;   /* body text                           */
  --ink-600:    color-mix(in srgb, var(--ink-700), var(--ink-500));
                           /* -> #5C4D3D · derivado de --ink-700 + --ink-500 · T2a/CS-E10 */
  --ink-500:    #6E5D4B;   /* muted / secondary text              */
  --ink-400:    #937F68;   /* captions, meta                      */
  --ink-300:    #B7A48A;   /* disabled, faint rules               */

  /* ---- Âmbar — the signature honey amber ---- */
  --amber-700:  #A45E12;   /* pressed / active                    */
  --amber-600:  #C67C1E;   /* hover                               */
  --amber-500:  #E0912E;   /* PRIMARY                             */
  --amber-400:  color-mix(in srgb, var(--amber-500), var(--amber-300));
                           /* -> #E9AC53 · derivado de --amber-500 + --amber-300 · T2a/CS-E10 */
  --amber-300:  #F2C878;   /* highlight, tape                     */
  --amber-100:  #FAE7C2;   /* tint fill                           */
  --amber-050:  #FDF4E1;   /* faintest wash                       */

  /* ---- Eucalyptus / sage (botanical) ---- */
  --sage-700:   #55654A;
  --sage-600:   #6E7F60;
  --sage-500:   #8A9A7B;   /* SECONDARY                           */
  --sage-300:   #B9C6A9;
  --sage-100:   #DEE6D2;
  --sage-050:   #EFF3E8;

  /* ---- Dusty blush / rosé (romance) ---- */
  --blush-700:  #A9553F;
  --blush-600:  #C4715A;
  --blush-500:  #DB9A88;   /* ACCENT                              */
  --blush-300:  #EEC3B6;
  --blush-100:  #F7E1DA;
  --blush-050:  #FCF0EB;

  /* ---- Extended botanical accents ---- */
  --terracotta: #C36B4A;   /* sealing-wax / stamps                */
  --plum:       #7A5468;   /* pressed-flower deep note            */
  --plum-300:   #B193B4;   /* T2/CS-E10 · sticker fill (runtime)  */
  --plum-100:   #E4D3DC;   /* T2/CS-E10 · tint wash (runtime)     */
  --slate-blue: #6E8299;   /* ribbon / info                       */
  --slate-blue-100: #DFE7EE; /* T2/CS-E10 · lastro de --info-tint */
  --gold-leaf:  #C9A24B;   /* foil detail                         */

  /* ---- Folha metalica — a escala do chip de TIER (curadoria) ----
     Nascem em 2026-08-25 (fix/main-vermelha) com os valores que JA
     estavam no ar: o chip de tier entrou em 24/08 (commit 13e6c8b,
     PR #39) com os cinco hex escritos a mao dentro de escolher_views.js
     — hex cru numa superficie do escopo, exatamente o que o gate r8
     (tests/test_design_gate.py) existe para impedir. A correcao move o
     valor para a FONTE; nao muda pixel nenhum (§10.1 item 1: token
     nasce + linha no §11; NAO e o item 3, que exigiria o Capitao,
     porque o casal continua vendo a mesma cor).
     Nomeados pelo que a cor E (primitivo), na forma de nome material
     que a paleta ja usa (--kraft / --kraft-deep / --terracotta /
     --gold-leaf). O papel esta na camada semantica (--tier-1..5).
     >>> Duas tensoes LAVRADAS, nao consertadas em silencio (sao decisao
     de produto — §10.1 item 3, do Capitao):
       1) --foil-brass (#C09A4C) fica a dE 5.06 de --gold-leaf (#C9A24B)
          — dois dourados quase gemeos sob dois nomes, o incomodo que o
          §5.3 nomeia ao recusar um --terracotta-700;
       2) --foil-stone (#96908B) e um cinza NEUTRO, e a paleta cravada
          nao tem cinza — o neutro dela e marrom morno (--ink-*). O
          parente mais proximo esta a dE 13.48 (--ink-400).
     Recortar a rampa sobre a paleta existente muda o que o casal ve:
     proposto no §5.4 do design_system.md, nao executado aqui.
     >>> 2026-08-25, MESMO DIA: foi executado. A rampa de tier saiu
     destes cinco por CONTRASTE (ver o bloco --tier-* abaixo) e hoje
     eles nao sao referenciados por ninguem. Ficam UM CICLO em
     observacao, nao porque o §9.1 tenha excecao para token morto, mas
     porque o Capitao disse "depois ajustamos": enquanto a rampa nova
     nao for confirmada, reverter tem de custar uma linha, nao uma
     arqueologia. Se a rampa clara for confirmada, os cinco MORREM pela
     regua do §9.1 (0 uso, 0 copia literal) e o §11 leva a linha. */
  --foil-gold:   #B08D3D;  /* ouro velho — sem referencia desde 25/08  */
  --foil-brass:  #C09A4C;  /* latao — sem referencia desde 25/08       */
  --foil-bronze: #8A7A5C;  /* bronze fosco — sem referencia desde 25/08*/
  --foil-pewter: #7A7266;  /* peltre — sem referencia desde 25/08      */
  --foil-stone:  #96908B;  /* pedra — sem referencia desde 25/08       */

  /* =========================================================
     PASTEL STICKER-PLANNER LAYER
     Soft candy fills for sticker bubbles, planner tabs, tags
     and doodles. Pair every fill with --sticker-outline.
     ========================================================= */

  /* ---- Butter (soft warm yellow) ---- */
  --butter-500: #EBC96B;   /* washi / highlight tape              */
  --butter-300: #F1DA9B;   /* sticker fill                        */
  --butter-100: #FBF0CF;   /* tint wash                           */

  /* ---- Mint (cool pastel green — cooler than sage) ---- */
  --mint-300:   #B7D8C2;   /* sticker fill                        */
  --mint-100:   #E0F0E5;   /* tint wash                           */

  /* ---- Sky (dusty pastel blue) ---- */
  --sky-300:    #AFCCDE;   /* sticker fill                        */
  --sky-100:    #E1EDF3;   /* tint wash                           */

  /* ---- Petal (soft candy blush — lighter than dusty blush-500) ---- */
  --petal-600:  #E39790;
  --petal-500:  #F0B3AD;
  --petal-300:  #F3C9C4;   /* sticker fill                        */
  --petal-100:  #FBE6E3;   /* tint wash                           */

  /* ---- Ink-blue (soft navy — the sticker outline & assertive ink) ---- */
  --navy-700:   #2E3E52;   /* PRIMARY sticker outline + strong ink*/
  --navy-500:   #47607A;   /* muted navy line                     */

  /* ---- Espresso — the calm primary (letterpress ink) ---- */
  --espresso-deep: #2A2017; /* pressed edge / active               */
  --espresso:      #47392C; /* PRIMARY button                      */
  --espresso-soft: #574636; /* hover                               */
  --espresso-edge: #241B13; /* 2px bottom seam                     */

  /* ---- Translucent washi tape ---- */
  --tape-amber: rgba(224,145,46,0.30);
  --tape-sage:  rgba(138,154,123,0.32);
  --tape-blush: rgba(219,154,136,0.34);
  --tape-plain: rgba(255,255,255,0.42);

  /* =========================================================
     Semantic aliases — reference these in components
     ========================================================= */

  /* Text */
  --text-strong:   var(--ink-900);
  --text-body:     var(--ink-700);
  --text-muted:    var(--ink-500);
  --text-caption:  var(--ink-400);
  --text-disabled: var(--ink-300);
  --text-on-amber: #FFFDF8;
  --text-on-sage:  #FBFCF7;
  --text-on-espresso: #FAF3E6;
  --text-on-brand:    var(--text-on-espresso); /* T2/CS-E10 · texto sobre fill primario */
  --text-link:     var(--amber-700);

  /* Surfaces */
  --surface-page:     var(--paper-100);
  --surface-card:     var(--paper-50);
  --surface-sunken:   var(--paper-200);
  --surface-kraft:    var(--kraft);
  --surface-overlay:  rgba(51,41,31,0.42);

  /* Brand — amber stays the warm accent; espresso carries primary actions */
  --brand:          var(--espresso);
  --brand-hover:    var(--espresso-soft);
  --brand-active:   var(--espresso-deep);
  --brand-tint:     var(--amber-100);
  --brand-wash:     var(--amber-050);
  --accent:         var(--amber-500);

  /* =========================================================
     Scrapbook sticker/planner semantics — reference these
     when building sticker bubbles, planner tabs and tags.
     ========================================================= */
  --sticker-outline:      var(--navy-700);  /* 2px hand-cut outline    */
  --sticker-outline-soft: var(--navy-500);
  --sticker-ink:          var(--navy-700);  /* assertive rounded ink   */
  --sticker-shadow:       rgba(46,62,82,0.16); /* hard drop for offset */

  --fill-butter:    var(--butter-300);
  --fill-mint:      var(--mint-300);
  --fill-sky:       var(--sky-300);
  --fill-petal:     var(--petal-300);
  --fill-amber:     var(--amber-300);

  /* Planner side-tabs — rotating category colors */
  --tab-1: var(--petal-300);
  --tab-2: var(--navy-700);
  --tab-3: var(--mint-300);
  --tab-4: var(--butter-300);
  --tab-5: var(--sky-300);

  /* Lines & borders */
  --border-hair:    var(--paper-300);
  --border-soft:    var(--kraft);
  --border-strong:  var(--ink-400);
  --border-ink:     var(--ink-700);

  /* Semantic status */
  --success:        var(--sage-600);
  --success-tint:   var(--sage-100);
  --warning:        var(--amber-600);
  --warning-tint:   var(--amber-100);
  --danger:         var(--blush-700);
  --danger-tint:    var(--blush-100);
  --info:           var(--slate-blue);
  --info-tint:      var(--slate-blue-100);

  /* =========================================================
     Estados de curadoria — aprovado / rejeitado / pendente (C3, T2/CS-E10)
     Substituem os hex cosmos #34D399 / #F87171 / #FB7C48, que alem de
     serem da identidade morta REPROVAM AA sobre papel (1.80 / 2.59 /
     2.43 : 1 contra --paper-100). Os tres degraus abaixo passam AA como
     TEXTO sobre --paper-100; o par -tint e o preenchimento do badge.

     >>> REPONTADO EM 2026-08-25 (decisao do Capitao). O -tint era o
     degrau -100, e o par valor-sobre-tint — que e a forma que o 5.3
     propoe para o badge — media 4.89 / 4.12 / 4.12 : 1. DOIS DOS TRES
     REPROVAVAM AA para texto pequeno. A tabela do 3.8 media so contra
     --paper-100 e por isso nao via o par.
     ANTES -> DEPOIS, medido (metodo WCAG 2.1 relative luminance):
       aprovado  sage-700 sobre sage-100  4.89 -> sobre sage-050  5.57 OK
       pendente  amber-700 sobre amber-100 4.12 -> sobre amber-050 4.59 OK
       rejeitado blush-700 sobre blush-100 4.12 -> sobre blush-050 4.63 OK
     Os TRES desceram, nao so os dois que reprovavam: o -050 deixa a
     familia no mesmo peso (L* 95.3 / 96.4 / 95.6), e repontar so dois
     abriria 6 pontos de L* entre o selo verde e os outros dois —
     inconsistencia que o olho le como "este e outro tipo de selo".
     ⚠️ CONSEQUENCIA QUE VEM JUNTO: a lavagem -050 quase nao se destaca
     do papel (1.02–1.05 : 1 contra --paper-100, ante 1.14–1.20 do -100).
     O badge PRECISA de borda na cor do status para continuar sendo um
     badge — e e o que as superficies vivas ja fazem. Esta regra e do
     5.3, nao um detalhe de implementacao.
     ========================================================= */
  --status-aprovado:       var(--sage-700);   /* #55654A · 5.87:1 no papel */
  --status-aprovado-tint:  var(--sage-050);   /* par mede 5.57:1 */
  --status-rejeitado:      var(--blush-700);  /* #A9553F · 4.84:1 no papel */
  --status-rejeitado-tint: var(--blush-050);  /* par mede 4.63:1 */
  --status-pendente:       var(--amber-700);  /* #A45E12 · 4.69:1 no papel */
  --status-pendente-tint:  var(--amber-050);  /* par mede 4.59:1 */

  /* =========================================================
     Tier de curadoria — o chip "T1..T5" no card do fornecedor
     (2026-08-25, fix/main-vermelha; o chip nasceu em 13e6c8b).
     O que a cor FAZ: gradua o julgamento do adm sobre o padrao do
     lugar, T5 (mais destacado) -> T1 (mais discreto). Aponta para
     primitivo, nunca para hex cru (§2.2 do design_system.md).
     >>> A RAMPA VIROU CLARA EM 2026-08-25, e o motivo e medicao.
     Ate aqui os cinco degraus eram os --foil-* (metal de meio-tom) com
     o rotulo em `white`: 3.12 / 2.64 / 4.18 / 4.74 / 3.15 : 1
     (T5/T4/T3/T2/T1) — QUATRO dos cinco reprovavam AA (11px bold e
     texto NORMAL, pede 4.5:1; so o T2 passava).
     Por que nao bastou trocar so o rotulo: nenhuma tinta resolve os
     cinco. Medido token a token, o melhor rotulo escuro do DS
     (--espresso-edge) da 5.42 / 6.42 / 4.04 / 3.57 / 5.36 — 3 de 5 — e
     o melhor rotulo claro da 1 de 5. Os fundos --foil-* estao na faixa
     de luminancia media, onde NEM preto NEM branco alcancam 4.5:1
     (contra --foil-pewter, preto puro mede 4.43).
     >>> CORRECAO DE 25/08 (revisao adversarial): a versao anterior
     deste comentario dizia que "o degrau discreto tem de ser mais
     CLARO — so nessa direcao os dois concordam". E FALSO e nao foi
     medido. Mantendo os --foil-* nao ha saida, isso vale; mas uma vez
     que o fundo se move, a direcao ESCURA tambem fecha 5 de 5 com
     token que ja existe (--amber-700 / --blush-700 / --espresso-soft /
     --ink-700 / --ink-900 = 4.93 / 5.09 / 8.85 / 10.32 / 13.98) e
     ainda passa nos 3:1 de BORDA DE COMPONENTE (WCAG 1.4.11), onde
     esta rampa clara mede 1.10 a 2.25 contra o creme da pagina — ou
     seja, o chip deixou de ser um selo. As duas opcoes estao medidas
     lado a lado no §5.4; a escolha e do Capitao e esta pendente.
     A rampa vigente desce em CROMA sobre
     tokens que ja existiam (49.8 -> 45.6 -> 23.2 -> 15.4 -> 8.2 de C*),
     com o rotulo em --text-strong: 5.92 / 9.01 / 8.00 / 10.05 / 12.11.
     CINCO de cinco passam AA. Nenhuma cor nova entrou; nenhum token
     nasceu. Autorizacao: o Capitao pediu a melhor opcao agora ("deixa
     a melhor opcao e depois ajustamos"), o que resolve o §10.1 item 3.
     ========================================================= */
  --tier-5: var(--gold-leaf);    /* #C9A24B — folha de ouro, o mais destacado */
  --tier-4: var(--amber-300);    /* #F2C878 — ambar de destaque / fita        */
  --tier-3: var(--kraft);        /* #D8BF98 — papel kraft (a etiqueta)        */
  --tier-2: var(--paper-300);    /* #E7D7BC — kraft palido                    */
  --tier-1: var(--paper-200);    /* #F4ECDD — creme rebaixado, o mais discreto*/

  /* Focus ring
     ⚠️ ELE ERA rgba(224,145,46,0.45) — o --amber-500 a 45% — e MEDIA 1.48:1
     sobre --surface-card, contra os 3:1 que a norma pede para componente de
     interface (§7 do design system). Medido pela A2 do portal-do-fornecedor-v2
     e remedido pela A13, que o trocou: o anel de foco e a UNICA marca visual de
     onde o teclado esta, e a 1.48:1 ele nao era visivel para quem depende dele.
     A causa era o ALFA, nao o matiz — composto sobre o creme, 45% de ambar da
     um bege claro (#F0CB9B sobre o card).
     A escolha e --amber-700 (#A45E12), opaco, e ela e por MEDICAO em SETE
     superficies, nao pelo nome: o anel nasce em cima do controle, e o controle
     pousa em fundos diferentes. --amber-600 (#C67C1E) passa no card (3.23) e na
     pagina (3.12) e REPROVA nas outras quatro — sunken 2.84, sage-050 2.96,
     blush-050 2.98, butter-100 2.93 —, que sao exatamente as pastilhas acesas e
     a superficie rebaixada. --amber-700 passa nas sete, com folga: 4.85 card /
     4.69 pagina / 4.27 sunken / 4.45 sage-050 / 4.49 blush-050 / 4.41
     butter-100 / 4.59 amber-050. Quem mede e test_design_gate.py, na lista
     _PARES_COMPONENTE_3A1; par novo entra la no mesmo commit. */
  --focus-ring:     var(--amber-700);
}

/* ============================================================
   casei · Typography tokens
   Display  = Cormorant Garamond (keepsake serif)
   Rounded  = Nunito (assertive sticker headlines)
   Hand     = Caveat (flowing script) · Doodle = Gochi Hand (marker)
   UI/Body  = Mulish (operational, always legible)
   ============================================================ */

:root {
  /* ---- Families ---- */
  --font-display: "Cormorant Garamond", "Georgia", serif;
  --font-rounded: "Nunito", -apple-system, "Segoe UI", sans-serif;
  --font-hand:    "Caveat", "Segoe Script", cursive;
  --font-doodle:  "Gochi Hand", "Comic Sans MS", cursive;
  --font-body:    "Mulish", -apple-system, "Segoe UI", sans-serif;

  /* ---- Weights ---- */
  --fw-medium:  500; /* @kind font */
  --fw-semi:    600; /* @kind font */
  --fw-bold:    700; /* @kind font */
  --fw-black:   800; /* @kind font */
  --fw-heavy:   900; /* @kind font */

  /* ---- Type scale (fluid-friendly, px) ---- */
  --fs-h1:      48px;
  --fs-h2:      36px;
  --fs-h3:      27px;
  --fs-h4:      21px;
  --fs-lg:      18px;
  --fs-body:    16px;
  --fs-sm:      14px;
  --fs-xs:      12.5px;
  --fs-hand:    23px;  /* handwritten captions      */
  --fs-hand-sm: 18px;  /* handwritten note INSIDE a card (hand = accent of the screen) */

  /* ---- Line heights ---- */
  --lh-tight:   1.08; /* @kind font */
  --lh-snug:    1.25; /* @kind font */
  --lh-normal:  1.5; /* @kind font */

  /* ---- Letter spacing ---- */
  --ls-tight:   -0.02em; /* @kind font */
  --ls-wide:    0.04em; /* @kind font */
  --ls-caps:    0.16em; /* @kind font */

  /* ---- Semantic roles ---- */
  --title-display-family: var(--font-display);
  --title-display-weight: var(--fw-semi);
  --title-rounded-family: var(--font-rounded); /* sticker headlines */
  --title-rounded-weight: var(--fw-heavy);
  --eyebrow-family:       var(--font-body);
  --eyebrow-transform:    uppercase; /* @kind other */
  --eyebrow-spacing:      var(--ls-caps);
  --caption-family:       var(--font-hand);
  --doodle-family:        var(--font-doodle); /* labels, arrows, stamps */
}

/* ============================================================
   casei · Spacing, radii & layout tokens
   Base unit = 4px. Scrapbook layouts breathe — generous gaps.
   ============================================================ */

:root {
  /* ---- Spacing scale (4px base) ---- */
  --space-1:   4px;
  --space-2:   8px;
  --space-3:   12px;
  --space-4:   16px;
  --space-5:   20px;
  --space-6:   24px;
  --space-8:   32px;
  --space-10:  40px;
  --space-12:  48px;
  --space-16:  64px;
  --space-20:  80px;
  --space-24:  96px;

  /* ---- Radii — soft, slightly irregular (torn/cut paper) ---- */
  --radius-xs:  4px;
  --radius-sm:  7px;
  --radius-md:  11px;
  --radius-lg:  16px;
  --radius-xl:  22px;
  --radius-pill: 999px;
  /* organic hand-cut corners — use on photo/note cards */
  --radius-deckle: 14px 10px 15px 9px;

  /* ---- Container widths ---- */
  --container-sm:  560px;
  --container-md:  760px;
  --container-lg:  1040px;
  --container-xl:  1280px;

  /* ---- Control sizing ---- */
  --control-h-sm:  34px;
  --control-h-md:  42px;
  --control-h-lg:  52px;
  --tap-min:       44px;   /* minimum hit target */

  /* ---- Playful rotations (scrapbook tilt) ---- */
  --tilt-sm:  -1.4deg; /* @kind other */
  --tilt-md:   2.2deg; /* @kind other */
  --tilt-lg:  -3deg; /* @kind other */

  /* ---- Z-index ---- */
  --z-raised:  10; /* @kind other */
  --z-sticky:  100; /* @kind other */
  --z-overlay: 1000; /* @kind other */
  --z-toast:   1100; /* @kind other */
}

/* ============================================================
   casei · Effects — shadows, paper texture, tape, borders
   The tactile layer of the scrapbook.
   ============================================================ */

:root {
  /* ---- Shadows (warm brown, never neutral gray) ---- */
  --shadow-xs:   0 1px 2px rgba(74,61,48,0.10);
  --shadow-sm:   0 2px 6px rgba(74,61,48,0.12);
  --shadow-md:   0 6px 16px rgba(74,61,48,0.14);
  --shadow-lg:   0 14px 34px rgba(74,61,48,0.18);
  --shadow-xl:   0 26px 60px rgba(51,41,31,0.22);

  /* Photo / polaroid lift — a raised paper corner */
  --shadow-photo: 0 10px 22px rgba(51,41,31,0.20), 0 2px 4px rgba(51,41,31,0.12);
  /* Pressed-into-page inner shade for sunken fields */
  --shadow-inset: inset 0 1px 3px rgba(74,61,48,0.14);

  /* Sticker lift — hard offset drop (die-cut sticker on the page) */
  --shadow-sticker:    3px 4px 0 var(--sticker-shadow);
  --shadow-sticker-lg: 5px 6px 0 var(--sticker-shadow);
  /* Pressed sticker button — solid navy seam under the fill */

  /* ---- Focus ---- */
  --ring: 0 0 0 3px var(--focus-ring);

  /* ---- Paper grain (subtle fibrous noise, tiled SVG) ---- */
  --paper-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E"); /* @kind other */

  /* Full page background: cream + grain */
  --bg-page: var(--paper-grain), var(--surface-page);

  /* ---- Dot-grid planner paper (bullet-journal dots) ---- */
  --dot-grid: radial-gradient(var(--kraft-deep) 1.1px, transparent 1.1px); /* @kind other */
  --dot-grid-size: 22px 22px; /* @kind other */
  /* Ledger grid (graph-paper windows, ref: retro desktop) */

  /* ---- Torn / deckle paper edge (mask a top or bottom edge) ---- */

  /* ---- Dashed "stitched" border (thread) ---- */
  --stitch: 2px dashed var(--kraft-deep);
  --stitch-sage: 2px dashed var(--sage-500);

  /* ---- Sticker outline (hand-cut die-cut border) ---- */
  --outline-sticker: 2px solid var(--sticker-outline);
  --radius-sticker: 14px; /* @kind radius */

  /* ---- Transitions ---- */
  --ease-out:   cubic-bezier(0.22, 0.61, 0.36, 1); /* @kind other */
  --ease-soft:  cubic-bezier(0.4, 0.0, 0.2, 1); /* @kind other */
  --ease-back:  cubic-bezier(0.34, 1.56, 0.64, 1); /* @kind other */
  /* movimento NA tela (uma coisa atravessando de um ponto a outro), que os três
     acima não cobrem: `out` é para o que entra ou sai, `back` tem overshoot.
     Regra: entrada/saída → ease-out · atravessar → ease-in-out. */
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1); /* @kind other */
  --dur-fast:   120ms; /* @kind other */
  --dur-base:   200ms; /* @kind other */
  --dur-slow:   340ms; /* @kind other */
  /* O QUARTO DEGRAU (2026-09-06, onda 2 · agente C). Ele existe para UM caso, e
     é o oposto do resto da escala: o movimento que a pessoa precisa VER
     acontecer, não sentir. A reordenação da mesa é isso — o casal vota num
     critério e os outros cards ultrapassam o card aberto; a 340ms a lista
     parece ter piscado para outra ordem, e a informação (quem passou quem) se
     perde. A 560ms dá para acompanhar a subida com o olho.
     ⚠️ NÃO É O DEGRAU PADRÃO DE NADA. Quem quiser "um pouco mais lento" usa
     --dur-slow; este aqui só se justifica quando a travessia É a mensagem, e a
     curva que o acompanha é --ease-in-out (atravessar), nunca --ease-out. */
  --dur-slowest: 560ms; /* @kind other */
  /* Transições com rumo (2026-09-03): o deslocamento com que o conteúdo ENTRA,
     escrito pelo elemento que anima (rumo × 48px, no sentido da ordem do menu).
     Este é o padrão — 0 = sem rumo, só o fade; o keyframe `viewRumo` (casei-
     extra.js) lê `var(--rumo-x)`. */
  --rumo-x: 0px; /* @kind other */
}

/* ============================================================
   casei · Base — element defaults built on the tokens.
   Kept minimal; components own their look.
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
  color: var(--text-body);
  background-image: var(--bg-page);
  background-color: var(--surface-page);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: var(--fw-semi);
  color: var(--text-strong);
  line-height: var(--lh-tight);
  margin: 0 0 0.4em;
  letter-spacing: var(--ls-tight);
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); font-weight: var(--fw-semi); letter-spacing: 0; }

p { margin: 0 0 1em; text-wrap: pretty; }

a { color: var(--text-link); text-decoration-color: var(--amber-300); text-underline-offset: 2px; }
/* ⚠️ O HOVER ERA --amber-600 e MEDIA 3.12 : 1 sobre --paper-100 (3.23 sobre
   --paper-50, o card) — abaixo de AA para texto pequeno. O link em repouso
   passa (--text-link = --amber-700, 4.69 : 1) e PIORAVA ao ser apontado: o
   estado de destaque era o unico ilegivel.
   E a MESMA classe do par --status-*/-tint repontado acima — a regua do 3.8
   mede contra UM fundo e o estado real vive sobre OUTRO. Repontado em
   2026-08-25 junto com ela, por decisao do Capitao.
   O hover deixa de mudar a cor (ela ja e a mais escura da familia) e passa a
   marcar pelo SUBLINHADO na cor cheia: o feedback continua existindo sem que
   o texto perca contraste. Cor nunca sozinha — principio 5. */
a:hover { color: var(--amber-700); text-decoration-color: var(--amber-700); }

small { font-size: var(--fs-sm); }

::selection { background: var(--amber-100); color: var(--ink-900); }

/* Eyebrow / kicker label */
.casei-eyebrow {
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  letter-spacing: var(--ls-caps);
  color: var(--amber-700);
}

/* Handwritten caption helper */
.casei-hand {
  font-family: var(--font-hand);
  font-size: var(--fs-hand);
  color: var(--ink-500);
  line-height: 1.2;
}


/* ═══════════ s09/R19 · caderno da Âmbar (ficha 1a) — animações fx-* ═══════════
   Keyframes COPIADOS do canvas do Claude Design (docs/design/claude design/
   Redesign caderno de noivos/Ficha do casal - Direções.dc.html). Regras de uso:
   · estado BASE = estado FINAL — a classe fx-* só é aplicada no campo que MUDOU
     (resposta nova na conversa); com animação desligada o conteúdo aparece pronto;
   · sem replay em cascata (o replay do mock era demonstração);
   · durações 120–900ms, easing --ease-out, sempre `both`. */
@keyframes fx-escrever { from { clip-path: inset(-35% 103% -35% -3%); } to { clip-path: inset(-35% -5% -35% -3%); } }
@keyframes fx-apagar { 0% { opacity: 1; } 55% { opacity: .35; filter: blur(.7px); } 100% { opacity: 0; filter: blur(1.4px); } }
@keyframes fx-desenhar { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
@keyframes fx-pop { 0% { transform: scale(.55); opacity: 0; } 70% { transform: scale(1.07); opacity: 1; } 100% { transform: none; opacity: 1; } }
@keyframes fx-surgir { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
@keyframes fx-marcar { from { background-size: 0% 72%; } to { background-size: 100% 72%; } }

/* utilitárias — o componente aplica a classe SÓ no gatilho real (campo mudou /
   apagar-e-perguntar); [data-fx="apagar"] espelha o atributo que o canvas usa */
.fx-escrever { animation: fx-escrever .55s var(--ease-out) both; }
.fx-apagar, [data-fx="apagar"] { animation: fx-apagar .5s var(--ease-out) both !important; }
.fx-desenhar { stroke-dasharray: 1; stroke-dashoffset: 1; animation: fx-desenhar .6s var(--ease-out) both; }
.fx-pop { animation: fx-pop .4s var(--ease-out) both; }
.fx-surgir { animation: fx-surgir .35s var(--ease-out) both; }
.fx-marcar { background-repeat: no-repeat; background-position: 0 68%; animation: fx-marcar .5s var(--ease-out) both; }

/* lápis que aparece no hover/focus da linha (padrão data-hl/data-lapis do canvas) */
[data-hl] [data-lapis] { opacity: 0; transition: opacity .15s var(--ease-out); }
[data-hl]:hover [data-lapis], [data-hl]:focus-within [data-lapis] { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .fx-escrever, .fx-apagar, [data-fx="apagar"], .fx-desenhar, .fx-pop, .fx-surgir, .fx-marcar {
    animation-duration: .001s !important;
  }
  /* ⚠️ **E O MOVIMENTO TODO, pela FONTE** (CS-E17/T4, revisão adversarial
     item 4). A linha acima protege sete classes NOMEADAS — e por isso não
     protegia nada escrito depois dela: a lente `orçar` anima com
     `animation: cxSurgir var(--dur-fast) …` em estilo inline, e o pedido de
     "menos movimento" do sistema operacional passava direto. Lista de classes
     é o mecanismo que envelhece; zerar os TOKENS de duração alcança toda
     transição e toda animação que os usa, inclusive as que ainda não existem.
     `.001s` (e não `0`) de propósito: `animationend`/`transitionend` continuam
     disparando, então quem espera o fim da animação para trocar de estado não
     trava. Quem precisa de movimento mesmo assim (nada hoje) tem de escrever a
     duração à mão — e aí é uma decisão visível no diff. */
  :root {
    --dur-fast: .001s;
    --dur-base: .001s;
    --dur-slow: .001s;
    /* o quarto degrau cede junto — e ele é o que MAIS precisa ceder, porque é
       o único longo o bastante para incomodar quem pediu menos movimento. */
    --dur-slowest: .001s;
  }
}

/* ═══════════ s10/ENG-25 · orelha de papel (CadernoMin dobrado) ═══════════
   A ficha minimizada virou um canto de página DOBRADO no topo-direito da tela
   (a barra vertical morreu). Anatomia:
   · .cx-orelha (wrapper) segura o drop-shadow — clip-path no próprio elemento
     cortaria um box-shadow junto com a caixa;
   · .cx-orelha-face (o botão) é o triângulo: clip-path também define o
     HIT-TEST (a metade transparente do quadrado não captura clique);
   · o vinco é o lado escuro do gradiente 45deg (da dobra pro canto);
   · hover/focus LEVANTAM a dobra (scale com origem no canto superior-direito);
   · cx-orelha-dobra anima a dobra "fechando" no mount. */
@keyframes cx-orelha-dobra {
  from { transform: scale(.45); opacity: 0; }
  to   { transform: none; opacity: 1; }
}
.cx-orelha { filter: drop-shadow(-3px 4px 4px rgba(74, 61, 48, 0.26)); }
.cx-orelha:hover { filter: drop-shadow(-5px 7px 7px rgba(74, 61, 48, 0.32)); }
.cx-orelha-face {
  clip-path: polygon(0 0, 100% 0, 100% 100%);
  /* eixo 45deg: a DIAGONAL do clip (o vinco) cai na posição 50% do gradiente —
     o triângulo visível vive de 50% (vinco escuro) a 100% (canto, papel);
     0–50% é a metade clipada (escura de propósito: o anti-alias da hipotenusa
     puxa dela e desenha a linha do vinco) */
  background: linear-gradient(45deg,
    rgba(74, 61, 48, 0.30) 0%, rgba(74, 61, 48, 0.30) 50%,
    rgba(74, 61, 48, 0.10) 57%, var(--paper-100) 65%,
    var(--paper-50) 88%, var(--paper-100) 100%);
  border: none;
  border-top: 1px solid var(--border-hair);
  border-right: 1px solid var(--border-hair);
  padding: 0;
  cursor: pointer;
  transform-origin: 100% 0;
  /* fill BACKWARDS (não both): fill forward reteria o transform:none do
     keyframe pra sempre e engoliria o scale do hover */
  animation: cx-orelha-dobra .38s var(--ease-out) backwards;
  transition: transform .18s var(--ease-out);
}
.cx-orelha:hover .cx-orelha-face,
.cx-orelha-face:focus-visible { transform: scale(1.07); }
.cx-orelha-face:focus-visible { outline: 2px solid var(--amber-500); outline-offset: -3px; }
@media (prefers-reduced-motion: reduce) {
  .cx-orelha-face { animation-duration: .001s !important; transition-duration: .001s !important; }
}

/* ═══════════ tema 3 · Sol, Lua e Confete (decisões de design 2026-09) ═══════════
   O céu das duas cenas da aba estilo (CeuCena em perfil_casal_views.js). Tudo
   que se move é transform/opacity; a cor do sol é transição de fill. A posição
   dos astros vem do JS (posAstro) — aqui só a viagem entre uma hora e outra:
   --dur-base no caminho (o mesmo tempo da barra: pino e sol chegam juntos) e
   --dur-slow na cor e no lavado do céu. As estrelas piscam só à noite (--o é a
   dose de noite que o componente escreve). O casal balança --voltas vezes a
   partir dos pés (origem 60,66 no viewBox 120×96) e para — nunca em loop
   (rodada 6, o Capitão: 9 voltas ao soltar, 3 no arrasto; o JS escreve --voltas). */
.ceu .astro { transition: transform var(--dur-base) var(--ease-out), opacity var(--dur-slow) var(--ease-out); will-change: transform; }
.ceu .sol-disco { transition: fill var(--dur-slow) var(--ease-out); }
.ceu .raios, .ceu .wash { transition: opacity var(--dur-slow) var(--ease-out); }
.ceu .estrela { animation: piscar 2.4s ease-in-out infinite; }
.ceu .estrela:nth-child(2) { animation-delay: .7s; }
.ceu .estrela:nth-child(3) { animation-delay: 1.3s; }
@keyframes piscar { 0%, 100% { opacity: var(--o, 0); } 50% { opacity: calc(var(--o, 0) * .35); } }
.ceu .casal { transform-box: view-box; transform-origin: 60px 66px; }
.ceu[data-cena="danca"] .casal.dancando { animation: balanco 1.1s var(--ease-in-out) var(--voltas, 9); }
@keyframes balanco {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(-2.5deg) translateY(-1px); }
  75% { transform: rotate(2.5deg) translateY(-1px); }
}
/* reduzir movimento: fica o estado final, some o caminho — estrelas não piscam,
   o casal não balança; confete e notas (WAAPI, no JS) aparecem pousados e somem
   por opacidade. */
@media (prefers-reduced-motion: reduce) {
  .ceu .astro, .ceu .wash, .ceu .raios, .ceu .sol-disco { transition-duration: .001s !important; }
  .ceu .estrela { animation: none; opacity: var(--o, 0); }
  .ceu .casal.dancando { animation: none; }
}

/* ── CAMPO VAZIO PARECE VAZIO (esp. CS-E20 §5.9, Capitão 22/09) ─────────────
   Todo placeholder da casa sai na tinta de instrução do design system
   (`--text-muted` = `--ink-500`, 6,1:1 sobre o papel — passa o 4,5:1 de texto)
   e em peso regular, nunca no peso do valor: um campo com «ex.: 180» não pode
   ser confundido com um campo que diz 180. `opacity: 1` porque o Firefox
   esmaece o placeholder por conta própria e a tinta já é a medida. */
::placeholder { color: var(--text-muted); opacity: 1; font-weight: normal; }
