@aurea-uds/core 0.31.0 → 0.33.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 +1067 -205
- package/package.json +1 -1
package/dist/aurea.css
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
--brand-yellow:oklch(0.795 0.184 86.047);
|
|
5
5
|
--brand-yellow-foreground:oklch(0.421 0.095 57.708);
|
|
6
6
|
--brand-yellow-text:oklch(0.516 0.105 86.047);
|
|
7
|
+
--white:oklch(1 0 0);
|
|
8
|
+
--black:oklch(0 0 0);
|
|
7
9
|
--font-ui:"Atkinson Hyperlegible Next","Segoe UI",sans-serif;
|
|
8
10
|
--font-heading:"Atkinson Hyperlegible Next","Segoe UI",sans-serif;
|
|
9
11
|
--font-editorial:"Atkinson Hyperlegible Next","Segoe UI",sans-serif;
|
|
@@ -21,6 +23,11 @@
|
|
|
21
23
|
--leading-tight:1.2;
|
|
22
24
|
--leading-normal:1.5;
|
|
23
25
|
--leading-relaxed:1.7;
|
|
26
|
+
--text-4xl-leading:1.111111;
|
|
27
|
+
--text-3xl-leading:1.2;
|
|
28
|
+
--text-2xl-leading:1.333333;
|
|
29
|
+
--text-xl-leading:1.4;
|
|
30
|
+
--text-lg-leading:1.555556;
|
|
24
31
|
--space-0:0;
|
|
25
32
|
--space-05:0.125rem;
|
|
26
33
|
--space-1:0.25rem;
|
|
@@ -75,12 +82,12 @@
|
|
|
75
82
|
--breakpoint-xl:1280px;
|
|
76
83
|
--breakpoint-2xl:1536px;
|
|
77
84
|
--control-h-xs:1.625rem;
|
|
78
|
-
--control-h-sm:
|
|
85
|
+
--control-h-sm:2rem;
|
|
79
86
|
--control-h-md:2.25rem;
|
|
80
|
-
--control-h-lg:2.
|
|
87
|
+
--control-h-lg:2.5rem;
|
|
81
88
|
--control-h-xl:3.125rem;
|
|
82
89
|
--row-h:3rem;
|
|
83
|
-
--card-pad:
|
|
90
|
+
--card-pad:1rem;
|
|
84
91
|
--section-gap:1.5rem;
|
|
85
92
|
--media-canvas:oklch(0.085 0 0);
|
|
86
93
|
--media-foreground:oklch(0.985 0 0);
|
|
@@ -443,30 +450,39 @@
|
|
|
443
450
|
--control-h-xs:1.5rem;
|
|
444
451
|
--control-h-sm:1.75rem;
|
|
445
452
|
--control-h-md:2rem;
|
|
446
|
-
--control-h-lg:2.
|
|
453
|
+
--control-h-lg:2.25rem;
|
|
447
454
|
--control-h-xl:2.75rem;
|
|
455
|
+
--touch-control-h-sm:2.25rem;
|
|
456
|
+
--touch-control-h-md:2.75rem;
|
|
457
|
+
--touch-control-h-lg:3.25rem;
|
|
448
458
|
--row-h:2.625rem;
|
|
449
|
-
--card-pad:
|
|
459
|
+
--card-pad:0.75rem;
|
|
450
460
|
--section-gap:1.125rem;
|
|
451
461
|
}
|
|
452
462
|
[data-density="comfortable"]{
|
|
453
463
|
--control-h-xs:1.625rem;
|
|
454
|
-
--control-h-sm:
|
|
464
|
+
--control-h-sm:2rem;
|
|
455
465
|
--control-h-md:2.25rem;
|
|
456
|
-
--control-h-lg:2.
|
|
466
|
+
--control-h-lg:2.5rem;
|
|
457
467
|
--control-h-xl:3.125rem;
|
|
468
|
+
--touch-control-h-sm:2.5rem;
|
|
469
|
+
--touch-control-h-md:3rem;
|
|
470
|
+
--touch-control-h-lg:3.5rem;
|
|
458
471
|
--row-h:3rem;
|
|
459
|
-
--card-pad:
|
|
472
|
+
--card-pad:1rem;
|
|
460
473
|
--section-gap:1.5rem;
|
|
461
474
|
}
|
|
462
475
|
[data-density="spacious"]{
|
|
463
476
|
--control-h-xs:1.75rem;
|
|
464
|
-
--control-h-sm:2.
|
|
477
|
+
--control-h-sm:2.25rem;
|
|
465
478
|
--control-h-md:2.5rem;
|
|
466
|
-
--control-h-lg:
|
|
479
|
+
--control-h-lg:2.75rem;
|
|
467
480
|
--control-h-xl:3.5rem;
|
|
481
|
+
--touch-control-h-sm:2.75rem;
|
|
482
|
+
--touch-control-h-md:3.25rem;
|
|
483
|
+
--touch-control-h-lg:3.75rem;
|
|
468
484
|
--row-h:3.375rem;
|
|
469
|
-
--card-pad:1.
|
|
485
|
+
--card-pad:1.25rem;
|
|
470
486
|
--section-gap:2rem;
|
|
471
487
|
}
|
|
472
488
|
/* 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 +505,11 @@ button,a,[role="button"],input,textarea,select { outline:none; }
|
|
|
489
505
|
o vão: colado, o anel amarelo sumiria no botão amarelo.
|
|
490
506
|
Quem cobra que nenhuma peça ficou de fora é o catálogo inteiro, no navegador:
|
|
491
507
|
`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); }
|
|
508
|
+
: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); }
|
|
509
|
+
/* A amostra ESCOLHIDA do `ColorSwatch options` (0.32.0) tem borda — a da cor dela — e o foco mora no botão de
|
|
510
|
+
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
|
|
511
|
+
escolha A do Victor, nenhuma peça com duas linhas (a varredura do catálogo pegou, 14/10/2026). */
|
|
512
|
+
.color-swatch-option:has(:checked:focus-visible) { outline-offset:0; border-color:var(--focus-strong); }
|
|
493
513
|
button { color:inherit; }
|
|
494
514
|
/* O link NÃO é `--primary`. Medido em 22/08/2026 com o axe e depois à mão: o amarelo da
|
|
495
515
|
marca sobre o fundo do tema CLARO dá 1,73:1, e o AA de texto (WCAG 1.4.3) pede 4,5:1 —
|
|
@@ -599,6 +619,14 @@ img,svg { display:block; }
|
|
|
599
619
|
.section-footer-link { color:var(--muted-foreground); font-size:var(--text-sm); text-decoration:none; }
|
|
600
620
|
.section-footer-link:hover { color:var(--foreground); }
|
|
601
621
|
.section-footer-legal { display:flex; flex-wrap:wrap; justify-content:space-between; gap:var(--space-2) var(--space-6); margin-block-start:var(--space-8); padding-block-start:var(--space-6); border-block-start:var(--border-width) solid var(--border); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
622
|
+
/* layout="inline" (15/10/2026): o rodapé da página inicial da referência — UMA linha centrada, 12 de respiro em cima e
|
|
623
|
+
embaixo, 8 entre as partes, letra 14 apagada; os links acendem com o ponteiro. Quebra linha se não couber. */
|
|
624
|
+
.section.section-footer-inline { padding-block:var(--space-3); }
|
|
625
|
+
.section-footer-line { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:var(--space-2); color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
626
|
+
.section-footer-inline-legal { margin:0; }
|
|
627
|
+
.section-footer-inline-links { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2); margin:0; padding:0; list-style:none; }
|
|
628
|
+
.section-footer-line .section-footer-link { display:inline-flex; align-items:center; }
|
|
629
|
+
.section-footer-line .section-footer-link:hover { color:var(--foreground); }
|
|
602
630
|
@media (min-width:768px) {
|
|
603
631
|
.section-footer-top { flex-direction:row; justify-content:space-between; }
|
|
604
632
|
.section-footer-brand { flex:1 1 0; min-inline-size:0; }
|
|
@@ -672,6 +700,23 @@ img,svg { display:block; }
|
|
|
672
700
|
.topbar-link[aria-current] { color:var(--primary-emphasis); font-weight:var(--weight-medium); }
|
|
673
701
|
.topbar-actions { display:flex; align-items:center; gap:var(--space-2); margin-inline-start:auto; }
|
|
674
702
|
.topbar-site .topbar-actions { margin-inline-start:0; }
|
|
703
|
+
/* itemsJustify="start" (14/10/2026): os links perto da marca, como na página inicial da referência, e as ações na
|
|
704
|
+
outra ponta. Da marca ao primeiro link, 32 (medido nela, 15/10/2026): o vão da barra (--space-4) e mais --space-4.
|
|
705
|
+
No celular os links saem e nada muda. */
|
|
706
|
+
.topbar-items-start .topbar-nav { margin-inline-start:var(--space-4); }
|
|
707
|
+
.topbar-items-start .topbar-actions { margin-inline-start:auto; }
|
|
708
|
+
/* size="sm" (15/10/2026): a barra de 56 do topo da página inicial da referência (medida nela; o guia de barra dela tem
|
|
709
|
+
64, o nosso padrão), com 6 entre as ações (o gap-1.5 dela). O painel do celular segue a altura, pela mesma variável. */
|
|
710
|
+
.topbar-sm { --topbar-height:calc(var(--space-12) + var(--space-2)); }
|
|
711
|
+
.topbar-sm .topbar-actions { gap:calc(var(--space-1) + var(--space-05)); }
|
|
712
|
+
/* blurred (15/10/2026), só na `flush`: o fundo transparente que embaça o que passa por baixo — o desfoque de 16 da
|
|
713
|
+
referência. Quem pede menos transparência ao sistema, e o navegador sem desfoque, ficam com o fundo cheio. */
|
|
714
|
+
.topbar-flush.topbar-blurred { background:transparent; -webkit-backdrop-filter:blur(var(--space-4)); backdrop-filter:blur(var(--space-4)); }
|
|
715
|
+
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) { .topbar-flush.topbar-blurred { background:var(--background); } }
|
|
716
|
+
@media (prefers-reduced-transparency:reduce) { .topbar-flush.topbar-blurred { background:var(--background); -webkit-backdrop-filter:none; backdrop-filter:none; } }
|
|
717
|
+
/* menuActions (15/10/2026): o que só o menu do celular leva (o GitHub, na referência), embaixo dos links, depois de uma
|
|
718
|
+
linha. */
|
|
719
|
+
.topbar-menu-actions { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2); margin-block-start:var(--space-4); padding-block-start:var(--space-4); border-block-start:var(--border-width) solid var(--border); }
|
|
675
720
|
/* O botão e o painel só existem no celular, e só onde há popover. O @supports lá embaixo é a rede,
|
|
676
721
|
como na gaveta do `AppShell`: navegador sem popover não esconde o `<nav popover>` sozinho, e o
|
|
677
722
|
painel apareceria solto na barra. Ali os links ficam na barra, que já quebra linha por conteúdo, e
|
|
@@ -734,6 +779,32 @@ img,svg { display:block; }
|
|
|
734
779
|
variante que desenha igual é enfeite. `--shell-top` volta a ser só a altura do topo, porque sem
|
|
735
780
|
margem não há as duas folgas a descontar. */
|
|
736
781
|
.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; }
|
|
782
|
+
/* `placement="right"` (0.32.0, DOC-01): a lateral do outro lado. A flutuante já tem margem nos quatro
|
|
783
|
+
lados; a encostada leva o fio para o lado de dentro, que agora é o começo da linha. */
|
|
784
|
+
.sidebar-flush.sidebar-right { border-inline-end:0; border-inline-start:1px solid var(--sidebar-border); }
|
|
785
|
+
/* SEM CAIXA é outra variante (0.32.0): `plain`, o nome que a Aurea já dá ao "sem caixa" (`contentVariant`,
|
|
786
|
+
o painel do `Tabs`, o `KPI`). É a coluna "On this page" de uma documentação, como a da referência: os
|
|
787
|
+
itens soltos na página. Tira só a PINTURA — fundo, cor da borda, sombra — e guarda a geometria da
|
|
788
|
+
flutuante (margens, altura, a mesma borda de 1, agora invisível), então trocar de variante não mexe em
|
|
789
|
+
nada de lugar. O texto continua na escala da lateral: medido nos quatro (Aurea e `lory`, claro e
|
|
790
|
+
escuro), o `--sidebar-foreground` é o mesmo `--foreground` da página. */
|
|
791
|
+
.sidebar-plain { border-color:transparent; background:transparent; box-shadow:none; }
|
|
792
|
+
/* A COLUNA DA DIREITA do `AppShell` (`aside`): a terceira trilha, da largura da lateral, de 1280 para
|
|
793
|
+
cima. Abaixo, ela desce para depois do conteúdo, na última coluna que houver (a do conteúdo entre
|
|
794
|
+
1024 e 1279; a única abaixo de 1024), sem grudar. Com ela, o conteúdo perde a margem da direita: a
|
|
795
|
+
folga entre os dois é a margem da coluna, como entre a lateral e o conteúdo. */
|
|
796
|
+
.app-shell-with-aside { --aside-track:calc(var(--sidebar-width) + var(--space-4)*2); }
|
|
797
|
+
.app-shell-with-aside:has(> .app-shell-aside.sidebar-flush) { --aside-track:var(--sidebar-width); }
|
|
798
|
+
/* `.sidebar.app-shell-aside` (três classes) e não só a classe da coluna: a regra do shell recolhível
|
|
799
|
+
(`.app-shell-collapsible > .sidebar`, mais abaixo na folha) prende TODA lateral na coluna 1, e com
|
|
800
|
+
a mesma força ganharia por vir depois. */
|
|
801
|
+
.app-shell-with-aside > .sidebar.app-shell-aside { grid-column:-2 / -1; grid-row:auto; }
|
|
802
|
+
@media (max-width:1279px) { .app-shell-with-aside > .sidebar.app-shell-aside { position:static; height:auto; max-height:none; } }
|
|
803
|
+
@media (min-width:1280px) {
|
|
804
|
+
.app-shell-with-aside { grid-template-columns:var(--sidebar-track) minmax(0,1fr) var(--aside-track); }
|
|
805
|
+
.app-shell-with-aside > .content.content { grid-column:2; grid-row:2; margin-inline-end:0; }
|
|
806
|
+
.app-shell-with-aside > .sidebar.app-shell-aside { grid-column:3; grid-row:2; }
|
|
807
|
+
}
|
|
737
808
|
/* a lateral ROLA mas nunca mostra a barra (pedido do Victor): a barra nativa risca a
|
|
738
809
|
superfície flutuante e não segue o raio de 22px. `scrollbar-width` cobre Firefox e
|
|
739
810
|
Chrome 121+; o pseudo cobre Safari e Chrome antigo. */
|
|
@@ -838,7 +909,14 @@ img,svg { display:block; }
|
|
|
838
909
|
`--sidebar-accent` e `--sidebar-accent-foreground` já eram PUBLICADOS e não tinham um único
|
|
839
910
|
uso no core — token publicado que ninguém usa é promessa sem entrega, e era o par certo o
|
|
840
911
|
tempo todo. O defeito não é da marca: a marca só o tornou visível. */
|
|
841
|
-
|
|
912
|
+
/* O ITEM ESMAECIDO, como o da referência (ADR-0067, decisão do Victor de 13/10/2026, vendo os dois rodando:
|
|
913
|
+
"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;
|
|
914
|
+
passando o mouse, o item acende. O cinza sai da ESCALA DA LATERAL (o texto dela, esmaecido), e não do
|
|
915
|
+
`--muted-foreground` da página — sob a marca `lory` a lateral é escura e a página não (a lição de
|
|
916
|
+
20/08/2026, logo abaixo). Medido contra o fundo da lateral (13/10/2026): 7,6:1 no escuro e 5,4:1 no
|
|
917
|
+
claro; na marca `lory`, 7,8:1 e 5,6:1 — o branco de antes era 14,5:1. */
|
|
918
|
+
.sidebar-item:not([aria-current]) { color:color-mix(in oklab, var(--sidebar-foreground) 68%, transparent); }
|
|
919
|
+
@media (hover:hover) and (pointer:fine) { .sidebar-item:hover { background:var(--sidebar-accent); } .sidebar-item:not([aria-current]):hover { color:var(--sidebar-foreground); } }
|
|
842
920
|
/* A-05 (24/09/2026), decisão do Victor: o item atual da lateral passa a usar a MARCA DA CASA para
|
|
843
921
|
"selecionado" — fundo, texto na cor da marca e o fio de 2px embaixo —, que o `Toggle`, o
|
|
844
922
|
`SegmentedControl`, o `Button variant="nav"` e a navegação do catálogo (`.doc-nav`) já usavam.
|
|
@@ -857,7 +935,10 @@ img,svg { display:block; }
|
|
|
857
935
|
`--sidebar-foreground` em vez de token novo — a lateral não publica um "muted" dela. */
|
|
858
936
|
/* 72% e não 62% desde a 0.27.0 (ADR-0061): com a letra da paleta nova (#242424, menos preta) os 62%
|
|
859
937
|
davam 4,4:1 sobre o branco — o axe pegou na varredura. 72% é o cinza de texto apagado da paleta. */
|
|
860
|
-
|
|
938
|
+
/* O título de grupo da lateral é o da referência (ADR-0067, decisão do Victor de 13/10/2026: "igual ao dela"):
|
|
939
|
+
letra 14, peso médio, SEM maiúsculas, na cor do texto da lateral — mais forte que o item, que é
|
|
940
|
+
esmaecido; 16 antes do grupo. Era 12, em maiúsculas espaçadas, esmaecido. */
|
|
941
|
+
.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
942
|
.sidebar-sub { padding-inline-start:var(--space-5); }
|
|
862
943
|
/* RECOLHIDA — a lateral vira trilho de ícones. O rótulo NÃO some do DOM: o React troca a
|
|
863
944
|
classe dele por `.sr-only`, então quem usa leitor de tela continua ouvindo o nome. Ícone
|
|
@@ -1166,7 +1247,10 @@ img,svg { display:block; }
|
|
|
1166
1247
|
`min-width:0` o conteúdo mínimo do flex é o texto inteiro, e o rótulo longo empurra o valor e a
|
|
1167
1248
|
seta para fora da linha em vez de reticenciar. É a mesma família do defeito que a `pill` da
|
|
1168
1249
|
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:
|
|
1250
|
+
.nav-list-text { flex:1; min-width:0; display:grid; grid-template-columns:minmax(0,1fr); }
|
|
1251
|
+
/* MNT-23, "quem mais" (12/10/2026): a NavList empurrava a página como a árvore (360 → 729), pelo mesmo
|
|
1252
|
+
motivo — o `min-width:0` faz o texto encolher DENTRO da linha, mas a largura mínima da lista ainda era
|
|
1253
|
+
o rótulo inteiro. A grade de uma coluna `minmax(0,1fr)` pede zero e, quando cabe, mostra tudo. */
|
|
1170
1254
|
.nav-list-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
1171
1255
|
.nav-list-description { overflow:hidden; color:var(--muted-foreground); font-size:var(--text-xs); text-overflow:ellipsis; white-space:nowrap; }
|
|
1172
1256
|
/* 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 +1324,15 @@ img,svg { display:block; }
|
|
|
1240
1324
|
/* GAR-14 (0.28.0): o recheio do botão vale também para o aviso preso a ele (`.toast-anchored`),
|
|
1241
1325
|
que tem a MEDIDA do botão — pedido do Victor na bancada. Uma regra só, para os dois nunca
|
|
1242
1326
|
divergirem e para o número não se repetir. */
|
|
1243
|
-
.btn,.toast-anchored { padding-inline:var(--step-px,
|
|
1327
|
+
.btn,.toast-anchored { padding-inline:var(--step-px,var(--space-4)); }
|
|
1328
|
+
/* 0.32.0 — o ícone do botão é o da referência: 16 em tela de 640 para cima, 20 abaixo (no celular),
|
|
1329
|
+
e 16 sempre no `sm` e no `xs`. Era 20 sempre. O tamanho vai no próprio `.icon` (o `--step-icon`
|
|
1330
|
+
não herda), e o ícone de quem pediu outro tamanho (`size` no `Icon`) não é tocado. O `:where()`
|
|
1331
|
+
deixa a regra com a força de UMA classe: a peça que tem medida própria de ícone (o X do
|
|
1332
|
+
`CloseButton`, o link do `MediaEmbed`) continua mandando. */
|
|
1333
|
+
.btn :where(.icon:not(.icon-sm,.icon-lg,.icon-xl)) { --step-icon:var(--icon-md); }
|
|
1334
|
+
@media (min-width:640px) { .btn :where(.icon:not(.icon-sm,.icon-lg,.icon-xl)) { --step-icon:var(--icon-sm); } }
|
|
1335
|
+
.btn-sm :where(.icon:not(.icon-lg,.icon-xl)),.btn-xs :where(.icon:not(.icon-lg,.icon-xl)) { --step-icon:var(--icon-sm); }
|
|
1244
1336
|
.btn:hover:not(:disabled):not([aria-disabled="true"]) { transform:none; } .btn:active:not(:disabled) { transform:scale(.97); opacity:.9; }
|
|
1245
1337
|
/* Duas formas de "não dá para fazer isto", e a diferença é QUEM alcança a explicação.
|
|
1246
1338
|
`:disabled` tira o controle da ordem de foco — medido em 13/08/2026: quem usa teclado nunca
|
|
@@ -1262,9 +1354,13 @@ img,svg { display:block; }
|
|
|
1262
1354
|
sobrescrita por variável que o autor já não leu. Fazer o valor passar pela variável é o que
|
|
1263
1355
|
permite a camada responsiva existir UMA vez, genérica, em vez de uma vez por componente. */
|
|
1264
1356
|
.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:
|
|
1357
|
+
.btn-sm { --step-h:var(--control-h-sm); --step-px:var(--space-3); --step-fs:var(--text-sm); border-radius:var(--radius-control); }
|
|
1358
|
+
.btn-lg { --step-h:var(--control-h-lg); --step-px:var(--space-4); --step-fs:var(--text-base); border-radius:var(--radius-control); }
|
|
1267
1359
|
.btn-xl { --step-h:var(--control-h-xl); --step-px:26px; --step-gap:10px; --step-fs:var(--text-base); border-radius:var(--radius-control); }
|
|
1360
|
+
/* quiet (15/10/2026): menos peso — a letra apagada e um degrau menor (12 no `sm`), como o botão "Theme" do topo da
|
|
1361
|
+
referência. A caixa e o fundo ficam os da aparência; o contraste da letra apagada sobre o fundo neutro é o da Aurea. */
|
|
1362
|
+
.btn.btn-quiet { --btn-fg:var(--muted-foreground); --step-fs:var(--text-xs); }
|
|
1363
|
+
.btn.btn-quiet:is(.btn-lg,.btn-xl) { --step-fs:var(--text-sm); }
|
|
1268
1364
|
/* Largura total: para rodapé de formulário e tela estreita. Só a largura muda. */
|
|
1269
1365
|
.btn-block { width:100%; }
|
|
1270
1366
|
/* grow (C-03): parte igual de uma fila. `min-width:0` deixa o rótulo encolher em vez de estourar. */
|
|
@@ -1282,8 +1378,14 @@ img,svg { display:block; }
|
|
|
1282
1378
|
.skip-link:focus-visible { transform:translateY(0); outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1283
1379
|
.btn-primary { --btn-bg:var(--primary); --btn-fg:var(--primary-foreground); --btn-border:transparent; }
|
|
1284
1380
|
.btn-primary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--primary-hover); --btn-border:transparent; }
|
|
1285
|
-
.
|
|
1381
|
+
/* 0.32.0 — os dois botões de fundo neutro da referência (decisão do Victor, 11/10/2026, "A"):
|
|
1382
|
+
o `secondary` com a LETRA DA MARCA (o `--primary-emphasis`, que segue a marca) e o `tertiary` com a
|
|
1383
|
+
letra normal — o `secondary` de até a 0.31.0, e o padrão do `Button` sem `variant`. A regra dela
|
|
1384
|
+
para escolher: salvar é o primário, editar o secundário, cancelar o terciário. */
|
|
1385
|
+
.btn-secondary { --btn-bg:var(--secondary); --btn-fg:var(--primary-emphasis); --btn-border:transparent; }
|
|
1286
1386
|
.btn-secondary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--secondary-hover); --btn-border:transparent; }
|
|
1387
|
+
.btn-tertiary { --btn-bg:var(--secondary); --btn-fg:var(--secondary-foreground); --btn-border:transparent; }
|
|
1388
|
+
.btn-tertiary:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--secondary-hover); --btn-border:transparent; }
|
|
1287
1389
|
.btn-outline { --btn-bg:transparent; --btn-fg:var(--foreground); --btn-border:var(--border-strong); }
|
|
1288
1390
|
.btn-outline:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:var(--accent); }
|
|
1289
1391
|
.btn-ghost { --btn-bg:transparent; --btn-fg:var(--foreground); --btn-border:transparent; }
|
|
@@ -1329,14 +1431,26 @@ img,svg { display:block; }
|
|
|
1329
1431
|
[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
1432
|
.btn-link-danger { --btn-fg:var(--danger-400); }
|
|
1331
1433
|
/* 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
|
-
.
|
|
1434
|
+
/* Kbd — a tecla que dispara a ação, dentro ou fora do botão. Peça própria, não decoração.
|
|
1435
|
+
0.32.0: as medidas da referência (24 de altura, 8 dos lados, letra 14 peso médio na fonte do
|
|
1436
|
+
texto, cinza neutro, sem borda); o canto é o nosso: cápsula, e CÍRCULO quando a tecla é um
|
|
1437
|
+
caractere só (`kbd-single`, que o componente põe sozinho). Era 20, letra 11 de código, borda. */
|
|
1438
|
+
.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; }
|
|
1439
|
+
.kbd-single { width:var(--space-6); padding:0; }
|
|
1334
1440
|
/* dentro do botão a tecla herda a cor do rótulo, SEM opacidade: a 85% o contraste caía
|
|
1335
1441
|
para 3.67:1 (axe) e o atalho é informação, não enfeite. O fundo já o separa. */
|
|
1336
1442
|
/* Dentro do botão a tecla NÃO ganha fundo próprio: qualquer tinta escurece a cápsula e o
|
|
1337
1443
|
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
|
-
|
|
1444
|
+
tecla é o MESMO do rótulo — se o botão passa, ela passa. O fio de currentColor separa (sem
|
|
1445
|
+
borda desde a 0.32.0, o fio é sombra por dentro, e não muda a medida).
|
|
1446
|
+
A MEDIDA de dentro do botão (20, para caber no botão pequeno) é declarada pela CLASSE que o `Button` põe no
|
|
1447
|
+
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
|
|
1448
|
+
dividiam a página, e a trava de geometria (uma altura por classe) reprovou (14/10/2026). */
|
|
1449
|
+
.btn .kbd { background:transparent; box-shadow:inset 0 0 0 var(--border-width) color-mix(in oklab, currentColor 35%, transparent); color:inherit; }
|
|
1450
|
+
.btn-kbd { min-width:var(--space-5); height:var(--space-5); padding:0 var(--space-1); font-size:var(--text-xs); }
|
|
1451
|
+
.btn-kbd.kbd-single { width:var(--space-5); padding:0; }
|
|
1452
|
+
/* Uma caixinha por tecla (15/10/2026), como a busca da referência: 2 entre elas. */
|
|
1453
|
+
.btn-kbds { display:inline-flex; gap:var(--space-05); }
|
|
1340
1454
|
|
|
1341
1455
|
/* nav: item de navegação. Normal = ghost silencioso; o ATIVO (aria-current) ganha texto
|
|
1342
1456
|
amarelo + traço embaixo — SEM borda (pedido do Victor). aria-current, não uma variante
|
|
@@ -1384,13 +1498,35 @@ img,svg { display:block; }
|
|
|
1384
1498
|
.btn-tone-danger:not(.btn-link):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--destructive) 14%, transparent); }
|
|
1385
1499
|
.btn-tone-success,.btn-tone-success:hover:not(:disabled) { --btn-fg:var(--success-400); }
|
|
1386
1500
|
.btn-outline.btn-tone-success { --btn-border:var(--success-400); }
|
|
1387
|
-
.btn-tone-success:not(.btn-link):not(.btn-solid):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--success) 14%, transparent); }
|
|
1501
|
+
.btn-tone-success:not(.btn-link):not(.btn-solid):not(.btn-soft):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--success) 14%, transparent); }
|
|
1388
1502
|
.btn-tone-info,.btn-tone-info:hover:not(:disabled) { --btn-fg:var(--info-400); }
|
|
1389
1503
|
.btn-outline.btn-tone-info { --btn-border:var(--info-400); }
|
|
1390
|
-
.btn-tone-info:not(.btn-link):not(.btn-solid):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--info) 14%, transparent); }
|
|
1504
|
+
.btn-tone-info:not(.btn-link):not(.btn-solid):not(.btn-soft):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--info) 14%, transparent); }
|
|
1391
1505
|
.btn-tone-warning,.btn-tone-warning:hover:not(:disabled) { --btn-fg:var(--warning-400); }
|
|
1392
1506
|
.btn-outline.btn-tone-warning { --btn-border:var(--warning-400); }
|
|
1393
|
-
.btn-tone-warning:not(.btn-link):not(.btn-solid):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--warning) 14%, transparent); }
|
|
1507
|
+
.btn-tone-warning:not(.btn-link):not(.btn-solid):not(.btn-soft):hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--warning) 14%, transparent); }
|
|
1508
|
+
/* appearance="soft" (15/10/2026, o "danger-soft" da referência): o fundo clarinho do tom e a letra do tom (a letra é a
|
|
1509
|
+
do tom, das regras acima). Em repouso, a tinta que os botões sem caixa usam no hover (14%); no hover, 22%. O neutro
|
|
1510
|
+
é o fundo --muted com a letra normal. */
|
|
1511
|
+
.btn-soft { --btn-border:transparent; }
|
|
1512
|
+
.btn-soft.btn-tone-neutral { --btn-bg:var(--muted); --btn-fg:var(--foreground); }
|
|
1513
|
+
.btn-soft.btn-tone-neutral:hover:not(:disabled) { --btn-bg:var(--secondary-hover); }
|
|
1514
|
+
.btn-soft.btn-tone-brand { --btn-bg:color-mix(in oklab, var(--primary) 14%, transparent); }
|
|
1515
|
+
.btn-soft.btn-tone-brand:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--primary) 22%, transparent); }
|
|
1516
|
+
/* Os quatro tons de estado no fundo clarinho do próprio tom (`--{tom}-bg`, o dos avisos), e 8% do tom com o mouse em
|
|
1517
|
+
cima (15/10/2026): com o tom a 14% e 22% por cima da página, o rótulo `info` caía a 4,10:1 parado e 3,69:1 com o
|
|
1518
|
+
mouse no claro, e o vermelho e o verde a 4,42 e 4,23 com o mouse. Medido: assim o pior é o `info` do claro, 5,08
|
|
1519
|
+
parado e 4,61 com o mouse (com 10% seria 4,49). A marca continua no tom a 14% e 22%: passa nos dois temas. */
|
|
1520
|
+
/* E o suave fica FORA das regras gerais de mouse dos tons (`:not(.btn-soft)` nelas): sendo mais fortes, elas pintavam o
|
|
1521
|
+
suave com o tom a 14% por cima da página, e a regra de mouse dele nunca valia — o teste do mouse em cima pegou. */
|
|
1522
|
+
.btn-soft.btn-tone-danger { --btn-bg:var(--danger-bg); }
|
|
1523
|
+
.btn-soft.btn-tone-danger:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--destructive) 8%, var(--danger-bg)); }
|
|
1524
|
+
.btn-soft.btn-tone-success { --btn-bg:var(--success-bg); }
|
|
1525
|
+
.btn-soft.btn-tone-success:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--success) 8%, var(--success-bg)); }
|
|
1526
|
+
.btn-soft.btn-tone-warning { --btn-bg:var(--warning-bg); }
|
|
1527
|
+
.btn-soft.btn-tone-warning:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--warning) 8%, var(--warning-bg)); }
|
|
1528
|
+
.btn-soft.btn-tone-info { --btn-bg:var(--info-bg); }
|
|
1529
|
+
.btn-soft.btn-tone-info:hover:not(:disabled) { --btn-bg:color-mix(in oklab, var(--info) 8%, var(--info-bg)); }
|
|
1394
1530
|
.btn-nav:hover:not(:disabled):not([aria-disabled="true"]) { --btn-fg:var(--foreground); }
|
|
1395
1531
|
/* O botão só de ícone é REDONDO, em todos os tamanhos — decisão do Victor, 25/09/2026
|
|
1396
1532
|
(ADR-0052). Era um quadrado de canto 10px (6px nos dois menores). A referência faz o
|
|
@@ -1401,22 +1537,71 @@ img,svg { display:block; }
|
|
|
1401
1537
|
/* xs e xl também precisam de largura: sem isto a altura mudava e a largura ficava na do
|
|
1402
1538
|
md, e o alvo só-ícone deixava de ser quadrado (achado na onda Actions, 24/07). */
|
|
1403
1539
|
.btn-icon.btn-xl { width:var(--control-h-xl); }
|
|
1540
|
+
/* CloseButton (HER-12, 0.32.0) — o botão de fechar da referência, quase idêntico: 24 × 24, o X de
|
|
1541
|
+
16 no cinza neutro, esmaecido; escurece com o mouse (o `--secondary-hover` do `.btn-tertiary`) e
|
|
1542
|
+
encolhe para 93% ao apertar, como o dela. O canto é o nosso: círculo cheio. O tamanho do X vai no
|
|
1543
|
+
próprio `.icon`, porque o `--step-icon` não herda. No TOQUE o círculo não cresce: a área de 44
|
|
1544
|
+
(`--target-min`) é um `::before` invisível em volta dele, e o `.btn` de toque o deixa de fora da
|
|
1545
|
+
altura mínima (regra do `pointer:coarse`, mais abaixo). */
|
|
1546
|
+
.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); }
|
|
1547
|
+
.close-button .icon { --step-icon:var(--icon-sm); }
|
|
1548
|
+
.close-button:active:not(:disabled) { transform:scale(.93); }
|
|
1549
|
+
@media (pointer:coarse) { .close-button::before { content:""; position:absolute; inset:calc((var(--space-6) - var(--target-min)) / 2); border-radius:var(--radius-full); } }
|
|
1404
1550
|
/* ThemeToggle (25/09/2026): a cor no ícone mostra o tema para onde se vai. No claro a LUA, na tinta
|
|
1405
1551
|
do texto; no escuro o SOL, no amarelo da marca — as duas combinações se enxergam, e é por isso
|
|
1406
1552
|
que o botão nunca mostra a lua no escuro nem o sol no claro. Mais específico que o `.btn:hover`,
|
|
1407
1553
|
então a cor fica também com o mouse em cima. */
|
|
1408
1554
|
.theme-toggle-moon .icon { color:var(--foreground); }
|
|
1409
1555
|
.theme-toggle-sun .icon { color:var(--primary); }
|
|
1410
|
-
/*
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1556
|
+
/* ThemeToggle mode="light-dark-system" (15/10/2026): a chave de três posições do topo da referência, medida nela — a
|
|
1557
|
+
cápsula de 34 (4 de recheio) com as três opções de 26 e o glifo de 16. A cápsula e a escolhida têm a pele da escolha de
|
|
1558
|
+
abas da Aurea (`.segmented`, ADR-0059): o fundo --muted, e a escolhida no --segment com a sombra, a letra cheia. São
|
|
1559
|
+
botões de opção nativos por cima de cada glifo, como as amostras do `ColorSwatch`. No toque, cada opção tem 44. */
|
|
1560
|
+
.theme-switch { display:inline-flex; align-items:center; padding:calc(var(--space-1) - var(--border-width)); border:var(--border-width) solid transparent; border-radius:var(--radius-control); background:var(--muted); }
|
|
1561
|
+
.theme-switch-option { position:relative; display:inline-grid; place-items:center; inline-size:var(--control-h-xs); block-size:var(--control-h-xs); border-radius:var(--radius-control); color:var(--muted-foreground); cursor:pointer; }
|
|
1562
|
+
.theme-switch-option:has(:checked) { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
1563
|
+
/* PINTADA, como a chave de duas posições era (o Victor, 15/10/2026: "o sol deve ficar amarelo quando clicado e a lua
|
|
1564
|
+
quero um preto absoluto"). A escolhida é BRANCA nos dois temas, como a da referência — no escuro ela era o cinza do
|
|
1565
|
+
`--segment`, e a lua preta sumia nele (2,4:1). A lua e o monitor, o preto absoluto (21:1). O sol é o AMARELO DA
|
|
1566
|
+
MARCA, puro: o amarelo de ícone do tema claro (ADR-0054, 5,65:1) foi reprovado — *"não existe sol marrom"* — e, das
|
|
1567
|
+
três formas de sol amarelo mostradas rodando, o Victor escolheu esta (*"B"*, 15/10/2026), sabendo do contraste
|
|
1568
|
+
medido: 1,91:1 no branco. A escolha continua dita pelo fundo branco da escolhida e pelo nome da opção. */
|
|
1569
|
+
.theme-switch-option:has(:checked) { background:var(--white); color:var(--black); }
|
|
1570
|
+
.theme-switch-option:has(:checked[value="light"]) { color:var(--brand-yellow); }
|
|
1571
|
+
.theme-switch-option:hover:not(:has(:checked,:disabled)) { color:var(--foreground); }
|
|
1572
|
+
.theme-switch-option:has(:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
1573
|
+
.theme-switch-option:has(:disabled) { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1574
|
+
.theme-switch-input { position:absolute; inset:0; z-index:1; margin:0; opacity:0; cursor:inherit; }
|
|
1575
|
+
@media (pointer:coarse) { .theme-switch-option { inline-size:var(--target-min); block-size:var(--target-min); } }
|
|
1576
|
+
@media (forced-colors:active) { .theme-switch-option:has(:checked) { outline:var(--focus-width) solid Highlight; outline-offset:calc(var(--border-width) * -2); } }
|
|
1577
|
+
/* GRUPOS COLADOS (0.32.0) — o `ButtonGroup` e o `ToggleGroup` da referência: os botões COLADOS numa
|
|
1578
|
+
cápsula só (vão 0), canto só nas pontas, um fio entre eles (a cor do texto a 15%, metade da
|
|
1579
|
+
altura), sem o encolher ao apertar (o grupo é uma peça só), e o contorno que não dobra entre
|
|
1580
|
+
vizinhos. Os cantos de dentro são retos, como os dela: quem desenha a forma é a cápsula inteira.
|
|
1581
|
+
Até a 0.31.0 eram cápsulas soltas com vão de 4 — continua existindo, como `detached` (o
|
|
1582
|
+
`isDetached` dela), e só ele quebra linha.
|
|
1583
|
+
A DIREÇÃO vem por variável, e não por regra de filho de cada direção: a direção do `ButtonGroup`
|
|
1584
|
+
pode mudar com a largura (camada responsiva, que copia o corpo de `.btn-group-vertical` — o
|
|
1585
|
+
gerador confere que os dois dizem o mesmo) e a do `ToggleGroup` vem do motor (`data-orientation`).
|
|
1586
|
+
Deitado: canto na ponta de dentro da linha (`--btn-group-h`), fio em pé; em pé, o contrário. */
|
|
1587
|
+
.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
1588
|
/* Grupo VERTICAL (`G-AXIS-01`). `align-items:stretch` é o que faz os botões medirem igual: sem
|
|
1415
1589
|
ele cada um teria a largura do próprio rótulo e a coluna ficaria serrilhada — que é o defeito
|
|
1416
1590
|
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:
|
|
1591
|
+
.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; }
|
|
1592
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn { position:relative; border-radius:0; }
|
|
1593
|
+
: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); }
|
|
1594
|
+
: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); }
|
|
1595
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:only-child { border-radius:var(--radius-full); }
|
|
1596
|
+
: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; }
|
|
1597
|
+
:is(.btn-group:not(.btn-group-detached),.toggle-group:not(.toggle-group-detached)) > .btn:active:not(:disabled) { transform:none; }
|
|
1598
|
+
: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); }
|
|
1599
|
+
: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); }
|
|
1600
|
+
/* o anel de foco de um botão do meio fica por cima dos vizinhos, e não por baixo */
|
|
1601
|
+
:is(.btn-group,.toggle-group) > .btn:focus-visible { z-index:1; }
|
|
1602
|
+
.btn-group-detached,.toggle-group-detached { flex-wrap:wrap; gap:var(--space-1); }
|
|
1603
|
+
.btn-group-full,.toggle-group-full { display:flex; inline-size:100%; }
|
|
1604
|
+
:is(.btn-group-full,.toggle-group-full) > .btn { flex:1 1 0%; min-inline-size:0; }
|
|
1420
1605
|
/* Toolbar: contêiner de controles; o roving tabindex vem do Base UI. */
|
|
1421
1606
|
.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
1607
|
/* Vertical sai da pílula: --radius-control (999px) clampa em 50% da menor
|
|
@@ -1445,8 +1630,11 @@ img,svg { display:block; }
|
|
|
1445
1630
|
/* O spinner lê a MESMA escala de glifo, mas o degrau base dele é `sm` e não `md` — presumir
|
|
1446
1631
|
`md` como base de toda família é o erro que esta atividade já cometeu duas vezes. */
|
|
1447
1632
|
.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
|
-
|
|
1633
|
+
/* 0.32.0: a escala da referência — 16 · 24 · 32 · 40. O componente nasce no `md` (24); o glifo cru
|
|
1634
|
+
continua no `sm` (16), dentro do botão e do aviso. */
|
|
1635
|
+
.spinner-md { --step-icon:var(--space-6); }
|
|
1636
|
+
.spinner-lg { --step-icon:var(--space-8); }
|
|
1637
|
+
.spinner-xl { --step-icon:var(--space-10); } @keyframes spin { to { transform:rotate(360deg); } }
|
|
1450
1638
|
|
|
1451
1639
|
.field { display:flex; flex-direction:column; gap:7px; }
|
|
1452
1640
|
/* CAMPO NA HORIZONTAL — rótulo à esquerda, controle à direita. É a linha do formulário de
|
|
@@ -1459,18 +1647,28 @@ img,svg { display:block; }
|
|
|
1459
1647
|
.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
1648
|
.field-horizontal>.label { grid-column:1; flex-direction:column; align-items:flex-start; justify-content:center; gap:var(--space-05); }
|
|
1461
1649
|
.field-horizontal>*:not(.label) { grid-column:2; }
|
|
1462
|
-
.
|
|
1463
|
-
|
|
1464
|
-
|
|
1650
|
+
/* 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
|
|
1651
|
+
descrição 12 com entrelinha 16, esmaecidas e SEM negrito (a dica mora na linha do rótulo e herdava
|
|
1652
|
+
o 600 dele). O obrigatório ganha o asterisco vermelho depois do rótulo, escondido do leitor de
|
|
1653
|
+
tela — quem anuncia "obrigatório" é o `required` do controle, e não o desenho. */
|
|
1654
|
+
.label { display:flex; justify-content:space-between; gap:12px; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
1655
|
+
.hint { color:var(--muted-foreground); font-size:var(--text-xs); font-weight:var(--weight-regular); line-height:var(--space-4); }
|
|
1656
|
+
.label-required { margin-inline-start:var(--space-05); color:var(--danger-400); }
|
|
1657
|
+
.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
1658
|
.input:hover,.textarea:hover,.select:hover { border-color:var(--border); }
|
|
1659
|
+
/* `variant="secondary"` (0.32.0), o da referência: o campo de fundo NEUTRO e sem borda à vista, para
|
|
1660
|
+
dentro de um cartão, onde o fundo de campo some contra o do cartão. A borda fica (transparente),
|
|
1661
|
+
para o foco continuar sendo a borda que muda de cor (ADR-0059). */
|
|
1662
|
+
.input-secondary,.textarea-secondary { background:var(--secondary); border-color:transparent; }
|
|
1663
|
+
.input-secondary:hover,.textarea-secondary:hover { background:var(--secondary-hover); border-color:transparent; }
|
|
1466
1664
|
.input::placeholder,.textarea::placeholder { color:var(--subtle-foreground); }
|
|
1467
1665
|
.input:disabled,.textarea:disabled,.select:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1468
1666
|
/* O `padding-inline` daqui tem de LER a variável também, e com o próprio padrão: a base do
|
|
1469
1667
|
textarea vem DEPOIS da regra compartilhada e a sobrescrevia, congelando o padding em 14px nos
|
|
1470
1668
|
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-
|
|
1669
|
+
0.32.0: a família de campo passa a ser uniforme no md, como na referência — 12 dos lados no campo
|
|
1670
|
+
e na área de texto (eram 13 e 14), e a área com 8 em cima e embaixo (eram 12). */
|
|
1671
|
+
.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
1672
|
/* chevron: cor = --muted-foreground de cada tema (dark #a1a1a1, light #505050); tokenizar na Fase 1 */
|
|
1475
1673
|
.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
1674
|
[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 +1682,28 @@ img,svg { display:block; }
|
|
|
1484
1682
|
/* NumberField (Lote 1): menos · campo · mais numa peça só, que é onde as referências convergem.
|
|
1485
1683
|
O campo é `.input` — a mesma altura, o mesmo raio, o mesmo foco de qualquer campo do sistema.
|
|
1486
1684
|
Largura em token para caber de 3 a 4 dígitos sem virar caixa de texto. */
|
|
1685
|
+
/* 0.32.0 — o da referência: UM GRUPO SÓ, com a borda e o fundo de campo, e os botões DENTRO dele
|
|
1686
|
+
(40 de largura, ícone 16), cada um separado do número por um fio (a cor esmaecida a 15%). Até a
|
|
1687
|
+
0.31.0 eram dois botões fantasma soltos ao lado de um campo. O foco é o do `InputGroup`: o anel no
|
|
1688
|
+
grupo inteiro, que é a peça que a pessoa vê. No toque o grupo sobe para o alvo de 44, como os
|
|
1689
|
+
botões soltos subiam. */
|
|
1487
1690
|
.number-field { display:inline-flex; }
|
|
1488
|
-
.number-field-group { display:inline-flex; align-items:
|
|
1691
|
+
.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); }
|
|
1692
|
+
.number-field-group:hover { border-color:var(--border); }
|
|
1693
|
+
.number-field-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
1489
1694
|
.number-field-input { width:var(--space-16); text-align:center; font-variant-numeric:tabular-nums; }
|
|
1695
|
+
.number-field-group > .number-field-input { block-size:auto; border:0; border-radius:0; background:transparent; }
|
|
1696
|
+
.number-field-group > .number-field-input:focus-visible { outline:none; }
|
|
1697
|
+
.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); }
|
|
1698
|
+
.number-field-button .icon { --step-icon:var(--icon-sm); }
|
|
1699
|
+
.number-field-button:hover:not(:disabled) { background:var(--surface-hover); }
|
|
1700
|
+
.number-field-button:active:not(:disabled) { background:color-mix(in oklab, var(--foreground) 10%, transparent); }
|
|
1701
|
+
.number-field-button:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1702
|
+
/* o anel do botão fica DENTRO dele: o grupo corta o que passa da borda */
|
|
1703
|
+
.number-field-button:focus-visible { outline-offset:calc(-1 * var(--focus-width)); }
|
|
1704
|
+
.number-field-decrement { border-inline-end:var(--border-width) solid color-mix(in oklab, var(--muted-foreground) 15%, transparent); }
|
|
1705
|
+
.number-field-increment { border-inline-start:var(--border-width) solid color-mix(in oklab, var(--muted-foreground) 15%, transparent); }
|
|
1706
|
+
@media (pointer:coarse) { .number-field-group { block-size:var(--target-min); } }
|
|
1490
1707
|
/* A ALÇA DE ARRASTO (G-API-02), e só quando `scrubbable` está ligada.
|
|
1491
1708
|
O motor já põe por ESTILO EM LINHA tudo o que é mecânica — `touch-action:none` e
|
|
1492
1709
|
`user-select:none` na alça, e `position:fixed` mais o `transform` no cursor virtual, que ele
|
|
@@ -1511,7 +1728,11 @@ img,svg { display:block; }
|
|
|
1511
1728
|
/* OTPField (Lote 1): um quadrado por dígito. O lado é a altura de controle, então a fila mede o
|
|
1512
1729
|
mesmo que qualquer campo ao lado dela; o padding zera porque o dígito é centralizado. */
|
|
1513
1730
|
.otp-field { display:inline-flex; align-items:center; gap:var(--space-2); }
|
|
1514
|
-
.
|
|
1731
|
+
/* 0.32.0: a casa da referência — 38 × 40, o número 18 em seminegrito (era 36 × 36, letra 14). */
|
|
1732
|
+
.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); }
|
|
1733
|
+
/* O tracinho entre os grupos (15/10/2026): o da referência, 6 × 2 com a ponta arredondada. Só desenho — o leitor de
|
|
1734
|
+
tela segue de caixa em caixa. */
|
|
1735
|
+
.otp-separator { flex:none; inline-size:calc(var(--space-1) + var(--space-05)); block-size:var(--space-05); border-radius:var(--radius-sm); background:var(--border-strong); }
|
|
1515
1736
|
/* HoverCard (Lote 1) reusa `.popover`; só limita a largura, porque prévia é conteúdo, não rótulo. */
|
|
1516
1737
|
.hover-card { max-width:min(20rem,calc(100vw - var(--space-8))); }
|
|
1517
1738
|
|
|
@@ -1523,6 +1744,11 @@ img,svg { display:block; }
|
|
|
1523
1744
|
contorno do input de dentro ficaria escondido atrás da borda do grupo. */
|
|
1524
1745
|
.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
1746
|
.input-group:hover { border-color:var(--border); }
|
|
1747
|
+
/* A pele `secondary` do campo vale para o GRUPO, como o tamanho (abaixo): quem desenha a caixa é o grupo, e o
|
|
1748
|
+
`ColorField variant="secondary"` (e todo `InputGroup` com um `Input variant="secondary"` dentro) saía igual ao
|
|
1749
|
+
`primary` (medido na bancada em 14/10/2026). Antes do foco, para a borda do foco valer. */
|
|
1750
|
+
.input-group:has(>.input-secondary) { background:var(--secondary); border-color:transparent; }
|
|
1751
|
+
.input-group:has(>.input-secondary):hover { background:var(--secondary-hover); }
|
|
1526
1752
|
.input-group:focus-within { outline:var(--focus-width) solid var(--focus-strong); outline-offset:0; border-color:var(--focus-strong); }
|
|
1527
1753
|
.input-group:has(.input-sm) { min-block-size:var(--control-h-sm); }
|
|
1528
1754
|
.input-group:has(.input-lg) { min-block-size:var(--control-h-lg); }
|
|
@@ -1536,9 +1762,12 @@ img,svg { display:block; }
|
|
|
1536
1762
|
/* O adorno não estica nem encolhe, e nunca rouba o clique do campo — a menos que ele PRÓPRIO
|
|
1537
1763
|
seja clicável, e aí quem devolve o ponteiro é o botão de dentro. */
|
|
1538
1764
|
.input-group-addon { display:inline-flex; flex:none; align-items:center; gap:var(--space-1); color:var(--subtle-foreground); }
|
|
1539
|
-
/* A distância que o texto guarda do glifo é a mesma de antes, e por construção: 12px de um lado,
|
|
1540
|
-
o glifo, 12px do outro — os
|
|
1541
|
-
|
|
1765
|
+
/* ~~A distância que o texto guarda do glifo é a mesma de antes, e por construção: 12px de um lado,
|
|
1766
|
+
o glifo, 12px do outro~~ — não era: o campo somava os 12 DELE depois dos 12 do adorno, e o texto
|
|
1767
|
+
ficava a 24 do glifo (28 no `lg`), com 13 do outro lado. Medido em 15/10/2026, depois que o Victor
|
|
1768
|
+
viu a busca ao lado do campo da referência (*"de um lado é curto, do outro é largo"*). A
|
|
1769
|
+
referência tira o recuo do campo quando há adorno na frente (`ps-0`): 12, o glifo, 12. Aqui é a
|
|
1770
|
+
regra logo abaixo das do adorno — e ela entra também na camada responsiva, pelo gerador. */
|
|
1542
1771
|
/* G-A11Y-06 — DOIS EIXOS, e nenhum `order`.
|
|
1543
1772
|
O `align` antigo achatava duas dimensões independentes num enum só: ORDEM LÓGICA (start/end) e
|
|
1544
1773
|
GEOMETRIA (inline/block). E como a ordem lógica virava desenho por `order`, um adorno focável
|
|
@@ -1554,7 +1783,17 @@ img,svg { display:block; }
|
|
|
1554
1783
|
só funciona enquanto for o primeiro. */
|
|
1555
1784
|
.input-group-addon-inline { inline-size:auto; justify-content:normal; }
|
|
1556
1785
|
.input-group-addon-inline.input-group-addon-start { padding-inline:var(--space-3); }
|
|
1557
|
-
|
|
1786
|
+
/* O FIM (15/10/2026): texto ou ícone a 12 da borda, como o sufixo da referência (`px-3`) — eram 4, o recuo pensado
|
|
1787
|
+
para o BOTÃO redondo, que continua (o glifo dele cai a 12 da borda); a tecla, a 8 (`pe-2` no exemplo de atalho
|
|
1788
|
+
dela). `:where` para não ganhar força: a camada responsiva, que vem depois, continua mandando. */
|
|
1789
|
+
.input-group-addon-inline.input-group-addon-end { padding-inline-end:var(--space-3); }
|
|
1790
|
+
.input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); }
|
|
1791
|
+
.input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); }
|
|
1792
|
+
/* O campo depois de um adorno EM LINHA não põe recuo próprio: quem separa o texto do glifo são os 12
|
|
1793
|
+
do adorno, como na referência. Em FAIXA o adorno fica em cima, e o campo guarda o recuo dele. */
|
|
1794
|
+
.input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; }
|
|
1795
|
+
/* A busca é 12, a lupa, 8 — a da referência (`ms-3` na lupa, `ps-2` no campo). */
|
|
1796
|
+
.search-field > .input-group-addon-inline.input-group-addon-start { padding-inline-end:var(--space-2); }
|
|
1558
1797
|
/* ADORNO EM BLOCO — a barra de ações ACIMA ou ABAIXO do campo, dentro da mesma moldura. É a
|
|
1559
1798
|
forma da caixa de composição moderna: o texto em cima, os controles embaixo, tudo numa caixa
|
|
1560
1799
|
só. Vem do `G-AXIS-01`; duas das referências têm as quatro posições e a Aurea tinha duas.
|
|
@@ -1572,6 +1811,7 @@ img,svg { display:block; }
|
|
|
1572
1811
|
.input-group-addon-block { inline-size:100%; justify-content:flex-start; }
|
|
1573
1812
|
.input-group-addon-block.input-group-addon-start { padding:var(--space-2) var(--space-3) 0; }
|
|
1574
1813
|
.input-group-addon-block.input-group-addon-end { padding:0 var(--space-3) var(--space-2); }
|
|
1814
|
+
.input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); }
|
|
1575
1815
|
/* Com adorno em bloco o grupo deixa de ser uma linha e o controle não pode mais ser centralizado
|
|
1576
1816
|
verticalmente contra ele: o campo tem de ocupar a largura toda da própria linha. */
|
|
1577
1817
|
/* O RAIO MUDA, e isso não é escolha nova — é a regra da Aurea aplicada ao caso certo. A
|
|
@@ -1628,24 +1868,68 @@ img,svg { display:block; }
|
|
|
1628
1868
|
.collapsible-chevron { flex:none; transition:transform var(--duration-fast) var(--ease-standard); }
|
|
1629
1869
|
.collapsible-trigger[data-panel-open] .collapsible-chevron { transform:rotate(180deg); }
|
|
1630
1870
|
.collapsible-panel { overflow:hidden; }
|
|
1631
|
-
/* TOGGLE GROUP. A pele é a do grupo de botões, porque é o que ele
|
|
1632
|
-
|
|
1871
|
+
/* TOGGLE GROUP. A pele é a do grupo de botões, porque é o que ele é (colado, 0.32.0 — a regra
|
|
1872
|
+
está no `.btn-group`). O que muda é o eixo, que aqui o MOTOR publica. */
|
|
1633
1873
|
/* G-AXIS-06 — a pele destes cinco reage ao `data-orientation` que o MOTOR publica, e não a uma
|
|
1634
1874
|
classe que o React escolhe por conta própria. É o que garante uma fonte de verdade só: o
|
|
1635
1875
|
valor responsivo resolvido vai para o motor, o motor publica o atributo e ajusta o teclado,
|
|
1636
1876
|
e o desenho segue o atributo. Enquanto a orientação vinha de classe, era possível o CSS
|
|
1637
1877
|
dizer coluna e o `aria-orientation` dizer horizontal — foi o que impediu estes cinco de
|
|
1638
1878
|
entrarem no eixo responsivo até 22/08/2026. Ver a ADR-0019. */
|
|
1639
|
-
.toggle-group[data-orientation="vertical"] { flex-direction:column; align-items:stretch; }
|
|
1879
|
+
.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
1880
|
|
|
1641
1881
|
/* Form (M1): empilhar campos com respiro. Nada além disso — sem borda, sem fundo, sem largura.
|
|
1642
1882
|
Formulário é ARRANJO, e arranjo é do Stack/Grid; se esta classe crescer, ela vira uma terceira
|
|
1643
1883
|
maneira de fazer layout e passa a brigar com as duas que já existem. */
|
|
1644
1884
|
.form { display:grid; gap:var(--space-5); }
|
|
1645
1885
|
/* 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
|
-
.
|
|
1886
|
+
.field-description { color:var(--muted-foreground); font-size:var(--text-xs); line-height:var(--space-4); }
|
|
1887
|
+
/* o erro com 4 de recuo, como o da referência (0.32.0) */
|
|
1888
|
+
.field-error { padding-inline:var(--space-1); color:var(--danger-400); font-size:var(--text-xs); line-height:var(--space-4); }
|
|
1889
|
+
/* 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
|
|
1890
|
+
negrito, o `<strong>`), descrição 12/16 esmaecida e sem negrito embaixo dele. */
|
|
1891
|
+
.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; }
|
|
1892
|
+
.checkbox > span > strong { font-weight:inherit; }
|
|
1893
|
+
/* LISTBOX (0.32.0): a da referência — recheio de 4, 4 entre itens; item de 36 no mínimo, 8 dos lados
|
|
1894
|
+
e 6 em cima e embaixo, vão 12; fundo neutro sob o mouse e no foco do teclado (com o anel); o visto
|
|
1895
|
+
de 16 no fim do escolhido; perigo na cor de perigo. O canto é o nosso: cápsula. A seção é um título
|
|
1896
|
+
pequeno e esmaecido em cima dos itens dela. */
|
|
1897
|
+
.list-box { position:relative; display:flex; flex-direction:column; gap:var(--space-1); inline-size:100%; padding:var(--space-1); }
|
|
1898
|
+
.list-box-section { display:flex; flex-direction:column; gap:var(--space-1); }
|
|
1899
|
+
.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); }
|
|
1900
|
+
/* A linha entre as seções (15/10/2026), como em todos os exemplos de seções da referência: lá quem a põe é quem usa a
|
|
1901
|
+
lista; aqui a lista vem por dados, então ela é automática. 1 de altura, 8 para dentro de cada lado, e o vão da lista
|
|
1902
|
+
(4) em cima e o da seção (4) embaixo. Desenho, não item: o leitor de tela já conta os grupos. É BORDA, e não fundo,
|
|
1903
|
+
para continuar no alto contraste do Windows (ele apaga fundo de enfeite). */
|
|
1904
|
+
.list-box-section + .list-box-section::before { content:""; border-block-start:var(--border-width) solid var(--border); margin-inline:var(--space-2); }
|
|
1905
|
+
.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); }
|
|
1906
|
+
/* O atalho do item (15/10/2026), como o da referência: o `Kbd` na ponta da linha. */
|
|
1907
|
+
.list-box-item-kbd { flex:none; margin-inline-start:auto; }
|
|
1908
|
+
.list-box-item:has(.list-box-item-indicator) { padding-inline-end:var(--space-7); }
|
|
1909
|
+
.list-box-item:hover:not([aria-disabled="true"]),.list-box-item:focus-visible { background:var(--secondary); }
|
|
1910
|
+
.list-box-item:focus-visible { outline-offset:calc(-1 * var(--focus-width)); }
|
|
1911
|
+
.list-box-item:active:not([aria-disabled="true"]) { transform:scale(.98); }
|
|
1912
|
+
.list-box-item[aria-disabled="true"] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
1913
|
+
.list-box-item > .icon { --step-icon:var(--icon-sm); color:var(--muted-foreground); }
|
|
1914
|
+
.list-box-item-text { display:flex; flex-direction:column; min-inline-size:0; }
|
|
1915
|
+
.list-box-item-label { font-weight:var(--weight-medium); }
|
|
1916
|
+
.list-box-item-description { color:var(--muted-foreground); font-size:var(--text-xs); line-height:var(--space-4); }
|
|
1917
|
+
.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); }
|
|
1918
|
+
.list-box-item-danger,.list-box-item-danger > .icon,.list-box-item-danger .list-box-item-indicator { color:var(--danger-400); }
|
|
1919
|
+
/* CHECKBOXGROUP (0.32.0): o da referência — rótulo, descrição, as caixas com 16 antes de cada uma, o
|
|
1920
|
+
erro no fim. A descrição de cada caixa fica alinhada com o texto dela, como no `Checkbox` solto. */
|
|
1921
|
+
.checkbox-group { display:flex; flex-direction:column; align-items:flex-start; }
|
|
1922
|
+
.checkbox-group > .checkbox { margin-block-start:var(--space-4); }
|
|
1923
|
+
.checkbox-group > .field-error { margin-block-start:var(--space-2); }
|
|
1924
|
+
/* RadioGroup (15/10/2026): o molde do CheckboxGroup — 16 antes de cada opção; na horizontal, as opções numa linha com 16
|
|
1925
|
+
entre elas, como na referência. */
|
|
1926
|
+
.radio-group { display:flex; flex-direction:column; align-items:flex-start; }
|
|
1927
|
+
.radio-group > .radio { margin-block-start:var(--space-4); }
|
|
1928
|
+
.radio-group-items { display:flex; flex-wrap:wrap; gap:var(--space-4); margin-block-start:var(--space-4); }
|
|
1929
|
+
.radio-group > .field-error { margin-block-start:var(--space-2); }
|
|
1930
|
+
/* `labelHidden` (15/10/2026): sem o nome na tela, as opções começam no alto — nada do vão de 16 que o separava delas. */
|
|
1931
|
+
.radio-group-bare > .label + :is(.radio,.radio-group-items) { margin-block-start:0; }
|
|
1932
|
+
.checkbox > span > .muted { font-size:var(--text-xs); font-weight:var(--weight-regular); line-height:var(--space-4); }
|
|
1649
1933
|
.checkbox input,.radio input { position:absolute; opacity:0; pointer-events:none; }
|
|
1650
1934
|
/* A MARCA DE SELEÇÃO acompanha a densidade, e antes não acompanhava. Era `18px` cru: em
|
|
1651
1935
|
`comfortable` casava com metade da altura de controle por coincidência, e em `compact` e
|
|
@@ -1653,10 +1937,13 @@ img,svg { display:block; }
|
|
|
1653
1937
|
defeito que o achado A1 pegou no SegmentedControl em 26/07/2026.
|
|
1654
1938
|
Metade da altura de controle dá exatamente os 18px de antes em `comfortable`, então a captura
|
|
1655
1939
|
não mexe; o que muda é que agora as outras duas densidades também ficam certas. */
|
|
1656
|
-
.
|
|
1940
|
+
/* 0.32.0: a marca da referência tem 16. A conta passa a "metade menos 2" — 14 · 16 · 18 no sm · md ·
|
|
1941
|
+
lg, e continua andando com a densidade, sem número quebrado. Centrada na primeira linha do texto
|
|
1942
|
+
(`1lh`), qualquer que seja a entrelinha. O canto da caixa é o 6 dela (`--radius-xs`; era 5 cru). */
|
|
1943
|
+
.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
1944
|
.control-mark-sm { --step-h:var(--control-h-sm); }
|
|
1658
1945
|
.control-mark-lg { --step-h:var(--control-h-lg); }
|
|
1659
|
-
.checkbox .control-mark { border-radius:
|
|
1946
|
+
.checkbox .control-mark { border-radius:var(--radius-xs); } .radio .control-mark { border-radius:50%; }
|
|
1660
1947
|
.checkbox input:checked + .control-mark { background:var(--control-selected); border-color:var(--control-selected); color:var(--control-selected-foreground); }
|
|
1661
1948
|
.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
1949
|
/* Cheia com a cor do foco (marcada, ligada), a peça volta ao VÃO (ADR-0059): colado, o anel sumiria
|
|
@@ -1665,11 +1952,16 @@ img,svg { display:block; }
|
|
|
1665
1952
|
anel volta a colar (vermelho, pela regra do inválido). */
|
|
1666
1953
|
.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
1954
|
.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
|
|
1955
|
+
/* A opção marcada fica CHEIA, com o ponto no meio, como a da referência (o ponto dela tem 8 numa
|
|
1956
|
+
marca de 16: a metade). Era vazia, com o ponto amarelo. */
|
|
1957
|
+
.radio input:checked + .control-mark { background:var(--control-selected); border-color:var(--control-selected); }
|
|
1958
|
+
.radio input:checked + .control-mark:after { content:""; width:50%; height:50%; border-radius:50%; background:var(--control-selected-foreground); }
|
|
1959
|
+
.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; }
|
|
1960
|
+
/* O TRILHO DO SWITCH (0.32.0): o da referência, 40 × 20 (sm 32 × 16, lg 48 × 24) — a largura é o
|
|
1961
|
+
dobro da altura. Era 42 × 24. A altura é a de controle MENOS 16: dá exatamente os três dela
|
|
1962
|
+
(32 · 36 · 40 → 16 · 20 · 24), continua andando com a densidade e passa pela `--step-h`, que é o
|
|
1963
|
+
caminho do tamanho responsivo (`size-*`). */
|
|
1964
|
+
.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
1965
|
.switch-track-sm { --step-h:var(--control-h-sm); }
|
|
1674
1966
|
.switch-track-lg { --step-h:var(--control-h-lg); }
|
|
1675
1967
|
/* O botão TEM de encolher com o trilho: preso em 16px, num trilho `compact` de 20px de altura
|
|
@@ -1681,8 +1973,13 @@ img,svg { display:block; }
|
|
|
1681
1973
|
eixo inline resolve contra a LARGURA do contêiner (40px) e não contra a altura. Escrever a
|
|
1682
1974
|
mesma conta nos dois eixos dava um botão de 34×16 — medido no navegador, não deduzido, depois
|
|
1683
1975
|
que a suíte de captura reprovou duas seções da página de docs. */
|
|
1684
|
-
.
|
|
1685
|
-
|
|
1976
|
+
/* 0.32.0 — a bolinha da referência é uma CÁPSULA (a altura do trilho menos 4; a largura, 11/8 dela:
|
|
1977
|
+
22 × 16 no md), a 2 da borda de fora. O trilho tem borda de 1 (é ela que fica vermelha no
|
|
1978
|
+
inválido), então a folga por dentro é 1. Ligada, ela anda até a outra ponta: `--switch-x`, a
|
|
1979
|
+
mesma distância nos dois sentidos de escrita. */
|
|
1980
|
+
.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); }
|
|
1981
|
+
.switch-track { --switch-x:calc(var(--switch-h) * 2 - (var(--switch-h) - 2 * var(--space-05)) * 11 / 8 - 2 * var(--space-05)); }
|
|
1982
|
+
.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
1983
|
.range { width:100%; accent-color:var(--primary); }
|
|
1687
1984
|
/* Slider VERTICAL, no `<input type=range>` NATIVO — sem trocar de motor.
|
|
1688
1985
|
|
|
@@ -1703,14 +2000,96 @@ img,svg { display:block; }
|
|
|
1703
2000
|
`.range{width:100%}` anulava o `width:auto` daqui — a caixa saía 129x16 nos três motores.
|
|
1704
2001
|
Mesma armadilha de ordem de cascata que os tons do botão. */
|
|
1705
2002
|
.range-vertical { writing-mode:vertical-rl; direction:rtl; inline-size:var(--range-vertical-size,10rem); width:auto; }
|
|
2003
|
+
/* SLIDER (HER-05, 0.32.0) — o desenhado da referência. Rótulo e valor na linha de cima (14, peso
|
|
2004
|
+
médio, o número tabular); o trilho de 20 no cinza neutro, o preenchimento na cor da marca; a alça
|
|
2005
|
+
é uma cápsula de 28 × 20 na cor da marca com o miolo de 24 × 16, que encolhe a 90% enquanto se
|
|
2006
|
+
arrasta. O miolo dela é branco sobre o azul; aqui é a cor de LETRA sobre o amarelo
|
|
2007
|
+
(`--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
|
|
2008
|
+
motor, por estilo em linha (posição e tamanho); aqui fica só a pele. Nas pontas a alça fica dentro
|
|
2009
|
+
do trilho pelo jeito da referência: 12 de borda TRANSPARENTE em cada ponta do trilho (o fundo pinta
|
|
2010
|
+
por baixo dela, então o trilho continua inteiro), e a alça, centrada, anda só no miolo. O
|
|
2011
|
+
preenchimento volta 12 para começar na ponta visível. O alinhamento "na borda" do motor faria o
|
|
2012
|
+
mesmo, mas só depois de a página rodar no navegador — a alça sairia invisível no HTML do servidor.
|
|
2013
|
+
Vertical: o valor em cima, o trilho no meio, o rótulo embaixo, e a altura é a do `Range` vertical
|
|
2014
|
+
(`--range-vertical-size`). */
|
|
2015
|
+
.slider { display:grid; grid-template-areas:"label output" "track track"; grid-template-columns:minmax(0,1fr) auto; gap:var(--space-1); inline-size:100%; }
|
|
2016
|
+
.slider-label { grid-area:label; inline-size:fit-content; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
2017
|
+
.slider-output { grid-area:output; color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; }
|
|
2018
|
+
.slider-control { grid-area:track; display:flex; align-items:center; touch-action:none; }
|
|
2019
|
+
.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); }
|
|
2020
|
+
.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); }
|
|
2021
|
+
.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; }
|
|
2022
|
+
.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); }
|
|
2023
|
+
.slider-thumb[data-dragging] { cursor:grabbing; }
|
|
2024
|
+
.slider-thumb[data-dragging]::after { scale:.9; }
|
|
2025
|
+
.slider-thumb:has(input:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2026
|
+
.slider[data-disabled] { opacity:var(--opacity-disabled); }
|
|
2027
|
+
.slider[data-disabled] .slider-thumb { cursor:not-allowed; }
|
|
2028
|
+
.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; }
|
|
2029
|
+
.slider[data-orientation="vertical"] .slider-control { block-size:var(--range-vertical-size,10rem); }
|
|
2030
|
+
.slider[data-orientation="vertical"] .slider-track { inline-size:var(--space-5); block-size:100%; border-inline:0; border-block:var(--space-3) solid transparent; }
|
|
2031
|
+
.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); }
|
|
2032
|
+
.slider[data-orientation="vertical"] .slider-thumb { inline-size:100%; block-size:calc(var(--space-6) + var(--space-1)); }
|
|
2033
|
+
.slider[data-orientation="vertical"] .slider-thumb::after { inline-size:var(--space-4); block-size:var(--space-6); }
|
|
2034
|
+
@media (prefers-reduced-motion:reduce) { .slider-thumb::after { transition:none; } }
|
|
2035
|
+
/* A TRILHA DE COR (0.32.0, ADR-0069) — a variação `channel` do Slider, em qualquer canal. A pintura (a exceção da
|
|
2036
|
+
ADR-0069) chega pela variável que o componente põe; esta folha não escreve gradiente (check 4). O gradiente vai
|
|
2037
|
+
de ponta a ponta do trilho (`background-origin: border-box`) e as paradas começam na folga (`--slider-cap`, a
|
|
2038
|
+
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
|
|
2039
|
+
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
|
|
2040
|
+
branco de 3 — branco nos dois temas, porque fica sobre a cor. A cor do pino vai por uma sombra por dentro, para o
|
|
2041
|
+
xadrez aparecer por baixo quando ela é transparente.
|
|
2042
|
+
O XADREZ (14/10/2026, o Victor: "xadrez sim", só onde há transparência) é desenho de SVG, e não gradiente: no
|
|
2043
|
+
alfa, embaixo da trilha e do pino. E `forced-color-adjust:none`, como na biblioteca da referência: com o alto
|
|
2044
|
+
contraste do sistema, a trilha continua mostrando as cores. */
|
|
2045
|
+
/* O xadrez da transparência, um desenho só para as peças que o mostram (a trilha do alfa, a amostra transparente). */
|
|
2046
|
+
.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"); }
|
|
2047
|
+
.slider-color { --slider-cap:var(--space-3); }
|
|
2048
|
+
.slider-color .slider-track { background:var(--slider-track-fill,var(--secondary)); background-origin:border-box; forced-color-adjust:none; }
|
|
2049
|
+
.slider-alpha .slider-track { background-image:var(--slider-track-fill,none),var(--color-checker); background-size:auto,var(--space-2) var(--space-2); }
|
|
2050
|
+
.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; }
|
|
2051
|
+
.slider-color .slider-thumb::after { content:none; }
|
|
2052
|
+
.slider-color[data-orientation="vertical"] .slider-thumb { inline-size:var(--space-4); block-size:var(--space-4); }
|
|
2053
|
+
/* COLORAREA (0.32.0, ADR-0069) — a área de cor. A pintura (o gradiente, a ÚNICA exceção à ADR-0007) chega pela
|
|
2054
|
+
variável que o componente põe (`--color-area-fill`): esta folha não escreve gradiente nenhum (check 4).
|
|
2055
|
+
Medidas da referência, lidas no CSS publicado dela (3.2.6): quadrada, até 224 de largura, canto 16; o pino de
|
|
2056
|
+
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`.
|
|
2057
|
+
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.
|
|
2058
|
+
Os dois `range` escondidos (o motor da área) cobrem o pino com opacidade quase zero, como na referência: o
|
|
2059
|
+
leitor de tela por toque os acha no lugar do pino. */
|
|
2060
|
+
.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; }
|
|
2061
|
+
/* Os pontinhos (`showDots`, o da referência: um ponto branco a 20% a cada 8) são desenho de SVG por cima da área,
|
|
2062
|
+
e não gradiente. O pino fica acima deles. */
|
|
2063
|
+
.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); }
|
|
2064
|
+
.color-area-dots .color-area-thumb { z-index:1; }
|
|
2065
|
+
.color-area[data-disabled] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2066
|
+
.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); }
|
|
2067
|
+
.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); }
|
|
2068
|
+
.color-area-thumb[data-focus-visible] { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2069
|
+
.color-area-input { position:absolute; inset:0; inline-size:100%; block-size:100%; margin:0; opacity:.0001; pointer-events:none; }
|
|
2070
|
+
@media (prefers-reduced-motion:reduce) { .color-area-thumb { transition:none; } }
|
|
2071
|
+
/* 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,
|
|
2072
|
+
lido no CSS publicado dela, 3.2.6). A janela é o `.popover` com o recheio dela — 8 em cima e dos lados, 12
|
|
2073
|
+
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
|
|
2074
|
+
largura toda. */
|
|
2075
|
+
.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; }
|
|
2076
|
+
.color-picker-trigger:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2077
|
+
.color-picker-trigger:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2078
|
+
.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); }
|
|
2079
|
+
.color-picker-popover > .color-area { max-inline-size:none; }
|
|
1706
2080
|
|
|
1707
2081
|
/* A CÁPSULA é que tem de medir igual a um botão/campo ao lado — não o botão de dentro.
|
|
1708
2082
|
Antes: `height:30px` no filho, cru. Em comfortable dava 30+3+3=36 = --control-h-md por
|
|
1709
2083
|
coincidência; em compact a cápsula ficava 4px alta demais e em spacious 4px baixa demais,
|
|
1710
2084
|
porque a densidade não alcançava a regra (achado A1, 26/07/2026). Com a altura na cápsula
|
|
1711
2085
|
os filhos esticam sozinhos (align-items é stretch por padrão) e a conta fecha nas TRÊS. */
|
|
1712
|
-
.
|
|
1713
|
-
|
|
2086
|
+
/* 0.32.0 — as medidas das abas da referência (o segmentado é a mesma peça): trilho com 4 de recheio
|
|
2087
|
+
e sem vão; cada segmento com a altura `sm` (32 no padrão, e anda com a densidade), 16 dos lados,
|
|
2088
|
+
letra peso médio. O trilho dá 40 (era 36: 3 + 30 + 3). */
|
|
2089
|
+
/* A borda transparente de 1 (as abas não têm) entra no recheio: 1 + 3 = os 4 da referência, e o
|
|
2090
|
+
trilho mede 40 como o das abas — sem o desconto, 42 (a geometria pegou). */
|
|
2091
|
+
.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; }
|
|
2092
|
+
.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
2093
|
.segmented button.active { color:var(--foreground); background:var(--segment); box-shadow:var(--shadow-sm); border:0; }
|
|
1715
2094
|
/* `fullWidth` (A5, 06/10/2026): ocupa a linha, e cada segmento cresce a partir do rótulo sem
|
|
1716
2095
|
encolher abaixo dele — o mesmo desenho do nativo. `1 0 auto` e não `1` (= `1 1 0%`): base zero
|
|
@@ -1736,6 +2115,14 @@ img,svg { display:block; }
|
|
|
1736
2115
|
claro e 1,02:1 no escuro. Sobre o trilho a cápsula é --segment, com a sombra pequena — como a
|
|
1737
2116
|
aba da referência principal. O rótulo na cor da marca e o fio continuam. */
|
|
1738
2117
|
.segmented button.active { --btn-bg:var(--segment); background:var(--segment); box-shadow:var(--shadow-sm); }
|
|
2118
|
+
/* O TOGGLE LIGADO tem fundo próprio (0.32.0). Com o solto no fundo neutro (o `default` da referência),
|
|
2119
|
+
o cinza do "selecionado" acima deixava ligado e desligado com o MESMO fundo — só a letra e o fio
|
|
2120
|
+
mudavam, e o `skin.spec` cobra que o ligado pareça ligado pelo fundo. O ligado dela é o tom suave
|
|
2121
|
+
da marca; o da Aurea é o "clarinho" (o amarelo a 10%, a receita do `.badge-primary` que o Victor
|
|
2122
|
+
escolheu para a página atual da paginação), aqui sobre o cinza, para o grupo colado continuar uma
|
|
2123
|
+
cápsula só. A letra da marca e o fio continuam os do "selecionado". */
|
|
2124
|
+
.btn.toggle[data-pressed] { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary)); background:var(--btn-bg); }
|
|
2125
|
+
.btn.toggle[data-pressed]:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary-hover)); }
|
|
1739
2126
|
/* 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
2127
|
marca `lory`). Ele dividia esta regra com o `.segmented`, que vive no conteúdo — e `--secondary`
|
|
1741
2128
|
é quase branco no tema claro. Numa lateral escura isso desenhava uma pílula branca com texto
|
|
@@ -1756,7 +2143,7 @@ img,svg { display:block; }
|
|
|
1756
2143
|
saíram com a mesma cor. Com o `:not` ela pesa (0,3,1) e só alcança quem está em repouso. */
|
|
1757
2144
|
[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
2145
|
.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,
|
|
2146
|
+
.btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented button.active::after,.tabs-secondary .tab[data-active]::after,
|
|
1760
2147
|
.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
2148
|
/* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
|
|
1762
2149
|
.doc-nav a.active::after,.sidebar-item[aria-current]::after { background:color-mix(in oklab, var(--sidebar-primary) 75%, transparent); }
|
|
@@ -1773,7 +2160,11 @@ img,svg { display:block; }
|
|
|
1773
2160
|
classe media 26px dentro do .brand (lh 18px) e 22px dentro de um .btn-nav (lh 12px) — na
|
|
1774
2161
|
mesma barra (achado A2, 26/07/2026). Geometria de componente não se decide pelo contexto.
|
|
1775
2162
|
O .chip do catálogo já tinha aprendido isso; o .badge não. */
|
|
1776
|
-
.
|
|
2163
|
+
/* 0.32.0: as medidas do Chip da referência (o `Badge` da Aurea é o Chip dela), lidas no CSS publicado:
|
|
2164
|
+
24 de altura, 10 até o texto (8 da caixa + 2 do rótulo — aqui, com a borda de 1 que é nossa, 9), 4
|
|
2165
|
+
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
|
|
2166
|
+
borda continuam da Aurea, como no nativo (0.11.0). */
|
|
2167
|
+
.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
2168
|
/* O glifo do badge tem tamanho PRÓPRIO, senão o `.icon` padrão (20px) estoura os 24px e o
|
|
1778
2169
|
badge com ícone fica mais alto que o badge de texto na mesma fila. 16px + 3+3 de padding
|
|
1779
2170
|
+ 1+1 de borda = 24px exatos: com ícone ou sem, mede o mesmo. */
|
|
@@ -1785,8 +2176,8 @@ img,svg { display:block; }
|
|
|
1785
2176
|
.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
2177
|
/* TAMANHOS. O md é a base (24px), que não muda — é o que as 103 fichas já usam. */
|
|
1787
2178
|
.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); }
|
|
2179
|
+
.badge-sm { min-height:var(--space-5); padding:0 calc(var(--space-1) + var(--space-05) - var(--border-width)); }
|
|
2180
|
+
.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
2181
|
/* ACESSÓRIOS de dentro do chip. O ponto herda a cor do texto por `currentColor`, então ele
|
|
1791
2182
|
acompanha variante e ênfase sem uma regra por combinação. */
|
|
1792
2183
|
.badge-dot { flex:none; width:var(--space-2); height:var(--space-2); border-radius:var(--radius-full); background:currentColor; }
|
|
@@ -1871,6 +2262,9 @@ img,svg { display:block; }
|
|
|
1871
2262
|
enchendo com o acento, como antes. */
|
|
1872
2263
|
.badge-solid { background:var(--badge-fill, var(--badge-accent)); color:var(--badge-on, var(--background)); border-color:transparent; }
|
|
1873
2264
|
.badge-outline { background:transparent; color:var(--badge-accent); border-color:var(--badge-accent); }
|
|
2265
|
+
/* flat (15/10/2026): o tom de sempre sem a linha em volta — o selo da referência não tem borda em forma nenhuma. A
|
|
2266
|
+
borda fica, transparente: a medida do selo não muda. */
|
|
2267
|
+
.badge.badge-flat { border-color:transparent; }
|
|
1874
2268
|
.status-dot { width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:0 0 0 3px color-mix(in srgb,currentColor 14%,transparent); }
|
|
1875
2269
|
/* Status: condição operacional (DIRECTION §3.6) — NÃO é o pill do Badge; é ponto + rótulo
|
|
1876
2270
|
solto na linha. A variante pinta o .status (o ponto herda por currentColor) e o rótulo
|
|
@@ -1896,6 +2290,14 @@ img,svg { display:block; }
|
|
|
1896
2290
|
lados. Horizontal (o modo lista): a mídia à esquerda, 96 de largura (a do exemplo da
|
|
1897
2291
|
referência, nosso --space-24), 16 até o texto, e o raio concêntrico da casa. */
|
|
1898
2292
|
.card-media { display:block; overflow:hidden; }
|
|
2293
|
+
/* As partes do cartão (15/10/2026), as da referência: o título 14/24 médio e a descrição 14/20 apagada, colados no
|
|
2294
|
+
cabeçalho; o conteúdo em coluna com 4; o rodapé em linha, com 8 entre os botões; 12 entre as partes. */
|
|
2295
|
+
.card-header { display:flex; flex-direction:column; }
|
|
2296
|
+
.card-title { margin:0; color:var(--card-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--space-6); }
|
|
2297
|
+
.card-description { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
2298
|
+
.card-content { display:flex; flex-direction:column; gap:var(--space-1); }
|
|
2299
|
+
.card-footer { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2); }
|
|
2300
|
+
:is(.card-header,.card-content,.card-footer) + :is(.card-header,.card-content,.card-footer) { margin-block-start:var(--space-3); }
|
|
1899
2301
|
.card-media > :is(img,video,.image) { display:block; width:100%; }
|
|
1900
2302
|
.card:not(.card-horizontal) > .card-media:first-child { margin:calc(var(--card-pad) * -1) calc(var(--card-pad) * -1) var(--card-pad); border-radius:calc(var(--radius-card) - var(--border-width)) calc(var(--radius-card) - var(--border-width)) 0 0; }
|
|
1901
2303
|
.card-flush:not(.card-horizontal) > .card-media:first-child { margin:0; }
|
|
@@ -1903,6 +2305,11 @@ img,svg { display:block; }
|
|
|
1903
2305
|
.card-horizontal > .card-media { grid-row:1 / span 99; border-radius:calc(var(--radius-card) - var(--card-pad)); }
|
|
1904
2306
|
.card-horizontal > :not(.card-media) { grid-column:2; min-width:0; }
|
|
1905
2307
|
.card-raised { box-shadow:none; } .card-inset { background:var(--secondary); }
|
|
2308
|
+
/* `outline` (0.32.0): o cartão da cor de onde ele está, só com a linha em volta — a caixa grande do
|
|
2309
|
+
Início da documentação da referência (o Victor, 13/10/2026: "na mesma cor do site, só tem uma linha
|
|
2310
|
+
ao redor"). O nome é o da referência para "sem fundo, com contorno" (o botão dela); o `transparent`
|
|
2311
|
+
do cartão dela tira também a linha, e esta guarda. A borda, o raio e o recheio são os do `.card`. */
|
|
2312
|
+
.card-outline { background:transparent; }
|
|
1906
2313
|
/* A variante interativa é o ALVO, e desde o G-A11Y-11 ela exige `render` — o elemento vem de
|
|
1907
2314
|
quem consome, e é `<button>` ou `<a href>` conforme a promessa seja ação ou navegação.
|
|
1908
2315
|
As quatro normalizações abaixo existem por causa disso: um <button> traz fonte própria,
|
|
@@ -1938,27 +2345,39 @@ img,svg { display:block; }
|
|
|
1938
2345
|
.card-accent-brand { --card-accent:var(--primary); } .card-accent-success { --card-accent:var(--success); }
|
|
1939
2346
|
.card-accent-info { --card-accent:var(--info); } .card-accent-warning { --card-accent:var(--warning); }
|
|
1940
2347
|
.card-accent-danger { --card-accent:var(--destructive); }
|
|
1941
|
-
.card-header
|
|
1942
|
-
|
|
2348
|
+
/* 0.32.0: a descrição 14/20 colada no título. O `.card-header` e o `.card-title` desta linha (o cabeçalho em LINHA, com
|
|
2349
|
+
16 de vão e 16 embaixo, da primeira versão pública) saíram em 15/10/2026: nenhuma peça os usava, e vindo DEPOIS das
|
|
2350
|
+
partes do cartão eles separavam o título da descrição do `Card.Header` em 16 — na referência, colados. */
|
|
2351
|
+
.card-subtitle { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
1943
2352
|
|
|
1944
2353
|
/* HER-02 (06/10/2026): o `.alert` e o `.toast` eram `--radius-lg` (16). Painel e superfície
|
|
1945
2354
|
flutuante são `--radius-card` (22) na identidade da Aurea, como o `.popover`, o `.dialog` e o
|
|
1946
2355
|
`.banner`; a referência usa 24 nos dois. */
|
|
1947
|
-
.
|
|
2356
|
+
/* 0.32.0, o Alert da referência (lido no CSS publicado dela, ordem do Victor: "igual ao dela"): o fundo
|
|
2357
|
+
de CARTÃO, sem borda, com a sombra de superfície; 12 em cima e embaixo e 16 dos lados; 16 entre as
|
|
2358
|
+
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
|
|
2359
|
+
esmaecido. Até a 0.31.0 a cor do estado tingia o fundo e a borda. `--alert-tone` é a cor do estado. */
|
|
2360
|
+
.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); }
|
|
2361
|
+
.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); }
|
|
2362
|
+
/* action (15/10/2026): a coluna do botão, depois do texto e antes do X, no meio da altura. Abaixo de 640 o botão desce
|
|
2363
|
+
para baixo do texto, na mesma coluna — a referência repete o botão no celular; aqui ele só muda de lugar. */
|
|
2364
|
+
.alert-has-action { grid-template-columns:auto minmax(0,1fr) auto auto; }
|
|
2365
|
+
.alert-action { display:flex; align-items:center; align-self:center; gap:var(--space-2); }
|
|
2366
|
+
@media (max-width:639px) { .alert-has-action { grid-template-columns:auto minmax(0,1fr) auto; } .alert-has-action > .alert-action { grid-column:2; grid-row:2; justify-self:start; align-self:start; } }
|
|
1948
2367
|
/* Banner: aviso de largura de página. Base ANTES das variantes — mesma
|
|
1949
2368
|
especificidade, então a última regra vence e a base apagaria as cores. */
|
|
1950
2369
|
.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
|
-
.
|
|
2370
|
+
.banner-info { border-color:color-mix(in srgb,var(--info) 38%,var(--border)); background:var(--info-bg); }
|
|
2371
|
+
.banner-success { border-color:color-mix(in srgb,var(--success) 38%,var(--border)); background:var(--success-bg); }
|
|
2372
|
+
.banner-warning { border-color:color-mix(in srgb,var(--warning) 38%,var(--border)); background:var(--warning-bg); }
|
|
2373
|
+
.banner-danger { border-color:color-mix(in srgb,var(--danger-400) 38%,var(--border)); background:var(--danger-bg); }
|
|
1955
2374
|
/* O título do alerta é <strong> e não <h4>: alerta cai em qualquer profundidade da página e
|
|
1956
2375
|
um h4 fixo quebraria a ordem de cabeçalhos. `display:block` porque o corpo vem embaixo
|
|
1957
2376
|
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
|
|
2377
|
+
.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
2378
|
/* A cor do glifo é a da variante, senão o ícone vira enfeite cinza e não repete o sinal.
|
|
1960
2379
|
Só o ícone DIRETO do alerta: um ícone dentro do corpo (num botão, num link) é do corpo. */
|
|
1961
|
-
.alert>.icon {
|
|
2380
|
+
.alert>.icon { --step-icon:var(--icon-sm); margin:var(--space-1); color:var(--alert-tone); }
|
|
1962
2381
|
.banner strong { font-size:var(--text-sm); } .banner p { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
1963
2382
|
@media (max-width:640px) { .banner { grid-template-columns:auto minmax(0,1fr); } .banner>:last-child { grid-column:2; justify-self:start; } }
|
|
1964
2383
|
.progress { height:8px; overflow:hidden; border-radius:999px; background:var(--surface-3); }
|
|
@@ -1969,6 +2388,13 @@ img,svg { display:block; }
|
|
|
1969
2388
|
pausado é `neutral`, falha é `danger`. */
|
|
1970
2389
|
.progress-field { display:grid; gap:var(--space-1); }
|
|
1971
2390
|
.progress-detail { justify-self:end; color:var(--muted-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; }
|
|
2391
|
+
/* 0.32.0, a barra da referência: o rótulo à mostra no alto à esquerda (14 peso médio), a saída à direita,
|
|
2392
|
+
e o trilho embaixo, ocupando as duas colunas. sm 4, md 8, lg 12 de espessura. */
|
|
2393
|
+
.progress-field:has(> .progress-label) { grid-template-columns:minmax(0,1fr) auto; }
|
|
2394
|
+
.progress-field:has(> .progress-label) > .progress { grid-column:1 / -1; }
|
|
2395
|
+
.progress-label { color:var(--foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); }
|
|
2396
|
+
.progress-sm { height:var(--space-1); }
|
|
2397
|
+
.progress-lg { height:var(--space-3); }
|
|
1972
2398
|
.progress-tone-neutral>span { background:var(--muted-foreground); }
|
|
1973
2399
|
.progress-tone-success>span { background:var(--success-400); }
|
|
1974
2400
|
.progress-tone-warning>span { background:var(--warning-400); }
|
|
@@ -1989,11 +2415,15 @@ img,svg { display:block; }
|
|
|
1989
2415
|
já existe (esqueleto, alerta, estado vazio, conteúdo) com respiro entre eles. Se ganhar borda
|
|
1990
2416
|
ou fundo, viram duas superfícies para a mesma coisa — o defeito que a `.table-region` cobrou. */
|
|
1991
2417
|
.data-state { display:grid; gap:var(--space-3); }
|
|
1992
|
-
.skeleton { position:relative; overflow:hidden; border-radius:
|
|
2418
|
+
.skeleton { position:relative; overflow:hidden; border-radius:var(--radius-sm); background:var(--surface-3); }
|
|
1993
2419
|
.skeleton { animation:skeleton-pulse 1.35s ease-in-out infinite; } @keyframes skeleton-pulse { 50% { opacity:.55; } }
|
|
2420
|
+
/* 0.32.0: `animation="none"` para o pulso; e quem pediu menos movimento ao sistema também não o vê. */
|
|
2421
|
+
.skeleton-static { animation:none; }
|
|
2422
|
+
@media (prefers-reduced-motion:reduce) { .skeleton { animation:none; } }
|
|
1994
2423
|
|
|
1995
|
-
/* Mesma regra da .segmented
|
|
1996
|
-
|
|
2424
|
+
/* Mesma regra da .segmented (0.32.0, as medidas da referência): 4 de recheio, sem vão, a aba de 32
|
|
2425
|
+
(`--control-h-sm`, que anda com a densidade), 16 dos lados, peso médio. */
|
|
2426
|
+
.tabs { display:inline-flex; gap:0; padding:var(--space-1); border:0; border-radius:var(--radius-control); background:var(--muted); }
|
|
1997
2427
|
/* Abas VERTICAIS (a família da orientação, achada pela matriz do §13). A raiz vira GRADE e
|
|
1998
2428
|
não linha: com `flex-direction:row` o painel herdaria a altura da lista, e uma aba com
|
|
1999
2429
|
muito conteúdo esticaria a coluna de rótulos junto — medido no navegador em 22/08/2026.
|
|
@@ -2001,25 +2431,48 @@ img,svg { display:block; }
|
|
|
2001
2431
|
painel porque `minmax(0,1fr)` sozinho deixa conteúdo largo (uma tabela) empurrar a coluna
|
|
2002
2432
|
de rótulos para fora. */
|
|
2003
2433
|
.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; }
|
|
2434
|
+
.tabs[data-orientation="vertical"] { flex-direction:column; align-items:stretch; gap:var(--space-1); min-height:0; }
|
|
2005
2435
|
/* o rótulo alinha ao INÍCIO da linha: centrado, uma coluna de abas de larguras diferentes
|
|
2006
2436
|
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
|
|
2437
|
+
.tabs[data-orientation="vertical"] .tab { text-align:start; }
|
|
2438
|
+
.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
2439
|
.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; }
|
|
2440
|
+
/* `variant="secondary"` (0.32.0): a aba secundária da referência — sem trilho e sem cápsula, um fio
|
|
2441
|
+
embaixo da lista, a escolhida com a letra normal e o fio da casa (a regra do "selecionado", mais
|
|
2442
|
+
abaixo). */
|
|
2443
|
+
.tabs-secondary { gap:var(--space-1); padding:0; border-block-end:var(--border-width) solid var(--border); border-radius:0; background:transparent; }
|
|
2444
|
+
.tabs-secondary[data-orientation="vertical"] { border-block-end:0; border-inline-start:var(--border-width) solid var(--border); }
|
|
2445
|
+
.tabs-secondary .tab { border-radius:0; }
|
|
2446
|
+
.tabs-secondary .tab.active,.tabs-secondary .tab[data-active] { background:transparent; box-shadow:none; color:var(--foreground); }
|
|
2447
|
+
.tabs-secondary .tab[data-active]::after { display:block; }
|
|
2010
2448
|
/* `panel="plain"` (MNT-05 e C9, 06/10/2026): o painel sem caixa, como o painel de abas da
|
|
2011
2449
|
referência. Sem recheio dos lados — o conteúdo começa na linha do que está fora do `Tabs` —, e o
|
|
2012
2450
|
espaço de cima é o mesmo `space-3` do painel do nativo. Na vertical, quem separa é o `gap` da
|
|
2013
2451
|
grade da raiz, então o espaço de cima não entra. */
|
|
2014
2452
|
.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
|
-
|
|
2453
|
+
/* 0.32.0 — a trilha da referência: vão 6, link 14 PESO MÉDIO esmaecido (sublinhado com o mouse, como o
|
|
2454
|
+
dela), a página atual na cor do texto e em peso médio (era negrito), e o separador de 12 (era 16). */
|
|
2455
|
+
.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); }
|
|
2456
|
+
.breadcrumb a { color:inherit; text-decoration:none; } .breadcrumb a:hover { color:var(--foreground); text-decoration:underline; text-underline-offset:var(--space-05); }
|
|
2457
|
+
.breadcrumb > .icon { --step-icon:var(--space-3); }
|
|
2458
|
+
.breadcrumb [aria-current="page"] { color:var(--foreground); font-weight:inherit; }
|
|
2459
|
+
/* PAGINATION (0.32.0) — a da referência: o resumo à esquerda (14 esmaecido) e os itens à direita,
|
|
2460
|
+
com 4 entre eles; cada número é uma cápsula de 32 (`--control-h-sm`, 44 no toque), 14 PESO MÉDIO,
|
|
2461
|
+
que escurece com o mouse; "anterior" e "próxima" com a seta de 16 e o texto, 10 dos lados e 6 entre
|
|
2462
|
+
a seta e o texto; as reticências esmaecidas. A página ATUAL é o "clarinho" da Aurea — a receita do
|
|
2463
|
+
`.badge-primary` suave (o amarelo a 10%, o contorno da marca e a letra da marca), decisão do Victor.
|
|
2464
|
+
O `compact` (o desenho de até a 0.31.0) usa o `Button` e o `Badge`, e não passa por aqui. */
|
|
2465
|
+
.pagination { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-4); }
|
|
2466
|
+
.pagination-summary { margin-inline-end:auto; color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2467
|
+
.pagination-content { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-1); margin:0; padding:0; list-style:none; }
|
|
2468
|
+
.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); }
|
|
2469
|
+
.pagination-link:hover:not(:disabled):not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2470
|
+
.pagination-link:active:not(:disabled):not([aria-disabled="true"]) { transform:scale(.97); }
|
|
2471
|
+
.pagination-link:disabled,.pagination-link[aria-disabled="true"] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2472
|
+
.pagination-link.active { border-color:var(--primary-outline); background:color-mix(in srgb, var(--primary) 10%, transparent); color:var(--primary-emphasis); }
|
|
2473
|
+
.pagination-link-nav { padding-inline:calc(var(--space-2) + var(--space-05)); }
|
|
2474
|
+
.pagination-nav-icon { --step-icon:var(--icon-sm); }
|
|
2475
|
+
.pagination-ellipsis { display:inline-grid; place-items:center; inline-size:var(--control-h-sm); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2023
2476
|
/* Stepper (Lote 2): o container NUNCA existiu no core — só no docs.css, e lá era
|
|
2024
2477
|
`repeat(4,1fr)`, com o número de etapas cravado. `grid-auto-flow:column` distribui N etapas
|
|
2025
2478
|
iguais sem saber quanto é N, e colunas iguais são o que faz a linha conectora (`.step:before`,
|
|
@@ -2065,14 +2518,31 @@ img,svg { display:block; }
|
|
|
2065
2518
|
Somar o seletor em vez de copiar os valores: copiar deixaria duas listas para manter em sincronia,
|
|
2066
2519
|
que é como as duas peles divergiram. O que continua só do `.table-region` é o foco — ele é
|
|
2067
2520
|
`tabIndex=0` (região rolável precisa ser alcançável pelo teclado) e o `.table-wrap` não é. */
|
|
2068
|
-
|
|
2069
|
-
|
|
2521
|
+
/* HER-13 (0.32.0, *"tabela quero como essa"*): a pele da referência, lida no CSS publicado dela — a
|
|
2522
|
+
MOLDURA cinza (sem borda, 4 dos lados e embaixo), o cabeçalho sobre ela (12 peso médio esmaecido, sem
|
|
2523
|
+
caixa-alta, 10 em cima e embaixo e 16 dos lados, com um fio de 16 entre as colunas) e o CORPO como um
|
|
2524
|
+
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
|
|
2525
|
+
entre as linhas e o canto da casa (o da moldura menos a folga, como a ADR-0033) nas quatro pontas.
|
|
2526
|
+
A moldura é a região que rola: no celular a tabela rola de lado dentro dela (a "A" do Victor).
|
|
2527
|
+
A densidade continua da Aurea: o recheio de cima e de baixo sai do `--row-h` (no confortável, 12, o
|
|
2528
|
+
dela). */
|
|
2529
|
+
.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); }
|
|
2530
|
+
.table,.table-wrap table { width:100%; border-collapse:separate; border-spacing:0; min-width:720px; font-size:var(--text-sm); }
|
|
2070
2531
|
/* GAR-16 (0.28.0): a tabela inteira com algarismos da mesma largura — a coluna de preço e de ano
|
|
2071
2532
|
alinha. Só os algarismos mudam; o texto das outras colunas fica igual. */
|
|
2072
|
-
.table th,.table td,.table-wrap th,.table-wrap td {
|
|
2073
|
-
|
|
2533
|
+
.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; }
|
|
2534
|
+
/* O título da tabela (`caption`) mora na moldura, em cima do cabeçalho, alinhado ao texto das colunas
|
|
2535
|
+
(sem regra, o navegador o centralizava). */
|
|
2536
|
+
.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; }
|
|
2537
|
+
.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); }
|
|
2538
|
+
.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; }
|
|
2539
|
+
.table tbody :is(td,th),.table-wrap tbody :is(td,th) { background:var(--card); }
|
|
2540
|
+
.table tbody tr:first-child > :first-child,.table-wrap tbody tr:first-child > :first-child { border-start-start-radius:var(--table-cell-r); }
|
|
2541
|
+
.table tbody tr:first-child > :last-child,.table-wrap tbody tr:first-child > :last-child { border-start-end-radius:var(--table-cell-r); }
|
|
2542
|
+
.table tbody tr:last-child > :first-child,.table-wrap tbody tr:last-child > :first-child { border-end-start-radius:var(--table-cell-r); }
|
|
2543
|
+
.table tbody tr:last-child > :last-child,.table-wrap tbody tr:last-child > :last-child { border-end-end-radius:var(--table-cell-r); }
|
|
2074
2544
|
.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); }
|
|
2545
|
+
@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
2546
|
/* GAR-12 e GAR-13 (08/10/2026): a tabela de COMPARAÇÃO — as chaves da `Table` e a pele do HTML de
|
|
2077
2547
|
comparação. A referência principal só tem o cabeçalho preso, à mão, numa caixa de altura fixa; o
|
|
2078
2548
|
resto veio do mercado, por escolha do Victor (o detalhe está no comentário da `Table`).
|
|
@@ -2080,7 +2550,10 @@ img,svg { display:block; }
|
|
|
2080
2550
|
cor do texto, peso médio. Antes herdava a pele do cabeçalho — e ninguém no repositório usava
|
|
2081
2551
|
`th` no corpo (medido), então nenhum exemplo muda. A FAIXA DE GRUPO (`<th scope="rowgroup">`)
|
|
2082
2552
|
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);
|
|
2553
|
+
.table tbody th[scope="row"],.table-wrap tbody th[scope="row"] { color:var(--foreground); font-size:inherit; font-weight:var(--weight-medium); }
|
|
2554
|
+
/* 0.32.0: a faixa de grupo continua rótulo — o cinza da moldura e a letra do cabeçalho —, agora que o
|
|
2555
|
+
cabeçalho da referência mora só no `thead`. */
|
|
2556
|
+
.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
2557
|
.table tbody tr:last-child th,.table-wrap tbody tr:last-child th { border-bottom:0; }
|
|
2085
2558
|
/* O melhor valor: negrito. O selo "Melhor", em TEXTO, é um `Badge` que o site põe na célula — a
|
|
2086
2559
|
cor sozinha não diz nada a quem não a enxerga (WCAG 1.4.1). */
|
|
@@ -2105,8 +2578,13 @@ img,svg { display:block; }
|
|
|
2105
2578
|
.table-sticky-first :is(thead,tbody,tfoot) > tr > :first-child { position:sticky; inset-inline-start:0; z-index:1; background:var(--card); }
|
|
2106
2579
|
.table-sticky-first thead > tr > :first-child { z-index:2; background:var(--surface-2); }
|
|
2107
2580
|
.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); }
|
|
2581
|
+
@media (hover:hover) { .table-sticky-first tbody > tr:hover > :first-child { background:color-mix(in oklab,var(--card) 40%,var(--surface-2)); } }
|
|
2109
2582
|
.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); }
|
|
2583
|
+
/* Achado em 12/10/2026 (o teste GAR-12, vencido desde o passo 6): a moldura da tabela tem recheio de 4 dos
|
|
2584
|
+
lados, e a coluna parada gruda na borda de DENTRO dela — a 4. Ao rolar de lado, as células passavam
|
|
2585
|
+
nessa faixa de 4 à esquerda da coluna parada. Cada célula parada tapa a faixa com a cor da moldura, por
|
|
2586
|
+
fora; com propriedade lógica, vale também na escrita da direita para a esquerda. */
|
|
2587
|
+
.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
2588
|
/* Avatar (Lote 2): `overflow:hidden` e o `object-fit` da imagem são a correção do defeito que
|
|
2111
2589
|
a medição achou — foto que não é quadrada vazava inteira da caixa redonda, porque
|
|
2112
2590
|
`border-radius` não recorta filho sozinho. Foto de perfil raramente vem quadrada, então isto
|
|
@@ -2115,10 +2593,123 @@ img,svg { display:block; }
|
|
|
2115
2593
|
`comfortable`. Nada muda de aparência aqui; o que muda é que agora a DENSIDADE alcança o
|
|
2116
2594
|
avatar, e a escala é a mesma dos controles — avatar e botão na mesma linha ficam da mesma
|
|
2117
2595
|
altura por construção, em vez de por coincidência. */
|
|
2118
|
-
.
|
|
2119
|
-
|
|
2120
|
-
|
|
2596
|
+
/* 0.32.0: a escala da referência, 32 · 40 · 48, com a letra de 12 · 14 · 16 em peso médio (era a
|
|
2597
|
+
altura do botão, 32 · 36 · 40, e negrito). `--step-avatar` é a variável de passo própria do avatar
|
|
2598
|
+
(a camada responsiva a emite junto das outras). */
|
|
2599
|
+
.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); }
|
|
2600
|
+
.avatar-sm { --step-avatar:var(--space-8); --step-avatar-fs:var(--text-xs); }
|
|
2601
|
+
.avatar-lg { --step-avatar:var(--space-12); --step-avatar-fs:var(--text-base); }
|
|
2602
|
+
/* tone e emphasis="soft" (15/10/2026), o `color` e o `soft` do avatar da referência: o tom pinta a letra ou o ícone (o par
|
|
2603
|
+
de letra de cada estado, ADR-0061); o `soft` tira a moldura e põe o fundo clarinho do tom (14%, a tinta dos botões
|
|
2604
|
+
suaves). O neutro suave é o --muted. */
|
|
2605
|
+
.avatar-tone-brand { --avatar-ink:var(--primary-emphasis); --avatar-tint:var(--primary); }
|
|
2606
|
+
.avatar-tone-danger { --avatar-ink:var(--danger-400); --avatar-tint:var(--destructive); }
|
|
2607
|
+
.avatar-tone-success { --avatar-ink:var(--success-400); --avatar-tint:var(--success); }
|
|
2608
|
+
.avatar-tone-warning { --avatar-ink:var(--warning-400); --avatar-tint:var(--warning); }
|
|
2609
|
+
.avatar-tone-info { --avatar-ink:var(--info-400); --avatar-tint:var(--info); }
|
|
2610
|
+
.avatar:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { color:var(--avatar-ink); }
|
|
2611
|
+
.avatar.avatar-soft { border-color:transparent; background:var(--muted); }
|
|
2612
|
+
.avatar.avatar-soft:is(.avatar-tone-brand,.avatar-tone-danger,.avatar-tone-success,.avatar-tone-warning,.avatar-tone-info) { background:color-mix(in oklab, var(--avatar-tint) 14%, transparent); }
|
|
2121
2613
|
.avatar img { width:100%; height:100%; object-fit:cover; }
|
|
2614
|
+
/* LINK (0.32.0): o link de texto da referência — peso médio, a cor de link, sem sublinhado; com o mouse
|
|
2615
|
+
ou apertado, o sublinhado de 1,5 a 4 da letra, na cor esmaecida (a meia força com o mouse). A seta do
|
|
2616
|
+
`external` é o `arrow-up-right` do Phosphor por máscara, a 60% (inteira com o mouse). O desenho é
|
|
2617
|
+
em LINHA (`inline`), e não o bloco em linha dela: o link longo quebra dentro do parágrafo, que é o
|
|
2618
|
+
que a página ampliada a 200% precisa (baixa visão). */
|
|
2619
|
+
.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; }
|
|
2620
|
+
@media (hover:hover) { .link:hover { color:var(--link-hover); text-decoration-line:underline; } .link:hover > .link-external { opacity:1; } }
|
|
2621
|
+
.link:active { text-decoration-line:underline; text-decoration-color:var(--muted-foreground); }
|
|
2622
|
+
.link[aria-disabled="true"] { opacity:var(--opacity-disabled); text-decoration-line:none; cursor:not-allowed; }
|
|
2623
|
+
.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; }
|
|
2624
|
+
/* COLORSWATCH (0.32.0): a amostra de cor da referência — xs 16, sm 24, md 32, lg 36, xl 40 —, só redonda
|
|
2625
|
+
e sem o xadrez (decisão do Victor). O anel de 1 por dentro, a 10% da cor do texto, segura a amostra da
|
|
2626
|
+
cor do fundo no fundo. */
|
|
2627
|
+
.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); }
|
|
2628
|
+
.color-swatch-xs { --color-swatch-size:var(--space-4); }
|
|
2629
|
+
.color-swatch-sm { --color-swatch-size:var(--space-6); }
|
|
2630
|
+
.color-swatch-lg { --color-swatch-size:calc(var(--space-8) + var(--space-1)); }
|
|
2631
|
+
.color-swatch-xl { --color-swatch-size:var(--space-10); }
|
|
2632
|
+
/* A amostra TRANSPARENTE (14/10/2026): o xadrez embaixo, e a cor por uma sombra por dentro (a sombra pinta POR CIMA
|
|
2633
|
+
do fundo; a cor de fundo pintaria por baixo do xadrez). O anel de 1 continua por cima de tudo. */
|
|
2634
|
+
.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); }
|
|
2635
|
+
/* AS AMOSTRAS PARA ESCOLHER (0.32.0, ADR-0069): a variação `options` do ColorSwatch. Cada cor é um rótulo com um
|
|
2636
|
+
botão de opção nativo por cima, invisível (o navegador cuida da escolha e das setas). O desenho é o da
|
|
2637
|
+
referência (3.2.6): opção de 32 (os mesmos tamanhos da amostra), borda de 2 transparente, vão de 8; a escolhida
|
|
2638
|
+
ganha a borda na cor dela, a amostra encolhe a 77% por dentro e aparece o "visto" (1/3 da opção) — preto ou
|
|
2639
|
+
branco pela conta de contraste (a classe `color-swatch-option-dark`, posta pelo componente). Ao passar o ponteiro, a amostra cresce 10%. */
|
|
2640
|
+
.color-swatch-picker { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2); }
|
|
2641
|
+
.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); }
|
|
2642
|
+
.color-swatch-option > .color-swatch { inline-size:100%; block-size:100%; transition:scale var(--duration-fast) var(--ease-standard); }
|
|
2643
|
+
.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); }
|
|
2644
|
+
.color-swatch-option-dark::after { background:#000; }
|
|
2645
|
+
.color-swatch-option:has(:checked) { border-color:var(--color-swatch-current,transparent); }
|
|
2646
|
+
.color-swatch-option:has(:checked) > .color-swatch { scale:.77; }
|
|
2647
|
+
.color-swatch-option:has(:checked)::after { scale:1; }
|
|
2648
|
+
@media (hover:hover) { .color-swatch-option:not(:has(:checked,:disabled)):hover > .color-swatch { scale:1.1; } }
|
|
2649
|
+
.color-swatch-option:has(:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2650
|
+
.color-swatch-option:has(:disabled) { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2651
|
+
.color-swatch-input { position:absolute; inset:0; z-index:1; margin:0; opacity:0; cursor:inherit; }
|
|
2652
|
+
/* Em coluna (`layout="stack"`) e a marca própria (`indicator`, no lugar do "visto"), como na referência. A marca
|
|
2653
|
+
aparece só na escolhida, na tinta que contrasta, com 1/3 da opção. */
|
|
2654
|
+
.color-swatch-picker-stack { flex-direction:column; align-items:flex-start; }
|
|
2655
|
+
.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); }
|
|
2656
|
+
.color-swatch-indicator > * { inline-size:calc(var(--color-swatch-size) / 3); block-size:calc(var(--color-swatch-size) / 3); }
|
|
2657
|
+
.color-swatch-option-dark .color-swatch-indicator { color:#000; }
|
|
2658
|
+
.color-swatch-option:has(:checked) .color-swatch-indicator { scale:1; }
|
|
2659
|
+
.color-swatch-option:has(.color-swatch-indicator)::after { content:none; }
|
|
2660
|
+
.color-swatch-picker-xs .color-swatch-option { --color-swatch-size:var(--space-4); border-width:var(--border-width); }
|
|
2661
|
+
.color-swatch-picker-sm .color-swatch-option { --color-swatch-size:var(--space-6); }
|
|
2662
|
+
.color-swatch-picker-lg .color-swatch-option { --color-swatch-size:calc(var(--space-8) + var(--space-1)); }
|
|
2663
|
+
.color-swatch-picker-xl .color-swatch-option { --color-swatch-size:var(--space-10); }
|
|
2664
|
+
/* showLabels (14/10/2026): o nome embaixo de cada cor, como a escolha de tema da referência — a amostra, 4 abaixo o nome
|
|
2665
|
+
pequeno e apagado, que acende na escolhida; 12 entre os itens (a grade dela). O rótulo inteiro escolhe. O nome usa a
|
|
2666
|
+
menor letra da Aurea (12), e não os 10 da referência: a Aurea é de baixa visão. */
|
|
2667
|
+
.color-swatch-picker-labels { gap:var(--space-3); }
|
|
2668
|
+
.color-swatch-item { display:inline-grid; justify-items:center; gap:var(--space-1); cursor:pointer; }
|
|
2669
|
+
.color-swatch-name { color:var(--muted-foreground); font-size:var(--text-xs); font-weight:var(--weight-medium); line-height:var(--space-4); }
|
|
2670
|
+
.color-swatch-item:has(:checked) .color-swatch-name { color:var(--foreground); }
|
|
2671
|
+
.color-swatch-item:has(:disabled) { cursor:not-allowed; }
|
|
2672
|
+
@media (prefers-reduced-motion:reduce) { .color-swatch-option,.color-swatch-option > .color-swatch,.color-swatch-option::after,.color-swatch-indicator { transition:none; } }
|
|
2673
|
+
/* PROGRESSCIRCLE (0.32.0): o anel da referência — traço de 4 num quadro de 36, ponta redonda, começando no
|
|
2674
|
+
topo —, em 20 · 28 · 36. O trilho e as cores são as do `Progress`. Sem valor, gira. */
|
|
2675
|
+
.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); }
|
|
2676
|
+
.progress-circle > svg { inline-size:100%; block-size:100%; }
|
|
2677
|
+
.progress-circle-track,.progress-circle-fill { fill:none; stroke-width:4; }
|
|
2678
|
+
.progress-circle-track { stroke:var(--surface-3); }
|
|
2679
|
+
.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); }
|
|
2680
|
+
.progress-circle-sm { --progress-circle-size:var(--space-5); }
|
|
2681
|
+
.progress-circle-lg { --progress-circle-size:calc(var(--space-8) + var(--space-1)); }
|
|
2682
|
+
.progress-circle-neutral { --progress-circle-fill:var(--muted-foreground); }
|
|
2683
|
+
.progress-circle-success { --progress-circle-fill:var(--success-400); }
|
|
2684
|
+
.progress-circle-warning { --progress-circle-fill:var(--warning-400); }
|
|
2685
|
+
.progress-circle-danger { --progress-circle-fill:var(--danger-400); }
|
|
2686
|
+
.progress-circle-info { --progress-circle-fill:var(--info-400); }
|
|
2687
|
+
.progress-circle-indeterminate > svg { animation:spin 1s linear infinite; }
|
|
2688
|
+
@media (prefers-reduced-motion:reduce) { .progress-circle-indeterminate > svg { animation-duration:3s; } .progress-circle-fill { transition:none; } }
|
|
2689
|
+
/* TAGGROUP (0.32.0): as etiquetas da referência — 24 de altura (sm 20, lg 32), 8 dos lados (lg 10), letra
|
|
2690
|
+
de 12 peso médio (lg 14), ícone de 12, 4 entre as partes, 6 entre as etiquetas; o fundo neutro (ou o de
|
|
2691
|
+
cartão, `surface`), a escolhida no clarinho. O canto é a cápsula da Aurea. O anel de foco vai na
|
|
2692
|
+
etiqueta inteira, e não só no botão de dentro. */
|
|
2693
|
+
.tag-group { display:flex; flex-direction:column; gap:var(--space-1); }
|
|
2694
|
+
.tag-group-list { display:flex; flex-wrap:wrap; gap:calc(var(--space-1) + var(--space-05)); }
|
|
2695
|
+
.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; }
|
|
2696
|
+
.tag-main { display:inline-flex; align-items:center; gap:var(--space-1); padding:0; border:0; background:none; color:inherit; font:inherit; }
|
|
2697
|
+
button.tag-main { cursor:pointer; }
|
|
2698
|
+
.tag-main > .icon { --step-icon:var(--space-3); }
|
|
2699
|
+
.tag-label { white-space:nowrap; }
|
|
2700
|
+
.tag-sm { min-block-size:var(--space-5); }
|
|
2701
|
+
.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); }
|
|
2702
|
+
.tag-surface { background:var(--card); color:var(--card-foreground); }
|
|
2703
|
+
@media (hover:hover) { .tag:has(> button.tag-main):not([data-selected]):not([data-disabled]):hover { background:var(--secondary-hover); } }
|
|
2704
|
+
.tag[data-selected] { background:color-mix(in oklab,var(--primary) 10%,var(--secondary)); color:var(--primary-emphasis); }
|
|
2705
|
+
.tag[data-disabled] { opacity:var(--opacity-disabled); }
|
|
2706
|
+
.tag-main:focus-visible { outline:none; }
|
|
2707
|
+
.tag:has(> .tag-main:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
|
|
2708
|
+
.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; }
|
|
2709
|
+
.tag-remove > .icon { --step-icon:var(--space-3); }
|
|
2710
|
+
.tag-remove:hover:not(:disabled) { opacity:1; }
|
|
2711
|
+
.tag-remove:disabled { cursor:not-allowed; }
|
|
2712
|
+
@media (pointer:coarse) { .tag-remove::before { content:""; position:absolute; inset:calc((var(--space-3) - var(--target-min)) / 2); border-radius:var(--radius-full); } }
|
|
2122
2713
|
/* O container do grupo NUNCA teve regra: a sobreposição abaixo existia e os avatares empilhavam
|
|
2123
2714
|
na vertical porque o pai saía `display:block`. Mesma falha do `.stepper` e do `.command`. */
|
|
2124
2715
|
.avatar-group { display:inline-flex; align-items:center; }
|
|
@@ -2185,18 +2776,33 @@ img,svg { display:block; }
|
|
|
2185
2776
|
.timeline > li > div { display:flex; flex-direction:column; gap:var(--space-05); min-width:0; }
|
|
2186
2777
|
.timeline > li > div > p { margin:0; }
|
|
2187
2778
|
.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-
|
|
2779
|
+
/* ACCORDION (0.32.0) — o da referência, com o realce em CÁPSULA (decisão do Victor, 11/10/2026). Sem
|
|
2780
|
+
caixa em volta: um fio de 1 entre os itens, nenhum depois do último. A pergunta: 16 de todos os
|
|
2781
|
+
lados, 14 peso médio, a seta de 16 no FIM (esmaecida), que vira −180° ao abrir — o marcador do
|
|
2782
|
+
navegador sai (era ele que girava, no começo da linha). O realce do mouse só no item fechado: a cor
|
|
2783
|
+
do texto a 3%, em cápsula. A resposta: 14 esmaecida, 16 dos lados e embaixo. Recuo INLINE, não
|
|
2784
|
+
`padding-left`: em RTL a seta troca de lado e o corpo acompanha (o gate de RTL mede o eixo inline).
|
|
2785
|
+
`surface`: tudo num cartão, o fio a 94% (3% de cada lado) e o realce no cinza neutro. */
|
|
2786
|
+
.accordion { display:flex; flex-direction:column; }
|
|
2787
|
+
.accordion-item { position:relative; }
|
|
2788
|
+
.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); }
|
|
2789
|
+
.accordion-item:last-child::after { content:none; }
|
|
2790
|
+
.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); }
|
|
2791
|
+
.accordion-item > summary::-webkit-details-marker { display:none; }
|
|
2792
|
+
.accordion-title { min-inline-size:0; }
|
|
2793
|
+
.accordion-item:not([open]) > summary:hover:not([aria-disabled="true"]) { background:color-mix(in oklab, var(--foreground) 3%, transparent); }
|
|
2794
|
+
.accordion-item > summary[aria-disabled="true"] { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2795
|
+
/* A seta é desenho do CSS por máscara, como a do `KPI` e a do aviso preso ao botão (12/10/2026). No
|
|
2796
|
+
passo 4 ela entrou como `<Icon>`, que busca o arquivo de ícones: quem usava só o `Accordion` — que
|
|
2797
|
+
abre sem JavaScript e não pedia arquivo nenhum — passou a ver um erro de rede e uma seta vazia (a
|
|
2798
|
+
prova A4 pegou). O desenho é o `caret-down` do Phosphor, o mesmo do arquivo, no mesmo tamanho. */
|
|
2799
|
+
.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); }
|
|
2800
|
+
.accordion-item[open] > summary .accordion-chevron { transform:rotate(-180deg); }
|
|
2801
|
+
.accordion-content { padding-block:0 var(--space-4); padding-inline:var(--space-4); color:var(--muted-foreground); font-size:var(--text-sm); }
|
|
2802
|
+
.accordion-surface { border-radius:var(--radius-card); background:var(--card); }
|
|
2803
|
+
.accordion-surface > .accordion-item::after { inset-inline-start:3%; inline-size:94%; }
|
|
2804
|
+
.accordion-surface > .accordion-item:not([open]) > summary:hover:not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2805
|
+
@media (prefers-reduced-motion:reduce) { .accordion-chevron { transition:none; } }
|
|
2200
2806
|
/* Mockup do kit de origem (apps/docs) — não é o Accordion do sistema, que é <details> nativo. */
|
|
2201
2807
|
|
|
2202
2808
|
/* QRCode: superfície flutuante Aurea, mas o miolo é de alto contraste FIXO — um QR
|
|
@@ -2222,9 +2828,26 @@ img,svg { display:block; }
|
|
|
2222
2828
|
parado no canto. O comportamento é do core (aurea.js, [data-aurea-copy]); aqui só a pele.
|
|
2223
2829
|
O check em amarelo é confirmação instantânea — dura 1,5s e volta ao ícone de copiar. */
|
|
2224
2830
|
/* checkbox com rótulo fora da tela: sem o texto, o alvo é só a marca — nada de gap sobrando. */
|
|
2225
|
-
.checkbox-bare { gap:0; }
|
|
2831
|
+
.checkbox-bare,.radio-bare,.switch-bare { gap:0; }
|
|
2832
|
+
/* A chave no fim (`indicatorPlacement="end"`): só a ordem do desenho; o campo continua antes da chave. */
|
|
2833
|
+
.switch-end > .switch-track { order:1; }
|
|
2226
2834
|
.code-block-wrap { position:relative; display:flex; min-width:0; }
|
|
2227
2835
|
.code-block-wrap > .code-block { flex:1; min-width:0; margin:0; }
|
|
2836
|
+
/* DOC-02 (0.32.0): a caixa de exemplo do site (`CodeBlock preview`), trazida para o core do jeito que
|
|
2837
|
+
ela é no site — o cartão sem recheio, a barra de abas com o segmentado ocupando a largura, a prévia
|
|
2838
|
+
no fundo afundado, centrada, e o código sem moldura (o cartão já é a moldura). A altura é do conteúdo;
|
|
2839
|
+
o site fixa a dele (`--demo-height`). */
|
|
2840
|
+
.code-preview { display:flex; flex-direction:column; block-size:var(--demo-height,auto); padding:0; overflow:hidden; }
|
|
2841
|
+
.demo-tabs { display:flex; padding:var(--space-2); border-bottom:var(--border-width) solid var(--border); }
|
|
2842
|
+
.demo-tabs .segmented { flex:1; display:flex; }
|
|
2843
|
+
.demo-tabs .segmented button { flex:1; }
|
|
2844
|
+
.demo-panel { flex:1; min-height:0; overflow:auto; padding:var(--space-6); }
|
|
2845
|
+
.demo-panel[hidden] { display:none; }
|
|
2846
|
+
.demo-panel[data-panel="preview"] { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:var(--space-4); background:var(--surface-inset); }
|
|
2847
|
+
.demo-panel[data-panel="preview"][hidden] { display:none; }
|
|
2848
|
+
.demo-code { display:flex; padding:0; overflow:hidden; }
|
|
2849
|
+
.demo-code .code-block-wrap { flex:1; }
|
|
2850
|
+
.demo-code .code-block { padding:var(--space-6); border:0; border-radius:0; }
|
|
2228
2851
|
.copy-code { position:absolute; top:var(--space-3); inset-inline-end:var(--space-3); z-index:1; }
|
|
2229
2852
|
.copy-code .c-done { display:none; }
|
|
2230
2853
|
.copy-code.is-done .c-copy { display:none; } .copy-code.is-done .c-done { display:block; color:var(--primary); }
|
|
@@ -2232,7 +2855,11 @@ img,svg { display:block; }
|
|
|
2232
2855
|
por isso é <nav> com rótulo, e o item atual se marca com aria-current. */
|
|
2233
2856
|
.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
2857
|
|
|
2235
|
-
|
|
2858
|
+
/* O "On this page" é o da referência (ADR-0067): letra 14, peso normal, esmaecido, SEM maiúsculas, e o
|
|
2859
|
+
ícone de linhas ao lado — desenho do CSS por máscara (o `text-align-left` do Phosphor), para o sumário
|
|
2860
|
+
não passar a depender do arquivo de ícones. Era 11, em maiúsculas espaçadas. */
|
|
2861
|
+
.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); }
|
|
2862
|
+
.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
2863
|
.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
2864
|
.toc a:hover { color:var(--foreground); }
|
|
2238
2865
|
.toc a[aria-current] { border-inline-start-color:var(--primary); color:var(--foreground); }
|
|
@@ -2296,26 +2923,33 @@ img,svg { display:block; }
|
|
|
2296
2923
|
APARECE (o motor conta com o CSS dele para escondê-lo, e nós não importamos o CSS dele). */
|
|
2297
2924
|
.calendar { display:inline-block; padding:var(--space-3); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--surface-1); }
|
|
2298
2925
|
.calendar-months { position:relative; }
|
|
2299
|
-
.
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2926
|
+
/* 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
|
|
2927
|
+
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
|
|
2928
|
+
peso médio esmaecido, com 8 embaixo; o dia de 36 redondo, em 14 peso médio; HOJE no clarinho (o "soft"
|
|
2929
|
+
dela), o escolhido no amarelo cheio, o de fora do mês esmaecido a meia força, o desligado riscado. */
|
|
2930
|
+
.calendar nav { position:absolute; inset-block-start:0; inset-inline-end:0; display:flex; }
|
|
2931
|
+
.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; }
|
|
2932
|
+
.calendar nav button:hover:not(:disabled):not([aria-disabled="true"]) { background:var(--secondary); }
|
|
2933
|
+
.calendar nav button:active:not(:disabled):not([aria-disabled="true"]) { transform:scale(.95); }
|
|
2934
|
+
.calendar nav button:disabled { opacity:var(--opacity-disabled); cursor:not-allowed; }
|
|
2303
2935
|
.calendar nav svg { width:var(--icon-sm); height:var(--icon-sm); fill:currentColor; }
|
|
2304
|
-
.calendar-caption { display:flex; align-items:center; justify-content:
|
|
2936
|
+
.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
2937
|
/* Estas três já foram um DESFAZIMENTO: `width:auto`, `min-width:0`, `height:auto` e
|
|
2306
2938
|
`border-bottom:0` existiam só para anular a regra de elemento da seção de dados. A regra foi
|
|
2307
2939
|
escopada em 02/08/2026 e o antídoto saiu junto — corrigir onde nasce, não onde dói.
|
|
2308
2940
|
O `padding:0` FICA, e não é antídoto: é o 1px que o NAVEGADOR dá a `<td>`/`<th>`. Tirá-lo
|
|
2309
2941
|
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-
|
|
2942
|
+
.calendar table { border-collapse:collapse; margin-block-start:var(--space-4); }
|
|
2943
|
+
.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
2944
|
.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-
|
|
2945
|
+
.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
2946
|
.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
|
|
2947
|
+
.calendar td button:active:not(:disabled):not([aria-disabled="true"]) { transform:scale(.95); }
|
|
2948
|
+
.calendar td[data-today] button { background:color-mix(in oklab,var(--primary) 10%,var(--secondary)); color:var(--primary-emphasis); }
|
|
2949
|
+
.calendar td[data-selected] button { background:var(--primary); color:var(--primary-foreground); }
|
|
2950
|
+
.calendar td[data-outside] button { color:var(--muted-foreground); opacity:.5; }
|
|
2951
|
+
.calendar td[data-selected][data-outside] button { background:var(--secondary); color:var(--muted-foreground); }
|
|
2952
|
+
.calendar td button:disabled { opacity:var(--opacity-disabled); text-decoration:line-through; cursor:not-allowed; }
|
|
2319
2953
|
.calendar td[data-hidden] { visibility:hidden; }
|
|
2320
2954
|
.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
2955
|
/* Chat React (Fase 5.4): estrutura fixa em classe, não inline (auditoria 18/07, M14). */
|
|
@@ -2493,20 +3127,31 @@ img,svg { display:block; }
|
|
|
2493
3127
|
token: a escala de letras é a dela desde a ADR-0050, a entrelinha do texto é `--leading-relaxed`
|
|
2494
3128
|
(27, 24 e 20px, contra os 28, 24 e 20 dela) e o código reusa a pele do `code` do `.prose`.
|
|
2495
3129
|
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.
|
|
3130
|
+
quem os empilha (`Stack`), não do texto.
|
|
3131
|
+
0.32.0: a entrelinha do título passa a ser a de CADA tamanho, como na escala publicada dela
|
|
3132
|
+
(40 · 36 · 32 · 28 · 28 · 24); até aqui era 1,2 em todos (43 · 36 · 29 · 24 · 22 · 19). */
|
|
2497
3133
|
.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); }
|
|
3134
|
+
.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); }
|
|
3135
|
+
.typography-h1 { font-size:var(--text-4xl); line-height:var(--text-4xl-leading); }
|
|
3136
|
+
.typography-h2 { font-size:var(--text-3xl); line-height:var(--text-3xl-leading); }
|
|
3137
|
+
.typography-h3 { font-size:var(--text-2xl); line-height:var(--text-2xl-leading); }
|
|
3138
|
+
.typography-h4 { font-size:var(--text-xl); line-height:var(--text-xl-leading); }
|
|
3139
|
+
.typography-h5 { font-size:var(--text-lg); line-height:var(--text-lg-leading); }
|
|
3140
|
+
.typography-h6 { font-size:var(--text-base); line-height:var(--leading-normal); }
|
|
2505
3141
|
.typography-body { font-size:var(--text-base); line-height:var(--leading-relaxed); }
|
|
2506
3142
|
.typography-body-sm { font-size:var(--text-sm); line-height:var(--leading-relaxed); }
|
|
2507
3143
|
.typography-body-xs { font-size:var(--text-xs); line-height:var(--leading-relaxed); }
|
|
2508
3144
|
.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
3145
|
.typography-muted { color:var(--muted-foreground); }
|
|
3146
|
+
/* DOC-11 (0.32.0): o `tone` do nativo, na web. `link` é o amarelo de escrever; `primary`, o de
|
|
3147
|
+
preencher (no claro quase some, como no nativo); as cores de estado, o par `-400` (ADR-0061). */
|
|
3148
|
+
.typography-tone-subtle { color:var(--subtle-foreground); }
|
|
3149
|
+
.typography-tone-primary { color:var(--primary); }
|
|
3150
|
+
.typography-tone-link { color:var(--link); }
|
|
3151
|
+
.typography-tone-danger { color:var(--danger-400); }
|
|
3152
|
+
.typography-tone-success { color:var(--success-400); }
|
|
3153
|
+
.typography-tone-warning { color:var(--warning-400); }
|
|
3154
|
+
.typography-tone-info { color:var(--info-400); }
|
|
2510
3155
|
.typography-weight-normal { font-weight:var(--weight-regular); }
|
|
2511
3156
|
.typography-weight-medium { font-weight:var(--weight-medium); }
|
|
2512
3157
|
.typography-weight-semibold { font-weight:var(--weight-semibold); }
|
|
@@ -2540,11 +3185,11 @@ img,svg { display:block; }
|
|
|
2540
3185
|
.prose { max-width:var(--prose-measure,68ch); font-size:var(--text-base); line-height:var(--leading-relaxed); }
|
|
2541
3186
|
.prose > * + * { margin-block-start:var(--space-4); }
|
|
2542
3187
|
.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); }
|
|
3188
|
+
.prose h1,.prose h2,.prose h3,.prose h4 { font-weight:var(--weight-semibold); }
|
|
3189
|
+
.prose h1 { font-size:var(--text-3xl); line-height:var(--text-3xl-leading); }
|
|
3190
|
+
.prose h2 { font-size:var(--text-2xl); line-height:var(--text-2xl-leading); }
|
|
3191
|
+
.prose h3 { font-size:var(--text-xl); line-height:var(--text-xl-leading); }
|
|
3192
|
+
.prose h4 { font-size:var(--text-lg); line-height:var(--text-lg-leading); }
|
|
2548
3193
|
.prose blockquote { margin-inline:0; padding-inline-start:var(--space-4); border-inline-start:2px solid var(--border-strong); color:var(--muted-foreground); }
|
|
2549
3194
|
.prose ul,.prose ol { padding-inline-start:var(--space-6); }
|
|
2550
3195
|
.prose li + li { margin-block-start:var(--space-2); }
|
|
@@ -2634,40 +3279,131 @@ img,svg { display:block; }
|
|
|
2634
3279
|
.icon-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; }
|
|
2635
3280
|
.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
3281
|
@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
|
-
|
|
3282
|
+
/* JANELAS (0.32.0): o Dialog, o ConfirmDialog e o Drawer com a anatomia da referência, lida no CSS
|
|
3283
|
+
PUBLICADO dela — recheio de 24; o X a 16 do topo e do fim; o cabeçalho em coluna (o ícone num círculo
|
|
3284
|
+
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
|
|
3285
|
+
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
|
|
3286
|
+
janela guarda 16 no celular e 40 de 640 para cima. Entra crescendo de 0,95 a 1 e sai encolhendo, como
|
|
3287
|
+
a dela. A borda continua (a dela é só sombra no claro): baixa visão, como nas outras janelas.
|
|
3288
|
+
O que já rolava (a janela inteira) passou para o corpo — a ficha prometia isso desde sempre. */
|
|
3289
|
+
.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); }
|
|
3290
|
+
.dialog-backdrop[data-starting-style],.dialog-backdrop[data-ending-style] { opacity:0; }
|
|
3291
|
+
.dialog-backdrop[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
3292
|
+
.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); }
|
|
3293
|
+
.dialog[data-starting-style] { opacity:0; scale:1.05; }
|
|
3294
|
+
.dialog[data-ending-style] { opacity:0; scale:.95; transition-duration:var(--duration-fast); }
|
|
3295
|
+
@media (min-width:640px) { .dialog { --dialog-margin:var(--space-10); } }
|
|
3296
|
+
/* `placement` (o dela): `auto` senta a janela EMBAIXO no celular, onde o polegar alcança, e no meio de
|
|
3297
|
+
640 para cima. Sem o atributo (a marcação pura), a janela fica no meio, como sempre ficou. */
|
|
3298
|
+
.dialog[data-placement="top"] { top:var(--dialog-margin); translate:none; }
|
|
3299
|
+
.dialog[data-placement="bottom"] { top:auto; bottom:var(--dialog-margin); translate:none; }
|
|
3300
|
+
@media (max-width:639.98px) { .dialog[data-placement="auto"] { top:auto; bottom:var(--dialog-margin); translate:none; } }
|
|
2639
3301
|
/* size (B-03), decisão do Victor em 24/09/2026: as quatro larguras da referência — as do
|
|
2640
3302
|
pacote de estilos dela, 20/24/28/32rem = 320/384/448/512 — mais 1024
|
|
2641
3303
|
(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
3304
|
era 560. */
|
|
2643
|
-
.dialog-xs {
|
|
2644
|
-
.dialog-sm {
|
|
2645
|
-
.dialog-lg {
|
|
2646
|
-
.dialog-xl {
|
|
2647
|
-
.dialog-full {
|
|
2648
|
-
|
|
3305
|
+
.dialog-xs { --dialog-w:20rem; }
|
|
3306
|
+
.dialog-sm { --dialog-w:24rem; }
|
|
3307
|
+
.dialog-lg { --dialog-w:32rem; }
|
|
3308
|
+
.dialog-xl { --dialog-w:var(--breakpoint-lg); }
|
|
3309
|
+
.dialog-full { --dialog-w:100vw; block-size:calc(100dvh - 2 * var(--dialog-margin)); }
|
|
3310
|
+
/* As partes, as mesmas no Dialog, no ConfirmDialog e no Drawer. O corpo guarda, dos lados e em cima e
|
|
3311
|
+
embaixo, o espaço do anel de foco (a largura e o afastamento dele): é ele que rola, e o que rola corta
|
|
3312
|
+
o anel de quem encosta na borda — a referência faz a mesma conta, com 3. */
|
|
3313
|
+
/* 16 da borda de FORA, como a dela (que não tem borda): o absoluto conta de dentro da borda de 1. */
|
|
3314
|
+
.dialog-close { position:absolute; inset-block-start:calc(var(--space-4) - var(--border-width)); inset-inline-end:calc(var(--space-4) - var(--border-width)); }
|
|
3315
|
+
.dialog-header { display:flex; flex-direction:column; align-items:flex-start; gap:var(--space-3); }
|
|
3316
|
+
.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; }
|
|
3317
|
+
.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); }
|
|
3318
|
+
.dialog-icon > .icon { --step-icon:var(--icon-md); }
|
|
3319
|
+
.dialog-icon-brand { background:color-mix(in oklab,var(--primary) 10%,var(--secondary)); color:var(--primary-emphasis); }
|
|
3320
|
+
.dialog-icon-info { background:var(--info-bg); color:var(--info-400); }
|
|
3321
|
+
.dialog-icon-success { background:var(--success-bg); color:var(--success-400); }
|
|
3322
|
+
.dialog-icon-warning { background:var(--warning-bg); color:var(--warning-400); }
|
|
3323
|
+
.dialog-icon-danger { background:var(--danger-bg); color:var(--danger-400); }
|
|
3324
|
+
.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); }
|
|
3325
|
+
.dialog-header + .dialog-body { margin-block-start:calc(var(--space-2) - var(--dialog-ring)); }
|
|
3326
|
+
.dialog-footer { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:var(--space-2); }
|
|
3327
|
+
.dialog-body + .dialog-footer { margin-block-start:calc(var(--space-5) - var(--dialog-ring)); }
|
|
3328
|
+
.dialog-header + .dialog-footer { margin-block-start:var(--space-5); }
|
|
2649
3329
|
/* O ConfirmDialog é o MESMO `.dialog` — não nasce uma segunda superfície flutuante, que seria a
|
|
2650
3330
|
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); }
|
|
3331
|
+
estreita (uma frase e dois botões não precisam da largura do Dialog), com o destrutivo por último no
|
|
3332
|
+
rodapé: a ordem visual é cancelar → agir, e é onde as quatro referências batem. */
|
|
3333
|
+
.dialog-confirm { --dialog-w:26.25rem; }
|
|
2655
3334
|
.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
|
-
.
|
|
3335
|
+
/* DRAWER (0.32.0): a gaveta da referência nos quatro lados, no motor de gaveta do Base UI, que arrasta
|
|
3336
|
+
para fechar. Laterais de 320 (384 de 640 para cima, nunca mais que 85% da tela); a de cima e a de
|
|
3337
|
+
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
|
|
3338
|
+
dentro nas laterais (a dela é quadrada) e o 32 da folha na de cima e na de baixo (ADR-0058). Enquanto
|
|
3339
|
+
o dedo arrasta, a gaveta segue o dedo (as variáveis do motor) e o fundo clareia junto. */
|
|
3340
|
+
.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); }
|
|
3341
|
+
.drawer-backdrop[data-starting-style],.drawer-backdrop[data-ending-style] { opacity:0; }
|
|
3342
|
+
.drawer-backdrop[data-swiping] { transition-duration:0ms; }
|
|
3343
|
+
.drawer-viewport { position:fixed; inset:0; z-index:var(--z-drawer); }
|
|
3344
|
+
.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); }
|
|
3345
|
+
.drawer[data-swiping] { transition-duration:0ms; }
|
|
3346
|
+
.drawer[data-ending-style] { transition-duration:calc(var(--drawer-swipe-strength,1) * var(--duration-slow)); }
|
|
3347
|
+
.drawer-left,.drawer-right { top:0; bottom:0; inline-size:min(20rem,85vw); transform:translateX(var(--drawer-swipe-movement-x,0px)); }
|
|
3348
|
+
@media (min-width:640px) { .drawer-left,.drawer-right { inline-size:min(24rem,85vw); } }
|
|
3349
|
+
.drawer-right { right:0; border-left-width:var(--border-width); border-radius:var(--radius-card) 0 0 var(--radius-card); }
|
|
3350
|
+
.drawer-left { left:0; border-right-width:var(--border-width); border-radius:0 var(--radius-card) var(--radius-card) 0; }
|
|
3351
|
+
.drawer-top,.drawer-bottom { left:0; right:0; max-block-size:85dvh; transform:translateY(var(--drawer-swipe-movement-y,0px)); }
|
|
3352
|
+
.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)); }
|
|
3353
|
+
.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); }
|
|
3354
|
+
.drawer-right[data-starting-style],.drawer-right[data-ending-style] { transform:translateX(100%); }
|
|
3355
|
+
.drawer-left[data-starting-style],.drawer-left[data-ending-style] { transform:translateX(-100%); }
|
|
3356
|
+
.drawer-bottom[data-starting-style],.drawer-bottom[data-ending-style] { transform:translateY(100%); }
|
|
3357
|
+
.drawer-top[data-starting-style],.drawer-top[data-ending-style] { transform:translateY(-100%); }
|
|
3358
|
+
.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); }
|
|
3359
|
+
.drawer-bottom > .drawer-handle { margin-block-end:var(--space-2); }
|
|
3360
|
+
.drawer-top > .drawer-handle { margin-block-start:var(--space-2); }
|
|
3361
|
+
/* TOAST (0.32.0): o aviso da referência, lido no CSS e no código publicados dela, sobre a pilha do
|
|
3362
|
+
motor (as variáveis `--toast-*` do Base UI). Os avisos moram todos no mesmo lugar: o da frente
|
|
3363
|
+
inteiro, os de trás 12 acima e 5% menores a cada um, com o conteúdo apagado; passar o mouse ou o
|
|
3364
|
+
foco abre a pilha, com 12 entre eles. Embaixo no meio por padrão (o dela), 460 de largura de 640
|
|
3365
|
+
para cima e a tela menos 16 de cada lado no celular. `--toast-dir` é o sentido da pilha: para cima
|
|
3366
|
+
quando ela mora embaixo, para baixo quando mora em cima. */
|
|
3367
|
+
.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; }
|
|
3368
|
+
.toast-stack:is(.toast-stack-top,.toast-stack-top-start,.toast-stack-top-end) { --toast-dir:1; inset-block:var(--space-4) auto; }
|
|
3369
|
+
.toast-stack:is(.toast-stack-bottom-start,.toast-stack-top-start) { inset-inline:var(--space-4) auto; margin-inline:0; }
|
|
3370
|
+
.toast-stack:is(.toast-stack-bottom-end,.toast-stack-top-end) { inset-inline:auto var(--space-4); margin-inline:0; }
|
|
3371
|
+
.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); }
|
|
3372
|
+
.toast-stack:is(.toast-stack-top,.toast-stack-top-start,.toast-stack-top-end) .toast { top:0; bottom:auto; transform-origin:50% 0; }
|
|
3373
|
+
.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)))); }
|
|
3374
|
+
.toast[data-starting-style],.toast[data-ending-style] { transform:translateY(calc(-1 * var(--toast-dir) * 150%)); }
|
|
3375
|
+
.toast[data-limited],.toast[data-ending-style] { opacity:0; }
|
|
3376
|
+
.toast[data-ending-style][data-swipe-direction="right"] { transform:translateX(calc(var(--toast-swipe-movement-x,0px) + 150%)); }
|
|
3377
|
+
.toast[data-ending-style][data-swipe-direction="up"] { transform:translateY(calc(var(--toast-swipe-movement-y,0px) - 150%)); }
|
|
3378
|
+
.toast[data-ending-style][data-swipe-direction="down"] { transform:translateY(calc(var(--toast-swipe-movement-y,0px) + 150%)); }
|
|
3379
|
+
/* A ponte entre dois avisos abertos: sem ela, o mouse que passa pelo vão de 12 sai da pilha e ela fecha. */
|
|
3380
|
+
.toast::after { content:""; position:absolute; inset-inline:0; top:100%; block-size:calc(var(--toast-gap) + var(--border-width)); }
|
|
3381
|
+
.toast-stack:is(.toast-stack-top,.toast-stack-top-start,.toast-stack-top-end) .toast::after { top:auto; bottom:100%; }
|
|
3382
|
+
.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); }
|
|
3383
|
+
.toast-content[data-behind] { opacity:0; }
|
|
3384
|
+
.toast-content[data-expanded] { opacity:1; }
|
|
3385
|
+
.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); }
|
|
3386
|
+
.toast-indicator > .icon { --step-icon:var(--icon-sm); }
|
|
3387
|
+
.toast-text { display:flex; flex:1 1 0; flex-direction:column; align-self:center; min-inline-size:0; }
|
|
3388
|
+
.toast-title { color:var(--popover-foreground); font-size:var(--text-sm); font-weight:var(--weight-medium); line-height:var(--space-5); }
|
|
3389
|
+
.toast-description { margin:0; color:var(--muted-foreground); font-size:var(--text-sm); line-height:var(--space-5); }
|
|
3390
|
+
.toast-action { flex:none; align-self:center; }
|
|
3391
|
+
/* No celular a ação desce para baixo do texto, alinhada com ele — como a dela. */
|
|
3392
|
+
@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)); } }
|
|
3393
|
+
/* As faces do tipo (desde 16/08/2026 elas pintam; o check 18 não enxerga classe por template). Em
|
|
3394
|
+
0.32.0 o tipo deixou de tingir o fundo e a borda: pinta o ícone e o título, no par `-400` da
|
|
3395
|
+
ADR-0061, como o aviso da referência. */
|
|
3396
|
+
.toast-info :is(.toast-indicator,.toast-title) { color:var(--info-400); }
|
|
3397
|
+
.toast-success :is(.toast-indicator,.toast-title) { color:var(--success-400); }
|
|
3398
|
+
.toast-warning :is(.toast-indicator,.toast-title) { color:var(--warning-400); }
|
|
3399
|
+
.toast-danger :is(.toast-indicator,.toast-title) { color:var(--danger-400); }
|
|
3400
|
+
/* O X do aviso: o `CloseButton` de 20 com o X de 12, na quina, com borda. Aparece com o mouse ou o
|
|
3401
|
+
foco no aviso da frente (ou na pilha aberta); no toque, fica sempre à vista. */
|
|
3402
|
+
.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); }
|
|
3403
|
+
.toast-close.close-button .icon { --step-icon:var(--space-3); }
|
|
3404
|
+
:is(.toast[data-expanded],.toast:has(> .toast-content:not([data-behind]))):is(:hover,:focus-within) > .toast-close { opacity:1; pointer-events:auto; }
|
|
3405
|
+
@media (hover:none) { :is(.toast[data-expanded],.toast:has(> .toast-content:not([data-behind]))) > .toast-close { opacity:1; pointer-events:auto; } }
|
|
3406
|
+
@media (pointer:coarse) { .toast-close.close-button::before { inset:calc((var(--space-5) - var(--target-min)) / 2); } }
|
|
2671
3407
|
/* GAR-14 (0.28.0): o aviso do `Button share`, preso ao botão — "Link copiado", ou o erro com o link à
|
|
2672
3408
|
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
3409
|
do aviso de sempre. O ícone é desenho de máscara, como a seta do `KPI`: a mesma marcação serve ao
|
|
@@ -2681,6 +3417,12 @@ img,svg { display:block; }
|
|
|
2681
3417
|
.toast-anchored-stack { display:flex; flex-direction:column; align-items:flex-start; gap:var(--space-2); inline-size:max-content; max-inline-size:calc(100vw - 2 * var(--space-4)); }
|
|
2682
3418
|
.toast-anchored-link { inline-size:100%; }
|
|
2683
3419
|
.toast-anchored-fixed { position:fixed; z-index:var(--z-toast); }
|
|
3420
|
+
/* A CAMADA DAS JANELINHAS mora no POSICIONADOR (15/10/2026). Ela estava na caixa de dentro (`.popover`, `.menu`,
|
|
3421
|
+
`.tooltip`…), que é estática — e `z-index` em caixa estática não vale. Quem flutua é o posicionador do motor (o
|
|
3422
|
+
`absolute`), e sem camada ele ficava por baixo de qualquer peça posicionada com camada: o topo fixo do site (20)
|
|
3423
|
+
cortava a borda de cima da escolha de tema (o Victor viu: "a caixa dos temas continua cortando"). Agora todo
|
|
3424
|
+
posicionador leva a classe `positioner`, na camada que as caixas já pediam. */
|
|
3425
|
+
.positioner { z-index:var(--z-modal); }
|
|
2684
3426
|
.toast-anchored-positioner { z-index:var(--z-toast); }
|
|
2685
3427
|
/* CommandPaletteShell (Fase 11, achado A13). A superfície já existia aqui sob o nome
|
|
2686
3428
|
`.command` — e `.command` é chrome da página de docs manual: nenhum componente React a
|
|
@@ -2692,8 +3434,27 @@ img,svg { display:block; }
|
|
|
2692
3434
|
.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
3435
|
.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
3436
|
/* 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
|
-
|
|
3437
|
+
/* 0.32.0, a dica da referência: recheio de 8, letra de 12/16, até 320 de largura, o fundo das janelas
|
|
3438
|
+
(era o fundo afundado), e a palavra longa quebra onde precisar. O canto continua o 10 da Aurea (o
|
|
3439
|
+
dela é 12, que a nossa escala não tem). Entra crescendo de 0,9 e sai encolhendo; pelo teclado, e
|
|
3440
|
+
quando passa de uma dica para a vizinha, entra sem animação (`data-instant` do motor). */
|
|
3441
|
+
.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); }
|
|
3442
|
+
.tooltip[data-starting-style],.tooltip[data-ending-style],.popover[data-starting-style],.popover[data-ending-style] { opacity:0; scale:.9; }
|
|
3443
|
+
.tooltip[data-ending-style],.popover[data-ending-style] { transition-duration:var(--duration-fast); }
|
|
3444
|
+
.tooltip[data-instant] { transition:none; }
|
|
3445
|
+
.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); }
|
|
3446
|
+
.popover-title { font-weight:var(--weight-medium); }
|
|
3447
|
+
/* A SETA (0.32.0): o desenho é nosso — uma curva de 12 × 6 —, com o fundo da janela e a linha da borda,
|
|
3448
|
+
e ela entra 1 por cima da borda da janela para a linha dar a volta sem emenda. O motor põe a seta
|
|
3449
|
+
no ponto certo do lado; aqui só se diz em que lado ela encosta e para onde aponta. */
|
|
3450
|
+
.overlay-arrow { display:flex; inline-size:var(--space-3); block-size:var(--space-3); }
|
|
3451
|
+
.overlay-arrow > svg { inline-size:100%; block-size:100%; overflow:visible; }
|
|
3452
|
+
.overlay-arrow-fill { fill:var(--popover); }
|
|
3453
|
+
.overlay-arrow-line { stroke:var(--border); stroke-width:var(--border-width); }
|
|
3454
|
+
.overlay-arrow[data-side="top"] { top:calc(100% - var(--border-width)); }
|
|
3455
|
+
.overlay-arrow[data-side="bottom"] { bottom:calc(100% - var(--border-width)); rotate:180deg; }
|
|
3456
|
+
.overlay-arrow[data-side="left"] { left:calc(100% - var(--border-width)); rotate:-90deg; }
|
|
3457
|
+
.overlay-arrow[data-side="right"] { right:calc(100% - var(--border-width)); rotate:90deg; }
|
|
2697
3458
|
/* `--menu-px` existe porque o RÓTULO DE GRUPO tem de alinhar com o texto dos itens, e o número
|
|
2698
3459
|
estava escrito duas vezes. Uma relação entre duas regras não se mantém repetindo a constante:
|
|
2699
3460
|
quem mudar o recuo do item mudaria o alinhamento do rótulo sem perceber. */
|
|
@@ -2723,8 +3484,18 @@ img,svg { display:block; }
|
|
|
2723
3484
|
DEPOIS do `.menu-item` de proposito: as duas regras tem a MESMA especificidade, entao quem vem
|
|
2724
3485
|
por ultimo vence. Escrita antes, a grade de tres colunas era apagada pelo `display:flex` do
|
|
2725
3486
|
menu — medido em 13/08/2026, e o gate de pele foi quem pegou. */
|
|
2726
|
-
.command-positioner { inline-size:var(--anchor-width); }
|
|
2727
3487
|
.command-list { max-height:min(50vh,360px); overflow-y:auto; overscroll-behavior:contain; }
|
|
3488
|
+
/* 0.32.0 — a lista mora DENTRO da caixa da paleta (o `inline` do motor), e não num popup: o `.menu`
|
|
3489
|
+
aqui não flutua — sem borda, sem sombra, sem largura própria; a caixa é a da paleta. */
|
|
3490
|
+
.command-palette .command-list { position:static; z-index:auto; min-width:0; max-width:none; border:0; box-shadow:none; padding:0; background:transparent; }
|
|
3491
|
+
/* O título do grupo (DOC-06) = o `Header` da seção da lista da referência: 12, peso médio,
|
|
3492
|
+
esmaecido, sem maiúsculas; 6 em cima e 4 embaixo; alinhado ao texto do item (`--menu-px`). */
|
|
3493
|
+
.command-group + .command-group { margin-block-start:var(--space-1); }
|
|
3494
|
+
.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); }
|
|
3495
|
+
/* A linha de atalhos (DOC-07): a tecla da referência (o `Kbd`) com o que ela faz, 12 esmaecido,
|
|
3496
|
+
separada da lista por um fio. */
|
|
3497
|
+
.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); }
|
|
3498
|
+
.command-shortcuts > span { display:inline-flex; align-items:center; gap:var(--space-1); }
|
|
2728
3499
|
.command-item { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:var(--space-3); align-items:center; }
|
|
2729
3500
|
.command-item-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2730
3501
|
|
|
@@ -2777,6 +3548,19 @@ img,svg { display:block; }
|
|
|
2777
3548
|
centralizado; e o valor longo termina em "…" em vez de passar por baixo da seta. */
|
|
2778
3549
|
.select-trigger { display:flex; align-items:center; text-align:start; cursor:pointer; }
|
|
2779
3550
|
.select-trigger:disabled,.select-trigger[data-disabled] { cursor:not-allowed; }
|
|
3551
|
+
/* O GATILHO DO `DatePicker` (0.32.0, ADR-0068) é o campo do `Select`, com o calendário no lugar da seta:
|
|
3552
|
+
sem a seta desenhada no fundo, o recheio do fim volta ao do lado de dentro, e o ícone vai no fim. */
|
|
3553
|
+
/* 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
|
|
3554
|
+
do `.select` (`[data-theme="light"] .select:where(…)`, mais acima) também tem 0,2,0 e repintava a seta por cima do
|
|
3555
|
+
calendário — visto pelo Victor em 13/10/2026. Empate de força: vale a que vem depois, que é esta. */
|
|
3556
|
+
.date-picker-trigger { gap:var(--space-2); padding-inline-end:var(--step-field-px,var(--space-3)); }
|
|
3557
|
+
.select.date-picker-trigger { background-image:none; }
|
|
3558
|
+
.date-picker-trigger > .icon { flex:none; color:var(--muted-foreground); }
|
|
3559
|
+
/* A janela abraça o calendário (o `.popover` tem um piso de largura para texto, e aqui não há texto). E é UMA
|
|
3560
|
+
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
|
|
3561
|
+
calendário de dentro perde a moldura própria — antes saía caixa dentro de caixa (visto em 13/10/2026). */
|
|
3562
|
+
.date-picker-popover { min-width:0; padding:var(--space-3); }
|
|
3563
|
+
.date-picker-popover > .calendar { padding:0; border:0; border-radius:0; background:transparent; }
|
|
2780
3564
|
.select-value { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2781
3565
|
.select-value[data-placeholder] { color:var(--muted-foreground); }
|
|
2782
3566
|
.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; }
|
|
@@ -2810,7 +3594,9 @@ img,svg { display:block; }
|
|
|
2810
3594
|
tamanho em vez de ser paga. Paga aqui, com o mesmo respiro entre seções que o `.menu-group`
|
|
2811
3595
|
usa, pelo mesmo `+`: a primeira seção encosta no topo do popup como qualquer item, e a folga
|
|
2812
3596
|
só existe ENTRE seções — margem no bloco deixaria sobra solta no fim da lista. */
|
|
2813
|
-
|
|
3597
|
+
/* E a linha entre elas (15/10/2026), a mesma da `ListBox`: 4, a linha, 4 — o `Select` com grupos e os dois `Combobox`. */
|
|
3598
|
+
.combobox-section + .combobox-section { margin-block-start:var(--space-1); }
|
|
3599
|
+
.combobox-section + .combobox-section::before { content:""; display:block; border-block-start:var(--border-width) solid var(--border); margin:0 var(--space-2) var(--space-1); }
|
|
2814
3600
|
/* FileInput / DropZone (Fase 4) — só a UI de entrada; upload real é a Fase 5.
|
|
2815
3601
|
A zona é um <label> em volta do <input> nativo: clique/foco/teclado de graça,
|
|
2816
3602
|
o arrastar-soltar é reforço. Espaçamento novo tokenizado; superfície = card. */
|
|
@@ -2900,7 +3686,7 @@ img,svg { display:block; }
|
|
|
2900
3686
|
(`.tree-label` não quebra), então a cápsula não deforma. */
|
|
2901
3687
|
.tree, .tree-group { margin:0; padding:0; list-style:none; }
|
|
2902
3688
|
.tree-item { outline:none; }
|
|
2903
|
-
.tree-node { display:
|
|
3689
|
+
.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
3690
|
.tree-node:hover { background:var(--surface-3); }
|
|
2905
3691
|
.tree-item:focus-visible > .tree-node { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
2906
3692
|
.tree-node[data-selected] { background:color-mix(in srgb,var(--primary) 14%,transparent); }
|
|
@@ -2913,7 +3699,17 @@ img,svg { display:block; }
|
|
|
2913
3699
|
.tree-twist-rtl { rotate:180deg; }
|
|
2914
3700
|
.tree-item[aria-expanded="true"] > .tree-node > .tree-twist { rotate:90deg; }
|
|
2915
3701
|
.tree-indent { flex:none; width:1rem; }
|
|
2916
|
-
|
|
3702
|
+
/* MNT-23 (12/10/2026): a árvore ALARGAVA A PÁGINA. O rótulo não quebra linha, e numa linha `flex` a
|
|
3703
|
+
largura mínima da árvore era o rótulo inteiro: numa coluna `1fr` de grade, num filho `flex: 1` ou num
|
|
3704
|
+
div dentro deles, ela empurrava a caixa (medido: 360 → 820). A linha é uma GRADE, e a trilha do
|
|
3705
|
+
rótulo é `minmax(0,1fr)`: ela pede zero de largura mínima e, quando há espaço (um painel que se
|
|
3706
|
+
ajusta ao conteúdo), mostra o rótulo inteiro — largura 0 no rótulo resolveria só a primeira metade.
|
|
3707
|
+
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
|
|
3708
|
+
ícone e do rótulo: sem ícone, a coluna dele fica vazia e não sobra vão dobrado. Quem cobra:
|
|
3709
|
+
`tests/visual/rede3.spec.ts`. */
|
|
3710
|
+
.tree-node > .tree-twist, .tree-node > .tree-indent { grid-column:1; }
|
|
3711
|
+
.tree-node > .icon:not(.tree-twist) { grid-column:2; margin-inline-start:var(--space-2); }
|
|
3712
|
+
.tree-label { grid-column:3; margin-inline-start:var(--space-2); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
2917
3713
|
|
|
2918
3714
|
/* NotificationCenter (Fase 4) — compõe o .popover; aqui só o gatilho com count,
|
|
2919
3715
|
o cabeçalho e as linhas do feed. Espaço novo tokenizado; a linha usa radius-sm
|
|
@@ -2975,7 +3771,8 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
2975
3771
|
`height:auto` (o conteúdo já passa de --row-h, e altura em célula é mínimo),
|
|
2976
3772
|
`letter-spacing:normal` (o .input não herda o entreletras do cabeçalho) e
|
|
2977
3773
|
`line-height:0` no rótulo (o <label> vazio já não ocupa altura). */
|
|
2978
|
-
.datagrid-filters th { padding-block:var(--space-2);
|
|
3774
|
+
.table-wrap thead tr.datagrid-filters th { block-size:auto; padding-block:var(--space-2); vertical-align:top; }
|
|
3775
|
+
.table-wrap thead tr.datagrid-filters th::after { content:none; }
|
|
2979
3776
|
.datagrid-filters .field { gap:0; }
|
|
2980
3777
|
|
|
2981
3778
|
/* F6: cabeçalho fixo. A `.table-wrap` já é o contêiner de rolagem (overflow:auto),
|
|
@@ -2993,12 +3790,14 @@ th[aria-sort] .datagrid-sort-icon { color:var(--primary); }
|
|
|
2993
3790
|
seria trocar risco real por pureza de método. As outras três regras daqui foram
|
|
2994
3791
|
provadas. */
|
|
2995
3792
|
.datagrid-sticky thead th { position:sticky; inset-block-start:0; z-index:1; }
|
|
2996
|
-
.datagrid-sticky .datagrid-filters th { inset-block-start:var(--
|
|
3793
|
+
.datagrid-sticky .datagrid-filters th { inset-block-start:var(--table-head-h); }
|
|
2997
3794
|
|
|
2998
3795
|
/* F7: a alça de redimensionar. Fina, colada no fim da célula e da altura toda —
|
|
2999
3796
|
alvo estreito de propósito, porque largo demais rouba o clique do cabeçalho
|
|
3000
3797
|
ordenável que está ao lado. O `th` precisa de `position:relative` para ancorá-la. */
|
|
3001
3798
|
.datagrid thead th:has(> .datagrid-resizer) { position:relative; }
|
|
3799
|
+
/* A alça de largura toma o lugar do fio entre as colunas, como na referência. */
|
|
3800
|
+
.table-wrap thead th:has(> .datagrid-resizer)::after { content:none; }
|
|
3002
3801
|
.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
3802
|
.datagrid-resizer:hover, .datagrid-resizer:focus-visible { background:var(--primary); }
|
|
3004
3803
|
.datagrid-resizer:focus-visible { outline:var(--focus-width) solid var(--focus-strong); outline-offset:calc(-1 * var(--focus-width)); }
|
|
@@ -3273,15 +4072,31 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3273
4072
|
com camada, qualquer que seja a força do seletor. Medido na bancada da rodada 1: a fibra saía com
|
|
3274
4073
|
1 de espessura em vez de 6. A variável não tem rival na linha, então a nossa vale. O `stroke-width`
|
|
3275
4074
|
fica para os desenhos que são nossos (a amostra da legenda e o miolo do traço duplo). */
|
|
3276
|
-
.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); }
|
|
3277
|
-
.dependency-graph .graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2); }
|
|
3278
|
-
.dependency-graph .graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3); }
|
|
4075
|
+
.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); }
|
|
4076
|
+
.dependency-graph .graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2 * var(--graph-edge-scale,1)); }
|
|
4077
|
+
.dependency-graph .graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3 * var(--graph-edge-scale,1)); }
|
|
4078
|
+
/* MNT-26 (12/10/2026): a COR da linha é o ESTADO dela, o `status.tone` da linha, como o selo do nó (pedido
|
|
4079
|
+
do dono do app: "senti falta de cores"). A cor é a de LETRA e borda sobre a tela (o par `-400`,
|
|
4080
|
+
ADR-0061), e não o fundo cheio. Ela pinta a variável do motor no próprio traço — vence o alto contraste,
|
|
4081
|
+
que pinta a do mapa inteiro: a linha de cor continua de cor, e o traço fica grosso como o resto. A
|
|
4082
|
+
amostra da parte "Estado" da legenda usa a mesma classe, e a palavra ao lado dela é o que garante que a
|
|
4083
|
+
cor não fala sozinha; a amostra do TIPO da ligação não leva cor.
|
|
4084
|
+
A linha com cor tem o DOBRO da espessura (ordem do Victor, 13/10/2026: "pode engrossar a linha com cor").
|
|
4085
|
+
Medido no "caber na tela" (zoom 0,57): com 1 — e com 1,5 —, nenhum ponto do traço chegava à cor de
|
|
4086
|
+
verdade, e a linha verde parecia cinza; com 2, a cor aparece exata. As três espessuras dobram juntas
|
|
4087
|
+
(`--graph-edge-scale`), para a velocidade continuar legível entre as linhas com cor; o miolo do duplo
|
|
4088
|
+
leva a mesma classe e dobra junto. */
|
|
4089
|
+
.dependency-graph :is(.graph-edge-tone-info,.graph-edge-tone-success,.graph-edge-tone-warning,.graph-edge-tone-danger) { --graph-edge-scale:2; }
|
|
4090
|
+
.dependency-graph .graph-edge-tone-info { --xy-edge-stroke:var(--info-400); }
|
|
4091
|
+
.dependency-graph .graph-edge-tone-success { --xy-edge-stroke:var(--success-400); }
|
|
4092
|
+
.dependency-graph .graph-edge-tone-warning { --xy-edge-stroke:var(--warning-400); }
|
|
4093
|
+
.dependency-graph .graph-edge-tone-danger { --xy-edge-stroke:var(--danger-400); }
|
|
3279
4094
|
.dependency-graph .graph-edge-dashed { stroke-dasharray:var(--space-2) var(--space-1); }
|
|
3280
4095
|
.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; }
|
|
3281
4096
|
.dependency-graph .graph-edge-double { --xy-edge-stroke-width:calc(var(--graph-edge-w) * 3); stroke-width:calc(var(--graph-edge-w) * 3); }
|
|
3282
|
-
.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; }
|
|
3283
|
-
.graph-edge-double-core.graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2); }
|
|
3284
|
-
.graph-edge-double-core.graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3); }
|
|
4097
|
+
.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; }
|
|
4098
|
+
.graph-edge-double-core.graph-edge-thick { --graph-edge-w:calc(var(--graph-edge-base) * 2 * var(--graph-edge-scale,1)); }
|
|
4099
|
+
.graph-edge-double-core.graph-edge-heavy { --graph-edge-w:calc(var(--graph-edge-base) * 3 * var(--graph-edge-scale,1)); }
|
|
3285
4100
|
/* A pastilha do meio (marca, número, grupo) e o nome da porta na ponta são HTML sobre o desenho. */
|
|
3286
4101
|
.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; }
|
|
3287
4102
|
.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; }
|
|
@@ -3297,7 +4112,12 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3297
4112
|
/* Os botões de zoom, o minimapa e a legenda flutuam sobre o mapa, com a pele de cartão. */
|
|
3298
4113
|
.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); }
|
|
3299
4114
|
.graph-minimap { border:var(--border-width) solid var(--border); border-radius:var(--radius-md); overflow:hidden; }
|
|
3300
|
-
.graph-legend { display:grid; gap:var(--space-1); margin:0; padding:var(--space-2) var(--space-3);
|
|
4115
|
+
.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)); }
|
|
4116
|
+
/* Duas partes (12/10/2026): o tipo da ligação e o estado, cada uma com o título à vista; com uma parte só,
|
|
4117
|
+
a lista sozinha, como era. */
|
|
4118
|
+
.graph-legend ul { display:grid; gap:var(--space-1); margin:0; padding:0; list-style:none; }
|
|
4119
|
+
.graph-legend-title { margin:0; color:var(--muted-foreground); font-weight:var(--weight-medium); }
|
|
4120
|
+
.graph-legend ul + .graph-legend-title { margin-block-start:var(--space-2); }
|
|
3301
4121
|
.graph-legend li { display:flex; align-items:center; gap:var(--space-2); }
|
|
3302
4122
|
.graph-legend-sample { inline-size:var(--space-8); block-size:var(--space-2); overflow:visible; }
|
|
3303
4123
|
.graph-legend-sample .graph-edge,.graph-legend-sample .graph-edge-double-core { fill:none; }
|
|
@@ -3356,7 +4176,9 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3356
4176
|
/* OS RÓTULOS QUE SOMEM (MNT-12.5): o que encosta noutro, pela prioridade (o graph.tsx mede e marca),
|
|
3357
4177
|
e o texto das linhas inteiro quando a câmera está longe — a 60%, a letra viraria um risco. */
|
|
3358
4178
|
.dependency-graph [data-crowded],.dependency-graph[data-far] :is(.graph-edge-text,.graph-edge-end,.graph-edge-chip-text) { visibility:hidden; }
|
|
3359
|
-
.
|
|
4179
|
+
/* 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
|
|
4180
|
+
a CÉLULA — na linha, ele ficava por baixo delas. É o clarinho da Aurea. */
|
|
4181
|
+
.datagrid tbody tr[data-selected] > :is(td,th) { background:color-mix(in oklab,var(--primary) 10%,var(--card)); }
|
|
3360
4182
|
.datagrid-empty { padding:var(--space-6); color:var(--muted-foreground); text-align:center; }
|
|
3361
4183
|
|
|
3362
4184
|
/* ========================================================================== */
|
|
@@ -3377,11 +4199,29 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3377
4199
|
.pattern-toolbar .input-group { flex:1 1 180px; }
|
|
3378
4200
|
.media-library-row.active { border-color:var(--primary); }
|
|
3379
4201
|
/* Alvo de toque. `.tabs`/`.segmented` no lugar de `.tab`/`.segmented button`: agora a altura
|
|
3380
|
-
mora na cápsula, então é ela que precisa crescer — o filho estica atrás.
|
|
3381
|
-
|
|
4202
|
+
mora na cápsula, então é ela que precisa crescer — o filho estica atrás. O `CloseButton` fica de
|
|
4203
|
+
fora (0.32.0): o alvo dele é o `::before` de 44, e o círculo continua de 24, como o da referência. */
|
|
4204
|
+
@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); } }
|
|
3382
4205
|
@media (forced-colors:active) {
|
|
3383
4206
|
:focus-visible { outline:var(--focus-width) solid CanvasText; outline-offset:var(--focus-offset); box-shadow:none; }
|
|
3384
4207
|
.badge,.pattern-gallery button[aria-pressed="true"],.device-grid button[aria-pressed="true"] { border:1px solid CanvasText; }
|
|
4208
|
+
/* O glifo por máscara é FUNDO recortado, e aqui o navegador troca todo fundo pela cor da tela: o
|
|
4209
|
+
glifo sumia (medido em 12/10/2026: zero ponto de tinta nos cinco). Ele sai da troca e pinta com a
|
|
4210
|
+
cor do SISTEMA que o texto ao lado recebe — pelo nome, porque `inherit` aqui devolve a cor de
|
|
4211
|
+
antes da troca (medido: o amarelo do link e o branco do tema escuro, sobre a tela branca). O
|
|
4212
|
+
título do `Accordion` fica na cor de texto: sem isto, o Chromium o pintava na cor de link e o
|
|
4213
|
+
Firefox na de texto, e a seta não tinha como acompanhar os dois. Glifo novo por máscara entra
|
|
4214
|
+
nesta lista; quem cobra é `tests/visual/mascara-alto-contraste.spec.ts`. */
|
|
4215
|
+
:is(.topbar-menu-icon,.link-external,.kpi-trend-icon,.accordion-chevron,.toast-anchored-icon,.toc-label-icon) { forced-color-adjust:none; background:CanvasText; }
|
|
4216
|
+
.topbar-menu-icon { background:ButtonText; }
|
|
4217
|
+
.link-external { background:LinkText; opacity:1; }
|
|
4218
|
+
.accordion-item > summary { color:CanvasText; }
|
|
4219
|
+
/* A AMOSTRA DE COR (0.32.0, ADR-0069): a cor É o conteúdo dela — no `ColorSwatch`, nas amostras para escolher, no
|
|
4220
|
+
gatilho do `ColorPicker` e na frente do `ColorField`. Com a troca, viravam círculos brancos de contorno preto e o
|
|
4221
|
+
"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
|
|
4222
|
+
sistema. Quem cobra: `tests/visual/mascara-alto-contraste.spec.ts`. */
|
|
4223
|
+
:is(.color-swatch,.color-swatch-option) { forced-color-adjust:none; }
|
|
4224
|
+
.color-swatch-option:has(:focus-visible) { outline-color:CanvasText; }
|
|
3385
4225
|
}
|
|
3386
4226
|
|
|
3387
4227
|
|
|
@@ -3421,7 +4261,7 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3421
4261
|
nós sem as arestas quebraria o desenho;
|
|
3422
4262
|
- .drawer-left/.drawer-right prometem lado físico no nome (prop side). */
|
|
3423
4263
|
:dir(rtl) .select { background-position:12px 50%; }
|
|
3424
|
-
:dir(rtl) .switch input:checked + .switch-track:after { transform:translateX(-
|
|
4264
|
+
:dir(rtl) .switch input:checked + .switch-track:after { transform:translateX(calc(-1 * var(--switch-x))); }
|
|
3425
4265
|
|
|
3426
4266
|
/* BARRA DE ROLAGEM. A Aurea ESCONDIA a dela: `.sidebar` e `.toc` tinham `scrollbar-width:none`
|
|
3427
4267
|
mais `::-webkit-scrollbar{width:0}`. Região que rola sem barra visível não avisa que rola e
|
|
@@ -3437,12 +4277,33 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3437
4277
|
Ou seja: o par padrão cobre Firefox e Chrome e ainda não cobre o Safari da maioria; o caminho
|
|
3438
4278
|
webkit cobre Safari e Chrome. Juntos cobrem os três, e onde os dois valem o padrão ganha por
|
|
3439
4279
|
vir depois. Só cor e espessura — nada de desenhar seta ou canto. */
|
|
3440
|
-
.carousel-track,.code-block,.combobox-popup,.command-palette,.dialog,.drawer,.log-stream,.notification-list,.sidebar,.table-region,.table-wrap,.toc {
|
|
4280
|
+
.carousel-track,.code-block,.combobox-popup,.command-palette,.dialog,.dialog-body,.drawer,.log-stream,.notification-list,.sidebar,.table-region,.table-wrap,.toc {
|
|
3441
4281
|
scrollbar-width:thin; scrollbar-color:var(--border-strong) transparent;
|
|
3442
4282
|
}
|
|
3443
|
-
.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); }
|
|
3444
|
-
.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; }
|
|
3445
|
-
.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); }
|
|
4283
|
+
.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); }
|
|
4284
|
+
.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; }
|
|
4285
|
+
.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); }
|
|
4286
|
+
/* A LATERAL é a exceção (0.32.0; o Victor, 13/10/2026, olhando a da documentação da referência: a barra
|
|
4287
|
+
"só aparece se o mouse fica em cima do sidebar e ela é clarinha" — e, sobre o padrão, "pode alterar o
|
|
4288
|
+
atual para ser claro e sumir a rolagem"). A barra continua NATIVA e continua lá — a largura fina não
|
|
4289
|
+
muda, então nada pula quando ela aparece; parada, o polegar é transparente. Ela aparece:
|
|
4290
|
+
- com o ponteiro em cima da lateral (é quando quem usa mouse vai arrastá-la);
|
|
4291
|
+
- com o foco do teclado dentro dela (quem navega com Tab vê que a lista rola);
|
|
4292
|
+
- sempre, em tela sem ponteiro que paire (`hover: none`), onde o "em cima" não existe.
|
|
4293
|
+
A cor sai da escala da LATERAL, não da página: é o texto dela, esmaecido.
|
|
4294
|
+
O desenho de antes — a barra sempre à vista, na cor de borda forte — não saiu: é a variante
|
|
4295
|
+
`scrollbar="visible"` (`.sidebar-scrollbar-visible`), para quem precisa da barra o tempo todo. */
|
|
4296
|
+
.sidebar { scrollbar-color:transparent transparent; }
|
|
4297
|
+
.sidebar::-webkit-scrollbar-thumb { background:transparent; }
|
|
4298
|
+
.sidebar:is(:hover,:focus-within) { scrollbar-color:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent) transparent; }
|
|
4299
|
+
.sidebar:is(:hover,:focus-within)::-webkit-scrollbar-thumb { background:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent); }
|
|
4300
|
+
@media (hover: none) {
|
|
4301
|
+
.sidebar { scrollbar-color:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent) transparent; }
|
|
4302
|
+
.sidebar::-webkit-scrollbar-thumb { background:color-mix(in oklab, var(--sidebar-foreground) 45%, transparent); }
|
|
4303
|
+
}
|
|
4304
|
+
/* Duas classes, depois das de cima: ganha do "em cima" e do "sem ponteiro" com a mesma força, pela ordem. */
|
|
4305
|
+
.sidebar.sidebar-scrollbar-visible { scrollbar-color:var(--border-strong) transparent; }
|
|
4306
|
+
.sidebar.sidebar-scrollbar-visible::-webkit-scrollbar-thumb { background:var(--border-strong); }
|
|
3446
4307
|
|
|
3447
4308
|
/* ========================================================================== */
|
|
3448
4309
|
/* 99. EIXO RESPONSIVO — a infraestrutura do G-AXIS-04 */
|
|
@@ -3488,13 +4349,14 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3488
4349
|
@property --step-icon { syntax:"*"; inherits:false; }
|
|
3489
4350
|
@property --step-qr { syntax:"*"; inherits:false; }
|
|
3490
4351
|
@property --step-avatar-fs { syntax:"*"; inherits:false; }
|
|
4352
|
+
@property --step-avatar { syntax:"*"; inherits:false; }
|
|
3491
4353
|
|
|
3492
4354
|
/* o passo de escala, genérico: qualquer peça que leia `--step-*` obedece. `md` também tem
|
|
3493
4355
|
classe, porque um responsivo precisa poder dizer `md` como valor base. */
|
|
3494
4356
|
.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); }
|
|
3495
|
-
.size-sm { --step-h:var(--control-h-sm);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3496
|
-
.size-md { --step-h:var(--control-h-md);--step-fs:var(--text-sm);--step-gap:8px;--step-px:
|
|
3497
|
-
.size-lg { --step-h:var(--control-h-lg);--step-fs:var(--text-base);--step-gap:8px;--step-px:
|
|
4357
|
+
.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); }
|
|
4358
|
+
.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); }
|
|
4359
|
+
.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); }
|
|
3498
4360
|
.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); }
|
|
3499
4361
|
|
|
3500
4362
|
/* CONTÊINER NOMEADO. Sem nome, `@container` casa com o ancestral mais próximo que for contêiner
|
|
@@ -3503,19 +4365,19 @@ button.graph-node-body { cursor:pointer; }
|
|
|
3503
4365
|
.container-scope { container:aurea / inline-size; }
|
|
3504
4366
|
|
|
3505
4367
|
/* por VIEWPORT — a decisão depende do tamanho da APLICAÇÃO */
|
|
3506
|
-
@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:
|
|
3507
|
-
@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:
|
|
3508
|
-
@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:
|
|
3509
|
-
@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:
|
|
3510
|
-
@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:
|
|
3511
|
-
@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:
|
|
3512
|
-
@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:
|
|
4368
|
+
@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-3); } .vp-2xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-2xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-2xs\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4369
|
+
@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-3); } .vp-xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-xs\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4370
|
+
@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-3); } .vp-sm\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-sm\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-sm\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4371
|
+
@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-3); } .vp-md\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-md\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-md\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4372
|
+
@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-3); } .vp-lg\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-lg\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-lg\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4373
|
+
@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-3); } .vp-xl\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-xl\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-xl\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4374
|
+
@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-3); } .vp-2xl\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .vp-2xl\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .vp-2xl\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
3513
4375
|
|
|
3514
4376
|
/* por CONTAINER — o componente responde ao ESPAÇO EM QUE FOI COLOCADO */
|
|
3515
|
-
@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:
|
|
3516
|
-
@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:
|
|
3517
|
-
@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:
|
|
3518
|
-
@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:
|
|
3519
|
-
@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:
|
|
4377
|
+
@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-3); } .ct-2xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .ct-2xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .ct-2xs\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4378
|
+
@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-3); } .ct-xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .ct-xs\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .ct-xs\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4379
|
+
@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-3); } .ct-sm\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .ct-sm\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .ct-sm\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4380
|
+
@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-3); } .ct-md\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .ct-md\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .ct-md\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
4381
|
+
@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-3); } .ct-lg\:input-group-addon-inline.input-group-addon-end:where(:has(> .btn:last-child)) { padding-inline-end:var(--space-1); } .ct-lg\:input-group-addon-inline.input-group-addon-end:where(:has(> .kbd:last-child)) { padding-inline-end:var(--space-2); } .ct-lg\:input-group-addon-inline.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:0; } .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\:input-group-addon-block.input-group-addon-start + :is(.input,.select,.textarea) { padding-inline-start:var(--step-field-px,var(--space-3)); } .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; } }
|
|
3520
4382
|
/* <<< fim da camada responsiva >>> */
|
|
3521
4383
|
}
|