ui-style-kit-css 2.1.0 → 2.2.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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * UI Style Kit CSS v2.1.0
2
+ * UI Style Kit CSS v2.2.0
3
3
  * CSS theme and UI style preset library.
4
4
  * License: MIT
5
5
  */
@@ -846,6 +846,22 @@
846
846
  --usk-native-shadow: none;
847
847
  --usk-native-shadow-md: var(--usk-native-shadow);
848
848
  --usk-native-focus-ring: 0 0 0 3px rgb(var(--usk-focus-rgb) / .28);
849
+ --usk-motion-duration: 140ms;
850
+ --usk-motion-easing: cubic-bezier(0.2, 0, 0.2, 1);
851
+
852
+ /* Shared semantic values are fully typed so optional companion and third-party consumers can use them directly. */
853
+ --ui-color-bg: rgb(var(--usk-bg-rgb));
854
+ --ui-color-surface: var(--usk-native-surface-strong);
855
+ --ui-color-text: var(--usk-native-text);
856
+ --ui-color-muted: var(--usk-native-text-muted);
857
+ --ui-color-primary: var(--usk-native-primary);
858
+ --ui-color-on-primary: var(--usk-native-on-primary);
859
+ --ui-color-border: var(--usk-native-border);
860
+ --ui-radius-control: var(--usk-native-radius);
861
+ --ui-shadow-control: var(--usk-native-shadow);
862
+ --ui-focus-color: var(--usk-native-focus);
863
+ --ui-motion-duration: var(--usk-motion-duration);
864
+ --ui-motion-easing: var(--usk-motion-easing);
849
865
  }
850
866
 
851
867
  [data-ui][data-theme][data-mode] :where(h1, h2, h3, h4, h5, h6) {
@@ -1536,7 +1552,7 @@
1536
1552
  [class~="rg-alert"],
1537
1553
  [class~="rg-table-wrap"],
1538
1554
  [class~="rg-nav"]
1539
- ) {
1555
+ ), [data-ui]:where([data-ui="tactile"])[data-theme][data-mode] :where([class~="saas-surface"],[class~="saas-surface-sm"],[class~="saas-surface-lg"],.ui-card,[class~="saas-panel"],.ui-toolbar,[class~="saas-well"],[class~="saas-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="bento-surface"],[class~="bento-surface-sm"],[class~="bento-surface-lg"],.ui-card,[class~="bento-panel"],.ui-toolbar,[class~="bento-well"],[class~="bento-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="max-surface"],[class~="max-surface-sm"],[class~="max-surface-lg"],.ui-card,[class~="max-panel"],.ui-toolbar,[class~="max-well"],[class~="max-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="bau-surface"],[class~="bau-surface-sm"],[class~="bau-surface-lg"],.ui-card,[class~="bau-panel"],.ui-toolbar,[class~="bau-well"],[class~="bau-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="tactile-surface"],[class~="tactile-surface-sm"],[class~="tactile-surface-lg"],.ui-card,[class~="tactile-panel"],.ui-toolbar,[class~="tactile-well"],[class~="tactile-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="neo-surface"],[class~="neo-surface-sm"],[class~="neo-surface-lg"],.ui-card,[class~="neo-panel"],.ui-toolbar,[class~="neo-well"],[class~="neo-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="retro-surface"],[class~="retro-surface-sm"],[class~="retro-surface-lg"],.ui-card,[class~="retro-panel"],.ui-toolbar,[class~="retro-well"],[class~="retro-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,[class~="brutal-surface"],.ui-card,[class~="brutal-panel"],.ui-toolbar,[class~="brutal-well"],[class~="brutal-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,.ui-card,[class~="cyber-panel"],.ui-toolbar,[class~="cyber-well"],[class~="cyber-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,.ui-card,[class~="y2k-panel"],.ui-toolbar,[class~="y2k-well"],[class~="y2k-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav,.ui-card,[class~="rg-panel"],.ui-toolbar,[class~="rg-well"],[class~="rg-inset"],.ui-field,.ui-alert,.ui-table-wrap,.ui-nav) {
1540
1556
  max-inline-size: 100%;
1541
1557
  min-inline-size: 0;
1542
1558
  overflow-wrap: anywhere;
@@ -1587,7 +1603,7 @@
1587
1603
  [class~="rg-icon-button"],
1588
1604
  [class~="rg-badge"],
1589
1605
  [class~="rg-nav-link"]
1590
- ) {
1606
+ ), [data-ui]:where([data-ui="tactile"])[data-theme][data-mode] :where(.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link,.ui-button,.ui-icon-button,.ui-badge,.ui-nav-link) {
1591
1607
  max-inline-size: 100%;
1592
1608
  min-inline-size: 0;
1593
1609
  white-space: normal;
@@ -1627,7 +1643,7 @@
1627
1643
  .rg-button,
1628
1644
  .rg-icon-button,
1629
1645
  .rg-button-pill
1630
- ) {
1646
+ ), [data-ui]:where([data-ui="tactile"])[data-theme][data-mode] :where(.ui-button,.ui-icon-button,.saas-button-pill,.ui-button,.ui-icon-button,.bento-button-pill,.ui-button,.ui-icon-button,.max-button-pill,.ui-button,.ui-icon-button,.bau-button-pill,.ui-button,.ui-icon-button,.tactile-button-pill,.ui-button,.ui-icon-button,.neo-button-pill,.ui-button,.ui-icon-button,.retro-button-pill,.ui-button,.ui-icon-button,.brutal-button-pill,.ui-button,.ui-icon-button,.cyber-button-pill,.ui-button,.ui-icon-button,.y2k-button-pill,.ui-button,.ui-icon-button,.rg-button-pill) {
1631
1647
  box-sizing: border-box;
1632
1648
  display: inline-flex;
1633
1649
  align-items: center;
@@ -1951,13 +1967,13 @@
1951
1967
  .saas-divider, .bento-divider, .max-divider, .bau-divider, .tactile-divider, .neo-divider, .retro-divider, .brutal-divider, .cyber-divider, .y2k-divider, .rg-divider { inline-size: 100%; block-size: 1px; border: 0; background: var(--usk-native-border); }
1952
1968
  .saas-disabled, .bento-disabled, .max-disabled, .bau-disabled, .tactile-disabled, .neo-disabled, .retro-disabled, .brutal-disabled, .cyber-disabled, .y2k-disabled, .rg-disabled { opacity: .55; cursor: not-allowed; pointer-events: none; }
1953
1969
 
1954
- .saas-button-ghost, .bento-button-ghost, .max-button-ghost, .bau-button-ghost, .tactile-button-ghost, .neo-button-ghost, .retro-button-ghost, .brutal-button-ghost, .cyber-button-ghost, .y2k-button-ghost, .rg-button-ghost {
1970
+ .saas-button-ghost, .bento-button-ghost, .max-button-ghost, .bau-button-ghost, .tactile-button-ghost, .neo-button-ghost, .retro-button-ghost, .brutal-button-ghost, .cyber-button-ghost, .y2k-button-ghost, .rg-button-ghost, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="ghost"]) {
1955
1971
  color: var(--usk-native-primary);
1956
1972
  background: transparent;
1957
1973
  border-color: var(--usk-native-border);
1958
1974
  }
1959
1975
 
1960
- .saas-check, .saas-radio, .saas-switch, .bento-check, .bento-radio, .bento-switch, .max-check, .max-radio, .max-switch, .bau-check, .bau-radio, .bau-switch, .tactile-check, .tactile-radio, .tactile-switch, .neo-check, .neo-radio, .neo-switch, .retro-check, .retro-radio, .retro-switch, .brutal-check, .brutal-radio, .brutal-switch, .cyber-check, .cyber-radio, .cyber-switch, .y2k-check, .y2k-radio, .y2k-switch, .rg-check, .rg-radio, .rg-switch {
1976
+ .saas-check, .saas-radio, .saas-switch, .bento-check, .bento-radio, .bento-switch, .max-check, .max-radio, .max-switch, .bau-check, .bau-radio, .bau-switch, .tactile-check, .tactile-radio, .tactile-switch, .neo-check, .neo-radio, .neo-switch, .retro-check, .retro-radio, .retro-switch, .brutal-check, .brutal-radio, .brutal-switch, .cyber-check, .cyber-radio, .cyber-switch, .y2k-check, .y2k-radio, .y2k-switch, .rg-check, .rg-radio, .rg-switch, :where([data-ui="tactile"]) .ui-check, :where([data-ui="tactile"]) .ui-radio, :where([data-ui="tactile"]) .ui-switch {
1961
1977
  display: inline-flex;
1962
1978
  align-items: center;
1963
1979
  gap: var(--usk-native-field-gap);
@@ -1965,13 +1981,13 @@
1965
1981
  color: var(--usk-native-text);
1966
1982
  }
1967
1983
 
1968
- .saas-check-control, .saas-radio-control, .bento-check-control, .bento-radio-control, .max-check-control, .max-radio-control, .bau-check-control, .bau-radio-control, .tactile-check-control, .tactile-radio-control, .neo-check-control, .neo-radio-control, .retro-check-control, .retro-radio-control, .brutal-check-control, .brutal-radio-control, .cyber-check-control, .cyber-radio-control, .y2k-check-control, .y2k-radio-control, .rg-check-control, .rg-radio-control {
1984
+ .saas-check-control, .saas-radio-control, .bento-check-control, .bento-radio-control, .max-check-control, .max-radio-control, .bau-check-control, .bau-radio-control, .tactile-check-control, .tactile-radio-control, .neo-check-control, .neo-radio-control, .retro-check-control, .retro-radio-control, .brutal-check-control, .brutal-radio-control, .cyber-check-control, .cyber-radio-control, .y2k-check-control, .y2k-radio-control, .rg-check-control, .rg-radio-control, :where([data-ui="tactile"]) .ui-check-control, :where([data-ui="tactile"]) .ui-radio-control {
1969
1985
  inline-size: 1.5rem;
1970
1986
  block-size: 1.5rem;
1971
1987
  accent-color: var(--usk-native-primary);
1972
1988
  }
1973
1989
 
1974
- .saas-switch-track, .bento-switch-track, .max-switch-track, .bau-switch-track, .tactile-switch-track, .neo-switch-track, .retro-switch-track, .brutal-switch-track, .cyber-switch-track, .y2k-switch-track, .rg-switch-track {
1990
+ .saas-switch-track, .bento-switch-track, .max-switch-track, .bau-switch-track, .tactile-switch-track, .neo-switch-track, .retro-switch-track, .brutal-switch-track, .cyber-switch-track, .y2k-switch-track, .rg-switch-track, :where([data-ui="tactile"]) .ui-switch-track {
1975
1991
  position: relative;
1976
1992
  display: inline-flex;
1977
1993
  align-items: center;
@@ -1983,7 +1999,7 @@
1983
1999
  border-radius: 999px;
1984
2000
  }
1985
2001
 
1986
- .saas-switch-thumb, .bento-switch-thumb, .max-switch-thumb, .bau-switch-thumb, .tactile-switch-thumb, .neo-switch-thumb, .retro-switch-thumb, .brutal-switch-thumb, .cyber-switch-thumb, .y2k-switch-thumb, .rg-switch-thumb {
2002
+ .saas-switch-thumb, .bento-switch-thumb, .max-switch-thumb, .bau-switch-thumb, .tactile-switch-thumb, .neo-switch-thumb, .retro-switch-thumb, .brutal-switch-thumb, .cyber-switch-thumb, .y2k-switch-thumb, .rg-switch-thumb, :where([data-ui="tactile"]) .ui-switch-thumb {
1987
2003
  inline-size: 1rem;
1988
2004
  block-size: 1rem;
1989
2005
  background: var(--usk-native-thumb);
@@ -2002,7 +2018,7 @@
2002
2018
  .brutal-switch:has(input:checked) .brutal-switch-track,
2003
2019
  .cyber-switch:has(input:checked) .cyber-switch-track,
2004
2020
  .y2k-switch:has(input:checked) .y2k-switch-track,
2005
- .rg-switch:has(input:checked) .rg-switch-track {
2021
+ .rg-switch:has(input:checked) .rg-switch-track, :where([data-ui="tactile"]) .ui-switch:has(input:checked) .ui-switch-track {
2006
2022
  background: var(--usk-native-track-fill);
2007
2023
  }
2008
2024
 
@@ -2016,7 +2032,7 @@
2016
2032
  .brutal-switch:has(input:checked) .brutal-switch-thumb,
2017
2033
  .cyber-switch:has(input:checked) .cyber-switch-thumb,
2018
2034
  .y2k-switch:has(input:checked) .y2k-switch-thumb,
2019
- .rg-switch:has(input:checked) .rg-switch-thumb {
2035
+ .rg-switch:has(input:checked) .rg-switch-thumb, :where([data-ui="tactile"]) .ui-switch:has(input:checked) .ui-switch-thumb {
2020
2036
  transform: translateX(1.25rem);
2021
2037
  }
2022
2038
 
@@ -2214,7 +2230,7 @@
2214
2230
  background-size: var(--tactile-theme-bg-size);
2215
2231
  }
2216
2232
 
2217
- .tactile-title, .tactile-heading, .tactile-kicker, .tactile-button, .tactile-badge, .tactile-nav-link {
2233
+ .tactile-title, .tactile-heading, .tactile-kicker, .tactile-button, .tactile-badge, .tactile-nav-link, :where([data-ui="tactile"]) .ui-button, :where([data-ui="tactile"]) .ui-badge, :where([data-ui="tactile"]) .ui-nav-link {
2218
2234
  font-family: var(--tactile-font-heading);
2219
2235
  }
2220
2236
 
@@ -2260,7 +2276,7 @@
2260
2276
  height: 1px;
2261
2277
  }
2262
2278
 
2263
- .tactile-surface, .tactile-card, .tactile-panel, .tactile-toolbar, .tactile-table-wrap {
2279
+ .tactile-surface, .tactile-card, .tactile-panel, .tactile-toolbar, .tactile-table-wrap, :where([data-ui="tactile"]) .ui-card, :where([data-ui="tactile"]) .ui-toolbar, :where([data-ui="tactile"]) .ui-table-wrap {
2264
2280
  background: linear-gradient(180deg,#ffffff2e,#ffffff08),linear-gradient(135deg,rgb(var(--tactile-primary-rgb)/.07),transparent 46%),var(--tactile-surface);
2265
2281
  color: var(--tactile-text);
2266
2282
  border: 1px solid var(--tactile-border);
@@ -2270,11 +2286,11 @@
2270
2286
  position: relative;
2271
2287
  }
2272
2288
 
2273
- .tactile-card, .tactile-panel {
2289
+ .tactile-card, .tactile-panel, :where([data-ui="tactile"]) .ui-card {
2274
2290
  padding: var(--tactile-space-6);
2275
2291
  }
2276
2292
 
2277
- .tactile-toolbar {
2293
+ .tactile-toolbar, :where([data-ui="tactile"]) .ui-toolbar {
2278
2294
  justify-content: space-between;
2279
2295
  align-items: center;
2280
2296
  gap: var(--tactile-space-4);
@@ -2307,7 +2323,7 @@
2307
2323
  transform: translateY(-2px);
2308
2324
  }
2309
2325
 
2310
- .tactile-button, .tactile-icon-button {
2326
+ .tactile-button, .tactile-icon-button, :where([data-ui="tactile"]) .ui-button, :where([data-ui="tactile"]) .ui-icon-button {
2311
2327
  appearance: none;
2312
2328
  justify-content: center;
2313
2329
  align-items: center;
@@ -2331,87 +2347,87 @@
2331
2347
  display: inline-flex;
2332
2348
  }
2333
2349
 
2334
- .tactile-button:hover, .tactile-icon-button:hover {
2350
+ .tactile-button:hover, .tactile-icon-button:hover, :where([data-ui="tactile"]) .ui-button:hover, :where([data-ui="tactile"]) .ui-icon-button:hover {
2335
2351
  border-color: var(--tactile-primary);
2336
2352
  transform: translateY(-1px);
2337
2353
  }
2338
2354
 
2339
- .tactile-button:active, .tactile-icon-button:active, .tactile-button[aria-pressed="true"], .tactile-icon-button[aria-pressed="true"], .tactile-button.is-active, .tactile-icon-button.is-active {
2355
+ .tactile-button:active, .tactile-icon-button:active, .tactile-button[aria-pressed="true"], .tactile-icon-button[aria-pressed="true"], .tactile-button.is-active, .tactile-icon-button.is-active, :where([data-ui="tactile"]) .ui-button:active, :where([data-ui="tactile"]) .ui-icon-button:active, :where([data-ui="tactile"]) .ui-button[aria-pressed="true"], :where([data-ui="tactile"]) .ui-icon-button[aria-pressed="true"], :where([data-ui="tactile"]) .ui-button.is-active, :where([data-ui="tactile"]) .ui-icon-button.is-active {
2340
2356
  transform: translateY(1px);
2341
2357
  box-shadow: inset 0 3px 10px #0000002e;
2342
2358
  }
2343
2359
 
2344
- .tactile-button-primary {
2360
+ .tactile-button-primary, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="primary"]) {
2345
2361
  background: var(--tactile-primary);
2346
2362
  color: var(--tactile-on-primary);
2347
2363
  border-color: var(--tactile-primary);
2348
2364
  }
2349
2365
 
2350
- .tactile-button-primary:hover {
2366
+ .tactile-button-primary:hover, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="primary"]):hover {
2351
2367
  background: var(--tactile-primary-hover);
2352
2368
  border-color: var(--tactile-primary-hover);
2353
2369
  }
2354
2370
 
2355
- .tactile-button-secondary {
2371
+ .tactile-button-secondary, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="secondary"]) {
2356
2372
  background: var(--tactile-secondary);
2357
2373
  color: var(--tactile-on-secondary);
2358
2374
  border-color: var(--tactile-secondary);
2359
2375
  }
2360
2376
 
2361
- .tactile-button-secondary:hover {
2377
+ .tactile-button-secondary:hover, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="secondary"]):hover {
2362
2378
  background: var(--tactile-secondary-hover);
2363
2379
  border-color: var(--tactile-secondary-hover);
2364
2380
  }
2365
2381
 
2366
- .tactile-button-danger {
2382
+ .tactile-button-danger, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="danger"]) {
2367
2383
  background: var(--tactile-danger);
2368
2384
  color: var(--tactile-on-danger);
2369
2385
  border-color: var(--tactile-danger);
2370
2386
  }
2371
2387
 
2372
- .tactile-button-ghost {
2388
+ .tactile-button-ghost, :where([data-ui="tactile"]) .ui-button:where([data-ui-variant="ghost"]) {
2373
2389
  color: var(--tactile-text);
2374
2390
  box-shadow: none;
2375
2391
  background: none;
2376
2392
  }
2377
2393
 
2378
- .tactile-icon-button {
2394
+ .tactile-icon-button, :where([data-ui="tactile"]) .ui-icon-button {
2379
2395
  border-radius: var(--tactile-radius-pill);
2380
2396
  width: 2.75rem;
2381
2397
  padding: 0;
2382
2398
  }
2383
2399
 
2384
- .tactile-button:disabled, .tactile-icon-button:disabled, .tactile-disabled {
2400
+ .tactile-button:disabled, .tactile-icon-button:disabled, .tactile-disabled, :where([data-ui="tactile"]) .ui-button:disabled, :where([data-ui="tactile"]) .ui-icon-button:disabled {
2385
2401
  opacity: .55;
2386
2402
  cursor: not-allowed;
2387
2403
  transform: none;
2388
2404
  }
2389
2405
 
2390
- .tactile-card, .tactile-panel {
2406
+ .tactile-card, .tactile-panel, :where([data-ui="tactile"]) .ui-card {
2391
2407
  background: var(--tactile-card-bg);
2392
2408
  }
2393
2409
 
2394
- .tactile-toolbar, .tactile-table-wrap, .tactile-button:not(.tactile-button-primary):not(.tactile-button-secondary):not(.tactile-button-danger):not(.tactile-button-ghost), .tactile-icon-button {
2410
+ .tactile-toolbar, .tactile-table-wrap, .tactile-button:not(.tactile-button-primary):not(.tactile-button-secondary):not(.tactile-button-danger):not(.tactile-button-ghost), .tactile-icon-button, :where([data-ui="tactile"]) .ui-toolbar, :where([data-ui="tactile"]) .ui-table-wrap, :where([data-ui="tactile"]) .ui-button:not(.ui-button:where([data-ui-variant="primary"])):not(.ui-button:where([data-ui-variant="secondary"])):not(.ui-button:where([data-ui-variant="danger"])):not(.ui-button:where([data-ui-variant="ghost"])), :where([data-ui="tactile"]) .ui-icon-button {
2395
2411
  background: var(--tactile-control-bg);
2396
2412
  }
2397
2413
 
2398
- .tactile-button, .tactile-icon-button, .tactile-badge, .tactile-nav-link {
2414
+ .tactile-button, .tactile-icon-button, .tactile-badge, .tactile-nav-link, :where([data-ui="tactile"]) .ui-button, :where([data-ui="tactile"]) .ui-icon-button, :where([data-ui="tactile"]) .ui-badge, :where([data-ui="tactile"]) .ui-nav-link {
2399
2415
  font-family: var(--tactile-font-control);
2400
2416
  }
2401
2417
 
2402
- .tactile-field {
2418
+ .tactile-field, :where([data-ui="tactile"]) .ui-field {
2403
2419
  gap: var(--tactile-space-2);
2404
2420
  flex-direction: column;
2405
2421
  display: flex;
2406
2422
  }
2407
2423
 
2408
- .tactile-label {
2424
+ .tactile-label, :where([data-ui="tactile"]) .ui-label {
2409
2425
  color: var(--tactile-text);
2410
2426
  font-size: .925rem;
2411
2427
  font-weight: 800;
2412
2428
  }
2413
2429
 
2414
- .tactile-input, .tactile-textarea, .tactile-select {
2430
+ .tactile-input, .tactile-textarea, .tactile-select, :where([data-ui="tactile"]) .ui-input, :where([data-ui="tactile"]) .ui-textarea, :where([data-ui="tactile"]) .ui-select {
2415
2431
  background: var(--tactile-surface-soft);
2416
2432
  width: 100%;
2417
2433
  min-height: 2.875rem;
@@ -2424,32 +2440,32 @@
2424
2440
  padding: .75rem 1rem;
2425
2441
  }
2426
2442
 
2427
- .tactile-textarea {
2443
+ .tactile-textarea, :where([data-ui="tactile"]) .ui-textarea {
2428
2444
  resize: vertical;
2429
2445
  min-height: 8rem;
2430
2446
  }
2431
2447
 
2432
- .tactile-input::placeholder, .tactile-textarea::placeholder {
2448
+ .tactile-input::placeholder, .tactile-textarea::placeholder, :where([data-ui="tactile"]) .ui-input::placeholder, :where([data-ui="tactile"]) .ui-textarea::placeholder {
2433
2449
  color: var(--tactile-text-muted);
2434
2450
  opacity: .82;
2435
2451
  }
2436
2452
 
2437
- .tactile-input:hover, .tactile-textarea:hover, .tactile-select:hover {
2453
+ .tactile-input:hover, .tactile-textarea:hover, .tactile-select:hover, :where([data-ui="tactile"]) .ui-input:hover, :where([data-ui="tactile"]) .ui-textarea:hover, :where([data-ui="tactile"]) .ui-select:hover {
2438
2454
  border-color: rgb(var(--tactile-primary-rgb)/.58);
2439
2455
  }
2440
2456
 
2441
- .tactile-input:focus, .tactile-textarea:focus, .tactile-select:focus {
2457
+ .tactile-input:focus, .tactile-textarea:focus, .tactile-select:focus, :where([data-ui="tactile"]) .ui-input:focus, :where([data-ui="tactile"]) .ui-textarea:focus, :where([data-ui="tactile"]) .ui-select:focus {
2442
2458
  border-color: var(--tactile-focus);
2443
2459
  box-shadow: var(--tactile-focus-ring);
2444
2460
  }
2445
2461
 
2446
- .tactile-help-text {
2462
+ .tactile-help-text, :where([data-ui="tactile"]) .ui-help-text {
2447
2463
  color: var(--tactile-text-muted);
2448
2464
  font-size: .875rem;
2449
2465
  line-height: 1.45;
2450
2466
  }
2451
2467
 
2452
- .tactile-check, .tactile-radio {
2468
+ .tactile-check, .tactile-radio, :where([data-ui="tactile"]) .ui-check, :where([data-ui="tactile"]) .ui-radio {
2453
2469
  align-items: center;
2454
2470
  gap: var(--tactile-space-2);
2455
2471
  color: var(--tactile-text);
@@ -2457,13 +2473,13 @@
2457
2473
  display: inline-flex;
2458
2474
  }
2459
2475
 
2460
- .tactile-check input, .tactile-radio input {
2476
+ .tactile-check input, .tactile-radio input, :where([data-ui="tactile"]) .ui-check input, :where([data-ui="tactile"]) .ui-radio input {
2461
2477
  opacity: 0;
2462
2478
  pointer-events: none;
2463
2479
  position: absolute;
2464
2480
  }
2465
2481
 
2466
- .tactile-check-control, .tactile-radio-control {
2482
+ .tactile-check-control, .tactile-radio-control, :where([data-ui="tactile"]) .ui-check-control, :where([data-ui="tactile"]) .ui-radio-control {
2467
2483
  background: var(--tactile-surface-soft);
2468
2484
  border: 1px solid var(--tactile-border);
2469
2485
  width: 1.35rem;
@@ -2473,28 +2489,28 @@
2473
2489
  display: inline-grid;
2474
2490
  }
2475
2491
 
2476
- .tactile-check-control {
2492
+ .tactile-check-control, :where([data-ui="tactile"]) .ui-check-control {
2477
2493
  border-radius: var(--tactile-radius-xs);
2478
2494
  }
2479
2495
 
2480
- .tactile-radio-control {
2496
+ .tactile-radio-control, :where([data-ui="tactile"]) .ui-radio-control {
2481
2497
  border-radius: 50%;
2482
2498
  }
2483
2499
 
2484
- .tactile-check input:checked + .tactile-check-control, .tactile-radio input:checked + .tactile-radio-control {
2500
+ .tactile-check input:checked + .tactile-check-control, .tactile-radio input:checked + .tactile-radio-control, :where([data-ui="tactile"]) .ui-check input:checked+.ui-check-control, :where([data-ui="tactile"]) .ui-radio input:checked+.ui-radio-control {
2485
2501
  background: var(--tactile-primary);
2486
2502
  border-color: var(--tactile-primary);
2487
2503
  box-shadow: var(--tactile-focus-ring);
2488
2504
  }
2489
2505
 
2490
- .tactile-check input:checked + .tactile-check-control:after {
2506
+ .tactile-check input:checked + .tactile-check-control:after, :where([data-ui="tactile"]) .ui-check input:checked+.ui-check-control:after {
2491
2507
  content: "✓";
2492
2508
  color: var(--tactile-on-primary);
2493
2509
  font-size: .9rem;
2494
2510
  font-weight: 900;
2495
2511
  }
2496
2512
 
2497
- .tactile-radio input:checked + .tactile-radio-control:after {
2513
+ .tactile-radio input:checked + .tactile-radio-control:after, :where([data-ui="tactile"]) .ui-radio input:checked+.ui-radio-control:after {
2498
2514
  content: "";
2499
2515
  background: var(--tactile-on-primary);
2500
2516
  border-radius: 50%;
@@ -2502,7 +2518,7 @@
2502
2518
  height: .55rem;
2503
2519
  }
2504
2520
 
2505
- .tactile-switch {
2521
+ .tactile-switch, :where([data-ui="tactile"]) .ui-switch {
2506
2522
  align-items: center;
2507
2523
  gap: var(--tactile-space-3);
2508
2524
  color: var(--tactile-text);
@@ -2510,13 +2526,13 @@
2510
2526
  display: inline-flex;
2511
2527
  }
2512
2528
 
2513
- .tactile-switch input {
2529
+ .tactile-switch input, :where([data-ui="tactile"]) .ui-switch input {
2514
2530
  opacity: 0;
2515
2531
  pointer-events: none;
2516
2532
  position: absolute;
2517
2533
  }
2518
2534
 
2519
- .tactile-switch-track {
2535
+ .tactile-switch-track, :where([data-ui="tactile"]) .ui-switch-track {
2520
2536
  background: var(--tactile-surface-soft);
2521
2537
  border: 1px solid var(--tactile-border);
2522
2538
  border-radius: var(--tactile-radius-pill);
@@ -2526,7 +2542,7 @@
2526
2542
  position: relative;
2527
2543
  }
2528
2544
 
2529
- .tactile-switch-thumb {
2545
+ .tactile-switch-thumb, :where([data-ui="tactile"]) .ui-switch-thumb {
2530
2546
  background: var(--tactile-surface-strong);
2531
2547
  border: 1px solid var(--tactile-border);
2532
2548
  width: 1.34rem;
@@ -2539,17 +2555,17 @@
2539
2555
  left: .22rem;
2540
2556
  }
2541
2557
 
2542
- .tactile-switch input:checked + .tactile-switch-track {
2558
+ .tactile-switch input:checked + .tactile-switch-track, :where([data-ui="tactile"]) .ui-switch input:checked+.ui-switch-track {
2543
2559
  background: var(--tactile-primary);
2544
2560
  border-color: var(--tactile-primary);
2545
2561
  }
2546
2562
 
2547
- .tactile-switch input:checked + .tactile-switch-track .tactile-switch-thumb {
2563
+ .tactile-switch input:checked + .tactile-switch-track .tactile-switch-thumb, :where([data-ui="tactile"]) .ui-switch input:checked+.ui-switch-track .ui-switch-thumb {
2548
2564
  background: var(--tactile-on-primary);
2549
2565
  left: calc(100% - 1.56rem);
2550
2566
  }
2551
2567
 
2552
- .tactile-badge {
2568
+ .tactile-badge, :where([data-ui="tactile"]) .ui-badge {
2553
2569
  align-items: center;
2554
2570
  gap: var(--tactile-space-1);
2555
2571
  background: var(--tactile-surface-soft);
@@ -2564,37 +2580,37 @@
2564
2580
  display: inline-flex;
2565
2581
  }
2566
2582
 
2567
- .tactile-badge-primary {
2583
+ .tactile-badge-primary, :where([data-ui="tactile"]) .ui-badge:where([data-ui-variant="primary"]) {
2568
2584
  background: var(--tactile-primary);
2569
2585
  color: var(--tactile-on-primary);
2570
2586
  border-color: var(--tactile-primary);
2571
2587
  }
2572
2588
 
2573
- .tactile-badge-secondary {
2589
+ .tactile-badge-secondary, :where([data-ui="tactile"]) .ui-badge:where([data-ui-variant="secondary"]) {
2574
2590
  background: var(--tactile-secondary);
2575
2591
  color: var(--tactile-on-secondary);
2576
2592
  border-color: var(--tactile-secondary);
2577
2593
  }
2578
2594
 
2579
- .tactile-badge-success {
2595
+ .tactile-badge-success, :where([data-ui="tactile"]) .ui-badge:where([data-ui-variant="success"]) {
2580
2596
  background: var(--tactile-success);
2581
2597
  color: var(--tactile-on-success);
2582
2598
  border-color: var(--tactile-success);
2583
2599
  }
2584
2600
 
2585
- .tactile-badge-warning {
2601
+ .tactile-badge-warning, :where([data-ui="tactile"]) .ui-badge:where([data-ui-variant="warning"]) {
2586
2602
  background: var(--tactile-warning);
2587
2603
  color: var(--tactile-on-warning);
2588
2604
  border-color: var(--tactile-warning);
2589
2605
  }
2590
2606
 
2591
- .tactile-badge-danger {
2607
+ .tactile-badge-danger, :where([data-ui="tactile"]) .ui-badge:where([data-ui-variant="danger"]) {
2592
2608
  background: var(--tactile-danger);
2593
2609
  color: var(--tactile-on-danger);
2594
2610
  border-color: var(--tactile-danger);
2595
2611
  }
2596
2612
 
2597
- .tactile-nav {
2613
+ .tactile-nav, :where([data-ui="tactile"]) .ui-nav {
2598
2614
  align-items: center;
2599
2615
  gap: var(--tactile-space-2);
2600
2616
  padding: var(--tactile-space-2);
@@ -2606,7 +2622,7 @@
2606
2622
  display: flex;
2607
2623
  }
2608
2624
 
2609
- .tactile-nav-link {
2625
+ .tactile-nav-link, :where([data-ui="tactile"]) .ui-nav-link {
2610
2626
  min-height: 2.5rem;
2611
2627
  color: var(--tactile-text-muted);
2612
2628
  border-radius: var(--tactile-radius-pill);
@@ -2619,12 +2635,12 @@
2619
2635
  display: inline-flex;
2620
2636
  }
2621
2637
 
2622
- .tactile-nav-link:hover {
2638
+ .tactile-nav-link:hover, :where([data-ui="tactile"]) .ui-nav-link:hover {
2623
2639
  color: var(--tactile-text);
2624
2640
  background: var(--tactile-surface-soft);
2625
2641
  }
2626
2642
 
2627
- .tactile-nav-link[aria-current="page"], .tactile-nav-link.is-active {
2643
+ .tactile-nav-link[aria-current="page"], .tactile-nav-link.is-active, :where([data-ui="tactile"]) .ui-nav-link[aria-current="page"], :where([data-ui="tactile"]) .ui-nav-link.is-active {
2628
2644
  color: var(--tactile-on-primary);
2629
2645
  background: var(--tactile-primary);
2630
2646
  }
@@ -2655,7 +2671,7 @@
2655
2671
  transform: rotate(45deg);
2656
2672
  }
2657
2673
 
2658
- .tactile-progress {
2674
+ .tactile-progress, :where([data-ui="tactile"]) .ui-progress {
2659
2675
  background: var(--tactile-surface-soft);
2660
2676
  border: 1px solid var(--tactile-border);
2661
2677
  border-radius: var(--tactile-radius-pill);
@@ -2664,14 +2680,14 @@
2664
2680
  overflow: hidden;
2665
2681
  }
2666
2682
 
2667
- .tactile-progress-bar {
2683
+ .tactile-progress-bar, :where([data-ui="tactile"]) .ui-progress-bar {
2668
2684
  height: 100%;
2669
2685
  width: var(--tactile-progress-value, 50%);
2670
2686
  background: linear-gradient(90deg,var(--tactile-primary),var(--tactile-accent));
2671
2687
  border-radius: inherit;
2672
2688
  }
2673
2689
 
2674
- .tactile-alert {
2690
+ .tactile-alert, :where([data-ui="tactile"]) .ui-alert {
2675
2691
  gap: var(--tactile-space-2);
2676
2692
  padding: var(--tactile-space-4);
2677
2693
  background: var(--tactile-surface);
@@ -2682,45 +2698,45 @@
2682
2698
  display: grid;
2683
2699
  }
2684
2700
 
2685
- .tactile-alert-success {
2701
+ .tactile-alert-success, :where([data-ui="tactile"]) .ui-alert:where([data-ui-variant="success"]) {
2686
2702
  border-left-color: var(--tactile-success);
2687
2703
  }
2688
2704
 
2689
- .tactile-alert-warning {
2705
+ .tactile-alert-warning, :where([data-ui="tactile"]) .ui-alert:where([data-ui-variant="warning"]) {
2690
2706
  border-left-color: var(--tactile-warning);
2691
2707
  }
2692
2708
 
2693
- .tactile-alert-danger {
2709
+ .tactile-alert-danger, :where([data-ui="tactile"]) .ui-alert:where([data-ui-variant="danger"]) {
2694
2710
  border-left-color: var(--tactile-danger);
2695
2711
  }
2696
2712
 
2697
- .tactile-alert-title {
2713
+ .tactile-alert-title, :where([data-ui="tactile"]) .ui-alert-title {
2698
2714
  margin: 0;
2699
2715
  font-weight: 900;
2700
2716
  }
2701
2717
 
2702
- .tactile-alert-body {
2718
+ .tactile-alert-body, :where([data-ui="tactile"]) .ui-alert-body {
2703
2719
  color: var(--tactile-text-muted);
2704
2720
  margin: 0;
2705
2721
  line-height: 1.55;
2706
2722
  }
2707
2723
 
2708
- .tactile-table-wrap {
2724
+ .tactile-table-wrap, :where([data-ui="tactile"]) .ui-table-wrap {
2709
2725
  overflow: auto;
2710
2726
  }
2711
2727
 
2712
- .tactile-table {
2728
+ .tactile-table, :where([data-ui="tactile"]) .ui-table {
2713
2729
  border-collapse: collapse;
2714
2730
  width: 100%;
2715
2731
  }
2716
2732
 
2717
- .tactile-table th, .tactile-table td {
2733
+ .tactile-table th, .tactile-table td, :where([data-ui="tactile"]) .ui-table th, :where([data-ui="tactile"]) .ui-table td {
2718
2734
  text-align: left;
2719
2735
  border-bottom: 1px solid var(--tactile-border);
2720
2736
  padding: .95rem 1rem;
2721
2737
  }
2722
2738
 
2723
- .tactile-table th {
2739
+ .tactile-table th, :where([data-ui="tactile"]) .ui-table th {
2724
2740
  color: var(--tactile-text);
2725
2741
  text-transform: uppercase;
2726
2742
  letter-spacing: .08em;
@@ -2729,11 +2745,11 @@
2729
2745
  font-weight: 900;
2730
2746
  }
2731
2747
 
2732
- .tactile-table td {
2748
+ .tactile-table td, :where([data-ui="tactile"]) .ui-table td {
2733
2749
  color: var(--tactile-text-muted);
2734
2750
  }
2735
2751
 
2736
- .tactile-table tr:hover td {
2752
+ .tactile-table tr:hover td, :where([data-ui="tactile"]) .ui-table tr:hover td {
2737
2753
  background: rgb(var(--tactile-primary-rgb)/.045);
2738
2754
  }
2739
2755
 
@@ -2866,12 +2882,12 @@
2866
2882
  inline-size: 3rem;
2867
2883
  }
2868
2884
 
2869
- .tactile-button[aria-busy="true"], .tactile-icon-button[aria-busy="true"], [data-ui="tactile"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]) {
2885
+ .tactile-button[aria-busy="true"], .tactile-icon-button[aria-busy="true"], [data-ui="tactile"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]), :where([data-ui="tactile"]) .ui-button[aria-busy="true"], :where([data-ui="tactile"]) .ui-icon-button[aria-busy="true"] {
2870
2886
  cursor: progress;
2871
2887
  gap: .55rem;
2872
2888
  }
2873
2889
 
2874
- .tactile-button[aria-busy="true"]:after, .tactile-icon-button[aria-busy="true"]:after, [data-ui="tactile"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]):after {
2890
+ .tactile-button[aria-busy="true"]:after, .tactile-icon-button[aria-busy="true"]:after, [data-ui="tactile"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]):after, :where([data-ui="tactile"]) .ui-button[aria-busy="true"]:after, :where([data-ui="tactile"]) .ui-icon-button[aria-busy="true"]:after {
2875
2891
  content: "";
2876
2892
  border: .16em solid rgb(var(--tactile-primary-text-rgb)/.42);
2877
2893
  border-block-start-color: currentColor;