@aurea-uds/core 0.44.0 → 0.45.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.
Files changed (2) hide show
  1. package/dist/aurea.css +197 -80
  2. package/package.json +1 -1
package/dist/aurea.css CHANGED
@@ -4,7 +4,7 @@
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
- --brand-yellow-ink:#242424;
7
+ --brand-yellow-ink:#18181b;
8
8
  --brand-blue:#0246f1;
9
9
  --white:oklch(1 0 0);
10
10
  --black:oklch(0 0 0);
@@ -149,62 +149,62 @@
149
149
  --tracking-widest:0.12em;
150
150
  }
151
151
  [data-theme="dark"]{
152
- --background:#1f1f1f;
153
- --foreground:#ffffff;
154
- --card:#292929;
155
- --card-foreground:#ffffff;
156
- --popover:#292929;
157
- --popover-foreground:#ffffff;
152
+ --background:#09090b;
153
+ --foreground:#fafafa;
154
+ --card:#18181b;
155
+ --card-foreground:#fafafa;
156
+ --popover:#18181b;
157
+ --popover-foreground:#fafafa;
158
158
  --primary:var(--brand-yellow);
159
159
  --primary-foreground:var(--brand-yellow-ink);
160
160
  --link:var(--brand-yellow);
161
161
  --link-hover:var(--brand-yellow);
162
- --secondary:#333333;
163
- --secondary-foreground:#ffffff;
164
- --muted:#333333;
165
- --muted-foreground:#adadad;
166
- --accent:#333333;
167
- --accent-foreground:#ffffff;
162
+ --secondary:#27272a;
163
+ --secondary-foreground:#fafafa;
164
+ --muted:var(--secondary);
165
+ --muted-foreground:#a1a1aa;
166
+ --accent:var(--secondary);
167
+ --accent-foreground:#fafafa;
168
168
  --destructive:#c50f1f;
169
169
  --destructive-foreground:#ffffff;
170
- --border:#525252;
171
- --input:#525252;
172
- --ring:#666666;
173
- --chart-1:oklch(0.809 0.105 251.813);
174
- --chart-2:oklch(0.623 0.214 259.815);
175
- --chart-3:oklch(0.546 0.245 262.881);
176
- --chart-4:oklch(0.488 0.243 264.376);
177
- --chart-5:oklch(0.424 0.199 265.638);
178
- --sidebar:#292929;
179
- --sidebar-foreground:#ffffff;
170
+ --border:#2f2f35;
171
+ --input:#3f3f46;
172
+ --ring:#71717a;
173
+ --chart-1:#bbdbff;
174
+ --chart-2:#97bfff;
175
+ --chart-3:#76a4ff;
176
+ --chart-4:#5789ff;
177
+ --chart-5:#4371f2;
178
+ --sidebar:#18181b;
179
+ --sidebar-foreground:#fafafa;
180
180
  --sidebar-primary:var(--brand-yellow);
181
181
  --sidebar-primary-foreground:var(--brand-yellow-ink);
182
- --sidebar-accent:#333333;
183
- --sidebar-accent-foreground:#ffffff;
184
- --sidebar-border:#525252;
185
- --sidebar-ring:#666666;
182
+ --sidebar-accent:var(--secondary);
183
+ --sidebar-accent-foreground:#fafafa;
184
+ --sidebar-border:#2f2f35;
185
+ --sidebar-ring:#71717a;
186
186
  --surface-1:var(--card);
187
187
  --surface-2:var(--secondary);
188
188
  --surface-3:var(--muted);
189
- --surface-inset:#141414;
190
- --surface-hover:#383838;
189
+ --surface-inset:#050506;
190
+ --surface-hover:#27272a;
191
191
  --foreground-strong:var(--foreground);
192
- --subtle-foreground:#adadad;
193
- --border-strong:#adadad;
192
+ --subtle-foreground:#a1a1aa;
193
+ --border-strong:#a1a1aa;
194
194
  --field-bg:var(--muted);
195
195
  --overlay:oklch(0 0 0 / 0.5);
196
196
  --primary-hover:oklch(0.835 0.19 89);
197
197
  --primary-active:oklch(0.74 0.17 84);
198
- --secondary-hover:#3d3d3d;
199
- --segment:oklch(0.3964 0.01 285.93);
198
+ --secondary-hover:#303036;
199
+ --segment:#3f3f46;
200
200
  --focus:var(--primary);
201
201
  --focus-strong:var(--primary);
202
202
  --primary-emphasis:var(--primary);
203
203
  --primary-outline:var(--primary);
204
204
  --control-selected:var(--primary);
205
- --control-selected-foreground:var(--brand-yellow-ink);
205
+ --control-selected-foreground:#ffffff;
206
206
  --control-selected-dot:oklch(0.985 0 0);
207
- --primary-mark:var(--brand-yellow-foreground);
207
+ --primary-mark:var(--brand-yellow-ink);
208
208
  --selection:oklch(0.795 0.184 86.047 / 0.22);
209
209
  --success-bg:#052505;
210
210
  --warning-bg:#4a1e04;
@@ -237,66 +237,70 @@
237
237
  --info-foreground:#ffffff;
238
238
  --info-hover:#006cbf;
239
239
  --warning:#f7630c;
240
- --warning-foreground:#242424;
240
+ --warning-foreground:var(--brand-yellow-ink);
241
241
  --warning-hover:#de590b;
242
+ --input-strong:#646467;
243
+ --control-thumb:#ffffff;
244
+ --link-mark:rgba(0,0,0,0);
245
+ --link-underline:var(--primary);
242
246
  }
243
247
  [data-theme="light"]{
244
248
  --background:#f5f5f5;
245
- --foreground:#242424;
249
+ --foreground:#09090b;
246
250
  --card:#ffffff;
247
- --card-foreground:#242424;
251
+ --card-foreground:#09090b;
248
252
  --popover:#ffffff;
249
- --popover-foreground:#242424;
253
+ --popover-foreground:#09090b;
250
254
  --primary:var(--brand-yellow);
251
255
  --primary-foreground:var(--brand-yellow-ink);
252
- --link:var(--brand-blue);
253
- --link-hover:var(--brand-blue);
254
- --secondary:#ebebeb;
255
- --secondary-foreground:#242424;
256
+ --link:var(--foreground);
257
+ --link-hover:var(--foreground);
258
+ --secondary:#ebebed;
259
+ --secondary-foreground:#09090b;
256
260
  --muted:var(--secondary);
257
- --muted-foreground:#616161;
261
+ --muted-foreground:#5e5e65;
258
262
  --accent:var(--secondary);
259
- --accent-foreground:#242424;
263
+ --accent-foreground:#09090b;
260
264
  --destructive:#c50f1f;
261
265
  --destructive-foreground:#ffffff;
262
- --border:#e0e0e0;
263
- --input:#e0e0e0;
264
- --ring:#d1d1d1;
265
- --chart-1:oklch(0.809 0.105 251.813);
266
- --chart-2:oklch(0.623 0.214 259.815);
267
- --chart-3:oklch(0.546 0.245 262.881);
268
- --chart-4:oklch(0.488 0.243 264.376);
269
- --chart-5:oklch(0.424 0.199 265.638);
266
+ --border:#e4e4e7;
267
+ --input:#d4d4d8;
268
+ --ring:#8a8a93;
269
+ --chart-1:#4589d2;
270
+ --chart-2:#246cdf;
271
+ --chart-3:#114fda;
272
+ --chart-4:#0c37c4;
273
+ --chart-5:#0c24a3;
270
274
  --sidebar:var(--card);
271
- --sidebar-foreground:#242424;
275
+ --sidebar-foreground:#09090b;
272
276
  --sidebar-primary:var(--primary-emphasis);
273
277
  --sidebar-primary-foreground:var(--brand-yellow-ink);
274
278
  --sidebar-accent:var(--secondary);
275
- --sidebar-accent-foreground:#242424;
276
- --sidebar-border:#e0e0e0;
277
- --sidebar-ring:#d1d1d1;
279
+ --sidebar-accent-foreground:#09090b;
280
+ --sidebar-border:#e4e4e7;
281
+ --sidebar-ring:#8a8a93;
278
282
  --surface-1:var(--card);
279
283
  --surface-2:var(--secondary);
280
284
  --surface-3:var(--muted);
281
- --surface-inset:#f0f0f0;
282
- --surface-hover:#e6e6e6;
285
+ --surface-inset:#efeff1;
286
+ --surface-hover:#f4f4f5;
283
287
  --foreground-strong:var(--foreground);
284
- --subtle-foreground:#616161;
285
- --border-strong:#616161;
288
+ --subtle-foreground:#5e5e65;
289
+ --border-strong:#5e5e65;
286
290
  --field-bg:var(--muted);
287
291
  --overlay:oklch(0 0 0 / 0.4);
288
292
  --primary-hover:oklch(0.835 0.19 89);
289
293
  --primary-active:oklch(0.74 0.17 84);
290
- --secondary-hover:var(--surface-hover);
294
+ --secondary-hover:#e4e4e7;
291
295
  --segment:oklch(1 0 0);
292
- --focus:var(--primary);
296
+ --focus:#bd7000;
293
297
  --focus-strong:var(--foreground);
294
- --primary-emphasis:var(--brand-blue);
295
- --primary-outline:var(--brand-blue);
298
+ --primary-emphasis:var(--foreground);
299
+ --primary-outline:rgba(240,177,0,0.35);
296
300
  --control-selected:var(--brand-yellow);
297
- --control-selected-foreground:var(--brand-yellow-ink);
301
+ --control-selected-foreground:#ffffff;
298
302
  --control-selected-dot:oklch(0.985 0 0);
299
- --primary-mark:var(--brand-yellow-foreground);
303
+ --primary-mark:var(--brand-yellow-ink);
300
304
  --success-400:#0e700e;
301
305
  --warning-400:#8a3707;
302
306
  --danger-400:#b10e1c;
@@ -331,8 +335,13 @@
331
335
  --info-foreground:#ffffff;
332
336
  --info-hover:#006cbf;
333
337
  --warning:#f7630c;
334
- --warning-foreground:#242424;
338
+ --warning-foreground:var(--brand-yellow-ink);
335
339
  --warning-hover:#de590b;
340
+ --input-strong:#8d8d91;
341
+ --link-mark:rgba(240,177,0,0.45);
342
+ --link-underline:var(--primary);
343
+ --control-thumb:#ffffff;
344
+ --warning-500:#d07612;
336
345
  }
337
346
  [data-brand="lory"][data-theme="dark"],[data-brand="lory"] [data-theme="dark"]{
338
347
  --background:oklch(0.16 0.018 250);
@@ -398,6 +407,9 @@
398
407
  --warning-bg:oklch(0.34 0.07 80);
399
408
  --danger-bg:oklch(0.34 0.09 25);
400
409
  --info-bg:oklch(0.32 0.06 235);
410
+ --brand-yellow-ink:#242424;
411
+ --warning-foreground:#242424;
412
+ --control-thumb:var(--primary-mark);
401
413
  }
402
414
  [data-brand="lory"][data-theme="light"],[data-brand="lory"] [data-theme="light"]{
403
415
  --background:oklch(0.984 0.004 70);
@@ -464,6 +476,10 @@
464
476
  --info-bg:oklch(0.95 0.04 235);
465
477
  --link:oklch(0.52 0.106 86.047);
466
478
  --link-hover:oklch(0.44 0.106 86.047);
479
+ --brand-yellow-ink:#242424;
480
+ --warning-foreground:#242424;
481
+ --control-thumb:var(--primary-mark);
482
+ --warning-500:oklch(0.727 0.149 60);
467
483
  }
468
484
  [data-density="compact"]{
469
485
  --control-h-xs:1.5rem;
@@ -1661,7 +1677,9 @@ img,svg { display:block; }
1661
1677
  quatro níveis alternados (escuro > claro > escuro > claro) não são cobertos. Quem cobra:
1662
1678
  `tests/visual/tema-na-secao.spec.ts`, e o `tema-na-secao.test.tsx` reprova regra nova sem a
1663
1679
  guarda. */
1664
- [data-theme="light"] .eyebrow:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
1680
+ /* A mistura de 45% ficou SÓ na `lory` (ADR-0083, 26/10/2026): na Aurea, a letra de destaque do claro é o grafite —
1681
+ a regra fica na seção "A paleta da 1.0", no fim da folha. */
1682
+ [data-theme="light"] .eyebrow:where([data-brand="lory"],[data-brand="lory"] *):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
1665
1683
  .demo { min-width:0; padding:var(--card-pad); border:1px solid transparent; border-radius:var(--radius-card); background:var(--card); color:var(--card-foreground); box-shadow:none; }
1666
1684
 
1667
1685
  /* ========================================================================== */
@@ -2337,7 +2355,7 @@ img,svg { display:block; }
2337
2355
  mesma distância nos dois sentidos de escrita. */
2338
2356
  .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); }
2339
2357
  .switch-track { --switch-x:calc(var(--switch-h) * 2 - (var(--switch-h) - 2 * var(--space-05)) * 11 / 8 - 2 * var(--space-05)); }
2340
- .switch input:checked + .switch-track { background:var(--control-selected); border-color:transparent; } .switch input:checked + .switch-track:after { transform:translateX(var(--switch-x)); background:var(--primary-mark); }
2358
+ .switch input:checked + .switch-track { background:var(--control-selected); border-color:transparent; } .switch input:checked + .switch-track:after { transform:translateX(var(--switch-x)); background:var(--control-thumb); }
2341
2359
  /* DESATIVADO (lote 1, as travas, 20/10/2026 — o check 49 achou): o `<input>` é invisível e quem desenha é a marca,
2342
2360
  então o `disabled` chegava ao campo e nada mudava na tela. A peça inteira recua, marca e nome, como na referência
2343
2361
  (o estado de desativado dela vai na raiz do controle, a 0,5). Vale também para as opções de um grupo desativado. */
@@ -2381,7 +2399,7 @@ img,svg { display:block; }
2381
2399
  .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); }
2382
2400
  .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); }
2383
2401
  .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; }
2384
- .slider-thumb::after { content:""; inline-size:var(--space-6); block-size:var(--space-4); border-radius:var(--radius-full); background:var(--primary-mark); box-shadow:var(--shadow-sm); transition:scale var(--duration-fast) var(--ease-standard); }
2402
+ .slider-thumb::after { content:""; inline-size:var(--space-6); block-size:var(--space-4); border-radius:var(--radius-full); background:var(--control-thumb); box-shadow:var(--shadow-sm); transition:scale var(--duration-fast) var(--ease-standard); }
2385
2403
  .slider-thumb[data-dragging] { cursor:grabbing; }
2386
2404
  .slider-thumb[data-dragging]::after { scale:.9; }
2387
2405
  .slider-thumb:has(input:focus-visible) { outline:var(--focus-width) solid var(--focus-strong); outline-offset:var(--focus-offset); }
@@ -2476,7 +2494,9 @@ img,svg { display:block; }
2476
2494
  O fio é 2px (fração de pixel borra), inset 15px, e o amarelo entra a 75% — cheio ele
2477
2495
  grita mais que o próprio rótulo. No tema CLARO o amarelo puro como texto dá 1.6:1, longe
2478
2496
  dos 4.5:1 do AA, então o rótulo aprofunda com --foreground e segue âmbar. */
2479
- .is-selected,.btn-nav[aria-current]:not([aria-current="false"]),.btn[aria-pressed="true"],
2497
+ /* O BOTÃO LIGADO saiu desta linguagem na Aurea (ADR-0083, 26/10/2026): amarelo cheio, a letra do botão primário e
2498
+ sem fio — a regra fica na seção "A paleta da 1.0", no fim da folha. Aqui ele continua só na `lory`. */
2499
+ .is-selected,.btn-nav[aria-current]:not([aria-current="false"]),.btn[aria-pressed="true"]:where([data-brand="lory"],[data-brand="lory"] *),
2480
2500
  .segmented :is(button,a).active { --btn-bg:var(--secondary); --btn-fg:var(--primary); position:relative; background:var(--secondary); color:var(--primary); }
2481
2501
  /* A CÁPSULA ELEVADA que a regra acima promete, e que no trilho não se via (ADR-0059, 08/10/2026):
2482
2502
  o segmento aceso e a aba escolhida vivem sobre --muted, e --secondary dava 1:1 contra ele no
@@ -2489,8 +2509,8 @@ img,svg { display:block; }
2489
2509
  da marca; o da Aurea é o "clarinho" (o amarelo a 10%, a receita do `.badge-primary` que o Victor
2490
2510
  escolheu para a página atual da paginação), aqui sobre o cinza, para o grupo colado continuar uma
2491
2511
  cápsula só. A letra da marca e o fio continuam os do "selecionado". */
2492
- .btn.toggle[data-pressed] { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary)); background:var(--btn-bg); }
2493
- .btn.toggle[data-pressed]:hover:not(:disabled):not([aria-disabled="true"]) { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary-hover)); }
2512
+ .btn.toggle[data-pressed]:where([data-brand="lory"],[data-brand="lory"] *) { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary)); background:var(--btn-bg); }
2513
+ .btn.toggle[data-pressed]:hover:not(:disabled):not([aria-disabled="true"]):where([data-brand="lory"],[data-brand="lory"] *) { --btn-bg:color-mix(in oklab, var(--primary) 10%, var(--secondary-hover)); }
2494
2514
  /* O ATIVO DA NAV DA LATERAL sai da escala DELA, e não da página (20/08/2026, o Victor viu sob a
2495
2515
  marca `lory`). Ele dividia esta regra com o `.segmented`, que vive no conteúdo — e `--secondary`
2496
2516
  é quase branco no tema claro. Numa lateral escura isso desenhava uma pílula branca com texto
@@ -2511,7 +2531,7 @@ img,svg { display:block; }
2511
2531
  saíram com a mesma cor. Com o `:not` ela pesa (0,3,1) e só alcança quem está em repouso. */
2512
2532
  [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); }
2513
2533
  .is-selected::after,.btn-nav[aria-current]:not([aria-current="false"])::after,
2514
- .btn[aria-pressed="true"]:not(.btn-icon)::after,.segmented :is(button,a).active::after,.tabs-secondary .tab[data-active]::after,
2534
+ .btn[aria-pressed="true"]:not(.btn-icon):where([data-brand="lory"],[data-brand="lory"] *)::after,.segmented :is(button,a).active::after,.tabs-secondary .tab[data-active]::after,
2515
2535
  .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); }
2516
2536
  /* e o fio do ativo da lateral segue a marca DELA, pelo mesmo motivo da regra de cor acima. */
2517
2537
  .doc-nav a.active::after,.sidebar-item[aria-current]::after { background:var(--sidebar-current-line, color-mix(in oklab, var(--sidebar-primary) 75%, transparent)); }
@@ -2523,8 +2543,10 @@ img,svg { display:block; }
2523
2543
  Sobre o amarelo, a letra de destaque de DENTRO do item (o selo primário de contagem, um ícone de destaque) é a tinta do
2524
2544
  botão: o azul sobre o amarelo mede 3,49:1 — o axe da varredura achou, no "12" do exemplo da `Sidebar`. */
2525
2545
  [data-theme="light"] :is(.sidebar-item[aria-current],.doc-nav a.active):not(:where([data-brand],[data-brand] *,.sidebar[class*="sidebar-indicator-"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { --sidebar-current-line:transparent; --primary-emphasis:var(--primary-foreground); --sidebar-primary:var(--primary-foreground); background:var(--primary); color:var(--primary-foreground); }
2526
- [data-theme="light"] .is-selected:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-nav[aria-current]:not([aria-current="false"]):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
2527
- [data-theme="light"] .btn[aria-pressed="true"]:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .segmented :is(button,a).active:where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
2546
+ /* A mistura de 45% (o "marrom") ficou SÓ na `lory` (ADR-0083, 26/10/2026). Na Aurea, o escolhido do claro tem a letra
2547
+ grafite, e o botão ligado é amarelo — as duas regras ficam na seção "A paleta da 1.0", no fim da folha. */
2548
+ [data-theme="light"] .is-selected:where([data-brand="lory"],[data-brand="lory"] *):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .btn-nav[aria-current]:not([aria-current="false"]):where([data-brand="lory"],[data-brand="lory"] *):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
2549
+ [data-theme="light"] .btn[aria-pressed="true"]:where([data-brand="lory"],[data-brand="lory"] *):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),[data-theme="light"] .segmented :is(button,a).active:where([data-brand="lory"],[data-brand="lory"] *):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
2528
2550
  { --btn-fg:color-mix(in oklab, var(--primary) 45%, var(--foreground)); color:color-mix(in oklab, var(--primary) 45%, var(--foreground)); }
2529
2551
  /* A NAV DA LATERAL SAIU DESTA LISTA em 20/08/2026. O ajuste existe porque o amarelo puro não se lê
2530
2552
  sobre o claro — mas ele mistura o `--foreground` da PÁGINA, e o item da lateral não está sobre a
@@ -3182,14 +3204,21 @@ button.tag-main { cursor:pointer; }
3182
3204
  alinham por construção em vez de por número copiado. Saem junto os 24px de recuo e os 7px
3183
3205
  do trilho — dois px crus a menos na catraca do check 12. */
3184
3206
  .timeline { position:relative; display:flex; flex-direction:column; gap:var(--space-5); margin:0; padding:0; list-style:none; }
3185
- .timeline:before { content:""; position:absolute; inset-inline-start:calc(var(--space-3) / 2); inset-block:var(--space-2); width:1px; background:var(--border); }
3186
- .timeline > li { display:flex; align-items:flex-start; gap:var(--space-3); }
3207
+ /* O TRILHO POR BAIXO DOS PONTOS (ADR-0083, 27/10/2026, em todas as marcas — o Victor: o defeito "não tinha só na lory, no
3208
+ tema padrão da Aurea também"). Era um `::before` da lista inteira, posicionado, e o ponto não: o navegador pinta o
3209
+ posicionado por cima, e a linha passava por CIMA da bolinha; e ia até o fim da lista, sobrando depois do último ponto.
3210
+ Agora cada item desenha o trecho até o ponto seguinte, centrado no ponto, e o ponto fica por cima. A cor é a da linha
3211
+ (`--border`); a paleta da 1.0 a troca por `--input`, mais adiante, fora da lory. */
3212
+ .timeline > li { position:relative; display:flex; align-items:flex-start; gap:var(--space-3); }
3213
+ .timeline > li:not(:last-child)::before { content:""; position:absolute; inset-inline-start:calc(var(--space-3) / 2 - var(--border-width) / 2);
3214
+ inset-block-start:calc(var(--space-1) + var(--space-3)); inset-block-end:calc(-1 * (var(--space-5) + var(--space-1)));
3215
+ inline-size:var(--border-width); background:var(--border); }
3187
3216
  /* A coluna de conteúdo é uma PILHA, e não por estética: sem isso o item empilhava quando
3188
3217
  tinha descrição (o <p> é bloco) e colava título e horário na mesma linha quando não tinha —
3189
3218
  "Shipped14:20". Geometria de componente não depende do conteúdo (achados A2/A3). */
3190
3219
  .timeline > li > div { display:flex; flex-direction:column; gap:var(--space-05); min-width:0; }
3191
3220
  .timeline > li > div > p { margin:0; }
3192
- .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:none; }
3221
+ .timeline-dot { position:relative; z-index:1; 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:none; }
3193
3222
  /* ACCORDION (0.32.0) — o da referência, com o realce em CÁPSULA (decisão do Victor, 11/10/2026). Sem
3194
3223
  caixa em volta: um fio de 1 entre os itens, nenhum depois do último. A pergunta: 16 de todos os
3195
3224
  lados, 14 peso médio, a seta de 16 no FIM (esmaecida), que vira −180° ao abrir — o marcador do
@@ -4911,6 +4940,94 @@ button.graph-node-body { cursor:pointer; }
4911
4940
  .slider-color .slider-thumb,.color-area-thumb { background:var(--white); box-shadow:var(--shadow-md); }
4912
4941
  .slider-color .slider-thumb::after,.color-area-thumb::after { content:""; position:absolute; inset:calc(3 * var(--border-width)); inline-size:auto; block-size:auto; border-radius:var(--radius-full); 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(--color-area-thumb,var(--primary))); }
4913
4942
 
4943
+ /* ═══ A PALETA DA 1.0 — passo A (ADR-0083, 26/10/2026) ═══════════════════════════════════════════════════════════
4944
+ A proposta de cores que o Victor aprovou família por família em 25 e 26/10/2026: a base Zinco profundo, o destaque
4945
+ GRAFITE no claro (o amarelo vira fundo, traço ou indicador, nunca letra), o link com marca-texto, os campos brancos,
4946
+ as marcas brancas dentro dos controles, o botão ligado amarelo e a linha do tempo consertada. Os TOKENS mudaram na
4947
+ fonte (`aurea.tokens.json`); aqui ficam as REGRAS que mudam junto.
4948
+ A `lory` fica 100% como é hoje (decisão do Victor, 26/10/2026): os tokens dela foram congelados na fonte, e toda
4949
+ regra desta seção leva `:where(:not([data-brand="lory"],[data-brand="lory"] *))`, de força zero. Quem prova que
4950
+ ela sai igual: `tests/visual/lory-congelada.spec.ts`. */
4951
+
4952
+ /* O ESCOLHIDO do claro tem a letra grafite (era a mistura de 45%, que dava marrom): a aba, o segmento aceso, o item de
4953
+ navegação atual e o rótulo `.eyebrow`. O fio amarelo de baixo continua. No escuro, a letra continua o amarelo. */
4954
+ [data-theme="light"] .is-selected:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
4955
+ [data-theme="light"] .eyebrow:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
4956
+ [data-theme="light"] .btn-nav[aria-current]:not([aria-current="false"]):where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
4957
+ [data-theme="light"] .segmented :is(button,a).active:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *)
4958
+ { --btn-fg:var(--foreground); color:var(--foreground); }
4959
+
4960
+ /* O BOTÃO LIGADO (Toggle, ToggleGroup, ToolbarButton): amarelo cheio com a letra do botão primário, nos dois temas, sem
4961
+ o fio de baixo e sem o fundo "clarinho". As cores passam por `--pressed-*` no próprio botão, para uma faixa com outro
4962
+ `data-theme` acertar e para os outros estilos aprovados (o cinza e o grafite) só trocarem as três variáveis. */
4963
+ :is(.btn[aria-pressed="true"],.btn.toggle[data-pressed]):where(:not([data-brand="lory"],[data-brand="lory"] *)) {
4964
+ --pressed-bg:var(--primary); --pressed-bg-hover:var(--primary-hover); --pressed-fg:var(--primary-foreground);
4965
+ --btn-bg:var(--pressed-bg); --btn-fg:var(--pressed-fg); background:var(--pressed-bg); color:var(--pressed-fg); }
4966
+ :is(.btn[aria-pressed="true"],.btn.toggle[data-pressed]):hover:not(:disabled):not([aria-disabled="true"]):where(:not([data-brand="lory"],[data-brand="lory"] *)) {
4967
+ --btn-bg:var(--pressed-bg-hover); background:var(--pressed-bg-hover); }
4968
+
4969
+ /* O LINK separa-se do texto por mais que a cor (WCAG 1.4.1): no claro a letra é o grafite e no escuro o amarelo — a
4970
+ mesma cor do texto em volta, ou quase (1,91:1 no escuro). Vale para o link sem classe, para o componente `Link` e
4971
+ para o texto no tom link. A NAVEGAÇÃO fica de fora — a trilha, todo link dentro de `<nav>` e o segmento que é link:
4972
+ o marca-texto é para o link no meio do texto (medido no site em 27/10/2026: dos 596 links sem classe, 588 eram a
4973
+ chave Web | Native e 6 a trilha; só 2 estavam na prosa).
4974
+ A base, nos dois temas (e a VARIAÇÃO do claro): o sublinhado amarelo de 2 com 3 de afastamento. */
4975
+ :is(a:not([class]),.link,.typography-tone-link):not(.breadcrumb a,nav a,.segmented a):where(:not([data-brand="lory"],[data-brand="lory"] *)) {
4976
+ color:var(--link); text-decoration-line:underline; text-decoration-color:var(--link-underline);
4977
+ text-decoration-thickness:calc(2 * var(--border-width)); text-underline-offset:calc(3 * var(--border-width)); }
4978
+ /* O PADRÃO do claro: o MARCA-TEXTO — a faixa amarela a 45% atrás da metade de baixo das letras (o texto sobre ela mede
4979
+ 14,79:1); no ponteiro, ela cobre a palavra inteira. É um sublinhado grosso que sobe para trás das letras, e não um
4980
+ fundo: assim acompanha só o texto, mesmo quando o elemento ocupa a linha inteira ou o link quebra em várias linhas.
4981
+ As medidas são PROPORÇÕES DA LETRA (em), medidas na bancada de 26/10/2026, e crescem com ela; provadas nos três
4982
+ navegadores em 27/10/2026. A variação (o sublinhado) se pede com `data-link="underline"` no próprio link, num
4983
+ contêiner ou no `<html>` — um atributo, e não uma classe: o core só tem classe que um componente produz. */
4984
+ [data-theme="light"] :is(a:not([class]),.link,.typography-tone-link):not(.breadcrumb a,nav a,.segmented a):not([data-link="underline"],[data-link="underline"] *):where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
4985
+ text-decoration-color:var(--link-mark); text-decoration-thickness:.5em; text-underline-offset:-.32em; text-decoration-skip-ink:none;
4986
+ transition:text-decoration-thickness var(--duration-fast) var(--ease-standard),text-underline-offset var(--duration-fast) var(--ease-standard); }
4987
+ [data-theme="light"] :is(a:not([class]),.link,.typography-tone-link):not(.breadcrumb a,nav a,.segmented a):not([data-link="underline"],[data-link="underline"] *):hover:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
4988
+ text-decoration-thickness:1.25em; text-underline-offset:-1.02em; }
4989
+ @media (prefers-reduced-motion:reduce) {
4990
+ [data-theme="light"] :is(a:not([class]),.link,.typography-tone-link):where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) { transition:none; }
4991
+ }
4992
+
4993
+ /* As TINTAS que saíam do destaque ficariam cinza com o destaque grafite: no claro, elas saem do próprio amarelo — o selo
4994
+ primário de contorno (16%) e a marca do item atual da barra de baixo de aro (15%). */
4995
+ [data-theme="light"] .badge-primary.badge-outline:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
4996
+ background-color:color-mix(in oklab, var(--primary) 16%, transparent); }
4997
+ [data-theme="light"] .bottom-nav-ind-circle-outline .bottom-nav-item[aria-current] .bottom-nav-mark:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
4998
+ background:color-mix(in srgb, var(--primary) 15%, transparent); }
4999
+
5000
+ /* O CAMPO no claro é BRANCO com a sombra fina em todo lugar, também DENTRO das superfícies brancas (era o cinza
5001
+ `--fill-2` ali — ADR-0078, item 2, revertido pela ADR-0083): dentro de um cartão branco, quem separa o campo é a
5002
+ sombra. A lista é a das superfícies da regra de campo, acima. No escuro, nada muda. */
5003
+ [data-theme="light"] :is(.card:not(.card-outline):not(.card-inset),.content:not(.content-plain),.section-card,.demo,.dialog,.drawer,.popover,.menu,.command-palette,.alert,.banner-consent,.toast,.accordion-surface,.datagrid-detail,:is(.table,.table-wrap) tbody :is(td,th),.topbar-floating,.topbar-pill,.sortable-item,.app-shell-docs > .sidebar[popover]:popover-open):where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
5004
+ --field-fill:var(--card); --field-lift:var(--field-lift-page); }
5005
+
5006
+ /* O FOCO DOS CAMPOS no claro é o amarelo, uma linha só, como no escuro (decisão do Victor, 26/10/2026; a medida — 1,75:1
5007
+ na página, 1,91:1 no cartão, abaixo dos 3:1 — vai à bancada do passo A). Os botões e o resto continuam com o grafite. */
5008
+ [data-theme="light"] :is(.input,.textarea,.select):focus-visible:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
5009
+ [data-theme="light"] :is(.input-group,.combobox-multi):focus-within:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
5010
+ outline-color:var(--primary); }
5011
+
5012
+ /* "AUMENTAR CONTRASTE" do sistema (`prefers-contrast: more`: o "Aumentar contraste" do macOS, do iOS e do Android, o
5013
+ alto contraste do Windows). Sem linha nenhuma, um campo branco nunca chega aos 3:1 da WCAG 1.4.11 — a página ou o
5014
+ cartão teriam de ser um cinza médio. Então quem pede mais contraste recebe: o contorno de 3:1 nos campos (a única
5015
+ linha que esta preferência acende, exceção nomeada à ADR-0072 pela ADR-0083), as quatro marcas dos controles na
5016
+ tinta, e o foco dos campos de volta ao grafite. Fora dela, nada disto existe. */
5017
+ @media (prefers-contrast:more) {
5018
+ :is(.input,.textarea,.select,.input-group,.combobox-multi,.input-secondary,.textarea-secondary):where(:not([data-brand="lory"],[data-brand="lory"] *)) { border-color:var(--input-strong); }
5019
+ .input-group > :is(.input,.select,.textarea):where(:not([data-brand="lory"],[data-brand="lory"] *)) { border:0; }
5020
+ :root:where(:not([data-brand="lory"])),[data-theme]:where(:not([data-brand="lory"],[data-brand="lory"] *)) {
5021
+ --control-thumb:var(--brand-yellow-ink); --control-selected-foreground:var(--brand-yellow-ink); --control-selected-dot:var(--brand-yellow-ink); }
5022
+ [data-theme="light"] :is(.input,.textarea,.select):focus-visible:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *),
5023
+ [data-theme="light"] :is(.input-group,.combobox-multi):focus-within:where(:not([data-brand="lory"],[data-brand="lory"] *)):where(:not([data-theme="dark"] *),[data-theme="dark"] [data-theme="light"] *) {
5024
+ outline-color:var(--focus-strong); }
5025
+ }
5026
+
5027
+ /* A LINHA DO TEMPO: o trilho por baixo dos pontos é conserto de todas as marcas (na regra da linha do tempo, acima). Aqui
5028
+ só a cor: de `--border` para `--input` — na página do Zinco profundo, o `--border` quase não aparecia. */
5029
+ .timeline > li:not(:last-child):where(:not([data-brand="lory"],[data-brand="lory"] *))::before { background:var(--input); }
5030
+
4914
5031
  /* >>> camada responsiva — GERADA por scripts/build-responsive-layer.mjs <<< */
4915
5032
  /* As variáveis de passo NÃO HERDAM. Ver o comentário de VARIAVEIS no gerador: um ícone dentro
4916
5033
  de um botão responsivo herdaria o passo do botão e mudaria de tamanho sozinho. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurea-uds/core",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "description": "O CSS da Aurea UDS e o comportamento em JavaScript puro. Importe @aurea-uds/fonts/css antes deste.",
5
5
  "keywords": [
6
6
  "aurea",