@aurea-uds/core 0.42.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aurea.css +141 -33
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -797,6 +797,13 @@ img,svg { display:block; }
|
|
|
797
797
|
.topbar-tabs { flex-basis:100%; display:flex; align-items:flex-end; gap:var(--space-1); min-block-size:var(--space-10);
|
|
798
798
|
overflow-x:auto; overflow-y:hidden; }
|
|
799
799
|
@media (min-width:768px) { .topbar-tabs { gap:var(--space-3); } }
|
|
800
|
+
/* A PONTA DA LINHA DAS ÁREAS (`Header tabsEnd`, bloco 1 — 23/10/2026): a chave Web | Native da documentação da
|
|
801
|
+
referência, do lado oposto das áreas e no meio da altura da linha. As áreas continuam rolando de lado quando não cabem;
|
|
802
|
+
a ponta não encolhe. Abaixo de 768 ela some, como lá. */
|
|
803
|
+
.topbar-tabs-row { flex-basis:100%; display:flex; align-items:center; gap:var(--space-4); min-inline-size:0; }
|
|
804
|
+
.topbar-tabs-row > .topbar-tabs { flex:1 1 auto; min-inline-size:0; }
|
|
805
|
+
.topbar-tabs-end { flex:none; }
|
|
806
|
+
@media (max-width:767px) { .topbar-tabs-end { display:none; } }
|
|
800
807
|
.topbar-tab { position:relative; flex-shrink:0; display:inline-flex; align-items:center; gap:var(--space-2);
|
|
801
808
|
padding:0 var(--space-1) calc(var(--space-2) + var(--focus-width)); color:var(--muted-foreground); font-size:var(--text-sm);
|
|
802
809
|
font-weight:var(--weight-medium); white-space:nowrap; text-decoration:none; }
|
|
@@ -1119,7 +1126,12 @@ img,svg { display:block; }
|
|
|
1119
1126
|
.sidebar-list { display:flex; flex-direction:column; gap:var(--space-1); margin:0; padding:0; list-style:none; }
|
|
1120
1127
|
/* `width:100%` + `font:inherit` + `border:0`: o item também é <button> quando não navega, e
|
|
1121
1128
|
sem isto o botão vem com a caixa do navegador e quebra a fila. */
|
|
1122
|
-
|
|
1129
|
+
/* 2-A (o item 102, 25/10/2026): o texto do item começa a `--sidebar-item-x` da borda dele, e o fio do item escolhido começa
|
|
1130
|
+
no mesmo ponto. Era 12 o texto e 15 o fio (um número cru): o Victor viu que não começavam juntos. Com 16 (`--space-4`) os
|
|
1131
|
+
dois começam onde a curva da cápsula já acabou (a 16 da borda o fundo fica 0,11 px acima da base) — a 12 o fio sairia da
|
|
1132
|
+
curva. O título do grupo, a marca e o título do painel seguem o mesmo recuo, para a coluna continuar uma só. */
|
|
1133
|
+
.sidebar { --sidebar-item-x:var(--space-4); }
|
|
1134
|
+
.sidebar-item { display:flex; align-items:center; gap:var(--space-2); width:100%; min-height:var(--control-h-md); padding:var(--space-1) var(--sidebar-item-x, var(--space-3)); border:0; border-radius:calc(var(--radius-card) - var(--space-1)); background:transparent; color:var(--sidebar-foreground); font:inherit; font-size:var(--text-sm); text-align:start; text-decoration:none; cursor:pointer; }
|
|
1123
1135
|
.sidebar-item .icon { flex:none; opacity:.8; }
|
|
1124
1136
|
/* min-width:0 é o que deixa o ellipsis funcionar dentro do flex; sem ele o nome longo empurra
|
|
1125
1137
|
o acessório para fora da caixa em vez de cortar. */
|
|
@@ -1162,7 +1174,7 @@ img,svg { display:block; }
|
|
|
1162
1174
|
/* O título de grupo da lateral é o da referência (ADR-0067, decisão do Victor de 13/10/2026: "igual ao dela"):
|
|
1163
1175
|
letra 14, peso médio, SEM maiúsculas, na cor do texto da lateral — mais forte que o item, que é
|
|
1164
1176
|
esmaecido; 16 antes do grupo. Era 12, em maiúsculas espaçadas, esmaecido. */
|
|
1165
|
-
.sidebar-group-label { margin:var(--space-4) var(--space-3) var(--space-1); color:var(--sidebar-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
1177
|
+
.sidebar-group-label { margin:var(--space-4) var(--sidebar-item-x, var(--space-3)) var(--space-1); color:var(--sidebar-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
1166
1178
|
.sidebar-sub { padding-inline-start:var(--space-5); }
|
|
1167
1179
|
/* RECOLHIDA — a lateral vira trilho de ícones. O rótulo NÃO some do DOM: o React troca a
|
|
1168
1180
|
classe dele por `.sr-only`, então quem usa leitor de tela continua ouvindo o nome. Ícone
|
|
@@ -1188,7 +1200,7 @@ img,svg { display:block; }
|
|
|
1188
1200
|
.sidebar-body { flex:1 1 auto; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:var(--space-1); }
|
|
1189
1201
|
.sidebar-footer { gap:var(--space-3); padding-block-start:var(--space-3); }
|
|
1190
1202
|
/* A marca do app: o quadrinho na cor primária, com a letra na fonte de título, o nome e o subtítulo. */
|
|
1191
|
-
.sidebar-brand { display:flex; align-items:center; gap:var(--space-3); min-width:0; padding:var(--space-2) var(--space-3); }
|
|
1203
|
+
.sidebar-brand { display:flex; align-items:center; gap:var(--space-3); min-width:0; padding:var(--space-2) var(--sidebar-item-x, var(--space-3)); }
|
|
1192
1204
|
.sidebar-brand-logo { display:grid; place-items:center; flex:none; inline-size:var(--control-h-md); block-size:var(--control-h-md); overflow:hidden; border-radius:var(--radius-lg); background:var(--primary); color:var(--primary-foreground); font-family:var(--font-heading); font-weight:var(--weight-bold); }
|
|
1193
1205
|
/* `plain` (da 8 à 10 das quinze): o desenho solto, sem o quadrinho, e o nome na fonte e no tamanho de título. */
|
|
1194
1206
|
.sidebar-brand-plain { gap:var(--space-2); }
|
|
@@ -1202,7 +1214,68 @@ img,svg { display:block; }
|
|
|
1202
1214
|
/* Recolhida: a marca vira só o quadrinho, e a pessoa, a foto e a ação empilhadas, sem a caixinha. Os nomes vão para o
|
|
1203
1215
|
leitor de tela (o React troca a classe por `.sr-only`, como o rótulo do item). */
|
|
1204
1216
|
.sidebar-collapsed .sidebar-brand { justify-content:center; padding-inline:0; }
|
|
1217
|
+
/* A marca com a ação (0.44.0): o botão de recolher ao lado do nome; recolhida, ele desce para baixo do logo. */
|
|
1218
|
+
.sidebar-collapsed .sidebar-brand-with-action { flex-direction:column; gap:var(--space-2); }
|
|
1205
1219
|
.sidebar-collapsed .sidebar-user { flex-direction:column; padding-inline:0; background:transparent; }
|
|
1220
|
+
/* O BLOCO 2 DA LATERAL (25/10/2026) — o que faltava das quinze laterais que o Victor aprovou em 21/10/2026 (item 107), como
|
|
1221
|
+
variação: o padrão de hoje não muda. A referência principal não tem lateral; a anatomia e o comportamento são os da
|
|
1222
|
+
segunda da fila (o provedor, o atalho, os jeitos de recolher, a ação do grupo e do item), com a aparência da Aurea.
|
|
1223
|
+
4-E — a foto do item (o time, a pessoa) no lugar do ícone: 24, o degrau que cabe na linha de 36 com folga. */
|
|
1224
|
+
.sidebar-item > .sidebar-avatar { --step-avatar:var(--space-6); --step-avatar-fs:var(--text-xs); flex:none; }
|
|
1225
|
+
/* 4-E — a divisória entre seções: um vão, sem linha (ADR-0072). Ela parte a lista em duas; o vão soma 16 aos 4 de sempre. */
|
|
1226
|
+
.sidebar-separator { flex:none; block-size:var(--space-4); }
|
|
1227
|
+
/* 4-D — a ação do item ("⋯"): fora do link, presa à ponta da linha, no meio da altura dela. O texto do item para antes dela. */
|
|
1228
|
+
.sidebar-item-with-action { position:relative; }
|
|
1229
|
+
.sidebar-item-with-action > .sidebar-item { padding-inline-end:calc(var(--control-h-sm) + var(--space-2)); }
|
|
1230
|
+
.sidebar-item-action { position:absolute; inset-block-start:0; inset-inline-end:var(--space-1); display:flex; align-items:center; block-size:var(--control-h-md); }
|
|
1231
|
+
/* 4-D — o grupo que dobra e a ação do grupo ("+"): o nome e a ação numa fila, com a margem que o nome tinha sozinho. */
|
|
1232
|
+
.sidebar-group-head { display:flex; align-items:center; gap:var(--space-1); margin:var(--space-4) var(--space-1) var(--space-1) var(--sidebar-item-x, var(--space-3)); }
|
|
1233
|
+
.sidebar-group-head > .sidebar-group-label { flex:1; min-width:0; margin:0; }
|
|
1234
|
+
.sidebar-group-toggle { display:flex; align-items:center; gap:var(--space-1); min-block-size:var(--control-h-xs); padding:0; border:0; border-radius:var(--radius-control); background:transparent; font:inherit; font-size:var(--text-sm); font-weight:var(--weight-medium); text-align:start; cursor:pointer; }
|
|
1235
|
+
.sidebar-group-toggle > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
1236
|
+
.sidebar-group-caret { flex:none; opacity:.8; }
|
|
1237
|
+
.sidebar-group-action { display:flex; align-items:center; gap:var(--space-1); flex:none; }
|
|
1238
|
+
/* 4-A — A LATERAL SOLTA vai do topo da janela até embaixo, como a da referência: fora do `AppShell` não há barra de cima
|
|
1239
|
+
para reservar (o item 106 mediu: solta, a lateral ficava 56 mais baixa e mais curta, e o app tinha de zerar o
|
|
1240
|
+
`--topbar-height` à mão). O app que põe uma barra própria em cima dela diz a altura em `--sidebar-offset`. */
|
|
1241
|
+
.sidebar:not(.app-shell > *) { --shell-top:calc(var(--sidebar-offset, 0px) + var(--space-4)); }
|
|
1242
|
+
.sidebar-flush:not(.app-shell > *) { --shell-top:var(--sidebar-offset, 0px); }
|
|
1243
|
+
/* 4-A — a trilha em cápsula: recolhida, o canto é o do controle, e não o do cartão. */
|
|
1244
|
+
.sidebar-collapse-capsule.sidebar-collapsed { border-radius:var(--radius-control); }
|
|
1245
|
+
/* 4-A — a que sai da tela: recolhida, ela some, e a trilha do shell vai a zero. O botão da junção fica dentro da tela, a 16
|
|
1246
|
+
da borda (ele ficaria cortado ao meio na borda da janela). */
|
|
1247
|
+
.sidebar-collapse-offcanvas.sidebar-collapsed { display:none; }
|
|
1248
|
+
/* `.sidebar` repetido na regra de propósito: a da rente recolhida (`.app-shell:has(> .sidebar-collapsed.sidebar-flush)`) vem
|
|
1249
|
+
depois na folha, com a mesma força, e deixava a trilha em 68 na rente que sai da tela (o teste do bloco 2 achou). */
|
|
1250
|
+
.app-shell:has(> .sidebar.sidebar-collapsed.sidebar-collapse-offcanvas) { --sidebar-track:0px; }
|
|
1251
|
+
.app-shell-collapsible:has(> .sidebar.sidebar-collapsed.sidebar-collapse-offcanvas) > .sidebar-toggle-slot { --toggle-x:calc(var(--space-4) + var(--control-h-xs) / 2); }
|
|
1252
|
+
/* 4-H — o item atual nas alternativas do item 101. Todas tiram o fio da casa (o `segment-line` o põe de volta, no amarelo).
|
|
1253
|
+
`segment`: a cápsula da aba escolhida (ADR-0059), a letra na cor do texto e o peso normal, como a referência. Os tokens
|
|
1254
|
+
são os da PÁGINA (`--segment` e `--foreground`), aos pares: sob uma marca de lateral escura, a cápsula clara continua
|
|
1255
|
+
legível com a letra dela. */
|
|
1256
|
+
.sidebar[class*="sidebar-indicator-"] .sidebar-item[aria-current]::after { display:none; }
|
|
1257
|
+
:is(.sidebar-indicator-segment,.sidebar-indicator-segment-dot,.sidebar-indicator-segment-line) .sidebar-item[aria-current] { --sidebar-primary:var(--foreground); --primary-emphasis:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); color:var(--foreground); font-weight:var(--weight-regular); }
|
|
1258
|
+
.sidebar-indicator-segment-dot .sidebar-item[aria-current] > .sidebar-label::before { content:""; display:inline-block; inline-size:var(--space-2); block-size:var(--space-2); margin-inline-end:var(--space-2); border-radius:var(--radius-full); background:var(--primary); vertical-align:middle; }
|
|
1259
|
+
.sidebar.sidebar-indicator-segment-line .sidebar-item[aria-current]::after { display:block; background:var(--primary); }
|
|
1260
|
+
/* `subtle`: só o cinza da lateral e a letra cheia dela, sem cor de marca. ⚠ É o mesmo cinza do ponteiro em cima (o item 101
|
|
1261
|
+
anotou): o item atual só se distingue pela letra e pelo ícone cheio. */
|
|
1262
|
+
.sidebar-indicator-subtle .sidebar-item[aria-current] { --sidebar-primary:var(--sidebar-foreground); --primary-emphasis:var(--sidebar-foreground); background:var(--sidebar-accent); color:var(--sidebar-foreground); }
|
|
1263
|
+
/* 4-F e 4-G — a trilha das seções e o painel. A lateral vira uma fila de duas caixas: a trilha, em cápsula (a 6 e a 7 das
|
|
1264
|
+
quinze), e o painel ao lado, um cartão da largura da lateral. As duas pintam a cor da lateral; a caixa de fora some. */
|
|
1265
|
+
.sidebar[class*="sidebar-panel-"] { flex-direction:row; align-items:stretch; gap:var(--space-2); padding:0; overflow:visible; border-width:0; border-radius:0; background:transparent; }
|
|
1266
|
+
.sidebar-rail-box { display:flex; flex-direction:column; gap:var(--space-1); flex:none; inline-size:var(--sidebar-rail); min-block-size:0; padding:var(--space-1) var(--space-2); overflow:hidden auto; border-radius:var(--radius-control); background:var(--sidebar); }
|
|
1267
|
+
.sidebar-rail-box .sidebar-item { justify-content:center; width:var(--control-h-md); padding-inline:0; margin-inline:auto; }
|
|
1268
|
+
.sidebar-rail-box .sidebar-item[aria-expanded="true"]:not([aria-current]) { background:var(--sidebar-accent); color:var(--sidebar-foreground); }
|
|
1269
|
+
/* O painel ENCOLHE quando falta lugar (a 320, ou na gaveta do celular, de 296): a trilha fica, e ele toma o resto, até a largura
|
|
1270
|
+
da lateral. Fixo em 264, a trilha e ele (340) passavam da gaveta e da tela — a varredura do site achou a 320. */
|
|
1271
|
+
.sidebar-panel { display:flex; flex-direction:column; gap:var(--space-1); flex:0 1 var(--sidebar-width); min-inline-size:0; min-block-size:0; padding:var(--space-1); overflow:auto; border-radius:var(--radius-card); background:var(--sidebar); color:var(--sidebar-foreground); }
|
|
1272
|
+
.sidebar-panel[hidden] { display:none; }
|
|
1273
|
+
.sidebar-panel-title { margin:var(--space-2) var(--sidebar-item-x, var(--space-3)) var(--space-1); font-family:var(--font-heading); font-size:var(--text-lg); font-weight:var(--weight-bold); line-height:var(--leading-tight); }
|
|
1274
|
+
.app-shell:has(> .sidebar-panel-docked) { --sidebar-track:calc(var(--sidebar-rail) + var(--space-2) + var(--sidebar-width) + var(--space-4)*2); }
|
|
1275
|
+
.app-shell:has(> .sidebar-panel-docked.sidebar-collapsed), .app-shell:has(> .sidebar-panel-overlay) { --sidebar-track:calc(var(--sidebar-rail) + var(--space-4)*2); }
|
|
1276
|
+
/* O painel por cima (4-G): a janelinha da Aurea, da largura da lateral, com a pele da lista dela. Os tokens da lateral passam a
|
|
1277
|
+
ser os da janelinha: sob uma marca de lateral escura, a janelinha é clara, e a letra da lateral sumiria nela. */
|
|
1278
|
+
.popover.sidebar-flyout { --sidebar-item-x:var(--space-4); --sidebar-foreground:var(--popover-foreground); --sidebar-accent:var(--fill-1); --sidebar-primary:var(--primary-emphasis); inline-size:var(--sidebar-width); max-inline-size:calc(100vw - var(--space-8)); padding:var(--space-1); gap:var(--space-1); }
|
|
1206
1279
|
/* Estas regras tocam `.app-shell` porque a coluna do grid é do shell: a
|
|
1207
1280
|
lateral não consegue encolher a própria trilha. `--sidebar-rail` continua sendo a largura
|
|
1208
1281
|
do PAINEL; a flutuante soma as margens na trilha, a rente usa o token cru.
|
|
@@ -1678,24 +1751,19 @@ img,svg { display:block; }
|
|
|
1678
1751
|
Aurea não tinha o botão de ação secundária mais comum do mercado — contorno na cor da marca.
|
|
1679
1752
|
Nada de novo aqui: mesma receita do par `danger-*` logo abaixo, com o token do outro tom, e o
|
|
1680
1753
|
texto em `--primary` já era precedente do `.btn-link-primary`. */
|
|
1681
|
-
.btn-primary-outline { --btn-bg:transparent; --btn-fg:var(--primary); --btn-border:var(--primary); }
|
|
1754
|
+
.btn-primary-outline { --btn-bg:transparent; --btn-fg:var(--primary-emphasis); --btn-border:var(--primary-emphasis); }
|
|
1682
1755
|
.btn-primary-outline:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1683
|
-
.btn-primary-ghost { --btn-bg:transparent; --btn-fg:var(--primary); --btn-border:transparent; }
|
|
1756
|
+
.btn-primary-ghost { --btn-bg:transparent; --btn-fg:var(--primary-emphasis); --btn-border:transparent; }
|
|
1684
1757
|
.btn-primary-ghost:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1685
1758
|
.btn-danger-outline { --btn-bg:transparent; --btn-fg:var(--danger-400); --btn-border:var(--danger-400); }
|
|
1686
1759
|
.btn-danger-outline:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1687
1760
|
.btn-danger-ghost { --btn-bg:transparent; --btn-fg:var(--danger-400); --btn-border:transparent; }
|
|
1688
1761
|
.btn-danger-ghost:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1689
1762
|
[data-theme="light"] .btn-danger-outline:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-danger-ghost:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-link-danger:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:var(--danger-400); }
|
|
1690
|
-
/* A
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
ela. Não é conserto local: é a mesma pergunta do §21 — quem MAIS tem esse problema? — e a
|
|
1695
|
-
resposta foram estas duas, mais a borda, que é componente de UI e pede 3:1. */
|
|
1696
|
-
[data-theme="light"] .btn-primary-outline:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-primary-ghost:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1697
|
-
[data-theme="light"] .btn-primary-outline:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-border:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1698
|
-
[data-theme="light"] .btn-outline.btn-tone-brand:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-border:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1763
|
+
/* A LETRA DA MARCA nos botões sem caixa é a de DESTAQUE (ADR-0081, 24/10/2026 — a ADR-0076 aplicada a eles): o azul no
|
|
1764
|
+
claro, o amarelo no escuro, e na `lory` o laranja escuro dela. De 21/08 até aqui, o claro levava a mistura marrom
|
|
1765
|
+
(a marca a 45% no texto): passava sobre a página e caía para 4,22 dentro da barra de ferramentas; o azul dá 4,69. O
|
|
1766
|
+
`--primary-outline` não serve de letra: na `lory` ele é translúcido (é do contorno). */
|
|
1699
1767
|
/* LINK: aparência de texto, sem cápsula e sem altura de controle — o sublinhado é o que diz
|
|
1700
1768
|
que é clicável, então ele existe desde o repouso (revelar no hover esconde a affordance).
|
|
1701
1769
|
Três tons: neutro, marca e destrutivo. No claro a marca aprofunda, senão não passa o AA. */
|
|
@@ -1704,8 +1772,7 @@ img,svg { display:block; }
|
|
|
1704
1772
|
prosa, e media 67×13px. O texto continua onde está — a caixa cresce centrada nele. */
|
|
1705
1773
|
.btn-link { height:auto; min-height:24px; padding:0; gap:6px; border:0; border-radius:var(--radius-sm); --btn-bg:transparent; --btn-fg:var(--foreground); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
|
|
1706
1774
|
.btn-link:hover:not(:disabled):not([aria-disabled="true"]) { text-decoration-thickness:2px; }
|
|
1707
|
-
.btn-link-primary { --btn-fg:var(--primary); }
|
|
1708
|
-
[data-theme="light"] .btn-link-primary:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
1775
|
+
.btn-link-primary { --btn-fg:var(--primary-emphasis); }
|
|
1709
1776
|
.btn-link-danger { --btn-fg:var(--danger-400); }
|
|
1710
1777
|
/* pressed entra na linguagem única de "selecionado" acima; só-ícone não leva o fio. */
|
|
1711
1778
|
/* Kbd — a tecla que dispara a ação, dentro ou fora do botão. Peça própria, não decoração.
|
|
@@ -1765,9 +1832,8 @@ img,svg { display:block; }
|
|
|
1765
1832
|
token de tom (`--success`) é o FUNDO cheio — a mesma cor funda nos dois temas —, e não serve
|
|
1766
1833
|
de letra no escuro. Letra, ícone, borda e barra sobre a superfície usam o par de letra
|
|
1767
1834
|
(`--success-400`, `--info-400`, `--warning-400`, `--danger-400`), que cada tema ajusta. */
|
|
1768
|
-
.btn-tone-brand,.btn-tone-brand:hover:not(:disabled) { --btn-fg:var(--primary); }
|
|
1769
|
-
|
|
1770
|
-
.btn-outline.btn-tone-brand { --btn-border:var(--primary); }
|
|
1835
|
+
.btn-tone-brand,.btn-tone-brand:hover:not(:disabled) { --btn-fg:var(--primary-emphasis); }
|
|
1836
|
+
.btn-outline.btn-tone-brand { --btn-border:var(--primary-emphasis); }
|
|
1771
1837
|
.btn-tone-brand:not(.btn-link):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1772
1838
|
.btn-tone-danger,.btn-tone-danger:hover:not(:disabled) { --btn-fg:var(--danger-400); }
|
|
1773
1839
|
[data-theme="light"] .btn-tone-danger:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-tone-danger:hover:not(:disabled):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --btn-fg:var(--danger-400); }
|
|
@@ -2385,13 +2451,19 @@ img,svg { display:block; }
|
|
|
2385
2451
|
/* A borda transparente de 1 (as abas não têm) entra no recheio: 1 + 3 = os 4 da referência, e o
|
|
2386
2452
|
trilho mede 40 como o das abas — sem o desconto, 42 (a geometria pegou). */
|
|
2387
2453
|
.segmented { display:inline-flex; gap:0; padding:calc(var(--space-1) - var(--border-width)); border-radius:var(--radius-control); background:var(--muted); border:var(--border-width) solid transparent; box-shadow:none; }
|
|
2388
|
-
.segmented button { min-block-size:var(--control-h-sm); padding:0 var(--space-4); border:0; border-radius:var(--radius-control); color:var(--muted-foreground); background:transparent; font-weight:var(--weight-medium); cursor:pointer; }
|
|
2389
|
-
.segmented button.active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
2454
|
+
.segmented :is(button,a) { min-block-size:var(--control-h-sm); padding:0 var(--space-4); border:0; border-radius:var(--radius-control); color:var(--muted-foreground); background:transparent; font-weight:var(--weight-medium); cursor:pointer; }
|
|
2455
|
+
.segmented :is(button,a).active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
2390
2456
|
/* `fullWidth` (A5, 06/10/2026): ocupa a linha, e cada segmento cresce a partir do rótulo sem
|
|
2391
2457
|
encolher abaixo dele — o mesmo desenho do nativo. `1 0 auto` e não `1` (= `1 1 0%`): base zero
|
|
2392
2458
|
reparte a largura em partes iguais, e é isso que quebrava o rótulo no nativo rodando no
|
|
2393
2459
|
navegador. Quando não cabe, rola pela regra de tela estreita, como sem a prop. */
|
|
2394
|
-
.segmented-full { display:flex; } .segmented-full button { flex:1 0 auto; }
|
|
2460
|
+
.segmented-full { display:flex; } .segmented-full :is(button,a) { flex:1 0 auto; }
|
|
2461
|
+
/* A CÁPSULA QUE NAVEGA (bloco 1, o 5-A — 23/10/2026): com `href` nos itens, o `SegmentedControl` é um <nav> de links — a
|
|
2462
|
+
chave Web | Native do site, a peça "Tabs em pílula" da referência na ponta da linha das áreas. O link tem a pele do
|
|
2463
|
+
segmento; o atual leva `aria-current="page"` e a mesma marca do escolhido. */
|
|
2464
|
+
.segmented a { display:inline-flex; align-items:center; justify-content:center; gap:var(--space-1); text-decoration:none; }
|
|
2465
|
+
/* `size="sm"`: a da referência (abas de 24 numa cápsula de 32, letra 14) — a altura do controle `xs` da densidade. */
|
|
2466
|
+
.segmented-sm :is(button,a) { min-block-size:var(--control-h-xs); padding:0 var(--space-4); font-size:var(--text-sm); }
|
|
2395
2467
|
/* Toggle (Lote 1): pressionado usa o MESMO par de tokens do segmento aceso, logo acima. Um
|
|
2396
2468
|
toggle solto e um segmento selecionado dizem a mesma coisa — se parecessem diferentes, o
|
|
2397
2469
|
sistema teria dois idiomas para "isto está ligado". O estado vem do motor (`data-pressed`),
|
|
@@ -2405,12 +2477,12 @@ img,svg { display:block; }
|
|
|
2405
2477
|
grita mais que o próprio rótulo. No tema CLARO o amarelo puro como texto dá 1.6:1, longe
|
|
2406
2478
|
dos 4.5:1 do AA, então o rótulo aprofunda com --foreground e segue âmbar. */
|
|
2407
2479
|
.is-selected,.btn-nav[aria-current]:not([aria-current="false"]),.btn[aria-pressed="true"],
|
|
2408
|
-
.segmented button.active { --btn-bg:var(--secondary); --btn-fg:var(--primary); position:relative; background:var(--secondary); color:var(--primary); }
|
|
2480
|
+
.segmented :is(button,a).active { --btn-bg:var(--secondary); --btn-fg:var(--primary); position:relative; background:var(--secondary); color:var(--primary); }
|
|
2409
2481
|
/* A CÁPSULA ELEVADA que a regra acima promete, e que no trilho não se via (ADR-0059, 08/10/2026):
|
|
2410
2482
|
o segmento aceso e a aba escolhida vivem sobre --muted, e --secondary dava 1:1 contra ele no
|
|
2411
2483
|
claro e 1,02:1 no escuro. Sobre o trilho a cápsula é --segment, com a sombra pequena — como a
|
|
2412
2484
|
aba da referência principal. O rótulo na cor da marca e o fio continuam. */
|
|
2413
|
-
.segmented button.active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
2485
|
+
.segmented :is(button,a).active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
2414
2486
|
/* O TOGGLE LIGADO tem fundo próprio (0.32.0). Com o solto no fundo neutro (o `default` da referência),
|
|
2415
2487
|
o cinza do "selecionado" acima deixava ligado e desligado com o MESMO fundo — só a letra e o fio
|
|
2416
2488
|
mudavam, e o `skin.spec` cobra que o ligado pareça ligado pelo fundo. O ligado dela é o tom suave
|
|
@@ -2439,19 +2511,20 @@ img,svg { display:block; }
|
|
|
2439
2511
|
saíram com a mesma cor. Com o `:not` ela pesa (0,3,1) e só alcança quem está em repouso. */
|
|
2440
2512
|
[data-theme="light"] .doc-nav a:not(.active):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { color:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent); }
|
|
2441
2513
|
.is-selected::after,.btn-nav[aria-current]:not([aria-current="false"])::after,
|
|
2442
|
-
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented button.active::after,.tabs-secondary .tab[data-active]::after,
|
|
2514
|
+
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented :is(button,a).active::after,.tabs-secondary .tab[data-active]::after,
|
|
2443
2515
|
.doc-nav a.active::after,.sidebar-item[aria-current]::after { content:""; position:absolute; inset-inline:15px; bottom:0; height:2px; border-radius:var(--radius-full); background:color-mix(in oklab, var(--primary) 75%, transparent); }
|
|
2444
2516
|
/* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
|
|
2445
2517
|
.doc-nav a.active::after,.sidebar-item[aria-current]::after { background:var(--sidebar-current-line, color-mix(in oklab, var(--sidebar-primary) 75%, transparent)); }
|
|
2518
|
+
.sidebar-item[aria-current]::after { inset-inline:var(--sidebar-item-x, var(--space-4)); }
|
|
2446
2519
|
/* ADR-0076 (20/10/2026), o Victor olhando a bancada: "não quero ele azul, não pode ser na cor do botão?". No claro da Aurea
|
|
2447
2520
|
padrão, o item atual da lateral é o botão primário: o fundo amarelo e a letra cinza-escura dele (8,13:1). O fundo já
|
|
2448
2521
|
marca o estado, e o fio de baixo some (`--sidebar-current-line` transparente: regra no `::after` não aceitaria a guarda
|
|
2449
2522
|
de tema no fim). Só sem `data-brand` (a `lory` tem a lateral dela) e só no claro (no escuro, a letra amarela continua).
|
|
2450
2523
|
Sobre o amarelo, a letra de destaque de DENTRO do item (o selo primário de contagem, um ícone de destaque) é a tinta do
|
|
2451
2524
|
botão: o azul sobre o amarelo mede 3,49:1 — o axe da varredura achou, no "12" do exemplo da `Sidebar`. */
|
|
2452
|
-
[data-theme="light"] :is(.sidebar-item[aria-current],.doc-nav a.active):not(:where([data-brand],[data-brand] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --sidebar-current-line:transparent; --primary-emphasis:var(--primary-foreground); --sidebar-primary:var(--primary-foreground); background:var(--primary); color:var(--primary-foreground); }
|
|
2525
|
+
[data-theme="light"] :is(.sidebar-item[aria-current],.doc-nav a.active):not(:where([data-brand],[data-brand] *,.sidebar[class*="sidebar-indicator-"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --sidebar-current-line:transparent; --primary-emphasis:var(--primary-foreground); --sidebar-primary:var(--primary-foreground); background:var(--primary); color:var(--primary-foreground); }
|
|
2453
2526
|
[data-theme="light"] .is-selected:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-nav[aria-current]:not([aria-current="false"]):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
|
|
2454
|
-
[data-theme="light"] .btn[aria-pressed="true"]:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .segmented button.active:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
|
|
2527
|
+
[data-theme="light"] .btn[aria-pressed="true"]:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .segmented :is(button,a).active:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
|
|
2455
2528
|
{ --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
|
|
2456
2529
|
/* A NAV DA LATERAL SAIU DESTA LISTA em 20/08/2026. O ajuste existe porque o amarelo puro não se lê
|
|
2457
2530
|
sobre o claro — mas ele mistura o `--foreground` da PÁGINA, e o item da lateral não está sobre a
|
|
@@ -2544,9 +2617,13 @@ img,svg { display:block; }
|
|
|
2544
2617
|
seis deixam o contador sobre a superfície da barra, onde ele já se lê. */
|
|
2545
2618
|
|
|
2546
2619
|
.badge-success { --badge-accent:var(--success-400); --badge-fill:var(--success); --badge-on:var(--success-foreground); color:var(--success-400); background:var(--success-bg); border-color:transparent; }
|
|
2547
|
-
.badge-warning { --badge-accent:var(--warning-400); --badge-fill:var(--warning); --badge-on:var(--warning-foreground); color:var(--warning-400); background:var(--warning-bg); border-color:transparent; }
|
|
2620
|
+
.badge-warning,.badge-paused { --badge-accent:var(--warning-400); --badge-fill:var(--warning); --badge-on:var(--warning-foreground); color:var(--warning-400); background:var(--warning-bg); border-color:transparent; }
|
|
2548
2621
|
.badge-danger { --badge-accent:var(--danger-400); --badge-fill:var(--destructive); --badge-on:var(--destructive-foreground); color:var(--danger-400); background:var(--danger-bg); border-color:transparent; }
|
|
2549
2622
|
.badge-info,.badge-running { --badge-accent:var(--info-400); --badge-fill:var(--info); --badge-on:var(--info-foreground); color:var(--info-400); background:var(--info-bg); border-color:transparent; }
|
|
2623
|
+
/* Os tons de ESTADO DE TRABALHO (ADR-0081, 24/10/2026): running é o info (acima), paused o aviso, review o violeta de
|
|
2624
|
+
categoria, e offline o apagado — como o `Status offline`. Antes paused, offline e review saíam iguais ao neutral. O
|
|
2625
|
+
cheio do offline é o par do texto apagado invertido: a letra que passa sobre o fundo vira o fundo. */
|
|
2626
|
+
.badge-offline { --badge-accent:var(--subtle-foreground); --badge-fill:var(--muted-foreground); --badge-on:var(--background); color:var(--subtle-foreground); background:var(--fill-1); border-color:transparent; }
|
|
2550
2627
|
/* AS OITO CORES DE CATEGORIA (GAR-07, ADR-0060, 09/10/2026): marcam GRUPO, não estado — "Motos" e
|
|
2551
2628
|
"Carros" num site de notícias. Mesma receita dos quatro propósitos acima (acento, fundo suave e
|
|
2552
2629
|
o fio misturado com a borda), e por isso as três ênfases valem para elas sem regra nova. O
|
|
@@ -2557,7 +2634,7 @@ img,svg { display:block; }
|
|
|
2557
2634
|
.badge-teal { --badge-accent:var(--category-teal); color:var(--category-teal); background:var(--category-teal-bg); border-color:transparent; }
|
|
2558
2635
|
.badge-cyan { --badge-accent:var(--category-cyan); color:var(--category-cyan); background:var(--category-cyan-bg); border-color:transparent; }
|
|
2559
2636
|
.badge-blue { --badge-accent:var(--category-blue); color:var(--category-blue); background:var(--category-blue-bg); border-color:transparent; }
|
|
2560
|
-
.badge-violet { --badge-accent:var(--category-violet); color:var(--category-violet); background:var(--category-violet-bg); border-color:transparent; }
|
|
2637
|
+
.badge-violet,.badge-review { --badge-accent:var(--category-violet); color:var(--category-violet); background:var(--category-violet-bg); border-color:transparent; }
|
|
2561
2638
|
.badge-pink { --badge-accent:var(--category-pink); color:var(--category-pink); background:var(--category-pink-bg); border-color:transparent; }
|
|
2562
2639
|
/* ── AS TRÊS ÊNFASES — e elas vêm DEPOIS das variantes de propósito ─────────────────
|
|
2563
2640
|
Cada variante declara só o ACENTO; as ênfases saem dele. Antes cada variante escrevia
|
|
@@ -2939,6 +3016,12 @@ img,svg { display:block; }
|
|
|
2939
3016
|
.avatar:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { color:var(--avatar-ink); }
|
|
2940
3017
|
.avatar.avatar-soft { border-color:transparent; background:var(--muted); }
|
|
2941
3018
|
.avatar.avatar-soft:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { background:color-mix(in oklab, var(--avatar-tint) 14%, transparent); }
|
|
3019
|
+
/* Os quatro tons de ESTADO no fundo do selo suave (o `-bg` de cada um, a receita do `Badge` — ADR-0081, 24/10/2026): com
|
|
3020
|
+
o tom a 14%, o info media 4,12 no claro. A marca fica na mistura: o fundo dela não tem par. */
|
|
3021
|
+
.avatar.avatar-soft.avatar-tone-info { background:var(--info-bg); }
|
|
3022
|
+
.avatar.avatar-soft.avatar-tone-success { background:var(--success-bg); }
|
|
3023
|
+
.avatar.avatar-soft.avatar-tone-warning { background:var(--warning-bg); }
|
|
3024
|
+
.avatar.avatar-soft.avatar-tone-danger { background:var(--danger-bg); }
|
|
2942
3025
|
.avatar img { width:100%; height:100%; object-fit:cover; }
|
|
2943
3026
|
/* LINK (0.32.0): o link de texto da referência — peso médio, a cor de link, sem sublinhado; com o mouse
|
|
2944
3027
|
ou apertado, o sublinhado de 1,5 a 4 da letra, na cor esmaecida (a meia força com o mouse). A seta do
|
|
@@ -3155,6 +3238,21 @@ button.tag-main { cursor:pointer; }
|
|
|
3155
3238
|
é inalcançável por teclado (axe scrollable-region-focusable). Quem escreve esta marcação à
|
|
3156
3239
|
mão precisa de `tabindex="0"` no <pre> — o componente React já o emite. */
|
|
3157
3240
|
.code-block { overflow:auto; padding:16px; border:1px solid transparent; border-radius:var(--radius-lg); background:var(--surface-inset); color:var(--muted-foreground); font:12px/1.7 var(--font-code); }
|
|
3241
|
+
/* O CÓDIGO EM ABAS (`CodeBlock tabs`, bloco 1 — o 3-A): a caixa é UMA — a fileira em cima e o código embaixo —, como a
|
|
3242
|
+
documentação da referência, medida na página dela (1280 × 663, 23/10/2026): a fileira de 37 (o texto 14, peso médio, a
|
|
3243
|
+
entrelinha 20 → a `--leading-normal`, 21, com 8 em cima e embaixo), as abas a 14 uma da outra e a 16 da borda; o
|
|
3244
|
+
código é o bloco de sempre. A fileira é um degrau acima da página e o código um acima dela (a referência: a página, a
|
|
3245
|
+
superfície, o código) — no texto do site, a página 31, a fileira 41 e o código 51, a cor do bloco sozinho. A escolhida
|
|
3246
|
+
na cor do texto, com o traço cheio de baixo, como as abas de área do site (o indicador, não uma linha — ADR-0072). */
|
|
3247
|
+
.code-tabs { border-radius:var(--radius-lg); background:var(--surface-1); overflow:hidden; }
|
|
3248
|
+
.prose .code-tabs { border-radius:var(--radius-card); }
|
|
3249
|
+
.code-tabs-list { display:flex; gap:calc(var(--space-3) + var(--space-05)); padding:0 var(--space-4); overflow-x:auto; }
|
|
3250
|
+
.code-tab { position:relative; flex:none; padding:var(--space-2) 0; border:0; background:transparent; color:var(--muted-foreground);
|
|
3251
|
+
font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--leading-normal); cursor:pointer; }
|
|
3252
|
+
.code-tab:hover, .code-tab.active { color:var(--foreground); }
|
|
3253
|
+
.code-tab.active::after { content:""; position:absolute; inset-inline:0; inset-block-end:0; block-size:var(--focus-width); background:var(--primary); }
|
|
3254
|
+
.code-tab:focus-visible { outline-offset:calc(-1 * var(--focus-width)); }
|
|
3255
|
+
.code-tabs .code-block { border-radius:0; }
|
|
3158
3256
|
/* Lote V (20/10/2026): o número da linha e as cores do código (`CodeBlock lineNumbers` e `highlight`). O número é o da
|
|
3159
3257
|
referência, medido na página dela: uma coluna de 16 (--space-4), alinhada à direita, a 24 do código (--space-6); ela
|
|
3160
3258
|
cresce com os algarismos da última linha (`--code-line-digits`, que o componente escreve), para a coluna não pular
|
|
@@ -3191,7 +3289,7 @@ button.tag-main { cursor:pointer; }
|
|
|
3191
3289
|
.code-preview { display:flex; flex-direction:column; block-size:var(--demo-height,auto); padding:0; overflow:hidden; }
|
|
3192
3290
|
.demo-tabs { display:flex; padding:var(--space-2); border-bottom:var(--border-width) solid transparent; }
|
|
3193
3291
|
.demo-tabs .segmented { flex:1; display:flex; }
|
|
3194
|
-
.demo-tabs .segmented button { flex:1; }
|
|
3292
|
+
.demo-tabs .segmented :is(button,a) { flex:1; }
|
|
3195
3293
|
.demo-panel { flex:1; min-height:0; overflow:auto; padding:var(--space-6); }
|
|
3196
3294
|
.demo-panel[hidden] { display:none; }
|
|
3197
3295
|
.demo-panel[data-panel="preview"] { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:var(--space-4); background:var(--surface-inset); }
|
|
@@ -3200,6 +3298,11 @@ button.tag-main { cursor:pointer; }
|
|
|
3200
3298
|
.demo-code .code-block-wrap { flex:1; }
|
|
3201
3299
|
.demo-code .code-block { padding:var(--space-6); border:0; border-radius:0; }
|
|
3202
3300
|
.copy-code { position:absolute; top:var(--space-3); inset-inline-end:var(--space-3); z-index:1; }
|
|
3301
|
+
/* O fim da linha fica fora do botão de copiar (achado no 3-A, 23/10/2026): no Quick Start, o `pnpm add` de uma linha
|
|
3302
|
+
terminava a 915 e o botão começava a 901 — o fim do comando ficava embaixo dele. O código reserva no fim o lugar do
|
|
3303
|
+
botão (a distância da borda, o botão e um vão), e a linha mais longa ROLA antes de chegar nele. Vale para todo bloco
|
|
3304
|
+
com copiar: o sozinho, o do texto do site (`.prose pre`) e o do exemplo (`.demo-code`) — por isso vem depois deles. */
|
|
3305
|
+
.code-block-wrap > .code-block { padding-inline-end:calc(var(--space-3) + var(--control-h-md) + var(--space-2)); }
|
|
3203
3306
|
.copy-code .c-done { display:none; }
|
|
3204
3307
|
.copy-code.is-done .c-copy { display:none; } .copy-code.is-done .c-done { display:block; color:var(--primary); }
|
|
3205
3308
|
/* "On this page": índice da própria página, fixo na lateral. Navegação, não decoração —
|
|
@@ -3504,7 +3607,9 @@ button.tag-main { cursor:pointer; }
|
|
|
3504
3607
|
/* DOC-11 (0.32.0): o `tone` do nativo, na web. `link` é o amarelo de escrever; `primary`, o de
|
|
3505
3608
|
preencher (no claro quase some, como no nativo); as cores de estado, o par `-400` (ADR-0061). */
|
|
3506
3609
|
.typography-tone-subtle { color:var(--subtle-foreground); }
|
|
3507
|
-
|
|
3610
|
+
/* A letra do tom primary é a de DESTAQUE (ADR-0081, 24/10/2026): o azul no claro, o amarelo no escuro. Era o amarelo de
|
|
3611
|
+
preencher, de propósito — 1,75:1 no claro. */
|
|
3612
|
+
.typography-tone-primary { color:var(--primary-emphasis); }
|
|
3508
3613
|
.typography-tone-link { color:var(--link); }
|
|
3509
3614
|
.typography-tone-danger { color:var(--danger-400); }
|
|
3510
3615
|
.typography-tone-success { color:var(--success-400); }
|
|
@@ -3521,6 +3626,11 @@ button.tag-main { cursor:pointer; }
|
|
|
3521
3626
|
identificação, como no sistema que serviu de modelo (na tabela dele, só a coluna de número e a de valor; o resto
|
|
3522
3627
|
da tabela fica no texto). Vem depois dos `.typography-h*`, e por isso o título com `numeric` também troca. */
|
|
3523
3628
|
.typography-numeric { font-family:var(--font-code); font-variant-numeric:tabular-nums; }
|
|
3629
|
+
/* O alinhamento só existe num bloco: o `Text` (um <span>) e o `Code` (um <code>) são texto em linha, e com o
|
|
3630
|
+
`text-align` sozinho o `align` deles não fazia nada — achado pelo exemplo de cada valor (bloco 1, o catálogo fiel,
|
|
3631
|
+
23/10/2026). Com `align`, a peça vira bloco, como já faz o `truncate`; no `Heading` e no `Paragraph`, que já são
|
|
3632
|
+
bloco, nada muda. */
|
|
3633
|
+
.typography-align-start, .typography-align-center, .typography-align-end, .typography-align-justify { display:block; }
|
|
3524
3634
|
.typography-align-start { text-align:start; }
|
|
3525
3635
|
.typography-align-center { text-align:center; }
|
|
3526
3636
|
.typography-align-end { text-align:end; }
|
|
@@ -4614,8 +4724,6 @@ button.graph-node-body { cursor:pointer; }
|
|
|
4614
4724
|
}
|
|
4615
4725
|
|
|
4616
4726
|
|
|
4617
|
-
/* Aurea v1.7 stabilization patch — visual design unchanged. */
|
|
4618
|
-
.badge-running{background:var(--success-bg);color:var(--success-400);border-color:transparent}
|
|
4619
4727
|
/* superfície (overflow, borda, fundo, raio) mora junto com a do `.table-wrap` lá em cima — aqui
|
|
4620
4728
|
fica só o que é DESTA região: ela é focável, e o foco dela é a linha de dentro, abaixo. Era um
|
|
4621
4729
|
halo de `--focus` a 38% (B-09, 24/09/2026): claro demais para se ver, e fora do contrato de foco.
|