@aurea-uds/core 0.30.0 → 0.32.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 +955 -198
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
--leading-tight:1.2;
|
|
22
22
|
--leading-normal:1.5;
|
|
23
23
|
--leading-relaxed:1.7;
|
|
24
|
+
--text-4xl-leading:1.111111;
|
|
25
|
+
--text-3xl-leading:1.2;
|
|
26
|
+
--text-2xl-leading:1.333333;
|
|
27
|
+
--text-xl-leading:1.4;
|
|
28
|
+
--text-lg-leading:1.555556;
|
|
24
29
|
--space-0:0;
|
|
25
30
|
--space-05:0.125rem;
|
|
26
31
|
--space-1:0.25rem;
|
|
@@ -75,12 +80,12 @@
|
|
|
75
80
|
--breakpoint-xl:1280px;
|
|
76
81
|
--breakpoint-2xl:1536px;
|
|
77
82
|
--control-h-xs:1.625rem;
|
|
78
|
-
--control-h-sm:
|
|
83
|
+
--control-h-sm:2rem;
|
|
79
84
|
--control-h-md:2.25rem;
|
|
80
|
-
--control-h-lg:2.
|
|
85
|
+
--control-h-lg:2.5rem;
|
|
81
86
|
--control-h-xl:3.125rem;
|
|
82
87
|
--row-h:3rem;
|
|
83
|
-
--card-pad:
|
|
88
|
+
--card-pad:1rem;
|
|
84
89
|
--section-gap:1.5rem;
|
|
85
90
|
--media-canvas:oklch(0.085 0 0);
|
|
86
91
|
--media-foreground:oklch(0.985 0 0);
|
|
@@ -443,30 +448,39 @@
|
|
|
443
448
|
--control-h-xs:1.5rem;
|
|
444
449
|
--control-h-sm:1.75rem;
|
|
445
450
|
--control-h-md:2rem;
|
|
446
|
-
--control-h-lg:2.
|
|
451
|
+
--control-h-lg:2.25rem;
|
|
447
452
|
--control-h-xl:2.75rem;
|
|
453
|
+
--touch-control-h-sm:2.25rem;
|
|
454
|
+
--touch-control-h-md:2.75rem;
|
|
455
|
+
--touch-control-h-lg:3.25rem;
|
|
448
456
|
--row-h:2.625rem;
|
|
449
|
-
--card-pad:
|
|
457
|
+
--card-pad:0.75rem;
|
|
450
458
|
--section-gap:1.125rem;
|
|
451
459
|
}
|
|
452
460
|
[data-density="comfortable"]{
|
|
453
461
|
--control-h-xs:1.625rem;
|
|
454
|
-
--control-h-sm:
|
|
462
|
+
--control-h-sm:2rem;
|
|
455
463
|
--control-h-md:2.25rem;
|
|
456
|
-
--control-h-lg:2.
|
|
464
|
+
--control-h-lg:2.5rem;
|
|
457
465
|
--control-h-xl:3.125rem;
|
|
466
|
+
--touch-control-h-sm:2.5rem;
|
|
467
|
+
--touch-control-h-md:3rem;
|
|
468
|
+
--touch-control-h-lg:3.5rem;
|
|
458
469
|
--row-h:3rem;
|
|
459
|
-
--card-pad:
|
|
470
|
+
--card-pad:1rem;
|
|
460
471
|
--section-gap:1.5rem;
|
|
461
472
|
}
|
|
462
473
|
[data-density="spacious"]{
|
|
463
474
|
--control-h-xs:1.75rem;
|
|
464
|
-
--control-h-sm:2.
|
|
475
|
+
--control-h-sm:2.25rem;
|
|
465
476
|
--control-h-md:2.5rem;
|
|
466
|
-
--control-h-lg:
|
|
477
|
+
--control-h-lg:2.75rem;
|
|
467
478
|
--control-h-xl:3.5rem;
|
|
479
|
+
--touch-control-h-sm:2.75rem;
|
|
480
|
+
--touch-control-h-md:3.25rem;
|
|
481
|
+
--touch-control-h-lg:3.75rem;
|
|
468
482
|
--row-h:3.375rem;
|
|
469
|
-
--card-pad:1.
|
|
483
|
+
--card-pad:1.25rem;
|
|
470
484
|
--section-gap:2rem;
|
|
471
485
|
}
|
|
472
486
|
/* Aurea core — component styles. Built with @aurea-uds/tokens into dist/aurea.css. Load @aurea-uds/fonts/css for Atkinson Hyperlegible (ADR-0053). */
|
|
@@ -489,7 +503,11 @@ button,a,[role="button"],input,textarea,select { outline:none; }
|
|
|
489
503
|
o vão: colado, o anel amarelo sumiria no botão amarelo.
|
|
490
504
|
Quem cobra que nenhuma peça ficou de fora é o catálogo inteiro, no navegador:
|
|
491
505
|
`tests/visual/foco-uma-linha.spec.ts`. */
|
|
492
|
-
:is(.input,.textarea,.select,.btn-outline,.btn-primary-outline,.btn-danger-outline,.media-control,.card,.code-block,.graph-node-body):focus-visible { outline-offset:0; border-color:var(--focus-strong); }
|
|
506
|
+
:is(.input,.textarea,.select,.btn-outline,.btn-primary-outline,.btn-danger-outline,.media-control,.card,.code-block,.graph-node-body,.pagination-link):focus-visible { outline-offset:0; border-color:var(--focus-strong); }
|
|
507
|
+
/* A amostra ESCOLHIDA do `ColorSwatch options` (0.32.0) tem borda — a da cor dela — e o foco mora no botão de
|
|
508
|
+
opção invisível de dentro, por isso o `:has`. A referência mostra a borda da cor + vão + anel; a ADR-0059 é a
|
|
509
|
+
escolha A do Victor, nenhuma peça com duas linhas (a varredura do catálogo pegou, 14/10/2026). */
|
|
510
|
+
.color-swatch-option:has(:checked:focus-visible) { outline-offset:0; border-color:var(--focus-strong); }
|
|
493
511
|
button { color:inherit; }
|
|
494
512
|
/* O link NÃO é `--primary`. Medido em 22/08/2026 com o axe e depois à mão: o amarelo da
|
|
495
513
|
marca sobre o fundo do tema CLARO dá 1,73:1, e o AA de texto (WCAG 1.4.3) pede 4,5:1 —
|
|
@@ -734,6 +752,32 @@ img,svg { display:block; }
|
|
|
734
752
|
variante que desenha igual é enfeite. `--shell-top` volta a ser só a altura do topo, porque sem
|
|
735
753
|
margem não há as duas folgas a descontar. */
|
|
736
754
|
.sidebar-flush { --shell-top:var(--topbar-height); height:calc(100vh - var(--shell-top)); max-height:100%; margin:0; border:0; border-inline-end:1px solid var(--sidebar-border); border-radius:0; }
|
|
755
|
+
/* `placement="right"` (0.32.0, DOC-01): a lateral do outro lado. A flutuante já tem margem nos quatro
|
|
756
|
+
lados; a encostada leva o fio para o lado de dentro, que agora é o começo da linha. */
|
|
757
|
+
.sidebar-flush.sidebar-right { border-inline-end:0; border-inline-start:1px solid var(--sidebar-border); }
|
|
758
|
+
/* SEM CAIXA é outra variante (0.32.0): `plain`, o nome que a Aurea já dá ao "sem caixa" (`contentVariant`,
|
|
759
|
+
o painel do `Tabs`, o `KPI`). É a coluna "On this page" de uma documentação, como a da referência: os
|
|
760
|
+
itens soltos na página. Tira só a PINTURA — fundo, cor da borda, sombra — e guarda a geometria da
|
|
761
|
+
flutuante (margens, altura, a mesma borda de 1, agora invisível), então trocar de variante não mexe em
|
|
762
|
+
nada de lugar. O texto continua na escala da lateral: medido nos quatro (Aurea e `lory`, claro e
|
|
763
|
+
escuro), o `--sidebar-foreground` é o mesmo `--foreground` da página. */
|
|
764
|
+
.sidebar-plain { border-color:transparent; background:transparent; box-shadow:none; }
|
|
765
|
+
/* A COLUNA DA DIREITA do `AppShell` (`aside`): a terceira trilha, da largura da lateral, de 1280 para
|
|
766
|
+
cima. Abaixo, ela desce para depois do conteúdo, na última coluna que houver (a do conteúdo entre
|
|
767
|
+
1024 e 1279; a única abaixo de 1024), sem grudar. Com ela, o conteúdo perde a margem da direita: a
|
|
768
|
+
folga entre os dois é a margem da coluna, como entre a lateral e o conteúdo. */
|
|
769
|
+
.app-shell-with-aside { --aside-track:calc(var(--sidebar-width) + var(--space-4)*2); }
|
|
770
|
+
.app-shell-with-aside:has(> .app-shell-aside.sidebar-flush) { --aside-track:var(--sidebar-width); }
|
|
771
|
+
/* `.sidebar.app-shell-aside` (três classes) e não só a classe da coluna: a regra do shell recolhível
|
|
772
|
+
(`.app-shell-collapsible > .sidebar`, mais abaixo na folha) prende TODA lateral na coluna 1, e com
|
|
773
|
+
a mesma força ganharia por vir depois. */
|
|
774
|
+
.app-shell-with-aside > .sidebar.app-shell-aside { grid-column:-2 / -1; grid-row:auto; }
|
|
775
|
+
@media (max-width:1279px) { .app-shell-with-aside > .sidebar.app-shell-aside { position:static; height:auto; max-height:none; } }
|
|
776
|
+
@media (min-width:1280px) {
|
|
777
|
+
.app-shell-with-aside { grid-template-columns:var(--sidebar-track) minmax(0,1fr) var(--aside-track); }
|
|
778
|
+
.app-shell-with-aside > .content.content { grid-column:2; grid-row:2; margin-inline-end:0; }
|
|
779
|
+
.app-shell-with-aside > .sidebar.app-shell-aside { grid-column:3; grid-row:2; }
|
|
780
|
+
}
|
|
737
781
|
/* a lateral ROLA mas nunca mostra a barra (pedido do Victor): a barra nativa risca a
|
|
738
782
|
superfície flutuante e não segue o raio de 22px. `scrollbar-width` cobre Firefox e
|
|
739
783
|
Chrome 121+; o pseudo cobre Safari e Chrome antigo. */
|
|
@@ -838,7 +882,14 @@ img,svg { display:block; }
|
|
|
838
882
|
`--sidebar-accent` e `--sidebar-accent-foreground` já eram PUBLICADOS e não tinham um único
|
|
839
883
|
uso no core — token publicado que ninguém usa é promessa sem entrega, e era o par certo o
|
|
840
884
|
tempo todo. O defeito não é da marca: a marca só o tornou visível. */
|
|
841
|
-
|
|
885
|
+
/* O ITEM ESMAECIDO, como o da referência (ADR-0067, decisão do Victor de 13/10/2026, vendo os dois rodando:
|
|
886
|
+
"B, igual ao dela"): o item que não é o atual fica cinza, e o título de grupo e o item atual ficam fortes;
|
|
887
|
+
passando o mouse, o item acende. O cinza sai da ESCALA DA LATERAL (o texto dela, esmaecido), e não do
|
|
888
|
+
`--muted-foreground` da página — sob a marca `lory` a lateral é escura e a página não (a lição de
|
|
889
|
+
20/08/2026, logo abaixo). Medido contra o fundo da lateral (13/10/2026): 7,6:1 no escuro e 5,4:1 no
|
|
890
|
+
claro; na marca `lory`, 7,8:1 e 5,6:1 — o branco de antes era 14,5:1. */
|
|
891
|
+
.sidebar-item:not([aria-current]) { color:color-mix(in oklab, var(--sidebar-foreground) 68%, transparent); }
|
|
892
|
+
@media (hover:hover) and (pointer:fine) { .sidebar-item:hover { background:var(--sidebar-accent); } .sidebar-item:not([aria-current]):hover { color:var(--sidebar-foreground); } }
|
|
842
893
|
/* A-05 (24/09/2026), decisão do Victor: o item atual da lateral passa a usar a MARCA DA CASA para
|
|
843
894
|
"selecionado" — fundo, texto na cor da marca e o fio de 2px embaixo —, que o `Toggle`, o
|
|
844
895
|
`SegmentedControl`, o `Button variant="nav"` e a navegação do catálogo (`.doc-nav`) já usavam.
|
|
@@ -857,7 +908,10 @@ img,svg { display:block; }
|
|
|
857
908
|
`--sidebar-foreground` em vez de token novo — a lateral não publica um "muted" dela. */
|
|
858
909
|
/* 72% e não 62% desde a 0.27.0 (ADR-0061): com a letra da paleta nova (#242424, menos preta) os 62%
|
|
859
910
|
davam 4,4:1 sobre o branco — o axe pegou na varredura. 72% é o cinza de texto apagado da paleta. */
|
|
860
|
-
|
|
911
|
+
/* O título de grupo da lateral é o da referência (ADR-0067, decisão do Victor de 13/10/2026: "igual ao dela"):
|
|
912
|
+
letra 14, peso médio, SEM maiúsculas, na cor do texto da lateral — mais forte que o item, que é
|
|
913
|
+
esmaecido; 16 antes do grupo. Era 12, em maiúsculas espaçadas, esmaecido. */
|
|
914
|
+
.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); }
|
|
861
915
|
.sidebar-sub { padding-inline-start:var(--space-5); }
|
|
862
916
|
/* RECOLHIDA — a lateral vira trilho de ícones. O rótulo NÃO some do DOM: o React troca a
|
|
863
917
|
classe dele por `.sr-only`, então quem usa leitor de tela continua ouvindo o nome. Ícone
|
|
@@ -1166,7 +1220,10 @@ img,svg { display:block; }
|
|
|
1166
1220
|
`min-width:0` o conteúdo mínimo do flex é o texto inteiro, e o rótulo longo empurra o valor e a
|
|
1167
1221
|
seta para fora da linha em vez de reticenciar. É a mesma família do defeito que a `pill` da
|
|
1168
1222
|
barra inferior pagou em 18/08/2026 — lá o rótulo virava zero, aqui ele expulsaria os vizinhos. */
|
|
1169
|
-
.nav-list-text { flex:1; min-width:0; display:
|
|
1223
|
+
.nav-list-text { flex:1; min-width:0; display:grid; grid-template-columns:minmax(0,1fr); }
|
|
1224
|
+
/* MNT-23, "quem mais" (12/10/2026): a NavList empurrava a página como a árvore (360 → 729), pelo mesmo
|
|
1225
|
+
motivo — o `min-width:0` faz o texto encolher DENTRO da linha, mas a largura mínima da lista ainda era
|
|
1226
|
+
o rótulo inteiro. A grade de uma coluna `minmax(0,1fr)` pede zero e, quando cabe, mostra tudo. */
|
|
1170
1227
|
.nav-list-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
1171
1228
|
.nav-list-description { overflow:hidden; color:var(--muted-foreground); font-size:var(--text-xs); text-overflow:ellipsis; white-space:nowrap; }
|
|
1172
1229
|
/* O VALOR E A SETA NÃO ENCOLHEM: valor cortado MENTE (um "R$ 1.2" no lugar de "R$ 1.234"), e seta
|
|
@@ -1240,7 +1297,15 @@ img,svg { display:block; }
|
|
|
1240
1297
|
/* GAR-14 (0.28.0): o recheio do botão vale também para o aviso preso a ele (`.toast-anchored`),
|
|
1241
1298
|
que tem a MEDIDA do botão — pedido do Victor na bancada. Uma regra só, para os dois nunca
|
|
1242
1299
|
divergirem e para o número não se repetir. */
|
|
1243
|
-
.btn,.toast-anchored { padding-inline:var(--step-px,
|
|
1300
|
+
.btn,.toast-anchored { padding-inline:var(--step-px,var(--space-4)); }
|
|
1301
|
+
/* 0.32.0 — o ícone do botão é o da referência: 16 em tela de 640 para cima, 20 abaixo (no celular),
|
|
1302
|
+
e 16 sempre no `sm` e no `xs`. Era 20 sempre. O tamanho vai no próprio `.icon` (o `--step-icon`
|
|
1303
|
+
não herda), e o ícone de quem pediu outro tamanho (`size` no `Icon`) não é tocado. O `:where()`
|
|
1304
|
+
deixa a regra com a força de UMA classe: a peça que tem medida própria de ícone (o X do
|
|
1305
|
+
`CloseButton`, o link do `MediaEmbed`) continua mandando. */
|
|
1306
|
+
.btn :where(.icon:not(.icon-sm,.icon-lg,.icon-xl)) { --step-icon:var(--icon-md); }
|
|
1307
|
+
@media (min-width:640px) { .btn :where(.icon:not(.icon-sm,.icon-lg,.icon-xl)) { --step-icon:var(--icon-sm); } }
|
|
1308
|
+
.btn-sm :where(.icon:not(.icon-lg,.icon-xl)),.btn-xs :where(.icon:not(.icon-lg,.icon-xl)) { --step-icon:var(--icon-sm); }
|
|
1244
1309
|
.btn:hover:not(:disabled):not([aria-disabled="true"]) { transform:none; } .btn:active:not(:disabled) { transform:scale(.97); opacity:.9; }
|
|
1245
1310
|
/* Duas formas de "não dá para fazer isto", e a diferença é QUEM alcança a explicação.
|
|
1246
1311
|
`:disabled` tira o controle da ordem de foco — medido em 13/08/2026: quem usa teclado nunca
|
|
@@ -1262,8 +1327,8 @@ img,svg { display:block; }
|
|
|
1262
1327
|
sobrescrita por variável que o autor já não leu. Fazer o valor passar pela variável é o que
|
|
1263
1328
|
permite a camada responsiva existir UMA vez, genérica, em vez de uma vez por componente. */
|
|
1264
1329
|
.btn-xs { --step-h:var(--control-h-xs); --step-px:10px; --step-gap:6px; --step-fs:var(--text-xs); border-radius:var(--radius-control); }
|
|
1265
|
-
.btn-sm { --step-h:var(--control-h-sm); --step-px:
|
|
1266
|
-
.btn-lg { --step-h:var(--control-h-lg); --step-px:
|
|
1330
|
+
.btn-sm { --step-h:var(--control-h-sm); --step-px:var(--space-3); --step-fs:var(--text-sm); border-radius:var(--radius-control); }
|
|
1331
|
+
.btn-lg { --step-h:var(--control-h-lg); --step-px:var(--space-4); --step-fs:var(--text-base); border-radius:var(--radius-control); }
|
|
1267
1332
|
.btn-xl { --step-h:var(--control-h-xl); --step-px:26px; --step-gap:10px; --step-fs:var(--text-base); border-radius:var(--radius-control); }
|
|
1268
1333
|
/* Largura total: para rodapé de formulário e tela estreita. Só a largura muda. */
|
|
1269
1334
|
.btn-block { width:100%; }
|
|
@@ -1282,8 +1347,14 @@ img,svg { display:block; }
|
|
|
1282
1347
|
.skip-link:focus-visible { transform:translateY(0); outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1283
1348
|
.btn-primary { --btn-bg:var(--primary); --btn-fg:var(--primary-foreground); --btn-border:transparent; }
|
|
1284
1349
|
.btn-primary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--primary-hover); --btn-border:transparent; }
|
|
1285
|
-
.
|
|
1350
|
+
/* 0.32.0 — os dois botões de fundo neutro da referência (decisão do Victor, 11/10/2026, "A"):
|
|
1351
|
+
o `secondary` com a LETRA DA MARCA (o `--primary-emphasis`, que segue a marca) e o `tertiary` com a
|
|
1352
|
+
letra normal — o `secondary` de até a 0.31.0, e o padrão do `Button` sem `variant`. A regra dela
|
|
1353
|
+
para escolher: salvar é o primário, editar o secundário, cancelar o terciário. */
|
|
1354
|
+
.btn-secondary { --btn-bg:var(--secondary); --btn-fg:var(--primary-emphasis); --btn-border:transparent; }
|
|
1286
1355
|
.btn-secondary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--secondary-hover); --btn-border:transparent; }
|
|
1356
|
+
.btn-tertiary { --btn-bg:var(--secondary); --btn-fg:var(--secondary-foreground); --btn-border:transparent; }
|
|
1357
|
+
.btn-tertiary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--secondary-hover); --btn-border:transparent; }
|
|
1287
1358
|
.btn-outline { --btn-bg:transparent; --btn-fg:var(--foreground); --btn-border:var(--border-strong); }
|
|
1288
1359
|
.btn-outline:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--accent); }
|
|
1289
1360
|
.btn-ghost { --btn-bg:transparent; --btn-fg:var(--foreground); --btn-border:transparent; }
|
|
@@ -1329,14 +1400,24 @@ img,svg { display:block; }
|
|
|
1329
1400
|
[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)); }
|
|
1330
1401
|
.btn-link-danger { --btn-fg:var(--danger-400); }
|
|
1331
1402
|
/* pressed entra na linguagem única de "selecionado" acima; só-ícone não leva o fio. */
|
|
1332
|
-
/* Kbd — a tecla que dispara a ação, dentro ou fora do botão. Peça própria, não decoração.
|
|
1333
|
-
.
|
|
1403
|
+
/* Kbd — a tecla que dispara a ação, dentro ou fora do botão. Peça própria, não decoração.
|
|
1404
|
+
0.32.0: as medidas da referência (24 de altura, 8 dos lados, letra 14 peso médio na fonte do
|
|
1405
|
+
texto, cinza neutro, sem borda); o canto é o nosso: cápsula, e CÍRCULO quando a tecla é um
|
|
1406
|
+
caractere só (`kbd-single`, que o componente põe sozinho). Era 20, letra 11 de código, borda. */
|
|
1407
|
+
.kbd { display:inline-flex; align-items:center; justify-content:center; gap:var(--space-05); min-width:var(--space-6); height:var(--space-6); padding:0 var(--space-2); border:0; border-radius:var(--radius-full); background:var(--secondary); color:var(--muted-foreground); font:var(--weight-medium) var(--text-sm)/1 var(--font-ui); white-space:nowrap; }
|
|
1408
|
+
.kbd-single { width:var(--space-6); padding:0; }
|
|
1334
1409
|
/* dentro do botão a tecla herda a cor do rótulo, SEM opacidade: a 85% o contraste caía
|
|
1335
1410
|
para 3.67:1 (axe) e o atalho é informação, não enfeite. O fundo já o separa. */
|
|
1336
1411
|
/* Dentro do botão a tecla NÃO ganha fundo próprio: qualquer tinta escurece a cápsula e o
|
|
1337
1412
|
rótulo perde contraste (no primary claro caiu a 3.55:1). Sem fundo, o contraste da
|
|
1338
|
-
tecla é o MESMO do rótulo — se o botão passa, ela passa.
|
|
1339
|
-
|
|
1413
|
+
tecla é o MESMO do rótulo — se o botão passa, ela passa. O fio de currentColor separa (sem
|
|
1414
|
+
borda desde a 0.32.0, o fio é sombra por dentro, e não muda a medida).
|
|
1415
|
+
A MEDIDA de dentro do botão (20, para caber no botão pequeno) é declarada pela CLASSE que o `Button` põe no
|
|
1416
|
+
atalho (`btn-kbd`), e não pelo contexto: com o botão de busca do site em toda página, o `.kbd` de 24 e o de 20
|
|
1417
|
+
dividiam a página, e a trava de geometria (uma altura por classe) reprovou (14/10/2026). */
|
|
1418
|
+
.btn .kbd { background:transparent; box-shadow:inset 0 0 0 var(--border-width) color-mix(in oklab, currentColor 35%, transparent); color:inherit; }
|
|
1419
|
+
.btn-kbd { min-width:var(--space-5); height:var(--space-5); padding:0 var(--space-1); font-size:var(--text-xs); }
|
|
1420
|
+
.btn-kbd.kbd-single { width:var(--space-5); padding:0; }
|
|
1340
1421
|
|
|
1341
1422
|
/* nav: item de navegação. Normal = ghost silencioso; o ATIVO (aria-current) ganha texto
|
|
1342
1423
|
amarelo + traço embaixo — SEM borda (pedido do Victor). aria-current, não uma variante
|
|
@@ -1401,22 +1482,50 @@ img,svg { display:block; }
|
|
|
1401
1482
|
/* xs e xl também precisam de largura: sem isto a altura mudava e a largura ficava na do
|
|
1402
1483
|
md, e o alvo só-ícone deixava de ser quadrado (achado na onda Actions, 24/07). */
|
|
1403
1484
|
.btn-icon.btn-xl { width:var(--control-h-xl); }
|
|
1485
|
+
/* CloseButton (HER-12, 0.32.0) — o botão de fechar da referência, quase idêntico: 24 × 24, o X de
|
|
1486
|
+
16 no cinza neutro, esmaecido; escurece com o mouse (o `--secondary-hover` do `.btn-tertiary`) e
|
|
1487
|
+
encolhe para 93% ao apertar, como o dela. O canto é o nosso: círculo cheio. O tamanho do X vai no
|
|
1488
|
+
próprio `.icon`, porque o `--step-icon` não herda. No TOQUE o círculo não cresce: a área de 44
|
|
1489
|
+
(`--target-min`) é um `::before` invisível em volta dele, e o `.btn` de toque o deixa de fora da
|
|
1490
|
+
altura mínima (regra do `pointer:coarse`, mais abaixo). */
|
|
1491
|
+
.close-button { --btn-fg:var(--muted-foreground); position:relative; flex:none; inline-size:var(--space-6); block-size:var(--space-6); min-inline-size:0; min-block-size:0; padding:0; border-radius:var(--radius-full); }
|
|
1492
|
+
.close-button .icon { --step-icon:var(--icon-sm); }
|
|
1493
|
+
.close-button:active:not(:disabled) { transform:scale(.93); }
|
|
1494
|
+
@media (pointer:coarse) { .close-button::before { content:""; position:absolute; inset:calc((var(--space-6) - var(--target-min)) / 2); border-radius:var(--radius-full); } }
|
|
1404
1495
|
/* ThemeToggle (25/09/2026): a cor no ícone mostra o tema para onde se vai. No claro a LUA, na tinta
|
|
1405
1496
|
do texto; no escuro o SOL, no amarelo da marca — as duas combinações se enxergam, e é por isso
|
|
1406
1497
|
que o botão nunca mostra a lua no escuro nem o sol no claro. Mais específico que o `.btn:hover`,
|
|
1407
1498
|
então a cor fica também com o mouse em cima. */
|
|
1408
1499
|
.theme-toggle-moon .icon { color:var(--foreground); }
|
|
1409
1500
|
.theme-toggle-sun .icon { color:var(--primary); }
|
|
1410
|
-
/*
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
.
|
|
1501
|
+
/* GRUPOS COLADOS (0.32.0) — o `ButtonGroup` e o `ToggleGroup` da referência: os botões COLADOS numa
|
|
1502
|
+
cápsula só (vão 0), canto só nas pontas, um fio entre eles (a cor do texto a 15%, metade da
|
|
1503
|
+
altura), sem o encolher ao apertar (o grupo é uma peça só), e o contorno que não dobra entre
|
|
1504
|
+
vizinhos. Os cantos de dentro são retos, como os dela: quem desenha a forma é a cápsula inteira.
|
|
1505
|
+
Até a 0.31.0 eram cápsulas soltas com vão de 4 — continua existindo, como `detached` (o
|
|
1506
|
+
`isDetached` dela), e só ele quebra linha.
|
|
1507
|
+
A DIREÇÃO vem por variável, e não por regra de filho de cada direção: a direção do `ButtonGroup`
|
|
1508
|
+
pode mudar com a largura (camada responsiva, que copia o corpo de `.btn-group-vertical` — o
|
|
1509
|
+
gerador confere que os dois dizem o mesmo) e a do `ToggleGroup` vem do motor (`data-orientation`).
|
|
1510
|
+
Deitado: canto na ponta de dentro da linha (`--btn-group-h`), fio em pé; em pé, o contrário. */
|
|
1511
|
+
.btn-group,.toggle-group { display:inline-flex; align-items:center; gap:0; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); }
|
|
1414
1512
|
/* Grupo VERTICAL (`G-AXIS-01`). `align-items:stretch` é o que faz os botões medirem igual: sem
|
|
1415
1513
|
ele cada um teria a largura do próprio rótulo e a coluna ficaria serrilhada — que é o defeito
|
|
1416
1514
|
que um grupo vertical tem de não ter. */
|
|
1417
|
-
.btn-group-vertical { flex-direction:column; align-items:stretch; }
|
|
1418
|
-
.btn-group
|
|
1419
|
-
.btn-group .btn:
|
|
1515
|
+
.btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; }
|
|
1516
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn { position:relative; border-radius:0; }
|
|
1517
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:first-child { border-start-start-radius:var(--radius-full); border-end-start-radius:var(--btn-group-h); border-start-end-radius:var(--btn-group-v); }
|
|
1518
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:last-child { border-end-end-radius:var(--radius-full); border-start-end-radius:var(--btn-group-h); border-end-start-radius:var(--btn-group-v); }
|
|
1519
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:only-child { border-radius:var(--radius-full); }
|
|
1520
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn + .btn::before { content:""; position:absolute; inset-inline-start:var(--btn-group-sep-i); inset-block-start:var(--btn-group-sep-b); inline-size:var(--btn-group-sep-w); block-size:var(--btn-group-sep-h); border-radius:var(--radius-full); background:currentColor; opacity:.15; pointer-events:none; }
|
|
1521
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:active:not(:disabled) { transform:none; }
|
|
1522
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn-outline:not(:last-child) { border-inline-end-width:var(--btn-group-bi); border-block-end-width:var(--btn-group-bb); }
|
|
1523
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn-outline:not(:first-child) { border-inline-start-width:var(--btn-group-bi); border-block-start-width:var(--btn-group-bb); }
|
|
1524
|
+
/* o anel de foco de um botão do meio fica por cima dos vizinhos, e não por baixo */
|
|
1525
|
+
:is(.btn-group,.toggle-group) > .btn:focus-visible { z-index:1; }
|
|
1526
|
+
.btn-group-detached,.toggle-group-detached { flex-wrap:wrap; gap:var(--space-1); }
|
|
1527
|
+
.btn-group-full,.toggle-group-full { display:flex; inline-size:100%; }
|
|
1528
|
+
:is(.btn-group-full,.toggle-group-full) > .btn { flex:1 1 0%; min-inline-size:0; }
|
|
1420
1529
|
/* Toolbar: contêiner de controles; o roving tabindex vem do Base UI. */
|
|
1421
1530
|
.toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:6px; padding:6px; border:1px solid var(--border); border-radius:var(--radius-control); background:var(--secondary); }
|
|
1422
1531
|
/* Vertical sai da pílula: --radius-control (999px) clampa em 50% da menor
|
|
@@ -1445,8 +1554,11 @@ img,svg { display:block; }
|
|
|
1445
1554
|
/* O spinner lê a MESMA escala de glifo, mas o degrau base dele é `sm` e não `md` — presumir
|
|
1446
1555
|
`md` como base de toda família é o erro que esta atividade já cometeu duas vezes. */
|
|
1447
1556
|
.spinner { width:var(--step-icon,var(--icon-sm)); height:var(--step-icon,var(--icon-sm)); border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:spin .7s linear infinite; }
|
|
1448
|
-
.
|
|
1449
|
-
|
|
1557
|
+
/* 0.32.0: a escala da referência — 16 · 24 · 32 · 40. O componente nasce no `md` (24); o glifo cru
|
|
1558
|
+
continua no `sm` (16), dentro do botão e do aviso. */
|
|
1559
|
+
.spinner-md { --step-icon:var(--space-6); }
|
|
1560
|
+
.spinner-lg { --step-icon:var(--space-8); }
|
|
1561
|
+
.spinner-xl { --step-icon:var(--space-10); } @keyframes spin { to { transform:rotate(360deg); } }
|
|
1450
1562
|
|
|
1451
1563
|
.field { display:flex; flex-direction:column; gap:7px; }
|
|
1452
1564
|
/* CAMPO NA HORIZONTAL — rótulo à esquerda, controle à direita. É a linha do formulário de
|
|
@@ -1459,18 +1571,28 @@ img,svg { display:block; }
|
|
|
1459
1571
|
.field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); }
|
|
1460
1572
|
.field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); }
|
|
1461
1573
|
.field-horizontal>*:not(.label) { grid-column:2; }
|
|
1462
|
-
.
|
|
1463
|
-
|
|
1464
|
-
|
|
1574
|
+
/* 0.32.0 — o rótulo, a dica e a descrição da referência: rótulo 14 PESO MÉDIO (era 600); dica e
|
|
1575
|
+
descrição 12 com entrelinha 16, esmaecidas e SEM negrito (a dica mora na linha do rótulo e herdava
|
|
1576
|
+
o 600 dele). O obrigatório ganha o asterisco vermelho depois do rótulo, escondido do leitor de
|
|
1577
|
+
tela — quem anuncia "obrigatório" é o `required` do controle, e não o desenho. */
|
|
1578
|
+
.label { display:flex; justify-content:space-between; gap:12px; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
1579
|
+
.hint { color:var(--muted-foreground); font-size:var(--text-xs); font-weight:var(--weight-regular); line-height:var(--space-4); }
|
|
1580
|
+
.label-required { margin-inline-start:var(--space-05); color:var(--danger-400); }
|
|
1581
|
+
.input,.textarea,.select { width:100%; min-width:0; block-size:var(--step-h,var(--control-h-md)); padding-block:0; padding-inline:var(--step-field-px,var(--space-3)); color:var(--foreground); background:var(--field-bg); border:1px solid var(--border-strong); border-radius:var(--radius-control); transition:border-color var(--duration-fast),background-color var(--duration-fast),box-shadow var(--duration-fast); }
|
|
1465
1582
|
.input:hover,.textarea:hover,.select:hover { border-color:var(--border); }
|
|
1583
|
+
/* `variant="secondary"` (0.32.0), o da referência: o campo de fundo NEUTRO e sem borda à vista, para
|
|
1584
|
+
dentro de um cartão, onde o fundo de campo some contra o do cartão. A borda fica (transparente),
|
|
1585
|
+
para o foco continuar sendo a borda que muda de cor (ADR-0059). */
|
|
1586
|
+
.input-secondary,.textarea-secondary { background:var(--secondary); border-color:transparent; }
|
|
1587
|
+
.input-secondary:hover,.textarea-secondary:hover { background:var(--secondary-hover); border-color:transparent; }
|
|
1466
1588
|
.input::placeholder,.textarea::placeholder { color:var(--subtle-foreground); }
|
|
1467
1589
|
.input:disabled,.textarea:disabled,.select:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1468
1590
|
/* O `padding-inline` daqui tem de LER a variável também, e com o próprio padrão: a base do
|
|
1469
1591
|
textarea vem DEPOIS da regra compartilhada e a sobrescrevia, congelando o padding em 14px nos
|
|
1470
1592
|
três degraus. Medido em 22/08/2026 contra o estado anterior — era 12/14/16 e virou 14/14/14.
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
.textarea { min-block-size:104px; padding-block:var(--space-
|
|
1593
|
+
0.32.0: a família de campo passa a ser uniforme no md, como na referência — 12 dos lados no campo
|
|
1594
|
+
e na área de texto (eram 13 e 14), e a área com 8 em cima e embaixo (eram 12). */
|
|
1595
|
+
.textarea { min-block-size:104px; padding-block:var(--space-2); padding-inline:var(--step-field-px,var(--space-3)); resize:vertical; border-radius:var(--radius-lg); }
|
|
1474
1596
|
/* chevron: cor = --muted-foreground de cada tema (dark #a1a1a1, light #505050); tokenizar na Fase 1 */
|
|
1475
1597
|
.select { appearance:none; padding-inline-end:var(--step-select-pe,38px); background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23a1a1a1' stroke-width='1.6'/%3E%3C/svg%3E"); background-position:calc(100% - 12px) 50%; background-size:12px 8px; background-repeat:no-repeat; }
|
|
1476
1598
|
[data-theme="light"] .select:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23505050' stroke-width='1.6'/%3E%3C/svg%3E"); }
|
|
@@ -1484,9 +1606,28 @@ img,svg { display:block; }
|
|
|
1484
1606
|
/* NumberField (Lote 1): menos · campo · mais numa peça só, que é onde as referências convergem.
|
|
1485
1607
|
O campo é `.input` — a mesma altura, o mesmo raio, o mesmo foco de qualquer campo do sistema.
|
|
1486
1608
|
Largura em token para caber de 3 a 4 dígitos sem virar caixa de texto. */
|
|
1609
|
+
/* 0.32.0 — o da referência: UM GRUPO SÓ, com a borda e o fundo de campo, e os botões DENTRO dele
|
|
1610
|
+
(40 de largura, ícone 16), cada um separado do número por um fio (a cor esmaecida a 15%). Até a
|
|
1611
|
+
0.31.0 eram dois botões fantasma soltos ao lado de um campo. O foco é o do `InputGroup`: o anel no
|
|
1612
|
+
grupo inteiro, que é a peça que a pessoa vê. No toque o grupo sobe para o alvo de 44, como os
|
|
1613
|
+
botões soltos subiam. */
|
|
1487
1614
|
.number-field { display:inline-flex; }
|
|
1488
|
-
.number-field-group { display:inline-flex; align-items:
|
|
1615
|
+
.number-field-group { display:inline-flex; align-items:stretch; block-size:var(--control-h-md); border:var(--border-width) solid var(--border-strong); border-radius:var(--radius-full); background:var(--field-bg); overflow:hidden; transition:border-color var(--duration-fast),box-shadow var(--duration-fast); }
|
|
1616
|
+
.number-field-group:hover { border-color:var(--border); }
|
|
1617
|
+
.number-field-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
1489
1618
|
.number-field-input { width:var(--space-16); text-align:center; font-variant-numeric:tabular-nums; }
|
|
1619
|
+
.number-field-group > .number-field-input { block-size:auto; border:0; border-radius:0; background:transparent; }
|
|
1620
|
+
.number-field-group > .number-field-input:focus-visible { outline:none; }
|
|
1621
|
+
.number-field-button { flex:none; display:inline-flex; align-items:center; justify-content:center; inline-size:var(--space-10); padding:0; border:0; background:transparent; color:var(--foreground); cursor:pointer; transition:background var(--duration-fast); }
|
|
1622
|
+
.number-field-button .icon { --step-icon:var(--icon-sm); }
|
|
1623
|
+
.number-field-button:hover:not(:disabled) { background:var(--surface-hover); }
|
|
1624
|
+
.number-field-button:active:not(:disabled) { background:color-mix(in oklab, var(--foreground) 10%, transparent); }
|
|
1625
|
+
.number-field-button:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1626
|
+
/* o anel do botão fica DENTRO dele: o grupo corta o que passa da borda */
|
|
1627
|
+
.number-field-button:focus-visible { outline-offset:calc(-1 * var(--focus-width)); }
|
|
1628
|
+
.number-field-decrement { border-inline-end:var(--border-width) solid color-mix(in oklab, var(--muted-foreground) 15%, transparent); }
|
|
1629
|
+
.number-field-increment { border-inline-start:var(--border-width) solid color-mix(in oklab, var(--muted-foreground) 15%, transparent); }
|
|
1630
|
+
@media (pointer:coarse) { .number-field-group { block-size:var(--target-min); } }
|
|
1490
1631
|
/* A ALÇA DE ARRASTO (G-API-02), e só quando `scrubbable` está ligada.
|
|
1491
1632
|
O motor já põe por ESTILO EM LINHA tudo o que é mecânica — `touch-action:none` e
|
|
1492
1633
|
`user-select:none` na alça, e `position:fixed` mais o `transform` no cursor virtual, que ele
|
|
@@ -1511,7 +1652,8 @@ img,svg { display:block; }
|
|
|
1511
1652
|
/* OTPField (Lote 1): um quadrado por dígito. O lado é a altura de controle, então a fila mede o
|
|
1512
1653
|
mesmo que qualquer campo ao lado dela; o padding zera porque o dígito é centralizado. */
|
|
1513
1654
|
.otp-field { display:inline-flex; align-items:center; gap:var(--space-2); }
|
|
1514
|
-
.
|
|
1655
|
+
/* 0.32.0: a casa da referência — 38 × 40, o número 18 em seminegrito (era 36 × 36, letra 14). */
|
|
1656
|
+
.otp-slot { width:calc(var(--space-10) - var(--space-05)); block-size:var(--space-10); padding:0; text-align:center; font-family:var(--font-code); font-size:var(--text-lg); font-weight:var(--weight-semibold); }
|
|
1515
1657
|
/* HoverCard (Lote 1) reusa `.popover`; só limita a largura, porque prévia é conteúdo, não rótulo. */
|
|
1516
1658
|
.hover-card { max-width:min(20rem,calc(100vw - var(--space-8))); }
|
|
1517
1659
|
|
|
@@ -1523,6 +1665,11 @@ img,svg { display:block; }
|
|
|
1523
1665
|
contorno do input de dentro ficaria escondido atrás da borda do grupo. */
|
|
1524
1666
|
.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); }
|
|
1525
1667
|
.input-group:hover { border-color:var(--border); }
|
|
1668
|
+
/* A pele `secondary` do campo vale para o GRUPO, como o tamanho (abaixo): quem desenha a caixa é o grupo, e o
|
|
1669
|
+
`ColorField variant="secondary"` (e todo `InputGroup` com um `Input variant="secondary"` dentro) saía igual ao
|
|
1670
|
+
`primary` (medido na bancada em 14/10/2026). Antes do foco, para a borda do foco valer. */
|
|
1671
|
+
.input-group:has(>.input-secondary) { background:var(--secondary); border-color:transparent; }
|
|
1672
|
+
.input-group:has(>.input-secondary):hover { background:var(--secondary-hover); }
|
|
1526
1673
|
.input-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
1527
1674
|
.input-group:has(.input-sm) { min-block-size:var(--control-h-sm); }
|
|
1528
1675
|
.input-group:has(.input-lg) { min-block-size:var(--control-h-lg); }
|
|
@@ -1628,24 +1775,53 @@ img,svg { display:block; }
|
|
|
1628
1775
|
.collapsible-chevron { flex:none; transition:transform var(--duration-fast) var(--ease-standard); }
|
|
1629
1776
|
.collapsible-trigger[data-panel-open] .collapsible-chevron { transform:rotate(180deg); }
|
|
1630
1777
|
.collapsible-panel { overflow:hidden; }
|
|
1631
|
-
/* TOGGLE GROUP. A pele é a do grupo de botões, porque é o que ele
|
|
1632
|
-
|
|
1778
|
+
/* TOGGLE GROUP. A pele é a do grupo de botões, porque é o que ele é (colado, 0.32.0 — a regra
|
|
1779
|
+
está no `.btn-group`). O que muda é o eixo, que aqui o MOTOR publica. */
|
|
1633
1780
|
/* G-AXIS-06 — a pele destes cinco reage ao `data-orientation` que o MOTOR publica, e não a uma
|
|
1634
1781
|
classe que o React escolhe por conta própria. É o que garante uma fonte de verdade só: o
|
|
1635
1782
|
valor responsivo resolvido vai para o motor, o motor publica o atributo e ajusta o teclado,
|
|
1636
1783
|
e o desenho segue o atributo. Enquanto a orientação vinha de classe, era possível o CSS
|
|
1637
1784
|
dizer coluna e o `aria-orientation` dizer horizontal — foi o que impediu estes cinco de
|
|
1638
1785
|
entrarem no eixo responsivo até 22/08/2026. Ver a ADR-0019. */
|
|
1639
|
-
.toggle-group[data-orientation="vertical"] { flex-direction:column; align-items:stretch; }
|
|
1786
|
+
.toggle-group[data-orientation="vertical"] { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; }
|
|
1640
1787
|
|
|
1641
1788
|
/* Form (M1): empilhar campos com respiro. Nada além disso — sem borda, sem fundo, sem largura.
|
|
1642
1789
|
Formulário é ARRANJO, e arranjo é do Stack/Grid; se esta classe crescer, ela vira uma terceira
|
|
1643
1790
|
maneira de fazer layout e passa a brigar com as duas que já existem. */
|
|
1644
1791
|
.form { display:grid; gap:var(--space-5); }
|
|
1645
1792
|
/* description (B-12): a frase de ajuda embaixo do controle, com a letra e a cor do `.hint`. */
|
|
1646
|
-
.field-description { color:var(--muted-foreground); font-size:var(--text-xs); }
|
|
1647
|
-
|
|
1648
|
-
.
|
|
1793
|
+
.field-description { color:var(--muted-foreground); font-size:var(--text-xs); line-height:var(--space-4); }
|
|
1794
|
+
/* o erro com 4 de recuo, como o da referência (0.32.0) */
|
|
1795
|
+
.field-error { padding-inline:var(--space-1); color:var(--danger-400); font-size:var(--text-xs); line-height:var(--space-4); }
|
|
1796
|
+
/* 0.32.0 — os marcáveis da referência: vão de 12 até o texto, texto 14 PESO MÉDIO (o da caixa era
|
|
1797
|
+
negrito, o `<strong>`), descrição 12/16 esmaecida e sem negrito embaixo dele. */
|
|
1798
|
+
.checkbox,.radio { display:inline-flex; align-items:flex-start; gap:var(--space-3); color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); cursor:pointer; }
|
|
1799
|
+
.checkbox > span > strong { font-weight:inherit; }
|
|
1800
|
+
/* LISTBOX (0.32.0): a da referência — recheio de 4, 4 entre itens; item de 36 no mínimo, 8 dos lados
|
|
1801
|
+
e 6 em cima e embaixo, vão 12; fundo neutro sob o mouse e no foco do teclado (com o anel); o visto
|
|
1802
|
+
de 16 no fim do escolhido; perigo na cor de perigo. O canto é o nosso: cápsula. A seção é um título
|
|
1803
|
+
pequeno e esmaecido em cima dos itens dela. */
|
|
1804
|
+
.list-box { position:relative; display:flex; flex-direction:column; gap:var(--space-1); inline-size:100%; padding:var(--space-1); }
|
|
1805
|
+
.list-box-section { display:flex; flex-direction:column; gap:var(--space-1); }
|
|
1806
|
+
.list-box-section-title { padding:var(--space-2) var(--space-2) var(--space-1); color:var(--muted-foreground); font-size:var(--text-xs); font-weight:var(--weight-medium); }
|
|
1807
|
+
.list-box-item { position:relative; display:flex; align-items:center; gap:var(--space-3); inline-size:100%; min-block-size:var(--control-h-md); padding:calc(var(--space-1) + var(--space-05)) var(--space-2); border-radius:var(--radius-full); color:var(--foreground); font-size:var(--text-sm); cursor:pointer; transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-standard); }
|
|
1808
|
+
.list-box-item:has(.list-box-item-indicator) { padding-inline-end:var(--space-7); }
|
|
1809
|
+
.list-box-item:hover:not([aria-disabled="true"]),.list-box-item:focus-visible { background:var(--secondary); }
|
|
1810
|
+
.list-box-item:focus-visible { outline-offset:calc(-1 * var(--focus-width)); }
|
|
1811
|
+
.list-box-item:active:not([aria-disabled="true"]) { transform:scale(.98); }
|
|
1812
|
+
.list-box-item[aria-disabled="true"] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1813
|
+
.list-box-item > .icon { --step-icon:var(--icon-sm); color:var(--muted-foreground); }
|
|
1814
|
+
.list-box-item-text { display:flex; flex-direction:column; min-inline-size:0; }
|
|
1815
|
+
.list-box-item-label { font-weight:var(--weight-medium); }
|
|
1816
|
+
.list-box-item-description { color:var(--muted-foreground); font-size:var(--text-xs); line-height:var(--space-4); }
|
|
1817
|
+
.list-box-item > .list-box-item-indicator { --step-icon:var(--icon-sm); position:absolute; inset-inline-end:var(--space-2); top:50%; translate:0 -50%; color:var(--foreground); }
|
|
1818
|
+
.list-box-item-danger,.list-box-item-danger > .icon,.list-box-item-danger .list-box-item-indicator { color:var(--danger-400); }
|
|
1819
|
+
/* CHECKBOXGROUP (0.32.0): o da referência — rótulo, descrição, as caixas com 16 antes de cada uma, o
|
|
1820
|
+
erro no fim. A descrição de cada caixa fica alinhada com o texto dela, como no `Checkbox` solto. */
|
|
1821
|
+
.checkbox-group { display:flex; flex-direction:column; align-items:flex-start; }
|
|
1822
|
+
.checkbox-group > .checkbox { margin-block-start:var(--space-4); }
|
|
1823
|
+
.checkbox-group > .field-error { margin-block-start:var(--space-2); }
|
|
1824
|
+
.checkbox > span > .muted { font-size:var(--text-xs); font-weight:var(--weight-regular); line-height:var(--space-4); }
|
|
1649
1825
|
.checkbox input,.radio input { position:absolute; opacity:0; pointer-events:none; }
|
|
1650
1826
|
/* A MARCA DE SELEÇÃO acompanha a densidade, e antes não acompanhava. Era `18px` cru: em
|
|
1651
1827
|
`comfortable` casava com metade da altura de controle por coincidência, e em `compact` e
|
|
@@ -1653,10 +1829,13 @@ img,svg { display:block; }
|
|
|
1653
1829
|
defeito que o achado A1 pegou no SegmentedControl em 26/07/2026.
|
|
1654
1830
|
Metade da altura de controle dá exatamente os 18px de antes em `comfortable`, então a captura
|
|
1655
1831
|
não mexe; o que muda é que agora as outras duas densidades também ficam certas. */
|
|
1656
|
-
.
|
|
1832
|
+
/* 0.32.0: a marca da referência tem 16. A conta passa a "metade menos 2" — 14 · 16 · 18 no sm · md ·
|
|
1833
|
+
lg, e continua andando com a densidade, sem número quebrado. Centrada na primeira linha do texto
|
|
1834
|
+
(`1lh`), qualquer que seja a entrelinha. O canto da caixa é o 6 dela (`--radius-xs`; era 5 cru). */
|
|
1835
|
+
.control-mark { --mark:calc(var(--step-h,var(--control-h-md)) / 2 - var(--space-05)); flex:none; inline-size:var(--mark); block-size:var(--mark); margin-top:calc((1lh - var(--mark)) / 2); display:grid; place-items:center; border:1px solid var(--border-strong); background:var(--field-bg); }
|
|
1657
1836
|
.control-mark-sm { --step-h:var(--control-h-sm); }
|
|
1658
1837
|
.control-mark-lg { --step-h:var(--control-h-lg); }
|
|
1659
|
-
.checkbox .control-mark { border-radius:
|
|
1838
|
+
.checkbox .control-mark { border-radius:var(--radius-xs); } .radio .control-mark { border-radius:50%; }
|
|
1660
1839
|
.checkbox input:checked + .control-mark { background:var(--control-selected); border-color:var(--control-selected); color:var(--control-selected-foreground); }
|
|
1661
1840
|
.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:0; border-color:var(--focus-strong); }
|
|
1662
1841
|
/* Cheia com a cor do foco (marcada, ligada), a peça volta ao VÃO (ADR-0059): colado, o anel sumiria
|
|
@@ -1665,11 +1844,16 @@ img,svg { display:block; }
|
|
|
1665
1844
|
anel volta a colar (vermelho, pela regra do inválido). */
|
|
1666
1845
|
.checkbox input:focus-visible:checked:not([aria-invalid="true"],:user-invalid) + .control-mark,.switch input:focus-visible:checked:not([aria-invalid="true"],:user-invalid) + .switch-track { outline-offset:var(--focus-offset); }
|
|
1667
1846
|
.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); }
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
.switch
|
|
1847
|
+
/* A opção marcada fica CHEIA, com o ponto no meio, como a da referência (o ponto dela tem 8 numa
|
|
1848
|
+
marca de 16: a metade). Era vazia, com o ponto amarelo. */
|
|
1849
|
+
.radio input:checked + .control-mark { background:var(--control-selected); border-color:var(--control-selected); }
|
|
1850
|
+
.radio input:checked + .control-mark:after { content:""; width:50%; height:50%; border-radius:50%; background:var(--control-selected-foreground); }
|
|
1851
|
+
.switch { display:inline-flex; align-items:center; gap:var(--space-3); font-size:var(--text-sm); font-weight:var(--weight-medium); cursor:pointer; } .switch input { position:absolute; opacity:0; }
|
|
1852
|
+
/* O TRILHO DO SWITCH (0.32.0): o da referência, 40 × 20 (sm 32 × 16, lg 48 × 24) — a largura é o
|
|
1853
|
+
dobro da altura. Era 42 × 24. A altura é a de controle MENOS 16: dá exatamente os três dela
|
|
1854
|
+
(32 · 36 · 40 → 16 · 20 · 24), continua andando com a densidade e passa pela `--step-h`, que é o
|
|
1855
|
+
caminho do tamanho responsivo (`size-*`). */
|
|
1856
|
+
.switch-track { --switch-h:calc(var(--step-h,var(--control-h-md)) - var(--space-4)); position:relative; flex:none; inline-size:calc(var(--switch-h) * 2); block-size:var(--switch-h); border-radius:999px; background:var(--muted); border:1px solid var(--border); transition:background var(--duration-base) var(--ease-standard),border-color var(--duration-base) var(--ease-standard); }
|
|
1673
1857
|
.switch-track-sm { --step-h:var(--control-h-sm); }
|
|
1674
1858
|
.switch-track-lg { --step-h:var(--control-h-lg); }
|
|
1675
1859
|
/* O botão TEM de encolher com o trilho: preso em 16px, num trilho `compact` de 20px de altura
|
|
@@ -1681,8 +1865,13 @@ img,svg { display:block; }
|
|
|
1681
1865
|
eixo inline resolve contra a LARGURA do contêiner (40px) e não contra a altura. Escrever a
|
|
1682
1866
|
mesma conta nos dois eixos dava um botão de 34×16 — medido no navegador, não deduzido, depois
|
|
1683
1867
|
que a suíte de captura reprovou duas seções da página de docs. */
|
|
1684
|
-
.
|
|
1685
|
-
|
|
1868
|
+
/* 0.32.0 — a bolinha da referência é uma CÁPSULA (a altura do trilho menos 4; a largura, 11/8 dela:
|
|
1869
|
+
22 × 16 no md), a 2 da borda de fora. O trilho tem borda de 1 (é ela que fica vermelha no
|
|
1870
|
+
inválido), então a folga por dentro é 1. Ligada, ela anda até a outra ponta: `--switch-x`, a
|
|
1871
|
+
mesma distância nos dois sentidos de escrita. */
|
|
1872
|
+
.switch-track:after { --thumb-h:calc(var(--switch-h) - 2 * var(--space-05)); --thumb-w:calc(var(--thumb-h) * 11 / 8); content:""; position:absolute; inset-inline-start:calc(var(--space-05) - var(--border-width)); top:calc(var(--space-05) - var(--border-width)); block-size:var(--thumb-h); inline-size:var(--thumb-w); border-radius:var(--radius-full); background:var(--muted-foreground); transition:transform var(--duration-base) var(--ease-standard),background var(--duration-base) var(--ease-standard); }
|
|
1873
|
+
.switch-track { --switch-x:calc(var(--switch-h) * 2 - (var(--switch-h) - 2 * var(--space-05)) * 11 / 8 - 2 * var(--space-05)); }
|
|
1874
|
+
.switch input:checked + .switch-track { background:var(--control-selected); border-color:var(--control-selected); } .switch input:checked + .switch-track:after { transform:translateX(var(--switch-x)); background:var(--control-selected-foreground); }
|
|
1686
1875
|
.range { width:100%; accent-color:var(--primary); }
|
|
1687
1876
|
/* Slider VERTICAL, no `<input type=range>` NATIVO — sem trocar de motor.
|
|
1688
1877
|
|
|
@@ -1703,14 +1892,96 @@ img,svg { display:block; }
|
|
|
1703
1892
|
`.range{width:100%}` anulava o `width:auto` daqui — a caixa saía 129x16 nos três motores.
|
|
1704
1893
|
Mesma armadilha de ordem de cascata que os tons do botão. */
|
|
1705
1894
|
.range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; }
|
|
1895
|
+
/* SLIDER (HER-05, 0.32.0) — o desenhado da referência. Rótulo e valor na linha de cima (14, peso
|
|
1896
|
+
médio, o número tabular); o trilho de 20 no cinza neutro, o preenchimento na cor da marca; a alça
|
|
1897
|
+
é uma cápsula de 28 × 20 na cor da marca com o miolo de 24 × 16, que encolhe a 90% enquanto se
|
|
1898
|
+
arrasta. O miolo dela é branco sobre o azul; aqui é a cor de LETRA sobre o amarelo
|
|
1899
|
+
(`--primary-foreground`, escura) — branco sobre amarelo quase não se vê. O canto é o nosso: cápsula em tudo. Quem põe a alça e o preenchimento no lugar é o
|
|
1900
|
+
motor, por estilo em linha (posição e tamanho); aqui fica só a pele. Nas pontas a alça fica dentro
|
|
1901
|
+
do trilho pelo jeito da referência: 12 de borda TRANSPARENTE em cada ponta do trilho (o fundo pinta
|
|
1902
|
+
por baixo dela, então o trilho continua inteiro), e a alça, centrada, anda só no miolo. O
|
|
1903
|
+
preenchimento volta 12 para começar na ponta visível. O alinhamento "na borda" do motor faria o
|
|
1904
|
+
mesmo, mas só depois de a página rodar no navegador — a alça sairia invisível no HTML do servidor.
|
|
1905
|
+
Vertical: o valor em cima, o trilho no meio, o rótulo embaixo, e a altura é a do `Range` vertical
|
|
1906
|
+
(`--range-vertical-size`). */
|
|
1907
|
+
.slider { display:grid; grid-template-areas:"label output" "track track"; grid-template-columns:minmax(0,1fr) auto; gap:var(--space-1); inline-size:100%; }
|
|
1908
|
+
.slider-label { grid-area:label; inline-size:fit-content; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
1909
|
+
.slider-output { grid-area:output; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; }
|
|
1910
|
+
.slider-control { grid-area:track; display:flex; align-items:center; touch-action:none; }
|
|
1911
|
+
.slider-track { position:relative; inline-size:100%; block-size:var(--space-5); border-inline:var(--space-3) solid transparent; border-radius:var(--radius-full); background:var(--secondary); }
|
|
1912
|
+
.slider-fill { box-sizing:content-box; block-size:100%; margin-inline-start:calc(-1 * var(--space-3)); padding-inline-start:var(--space-3); border-radius:var(--radius-full); background:var(--primary); }
|
|
1913
|
+
.slider-thumb { display:grid; place-items:center; inline-size:calc(var(--space-6) + var(--space-1)); block-size:100%; border-radius:var(--radius-full); background:var(--primary); cursor:grab; }
|
|
1914
|
+
.slider-thumb::after { content:""; inline-size:var(--space-6); block-size:var(--space-4); border-radius:var(--radius-full); background:var(--primary-foreground); box-shadow:var(--shadow-sm); transition:scale var(--duration-fast) var(--ease-standard); }
|
|
1915
|
+
.slider-thumb[data-dragging] { cursor:grabbing; }
|
|
1916
|
+
.slider-thumb[data-dragging]::after { scale:.9; }
|
|
1917
|
+
.slider-thumb:has(input:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1918
|
+
.slider[data-disabled] { opacity:var(--opacity-disabled); }
|
|
1919
|
+
.slider[data-disabled] .slider-thumb { cursor:not-allowed; }
|
|
1920
|
+
.slider[data-orientation="vertical"] { grid-template-areas:"output" "track" "label"; grid-template-columns:minmax(0,1fr); justify-items:center; gap:var(--space-2); inline-size:auto; }
|
|
1921
|
+
.slider[data-orientation="vertical"] .slider-control { block-size:var(--range-vertical-size,10rem); }
|
|
1922
|
+
.slider[data-orientation="vertical"] .slider-track { inline-size:var(--space-5); block-size:100%; border-inline:0; border-block:var(--space-3) solid transparent; }
|
|
1923
|
+
.slider[data-orientation="vertical"] .slider-fill { inline-size:100%; margin-inline-start:0; padding-inline-start:0; margin-block-end:calc(-1 * var(--space-3)); padding-block-end:var(--space-3); }
|
|
1924
|
+
.slider[data-orientation="vertical"] .slider-thumb { inline-size:100%; block-size:calc(var(--space-6) + var(--space-1)); }
|
|
1925
|
+
.slider[data-orientation="vertical"] .slider-thumb::after { inline-size:var(--space-4); block-size:var(--space-6); }
|
|
1926
|
+
@media (prefers-reduced-motion:reduce) { .slider-thumb::after { transition:none; } }
|
|
1927
|
+
/* A TRILHA DE COR (0.32.0, ADR-0069) — a variação `channel` do Slider, em qualquer canal. A pintura (a exceção da
|
|
1928
|
+
ADR-0069) chega pela variável que o componente põe; esta folha não escreve gradiente (check 4). O gradiente vai
|
|
1929
|
+
de ponta a ponta do trilho (`background-origin: border-box`) e as paradas começam na folga (`--slider-cap`, a
|
|
1930
|
+
mesma de onde o pino para): a ponta tem a cor chapada do mínimo e do máximo. Sem o preenchimento: a cor É a
|
|
1931
|
+
trilha. O pino é o da referência (lido no CSS publicado dela, 3.2.6): redondo de 16, na cor do valor, com o anel
|
|
1932
|
+
branco de 3 — branco nos dois temas, porque fica sobre a cor. A cor do pino vai por uma sombra por dentro, para o
|
|
1933
|
+
xadrez aparecer por baixo quando ela é transparente.
|
|
1934
|
+
O XADREZ (14/10/2026, o Victor: "xadrez sim", só onde há transparência) é desenho de SVG, e não gradiente: no
|
|
1935
|
+
alfa, embaixo da trilha e do pino. E `forced-color-adjust:none`, como na biblioteca da referência: com o alto
|
|
1936
|
+
contraste do sistema, a trilha continua mostrando as cores. */
|
|
1937
|
+
/* O xadrez da transparência, um desenho só para as peças que o mostram (a trilha do alfa, a amostra transparente). */
|
|
1938
|
+
.slider-color,.color-swatch-alpha { --color-checker:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M0 0h8v8H0z'/%3E%3Cpath fill='%23c8c8c8' d='M0 0h4v4H0zM4 4h4v4H4z'/%3E%3C/svg%3E"); }
|
|
1939
|
+
.slider-color { --slider-cap:var(--space-3); }
|
|
1940
|
+
.slider-color .slider-track { background:var(--slider-track-fill,var(--secondary)); background-origin:border-box; forced-color-adjust:none; }
|
|
1941
|
+
.slider-alpha .slider-track { background-image:var(--slider-track-fill,none),var(--color-checker); background-size:auto,var(--space-2) var(--space-2); }
|
|
1942
|
+
.slider-color .slider-thumb { box-sizing:border-box; inline-size:var(--space-4); block-size:var(--space-4); align-self:center; border:calc(3 * var(--border-width)) solid #fff; background:var(--color-checker) center/var(--space-2) var(--space-2); box-shadow:inset 0 0 0 var(--space-4) var(--slider-thumb-color,var(--primary)), 0 0 0 var(--border-width) rgba(0,0,0,.1), var(--shadow-sm); forced-color-adjust:none; }
|
|
1943
|
+
.slider-color .slider-thumb::after { content:none; }
|
|
1944
|
+
.slider-color[data-orientation="vertical"] .slider-thumb { inline-size:var(--space-4); block-size:var(--space-4); }
|
|
1945
|
+
/* COLORAREA (0.32.0, ADR-0069) — a área de cor. A pintura (o gradiente, a ÚNICA exceção à ADR-0007) chega pela
|
|
1946
|
+
variável que o componente põe (`--color-area-fill`): esta folha não escreve gradiente nenhum (check 4).
|
|
1947
|
+
Medidas da referência, lidas no CSS publicado dela (3.2.6): quadrada, até 224 de largura, canto 16; o pino de
|
|
1948
|
+
16 que cresce para 20 ao arrastar, com o anel de 3. 224 não tem token: sai de dois `--space-24` e um `--space-8`.
|
|
1949
|
+
O anel é BRANCO nos dois temas, e não um token de tema: ele fica sobre a cor escolhida, e não sobre a página.
|
|
1950
|
+
Os dois `range` escondidos (o motor da área) cobrem o pino com opacidade quase zero, como na referência: o
|
|
1951
|
+
leitor de tela por toque os acha no lugar do pino. */
|
|
1952
|
+
.color-area { position:relative; inline-size:100%; max-inline-size:calc(2 * var(--space-24) + var(--space-8)); aspect-ratio:1; border-radius:var(--radius-lg); background:var(--color-area-fill,var(--secondary)); background-blend-mode:var(--color-area-blend,normal); box-shadow:inset 0 0 0 var(--border-width) rgba(0,0,0,.1); touch-action:none; cursor:crosshair; user-select:none; forced-color-adjust:none; }
|
|
1953
|
+
/* Os pontinhos (`showDots`, o da referência: um ponto branco a 20% a cada 8) são desenho de SVG por cima da área,
|
|
1954
|
+
e não gradiente. O pino fica acima deles. */
|
|
1955
|
+
.color-area-dots::after { content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Ccircle cx='4' cy='4' r='1' fill='%23fff' fill-opacity='.2'/%3E%3C/svg%3E"); background-size:var(--space-2) var(--space-2); }
|
|
1956
|
+
.color-area-dots .color-area-thumb { z-index:1; }
|
|
1957
|
+
.color-area[data-disabled] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1958
|
+
.color-area-thumb { position:absolute; box-sizing:border-box; inline-size:var(--space-4); block-size:var(--space-4); margin-inline-start:calc(var(--space-4) / -2); margin-block-start:calc(var(--space-4) / -2); border:calc(3 * var(--border-width)) solid #fff; border-radius:var(--radius-full); background:var(--color-area-thumb,transparent); box-shadow:0 0 0 var(--border-width) rgba(0,0,0,.1), inset 0 0 0 var(--border-width) rgba(0,0,0,.1); pointer-events:none; forced-color-adjust:none; transition:inline-size var(--duration-base) var(--ease-standard), block-size var(--duration-base) var(--ease-standard), margin var(--duration-base) var(--ease-standard); }
|
|
1959
|
+
.color-area[data-dragging] .color-area-thumb { inline-size:var(--space-5); block-size:var(--space-5); margin-inline-start:calc(var(--space-5) / -2); margin-block-start:calc(var(--space-5) / -2); }
|
|
1960
|
+
.color-area-thumb[data-focus-visible] { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1961
|
+
.color-area-input { position:absolute; inset:0; inline-size:100%; block-size:100%; margin:0; opacity:.0001; pointer-events:none; }
|
|
1962
|
+
@media (prefers-reduced-motion:reduce) { .color-area-thumb { transition:none; } }
|
|
1963
|
+
/* COLORPICKER (0.32.0, ADR-0069) — o gatilho é a amostra com o nome, em linha, com o vão de 12 (o da referência,
|
|
1964
|
+
lido no CSS publicado dela, 3.2.6). A janela é o `.popover` com o recheio dela — 8 em cima e dos lados, 12
|
|
1965
|
+
embaixo — e o vão de 12; a largura é a da área (224) mais o recheio, sem número novo. Dentro, a área ocupa a
|
|
1966
|
+
largura toda. */
|
|
1967
|
+
.color-picker-trigger { display:inline-flex; align-items:center; gap:var(--space-3); padding:0; border:0; border-radius:var(--radius-full); background:none; color:var(--foreground); font:inherit; font-size:var(--text-sm); font-weight:var(--weight-medium); cursor:pointer; }
|
|
1968
|
+
.color-picker-trigger:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1969
|
+
.color-picker-trigger:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1970
|
+
.color-picker-popover { min-width:0; inline-size:calc(2 * var(--space-24) + var(--space-8) + 2 * var(--space-2)); padding:var(--space-2) var(--space-2) var(--space-3); gap:var(--space-3); }
|
|
1971
|
+
.color-picker-popover > .color-area { max-inline-size:none; }
|
|
1706
1972
|
|
|
1707
1973
|
/* A CÁPSULA é que tem de medir igual a um botão/campo ao lado — não o botão de dentro.
|
|
1708
1974
|
Antes: `height:30px` no filho, cru. Em comfortable dava 30+3+3=36 = --control-h-md por
|
|
1709
1975
|
coincidência; em compact a cápsula ficava 4px alta demais e em spacious 4px baixa demais,
|
|
1710
1976
|
porque a densidade não alcançava a regra (achado A1, 26/07/2026). Com a altura na cápsula
|
|
1711
1977
|
os filhos esticam sozinhos (align-items é stretch por padrão) e a conta fecha nas TRÊS. */
|
|
1712
|
-
.
|
|
1713
|
-
|
|
1978
|
+
/* 0.32.0 — as medidas das abas da referência (o segmentado é a mesma peça): trilho com 4 de recheio
|
|
1979
|
+
e sem vão; cada segmento com a altura `sm` (32 no padrão, e anda com a densidade), 16 dos lados,
|
|
1980
|
+
letra peso médio. O trilho dá 40 (era 36: 3 + 30 + 3). */
|
|
1981
|
+
/* A borda transparente de 1 (as abas não têm) entra no recheio: 1 + 3 = os 4 da referência, e o
|
|
1982
|
+
trilho mede 40 como o das abas — sem o desconto, 42 (a geometria pegou). */
|
|
1983
|
+
.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; }
|
|
1984
|
+
.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; }
|
|
1714
1985
|
.segmented button.active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
1715
1986
|
/* `fullWidth` (A5, 06/10/2026): ocupa a linha, e cada segmento cresce a partir do rótulo sem
|
|
1716
1987
|
encolher abaixo dele — o mesmo desenho do nativo. `1 0 auto` e não `1` (= `1 1 0%`): base zero
|
|
@@ -1736,6 +2007,14 @@ img,svg { display:block; }
|
|
|
1736
2007
|
claro e 1,02:1 no escuro. Sobre o trilho a cápsula é --segment, com a sombra pequena — como a
|
|
1737
2008
|
aba da referência principal. O rótulo na cor da marca e o fio continuam. */
|
|
1738
2009
|
.segmented button.active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
2010
|
+
/* O TOGGLE LIGADO tem fundo próprio (0.32.0). Com o solto no fundo neutro (o `default` da referência),
|
|
2011
|
+
o cinza do "selecionado" acima deixava ligado e desligado com o MESMO fundo — só a letra e o fio
|
|
2012
|
+
mudavam, e o `skin.spec` cobra que o ligado pareça ligado pelo fundo. O ligado dela é o tom suave
|
|
2013
|
+
da marca; o da Aurea é o "clarinho" (o amarelo a 10%, a receita do `.badge-primary` que o Victor
|
|
2014
|
+
escolheu para a página atual da paginação), aqui sobre o cinza, para o grupo colado continuar uma
|
|
2015
|
+
cápsula só. A letra da marca e o fio continuam os do "selecionado". */
|
|
2016
|
+
.btn.toggle[data-pressed] { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary)); background:var(--btn-bg); }
|
|
2017
|
+
.btn.toggle[data-pressed]:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary-hover)); }
|
|
1739
2018
|
/* O ATIVO DA NAV DA LATERAL sai da escala DELA, e não da página (20/08/2026, o Victor viu sob a
|
|
1740
2019
|
marca `lory`). Ele dividia esta regra com o `.segmented`, que vive no conteúdo — e `--secondary`
|
|
1741
2020
|
é quase branco no tema claro. Numa lateral escura isso desenhava uma pílula branca com texto
|
|
@@ -1756,7 +2035,7 @@ img,svg { display:block; }
|
|
|
1756
2035
|
saíram com a mesma cor. Com o `:not` ela pesa (0,3,1) e só alcança quem está em repouso. */
|
|
1757
2036
|
[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); }
|
|
1758
2037
|
.is-selected::after,.btn-nav[aria-current]:not([aria-current="false"])::after,
|
|
1759
|
-
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented button.active::after,
|
|
2038
|
+
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented button.active::after,.tabs-secondary .tab[data-active]::after,
|
|
1760
2039
|
.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); }
|
|
1761
2040
|
/* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
|
|
1762
2041
|
.doc-nav a.active::after,.sidebar-item[aria-current]::after { background:color-mix(in oklab, var(--sidebar-primary) 75%, transparent); }
|
|
@@ -1773,7 +2052,11 @@ img,svg { display:block; }
|
|
|
1773
2052
|
classe media 26px dentro do .brand (lh 18px) e 22px dentro de um .btn-nav (lh 12px) — na
|
|
1774
2053
|
mesma barra (achado A2, 26/07/2026). Geometria de componente não se decide pelo contexto.
|
|
1775
2054
|
O .chip do catálogo já tinha aprendido isso; o .badge não. */
|
|
1776
|
-
.
|
|
2055
|
+
/* 0.32.0: as medidas do Chip da referência (o `Badge` da Aurea é o Chip dela), lidas no CSS publicado:
|
|
2056
|
+
24 de altura, 10 até o texto (8 da caixa + 2 do rótulo — aqui, com a borda de 1 que é nossa, 9), 4
|
|
2057
|
+
entre o glifo e o texto (era 6); `sm` 20 com 6 até o texto, `lg` 28 com 14 e letra de 14. A cápsula e a
|
|
2058
|
+
borda continuam da Aurea, como no nativo (0.11.0). */
|
|
2059
|
+
.badge { --badge-accent:var(--secondary-foreground); display:inline-flex; align-items:center; justify-content:center; gap:var(--space-1); min-height:var(--space-6); padding:0 calc(var(--space-2) + var(--space-05) - var(--border-width)); border:1px solid var(--border); border-radius:var(--radius-control); background:var(--secondary); color:var(--secondary-foreground); font-size:var(--text-xs); font-weight:var(--weight-medium); line-height:var(--space-4); white-space:nowrap; }
|
|
1777
2060
|
/* O glifo do badge tem tamanho PRÓPRIO, senão o `.icon` padrão (20px) estoura os 24px e o
|
|
1778
2061
|
badge com ícone fica mais alto que o badge de texto na mesma fila. 16px + 3+3 de padding
|
|
1779
2062
|
+ 1+1 de borda = 24px exatos: com ícone ou sem, mede o mesmo. */
|
|
@@ -1785,8 +2068,8 @@ img,svg { display:block; }
|
|
|
1785
2068
|
.badge-primary { --badge-accent:var(--primary-emphasis); color:var(--primary-emphasis); border-color:var(--primary-outline); background:color-mix(in srgb,var(--primary) 10%,transparent); }
|
|
1786
2069
|
/* TAMANHOS. O md é a base (24px), que não muda — é o que as 103 fichas já usam. */
|
|
1787
2070
|
.badge-xs { min-height:var(--space-4); padding:0 var(--space-1); border-width:0; }
|
|
1788
|
-
.badge-sm { min-height:var(--space-5); padding:0 var(--space-
|
|
1789
|
-
.badge-lg { min-height:var(--space-7); padding:0 var(--space-3); font-size:var(--text-sm); }
|
|
2071
|
+
.badge-sm { min-height:var(--space-5); padding:0 calc(var(--space-1) + var(--space-05) - var(--border-width)); }
|
|
2072
|
+
.badge-lg { min-height:var(--space-7); padding:0 calc(var(--space-3) + var(--space-05) - var(--border-width)); font-size:var(--text-sm); }
|
|
1790
2073
|
/* ACESSÓRIOS de dentro do chip. O ponto herda a cor do texto por `currentColor`, então ele
|
|
1791
2074
|
acompanha variante e ênfase sem uma regra por combinação. */
|
|
1792
2075
|
.badge-dot { flex:none; width:var(--space-2); height:var(--space-2); border-radius:var(--radius-full); background:currentColor; }
|
|
@@ -1903,6 +2186,11 @@ img,svg { display:block; }
|
|
|
1903
2186
|
.card-horizontal > .card-media { grid-row:1 / span 99; border-radius:calc(var(--radius-card) - var(--card-pad)); }
|
|
1904
2187
|
.card-horizontal > :not(.card-media) { grid-column:2; min-width:0; }
|
|
1905
2188
|
.card-raised { box-shadow:none; } .card-inset { background:var(--secondary); }
|
|
2189
|
+
/* `outline` (0.32.0): o cartão da cor de onde ele está, só com a linha em volta — a caixa grande do
|
|
2190
|
+
Início da documentação da referência (o Victor, 13/10/2026: "na mesma cor do site, só tem uma linha
|
|
2191
|
+
ao redor"). O nome é o da referência para "sem fundo, com contorno" (o botão dela); o `transparent`
|
|
2192
|
+
do cartão dela tira também a linha, e esta guarda. A borda, o raio e o recheio são os do `.card`. */
|
|
2193
|
+
.card-outline { background:transparent; }
|
|
1906
2194
|
/* A variante interativa é o ALVO, e desde o G-A11Y-11 ela exige `render` — o elemento vem de
|
|
1907
2195
|
quem consome, e é `<button>` ou `<a href>` conforme a promessa seja ação ou navegação.
|
|
1908
2196
|
As quatro normalizações abaixo existem por causa disso: um <button> traz fonte própria,
|
|
@@ -1939,26 +2227,32 @@ img,svg { display:block; }
|
|
|
1939
2227
|
.card-accent-info { --card-accent:var(--info); } .card-accent-warning { --card-accent:var(--warning); }
|
|
1940
2228
|
.card-accent-danger { --card-accent:var(--destructive); }
|
|
1941
2229
|
.card-header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
|
|
1942
|
-
.
|
|
2230
|
+
/* 0.32.0: o título do cartão da referência, 14/24 peso médio, e a descrição 14/20 colada nele. */
|
|
2231
|
+
.card-title { margin:0; font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--space-6); } .card-subtitle { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
1943
2232
|
|
|
1944
2233
|
/* HER-02 (06/10/2026): o `.alert` e o `.toast` eram `--radius-lg` (16). Painel e superfície
|
|
1945
2234
|
flutuante são `--radius-card` (22) na identidade da Aurea, como o `.popover`, o `.dialog` e o
|
|
1946
2235
|
`.banner`; a referência usa 24 nos dois. */
|
|
1947
|
-
.
|
|
2236
|
+
/* 0.32.0, o Alert da referência (lido no CSS publicado dela, ordem do Victor: "igual ao dela"): o fundo
|
|
2237
|
+
de CARTÃO, sem borda, com a sombra de superfície; 12 em cima e embaixo e 16 dos lados; 16 entre as
|
|
2238
|
+
partes; o ícone de 16 numa caixa de 24; o título 14/24 peso médio NA COR DO ESTADO, e o corpo 14/20
|
|
2239
|
+
esmaecido. Até a 0.31.0 a cor do estado tingia o fundo e a borda. `--alert-tone` é a cor do estado. */
|
|
2240
|
+
.alert { --alert-tone:var(--info-400); display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:start; gap:var(--space-4); padding:var(--space-3) var(--space-4); border:0; border-radius:var(--radius-card); background:var(--card); color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); box-shadow:var(--shadow-sm); }
|
|
2241
|
+
.alert-success { --alert-tone:var(--success-400); } .alert-warning { --alert-tone:var(--warning-400); } .alert-danger { --alert-tone:var(--danger-400); } .alert-accent { --alert-tone:var(--link); }
|
|
1948
2242
|
/* Banner: aviso de largura de página. Base ANTES das variantes — mesma
|
|
1949
2243
|
especificidade, então a última regra vence e a base apagaria as cores. */
|
|
1950
2244
|
.banner { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:12px; padding:14px 18px; border:1px solid var(--border); border-radius:var(--radius-card); background:var(--secondary); }
|
|
1951
|
-
.
|
|
1952
|
-
.
|
|
1953
|
-
.
|
|
1954
|
-
.
|
|
2245
|
+
.banner-info { border-color:color-mix(in srgb,var(--info) 38%,var(--border)); background:var(--info-bg); }
|
|
2246
|
+
.banner-success { border-color:color-mix(in srgb,var(--success) 38%,var(--border)); background:var(--success-bg); }
|
|
2247
|
+
.banner-warning { border-color:color-mix(in srgb,var(--warning) 38%,var(--border)); background:var(--warning-bg); }
|
|
2248
|
+
.banner-danger { border-color:color-mix(in srgb,var(--danger-400) 38%,var(--border)); background:var(--danger-bg); }
|
|
1955
2249
|
/* O título do alerta é <strong> e não <h4>: alerta cai em qualquer profundidade da página e
|
|
1956
2250
|
um h4 fixo quebraria a ordem de cabeçalhos. `display:block` porque o corpo vem embaixo
|
|
1957
2251
|
dele, não ao lado — as duas linhas são o desenho da referência congelada. */
|
|
1958
|
-
.alert h4,.alert strong { display:block; margin:0
|
|
2252
|
+
.alert h4,.alert strong { display:block; margin:0; color:var(--alert-tone); font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--space-6); } .alert p { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
1959
2253
|
/* A cor do glifo é a da variante, senão o ícone vira enfeite cinza e não repete o sinal.
|
|
1960
2254
|
Só o ícone DIRETO do alerta: um ícone dentro do corpo (num botão, num link) é do corpo. */
|
|
1961
|
-
.alert>.icon {
|
|
2255
|
+
.alert>.icon { --step-icon:var(--icon-sm); margin:var(--space-1); color:var(--alert-tone); }
|
|
1962
2256
|
.banner strong { font-size:var(--text-sm); } .banner p { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
1963
2257
|
@media (max-width:640px) { .banner { grid-template-columns:auto minmax(0,1fr); } .banner>:last-child { grid-column:2; justify-self:start; } }
|
|
1964
2258
|
.progress { height:8px; overflow:hidden; border-radius:999px; background:var(--surface-3); }
|
|
@@ -1969,6 +2263,13 @@ img,svg { display:block; }
|
|
|
1969
2263
|
pausado é `neutral`, falha é `danger`. */
|
|
1970
2264
|
.progress-field { display:grid; gap:var(--space-1); }
|
|
1971
2265
|
.progress-detail { justify-self:end; color:var(--muted-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; }
|
|
2266
|
+
/* 0.32.0, a barra da referência: o rótulo à mostra no alto à esquerda (14 peso médio), a saída à direita,
|
|
2267
|
+
e o trilho embaixo, ocupando as duas colunas. sm 4, md 8, lg 12 de espessura. */
|
|
2268
|
+
.progress-field:has(> .progress-label) { grid-template-columns:minmax(0,1fr) auto; }
|
|
2269
|
+
.progress-field:has(> .progress-label) > .progress { grid-column:1 / -1; }
|
|
2270
|
+
.progress-label { color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
2271
|
+
.progress-sm { height:var(--space-1); }
|
|
2272
|
+
.progress-lg { height:var(--space-3); }
|
|
1972
2273
|
.progress-tone-neutral>span { background:var(--muted-foreground); }
|
|
1973
2274
|
.progress-tone-success>span { background:var(--success-400); }
|
|
1974
2275
|
.progress-tone-warning>span { background:var(--warning-400); }
|
|
@@ -1989,11 +2290,15 @@ img,svg { display:block; }
|
|
|
1989
2290
|
já existe (esqueleto, alerta, estado vazio, conteúdo) com respiro entre eles. Se ganhar borda
|
|
1990
2291
|
ou fundo, viram duas superfícies para a mesma coisa — o defeito que a `.table-region` cobrou. */
|
|
1991
2292
|
.data-state { display:grid; gap:var(--space-3); }
|
|
1992
|
-
.skeleton { position:relative; overflow:hidden; border-radius:
|
|
2293
|
+
.skeleton { position:relative; overflow:hidden; border-radius:var(--radius-sm); background:var(--surface-3); }
|
|
1993
2294
|
.skeleton { animation:skeleton-pulse 1.35s ease-in-out infinite; } @keyframes skeleton-pulse { 50% { opacity:.55; } }
|
|
2295
|
+
/* 0.32.0: `animation="none"` para o pulso; e quem pediu menos movimento ao sistema também não o vê. */
|
|
2296
|
+
.skeleton-static { animation:none; }
|
|
2297
|
+
@media (prefers-reduced-motion:reduce) { .skeleton { animation:none; } }
|
|
1994
2298
|
|
|
1995
|
-
/* Mesma regra da .segmented
|
|
1996
|
-
|
|
2299
|
+
/* Mesma regra da .segmented (0.32.0, as medidas da referência): 4 de recheio, sem vão, a aba de 32
|
|
2300
|
+
(`--control-h-sm`, que anda com a densidade), 16 dos lados, peso médio. */
|
|
2301
|
+
.tabs { display:inline-flex; gap:0; padding:var(--space-1); border:0; border-radius:var(--radius-control); background:var(--muted); }
|
|
1997
2302
|
/* Abas VERTICAIS (a família da orientação, achada pela matriz do §13). A raiz vira GRADE e
|
|
1998
2303
|
não linha: com `flex-direction:row` o painel herdaria a altura da lista, e uma aba com
|
|
1999
2304
|
muito conteúdo esticaria a coluna de rótulos junto — medido no navegador em 22/08/2026.
|
|
@@ -2001,25 +2306,48 @@ img,svg { display:block; }
|
|
|
2001
2306
|
painel porque `minmax(0,1fr)` sozinho deixa conteúdo largo (uma tabela) empurrar a coluna
|
|
2002
2307
|
de rótulos para fora. */
|
|
2003
2308
|
.tabs-root[data-orientation="vertical"] { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:var(--space-4); }
|
|
2004
|
-
.tabs[data-orientation="vertical"] { flex-direction:column; align-items:stretch; min-height:0; }
|
|
2309
|
+
.tabs[data-orientation="vertical"] { flex-direction:column; align-items:stretch; gap:var(--space-1); min-height:0; }
|
|
2005
2310
|
/* o rótulo alinha ao INÍCIO da linha: centrado, uma coluna de abas de larguras diferentes
|
|
2006
2311
|
sai serrilhada, que é o mesmo defeito que o `.btn-group-vertical` resolve com `stretch`. */
|
|
2007
|
-
.tabs[data-orientation="vertical"] .tab {
|
|
2008
|
-
.tab { position:relative; padding:0
|
|
2312
|
+
.tabs[data-orientation="vertical"] .tab { text-align:start; }
|
|
2313
|
+
.tab { position:relative; min-block-size:var(--control-h-sm); padding:0 var(--space-4); border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted-foreground); font-weight:var(--weight-medium); cursor:pointer; }
|
|
2009
2314
|
.tab.active,.tab[data-active] { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); } .tab.active:after,.tab[data-active]:after { display:none; }
|
|
2315
|
+
/* `variant="secondary"` (0.32.0): a aba secundária da referência — sem trilho e sem cápsula, um fio
|
|
2316
|
+
embaixo da lista, a escolhida com a letra normal e o fio da casa (a regra do "selecionado", mais
|
|
2317
|
+
abaixo). */
|
|
2318
|
+
.tabs-secondary { gap:var(--space-1); padding:0; border-block-end:var(--border-width) solid var(--border); border-radius:0; background:transparent; }
|
|
2319
|
+
.tabs-secondary[data-orientation="vertical"] { border-block-end:0; border-inline-start:var(--border-width) solid var(--border); }
|
|
2320
|
+
.tabs-secondary .tab { border-radius:0; }
|
|
2321
|
+
.tabs-secondary .tab.active,.tabs-secondary .tab[data-active] { background:transparent; box-shadow:none; color:var(--foreground); }
|
|
2322
|
+
.tabs-secondary .tab[data-active]::after { display:block; }
|
|
2010
2323
|
/* `panel="plain"` (MNT-05 e C9, 06/10/2026): o painel sem caixa, como o painel de abas da
|
|
2011
2324
|
referência. Sem recheio dos lados — o conteúdo começa na linha do que está fora do `Tabs` —, e o
|
|
2012
2325
|
espaço de cima é o mesmo `space-3` do painel do nativo. Na vertical, quem separa é o `gap` da
|
|
2013
2326
|
grade da raiz, então o espaço de cima não entra. */
|
|
2014
2327
|
.tabs-panel { min-width:0; } .tabs-root:not([data-orientation="vertical"])>.tabs-panel { padding-block-start:var(--space-3); }
|
|
2015
|
-
.
|
|
2016
|
-
|
|
2017
|
-
.
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2328
|
+
/* 0.32.0 — a trilha da referência: vão 6, link 14 PESO MÉDIO esmaecido (sublinhado com o mouse, como o
|
|
2329
|
+
dela), a página atual na cor do texto e em peso médio (era negrito), e o separador de 12 (era 16). */
|
|
2330
|
+
.breadcrumb { display:flex; align-items:center; flex-wrap:wrap; gap:calc(var(--space-1) + var(--space-05)); color:var(--muted-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
2331
|
+
.breadcrumb a { color:inherit; text-decoration:none; } .breadcrumb a:hover { color:var(--foreground); text-decoration:underline; text-underline-offset:var(--space-05); }
|
|
2332
|
+
.breadcrumb > .icon { --step-icon:var(--space-3); }
|
|
2333
|
+
.breadcrumb [aria-current="page"] { color:var(--foreground); font-weight:inherit; }
|
|
2334
|
+
/* PAGINATION (0.32.0) — a da referência: o resumo à esquerda (14 esmaecido) e os itens à direita,
|
|
2335
|
+
com 4 entre eles; cada número é uma cápsula de 32 (`--control-h-sm`, 44 no toque), 14 PESO MÉDIO,
|
|
2336
|
+
que escurece com o mouse; "anterior" e "próxima" com a seta de 16 e o texto, 10 dos lados e 6 entre
|
|
2337
|
+
a seta e o texto; as reticências esmaecidas. A página ATUAL é o "clarinho" da Aurea — a receita do
|
|
2338
|
+
`.badge-primary` suave (o amarelo a 10%, o contorno da marca e a letra da marca), decisão do Victor.
|
|
2339
|
+
O `compact` (o desenho de até a 0.31.0) usa o `Button` e o `Badge`, e não passa por aqui. */
|
|
2340
|
+
.pagination { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-4); }
|
|
2341
|
+
.pagination-summary { margin-inline-end:auto; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2342
|
+
.pagination-content { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-1); margin:0; padding:0; list-style:none; }
|
|
2343
|
+
.pagination-link { display:inline-flex; align-items:center; justify-content:center; gap:calc(var(--space-1) + var(--space-05)); min-inline-size:var(--control-h-sm); block-size:var(--control-h-sm); padding-inline:var(--space-1); border:var(--border-width) solid transparent; border-radius:var(--radius-full); background:transparent; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; text-decoration:none; cursor:pointer; transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-standard); }
|
|
2344
|
+
.pagination-link:hover:not(:disabled):not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2345
|
+
.pagination-link:active:not(:disabled):not([aria-disabled="true"]) { transform:scale(.97); }
|
|
2346
|
+
.pagination-link:disabled,.pagination-link[aria-disabled="true"] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2347
|
+
.pagination-link.active { border-color:var(--primary-outline); background:color-mix(in srgb, var(--primary) 10%, transparent); color:var(--primary-emphasis); }
|
|
2348
|
+
.pagination-link-nav { padding-inline:calc(var(--space-2) + var(--space-05)); }
|
|
2349
|
+
.pagination-nav-icon { --step-icon:var(--icon-sm); }
|
|
2350
|
+
.pagination-ellipsis { display:inline-grid; place-items:center; inline-size:var(--control-h-sm); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2023
2351
|
/* Stepper (Lote 2): o container NUNCA existiu no core — só no docs.css, e lá era
|
|
2024
2352
|
`repeat(4,1fr)`, com o número de etapas cravado. `grid-auto-flow:column` distribui N etapas
|
|
2025
2353
|
iguais sem saber quanto é N, e colunas iguais são o que faz a linha conectora (`.step:before`,
|
|
@@ -2065,14 +2393,31 @@ img,svg { display:block; }
|
|
|
2065
2393
|
Somar o seletor em vez de copiar os valores: copiar deixaria duas listas para manter em sincronia,
|
|
2066
2394
|
que é como as duas peles divergiram. O que continua só do `.table-region` é o foco — ele é
|
|
2067
2395
|
`tabIndex=0` (região rolável precisa ser alcançável pelo teclado) e o `.table-wrap` não é. */
|
|
2068
|
-
|
|
2069
|
-
|
|
2396
|
+
/* HER-13 (0.32.0, *"tabela quero como essa"*): a pele da referência, lida no CSS publicado dela — a
|
|
2397
|
+
MOLDURA cinza (sem borda, 4 dos lados e embaixo), o cabeçalho sobre ela (12 peso médio esmaecido, sem
|
|
2398
|
+
caixa-alta, 10 em cima e embaixo e 16 dos lados, com um fio de 16 entre as colunas) e o CORPO como um
|
|
2399
|
+
cartão por dentro: as células no fundo de cartão, 12/16 de recheio, letra de 14/20, um fio a meio-tom
|
|
2400
|
+
entre as linhas e o canto da casa (o da moldura menos a folga, como a ADR-0033) nas quatro pontas.
|
|
2401
|
+
A moldura é a região que rola: no celular a tabela rola de lado dentro dela (a "A" do Victor).
|
|
2402
|
+
A densidade continua da Aurea: o recheio de cima e de baixo sai do `--row-h` (no confortável, 12, o
|
|
2403
|
+
dela). */
|
|
2404
|
+
.table-wrap,.table-region { --table-head-h:calc(var(--space-4) + 2 * (var(--space-2) + var(--space-05))); --table-cell-r:calc(var(--radius-card) - var(--space-1)); overflow:auto; padding:0 var(--space-1) var(--space-1); border-radius:var(--radius-card); background:var(--surface-2); }
|
|
2405
|
+
.table,.table-wrap table { width:100%; border-collapse:separate; border-spacing:0; min-width:720px; font-size:var(--text-sm); }
|
|
2070
2406
|
/* GAR-16 (0.28.0): a tabela inteira com algarismos da mesma largura — a coluna de preço e de ano
|
|
2071
2407
|
alinha. Só os algarismos mudam; o texto das outras colunas fica igual. */
|
|
2072
|
-
.table th,.table td,.table-wrap th,.table-wrap td {
|
|
2073
|
-
|
|
2408
|
+
.table th,.table td,.table-wrap th,.table-wrap td { padding:calc((var(--row-h) - var(--space-5)) / 2 - var(--space-05)) var(--space-4); text-align:start; line-height:var(--space-5); border-bottom:var(--border-width) solid color-mix(in oklab,var(--border) 50%,transparent); font-variant-numeric:tabular-nums; }
|
|
2409
|
+
/* O título da tabela (`caption`) mora na moldura, em cima do cabeçalho, alinhado ao texto das colunas
|
|
2410
|
+
(sem regra, o navegador o centralizava). */
|
|
2411
|
+
.table > caption,.table-wrap table > caption { padding:var(--space-3) var(--space-4) var(--space-1); color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--space-5); text-align:start; }
|
|
2412
|
+
.table thead th,.table-wrap thead th { position:relative; block-size:var(--table-head-h); padding-block:0; border-bottom:0; color:var(--muted-foreground); background:var(--surface-2); font-size:var(--text-xs); font-weight:var(--weight-medium); line-height:var(--space-4); }
|
|
2413
|
+
.table thead th:not(:last-child)::after,.table-wrap thead th:not(:last-child)::after { content:""; position:absolute; inset-inline-end:0; inset-block-start:50%; translate:0 -50%; inline-size:var(--border-width); block-size:var(--space-4); border-radius:var(--radius-full); background:var(--border); pointer-events:none; }
|
|
2414
|
+
.table tbody :is(td,th),.table-wrap tbody :is(td,th) { background:var(--card); }
|
|
2415
|
+
.table tbody tr:first-child > :first-child,.table-wrap tbody tr:first-child > :first-child { border-start-start-radius:var(--table-cell-r); }
|
|
2416
|
+
.table tbody tr:first-child > :last-child,.table-wrap tbody tr:first-child > :last-child { border-start-end-radius:var(--table-cell-r); }
|
|
2417
|
+
.table tbody tr:last-child > :first-child,.table-wrap tbody tr:last-child > :first-child { border-end-start-radius:var(--table-cell-r); }
|
|
2418
|
+
.table tbody tr:last-child > :last-child,.table-wrap tbody tr:last-child > :last-child { border-end-end-radius:var(--table-cell-r); }
|
|
2074
2419
|
.table tr:last-child td,.table-wrap tr:last-child td { border-bottom:0; }
|
|
2075
|
-
.table tbody tr:hover,.table-wrap tbody tr:hover { background:var(--surface-2); }
|
|
2420
|
+
@media (hover:hover) { .table tbody tr:hover > :is(td,th),.table-wrap tbody tr:hover > :is(td,th) { background:color-mix(in oklab,var(--card) 40%,var(--surface-2)); } }
|
|
2076
2421
|
/* GAR-12 e GAR-13 (08/10/2026): a tabela de COMPARAÇÃO — as chaves da `Table` e a pele do HTML de
|
|
2077
2422
|
comparação. A referência principal só tem o cabeçalho preso, à mão, numa caixa de altura fixa; o
|
|
2078
2423
|
resto veio do mercado, por escolha do Victor (o detalhe está no comentário da `Table`).
|
|
@@ -2080,7 +2425,10 @@ img,svg { display:block; }
|
|
|
2080
2425
|
cor do texto, peso médio. Antes herdava a pele do cabeçalho — e ninguém no repositório usava
|
|
2081
2426
|
`th` no corpo (medido), então nenhum exemplo muda. A FAIXA DE GRUPO (`<th scope="rowgroup">`)
|
|
2082
2427
|
continua com a pele do cabeçalho de propósito: é rótulo, no idioma que a tabela já usa. */
|
|
2083
|
-
.table tbody th[scope="row"],.table-wrap tbody th[scope="row"] { color:var(--foreground);
|
|
2428
|
+
.table tbody th[scope="row"],.table-wrap tbody th[scope="row"] { color:var(--foreground); font-size:inherit; font-weight:var(--weight-medium); }
|
|
2429
|
+
/* 0.32.0: a faixa de grupo continua rótulo — o cinza da moldura e a letra do cabeçalho —, agora que o
|
|
2430
|
+
cabeçalho da referência mora só no `thead`. */
|
|
2431
|
+
.table tbody th[scope="rowgroup"],.table-wrap tbody th[scope="rowgroup"] { color:var(--muted-foreground); background:var(--surface-2); font-size:var(--text-xs); font-weight:var(--weight-medium); }
|
|
2084
2432
|
.table tbody tr:last-child th,.table-wrap tbody tr:last-child th { border-bottom:0; }
|
|
2085
2433
|
/* O melhor valor: negrito. O selo "Melhor", em TEXTO, é um `Badge` que o site põe na célula — a
|
|
2086
2434
|
cor sozinha não diz nada a quem não a enxerga (WCAG 1.4.1). */
|
|
@@ -2105,8 +2453,13 @@ img,svg { display:block; }
|
|
|
2105
2453
|
.table-sticky-first :is(thead,tbody,tfoot) > tr > :first-child { position:sticky; inset-inline-start:0; z-index:1; background:var(--card); }
|
|
2106
2454
|
.table-sticky-first thead > tr > :first-child { z-index:2; background:var(--surface-2); }
|
|
2107
2455
|
.table-sticky-first tbody > tr > th[scope="rowgroup"]:first-child { background:var(--surface-2); }
|
|
2108
|
-
.table-sticky-first tbody > tr:hover > :first-child { background:var(--surface-2); }
|
|
2456
|
+
@media (hover:hover) { .table-sticky-first tbody > tr:hover > :first-child { background:color-mix(in oklab,var(--card) 40%,var(--surface-2)); } }
|
|
2109
2457
|
.table-sticky-first :is(thead,tbody,tfoot) > tr > :first-child:not([colspan])::after { content:""; position:absolute; inset-block:0; inset-inline-end:0; inline-size:var(--border-width); background:var(--border); }
|
|
2458
|
+
/* Achado em 12/10/2026 (o teste GAR-12, vencido desde o passo 6): a moldura da tabela tem recheio de 4 dos
|
|
2459
|
+
lados, e a coluna parada gruda na borda de DENTRO dela — a 4. Ao rolar de lado, as células passavam
|
|
2460
|
+
nessa faixa de 4 à esquerda da coluna parada. Cada célula parada tapa a faixa com a cor da moldura, por
|
|
2461
|
+
fora; com propriedade lógica, vale também na escrita da direita para a esquerda. */
|
|
2462
|
+
.table-sticky-first :is(thead,tbody,tfoot) > tr > :first-child::before { content:""; position:absolute; inset-block:0; inset-inline-start:calc(-1 * var(--space-1)); inline-size:var(--space-1); background:var(--surface-2); }
|
|
2110
2463
|
/* Avatar (Lote 2): `overflow:hidden` e o `object-fit` da imagem são a correção do defeito que
|
|
2111
2464
|
a medição achou — foto que não é quadrada vazava inteira da caixa redonda, porque
|
|
2112
2465
|
`border-radius` não recorta filho sozinho. Foto de perfil raramente vem quadrada, então isto
|
|
@@ -2115,10 +2468,104 @@ img,svg { display:block; }
|
|
|
2115
2468
|
`comfortable`. Nada muda de aparência aqui; o que muda é que agora a DENSIDADE alcança o
|
|
2116
2469
|
avatar, e a escala é a mesma dos controles — avatar e botão na mesma linha ficam da mesma
|
|
2117
2470
|
altura por construção, em vez de por coincidência. */
|
|
2118
|
-
.
|
|
2119
|
-
|
|
2120
|
-
|
|
2471
|
+
/* 0.32.0: a escala da referência, 32 · 40 · 48, com a letra de 12 · 14 · 16 em peso médio (era a
|
|
2472
|
+
altura do botão, 32 · 36 · 40, e negrito). `--step-avatar` é a variável de passo própria do avatar
|
|
2473
|
+
(a camada responsiva a emite junto das outras). */
|
|
2474
|
+
.avatar { width:var(--step-avatar,var(--space-10)); height:var(--step-avatar,var(--space-10)); font-size:var(--step-avatar-fs,var(--text-sm)); display:grid; place-items:center; overflow:hidden; border-radius:50%; background:var(--surface-3); color:var(--foreground); border:1px solid var(--border-strong); font-weight:var(--weight-medium); }
|
|
2475
|
+
.avatar-sm { --step-avatar:var(--space-8); --step-avatar-fs:var(--text-xs); }
|
|
2476
|
+
.avatar-lg { --step-avatar:var(--space-12); --step-avatar-fs:var(--text-base); }
|
|
2121
2477
|
.avatar img { width:100%; height:100%; object-fit:cover; }
|
|
2478
|
+
/* LINK (0.32.0): o link de texto da referência — peso médio, a cor de link, sem sublinhado; com o mouse
|
|
2479
|
+
ou apertado, o sublinhado de 1,5 a 4 da letra, na cor esmaecida (a meia força com o mouse). A seta do
|
|
2480
|
+
`external` é o `arrow-up-right` do Phosphor por máscara, a 60% (inteira com o mouse). O desenho é
|
|
2481
|
+
em LINHA (`inline`), e não o bloco em linha dela: o link longo quebra dentro do parágrafo, que é o
|
|
2482
|
+
que a página ampliada a 200% precisa (baixa visão). */
|
|
2483
|
+
.link { border-radius:var(--radius-sm); color:var(--link); font-weight:var(--weight-medium); text-decoration-line:none; text-decoration-thickness:calc(var(--border-width) * 1.5); text-underline-offset:var(--space-1); text-decoration-color:color-mix(in oklab,var(--muted-foreground) 50%,transparent); cursor:pointer; }
|
|
2484
|
+
@media (hover:hover) { .link:hover { color:var(--link-hover); text-decoration-line:underline; } .link:hover > .link-external { opacity:1; } }
|
|
2485
|
+
.link:active { text-decoration-line:underline; text-decoration-color:var(--muted-foreground); }
|
|
2486
|
+
.link[aria-disabled="true"] { opacity:var(--opacity-disabled); text-decoration-line:none; cursor:not-allowed; }
|
|
2487
|
+
.link-external { --link-glifo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M200,64V168a8,8,0,0,1-16,0V83.31L69.66,197.66a8,8,0,0,1-11.32-11.32L172.69,72H88a8,8,0,0,1,0-16H192A8,8,0,0,1,200,64Z'/%3E%3C/svg%3E"); display:inline-block; inline-size:.75em; block-size:.75em; margin-inline-start:var(--space-1); vertical-align:baseline; background:currentColor; opacity:.6; -webkit-mask:var(--link-glifo) center/contain no-repeat; mask:var(--link-glifo) center/contain no-repeat; }
|
|
2488
|
+
/* COLORSWATCH (0.32.0): a amostra de cor da referência — xs 16, sm 24, md 32, lg 36, xl 40 —, só redonda
|
|
2489
|
+
e sem o xadrez (decisão do Victor). O anel de 1 por dentro, a 10% da cor do texto, segura a amostra da
|
|
2490
|
+
cor do fundo no fundo. */
|
|
2491
|
+
.color-swatch { --color-swatch-size:var(--space-8); display:inline-block; flex:none; inline-size:var(--color-swatch-size); block-size:var(--color-swatch-size); border-radius:var(--radius-full); background:var(--color-swatch-current,transparent); box-shadow:inset 0 0 0 var(--border-width) color-mix(in oklab,var(--foreground) 10%,transparent); }
|
|
2492
|
+
.color-swatch-xs { --color-swatch-size:var(--space-4); }
|
|
2493
|
+
.color-swatch-sm { --color-swatch-size:var(--space-6); }
|
|
2494
|
+
.color-swatch-lg { --color-swatch-size:calc(var(--space-8) + var(--space-1)); }
|
|
2495
|
+
.color-swatch-xl { --color-swatch-size:var(--space-10); }
|
|
2496
|
+
/* A amostra TRANSPARENTE (14/10/2026): o xadrez embaixo, e a cor por uma sombra por dentro (a sombra pinta POR CIMA
|
|
2497
|
+
do fundo; a cor de fundo pintaria por baixo do xadrez). O anel de 1 continua por cima de tudo. */
|
|
2498
|
+
.color-swatch-alpha { background:var(--color-checker) center/var(--space-2) var(--space-2); box-shadow:inset 0 0 0 var(--border-width) color-mix(in oklab,var(--foreground) 10%,transparent), inset 0 0 0 var(--color-swatch-size) var(--color-swatch-current,transparent); }
|
|
2499
|
+
/* AS AMOSTRAS PARA ESCOLHER (0.32.0, ADR-0069): a variação `options` do ColorSwatch. Cada cor é um rótulo com um
|
|
2500
|
+
botão de opção nativo por cima, invisível (o navegador cuida da escolha e das setas). O desenho é o da
|
|
2501
|
+
referência (3.2.6): opção de 32 (os mesmos tamanhos da amostra), borda de 2 transparente, vão de 8; a escolhida
|
|
2502
|
+
ganha a borda na cor dela, a amostra encolhe a 77% por dentro e aparece o "visto" (1/3 da opção) — preto ou
|
|
2503
|
+
branco pela conta de contraste (a classe `color-swatch-option-dark`, posta pelo componente). Ao passar o ponteiro, a amostra cresce 10%. */
|
|
2504
|
+
.color-swatch-picker { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2); }
|
|
2505
|
+
.color-swatch-option { --color-swatch-size:var(--space-8); --swatch-glifo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E"); position:relative; display:inline-grid; place-items:center; box-sizing:border-box; inline-size:var(--color-swatch-size); block-size:var(--color-swatch-size); border:calc(2 * var(--border-width)) solid transparent; border-radius:var(--radius-full); cursor:pointer; transition:border-color var(--duration-fast) var(--ease-standard); }
|
|
2506
|
+
.color-swatch-option > .color-swatch { inline-size:100%; block-size:100%; transition:scale var(--duration-fast) var(--ease-standard); }
|
|
2507
|
+
.color-swatch-option::after { content:""; position:absolute; inset:0; margin:auto; inline-size:calc(var(--color-swatch-size) / 3); block-size:calc(var(--color-swatch-size) / 3); background:#fff; -webkit-mask:var(--swatch-glifo) center/contain no-repeat; mask:var(--swatch-glifo) center/contain no-repeat; scale:0; pointer-events:none; transition:scale var(--duration-fast) var(--ease-standard); }
|
|
2508
|
+
.color-swatch-option-dark::after { background:#000; }
|
|
2509
|
+
.color-swatch-option:has(:checked) { border-color:var(--color-swatch-current,transparent); }
|
|
2510
|
+
.color-swatch-option:has(:checked) > .color-swatch { scale:.77; }
|
|
2511
|
+
.color-swatch-option:has(:checked)::after { scale:1; }
|
|
2512
|
+
@media (hover:hover) { .color-swatch-option:not(:has(:checked,:disabled)):hover > .color-swatch { scale:1.1; } }
|
|
2513
|
+
.color-swatch-option:has(:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2514
|
+
.color-swatch-option:has(:disabled) { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2515
|
+
.color-swatch-input { position:absolute; inset:0; z-index:1; margin:0; opacity:0; cursor:inherit; }
|
|
2516
|
+
/* Em coluna (`layout="stack"`) e a marca própria (`indicator`, no lugar do "visto"), como na referência. A marca
|
|
2517
|
+
aparece só na escolhida, na tinta que contrasta, com 1/3 da opção. */
|
|
2518
|
+
.color-swatch-picker-stack { flex-direction:column; align-items:flex-start; }
|
|
2519
|
+
.color-swatch-indicator { position:absolute; inset:0; display:grid; place-items:center; color:#fff; pointer-events:none; scale:0; transition:scale var(--duration-fast) var(--ease-standard); }
|
|
2520
|
+
.color-swatch-indicator > * { inline-size:calc(var(--color-swatch-size) / 3); block-size:calc(var(--color-swatch-size) / 3); }
|
|
2521
|
+
.color-swatch-option-dark .color-swatch-indicator { color:#000; }
|
|
2522
|
+
.color-swatch-option:has(:checked) .color-swatch-indicator { scale:1; }
|
|
2523
|
+
.color-swatch-option:has(.color-swatch-indicator)::after { content:none; }
|
|
2524
|
+
.color-swatch-picker-xs .color-swatch-option { --color-swatch-size:var(--space-4); border-width:var(--border-width); }
|
|
2525
|
+
.color-swatch-picker-sm .color-swatch-option { --color-swatch-size:var(--space-6); }
|
|
2526
|
+
.color-swatch-picker-lg .color-swatch-option { --color-swatch-size:calc(var(--space-8) + var(--space-1)); }
|
|
2527
|
+
.color-swatch-picker-xl .color-swatch-option { --color-swatch-size:var(--space-10); }
|
|
2528
|
+
@media (prefers-reduced-motion:reduce) { .color-swatch-option,.color-swatch-option > .color-swatch,.color-swatch-option::after,.color-swatch-indicator { transition:none; } }
|
|
2529
|
+
/* PROGRESSCIRCLE (0.32.0): o anel da referência — traço de 4 num quadro de 36, ponta redonda, começando no
|
|
2530
|
+
topo —, em 20 · 28 · 36. O trilho e as cores são as do `Progress`. Sem valor, gira. */
|
|
2531
|
+
.progress-circle { --progress-circle-size:calc(var(--space-6) + var(--space-1)); --progress-circle-fill:var(--primary); display:inline-flex; flex:none; inline-size:var(--progress-circle-size); block-size:var(--progress-circle-size); }
|
|
2532
|
+
.progress-circle > svg { inline-size:100%; block-size:100%; }
|
|
2533
|
+
.progress-circle-track,.progress-circle-fill { fill:none; stroke-width:4; }
|
|
2534
|
+
.progress-circle-track { stroke:var(--surface-3); }
|
|
2535
|
+
.progress-circle-fill { stroke:var(--progress-circle-fill); stroke-linecap:round; transform:rotate(-90deg); transform-box:fill-box; transform-origin:center; transition:stroke-dashoffset var(--duration-base) var(--ease-standard); }
|
|
2536
|
+
.progress-circle-sm { --progress-circle-size:var(--space-5); }
|
|
2537
|
+
.progress-circle-lg { --progress-circle-size:calc(var(--space-8) + var(--space-1)); }
|
|
2538
|
+
.progress-circle-neutral { --progress-circle-fill:var(--muted-foreground); }
|
|
2539
|
+
.progress-circle-success { --progress-circle-fill:var(--success-400); }
|
|
2540
|
+
.progress-circle-warning { --progress-circle-fill:var(--warning-400); }
|
|
2541
|
+
.progress-circle-danger { --progress-circle-fill:var(--danger-400); }
|
|
2542
|
+
.progress-circle-info { --progress-circle-fill:var(--info-400); }
|
|
2543
|
+
.progress-circle-indeterminate > svg { animation:spin 1s linear infinite; }
|
|
2544
|
+
@media (prefers-reduced-motion:reduce) { .progress-circle-indeterminate > svg { animation-duration:3s; } .progress-circle-fill { transition:none; } }
|
|
2545
|
+
/* TAGGROUP (0.32.0): as etiquetas da referência — 24 de altura (sm 20, lg 32), 8 dos lados (lg 10), letra
|
|
2546
|
+
de 12 peso médio (lg 14), ícone de 12, 4 entre as partes, 6 entre as etiquetas; o fundo neutro (ou o de
|
|
2547
|
+
cartão, `surface`), a escolhida no clarinho. O canto é a cápsula da Aurea. O anel de foco vai na
|
|
2548
|
+
etiqueta inteira, e não só no botão de dentro. */
|
|
2549
|
+
.tag-group { display:flex; flex-direction:column; gap:var(--space-1); }
|
|
2550
|
+
.tag-group-list { display:flex; flex-wrap:wrap; gap:calc(var(--space-1) + var(--space-05)); }
|
|
2551
|
+
.tag { display:inline-flex; align-items:center; gap:var(--space-1); min-block-size:var(--space-6); padding:0 var(--space-2); border-radius:var(--radius-full); background:var(--secondary); color:var(--secondary-foreground); font-size:var(--text-xs); font-weight:var(--weight-medium); line-height:var(--space-4); user-select:none; }
|
|
2552
|
+
.tag-main { display:inline-flex; align-items:center; gap:var(--space-1); padding:0; border:0; background:none; color:inherit; font:inherit; }
|
|
2553
|
+
button.tag-main { cursor:pointer; }
|
|
2554
|
+
.tag-main > .icon { --step-icon:var(--space-3); }
|
|
2555
|
+
.tag-label { white-space:nowrap; }
|
|
2556
|
+
.tag-sm { min-block-size:var(--space-5); }
|
|
2557
|
+
.tag-lg { min-block-size:var(--space-8); padding-inline:calc(var(--space-2) + var(--space-05)); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
2558
|
+
.tag-surface { background:var(--card); color:var(--card-foreground); }
|
|
2559
|
+
@media (hover:hover) { .tag:has(> button.tag-main):not([data-selected]):not([data-disabled]):hover { background:var(--secondary-hover); } }
|
|
2560
|
+
.tag[data-selected] { background:color-mix(in oklab,var(--primary) 10%,var(--secondary)); color:var(--primary-emphasis); }
|
|
2561
|
+
.tag[data-disabled] { opacity:var(--opacity-disabled); }
|
|
2562
|
+
.tag-main:focus-visible { outline:none; }
|
|
2563
|
+
.tag:has(> .tag-main:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2564
|
+
.tag-remove { position:relative; display:inline-flex; align-items:center; justify-content:center; flex:none; inline-size:var(--space-3); block-size:var(--space-3); padding:0; border:0; border-radius:var(--radius-full); background:none; color:inherit; opacity:.7; cursor:pointer; }
|
|
2565
|
+
.tag-remove > .icon { --step-icon:var(--space-3); }
|
|
2566
|
+
.tag-remove:hover:not(:disabled) { opacity:1; }
|
|
2567
|
+
.tag-remove:disabled { cursor:not-allowed; }
|
|
2568
|
+
@media (pointer:coarse) { .tag-remove::before { content:""; position:absolute; inset:calc((var(--space-3) - var(--target-min)) / 2); border-radius:var(--radius-full); } }
|
|
2122
2569
|
/* O container do grupo NUNCA teve regra: a sobreposição abaixo existia e os avatares empilhavam
|
|
2123
2570
|
na vertical porque o pai saía `display:block`. Mesma falha do `.stepper` e do `.command`. */
|
|
2124
2571
|
.avatar-group { display:inline-flex; align-items:center; }
|
|
@@ -2185,18 +2632,33 @@ img,svg { display:block; }
|
|
|
2185
2632
|
.timeline > li > div { display:flex; flex-direction:column; gap:var(--space-05); min-width:0; }
|
|
2186
2633
|
.timeline > li > div > p { margin:0; }
|
|
2187
2634
|
.timeline-dot { flex:none; width:var(--space-3); height:var(--space-3); border-radius:var(--radius-full); margin-block-start:var(--space-1); background:var(--primary); box-shadow:0 0 0 var(--space-05) var(--surface-1); }
|
|
2188
|
-
/*
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
.
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
.accordion
|
|
2196
|
-
.accordion
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
.accordion-
|
|
2635
|
+
/* ACCORDION (0.32.0) — o da referência, com o realce em CÁPSULA (decisão do Victor, 11/10/2026). Sem
|
|
2636
|
+
caixa em volta: um fio de 1 entre os itens, nenhum depois do último. A pergunta: 16 de todos os
|
|
2637
|
+
lados, 14 peso médio, a seta de 16 no FIM (esmaecida), que vira −180° ao abrir — o marcador do
|
|
2638
|
+
navegador sai (era ele que girava, no começo da linha). O realce do mouse só no item fechado: a cor
|
|
2639
|
+
do texto a 3%, em cápsula. A resposta: 14 esmaecida, 16 dos lados e embaixo. Recuo INLINE, não
|
|
2640
|
+
`padding-left`: em RTL a seta troca de lado e o corpo acompanha (o gate de RTL mede o eixo inline).
|
|
2641
|
+
`surface`: tudo num cartão, o fio a 94% (3% de cada lado) e o realce no cinza neutro. */
|
|
2642
|
+
.accordion { display:flex; flex-direction:column; }
|
|
2643
|
+
.accordion-item { position:relative; }
|
|
2644
|
+
.accordion-item::after { content:""; position:absolute; inset-inline-start:0; inset-block-end:0; inline-size:100%; block-size:var(--border-width); background:var(--border); }
|
|
2645
|
+
.accordion-item:last-child::after { content:none; }
|
|
2646
|
+
.accordion-item > summary { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); padding:var(--space-4); border-radius:var(--radius-full); color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--leading-normal); list-style:none; cursor:pointer; transition:background var(--duration-fast); }
|
|
2647
|
+
.accordion-item > summary::-webkit-details-marker { display:none; }
|
|
2648
|
+
.accordion-title { min-inline-size:0; }
|
|
2649
|
+
.accordion-item:not([open]) > summary:hover:not([aria-disabled="true"]) { background:color-mix(in oklab, var(--foreground) 3%, transparent); }
|
|
2650
|
+
.accordion-item > summary[aria-disabled="true"] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2651
|
+
/* A seta é desenho do CSS por máscara, como a do `KPI` e a do aviso preso ao botão (12/10/2026). No
|
|
2652
|
+
passo 4 ela entrou como `<Icon>`, que busca o arquivo de ícones: quem usava só o `Accordion` — que
|
|
2653
|
+
abre sem JavaScript e não pedia arquivo nenhum — passou a ver um erro de rede e uma seta vazia (a
|
|
2654
|
+
prova A4 pegou). O desenho é o `caret-down` do Phosphor, o mesmo do arquivo, no mesmo tamanho. */
|
|
2655
|
+
.accordion-chevron { --accordion-glifo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E"); flex:none; inline-size:var(--icon-sm); block-size:var(--icon-sm); background:currentColor; color:var(--muted-foreground); -webkit-mask:var(--accordion-glifo) center/contain no-repeat; mask:var(--accordion-glifo) center/contain no-repeat; transition:transform var(--duration-fast) var(--ease-standard); }
|
|
2656
|
+
.accordion-item[open] > summary .accordion-chevron { transform:rotate(-180deg); }
|
|
2657
|
+
.accordion-content { padding-block:0 var(--space-4); padding-inline:var(--space-4); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2658
|
+
.accordion-surface { border-radius:var(--radius-card); background:var(--card); }
|
|
2659
|
+
.accordion-surface > .accordion-item::after { inset-inline-start:3%; inline-size:94%; }
|
|
2660
|
+
.accordion-surface > .accordion-item:not([open]) > summary:hover:not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2661
|
+
@media (prefers-reduced-motion:reduce) { .accordion-chevron { transition:none; } }
|
|
2200
2662
|
/* Mockup do kit de origem (apps/docs) — não é o Accordion do sistema, que é <details> nativo. */
|
|
2201
2663
|
|
|
2202
2664
|
/* QRCode: superfície flutuante Aurea, mas o miolo é de alto contraste FIXO — um QR
|
|
@@ -2225,6 +2687,21 @@ img,svg { display:block; }
|
|
|
2225
2687
|
.checkbox-bare { gap:0; }
|
|
2226
2688
|
.code-block-wrap { position:relative; display:flex; min-width:0; }
|
|
2227
2689
|
.code-block-wrap > .code-block { flex:1; min-width:0; margin:0; }
|
|
2690
|
+
/* DOC-02 (0.32.0): a caixa de exemplo do site (`CodeBlock preview`), trazida para o core do jeito que
|
|
2691
|
+
ela é no site — o cartão sem recheio, a barra de abas com o segmentado ocupando a largura, a prévia
|
|
2692
|
+
no fundo afundado, centrada, e o código sem moldura (o cartão já é a moldura). A altura é do conteúdo;
|
|
2693
|
+
o site fixa a dele (`--demo-height`). */
|
|
2694
|
+
.code-preview { display:flex; flex-direction:column; block-size:var(--demo-height,auto); padding:0; overflow:hidden; }
|
|
2695
|
+
.demo-tabs { display:flex; padding:var(--space-2); border-bottom:var(--border-width) solid var(--border); }
|
|
2696
|
+
.demo-tabs .segmented { flex:1; display:flex; }
|
|
2697
|
+
.demo-tabs .segmented button { flex:1; }
|
|
2698
|
+
.demo-panel { flex:1; min-height:0; overflow:auto; padding:var(--space-6); }
|
|
2699
|
+
.demo-panel[hidden] { display:none; }
|
|
2700
|
+
.demo-panel[data-panel="preview"] { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:var(--space-4); background:var(--surface-inset); }
|
|
2701
|
+
.demo-panel[data-panel="preview"][hidden] { display:none; }
|
|
2702
|
+
.demo-code { display:flex; padding:0; overflow:hidden; }
|
|
2703
|
+
.demo-code .code-block-wrap { flex:1; }
|
|
2704
|
+
.demo-code .code-block { padding:var(--space-6); border:0; border-radius:0; }
|
|
2228
2705
|
.copy-code { position:absolute; top:var(--space-3); inset-inline-end:var(--space-3); z-index:1; }
|
|
2229
2706
|
.copy-code .c-done { display:none; }
|
|
2230
2707
|
.copy-code.is-done .c-copy { display:none; } .copy-code.is-done .c-done { display:block; color:var(--primary); }
|
|
@@ -2232,7 +2709,11 @@ img,svg { display:block; }
|
|
|
2232
2709
|
por isso é <nav> com rótulo, e o item atual se marca com aria-current. */
|
|
2233
2710
|
.toc { position:sticky; top:var(--space-4); align-self:start; display:grid; gap:var(--space-1); max-height:calc(100vh - var(--space-8)); overflow:auto; padding:var(--space-2) 0; }
|
|
2234
2711
|
|
|
2235
|
-
|
|
2712
|
+
/* O "On this page" é o da referência (ADR-0067): letra 14, peso normal, esmaecido, SEM maiúsculas, e o
|
|
2713
|
+
ícone de linhas ao lado — desenho do CSS por máscara (o `text-align-left` do Phosphor), para o sumário
|
|
2714
|
+
não passar a depender do arquivo de ícones. Era 11, em maiúsculas espaçadas. */
|
|
2715
|
+
.toc-label { display:flex; align-items:center; gap:var(--space-2); margin:0 0 var(--space-1); padding-inline:var(--space-3); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2716
|
+
.toc-label-icon { --toc-glifo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,48H168a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm176,24H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm-48,40H40a8,8,0,0,0,0,16H168a8,8,0,0,0,0-16Z'/%3E%3C/svg%3E"); flex:none; inline-size:var(--icon-sm); block-size:var(--icon-sm); background:currentColor; -webkit-mask:var(--toc-glifo) center/contain no-repeat; mask:var(--toc-glifo) center/contain no-repeat; }
|
|
2236
2717
|
.toc a { padding:var(--space-1) var(--space-3); border-inline-start:2px solid var(--border); color:var(--muted-foreground); font-size:var(--text-sm); text-decoration:none; }
|
|
2237
2718
|
.toc a:hover { color:var(--foreground); }
|
|
2238
2719
|
.toc a[aria-current] { border-inline-start-color:var(--primary); color:var(--foreground); }
|
|
@@ -2296,26 +2777,33 @@ img,svg { display:block; }
|
|
|
2296
2777
|
APARECE (o motor conta com o CSS dele para escondê-lo, e nós não importamos o CSS dele). */
|
|
2297
2778
|
.calendar { display:inline-block; padding:var(--space-3); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--surface-1); }
|
|
2298
2779
|
.calendar-months { position:relative; }
|
|
2299
|
-
.
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2780
|
+
/* 0.32.0, o calendário da referência, lido no CSS publicado dela: o mês no COMEÇO, em 14 peso médio, e as
|
|
2781
|
+
duas setas juntas no FIM, botões de 24 na cor de letra da marca; 16 até a grade; o nome do dia em 12
|
|
2782
|
+
peso médio esmaecido, com 8 embaixo; o dia de 36 redondo, em 14 peso médio; HOJE no clarinho (o "soft"
|
|
2783
|
+
dela), o escolhido no amarelo cheio, o de fora do mês esmaecido a meia força, o desligado riscado. */
|
|
2784
|
+
.calendar nav { position:absolute; inset-block-start:0; inset-inline-end:0; display:flex; }
|
|
2785
|
+
.calendar nav button { display:inline-flex; align-items:center; justify-content:center; width:var(--space-6); height:var(--space-6); padding:0; border:0; border-radius:var(--radius-full); background:transparent; color:var(--primary-emphasis); cursor:pointer; }
|
|
2786
|
+
.calendar nav button:hover:not(:disabled):not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2787
|
+
.calendar nav button:active:not(:disabled):not([aria-disabled="true"]) { transform:scale(.95); }
|
|
2788
|
+
.calendar nav button:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2303
2789
|
.calendar nav svg { width:var(--icon-sm); height:var(--icon-sm); fill:currentColor; }
|
|
2304
|
-
.calendar-caption { display:flex; align-items:center; justify-content:
|
|
2790
|
+
.calendar-caption { display:flex; align-items:center; justify-content:flex-start; height:var(--space-6); padding-inline-start:var(--space-05); color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
2305
2791
|
/* Estas três já foram um DESFAZIMENTO: `width:auto`, `min-width:0`, `height:auto` e
|
|
2306
2792
|
`border-bottom:0` existiam só para anular a regra de elemento da seção de dados. A regra foi
|
|
2307
2793
|
escopada em 02/08/2026 e o antídoto saiu junto — corrigir onde nasce, não onde dói.
|
|
2308
2794
|
O `padding:0` FICA, e não é antídoto: é o 1px que o NAVEGADOR dá a `<td>`/`<th>`. Tirá-lo
|
|
2309
2795
|
junto com o resto engordou a célula para 38px e a grade para 266px — medido, e voltado. */
|
|
2310
|
-
.calendar table { border-collapse:collapse; margin-block-start:var(--space-
|
|
2311
|
-
.calendar th { padding:0 0 var(--space-
|
|
2796
|
+
.calendar table { border-collapse:collapse; margin-block-start:var(--space-4); }
|
|
2797
|
+
.calendar th { padding:0 0 var(--space-2); text-align:center; color:var(--muted-foreground); font-size:var(--text-xs); font-weight:var(--weight-medium); }
|
|
2312
2798
|
.calendar td { padding:0; text-align:center; }
|
|
2313
|
-
.calendar td button { display:flex; align-items:center; justify-content:center; width:var(--control-h-md); height:var(--control-h-md); border:0; border-radius:var(--radius-
|
|
2799
|
+
.calendar td button { display:flex; align-items:center; justify-content:center; width:var(--control-h-md); height:var(--control-h-md); border:0; border-radius:var(--radius-full); background:transparent; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; cursor:pointer; }
|
|
2314
2800
|
.calendar td button:hover:not(:disabled):not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2315
|
-
.calendar td
|
|
2316
|
-
.calendar td[data-
|
|
2317
|
-
.calendar td[data-
|
|
2318
|
-
.calendar td button
|
|
2801
|
+
.calendar td button:active:not(:disabled):not([aria-disabled="true"]) { transform:scale(.95); }
|
|
2802
|
+
.calendar td[data-today] button { background:color-mix(in oklab,var(--primary) 10%,var(--secondary)); color:var(--primary-emphasis); }
|
|
2803
|
+
.calendar td[data-selected] button { background:var(--primary); color:var(--primary-foreground); }
|
|
2804
|
+
.calendar td[data-outside] button { color:var(--muted-foreground); opacity:.5; }
|
|
2805
|
+
.calendar td[data-selected][data-outside] button { background:var(--secondary); color:var(--muted-foreground); }
|
|
2806
|
+
.calendar td button:disabled { opacity:var(--opacity-disabled); text-decoration:line-through; cursor:not-allowed; }
|
|
2319
2807
|
.calendar td[data-hidden] { visibility:hidden; }
|
|
2320
2808
|
.message { display:grid; grid-template-columns:auto minmax(0,1fr); gap:12px; } .message-bubble { padding:12px 14px; border-radius:6px var(--radius-lg) var(--radius-lg) var(--radius-lg); background:var(--secondary); } .message-bubble p { margin:0; }
|
|
2321
2809
|
/* Chat React (Fase 5.4): estrutura fixa em classe, não inline (auditoria 18/07, M14). */
|
|
@@ -2493,20 +2981,31 @@ img,svg { display:block; }
|
|
|
2493
2981
|
token: a escala de letras é a dela desde a ADR-0050, a entrelinha do texto é `--leading-relaxed`
|
|
2494
2982
|
(27, 24 e 20px, contra os 28, 24 e 20 dela) e o código reusa a pele do `code` do `.prose`.
|
|
2495
2983
|
A margem vai a zero porque `h1`…`h6` e `p` trazem a do navegador; o espaço entre blocos é de
|
|
2496
|
-
quem os empilha (`Stack`), não do texto.
|
|
2984
|
+
quem os empilha (`Stack`), não do texto.
|
|
2985
|
+
0.32.0: a entrelinha do título passa a ser a de CADA tamanho, como na escala publicada dela
|
|
2986
|
+
(40 · 36 · 32 · 28 · 28 · 24); até aqui era 1,2 em todos (43 · 36 · 29 · 24 · 22 · 19). */
|
|
2497
2987
|
.typography { margin:0; color:var(--foreground); }
|
|
2498
|
-
.typography-h1,.typography-h2,.typography-h3,.typography-h4,.typography-h5,.typography-h6 { font-family:var(--font-heading); font-weight:var(--weight-semibold);
|
|
2499
|
-
.typography-h1 { font-size:var(--text-4xl); }
|
|
2500
|
-
.typography-h2 { font-size:var(--text-3xl); }
|
|
2501
|
-
.typography-h3 { font-size:var(--text-2xl); }
|
|
2502
|
-
.typography-h4 { font-size:var(--text-xl); }
|
|
2503
|
-
.typography-h5 { font-size:var(--text-lg); }
|
|
2504
|
-
.typography-h6 { font-size:var(--text-base); }
|
|
2988
|
+
.typography-h1,.typography-h2,.typography-h3,.typography-h4,.typography-h5,.typography-h6 { font-family:var(--font-heading); font-weight:var(--weight-semibold); letter-spacing:var(--tracking-tight); }
|
|
2989
|
+
.typography-h1 { font-size:var(--text-4xl); line-height:var(--text-4xl-leading); }
|
|
2990
|
+
.typography-h2 { font-size:var(--text-3xl); line-height:var(--text-3xl-leading); }
|
|
2991
|
+
.typography-h3 { font-size:var(--text-2xl); line-height:var(--text-2xl-leading); }
|
|
2992
|
+
.typography-h4 { font-size:var(--text-xl); line-height:var(--text-xl-leading); }
|
|
2993
|
+
.typography-h5 { font-size:var(--text-lg); line-height:var(--text-lg-leading); }
|
|
2994
|
+
.typography-h6 { font-size:var(--text-base); line-height:var(--leading-normal); }
|
|
2505
2995
|
.typography-body { font-size:var(--text-base); line-height:var(--leading-relaxed); }
|
|
2506
2996
|
.typography-body-sm { font-size:var(--text-sm); line-height:var(--leading-relaxed); }
|
|
2507
2997
|
.typography-body-xs { font-size:var(--text-xs); line-height:var(--leading-relaxed); }
|
|
2508
2998
|
.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); }
|
|
2509
2999
|
.typography-muted { color:var(--muted-foreground); }
|
|
3000
|
+
/* DOC-11 (0.32.0): o `tone` do nativo, na web. `link` é o amarelo de escrever; `primary`, o de
|
|
3001
|
+
preencher (no claro quase some, como no nativo); as cores de estado, o par `-400` (ADR-0061). */
|
|
3002
|
+
.typography-tone-subtle { color:var(--subtle-foreground); }
|
|
3003
|
+
.typography-tone-primary { color:var(--primary); }
|
|
3004
|
+
.typography-tone-link { color:var(--link); }
|
|
3005
|
+
.typography-tone-danger { color:var(--danger-400); }
|
|
3006
|
+
.typography-tone-success { color:var(--success-400); }
|
|
3007
|
+
.typography-tone-warning { color:var(--warning-400); }
|
|
3008
|
+
.typography-tone-info { color:var(--info-400); }
|
|
2510
3009
|
.typography-weight-normal { font-weight:var(--weight-regular); }
|
|
2511
3010
|
.typography-weight-medium { font-weight:var(--weight-medium); }
|
|
2512
3011
|
.typography-weight-semibold { font-weight:var(--weight-semibold); }
|
|
@@ -2540,11 +3039,11 @@ img,svg { display:block; }
|
|
|
2540
3039
|
.prose { max-width:var(--prose-measure,68ch); font-size:var(--text-base); line-height:var(--leading-relaxed); }
|
|
2541
3040
|
.prose > * + * { margin-block-start:var(--space-4); }
|
|
2542
3041
|
.prose > h2,.prose > h3,.prose > h4 { margin-block-start:var(--space-8); }
|
|
2543
|
-
.prose h1,.prose h2,.prose h3,.prose h4 {
|
|
2544
|
-
.prose h1 { font-size:var(--text-3xl); }
|
|
2545
|
-
.prose h2 { font-size:var(--text-2xl); }
|
|
2546
|
-
.prose h3 { font-size:var(--text-xl); }
|
|
2547
|
-
.prose h4 { font-size:var(--text-lg); }
|
|
3042
|
+
.prose h1,.prose h2,.prose h3,.prose h4 { font-weight:var(--weight-semibold); }
|
|
3043
|
+
.prose h1 { font-size:var(--text-3xl); line-height:var(--text-3xl-leading); }
|
|
3044
|
+
.prose h2 { font-size:var(--text-2xl); line-height:var(--text-2xl-leading); }
|
|
3045
|
+
.prose h3 { font-size:var(--text-xl); line-height:var(--text-xl-leading); }
|
|
3046
|
+
.prose h4 { font-size:var(--text-lg); line-height:var(--text-lg-leading); }
|
|
2548
3047
|
.prose blockquote { margin-inline:0; padding-inline-start:var(--space-4); border-inline-start:2px solid var(--border-strong); color:var(--muted-foreground); }
|
|
2549
3048
|
.prose ul,.prose ol { padding-inline-start:var(--space-6); }
|
|
2550
3049
|
.prose li + li { margin-block-start:var(--space-2); }
|
|
@@ -2634,40 +3133,131 @@ img,svg { display:block; }
|
|
|
2634
3133
|
.icon-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; }
|
|
2635
3134
|
.icon-tile { min-height:86px; display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:12px; padding:13px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--secondary); color:var(--muted-foreground); cursor:pointer; text-align:start; transition:transform var(--duration-fast) var(--ease-standard),border-color var(--duration-fast),color var(--duration-fast); }
|
|
2636
3135
|
@media (hover:hover) and (pointer:fine) { .icon-tile:hover { color:var(--foreground); border-color:var(--primary); transform:translateY(-1px); } } .icon-tile:focus-visible { color:var(--foreground); border-color:var(--primary); } .icon-tile span { overflow:hidden; max-width:100%; text-overflow:ellipsis; white-space:nowrap; font:11px var(--font-code); }
|
|
2637
|
-
|
|
2638
|
-
|
|
3136
|
+
/* JANELAS (0.32.0): o Dialog, o ConfirmDialog e o Drawer com a anatomia da referência, lida no CSS
|
|
3137
|
+
PUBLICADO dela — recheio de 24; o X a 16 do topo e do fim; o cabeçalho em coluna (o ícone num círculo
|
|
3138
|
+
de 40 em cima, 12 até o título de 16, peso médio); o corpo de 14/20 esmaecido, que é o que rola; 8
|
|
3139
|
+
entre o cabeçalho e o corpo e 20 antes do rodapé; o rodapé ao fim, com 8 entre os botões. Da tela, a
|
|
3140
|
+
janela guarda 16 no celular e 40 de 640 para cima. Entra crescendo de 0,95 a 1 e sai encolhendo, como
|
|
3141
|
+
a dela. A borda continua (a dela é só sombra no claro): baixa visão, como nas outras janelas.
|
|
3142
|
+
O que já rolava (a janela inteira) passou para o corpo — a ficha prometia isso desde sempre. */
|
|
3143
|
+
.dialog-backdrop { position:fixed; inset:0; z-index:var(--z-modal); background:var(--overlay); backdrop-filter:blur(5px); transition:opacity var(--duration-slow) var(--ease-standard); }
|
|
3144
|
+
.dialog-backdrop[data-starting-style],.dialog-backdrop[data-ending-style] { opacity:0; }
|
|
3145
|
+
.dialog-backdrop[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
3146
|
+
.dialog { --dialog-margin:var(--space-4); --dialog-w:28rem; position:fixed; inset-inline:0; top:50%; translate:0 -50%; z-index:var(--z-modal); display:flex; flex-direction:column; inline-size:min(var(--dialog-w),calc(100vw - 2 * var(--dialog-margin))); max-block-size:calc(100dvh - 2 * var(--dialog-margin)); margin-inline:auto; padding:var(--space-6); border:var(--border-width) solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); outline:none; transition:opacity var(--duration-slow) var(--ease-standard),scale var(--duration-slow) var(--ease-standard); }
|
|
3147
|
+
.dialog[data-starting-style] { opacity:0; scale:1.05; }
|
|
3148
|
+
.dialog[data-ending-style] { opacity:0; scale:.95; transition-duration:var(--duration-fast); }
|
|
3149
|
+
@media (min-width:640px) { .dialog { --dialog-margin:var(--space-10); } }
|
|
3150
|
+
/* `placement` (o dela): `auto` senta a janela EMBAIXO no celular, onde o polegar alcança, e no meio de
|
|
3151
|
+
640 para cima. Sem o atributo (a marcação pura), a janela fica no meio, como sempre ficou. */
|
|
3152
|
+
.dialog[data-placement="top"] { top:var(--dialog-margin); translate:none; }
|
|
3153
|
+
.dialog[data-placement="bottom"] { top:auto; bottom:var(--dialog-margin); translate:none; }
|
|
3154
|
+
@media (max-width:639.98px) { .dialog[data-placement="auto"] { top:auto; bottom:var(--dialog-margin); translate:none; } }
|
|
2639
3155
|
/* size (B-03), decisão do Victor em 24/09/2026: as quatro larguras da referência — as do
|
|
2640
3156
|
pacote de estilos dela, 20/24/28/32rem = 320/384/448/512 — mais 1024
|
|
2641
3157
|
(o token --breakpoint-lg) e a tela cheia. O padrão passou a ser o `md` da referência, 448; até a 0.8.14
|
|
2642
3158
|
era 560. */
|
|
2643
|
-
.dialog-xs {
|
|
2644
|
-
.dialog-sm {
|
|
2645
|
-
.dialog-lg {
|
|
2646
|
-
.dialog-xl {
|
|
2647
|
-
.dialog-full {
|
|
2648
|
-
|
|
3159
|
+
.dialog-xs { --dialog-w:20rem; }
|
|
3160
|
+
.dialog-sm { --dialog-w:24rem; }
|
|
3161
|
+
.dialog-lg { --dialog-w:32rem; }
|
|
3162
|
+
.dialog-xl { --dialog-w:var(--breakpoint-lg); }
|
|
3163
|
+
.dialog-full { --dialog-w:100vw; block-size:calc(100dvh - 2 * var(--dialog-margin)); }
|
|
3164
|
+
/* As partes, as mesmas no Dialog, no ConfirmDialog e no Drawer. O corpo guarda, dos lados e em cima e
|
|
3165
|
+
embaixo, o espaço do anel de foco (a largura e o afastamento dele): é ele que rola, e o que rola corta
|
|
3166
|
+
o anel de quem encosta na borda — a referência faz a mesma conta, com 3. */
|
|
3167
|
+
/* 16 da borda de FORA, como a dela (que não tem borda): o absoluto conta de dentro da borda de 1. */
|
|
3168
|
+
.dialog-close { position:absolute; inset-block-start:calc(var(--space-4) - var(--border-width)); inset-inline-end:calc(var(--space-4) - var(--border-width)); }
|
|
3169
|
+
.dialog-header { display:flex; flex-direction:column; align-items:flex-start; gap:var(--space-3); }
|
|
3170
|
+
.dialog-heading { margin:0; padding-inline-end:var(--space-6); color:var(--popover-foreground); font-size:var(--text-base); font-weight:var(--weight-medium); line-height:var(--leading-normal); text-wrap:balance; }
|
|
3171
|
+
.dialog-icon { display:inline-flex; flex:none; align-items:center; justify-content:center; inline-size:var(--space-10); block-size:var(--space-10); border-radius:var(--radius-full); background:var(--secondary); color:var(--foreground); }
|
|
3172
|
+
.dialog-icon > .icon { --step-icon:var(--icon-md); }
|
|
3173
|
+
.dialog-icon-brand { background:color-mix(in oklab,var(--primary) 10%,var(--secondary)); color:var(--primary-emphasis); }
|
|
3174
|
+
.dialog-icon-info { background:var(--info-bg); color:var(--info-400); }
|
|
3175
|
+
.dialog-icon-success { background:var(--success-bg); color:var(--success-400); }
|
|
3176
|
+
.dialog-icon-warning { background:var(--warning-bg); color:var(--warning-400); }
|
|
3177
|
+
.dialog-icon-danger { background:var(--danger-bg); color:var(--danger-400); }
|
|
3178
|
+
.dialog-body { --dialog-ring:calc(var(--focus-width) + var(--focus-offset)); display:grid; gap:14px; flex:1 1 auto; min-block-size:0; overflow-y:auto; overscroll-behavior:contain; margin-inline:calc(-1 * var(--dialog-ring)); padding:var(--dialog-ring); color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
3179
|
+
.dialog-header + .dialog-body { margin-block-start:calc(var(--space-2) - var(--dialog-ring)); }
|
|
3180
|
+
.dialog-footer { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:var(--space-2); }
|
|
3181
|
+
.dialog-body + .dialog-footer { margin-block-start:calc(var(--space-5) - var(--dialog-ring)); }
|
|
3182
|
+
.dialog-header + .dialog-footer { margin-block-start:var(--space-5); }
|
|
2649
3183
|
/* O ConfirmDialog é o MESMO `.dialog` — não nasce uma segunda superfície flutuante, que seria a
|
|
2650
3184
|
pele divergindo como divergiu entre `.table-wrap` e `.table-region`. O que muda é a caixa mais
|
|
2651
|
-
estreita (uma frase e dois botões não precisam da largura do Dialog)
|
|
2652
|
-
|
|
2653
|
-
.dialog-confirm {
|
|
2654
|
-
.dialog-confirm>footer { display:flex; justify-content:flex-end; gap:var(--space-2); margin-block-start:var(--space-5); }
|
|
3185
|
+
estreita (uma frase e dois botões não precisam da largura do Dialog), com o destrutivo por último no
|
|
3186
|
+
rodapé: a ordem visual é cancelar → agir, e é onde as quatro referências batem. */
|
|
3187
|
+
.dialog-confirm { --dialog-w:26.25rem; }
|
|
2655
3188
|
.drawer-wrap { position:fixed; inset:0; z-index:var(--z-drawer); display:none; background:var(--overlay); } .drawer-wrap.open { display:block; }
|
|
2656
|
-
|
|
2657
|
-
.
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
.
|
|
2668
|
-
.
|
|
2669
|
-
|
|
2670
|
-
.
|
|
3189
|
+
/* DRAWER (0.32.0): a gaveta da referência nos quatro lados, no motor de gaveta do Base UI, que arrasta
|
|
3190
|
+
para fechar. Laterais de 320 (384 de 640 para cima, nunca mais que 85% da tela); a de cima e a de
|
|
3191
|
+
baixo, a largura toda e até 85% da altura, com a alça de 36 × 4. Os cantos são da Aurea: 22 do lado de
|
|
3192
|
+
dentro nas laterais (a dela é quadrada) e o 32 da folha na de cima e na de baixo (ADR-0058). Enquanto
|
|
3193
|
+
o dedo arrasta, a gaveta segue o dedo (as variáveis do motor) e o fundo clareia junto. */
|
|
3194
|
+
.drawer-backdrop { position:fixed; inset:0; z-index:var(--z-drawer); background:var(--overlay); opacity:calc(1 - var(--drawer-swipe-progress,0)); transition:opacity var(--duration-slow) var(--ease-emphasized); }
|
|
3195
|
+
.drawer-backdrop[data-starting-style],.drawer-backdrop[data-ending-style] { opacity:0; }
|
|
3196
|
+
.drawer-backdrop[data-swiping] { transition-duration:0ms; }
|
|
3197
|
+
.drawer-viewport { position:fixed; inset:0; z-index:var(--z-drawer); }
|
|
3198
|
+
.drawer { position:fixed; z-index:var(--z-drawer); display:flex; flex-direction:column; padding:var(--space-6); border:0 solid var(--border); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); outline:none; overscroll-behavior:contain; transition:transform var(--duration-slow) var(--ease-emphasized); }
|
|
3199
|
+
.drawer[data-swiping] { transition-duration:0ms; }
|
|
3200
|
+
.drawer[data-ending-style] { transition-duration:calc(var(--drawer-swipe-strength,1) * var(--duration-slow)); }
|
|
3201
|
+
.drawer-left,.drawer-right { top:0; bottom:0; inline-size:min(20rem,85vw); transform:translateX(var(--drawer-swipe-movement-x,0px)); }
|
|
3202
|
+
@media (min-width:640px) { .drawer-left,.drawer-right { inline-size:min(24rem,85vw); } }
|
|
3203
|
+
.drawer-right { right:0; border-left-width:var(--border-width); border-radius:var(--radius-card) 0 0 var(--radius-card); }
|
|
3204
|
+
.drawer-left { left:0; border-right-width:var(--border-width); border-radius:0 var(--radius-card) var(--radius-card) 0; }
|
|
3205
|
+
.drawer-top,.drawer-bottom { left:0; right:0; max-block-size:85dvh; transform:translateY(var(--drawer-swipe-movement-y,0px)); }
|
|
3206
|
+
.drawer-bottom { bottom:0; border-top-width:var(--border-width); border-radius:var(--radius-sheet) var(--radius-sheet) 0 0; padding-block-end:calc(var(--space-6) + env(safe-area-inset-bottom,0px)); }
|
|
3207
|
+
.drawer-top { top:0; border-bottom-width:var(--border-width); border-radius:0 0 var(--radius-sheet) var(--radius-sheet); padding-block:calc(var(--space-6) + env(safe-area-inset-top,0px)) var(--space-2); }
|
|
3208
|
+
.drawer-right[data-starting-style],.drawer-right[data-ending-style] { transform:translateX(100%); }
|
|
3209
|
+
.drawer-left[data-starting-style],.drawer-left[data-ending-style] { transform:translateX(-100%); }
|
|
3210
|
+
.drawer-bottom[data-starting-style],.drawer-bottom[data-ending-style] { transform:translateY(100%); }
|
|
3211
|
+
.drawer-top[data-starting-style],.drawer-top[data-ending-style] { transform:translateY(-100%); }
|
|
3212
|
+
.drawer-handle { flex:none; align-self:center; inline-size:calc(var(--space-8) + var(--space-1)); block-size:var(--space-1); border-radius:var(--radius-full); background:var(--border-strong); }
|
|
3213
|
+
.drawer-bottom > .drawer-handle { margin-block-end:var(--space-2); }
|
|
3214
|
+
.drawer-top > .drawer-handle { margin-block-start:var(--space-2); }
|
|
3215
|
+
/* TOAST (0.32.0): o aviso da referência, lido no CSS e no código publicados dela, sobre a pilha do
|
|
3216
|
+
motor (as variáveis `--toast-*` do Base UI). Os avisos moram todos no mesmo lugar: o da frente
|
|
3217
|
+
inteiro, os de trás 12 acima e 5% menores a cada um, com o conteúdo apagado; passar o mouse ou o
|
|
3218
|
+
foco abre a pilha, com 12 entre eles. Embaixo no meio por padrão (o dela), 460 de largura de 640
|
|
3219
|
+
para cima e a tela menos 16 de cada lado no celular. `--toast-dir` é o sentido da pilha: para cima
|
|
3220
|
+
quando ela mora embaixo, para baixo quando mora em cima. */
|
|
3221
|
+
.toast-stack { --toast-gap:var(--space-3); --toast-dir:-1; position:fixed; z-index:var(--z-toast); inset-block-end:var(--space-4); inset-inline:0; inline-size:min(28.75rem,calc(100vw - 2 * var(--space-4))); margin-inline:auto; outline:none; }
|
|
3222
|
+
.toast-stack:is(.toast-stack-top,.toast-stack-top-start,.toast-stack-top-end) { --toast-dir:1; inset-block:var(--space-4) auto; }
|
|
3223
|
+
.toast-stack:is(.toast-stack-bottom-start,.toast-stack-top-start) { inset-inline:var(--space-4) auto; margin-inline:0; }
|
|
3224
|
+
.toast-stack:is(.toast-stack-bottom-end,.toast-stack-top-end) { inset-inline:auto var(--space-4); margin-inline:0; }
|
|
3225
|
+
.toast { position:absolute; inset-inline:0; bottom:0; z-index:calc(1000 - var(--toast-index,0)); box-sizing:border-box; block-size:var(--toast-frontmost-height,var(--toast-height,auto)); padding:var(--space-3) var(--space-4); border:var(--border-width) solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-md); user-select:none; transform-origin:50% 100%; transform:translateX(var(--toast-swipe-movement-x,0px)) translateY(calc(var(--toast-swipe-movement-y,0px) + var(--toast-dir) * var(--toast-index,0) * var(--toast-gap))) scale(calc(1 - var(--toast-index,0) * .05)); transition:transform var(--duration-slow) var(--ease-emphasized),opacity var(--duration-slow) var(--ease-standard),block-size var(--duration-fast) var(--ease-standard); }
|
|
3226
|
+
.toast-stack:is(.toast-stack-top,.toast-stack-top-start,.toast-stack-top-end) .toast { top:0; bottom:auto; transform-origin:50% 0; }
|
|
3227
|
+
.toast[data-expanded] { block-size:var(--toast-height,auto); transform:translateX(var(--toast-swipe-movement-x,0px)) translateY(calc(var(--toast-swipe-movement-y,0px) + var(--toast-dir) * (var(--toast-offset-y,0px) + var(--toast-index,0) * var(--toast-gap)))); }
|
|
3228
|
+
.toast[data-starting-style],.toast[data-ending-style] { transform:translateY(calc(-1 * var(--toast-dir) * 150%)); }
|
|
3229
|
+
.toast[data-limited],.toast[data-ending-style] { opacity:0; }
|
|
3230
|
+
.toast[data-ending-style][data-swipe-direction="right"] { transform:translateX(calc(var(--toast-swipe-movement-x,0px) + 150%)); }
|
|
3231
|
+
.toast[data-ending-style][data-swipe-direction="up"] { transform:translateY(calc(var(--toast-swipe-movement-y,0px) - 150%)); }
|
|
3232
|
+
.toast[data-ending-style][data-swipe-direction="down"] { transform:translateY(calc(var(--toast-swipe-movement-y,0px) + 150%)); }
|
|
3233
|
+
/* A ponte entre dois avisos abertos: sem ela, o mouse que passa pelo vão de 12 sai da pilha e ela fecha. */
|
|
3234
|
+
.toast::after { content:""; position:absolute; inset-inline:0; top:100%; block-size:calc(var(--toast-gap) + var(--border-width)); }
|
|
3235
|
+
.toast-stack:is(.toast-stack-top,.toast-stack-top-start,.toast-stack-top-end) .toast::after { top:auto; bottom:100%; }
|
|
3236
|
+
.toast-content { display:flex; align-items:flex-start; gap:calc(var(--space-1) + var(--space-05)); block-size:100%; overflow:hidden; transition:opacity var(--duration-base) var(--ease-standard); }
|
|
3237
|
+
.toast-content[data-behind] { opacity:0; }
|
|
3238
|
+
.toast-content[data-expanded] { opacity:1; }
|
|
3239
|
+
.toast-indicator { display:inline-flex; flex:none; align-items:center; justify-content:center; inline-size:var(--space-6); block-size:var(--space-6); color:var(--popover-foreground); }
|
|
3240
|
+
.toast-indicator > .icon { --step-icon:var(--icon-sm); }
|
|
3241
|
+
.toast-text { display:flex; flex:1 1 0; flex-direction:column; align-self:center; min-inline-size:0; }
|
|
3242
|
+
.toast-title { color:var(--popover-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--space-5); }
|
|
3243
|
+
.toast-description { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
3244
|
+
.toast-action { flex:none; align-self:center; }
|
|
3245
|
+
/* No celular a ação desce para baixo do texto, alinhada com ele — como a dela. */
|
|
3246
|
+
@media (max-width:639.98px) { .toast-content { flex-wrap:wrap; } .toast-text { flex-basis:calc(100% - var(--space-6) - var(--space-1) - var(--space-05)); } .toast-action { margin-inline-start:calc(var(--space-6) + var(--space-1) + var(--space-05)); } }
|
|
3247
|
+
/* As faces do tipo (desde 16/08/2026 elas pintam; o check 18 não enxerga classe por template). Em
|
|
3248
|
+
0.32.0 o tipo deixou de tingir o fundo e a borda: pinta o ícone e o título, no par `-400` da
|
|
3249
|
+
ADR-0061, como o aviso da referência. */
|
|
3250
|
+
.toast-info :is(.toast-indicator,.toast-title) { color:var(--info-400); }
|
|
3251
|
+
.toast-success :is(.toast-indicator,.toast-title) { color:var(--success-400); }
|
|
3252
|
+
.toast-warning :is(.toast-indicator,.toast-title) { color:var(--warning-400); }
|
|
3253
|
+
.toast-danger :is(.toast-indicator,.toast-title) { color:var(--danger-400); }
|
|
3254
|
+
/* O X do aviso: o `CloseButton` de 20 com o X de 12, na quina, com borda. Aparece com o mouse ou o
|
|
3255
|
+
foco no aviso da frente (ou na pilha aberta); no toque, fica sempre à vista. */
|
|
3256
|
+
.toast-close.close-button { position:absolute; inset-block-start:calc(-1 * var(--space-1)); inset-inline-end:calc(-1 * var(--space-1)); inline-size:var(--space-5); block-size:var(--space-5); border:var(--border-width) solid var(--border); background:var(--popover); opacity:0; pointer-events:none; transition:opacity var(--duration-fast) var(--ease-standard); }
|
|
3257
|
+
.toast-close.close-button .icon { --step-icon:var(--space-3); }
|
|
3258
|
+
:is(.toast[data-expanded],.toast:has(> .toast-content:not([data-behind]))):is(:hover,:focus-within) > .toast-close { opacity:1; pointer-events:auto; }
|
|
3259
|
+
@media (hover:none) { :is(.toast[data-expanded],.toast:has(> .toast-content:not([data-behind]))) > .toast-close { opacity:1; pointer-events:auto; } }
|
|
3260
|
+
@media (pointer:coarse) { .toast-close.close-button::before { inset:calc((var(--space-5) - var(--target-min)) / 2); } }
|
|
2671
3261
|
/* GAR-14 (0.28.0): o aviso do `Button share`, preso ao botão — "Link copiado", ou o erro com o link à
|
|
2672
3262
|
mostra. Tem a medida do botão (a altura, o recheio da regra de cima, a letra e a cápsula) e a pele
|
|
2673
3263
|
do aviso de sempre. O ícone é desenho de máscara, como a seta do `KPI`: a mesma marcação serve ao
|
|
@@ -2692,8 +3282,27 @@ img,svg { display:block; }
|
|
|
2692
3282
|
.command-overlay { position:fixed; inset:0; z-index:var(--z-modal); display:grid; place-items:start center; padding:var(--space-16) var(--space-5) var(--space-5); background:var(--overlay); backdrop-filter:blur(5px); }
|
|
2693
3283
|
.command-palette { display:grid; gap:var(--space-2); width:min(680px,100%); max-height:100%; overflow:auto; padding:var(--space-4); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); box-shadow:var(--shadow-lg); }
|
|
2694
3284
|
/* Camadas flutuantes (Base UI): tooltip, popover, menu. z-modal para funcionarem sobre diálogos; empilhamento mútuo pela ordem do portal no DOM. */
|
|
2695
|
-
.
|
|
2696
|
-
|
|
3285
|
+
/* 0.32.0, a dica da referência: recheio de 8, letra de 12/16, até 320 de largura, o fundo das janelas
|
|
3286
|
+
(era o fundo afundado), e a palavra longa quebra onde precisar. O canto continua o 10 da Aurea (o
|
|
3287
|
+
dela é 12, que a nossa escala não tem). Entra crescendo de 0,9 e sai encolhendo; pelo teclado, e
|
|
3288
|
+
quando passa de uma dica para a vizinha, entra sem animação (`data-instant` do motor). */
|
|
3289
|
+
.tooltip { z-index:var(--z-modal); max-inline-size:min(20rem,calc(100vw - 2 * var(--space-4))); padding:var(--space-2); border:var(--border-width) solid var(--border); border-radius:var(--radius-md); background:var(--popover); color:var(--popover-foreground); font-size:var(--text-xs); line-height:var(--space-4); overflow-wrap:anywhere; box-shadow:var(--shadow-md); transform-origin:var(--transform-origin,center); transition:opacity var(--duration-base) var(--ease-standard),scale var(--duration-base) var(--ease-standard); }
|
|
3290
|
+
.tooltip[data-starting-style],.tooltip[data-ending-style],.popover[data-starting-style],.popover[data-ending-style] { opacity:0; scale:.9; }
|
|
3291
|
+
.tooltip[data-ending-style],.popover[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
3292
|
+
.tooltip[data-instant] { transition:none; }
|
|
3293
|
+
.popover { z-index:var(--z-modal); min-width:220px; max-width:min(360px,calc(100vw - 32px)); padding:16px; border:1px solid var(--border); border-radius:var(--radius-card); background:var(--popover); color:var(--popover-foreground); font-size:var(--text-sm); box-shadow:var(--shadow-lg); display:grid; gap:10px; transform-origin:var(--transform-origin,center); transition:opacity var(--duration-base) var(--ease-standard),scale var(--duration-base) var(--ease-standard); }
|
|
3294
|
+
.popover-title { font-weight:var(--weight-medium); }
|
|
3295
|
+
/* A SETA (0.32.0): o desenho é nosso — uma curva de 12 × 6 —, com o fundo da janela e a linha da borda,
|
|
3296
|
+
e ela entra 1 por cima da borda da janela para a linha dar a volta sem emenda. O motor põe a seta
|
|
3297
|
+
no ponto certo do lado; aqui só se diz em que lado ela encosta e para onde aponta. */
|
|
3298
|
+
.overlay-arrow { display:flex; inline-size:var(--space-3); block-size:var(--space-3); }
|
|
3299
|
+
.overlay-arrow > svg { inline-size:100%; block-size:100%; overflow:visible; }
|
|
3300
|
+
.overlay-arrow-fill { fill:var(--popover); }
|
|
3301
|
+
.overlay-arrow-line { stroke:var(--border); stroke-width:var(--border-width); }
|
|
3302
|
+
.overlay-arrow[data-side="top"] { top:calc(100% - var(--border-width)); }
|
|
3303
|
+
.overlay-arrow[data-side="bottom"] { bottom:calc(100% - var(--border-width)); rotate:180deg; }
|
|
3304
|
+
.overlay-arrow[data-side="left"] { left:calc(100% - var(--border-width)); rotate:-90deg; }
|
|
3305
|
+
.overlay-arrow[data-side="right"] { right:calc(100% - var(--border-width)); rotate:90deg; }
|
|
2697
3306
|
/* `--menu-px` existe porque o RÓTULO DE GRUPO tem de alinhar com o texto dos itens, e o número
|
|
2698
3307
|
estava escrito duas vezes. Uma relação entre duas regras não se mantém repetindo a constante:
|
|
2699
3308
|
quem mudar o recuo do item mudaria o alinhamento do rótulo sem perceber. */
|
|
@@ -2723,8 +3332,18 @@ img,svg { display:block; }
|
|
|
2723
3332
|
DEPOIS do `.menu-item` de proposito: as duas regras tem a MESMA especificidade, entao quem vem
|
|
2724
3333
|
por ultimo vence. Escrita antes, a grade de tres colunas era apagada pelo `display:flex` do
|
|
2725
3334
|
menu — medido em 13/08/2026, e o gate de pele foi quem pegou. */
|
|
2726
|
-
.command-positioner { inline-size:var(--anchor-width); }
|
|
2727
3335
|
.command-list { max-height:min(50vh,360px); overflow-y:auto; overscroll-behavior:contain; }
|
|
3336
|
+
/* 0.32.0 — a lista mora DENTRO da caixa da paleta (o `inline` do motor), e não num popup: o `.menu`
|
|
3337
|
+
aqui não flutua — sem borda, sem sombra, sem largura própria; a caixa é a da paleta. */
|
|
3338
|
+
.command-palette .command-list { position:static; z-index:auto; min-width:0; max-width:none; border:0; box-shadow:none; padding:0; background:transparent; }
|
|
3339
|
+
/* O título do grupo (DOC-06) = o `Header` da seção da lista da referência: 12, peso médio,
|
|
3340
|
+
esmaecido, sem maiúsculas; 6 em cima e 4 embaixo; alinhado ao texto do item (`--menu-px`). */
|
|
3341
|
+
.command-group + .command-group { margin-block-start:var(--space-1); }
|
|
3342
|
+
.command-group-label { padding:calc(var(--space-1) + var(--space-05)) var(--menu-px, var(--space-3)) var(--space-1); color:var(--muted-foreground); font-size:var(--text-xs); font-weight:var(--weight-medium); }
|
|
3343
|
+
/* A linha de atalhos (DOC-07): a tecla da referência (o `Kbd`) com o que ela faz, 12 esmaecido,
|
|
3344
|
+
separada da lista por um fio. */
|
|
3345
|
+
.command-shortcuts { display:flex; flex-wrap:wrap; gap:var(--space-4); margin:0; padding:var(--space-2) var(--space-1) 0; border-top:var(--border-width) solid var(--border); color:var(--muted-foreground); font-size:var(--text-xs); }
|
|
3346
|
+
.command-shortcuts > span { display:inline-flex; align-items:center; gap:var(--space-1); }
|
|
2728
3347
|
.command-item { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:var(--space-3); align-items:center; }
|
|
2729
3348
|
.command-item-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2730
3349
|
|
|
@@ -2777,6 +3396,19 @@ img,svg { display:block; }
|
|
|
2777
3396
|
centralizado; e o valor longo termina em "…" em vez de passar por baixo da seta. */
|
|
2778
3397
|
.select-trigger { display:flex; align-items:center; text-align:start; cursor:pointer; }
|
|
2779
3398
|
.select-trigger:disabled,.select-trigger[data-disabled] { cursor:not-allowed; }
|
|
3399
|
+
/* O GATILHO DO `DatePicker` (0.32.0, ADR-0068) é o campo do `Select`, com o calendário no lugar da seta:
|
|
3400
|
+
sem a seta desenhada no fundo, o recheio do fim volta ao do lado de dentro, e o ícone vai no fim. */
|
|
3401
|
+
/* A seta sai com `.select.date-picker-trigger` (força 0,2,0), e não só `.date-picker-trigger`: a regra do tema claro
|
|
3402
|
+
do `.select` (`[data-theme="light"] .select:where(…)`, mais acima) também tem 0,2,0 e repintava a seta por cima do
|
|
3403
|
+
calendário — visto pelo Victor em 13/10/2026. Empate de força: vale a que vem depois, que é esta. */
|
|
3404
|
+
.date-picker-trigger { gap:var(--space-2); padding-inline-end:var(--step-field-px,var(--space-3)); }
|
|
3405
|
+
.select.date-picker-trigger { background-image:none; }
|
|
3406
|
+
.date-picker-trigger > .icon { flex:none; color:var(--muted-foreground); }
|
|
3407
|
+
/* A janela abraça o calendário (o `.popover` tem um piso de largura para texto, e aqui não há texto). E é UMA
|
|
3408
|
+
superfície só, como na referência: a janela tem o fundo, a sombra e o canto, com recheio 12 (o `p-3` dela); o
|
|
3409
|
+
calendário de dentro perde a moldura própria — antes saía caixa dentro de caixa (visto em 13/10/2026). */
|
|
3410
|
+
.date-picker-popover { min-width:0; padding:var(--space-3); }
|
|
3411
|
+
.date-picker-popover > .calendar { padding:0; border:0; border-radius:0; background:transparent; }
|
|
2780
3412
|
.select-value { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2781
3413
|
.select-value[data-placeholder] { color:var(--muted-foreground); }
|
|
2782
3414
|
.combobox-popup { inline-size:var(--anchor-width); min-inline-size:0; max-inline-size:none; max-block-size:min(320px,var(--available-height)); overflow-y:auto; overscroll-behavior:contain; }
|
|
@@ -2900,7 +3532,7 @@ img,svg { display:block; }
|
|
|
2900
3532
|
(`.tree-label` não quebra), então a cápsula não deforma. */
|
|
2901
3533
|
.tree, .tree-group { margin:0; padding:0; list-style:none; }
|
|
2902
3534
|
.tree-item { outline:none; }
|
|
2903
|
-
.tree-node { display:
|
|
3535
|
+
.tree-node { display:grid; grid-template-columns:auto auto minmax(0,1fr); align-items:center; column-gap:0; min-height:var(--control-h-md); padding-block:var(--space-1); padding-inline-end:var(--space-3); border-radius:var(--radius-control); color:var(--foreground); cursor:pointer; user-select:none; }
|
|
2904
3536
|
.tree-node:hover { background:var(--surface-3); }
|
|
2905
3537
|
.tree-item:focus-visible > .tree-node { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2906
3538
|
.tree-node[data-selected] { background:color-mix(in srgb,var(--primary) 14%,transparent); }
|
|
@@ -2913,7 +3545,17 @@ img,svg { display:block; }
|
|
|
2913
3545
|
.tree-twist-rtl { rotate:180deg; }
|
|
2914
3546
|
.tree-item[aria-expanded="true"] > .tree-node > .tree-twist { rotate:90deg; }
|
|
2915
3547
|
.tree-indent { flex:none; width:1rem; }
|
|
2916
|
-
|
|
3548
|
+
/* MNT-23 (12/10/2026): a árvore ALARGAVA A PÁGINA. O rótulo não quebra linha, e numa linha `flex` a
|
|
3549
|
+
largura mínima da árvore era o rótulo inteiro: numa coluna `1fr` de grade, num filho `flex: 1` ou num
|
|
3550
|
+
div dentro deles, ela empurrava a caixa (medido: 360 → 820). A linha é uma GRADE, e a trilha do
|
|
3551
|
+
rótulo é `minmax(0,1fr)`: ela pede zero de largura mínima e, quando há espaço (um painel que se
|
|
3552
|
+
ajusta ao conteúdo), mostra o rótulo inteiro — largura 0 no rótulo resolveria só a primeira metade.
|
|
3553
|
+
As três colunas: a seta (ou o recuo, ou a rodinha), o ícone do nó e o rótulo. O vão vira margem do
|
|
3554
|
+
ícone e do rótulo: sem ícone, a coluna dele fica vazia e não sobra vão dobrado. Quem cobra:
|
|
3555
|
+
`tests/visual/rede3.spec.ts`. */
|
|
3556
|
+
.tree-node > .tree-twist, .tree-node > .tree-indent { grid-column:1; }
|
|
3557
|
+
.tree-node > .icon:not(.tree-twist) { grid-column:2; margin-inline-start:var(--space-2); }
|
|
3558
|
+
.tree-label { grid-column:3; margin-inline-start:var(--space-2); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2917
3559
|
|
|
2918
3560
|
/* NotificationCenter (Fase 4) — compõe o .popover; aqui só o gatilho com count,
|
|
2919
3561
|
o cabeçalho e as linhas do feed. Espaço novo tokenizado; a linha usa radius-sm
|
|
@@ -2975,7 +3617,8 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
2975
3617
|
`height:auto` (o conteúdo já passa de --row-h, e altura em célula é mínimo),
|
|
2976
3618
|
`letter-spacing:normal` (o .input não herda o entreletras do cabeçalho) e
|
|
2977
3619
|
`line-height:0` no rótulo (o <label> vazio já não ocupa altura). */
|
|
2978
|
-
.datagrid-filters th { padding-block:var(--space-2);
|
|
3620
|
+
.table-wrap thead tr.datagrid-filters th { block-size:auto; padding-block:var(--space-2); vertical-align:top; }
|
|
3621
|
+
.table-wrap thead tr.datagrid-filters th::after { content:none; }
|
|
2979
3622
|
.datagrid-filters .field { gap:0; }
|
|
2980
3623
|
|
|
2981
3624
|
/* F6: cabeçalho fixo. A `.table-wrap` já é o contêiner de rolagem (overflow:auto),
|
|
@@ -2993,12 +3636,14 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
2993
3636
|
seria trocar risco real por pureza de método. As outras três regras daqui foram
|
|
2994
3637
|
provadas. */
|
|
2995
3638
|
.datagrid-sticky thead th { position:sticky; inset-block-start:0; z-index:1; }
|
|
2996
|
-
.datagrid-sticky .datagrid-filters th { inset-block-start:var(--
|
|
3639
|
+
.datagrid-sticky .datagrid-filters th { inset-block-start:var(--table-head-h); }
|
|
2997
3640
|
|
|
2998
3641
|
/* F7: a alça de redimensionar. Fina, colada no fim da célula e da altura toda —
|
|
2999
3642
|
alvo estreito de propósito, porque largo demais rouba o clique do cabeçalho
|
|
3000
3643
|
ordenável que está ao lado. O `th` precisa de `position:relative` para ancorá-la. */
|
|
3001
3644
|
.datagrid thead th:has(> .datagrid-resizer) { position:relative; }
|
|
3645
|
+
/* A alça de largura toma o lugar do fio entre as colunas, como na referência. */
|
|
3646
|
+
.table-wrap thead th:has(> .datagrid-resizer)::after { content:none; }
|
|
3002
3647
|
.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; }
|
|
3003
3648
|
.datagrid-resizer:hover, .datagrid-resizer:focus-visible { background:var(--primary); }
|
|
3004
3649
|
.datagrid-resizer:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
@@ -3223,7 +3868,12 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
3223
3868
|
--xy-minimap-node-stroke-color:transparent;
|
|
3224
3869
|
/* A espessura de base da linha: a do sistema (1). O alto contraste dobra a base, e os pesos e
|
|
3225
3870
|
traços são múltiplos dela — por isso nada aqui é número solto. */
|
|
3226
|
-
--graph-edge-base:var(--border-width);
|
|
3871
|
+
--graph-edge-base:var(--border-width);
|
|
3872
|
+
/* (Rodada 2) O rótulo de HTML fica ACIMA das linhas e dos contêineres: o motor eleva a linha de quem
|
|
3873
|
+
está dentro de um contêiner ao andar do nó (1, 2…), e a caixa do contêiner é um nó — sem isto, o
|
|
3874
|
+
"10G" saía por baixo da fibra e o nome da porta, por baixo do site (medido na bancada). 1000 é o
|
|
3875
|
+
degrau que o próprio motor usa para elevar o escolhido; o rótulo que encosta num nó some (MNT-12.5). */
|
|
3876
|
+
--graph-label-z:1000; }
|
|
3227
3877
|
/* A atribuição do motor (que a licença dele manda manter, e mantemos) traz `color:#999`
|
|
3228
3878
|
CRAVADO no `init.css` — o único ponto em que a folha "estrutural" carrega cor. Reprovou
|
|
3229
3879
|
contraste no axe, tema claro. A regra é de ELEMENTO e vem ESCOPADA à nossa classe, que é a
|
|
@@ -3268,18 +3918,34 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3268
3918
|
com camada, qualquer que seja a força do seletor. Medido na bancada da rodada 1: a fibra saía com
|
|
3269
3919
|
1 de espessura em vez de 6. A variável não tem rival na linha, então a nossa vale. O `stroke-width`
|
|
3270
3920
|
fica para os desenhos que são nossos (a amostra da legenda e o miolo do traço duplo). */
|
|
3271
|
-
.dependency-graph .graph-edge { --graph-edge-w:var(--graph-edge-base); --xy-edge-stroke-width:var(--graph-edge-w); stroke-width:var(--graph-edge-w); }
|
|
3272
|
-
.dependency-graph .graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2); }
|
|
3273
|
-
.dependency-graph .graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3); }
|
|
3921
|
+
.dependency-graph .graph-edge { --graph-edge-w:calc(var(--graph-edge-base) * var(--graph-edge-scale,1)); --xy-edge-stroke-width:var(--graph-edge-w); stroke-width:var(--graph-edge-w); }
|
|
3922
|
+
.dependency-graph .graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2 * var(--graph-edge-scale,1)); }
|
|
3923
|
+
.dependency-graph .graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3 * var(--graph-edge-scale,1)); }
|
|
3924
|
+
/* MNT-26 (12/10/2026): a COR da linha é o ESTADO dela, o `status.tone` da linha, como o selo do nó (pedido
|
|
3925
|
+
do dono do app: "senti falta de cores"). A cor é a de LETRA e borda sobre a tela (o par `-400`,
|
|
3926
|
+
ADR-0061), e não o fundo cheio. Ela pinta a variável do motor no próprio traço — vence o alto contraste,
|
|
3927
|
+
que pinta a do mapa inteiro: a linha de cor continua de cor, e o traço fica grosso como o resto. A
|
|
3928
|
+
amostra da parte "Estado" da legenda usa a mesma classe, e a palavra ao lado dela é o que garante que a
|
|
3929
|
+
cor não fala sozinha; a amostra do TIPO da ligação não leva cor.
|
|
3930
|
+
A linha com cor tem o DOBRO da espessura (ordem do Victor, 13/10/2026: "pode engrossar a linha com cor").
|
|
3931
|
+
Medido no "caber na tela" (zoom 0,57): com 1 — e com 1,5 —, nenhum ponto do traço chegava à cor de
|
|
3932
|
+
verdade, e a linha verde parecia cinza; com 2, a cor aparece exata. As três espessuras dobram juntas
|
|
3933
|
+
(`--graph-edge-scale`), para a velocidade continuar legível entre as linhas com cor; o miolo do duplo
|
|
3934
|
+
leva a mesma classe e dobra junto. */
|
|
3935
|
+
.dependency-graph :is(.graph-edge-tone-info,.graph-edge-tone-success,.graph-edge-tone-warning,.graph-edge-tone-danger) { --graph-edge-scale:2; }
|
|
3936
|
+
.dependency-graph .graph-edge-tone-info { --xy-edge-stroke:var(--info-400); }
|
|
3937
|
+
.dependency-graph .graph-edge-tone-success { --xy-edge-stroke:var(--success-400); }
|
|
3938
|
+
.dependency-graph .graph-edge-tone-warning { --xy-edge-stroke:var(--warning-400); }
|
|
3939
|
+
.dependency-graph .graph-edge-tone-danger { --xy-edge-stroke:var(--danger-400); }
|
|
3274
3940
|
.dependency-graph .graph-edge-dashed { stroke-dasharray:var(--space-2) var(--space-1); }
|
|
3275
3941
|
.dependency-graph .graph-edge-dotted { --xy-edge-stroke-width:calc(var(--graph-edge-w) * 2); stroke-width:calc(var(--graph-edge-w) * 2); stroke-dasharray:0 calc(var(--graph-edge-w) * 5); stroke-linecap:round; }
|
|
3276
3942
|
.dependency-graph .graph-edge-double { --xy-edge-stroke-width:calc(var(--graph-edge-w) * 3); stroke-width:calc(var(--graph-edge-w) * 3); }
|
|
3277
|
-
.graph-edge-double-core { --graph-edge-w:var(--graph-edge-base); fill:none; stroke:var(--xy-edge-label-background-color); stroke-width:var(--graph-edge-w); pointer-events:none; }
|
|
3278
|
-
.graph-edge-double-core.graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2); }
|
|
3279
|
-
.graph-edge-double-core.graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3); }
|
|
3943
|
+
.graph-edge-double-core { --graph-edge-w:calc(var(--graph-edge-base) * var(--graph-edge-scale,1)); fill:none; stroke:var(--xy-edge-label-background-color); stroke-width:var(--graph-edge-w); pointer-events:none; }
|
|
3944
|
+
.graph-edge-double-core.graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2 * var(--graph-edge-scale,1)); }
|
|
3945
|
+
.graph-edge-double-core.graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3 * var(--graph-edge-scale,1)); }
|
|
3280
3946
|
/* A pastilha do meio (marca, número, grupo) e o nome da porta na ponta são HTML sobre o desenho. */
|
|
3281
|
-
.graph-edge-chip { position:absolute; display:inline-flex; align-items:center; gap:var(--space-1); padding:var(--space-05) var(--space-2); border-radius:var(--radius-control); background:var(--xy-edge-label-background-color); color:var(--xy-edge-label-color); font-size:var(--graph-edge-label-size,var(--text-xs)); line-height:var(--leading-tight); white-space:nowrap; pointer-events:all; }
|
|
3282
|
-
.graph-edge-end { position:absolute; padding:0 var(--space-1); border-radius:var(--radius-xs); background:var(--xy-edge-label-background-color); color:var(--xy-edge-label-color); font-size:var(--graph-edge-label-size,var(--text-xs)); line-height:var(--leading-tight); white-space:nowrap; pointer-events:none; }
|
|
3947
|
+
.graph-edge-chip { position:absolute; z-index:var(--graph-label-z); display:inline-flex; align-items:center; gap:var(--space-1); padding:var(--space-05) var(--space-2); border-radius:var(--radius-control); background:var(--xy-edge-label-background-color); color:var(--xy-edge-label-color); font-size:var(--graph-edge-label-size,var(--text-xs)); line-height:var(--leading-tight); white-space:nowrap; pointer-events:all; }
|
|
3948
|
+
.graph-edge-end { position:absolute; z-index:var(--graph-label-z); padding:0 var(--space-1); border-radius:var(--radius-xs); background:var(--xy-edge-label-background-color); color:var(--xy-edge-label-color); font-size:var(--graph-edge-label-size,var(--text-xs)); line-height:var(--leading-tight); white-space:nowrap; pointer-events:none; }
|
|
3283
3949
|
/* `nodrag`/`nopan`: a pastilha é HTML sobre o mapa, e as duas classes dizem ao motor para não arrastar
|
|
3284
3950
|
nem rolar a tela por ela (o botão do grupo precisa do clique). Fora do botão, o cursor é o comum. */
|
|
3285
3951
|
.graph-edge-chip.nodrag.nopan { cursor:default; }
|
|
@@ -3292,7 +3958,12 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3292
3958
|
/* Os botões de zoom, o minimapa e a legenda flutuam sobre o mapa, com a pele de cartão. */
|
|
3293
3959
|
.graph-controls { display:flex; gap:var(--space-1); padding:var(--space-1); border:var(--border-width) solid var(--border); border-radius:var(--radius-control); background:var(--card); }
|
|
3294
3960
|
.graph-minimap { border:var(--border-width) solid var(--border); border-radius:var(--radius-md); overflow:hidden; }
|
|
3295
|
-
.graph-legend { display:grid; gap:var(--space-1); margin:0; padding:var(--space-2) var(--space-3);
|
|
3961
|
+
.graph-legend { display:grid; gap:var(--space-1); margin:0; padding:var(--space-2) var(--space-3); border:var(--border-width) solid var(--border); border-radius:var(--radius-md); background:var(--card); color:var(--foreground); font-size:var(--graph-edge-label-size,var(--text-xs)); }
|
|
3962
|
+
/* Duas partes (12/10/2026): o tipo da ligação e o estado, cada uma com o título à vista; com uma parte só,
|
|
3963
|
+
a lista sozinha, como era. */
|
|
3964
|
+
.graph-legend ul { display:grid; gap:var(--space-1); margin:0; padding:0; list-style:none; }
|
|
3965
|
+
.graph-legend-title { margin:0; color:var(--muted-foreground); font-weight:var(--weight-medium); }
|
|
3966
|
+
.graph-legend ul + .graph-legend-title { margin-block-start:var(--space-2); }
|
|
3296
3967
|
.graph-legend li { display:flex; align-items:center; gap:var(--space-2); }
|
|
3297
3968
|
.graph-legend-sample { inline-size:var(--space-8); block-size:var(--space-2); overflow:visible; }
|
|
3298
3969
|
.graph-legend-sample .graph-edge,.graph-legend-sample .graph-edge-double-core { fill:none; }
|
|
@@ -3307,7 +3978,53 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3307
3978
|
.dependency-graph[data-contrast="high"] { --xy-edge-stroke:var(--foreground); --xy-edge-label-color:var(--foreground); --graph-edge-base:calc(var(--border-width) * 2); }
|
|
3308
3979
|
.dependency-graph[data-contrast="high"] .graph-node-body { border-color:var(--foreground); border-width:calc(var(--border-width) * 2); }
|
|
3309
3980
|
.dependency-graph[data-contrast="high"] .graph-node-kind,.dependency-graph[data-contrast="high"] .graph-node-icon { color:var(--foreground); }
|
|
3310
|
-
|
|
3981
|
+
/* ── RODADA 2 DA REDE (ADR-0065, 10/10/2026) ───────────────────────────────────────────────
|
|
3982
|
+
O LAÇO do modo de arrumar e a caixa em volta dos escolhidos se vestem pelas variáveis do motor. */
|
|
3983
|
+
.dependency-graph { --xy-selection-background-color:color-mix(in oklab,var(--primary) 10%,transparent); --xy-selection-border:var(--border-width) dashed var(--primary); }
|
|
3984
|
+
/* No modo de arrumar, quem recebe o foco é a caixa do MOTOR (que não tem classe nossa): o anel vai
|
|
3985
|
+
no corpo do nó, com o raio dele, e é UMA linha — a borda vira a cor do foco e o anel encosta nela
|
|
3986
|
+
(ADR-0059). A caixa do motor, quadrada, não desenha anel nenhum. */
|
|
3987
|
+
.dependency-graph :focus-visible:has(> .graph-node) { outline:none; }
|
|
3988
|
+
.dependency-graph :focus-visible:has(> .graph-group) { outline:none; }
|
|
3989
|
+
.dependency-graph :focus-visible > .graph-node > .graph-node-body,.dependency-graph :focus-visible > .graph-group { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
3990
|
+
/* O CONTÊINER aberto (site, andar, rack): a região em volta dos filhos, com a cabeça. A cabeça tem
|
|
3991
|
+
`--space-10` e o recheio `--space-4` — os mesmos números com que o graph.tsx monta a caixa. */
|
|
3992
|
+
/* O fundo é um VÉU leve, e não uma cor cheia: a linha entre dois nós de fora que passa por cima da
|
|
3993
|
+
região continua aparecendo (o contêiner é um nó, e o motor o desenha acima das linhas comuns). E o
|
|
3994
|
+
véu soma: o andar dentro do site fica um tom acima, e o aninhamento se lê sem cor nova. */
|
|
3995
|
+
.graph-group { position:relative; inline-size:100%; block-size:100%; border:var(--border-width) solid var(--border); border-radius:var(--radius-card); background:color-mix(in oklab,var(--foreground) 3%,transparent); }
|
|
3996
|
+
.graph-group[data-selected] { border-color:var(--primary); }
|
|
3997
|
+
.graph-group[data-dimmed] { opacity:.3; }
|
|
3998
|
+
.graph-group-head { display:flex; align-items:center; gap:var(--space-2); block-size:var(--space-10); padding-inline:var(--space-2) var(--space-3); color:var(--foreground); font-size:var(--text-sm); }
|
|
3999
|
+
.graph-group-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:var(--weight-medium); }
|
|
4000
|
+
/* Os dois botões de fechar e abrir têm 24 de lado (`--space-6`): o alvo mínimo de toque (WCAG 2.5.8). */
|
|
4001
|
+
.graph-group-toggle { display:inline-grid; place-items:center; flex:none; inline-size:var(--space-6); block-size:var(--space-6); padding:0; border:0; border-radius:var(--radius-full); background:none; color:var(--muted-foreground); cursor:pointer; }
|
|
4002
|
+
.graph-group-toggle:hover { background:var(--secondary); color:var(--foreground); }
|
|
4003
|
+
/* O de NÓ senta no CANTO de baixo, à direita, como a quantidade no de cima: fechado, mostra QUANTOS
|
|
4004
|
+
guarda ("+12"). No canto, e não na borda: na borda ele cobria a alça da última porta (medido na
|
|
4005
|
+
bancada, a "porta 3" do núcleo saía por baixo dele). O selo de estado, embaixo à esquerda, encolhe. */
|
|
4006
|
+
.graph-node-toggle { position:absolute; inset-block-end:0; inset-inline-end:0; display:inline-flex; align-items:center; justify-content:center; min-inline-size:var(--space-6); block-size:var(--space-6); padding:0 var(--space-2); border:var(--border-width) solid var(--border-strong); border-radius:var(--radius-control); background:var(--secondary); color:var(--foreground); font:inherit; font-size:var(--text-xs); font-variant-numeric:tabular-nums; font-weight:var(--weight-medium); transform:translate(25%,50%); cursor:pointer; }
|
|
4007
|
+
.graph-node-toggle[aria-expanded="false"] { border-color:var(--primary-outline); }
|
|
4008
|
+
.graph-node:has(.graph-node-toggle) .graph-node-status { max-inline-size:calc(100% - var(--space-16)); }
|
|
4009
|
+
/* O ALFINETE (nó fixo), no canto de cima à esquerda — a quantidade fica no da direita. */
|
|
4010
|
+
.graph-node-pin { position:absolute; inset-block-start:0; inset-inline-start:0; display:inline-grid; place-items:center; inline-size:var(--space-5); block-size:var(--space-5); border:var(--border-width) solid var(--border); border-radius:var(--radius-full); background:var(--card); color:var(--foreground); transform:translate(-25%,-50%); }
|
|
4011
|
+
/* A NUVEM é desenho de FUNDO: a caixa do nó fica sem borda e sem fundo, e o texto vai ao centro. */
|
|
4012
|
+
.graph-node-cloud { position:absolute; inset:0; inline-size:100%; block-size:100%; overflow:visible; pointer-events:none; }
|
|
4013
|
+
.graph-node-cloud path { fill:var(--card); stroke:var(--border); stroke-width:var(--border-width); }
|
|
4014
|
+
/* E o ícone vai JUNTO do texto, no meio da nuvem: na borda da caixa, onde fica nos outros nós, ele
|
|
4015
|
+
saía para fora do contorno. */
|
|
4016
|
+
.graph-node[data-shape="cloud"] .graph-node-body { position:relative; border-color:transparent; background:none; justify-items:center; text-align:center; }
|
|
4017
|
+
.graph-node[data-shape="cloud"] .graph-node-has-icon { grid-template-columns:auto auto; justify-content:center; }
|
|
4018
|
+
.graph-node[data-shape="cloud"][data-selected] .graph-node-cloud path,.graph-node[data-shape="cloud"][data-focused] .graph-node-cloud path { stroke:var(--primary); }
|
|
4019
|
+
.dependency-graph[data-contrast="high"] .graph-node-cloud path { stroke:var(--foreground); stroke-width:calc(var(--border-width) * 2); }
|
|
4020
|
+
/* A BARRA do modo de arrumar quebra em mais linhas quando a tela é estreita. */
|
|
4021
|
+
.graph-toolbar { max-inline-size:calc(100% - var(--space-8)); }
|
|
4022
|
+
/* OS RÓTULOS QUE SOMEM (MNT-12.5): o que encosta noutro, pela prioridade (o graph.tsx mede e marca),
|
|
4023
|
+
e o texto das linhas inteiro quando a câmera está longe — a 60%, a letra viraria um risco. */
|
|
4024
|
+
.dependency-graph [data-crowded],.dependency-graph[data-far] :is(.graph-edge-text,.graph-edge-end,.graph-edge-chip-text) { visibility:hidden; }
|
|
4025
|
+
/* 0.32.0: as células têm o fundo de cartão (o corpo da tabela da referência), então o escolhido pinta
|
|
4026
|
+
a CÉLULA — na linha, ele ficava por baixo delas. É o clarinho da Aurea. */
|
|
4027
|
+
.datagrid tbody tr[data-selected] > :is(td,th) { background:color-mix(in oklab,var(--primary) 10%,var(--card)); }
|
|
3311
4028
|
.datagrid-empty { padding:var(--space-6); color:var(--muted-foreground); text-align:center; }
|
|
3312
4029
|
|
|
3313
4030
|
/* ========================================================================== */
|
|
@@ -3328,11 +4045,29 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3328
4045
|
.pattern-toolbar .input-group { flex:1 1 180px; }
|
|
3329
4046
|
.media-library-row.active { border-color:var(--primary); }
|
|
3330
4047
|
/* Alvo de toque. `.tabs`/`.segmented` no lugar de `.tab`/`.segmented button`: agora a altura
|
|
3331
|
-
mora na cápsula, então é ela que precisa crescer — o filho estica atrás.
|
|
3332
|
-
|
|
4048
|
+
mora na cápsula, então é ela que precisa crescer — o filho estica atrás. O `CloseButton` fica de
|
|
4049
|
+
fora (0.32.0): o alvo dele é o `::before` de 44, e o círculo continua de 24, como o da referência. */
|
|
4050
|
+
@media (pointer:coarse) { .btn:not(.btn-link):not(.close-button),.tabs,.segmented,.pagination button,.pagination-link,.schedule-grid button,.media-control,.nav-list-row { min-height:var(--target-min); } .btn-icon,.media-control,.pagination-link { min-width:var(--target-min); } }
|
|
3333
4051
|
@media (forced-colors:active) {
|
|
3334
4052
|
:focus-visible { outline:var(--focus-width) solid CanvasText; outline-offset:var(--focus-offset); box-shadow:none; }
|
|
3335
4053
|
.badge,.pattern-gallery button[aria-pressed="true"],.device-grid button[aria-pressed="true"] { border:1px solid CanvasText; }
|
|
4054
|
+
/* O glifo por máscara é FUNDO recortado, e aqui o navegador troca todo fundo pela cor da tela: o
|
|
4055
|
+
glifo sumia (medido em 12/10/2026: zero ponto de tinta nos cinco). Ele sai da troca e pinta com a
|
|
4056
|
+
cor do SISTEMA que o texto ao lado recebe — pelo nome, porque `inherit` aqui devolve a cor de
|
|
4057
|
+
antes da troca (medido: o amarelo do link e o branco do tema escuro, sobre a tela branca). O
|
|
4058
|
+
título do `Accordion` fica na cor de texto: sem isto, o Chromium o pintava na cor de link e o
|
|
4059
|
+
Firefox na de texto, e a seta não tinha como acompanhar os dois. Glifo novo por máscara entra
|
|
4060
|
+
nesta lista; quem cobra é `tests/visual/mascara-alto-contraste.spec.ts`. */
|
|
4061
|
+
:is(.topbar-menu-icon,.link-external,.kpi-trend-icon,.accordion-chevron,.toast-anchored-icon,.toc-label-icon) { forced-color-adjust:none; background:CanvasText; }
|
|
4062
|
+
.topbar-menu-icon { background:ButtonText; }
|
|
4063
|
+
.link-external { background:LinkText; opacity:1; }
|
|
4064
|
+
.accordion-item > summary { color:CanvasText; }
|
|
4065
|
+
/* A AMOSTRA DE COR (0.32.0, ADR-0069): a cor É o conteúdo dela — no `ColorSwatch`, nas amostras para escolher, no
|
|
4066
|
+
gatilho do `ColorPicker` e na frente do `ColorField`. Com a troca, viravam círculos brancos de contorno preto e o
|
|
4067
|
+
"visto" sumia (medido em 14/10/2026). Ela sai da troca, como a área e a trilha; o anel de foco fica na cor do
|
|
4068
|
+
sistema. Quem cobra: `tests/visual/mascara-alto-contraste.spec.ts`. */
|
|
4069
|
+
:is(.color-swatch,.color-swatch-option) { forced-color-adjust:none; }
|
|
4070
|
+
.color-swatch-option:has(:focus-visible) { outline-color:CanvasText; }
|
|
3336
4071
|
}
|
|
3337
4072
|
|
|
3338
4073
|
|
|
@@ -3372,7 +4107,7 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3372
4107
|
nós sem as arestas quebraria o desenho;
|
|
3373
4108
|
- .drawer-left/.drawer-right prometem lado físico no nome (prop side). */
|
|
3374
4109
|
:dir(rtl) .select { background-position:12px 50%; }
|
|
3375
|
-
:dir(rtl) .switch input:checked + .switch-track:after { transform:translateX(-
|
|
4110
|
+
:dir(rtl) .switch input:checked + .switch-track:after { transform:translateX(calc(-1 * var(--switch-x))); }
|
|
3376
4111
|
|
|
3377
4112
|
/* BARRA DE ROLAGEM. A Aurea ESCONDIA a dela: `.sidebar` e `.toc` tinham `scrollbar-width:none`
|
|
3378
4113
|
mais `::-webkit-scrollbar{width:0}`. Região que rola sem barra visível não avisa que rola e
|
|
@@ -3388,12 +4123,33 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3388
4123
|
Ou seja: o par padrão cobre Firefox e Chrome e ainda não cobre o Safari da maioria; o caminho
|
|
3389
4124
|
webkit cobre Safari e Chrome. Juntos cobrem os três, e onde os dois valem o padrão ganha por
|
|
3390
4125
|
vir depois. Só cor e espessura — nada de desenhar seta ou canto. */
|
|
3391
|
-
.carousel-track,.code-block,.combobox-popup,.command-palette,.dialog,.drawer,.log-stream,.notification-list,.sidebar,.table-region,.table-wrap,.toc {
|
|
4126
|
+
.carousel-track,.code-block,.combobox-popup,.command-palette,.dialog,.dialog-body,.drawer,.log-stream,.notification-list,.sidebar,.table-region,.table-wrap,.toc {
|
|
3392
4127
|
scrollbar-width:thin; scrollbar-color:var(--border-strong) transparent;
|
|
3393
4128
|
}
|
|
3394
|
-
.carousel-track::-webkit-scrollbar,.code-block::-webkit-scrollbar,.combobox-popup::-webkit-scrollbar,.command-palette::-webkit-scrollbar,.dialog::-webkit-scrollbar,.drawer::-webkit-scrollbar,.log-stream::-webkit-scrollbar,.notification-list::-webkit-scrollbar,.sidebar::-webkit-scrollbar,.table-region::-webkit-scrollbar,.table-wrap::-webkit-scrollbar,.toc::-webkit-scrollbar { inline-size:var(--space-2); block-size:var(--space-2); }
|
|
3395
|
-
.carousel-track::-webkit-scrollbar-track,.code-block::-webkit-scrollbar-track,.combobox-popup::-webkit-scrollbar-track,.command-palette::-webkit-scrollbar-track,.dialog::-webkit-scrollbar-track,.drawer::-webkit-scrollbar-track,.log-stream::-webkit-scrollbar-track,.notification-list::-webkit-scrollbar-track,.sidebar::-webkit-scrollbar-track,.table-region::-webkit-scrollbar-track,.table-wrap::-webkit-scrollbar-track,.toc::-webkit-scrollbar-track { background:transparent; }
|
|
3396
|
-
.carousel-track::-webkit-scrollbar-thumb,.code-block::-webkit-scrollbar-thumb,.combobox-popup::-webkit-scrollbar-thumb,.command-palette::-webkit-scrollbar-thumb,.dialog::-webkit-scrollbar-thumb,.drawer::-webkit-scrollbar-thumb,.log-stream::-webkit-scrollbar-thumb,.notification-list::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb,.table-region::-webkit-scrollbar-thumb,.table-wrap::-webkit-scrollbar-thumb,.toc::-webkit-scrollbar-thumb { background:var(--border-strong); border-radius:var(--radius-control); }
|
|
4129
|
+
.carousel-track::-webkit-scrollbar,.code-block::-webkit-scrollbar,.combobox-popup::-webkit-scrollbar,.command-palette::-webkit-scrollbar,.dialog::-webkit-scrollbar,.dialog-body::-webkit-scrollbar,.drawer::-webkit-scrollbar,.log-stream::-webkit-scrollbar,.notification-list::-webkit-scrollbar,.sidebar::-webkit-scrollbar,.table-region::-webkit-scrollbar,.table-wrap::-webkit-scrollbar,.toc::-webkit-scrollbar { inline-size:var(--space-2); block-size:var(--space-2); }
|
|
4130
|
+
.carousel-track::-webkit-scrollbar-track,.code-block::-webkit-scrollbar-track,.combobox-popup::-webkit-scrollbar-track,.command-palette::-webkit-scrollbar-track,.dialog::-webkit-scrollbar-track,.dialog-body::-webkit-scrollbar-track,.drawer::-webkit-scrollbar-track,.log-stream::-webkit-scrollbar-track,.notification-list::-webkit-scrollbar-track,.sidebar::-webkit-scrollbar-track,.table-region::-webkit-scrollbar-track,.table-wrap::-webkit-scrollbar-track,.toc::-webkit-scrollbar-track { background:transparent; }
|
|
4131
|
+
.carousel-track::-webkit-scrollbar-thumb,.code-block::-webkit-scrollbar-thumb,.combobox-popup::-webkit-scrollbar-thumb,.command-palette::-webkit-scrollbar-thumb,.dialog::-webkit-scrollbar-thumb,.dialog-body::-webkit-scrollbar-thumb,.drawer::-webkit-scrollbar-thumb,.log-stream::-webkit-scrollbar-thumb,.notification-list::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb,.table-region::-webkit-scrollbar-thumb,.table-wrap::-webkit-scrollbar-thumb,.toc::-webkit-scrollbar-thumb { background:var(--border-strong); border-radius:var(--radius-control); }
|
|
4132
|
+
/* A LATERAL é a exceção (0.32.0; o Victor, 13/10/2026, olhando a da documentação da referência: a barra
|
|
4133
|
+
"só aparece se o mouse fica em cima do sidebar e ela é clarinha" — e, sobre o padrão, "pode alterar o
|
|
4134
|
+
atual para ser claro e sumir a rolagem"). A barra continua NATIVA e continua lá — a largura fina não
|
|
4135
|
+
muda, então nada pula quando ela aparece; parada, o polegar é transparente. Ela aparece:
|
|
4136
|
+
- com o ponteiro em cima da lateral (é quando quem usa mouse vai arrastá-la);
|
|
4137
|
+
- com o foco do teclado dentro dela (quem navega com Tab vê que a lista rola);
|
|
4138
|
+
- sempre, em tela sem ponteiro que paire (`hover: none`), onde o "em cima" não existe.
|
|
4139
|
+
A cor sai da escala da LATERAL, não da página: é o texto dela, esmaecido.
|
|
4140
|
+
O desenho de antes — a barra sempre à vista, na cor de borda forte — não saiu: é a variante
|
|
4141
|
+
`scrollbar="visible"` (`.sidebar-scrollbar-visible`), para quem precisa da barra o tempo todo. */
|
|
4142
|
+
.sidebar { scrollbar-color:transparent transparent; }
|
|
4143
|
+
.sidebar::-webkit-scrollbar-thumb { background:transparent; }
|
|
4144
|
+
.sidebar:is(:hover,:focus-within) { scrollbar-color:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent) transparent; }
|
|
4145
|
+
.sidebar:is(:hover,:focus-within)::-webkit-scrollbar-thumb { background:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent); }
|
|
4146
|
+
@media (hover: none) {
|
|
4147
|
+
.sidebar { scrollbar-color:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent) transparent; }
|
|
4148
|
+
.sidebar::-webkit-scrollbar-thumb { background:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent); }
|
|
4149
|
+
}
|
|
4150
|
+
/* Duas classes, depois das de cima: ganha do "em cima" e do "sem ponteiro" com a mesma força, pela ordem. */
|
|
4151
|
+
.sidebar.sidebar-scrollbar-visible { scrollbar-color:var(--border-strong) transparent; }
|
|
4152
|
+
.sidebar.sidebar-scrollbar-visible::-webkit-scrollbar-thumb { background:var(--border-strong); }
|
|
3397
4153
|
|
|
3398
4154
|
/* ========================================================================== */
|
|
3399
4155
|
/* 99. EIXO RESPONSIVO — a infraestrutura do G-AXIS-04 */
|
|
@@ -3439,13 +4195,14 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3439
4195
|
@property --step-icon { syntax:"*"; inherits:false; }
|
|
3440
4196
|
@property --step-qr { syntax:"*"; inherits:false; }
|
|
3441
4197
|
@property --step-avatar-fs { syntax:"*"; inherits:false; }
|
|
4198
|
+
@property --step-avatar { syntax:"*"; inherits:false; }
|
|
3442
4199
|
|
|
3443
4200
|
/* o passo de escala, genérico: qualquer peça que leia `--step-*` obedece. `md` também tem
|
|
3444
4201
|
classe, porque um responsivo precisa poder dizer `md` como valor base. */
|
|
3445
4202
|
.size-xs { --step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8); }
|
|
3446
|
-
.size-sm { --step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3447
|
-
.size-md { --step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3448
|
-
.size-lg { --step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:
|
|
4203
|
+
.size-sm { --step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8); }
|
|
4204
|
+
.size-md { --step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10); }
|
|
4205
|
+
.size-lg { --step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12); }
|
|
3449
4206
|
.size-xl { --step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl); }
|
|
3450
4207
|
|
|
3451
4208
|
/* CONTÊINER NOMEADO. Sem nome, `@container` casa com o ancestral mais próximo que for contêiner
|
|
@@ -3454,19 +4211,19 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3454
4211
|
.container-scope { container:aurea / inline-size; }
|
|
3455
4212
|
|
|
3456
4213
|
/* por VIEWPORT — a decisão depende do tamanho da APLICAÇÃO */
|
|
3457
|
-
@media (min-width:360px) { .vp-2xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-2xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3458
|
-
@media (min-width:480px) { .vp-xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3459
|
-
@media (min-width:640px) { .vp-sm\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-sm\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3460
|
-
@media (min-width:768px) { .vp-md\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-md\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3461
|
-
@media (min-width:1024px) { .vp-lg\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-lg\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3462
|
-
@media (min-width:1280px) { .vp-xl\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-xl\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3463
|
-
@media (min-width:1536px) { .vp-2xl\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-2xl\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
4214
|
+
@media (min-width:360px) { .vp-2xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-2xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-2xs\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-2xs\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-2xs\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-2xs\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-2xs\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-2xs\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-2xs\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-2xs\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-2xs\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-2xs\:field-horizontal>*:not(.label) { grid-column:2; } .vp-2xs\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-2xs\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-2xs\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-2xs\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-2xs\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-2xs\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-2xs\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-2xs\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-2xs\:grid-span-1 { grid-column:span 1 / span 1; } .vp-2xs\:grid-span-2 { grid-column:span 2 / span 2; } .vp-2xs\:grid-span-3 { grid-column:span 3 / span 3; } .vp-2xs\:grid-span-4 { grid-column:span 4 / span 4; } .vp-2xs\:grid-span-5 { grid-column:span 5 / span 5; } .vp-2xs\:grid-span-6 { grid-column:span 6 / span 6; } .vp-2xs\:grid-span-7 { grid-column:span 7 / span 7; } .vp-2xs\:grid-span-8 { grid-column:span 8 / span 8; } .vp-2xs\:grid-span-9 { grid-column:span 9 / span 9; } .vp-2xs\:grid-span-10 { grid-column:span 10 / span 10; } .vp-2xs\:grid-span-11 { grid-column:span 11 / span 11; } .vp-2xs\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4215
|
+
@media (min-width:480px) { .vp-xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-xs\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-xs\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-xs\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-xs\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-xs\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-xs\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-xs\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-xs\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-xs\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-xs\:field-horizontal>*:not(.label) { grid-column:2; } .vp-xs\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-xs\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-xs\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-xs\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-xs\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-xs\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-xs\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-xs\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-xs\:grid-span-1 { grid-column:span 1 / span 1; } .vp-xs\:grid-span-2 { grid-column:span 2 / span 2; } .vp-xs\:grid-span-3 { grid-column:span 3 / span 3; } .vp-xs\:grid-span-4 { grid-column:span 4 / span 4; } .vp-xs\:grid-span-5 { grid-column:span 5 / span 5; } .vp-xs\:grid-span-6 { grid-column:span 6 / span 6; } .vp-xs\:grid-span-7 { grid-column:span 7 / span 7; } .vp-xs\:grid-span-8 { grid-column:span 8 / span 8; } .vp-xs\:grid-span-9 { grid-column:span 9 / span 9; } .vp-xs\:grid-span-10 { grid-column:span 10 / span 10; } .vp-xs\:grid-span-11 { grid-column:span 11 / span 11; } .vp-xs\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4216
|
+
@media (min-width:640px) { .vp-sm\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-sm\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-sm\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-sm\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-sm\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-sm\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-sm\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-sm\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-sm\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-sm\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-sm\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-sm\:field-horizontal>*:not(.label) { grid-column:2; } .vp-sm\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-sm\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-sm\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-sm\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-sm\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-sm\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-sm\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-sm\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-sm\:grid-span-1 { grid-column:span 1 / span 1; } .vp-sm\:grid-span-2 { grid-column:span 2 / span 2; } .vp-sm\:grid-span-3 { grid-column:span 3 / span 3; } .vp-sm\:grid-span-4 { grid-column:span 4 / span 4; } .vp-sm\:grid-span-5 { grid-column:span 5 / span 5; } .vp-sm\:grid-span-6 { grid-column:span 6 / span 6; } .vp-sm\:grid-span-7 { grid-column:span 7 / span 7; } .vp-sm\:grid-span-8 { grid-column:span 8 / span 8; } .vp-sm\:grid-span-9 { grid-column:span 9 / span 9; } .vp-sm\:grid-span-10 { grid-column:span 10 / span 10; } .vp-sm\:grid-span-11 { grid-column:span 11 / span 11; } .vp-sm\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4217
|
+
@media (min-width:768px) { .vp-md\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-md\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-md\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-md\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-md\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-md\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-md\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-md\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-md\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-md\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-md\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-md\:field-horizontal>*:not(.label) { grid-column:2; } .vp-md\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-md\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-md\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-md\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-md\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-md\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-md\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-md\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-md\:grid-span-1 { grid-column:span 1 / span 1; } .vp-md\:grid-span-2 { grid-column:span 2 / span 2; } .vp-md\:grid-span-3 { grid-column:span 3 / span 3; } .vp-md\:grid-span-4 { grid-column:span 4 / span 4; } .vp-md\:grid-span-5 { grid-column:span 5 / span 5; } .vp-md\:grid-span-6 { grid-column:span 6 / span 6; } .vp-md\:grid-span-7 { grid-column:span 7 / span 7; } .vp-md\:grid-span-8 { grid-column:span 8 / span 8; } .vp-md\:grid-span-9 { grid-column:span 9 / span 9; } .vp-md\:grid-span-10 { grid-column:span 10 / span 10; } .vp-md\:grid-span-11 { grid-column:span 11 / span 11; } .vp-md\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4218
|
+
@media (min-width:1024px) { .vp-lg\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-lg\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-lg\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-lg\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-lg\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-lg\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-lg\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-lg\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-lg\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-lg\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-lg\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-lg\:field-horizontal>*:not(.label) { grid-column:2; } .vp-lg\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-lg\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-lg\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-lg\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-lg\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-lg\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-lg\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-lg\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-lg\:grid-span-1 { grid-column:span 1 / span 1; } .vp-lg\:grid-span-2 { grid-column:span 2 / span 2; } .vp-lg\:grid-span-3 { grid-column:span 3 / span 3; } .vp-lg\:grid-span-4 { grid-column:span 4 / span 4; } .vp-lg\:grid-span-5 { grid-column:span 5 / span 5; } .vp-lg\:grid-span-6 { grid-column:span 6 / span 6; } .vp-lg\:grid-span-7 { grid-column:span 7 / span 7; } .vp-lg\:grid-span-8 { grid-column:span 8 / span 8; } .vp-lg\:grid-span-9 { grid-column:span 9 / span 9; } .vp-lg\:grid-span-10 { grid-column:span 10 / span 10; } .vp-lg\:grid-span-11 { grid-column:span 11 / span 11; } .vp-lg\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4219
|
+
@media (min-width:1280px) { .vp-xl\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-xl\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-xl\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-xl\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-xl\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-xl\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-xl\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-xl\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-xl\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-xl\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-xl\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-xl\:field-horizontal>*:not(.label) { grid-column:2; } .vp-xl\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-xl\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-xl\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-xl\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-xl\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-xl\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-xl\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-xl\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-xl\:grid-span-1 { grid-column:span 1 / span 1; } .vp-xl\:grid-span-2 { grid-column:span 2 / span 2; } .vp-xl\:grid-span-3 { grid-column:span 3 / span 3; } .vp-xl\:grid-span-4 { grid-column:span 4 / span 4; } .vp-xl\:grid-span-5 { grid-column:span 5 / span 5; } .vp-xl\:grid-span-6 { grid-column:span 6 / span 6; } .vp-xl\:grid-span-7 { grid-column:span 7 / span 7; } .vp-xl\:grid-span-8 { grid-column:span 8 / span 8; } .vp-xl\:grid-span-9 { grid-column:span 9 / span 9; } .vp-xl\:grid-span-10 { grid-column:span 10 / span 10; } .vp-xl\:grid-span-11 { grid-column:span 11 / span 11; } .vp-xl\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4220
|
+
@media (min-width:1536px) { .vp-2xl\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .vp-2xl\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .vp-2xl\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .vp-2xl\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .vp-2xl\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .vp-2xl\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .vp-2xl\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .vp-2xl\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .vp-2xl\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .vp-2xl\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .vp-2xl\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .vp-2xl\:field-horizontal>*:not(.label) { grid-column:2; } .vp-2xl\:field-vertical { display:flex; flex-direction:column; gap:7px; } .vp-2xl\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .vp-2xl\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .vp-2xl\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .vp-2xl\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .vp-2xl\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .vp-2xl\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .vp-2xl\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .vp-2xl\:grid-span-1 { grid-column:span 1 / span 1; } .vp-2xl\:grid-span-2 { grid-column:span 2 / span 2; } .vp-2xl\:grid-span-3 { grid-column:span 3 / span 3; } .vp-2xl\:grid-span-4 { grid-column:span 4 / span 4; } .vp-2xl\:grid-span-5 { grid-column:span 5 / span 5; } .vp-2xl\:grid-span-6 { grid-column:span 6 / span 6; } .vp-2xl\:grid-span-7 { grid-column:span 7 / span 7; } .vp-2xl\:grid-span-8 { grid-column:span 8 / span 8; } .vp-2xl\:grid-span-9 { grid-column:span 9 / span 9; } .vp-2xl\:grid-span-10 { grid-column:span 10 / span 10; } .vp-2xl\:grid-span-11 { grid-column:span 11 / span 11; } .vp-2xl\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
3464
4221
|
|
|
3465
4222
|
/* por CONTAINER — o componente responde ao ESPAÇO EM QUE FOI COLOCADO */
|
|
3466
|
-
@container aurea (min-width:360px) { .ct-2xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-2xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3467
|
-
@container aurea (min-width:480px) { .ct-xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3468
|
-
@container aurea (min-width:640px) { .ct-sm\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-sm\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3469
|
-
@container aurea (min-width:768px) { .ct-md\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-md\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3470
|
-
@container aurea (min-width:1024px) { .ct-lg\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-lg\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
4223
|
+
@container aurea (min-width:360px) { .ct-2xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-2xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .ct-2xs\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .ct-2xs\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .ct-2xs\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .ct-2xs\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .ct-2xs\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .ct-2xs\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .ct-2xs\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .ct-2xs\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .ct-2xs\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .ct-2xs\:field-horizontal>*:not(.label) { grid-column:2; } .ct-2xs\:field-vertical { display:flex; flex-direction:column; gap:7px; } .ct-2xs\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .ct-2xs\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .ct-2xs\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .ct-2xs\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .ct-2xs\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .ct-2xs\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .ct-2xs\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .ct-2xs\:grid-span-1 { grid-column:span 1 / span 1; } .ct-2xs\:grid-span-2 { grid-column:span 2 / span 2; } .ct-2xs\:grid-span-3 { grid-column:span 3 / span 3; } .ct-2xs\:grid-span-4 { grid-column:span 4 / span 4; } .ct-2xs\:grid-span-5 { grid-column:span 5 / span 5; } .ct-2xs\:grid-span-6 { grid-column:span 6 / span 6; } .ct-2xs\:grid-span-7 { grid-column:span 7 / span 7; } .ct-2xs\:grid-span-8 { grid-column:span 8 / span 8; } .ct-2xs\:grid-span-9 { grid-column:span 9 / span 9; } .ct-2xs\:grid-span-10 { grid-column:span 10 / span 10; } .ct-2xs\:grid-span-11 { grid-column:span 11 / span 11; } .ct-2xs\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4224
|
+
@container aurea (min-width:480px) { .ct-xs\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-xs\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .ct-xs\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .ct-xs\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .ct-xs\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .ct-xs\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .ct-xs\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .ct-xs\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .ct-xs\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .ct-xs\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .ct-xs\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .ct-xs\:field-horizontal>*:not(.label) { grid-column:2; } .ct-xs\:field-vertical { display:flex; flex-direction:column; gap:7px; } .ct-xs\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .ct-xs\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .ct-xs\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .ct-xs\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .ct-xs\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .ct-xs\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .ct-xs\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .ct-xs\:grid-span-1 { grid-column:span 1 / span 1; } .ct-xs\:grid-span-2 { grid-column:span 2 / span 2; } .ct-xs\:grid-span-3 { grid-column:span 3 / span 3; } .ct-xs\:grid-span-4 { grid-column:span 4 / span 4; } .ct-xs\:grid-span-5 { grid-column:span 5 / span 5; } .ct-xs\:grid-span-6 { grid-column:span 6 / span 6; } .ct-xs\:grid-span-7 { grid-column:span 7 / span 7; } .ct-xs\:grid-span-8 { grid-column:span 8 / span 8; } .ct-xs\:grid-span-9 { grid-column:span 9 / span 9; } .ct-xs\:grid-span-10 { grid-column:span 10 / span 10; } .ct-xs\:grid-span-11 { grid-column:span 11 / span 11; } .ct-xs\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4225
|
+
@container aurea (min-width:640px) { .ct-sm\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-sm\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .ct-sm\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .ct-sm\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .ct-sm\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .ct-sm\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .ct-sm\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .ct-sm\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .ct-sm\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .ct-sm\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .ct-sm\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .ct-sm\:field-horizontal>*:not(.label) { grid-column:2; } .ct-sm\:field-vertical { display:flex; flex-direction:column; gap:7px; } .ct-sm\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .ct-sm\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .ct-sm\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .ct-sm\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .ct-sm\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .ct-sm\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .ct-sm\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .ct-sm\:grid-span-1 { grid-column:span 1 / span 1; } .ct-sm\:grid-span-2 { grid-column:span 2 / span 2; } .ct-sm\:grid-span-3 { grid-column:span 3 / span 3; } .ct-sm\:grid-span-4 { grid-column:span 4 / span 4; } .ct-sm\:grid-span-5 { grid-column:span 5 / span 5; } .ct-sm\:grid-span-6 { grid-column:span 6 / span 6; } .ct-sm\:grid-span-7 { grid-column:span 7 / span 7; } .ct-sm\:grid-span-8 { grid-column:span 8 / span 8; } .ct-sm\:grid-span-9 { grid-column:span 9 / span 9; } .ct-sm\:grid-span-10 { grid-column:span 10 / span 10; } .ct-sm\:grid-span-11 { grid-column:span 11 / span 11; } .ct-sm\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4226
|
+
@container aurea (min-width:768px) { .ct-md\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-md\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .ct-md\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .ct-md\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .ct-md\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .ct-md\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .ct-md\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .ct-md\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .ct-md\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .ct-md\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .ct-md\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .ct-md\:field-horizontal>*:not(.label) { grid-column:2; } .ct-md\:field-vertical { display:flex; flex-direction:column; gap:7px; } .ct-md\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .ct-md\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .ct-md\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .ct-md\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .ct-md\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .ct-md\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .ct-md\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .ct-md\:grid-span-1 { grid-column:span 1 / span 1; } .ct-md\:grid-span-2 { grid-column:span 2 / span 2; } .ct-md\:grid-span-3 { grid-column:span 3 / span 3; } .ct-md\:grid-span-4 { grid-column:span 4 / span 4; } .ct-md\:grid-span-5 { grid-column:span 5 / span 5; } .ct-md\:grid-span-6 { grid-column:span 6 / span 6; } .ct-md\:grid-span-7 { grid-column:span 7 / span 7; } .ct-md\:grid-span-8 { grid-column:span 8 / span 8; } .ct-md\:grid-span-9 { grid-column:span 9 / span 9; } .ct-md\:grid-span-10 { grid-column:span 10 / span 10; } .ct-md\:grid-span-11 { grid-column:span 11 / span 11; } .ct-md\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
4227
|
+
@container aurea (min-width:1024px) { .ct-lg\:size-xs{--step-h:var(--control-h-xs);--step-fs:var(--text-xs);--step-gap:6px;--step-px:10px;--step-field-px:var(--space-3);--step-select-pe:var(--space-8)} .ct-lg\:size-sm{--step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-3);--step-field-px:var(--space-3);--step-select-pe:var(--space-8);--step-icon:var(--icon-sm);--step-qr:7.5rem;--step-avatar-fs:var(--text-xs);--step-avatar:var(--space-8)} .ct-lg\:size-md{--step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-3);--step-select-pe:38px;--step-icon:var(--icon-md);--step-qr:10rem;--step-avatar-fs:var(--text-sm);--step-avatar:var(--space-10)} .ct-lg\:size-lg{--step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:var(--space-4);--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-lg);--step-qr:15rem;--step-avatar-fs:var(--text-base);--step-avatar:var(--space-12)} .ct-lg\:size-xl{--step-h:var(--control-h-xl);--step-fs:var(--text-base);--step-gap:10px;--step-px:26px;--step-field-px:var(--space-4);--step-select-pe:calc(var(--space-10) + var(--space-1));--step-icon:var(--icon-xl)} .ct-lg\:btn-group-vertical { flex-direction:column; align-items:stretch; --btn-group-h:0; --btn-group-v:var(--radius-full); --btn-group-sep-i:25%; --btn-group-sep-b:0; --btn-group-sep-w:50%; --btn-group-sep-h:var(--border-width); --btn-group-bi:var(--border-width); --btn-group-bb:0; } .ct-lg\:btn-group-horizontal { flex-direction:row; align-items:center; --btn-group-h:var(--radius-full); --btn-group-v:0; --btn-group-sep-i:0; --btn-group-sep-b:25%; --btn-group-sep-w:var(--border-width); --btn-group-sep-h:50%; --btn-group-bi:0; --btn-group-bb:var(--border-width); } .ct-lg\:range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; } .ct-lg\:range-horizontal { writing-mode:horizontal-tb; direction:inherit; inline-size:auto; width:100%; } .ct-lg\:field-horizontal { display:grid; grid-template-columns:minmax(0,var(--field-label-width,12rem)) minmax(0,1fr); align-items:center; column-gap:var(--space-4); row-gap:var(--space-1); } .ct-lg\:field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); } .ct-lg\:field-horizontal>*:not(.label) { grid-column:2; } .ct-lg\:field-vertical { display:flex; flex-direction:column; gap:7px; } .ct-lg\:field-vertical>.label { flex-direction:row; align-items:stretch; justify-content:space-between; gap:12px; } .ct-lg\:input-group-addon-inline { inline-size:auto; justify-content:normal; } .ct-lg\:input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); } .ct-lg\:input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-1); } .ct-lg\:input-group-addon-block { inline-size:100%; justify-content:flex-start; } .ct-lg\:input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; } .ct-lg\:input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); } .ct-lg\:grid-span-1 { grid-column:span 1 / span 1; } .ct-lg\:grid-span-2 { grid-column:span 2 / span 2; } .ct-lg\:grid-span-3 { grid-column:span 3 / span 3; } .ct-lg\:grid-span-4 { grid-column:span 4 / span 4; } .ct-lg\:grid-span-5 { grid-column:span 5 / span 5; } .ct-lg\:grid-span-6 { grid-column:span 6 / span 6; } .ct-lg\:grid-span-7 { grid-column:span 7 / span 7; } .ct-lg\:grid-span-8 { grid-column:span 8 / span 8; } .ct-lg\:grid-span-9 { grid-column:span 9 / span 9; } .ct-lg\:grid-span-10 { grid-column:span 10 / span 10; } .ct-lg\:grid-span-11 { grid-column:span 11 / span 11; } .ct-lg\:grid-span-12 { grid-column:span 12 / span 12; } }
|
|
3471
4228
|
/* <<< fim da camada responsiva >>> */
|
|
3472
4229
|
}
|