@aurea-uds/core 0.10.1 → 0.12.1
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 +80 -23
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
--radius-control:999px;
|
|
43
43
|
--radius-full:var(--radius-control);
|
|
44
44
|
--border-width:1px;
|
|
45
|
+
--focus-width:2px;
|
|
46
|
+
--focus-offset:2px;
|
|
45
47
|
--opacity-disabled:0.5;
|
|
46
48
|
--shadow-md:0 16px 42px rgba(0,0,0,0.28);
|
|
47
49
|
--shadow-lg:0 28px 80px rgba(0,0,0,0.42);
|
|
@@ -433,7 +435,7 @@ body { margin:0; background:var(--background); color:var(--foreground); font-fam
|
|
|
433
435
|
::selection { background:var(--selection); }
|
|
434
436
|
button,input,textarea,select { font:inherit; }
|
|
435
437
|
button,a,[role="button"],input,textarea,select { outline:none; }
|
|
436
|
-
:focus-visible { outline:
|
|
438
|
+
:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); box-shadow:none; border-color:var(--focus-strong)!important; }
|
|
437
439
|
button { color:inherit; }
|
|
438
440
|
/* O link NÃO é `--primary`. Medido em 22/08/2026 com o axe e depois à mão: o amarelo da
|
|
439
441
|
marca sobre o fundo do tema CLARO dá 1,73:1, e o AA de texto (WCAG 1.4.3) pede 4,5:1 —
|
|
@@ -989,7 +991,7 @@ img,svg { display:block; }
|
|
|
989
991
|
rolar a página lateralmente ao focar. Aparece no foco, que é o único momento em que precisa
|
|
990
992
|
aparecer. */
|
|
991
993
|
.skip-link { position:fixed; inset-block-start:var(--space-2); inset-inline-start:var(--space-2); z-index:calc(var(--z-toast) + 1); display:inline-flex; align-items:center; height:var(--control-h-md); padding:0 var(--space-4); border-radius:var(--radius-control); background:var(--primary); color:var(--primary-foreground); font-size:var(--text-sm); font-weight:var(--weight-semibold); line-height:var(--leading-none); text-decoration:none; transform:translateY(-160%); transition:transform var(--duration-fast) var(--ease-standard); }
|
|
992
|
-
.skip-link:focus-visible { transform:translateY(0); outline:
|
|
994
|
+
.skip-link:focus-visible { transform:translateY(0); outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
993
995
|
.btn-primary { --btn-bg:var(--primary); --btn-fg:var(--primary-foreground); --btn-border:transparent; }
|
|
994
996
|
.btn-primary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--primary-hover); --btn-border:transparent; }
|
|
995
997
|
.btn-secondary { --btn-bg:var(--secondary); --btn-fg:var(--secondary-foreground); --btn-border:transparent; }
|
|
@@ -1100,12 +1102,21 @@ img,svg { display:block; }
|
|
|
1100
1102
|
.btn-outline.btn-tone-warning { --btn-border:var(--warning); }
|
|
1101
1103
|
.btn-tone-warning:not(.btn-link):not(.btn-solid):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--warning) 14%, transparent); }
|
|
1102
1104
|
.btn-nav:hover:not(:disabled):not([aria-disabled="true"]) { --btn-fg:var(--foreground); }
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1105
|
+
/* O botão só de ícone é REDONDO, em todos os tamanhos — decisão do Victor, 25/09/2026
|
|
1106
|
+
(ADR-0052). Era um quadrado de canto 10px (6px nos dois menores). O HeroUI 3.2.6 faz o botão só
|
|
1107
|
+
de ícone redondo, e os botões de texto da Aurea já são cápsula: o de ícone era o único quadrado. */
|
|
1108
|
+
.btn-icon { width:var(--control-h-md); padding:0; border-radius:var(--radius-full); }
|
|
1109
|
+
.btn-icon.btn-xs { width:var(--control-h-xs); }
|
|
1110
|
+
.btn-icon.btn-sm { width:var(--control-h-sm); } .btn-icon.btn-lg { width:var(--control-h-lg); }
|
|
1106
1111
|
/* xs e xl também precisam de largura: sem isto a altura mudava e a largura ficava na do
|
|
1107
1112
|
md, e o alvo só-ícone deixava de ser quadrado (achado na onda Actions, 24/07). */
|
|
1108
|
-
.btn-icon.btn-xl { width:var(--control-h-xl);
|
|
1113
|
+
.btn-icon.btn-xl { width:var(--control-h-xl); }
|
|
1114
|
+
/* ThemeToggle (25/09/2026): a cor no ícone mostra o tema para onde se vai. No claro a LUA, na tinta
|
|
1115
|
+
do texto; no escuro o SOL, no amarelo da marca — as duas combinações se enxergam, e é por isso
|
|
1116
|
+
que o botão nunca mostra a lua no escuro nem o sol no claro. Mais específico que o `.btn:hover`,
|
|
1117
|
+
então a cor fica também com o mouse em cima. */
|
|
1118
|
+
.theme-toggle-moon .icon { color:var(--foreground); }
|
|
1119
|
+
.theme-toggle-sun .icon { color:var(--primary); }
|
|
1109
1120
|
/* wrap, não estoura: os botões do grupo são pills com gap (não segmentos colados), então
|
|
1110
1121
|
quebrar linha em tela estreita preserva o visual. Único gap de eixo horizontal que a
|
|
1111
1122
|
auditoria da Etapa 3 achou sem proteção — o resto já rola (tabela) ou já quebra (toolbar). */
|
|
@@ -1222,7 +1233,7 @@ img,svg { display:block; }
|
|
|
1222
1233
|
contorno do input de dentro ficaria escondido atrás da borda do grupo. */
|
|
1223
1234
|
.input-group { display:flex; flex-wrap:wrap; align-items:center; inline-size:100%; min-inline-size:0; min-block-size:var(--control-h-md); background:var(--field-bg); border:1px solid var(--border-strong); border-radius:var(--radius-control); transition:border-color var(--duration-fast),box-shadow var(--duration-fast); }
|
|
1224
1235
|
.input-group:hover { border-color:var(--border); }
|
|
1225
|
-
.input-group:focus-within { outline:
|
|
1236
|
+
.input-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1226
1237
|
.input-group:has(.input-sm) { min-block-size:var(--control-h-sm); }
|
|
1227
1238
|
.input-group:has(.input-lg) { min-block-size:var(--control-h-lg); }
|
|
1228
1239
|
/* O controle dentro do grupo abre mão da própria moldura: quem desenha a caixa é o grupo. */
|
|
@@ -1357,7 +1368,7 @@ img,svg { display:block; }
|
|
|
1357
1368
|
.control-mark-lg { --step-h:var(--control-h-lg); }
|
|
1358
1369
|
.checkbox .control-mark { border-radius:5px; } .radio .control-mark { border-radius:50%; }
|
|
1359
1370
|
.checkbox input:checked + .control-mark { background:var(--control-selected); border-color:var(--control-selected); color:var(--control-selected-foreground); }
|
|
1360
|
-
.checkbox input:focus-visible + .control-mark,.radio input:focus-visible + .control-mark,.switch input:focus-visible + .switch-track { outline:
|
|
1371
|
+
.checkbox input:focus-visible + .control-mark,.radio input:focus-visible + .control-mark,.switch input:focus-visible + .switch-track { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1361
1372
|
.checkbox input:checked + .control-mark:after { content:""; width:8px; height:4px; border-left:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(-45deg) translateY(-1px); }
|
|
1362
1373
|
.radio input:checked + .control-mark:after { content:""; width:8px; height:8px; border-radius:50%; background:var(--control-selected); }
|
|
1363
1374
|
.switch { display:inline-flex; align-items:center; gap:10px; cursor:pointer; } .switch input { position:absolute; opacity:0; }
|
|
@@ -1890,7 +1901,11 @@ img,svg { display:block; }
|
|
|
1890
1901
|
estética: é CLS. O exemplo de playlist do `media-chrome` declara o mesmo com o motivo escrito —
|
|
1891
1902
|
sem proporção fixa, um player com `preload=none` mede zero até a mídia chegar e a página SALTA.
|
|
1892
1903
|
Tirar a proporção sem fixar a altura devolve o salto. */
|
|
1893
|
-
|
|
1904
|
+
/* A cor do foco no player é a do contexto, não uma regra à parte (B-09, 24/09/2026). O fundo do
|
|
1905
|
+
player é quase preto nos DOIS temas (`--media-canvas`), e o `--focus-strong` do tema claro é
|
|
1906
|
+
escuro: o foco dos controles sumia no tema claro. Redefinir o token aqui conserta todos os
|
|
1907
|
+
controles de uma vez e deixa a linha de foco (espessura, afastamento) com a regra global. */
|
|
1908
|
+
.media-player { --focus-strong:var(--primary); position:relative; isolation:isolate; overflow:hidden; min-height:var(--media-h,360px); aspect-ratio:var(--media-ar,16/9); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--media-canvas); color:var(--media-foreground); }
|
|
1894
1909
|
.media-viewport { position:absolute; inset:0; display:grid; place-items:center; background:var(--media-canvas); }
|
|
1895
1910
|
.media-fill { width:100%; height:100%; object-fit:contain; } /* vídeo React preenche o viewport (auditoria 18/07, M14) */
|
|
1896
1911
|
.media-placeholder { display:grid; place-items:center; gap:10px; color:var(--media-muted); text-align:center; }
|
|
@@ -1910,10 +1925,10 @@ img,svg { display:block; }
|
|
|
1910
1925
|
.media-seek input::-webkit-slider-thumb { width:14px; height:14px; margin-top:-5px; appearance:none; border:2px solid var(--media-foreground); border-radius:50%; background:var(--primary); }
|
|
1911
1926
|
.media-seek input::-moz-range-track { height:4px; background:transparent; }
|
|
1912
1927
|
.media-seek input::-moz-range-thumb { width:12px; height:12px; border:2px solid var(--media-foreground); border-radius:50%; background:var(--primary); }
|
|
1913
|
-
.media-seek input:focus-visible { outline:
|
|
1928
|
+
.media-seek input:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); box-shadow:none; }
|
|
1914
1929
|
.media-control-row,.media-control-group { display:flex; align-items:center; gap:4px; }
|
|
1915
1930
|
.media-control-row { min-width:0; justify-content:space-between; }
|
|
1916
|
-
.media-control { min-width:36px; height:36px; display:inline-grid; place-items:center; padding:0
|
|
1931
|
+
.media-control { min-width:36px; height:36px; display:inline-grid; place-items:center; padding:0; border:1px solid transparent; border-radius:var(--radius-full); background:transparent; color:var(--media-foreground); cursor:pointer; }
|
|
1917
1932
|
.media-control:hover,.media-control.active { background:var(--media-track); color:var(--primary); }
|
|
1918
1933
|
.media-time { padding:0 7px; color:var(--media-muted); font:var(--text-xs) var(--font-code); white-space:nowrap; }
|
|
1919
1934
|
.media-volume { width:82px; accent-color:var(--primary); }
|
|
@@ -1978,6 +1993,37 @@ img,svg { display:block; }
|
|
|
1978
1993
|
.gallery-tile:not(.is-selected) { background:transparent; color:var(--muted-foreground); }
|
|
1979
1994
|
.gallery-caption { font-size:var(--text-sm); }
|
|
1980
1995
|
|
|
1996
|
+
/* TIPOGRAFIA (B-02, 25/09/2026) — `Text`, `Heading`, `Paragraph` e `Code`, no molde do HeroUI
|
|
1997
|
+
3.2.6 (`typography.css`), por ordem do Victor: HeroUI sempre primeiro. O que vem dele é a FORMA:
|
|
1998
|
+
uma LISTA FECHADA de papéis em vez de tamanhos soltos (título 1–6, texto, texto pequeno, texto
|
|
1999
|
+
mínimo, código), cor só normal ou apagada, quatro pesos. O que é nosso são os números, todos de
|
|
2000
|
+
token: a escala de letras é a dele desde a ADR-0050, a entrelinha do texto é `--leading-relaxed`
|
|
2001
|
+
(27, 24 e 20px, contra os 28, 24 e 20 dele) e o código reusa a pele do `code` do `.prose`.
|
|
2002
|
+
A margem vai a zero porque `h1`…`h6` e `p` trazem a do navegador; o espaço entre blocos é de
|
|
2003
|
+
quem os empilha (`Stack`), não do texto. */
|
|
2004
|
+
.typography { margin:0; color:var(--foreground); }
|
|
2005
|
+
.typography-h1,.typography-h2,.typography-h3,.typography-h4,.typography-h5,.typography-h6 { font-weight:var(--weight-semibold); line-height:var(--leading-tight); letter-spacing:var(--tracking-tight); }
|
|
2006
|
+
.typography-h1 { font-size:var(--text-4xl); }
|
|
2007
|
+
.typography-h2 { font-size:var(--text-3xl); }
|
|
2008
|
+
.typography-h3 { font-size:var(--text-2xl); }
|
|
2009
|
+
.typography-h4 { font-size:var(--text-xl); }
|
|
2010
|
+
.typography-h5 { font-size:var(--text-lg); }
|
|
2011
|
+
.typography-h6 { font-size:var(--text-base); }
|
|
2012
|
+
.typography-body { font-size:var(--text-base); line-height:var(--leading-relaxed); }
|
|
2013
|
+
.typography-body-sm { font-size:var(--text-sm); line-height:var(--leading-relaxed); }
|
|
2014
|
+
.typography-body-xs { font-size:var(--text-xs); line-height:var(--leading-relaxed); }
|
|
2015
|
+
.typography-code { padding:var(--space-05) var(--space-1); border-radius:var(--radius-xs); background:var(--surface-2); font-family:var(--font-code); font-size:var(--text-sm); }
|
|
2016
|
+
.typography-muted { color:var(--muted-foreground); }
|
|
2017
|
+
.typography-weight-normal { font-weight:var(--weight-regular); }
|
|
2018
|
+
.typography-weight-medium { font-weight:var(--weight-medium); }
|
|
2019
|
+
.typography-weight-semibold { font-weight:var(--weight-semibold); }
|
|
2020
|
+
.typography-weight-bold { font-weight:var(--weight-bold); }
|
|
2021
|
+
.typography-align-start { text-align:start; }
|
|
2022
|
+
.typography-align-center { text-align:center; }
|
|
2023
|
+
.typography-align-end { text-align:end; }
|
|
2024
|
+
.typography-align-justify { text-align:justify; }
|
|
2025
|
+
.typography-truncate { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2026
|
+
|
|
1981
2027
|
/* PROSA (PLANO-1.0, item L5). É a PELE do texto longo, não o parser — quem transforma Markdown em
|
|
1982
2028
|
elementos é o consumidor. Aqui só se decide como esses elementos se leem.
|
|
1983
2029
|
|
|
@@ -2149,7 +2195,15 @@ img,svg { display:block; }
|
|
|
2149
2195
|
DropdownMenu, ContextMenu, Menubar e a lista da CommandPalette. */
|
|
2150
2196
|
.menu { --menu-px:10px; z-index:var(--z-modal); min-width:200px; max-width:min(320px,calc(100vw - 32px)); padding:var(--space-1); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); }
|
|
2151
2197
|
.menu-item { display:flex; align-items:center; gap:10px; width:100%; min-height:var(--control-h-md); padding:0 var(--menu-px,10px); border:0; border-radius:calc(var(--radius-card) - var(--space-1)); background:transparent; color:var(--foreground); font:inherit; text-align:start; cursor:pointer; }
|
|
2152
|
-
.menu-item[data-highlighted],.menu-item:hover:not([data-disabled]) { background:var(--surface-3);
|
|
2198
|
+
.menu-item[data-highlighted],.menu-item:hover:not([data-disabled]) { background:var(--surface-3); }
|
|
2199
|
+
/* Foco de TECLADO no item: a linha de foco, por dentro, porque a lista recorta o que passa da borda
|
|
2200
|
+
(B-09 e a ordem de 25/09/2026, "HeroUI sempre primeiro": o `menu-item` do HeroUI 3.2.6 leva o
|
|
2201
|
+
`status-focused` no foco de teclado). Até aqui a regra de cima apagava a linha com
|
|
2202
|
+
`outline:none` e vencia a global: com o teclado, o item em foco era só o fundo cinza — igual ao
|
|
2203
|
+
do mouse em cima. O mouse continua só com o fundo: `:focus-visible` não acende por ponteiro.
|
|
2204
|
+
⚠ Onde o foco fica no CAMPO (`Combobox`, `CommandPalette`: o item é destacado por
|
|
2205
|
+
`aria-activedescendant`), o item nunca tem `:focus-visible`, e o destaque continua sendo o fundo. */
|
|
2206
|
+
.menu-item:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2153
2207
|
.menu-item[data-disabled] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2154
2208
|
/* CommandPalette (M6): a lista dentro da paleta. Reusa `.menu` e `.menu-item` — a paleta nao
|
|
2155
2209
|
inventa uma segunda pele de lista, que e o defeito que a `.table-region` cobrou caro. O que se
|
|
@@ -2199,7 +2253,7 @@ img,svg { display:block; }
|
|
|
2199
2253
|
.menubar-trigger { display:inline-flex; align-items:center; min-block-size:var(--control-h-sm); padding-inline:var(--space-3); border:0; border-radius:var(--radius-control); background:transparent; color:var(--foreground); font:inherit; font-size:var(--text-sm); font-weight:var(--weight-medium); white-space:nowrap; cursor:pointer; }
|
|
2200
2254
|
.menubar-trigger:hover { background:var(--surface-hover); }
|
|
2201
2255
|
.menubar-trigger[data-popup-open] { background:var(--secondary); color:var(--primary); }
|
|
2202
|
-
.menubar-trigger:focus-visible { outline:
|
|
2256
|
+
.menubar-trigger:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2203
2257
|
/* Combobox: reaproveita .menu/.menu-item; só dimensionamento e a coluna do check são próprios.
|
|
2204
2258
|
--anchor-width e --available-height vêm do positioner do Base UI. */
|
|
2205
2259
|
.combobox-group { position:relative; display:flex; align-items:center; }
|
|
@@ -2225,7 +2279,7 @@ img,svg { display:block; }
|
|
|
2225
2279
|
/* MultiCombobox (Fase 4) — chips de multi-seleção + grupos. Espaçamento novo tokenizado. */
|
|
2226
2280
|
.combobox-multi { display:flex; align-items:center; gap:var(--space-2); width:100%; min-width:0; min-height:var(--control-h-md); padding:var(--space-1) var(--space-2); background:var(--field-bg); border:1px solid var(--border-strong); border-radius:var(--radius-control); transition:border-color var(--duration-fast); }
|
|
2227
2281
|
.combobox-multi:hover { border-color:var(--border); }
|
|
2228
|
-
.combobox-multi:focus-within { outline:
|
|
2282
|
+
.combobox-multi:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); border-color:var(--focus-strong); }
|
|
2229
2283
|
.combobox-multi>.combobox-actions { position:static; inset-inline-end:auto; }
|
|
2230
2284
|
/* o campo de chips não é `.input`, então a regra de :disabled dos campos não o alcança. Quem
|
|
2231
2285
|
marca aqui é o `data-disabled` que o Base UI põe no InputGroup a partir do estado da Root. */
|
|
@@ -2251,7 +2305,7 @@ img,svg { display:block; }
|
|
|
2251
2305
|
o arrastar-soltar é reforço. Espaçamento novo tokenizado; superfície = card. */
|
|
2252
2306
|
.dropzone { display:flex; flex-direction:column; align-items:center; gap:var(--space-2); padding:var(--space-8) var(--space-6); text-align:center; color:var(--muted-foreground); background:var(--surface-inset); border:1px dashed var(--border-strong); border-radius:var(--radius-card); cursor:pointer; transition:border-color var(--duration-fast),background-color var(--duration-fast); }
|
|
2253
2307
|
.dropzone:hover { border-color:var(--border); }
|
|
2254
|
-
.dropzone:focus-within { outline:
|
|
2308
|
+
.dropzone:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); border-color:var(--focus-strong); }
|
|
2255
2309
|
.dropzone[data-dragging="true"] { border-style:solid; border-color:var(--primary); background:var(--surface-2); }
|
|
2256
2310
|
.dropzone strong { color:var(--foreground); }
|
|
2257
2311
|
.dropzone-icon { color:var(--primary); }
|
|
@@ -2330,7 +2384,7 @@ img,svg { display:block; }
|
|
|
2330
2384
|
.tree-item { outline:none; }
|
|
2331
2385
|
.tree-node { display:flex; align-items:center; gap:var(--space-2); min-height:var(--control-h-md); padding-block:var(--space-1); padding-inline-end:var(--space-3); border-radius:var(--radius-sm); color:var(--foreground); cursor:pointer; user-select:none; }
|
|
2332
2386
|
.tree-node:hover { background:var(--surface-3); }
|
|
2333
|
-
.tree-item:focus-visible > .tree-node { outline:
|
|
2387
|
+
.tree-item:focus-visible > .tree-node { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2334
2388
|
.tree-node[data-selected] { background:color-mix(in srgb,var(--primary) 14%,transparent); }
|
|
2335
2389
|
.tree-twist { flex:none; color:var(--muted-foreground); transition:transform var(--duration-fast); }
|
|
2336
2390
|
.tree-item[aria-expanded="true"] > .tree-node > .tree-twist { transform:rotate(90deg); }
|
|
@@ -2353,7 +2407,7 @@ img,svg { display:block; }
|
|
|
2353
2407
|
.notification-item { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:baseline; column-gap:var(--space-3); row-gap:var(--space-1); width:100%; padding:var(--space-3); border:0; border-radius:var(--radius-sm); background:none; color:var(--foreground); font:inherit; text-align:start; }
|
|
2354
2408
|
button.notification-item { cursor:pointer; }
|
|
2355
2409
|
button.notification-item:hover { background:var(--surface-3); }
|
|
2356
|
-
.notification-item:focus-visible { outline:
|
|
2410
|
+
.notification-item:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2357
2411
|
.notification-dot { grid-row:1/-1; align-self:center; width:8px; height:8px; border-radius:50%; background:var(--primary); }
|
|
2358
2412
|
.notification-item[data-read] .notification-dot { visibility:hidden; }
|
|
2359
2413
|
.notification-item-title { grid-column:2; display:flex; align-items:center; gap:var(--space-2); min-width:0; font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
@@ -2376,14 +2430,14 @@ button.notification-item:hover { background:var(--surface-3); }
|
|
|
2376
2430
|
selecionada usa data-selected (o estado acessível é o checkbox da linha).
|
|
2377
2431
|
Espaço novo tokenizado. */
|
|
2378
2432
|
.datagrid { display:grid; gap:var(--space-3); }
|
|
2379
|
-
.datagrid > .table-wrap:focus-visible { outline:
|
|
2433
|
+
.datagrid > .table-wrap:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); box-shadow:none; }
|
|
2380
2434
|
.datagrid > .pagination { justify-self:end; }
|
|
2381
2435
|
/* Fix aditivo: os 34px dos botões numéricos do .pagination esmagavam os botões
|
|
2382
2436
|
de TEXTO (Anterior/Próxima) do Pagination React. Não muda os numéricos. */
|
|
2383
2437
|
/* text-transform/letter-spacing: o UA reseta nos <button>; herdar explícito
|
|
2384
2438
|
para o cabeçalho ordenável ficar idêntico ao th estático. */
|
|
2385
2439
|
.datagrid-sort { display:inline-flex; align-items:center; gap:var(--space-1); padding:0; border:0; background:none; color:inherit; font:inherit; text-transform:inherit; letter-spacing:inherit; cursor:pointer; }
|
|
2386
|
-
.datagrid-sort:focus-visible { outline:
|
|
2440
|
+
.datagrid-sort:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); border-radius:var(--radius-sm); }
|
|
2387
2441
|
.datagrid-sort-icon { flex:none; color:var(--subtle-foreground); }
|
|
2388
2442
|
th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
2389
2443
|
.datagrid-selcol { width:1%; white-space:nowrap; }
|
|
@@ -2424,7 +2478,7 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
2424
2478
|
.datagrid thead th:has(> .datagrid-resizer) { position:relative; }
|
|
2425
2479
|
.datagrid-resizer { position:absolute; inset-block:0; inset-inline-end:0; inline-size:var(--space-1); padding:0; border:0; background:none; cursor:col-resize; touch-action:none; }
|
|
2426
2480
|
.datagrid-resizer:hover, .datagrid-resizer:focus-visible { background:var(--primary); }
|
|
2427
|
-
.datagrid-resizer:focus-visible { outline:
|
|
2481
|
+
.datagrid-resizer:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2428
2482
|
|
|
2429
2483
|
/* F8: o esqueleto dentro da célula. Sem altura própria ele mede zero — a `.skeleton`
|
|
2430
2484
|
é uma <div> vazia — e a linha de carregamento sairia rasa demais para parecer uma
|
|
@@ -2682,7 +2736,7 @@ button.graph-node-body { cursor:pointer; }
|
|
|
2682
2736
|
mora na cápsula, então é ela que precisa crescer — o filho estica atrás. */
|
|
2683
2737
|
@media (pointer:coarse) { .btn:not(.btn-link),.tabs,.segmented,.pagination button,.schedule-grid button,.media-control,.nav-list-row { min-height:var(--target-min); } .btn-icon,.media-control { min-width:var(--target-min); } }
|
|
2684
2738
|
@media (forced-colors:active) {
|
|
2685
|
-
:focus-visible { outline:
|
|
2739
|
+
:focus-visible { outline:var(--focus-width) solid CanvasText; outline-offset:var(--focus-offset); box-shadow:none; }
|
|
2686
2740
|
.badge,.pattern-gallery button[aria-pressed="true"],.device-grid button[aria-pressed="true"] { border:1px solid CanvasText; }
|
|
2687
2741
|
}
|
|
2688
2742
|
|
|
@@ -2690,9 +2744,12 @@ button.graph-node-body { cursor:pointer; }
|
|
|
2690
2744
|
/* Aurea v1.7 stabilization patch — visual design unchanged. */
|
|
2691
2745
|
.badge-running{background:var(--success-bg);color:var(--success-400);border-color:color-mix(in oklab,var(--success-400) 32%,transparent)}
|
|
2692
2746
|
/* superfície (overflow, borda, fundo, raio) mora junto com a do `.table-wrap` lá em cima — aqui
|
|
2693
|
-
fica só o que é DESTA região: ela é focável, e o
|
|
2747
|
+
fica só o que é DESTA região: ela é focável, e o foco dela é a linha de dentro, abaixo. Era um
|
|
2748
|
+
halo de `--focus` a 38% (B-09, 24/09/2026): claro demais para se ver, e fora do contrato de foco.
|
|
2749
|
+
A linha vai para DENTRO porque a região é o próprio contêiner recortado — como no HeroUI 3.2.6,
|
|
2750
|
+
que desenha o foco da tabela com `inset 0 0 0 2px var(--focus)`. */
|
|
2694
2751
|
.table-region{outline:none}
|
|
2695
|
-
.table-region:focus-visible{
|
|
2752
|
+
.table-region:focus-visible{outline:var(--focus-width) solid var(--focus-strong);outline-offset:calc(-1 * var(--focus-width));box-shadow:none}
|
|
2696
2753
|
/* CONTAINER QUERY, e não breakpoint de viewport — Parte D, item D3 (08/08/2026).
|
|
2697
2754
|
Era `@media (max-width:400px)`, o último dos seis legados do achado M13. Trocar por um degrau
|
|
2698
2755
|
da escala (639px) teria resolvido o gate e mantido o defeito: a largura que aperta os
|