anentrypoint-design 0.0.240 → 0.0.241

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/app-shell.css CHANGED
@@ -31,7 +31,7 @@ button, input, select, textarea { font: inherit; }
31
31
  }
32
32
  .skip-link:focus {
33
33
  top: 10px;
34
- outline: 2px solid var(--accent);
34
+ outline: 2px solid var(--accent-ink);
35
35
  outline-offset: 2px;
36
36
  }
37
37
  body {
@@ -248,7 +248,7 @@ body.canvas-host { background: transparent !important; }
248
248
  }
249
249
  .app-topbar nav a:hover { background: var(--bg-2); color: var(--fg); }
250
250
  .app-topbar nav a:focus-visible {
251
- outline: 2px solid var(--accent);
251
+ outline: 2px solid var(--accent-ink);
252
252
  outline-offset: 2px;
253
253
  }
254
254
  /* Active tab reads as a subtle tinted pill with an accent underline rather than
@@ -284,7 +284,7 @@ body.canvas-host { background: transparent !important; }
284
284
  width: 100%;
285
285
  }
286
286
  .app-search:focus-within {
287
- outline: 2px solid var(--accent);
287
+ outline: 2px solid var(--accent-ink);
288
288
  outline-offset: 2px;
289
289
  }
290
290
 
@@ -326,7 +326,7 @@ body.canvas-host { background: transparent !important; }
326
326
  }
327
327
  .app-side a:hover { background: var(--bg-2); color: var(--fg); }
328
328
  .app-side a:focus-visible {
329
- outline: 2px solid var(--accent);
329
+ outline: 2px solid var(--accent-ink);
330
330
  outline-offset: 2px;
331
331
  }
332
332
  .app-side a.active {
@@ -449,7 +449,7 @@ body.canvas-host { background: transparent !important; }
449
449
  .btn-ghost:hover { background: var(--fg); color: var(--bg); }
450
450
  .btn:active, .btn-primary:active, .btn-ghost:active { transform: translateY(2px); }
451
451
  .btn:focus-visible, .btn-primary:focus-visible, .btn-ghost:focus-visible {
452
- outline: 2px solid var(--accent);
452
+ outline: 2px solid var(--accent-ink);
453
453
  outline-offset: 2px;
454
454
  }
455
455
 
@@ -476,7 +476,7 @@ body.canvas-host { background: transparent !important; }
476
476
  .ds-icon-btn-danger { background: var(--warn); color: var(--on-color); }
477
477
  .ds-icon-btn-danger:hover { filter: brightness(1.1); }
478
478
  .ds-icon-btn:active { transform: translateY(1px); }
479
- .ds-icon-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
479
+ .ds-icon-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
480
480
  .ds-icon-btn:disabled, .ds-icon-btn.is-disabled {
481
481
  opacity: 0.5; cursor: not-allowed; pointer-events: none;
482
482
  }
@@ -488,7 +488,7 @@ body.canvas-host { background: transparent !important; }
488
488
  display: inline-flex; align-items: center; justify-content: center;
489
489
  min-width: 18px; height: 18px; padding: 0 6px;
490
490
  font-size: var(--fs-micro); font-weight: 600; line-height: 1;
491
- border-radius: 999px;
491
+ border-radius: var(--r-pill);
492
492
  background: var(--bg-3); color: var(--fg-2);
493
493
  }
494
494
  .ds-badge.tone-green { background: var(--green-tint); color: var(--green-deep); }
@@ -700,16 +700,13 @@ a.row { text-decoration: none; }
700
700
  padding: var(--space-9) 0 var(--space-8);
701
701
  display: grid; gap: var(--space-5) var(--space-6);
702
702
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
703
- grid-template-areas: 'title title' 'body actions' 'badge badge';
703
+ grid-template-areas: 'title title' 'body actions';
704
704
  align-items: end;
705
705
  max-width: var(--measure-wide);
706
706
  }
707
707
  .ds-hero-head { grid-area: title; display: grid; gap: var(--space-3); }
708
708
  .ds-hero-body { grid-area: body; }
709
709
  .ds-hero-actions { grid-area: actions; }
710
- /* Badge gets its own row — sharing 'actions' overlapped it onto the CTAs
711
- whenever a caller passes both actions and badge. */
712
- .ds-hero-badge { grid-area: badge; }
713
710
  .ds-hero-title {
714
711
  font-family: var(--ff-display); font-weight: 700;
715
712
  font-size: clamp(40px, 9cqi, 116px);
@@ -730,7 +727,7 @@ a.row { text-decoration: none; }
730
727
  @container (max-width: 900px) {
731
728
  .ds-hero {
732
729
  grid-template-columns: minmax(0, 1fr);
733
- grid-template-areas: 'title' 'body' 'actions' 'badge';
730
+ grid-template-areas: 'title' 'body' 'actions';
734
731
  align-items: start;
735
732
  padding: var(--space-7) 0 var(--space-6);
736
733
  }
@@ -904,7 +901,7 @@ table td { padding: 14px 16px; border-top: 1px solid var(--rule); }
904
901
  table tr.clickable { cursor: pointer; }
905
902
  table tr.clickable:hover td { background: var(--bg-2); }
906
903
  table tr.clickable:focus-visible {
907
- outline: 2px solid var(--accent);
904
+ outline: 2px solid var(--accent-ink);
908
905
  outline-offset: -2px;
909
906
  }
910
907
  table tr.clickable:focus-visible td { background: var(--bg-2); }
@@ -1302,7 +1299,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1302
1299
  flex-direction: column;
1303
1300
  gap: 4px;
1304
1301
  }
1305
- .ds-file-grid:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-2); }
1302
+ .ds-file-grid:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-2); }
1306
1303
 
1307
1304
  /* Listing wrapper holds the optional filter + sort header above the grid. */
1308
1305
  .ds-file-listing { display: flex; flex-direction: column; gap: var(--space-2); min-height: 0; }
@@ -1324,7 +1321,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1324
1321
  }
1325
1322
  .ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
1326
1323
  .ds-file-sort-btn.active { color: var(--accent-ink); }
1327
- .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1324
+ .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1328
1325
 
1329
1326
  /* Skeleton shimmer rows shown while a directory loads. */
1330
1327
  .ds-file-row-skeleton { cursor: default; pointer-events: none; }
@@ -1372,7 +1369,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1372
1369
  color: inherit; font: inherit; text-align: left; cursor: pointer;
1373
1370
  }
1374
1371
  .ds-file-open[disabled] { cursor: default; }
1375
- .ds-file-open:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
1372
+ .ds-file-open:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-1); }
1376
1373
  .ds-file-row:hover {
1377
1374
  background: var(--bg-2);
1378
1375
  border-color: var(--rule);
@@ -1445,7 +1442,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1445
1442
  role=checkbox/aria-checked name+state. */
1446
1443
  .ds-check-box {
1447
1444
  width: 15px; height: 15px; box-sizing: border-box; flex: 0 0 auto; position: relative;
1448
- border: 1.5px solid var(--fg-3); border-radius: 4px;
1445
+ border: 1.5px solid var(--fg-3); border-radius: var(--r-0);
1449
1446
  transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease);
1450
1447
  }
1451
1448
  .is-marked > .ds-check-box,
@@ -1457,7 +1454,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1457
1454
  }
1458
1455
  [aria-checked="mixed"] > .ds-check-box { background: var(--accent); border-color: var(--accent); }
1459
1456
  [aria-checked="mixed"] > .ds-check-box::after {
1460
- content: ""; position: absolute; left: 3px; right: 3px; top: 6px; height: 2px; background: var(--bg); border-radius: 1px;
1457
+ content: ""; position: absolute; left: 3px; right: 3px; top: 6px; height: 2px; background: var(--bg); border-radius: var(--r-hair);
1461
1458
  }
1462
1459
 
1463
1460
  .ds-file-check {
@@ -1470,7 +1467,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1470
1467
  }
1471
1468
  .ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
1472
1469
  .ds-file-check.is-marked { color: var(--accent-ink); }
1473
- .ds-file-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1470
+ .ds-file-check:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1474
1471
  .ds-file-check[disabled] { opacity: 0.4; cursor: default; }
1475
1472
  .ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
1476
1473
  .ds-file-selectall {
@@ -1480,7 +1477,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1480
1477
  padding: var(--space-1); border-radius: var(--r-1);
1481
1478
  }
1482
1479
  .ds-file-selectall:hover { background: var(--bg-2); color: var(--fg); }
1483
- .ds-file-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1480
+ .ds-file-selectall:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1484
1481
  .ds-file-controls { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); flex-wrap: wrap; }
1485
1482
  .ds-file-controls .spread { flex: 1 1 auto; }
1486
1483
  .ds-file-controls .ds-file-sort { padding: 0; }
@@ -1518,7 +1515,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1518
1515
  }
1519
1516
  .ds-density-btn:hover { color: var(--fg); }
1520
1517
  .ds-density-btn.active { background: var(--accent-tint); color: var(--fg); }
1521
- .ds-density-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1518
+ .ds-density-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1522
1519
 
1523
1520
  /* Compact density — tighter rows for long listings. */
1524
1521
  .ds-file-grid[data-density="compact"] { gap: 2px; }
@@ -1552,7 +1549,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1552
1549
  background: none; border: none; cursor: pointer; color: var(--fg);
1553
1550
  }
1554
1551
  .ds-file-cell-open[disabled] { cursor: default; }
1555
- .ds-file-cell-open:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-2); }
1552
+ .ds-file-cell-open:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; border-radius: var(--r-2); }
1556
1553
  .ds-file-cell-media {
1557
1554
  display: flex; align-items: center; justify-content: center;
1558
1555
  width: 100%; aspect-ratio: 4 / 3;
@@ -1770,7 +1767,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1770
1767
  color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-micro);
1771
1768
  }
1772
1769
  .ds-upload-act:hover { background: var(--bg-3); color: var(--fg); }
1773
- .ds-upload-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1770
+ .ds-upload-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1774
1771
  @media (hover: none), (pointer: coarse) {
1775
1772
  .ds-upload-act { min-height: 44px; min-width: 44px; }
1776
1773
  /* 44px floor for file controls on ANY touch device, not only narrow ones
@@ -1841,7 +1838,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1841
1838
  border-radius: var(--r-2); color: var(--fg);
1842
1839
  font-family: inherit; font-size: var(--fs-sm);
1843
1840
  }
1844
- .ds-modal-input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
1841
+ .ds-modal-input:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
1845
1842
  /* iOS auto-zooms inputs under 16px on focus, breaking the modal layout. */
1846
1843
  @media (hover: none), (pointer: coarse) {
1847
1844
  .ds-modal-input { font-size: 16px; min-height: 44px; }
@@ -2005,7 +2002,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2005
2002
  .ds-kbd-sep { color: var(--fg-3); font-size: var(--fs-micro); padding: 0 2px; }
2006
2003
  .ds-kbd {
2007
2004
  display: inline-block; min-width: 0;
2008
- padding: 2px 7px; border-radius: 6px;
2005
+ padding: 2px 7px; border-radius: var(--r-0);
2009
2006
  background: var(--bg); border: var(--bw-hair) solid var(--rule);
2010
2007
  border-bottom-width: 2px;
2011
2008
  font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-2);
@@ -2027,7 +2024,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2027
2024
  transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
2028
2025
  }
2029
2026
  .ds-segmented .ds-seg-btn:hover { color: var(--fg); }
2030
- .ds-segmented .ds-seg-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
2027
+ .ds-segmented .ds-seg-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
2031
2028
  .ds-segmented .ds-seg-btn.is-on {
2032
2029
  background: var(--bg); color: var(--fg);
2033
2030
  box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
@@ -2081,7 +2078,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2081
2078
  .chat-thread { scroll-behavior: smooth; }
2082
2079
  }
2083
2080
  .chat-thread::-webkit-scrollbar { width: 8px; }
2084
- .chat-thread::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: 4px; }
2081
+ .chat-thread::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: var(--r-0); }
2085
2082
  .chat-empty {
2086
2083
  margin: auto;
2087
2084
  text-align: center;
@@ -2095,7 +2092,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2095
2092
  .chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 6px 0; position: relative; min-width: 0; }
2096
2093
  .chat-msg.you { flex-direction: row-reverse; }
2097
2094
  .chat-msg.you .chat-stack { align-items: flex-end; }
2098
- .chat-msg:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); padding: 6px 0; margin: 0; border-radius: 8px; transition: background var(--dur-base) var(--ease); }
2095
+ .chat-msg:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); padding: 6px 0; margin: 0; border-radius: var(--r-0); transition: background var(--dur-base) var(--ease); }
2099
2096
 
2100
2097
  .chat-avatar {
2101
2098
  width: 36px; height: 36px; flex-shrink: 0;
@@ -2141,7 +2138,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2141
2138
  .chat-bubble code {
2142
2139
  font-family: var(--ff-mono); font-size: 0.92em;
2143
2140
  background: color-mix(in oklab, var(--fg) 10%, transparent);
2144
- padding: 1px 6px; border-radius: 4px;
2141
+ padding: 1px 6px; border-radius: var(--r-0);
2145
2142
  }
2146
2143
  .chat-msg.you .chat-bubble code { background: color-mix(in oklab, var(--fg) 10%, transparent); }
2147
2144
  .chat-bubble a {
@@ -2252,7 +2249,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2252
2249
  .chat-msg.you .chat-image,
2253
2250
  .chat-msg .chat-image,
2254
2251
  .chat-image {
2255
- display: inline-block; border-radius: 12px; overflow: hidden;
2252
+ display: inline-block; border-radius: var(--r-1); overflow: hidden;
2256
2253
  max-width: min(100%, 480px); background: var(--bg-2);
2257
2254
  text-decoration: none; color: var(--fg);
2258
2255
  border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
@@ -2271,7 +2268,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2271
2268
  .chat-file {
2272
2269
  display: flex; align-items: center; gap: 12px; padding: 12px 14px;
2273
2270
  background: var(--bg-2); border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
2274
- border-radius: 12px; text-decoration: none; color: var(--fg);
2271
+ border-radius: var(--r-1); text-decoration: none; color: var(--fg);
2275
2272
  max-width: min(100%, 360px);
2276
2273
  transition: background var(--dur-snap, .15s) var(--ease, ease), border-color var(--dur-snap, .15s) var(--ease, ease);
2277
2274
  }
@@ -2280,7 +2277,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2280
2277
  font-size: 22px; width: 36px; height: 36px;
2281
2278
  display: inline-flex; align-items: center; justify-content: center;
2282
2279
  background: color-mix(in oklab, var(--accent) 18%, transparent);
2283
- color: var(--accent-ink); border-radius: 8px; flex-shrink: 0; font-family: var(--ff-mono);
2280
+ color: var(--accent-ink); border-radius: var(--r-0); flex-shrink: 0; font-family: var(--ff-mono);
2284
2281
  }
2285
2282
  .chat-file > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
2286
2283
  .chat-file .name {
@@ -2298,7 +2295,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2298
2295
  background: var(--bg-2);
2299
2296
  color: var(--fg);
2300
2297
  border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
2301
- border-radius: 12px; overflow: hidden; max-width: min(100%, 480px);
2298
+ border-radius: var(--r-1); overflow: hidden; max-width: min(100%, 480px);
2302
2299
  transition: box-shadow 0.12s ease, border-color 0.12s ease;
2303
2300
  }
2304
2301
  .chat-msg:hover .chat-pdf { border-color: color-mix(in oklab, var(--accent) 30%, transparent); }
@@ -2321,7 +2318,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2321
2318
  display: grid; grid-template-columns: 80px 1fr; gap: 12px; padding: 10px;
2322
2319
  background: var(--bg-2);
2323
2320
  border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
2324
- border-radius: 12px; text-decoration: none; color: var(--fg);
2321
+ border-radius: var(--r-1); text-decoration: none; color: var(--fg);
2325
2322
  max-width: min(100%, 480px);
2326
2323
  transition: background var(--dur-snap, .15s) var(--ease, ease), border-color var(--dur-snap, .15s) var(--ease, ease), box-shadow 0.15s ease;
2327
2324
  }
@@ -2332,7 +2329,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2332
2329
  }
2333
2330
  .chat-link:not(:has(.thumb)):not(:has(img)) { grid-template-columns: 1fr; }
2334
2331
  .chat-link .thumb,
2335
- .chat-link img.thumb { width: 80px; height: 80px; border-radius: 8px; object-fit: cover; background: var(--bg-3) center/cover no-repeat; }
2332
+ .chat-link img.thumb { width: 80px; height: 80px; border-radius: var(--r-0); object-fit: cover; background: var(--bg-3) center/cover no-repeat; }
2336
2333
  .chat-link .meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
2337
2334
  .chat-link .host { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); text-transform: lowercase; }
2338
2335
  .chat-link .title { font-weight: 600; font-size: var(--fs-sm); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@@ -2356,7 +2353,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2356
2353
  display: inline-flex; align-items: center; gap: 4px;
2357
2354
  padding: 2px 8px; background: var(--bg-2);
2358
2355
  border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
2359
- border-radius: 999px; font-size: var(--fs-xs);
2356
+ border-radius: var(--r-pill); font-size: var(--fs-xs);
2360
2357
  cursor: pointer; user-select: none;
2361
2358
  transition: background var(--dur-snap, .12s) var(--ease, ease), border-color var(--dur-snap, .12s) var(--ease, ease), transform 0.12s ease;
2362
2359
  position: relative;
@@ -2477,7 +2474,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2477
2474
  .chat-composer .send:active { filter: brightness(0.94); }
2478
2475
  .chat-composer .send:focus-visible,
2479
2476
  .composer-btn:focus-visible {
2480
- outline: 2px solid var(--accent);
2477
+ outline: 2px solid var(--accent-ink);
2481
2478
  outline-offset: 2px;
2482
2479
  }
2483
2480
  .chat-composer .send:disabled {
@@ -2589,8 +2586,13 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2589
2586
  Component States — Disabled, Loading, Error, Success
2590
2587
  -------------------------------------------------------------- */
2591
2588
 
2592
- /* Disabled state for all interactive elements */
2589
+ /* Disabled state for all interactive elements. The `.is-disabled` class
2590
+ variants cover Btn()'s anchor-rendered case (shell.js) — an <a> has no
2591
+ :disabled pseudo-class, so a disabled link-styled button relies entirely
2592
+ on this class selector for its visual treatment (aria-disabled + tabindex
2593
+ are set in JS; this is the paired CSS half). */
2593
2594
  .btn:disabled, .btn-primary:disabled, .btn-ghost:disabled,
2595
+ .btn.is-disabled, .btn-primary.is-disabled, .btn-ghost.is-disabled,
2594
2596
  button:disabled, [disabled] {
2595
2597
  opacity: 0.6;
2596
2598
  cursor: not-allowed;
@@ -2927,7 +2929,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
2927
2929
 
2928
2930
  /* Base focus-visible: 2px ring + 2px offset clears dark bg-3 surfaces (WCAG 1.4.11) */
2929
2931
  :focus-visible {
2930
- outline: 2px solid var(--accent);
2932
+ outline: 2px solid var(--accent-ink);
2931
2933
  outline-offset: 2px;
2932
2934
  }
2933
2935
 
@@ -2937,7 +2939,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
2937
2939
  [role="tab"]:focus-visible,
2938
2940
  .row:focus-visible,
2939
2941
  .row[tabindex]:focus-visible {
2940
- outline: 2px solid var(--accent);
2942
+ outline: 2px solid var(--accent-ink);
2941
2943
  outline-offset: 2px;
2942
2944
  }
2943
2945
 
@@ -3327,7 +3329,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3327
3329
  border-radius: var(--r-1, 6px);
3328
3330
  cursor: pointer;
3329
3331
  }
3330
- .app-side-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3332
+ .app-side-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3331
3333
  @container (max-width: 900px) {
3332
3334
  .app-side-toggle { display: inline-flex; }
3333
3335
  .app-topbar .brand { margin-left: 44px; }
@@ -3417,7 +3419,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3417
3419
  .ws-resizer { grid-row: 1 / -1; align-self: stretch; justify-self: end; width: 8px; margin-right: -4px; z-index: 5; cursor: col-resize; background: transparent; border: none; padding: 0; touch-action: none; }
3418
3420
  .ws-resizer::after { content: ""; display: block; width: 2px; height: 100%; margin: 0 auto; background: transparent; transition: background var(--dur-snap) var(--ease); }
3419
3421
  .ws-resizer:hover::after, .ws-resizer:focus-visible::after { background: var(--accent); }
3420
- .ws-resizer:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
3422
+ .ws-resizer:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
3421
3423
  .ws-resizer.ws-resizer-rail { grid-column: 1; }
3422
3424
  .ws-resizer.ws-resizer-sessions { grid-column: 2; }
3423
3425
  .ws-resizer.ws-resizer-pane { grid-column: 3; justify-self: end; }
@@ -3469,7 +3471,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3469
3471
  border-radius: var(--r-1); cursor: pointer;
3470
3472
  }
3471
3473
  .ws-rail-toggle:hover { background: var(--bg-3); color: var(--fg); }
3472
- .ws-rail-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3474
+ .ws-rail-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3473
3475
  .ws-rail-inner { display: flex; flex-direction: column; min-height: 0; flex: 1; padding: var(--space-3) var(--space-2); gap: var(--space-2); }
3474
3476
  .ws-rail-head { display: flex; align-items: center; min-height: 36px; padding: 0 var(--space-2); }
3475
3477
  .ws-rail-brand { font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-body); color: var(--fg); white-space: nowrap; overflow: hidden; }
@@ -3482,7 +3484,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3482
3484
  min-height: 40px; white-space: nowrap; overflow: hidden;
3483
3485
  }
3484
3486
  .ws-rail-action:hover { filter: brightness(1.08); }
3485
- .ws-rail-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3487
+ .ws-rail-action:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3486
3488
  .ws-rail-nav { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
3487
3489
  .ws-rail-item {
3488
3490
  display: flex; align-items: center; gap: var(--space-2);
@@ -3492,7 +3494,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3492
3494
  font-family: var(--ff-body); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden;
3493
3495
  }
3494
3496
  .ws-rail-item:hover { background: var(--bg-3); color: var(--fg); }
3495
- .ws-rail-item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
3497
+ .ws-rail-item:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
3496
3498
  .ws-rail-item.active { background: var(--accent-tint); color: var(--fg); box-shadow: inset 2px 0 0 var(--accent); }
3497
3499
  .ws-rail-item-label { flex: 1; overflow: hidden; text-overflow: ellipsis; }
3498
3500
  .ws-rail-item-count { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); }
@@ -3565,7 +3567,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3565
3567
  /* Desktop-only chrome toggle (sessions collapse): inverse of the mobile drawer-toggle. */
3566
3568
  .ws-desktop-toggle { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
3567
3569
  .ws-desktop-toggle:hover { background: var(--bg-2); color: var(--fg); }
3568
- .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3570
+ .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3569
3571
  @media (max-width: 900px) { .ws-desktop-toggle { display: none; } }
3570
3572
  /* The pane collapse toggle is meaningless once the pane TRACK is dropped (the
3571
3573
  pane becomes a mobile overlay drawer at <=1480px, reached via its own
@@ -3689,7 +3691,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3689
3691
  .ws-crumb .app-crumb .crumb-right { margin-left: 0; flex-wrap: wrap; min-width: 0; display: inline-flex; }
3690
3692
  }
3691
3693
  .ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
3692
- .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3694
+ .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3693
3695
 
3694
3696
  @media (prefers-reduced-motion: reduce) {
3695
3697
  .ws-shell, .ws-rail, .ws-pane, .ws-sessions, .ws-scrim { transition: none; }
@@ -3701,7 +3703,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3701
3703
  ============================================================ */
3702
3704
 
3703
3705
  /* Highlighted match inside a Row title (Row `highlight` prop). */
3704
- .ds-hl { background: color-mix(in oklab, var(--accent) 25%, transparent); color: inherit; border-radius: 2px; }
3706
+ .ds-hl { background: color-mix(in oklab, var(--accent) 25%, transparent); color: inherit; border-radius: var(--r-hair); }
3705
3707
 
3706
3708
  /* Action strip rendered inside an EXPANDED Row (Row `actions` prop). The
3707
3709
  buttons stop propagation so they never fire the row onClick. */
@@ -3714,20 +3716,20 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3714
3716
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
3715
3717
  }
3716
3718
  .row-act:hover { background: var(--bg-3); color: var(--fg); }
3717
- .row-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
3719
+ .row-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
3718
3720
 
3719
3721
  /* FilterPills - a group of pill toggle buttons (aria-pressed). */
3720
3722
  .ds-filter-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); }
3721
3723
  .ds-filter-pill {
3722
3724
  display: inline-flex; align-items: center; justify-content: center;
3723
3725
  padding: 4px 12px; min-height: 28px;
3724
- background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: 999px;
3726
+ background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-pill);
3725
3727
  color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-tiny); cursor: pointer;
3726
3728
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
3727
3729
  }
3728
3730
  .ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
3729
3731
  .ds-filter-pill.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
3730
- .ds-filter-pill:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
3732
+ .ds-filter-pill:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
3731
3733
 
3732
3734
  /* Touch floor for the new small controls. */
3733
3735
  @media (pointer: coarse) {
@@ -3737,7 +3739,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3737
3739
  /* Disabled file actions (read-only row / in-flight mutation) stay visible but inert. */
3738
3740
  .ds-file-act:disabled { opacity: .45; cursor: default; }
3739
3741
  .ds-file-act:disabled:hover { background: transparent; color: var(--fg-3); }
3740
- .ds-file-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
3742
+ .ds-file-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
3741
3743
 
3742
3744
  /* ============================================================
3743
3745
  Print — linearize WorkspaceShell so main content prints in full.
@@ -3788,7 +3790,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3788
3790
  /* PhaseWalk */
3789
3791
  .ds-phasewalk { display: inline-flex; gap: 2px; vertical-align: middle; }
3790
3792
  .ds-phasewalk-seg {
3791
- width: 18px; height: 10px; border-radius: 2px;
3793
+ width: 18px; height: 10px; border-radius: var(--r-hair);
3792
3794
  background: var(--bg-3); position: relative;
3793
3795
  }
3794
3796
  .ds-phasewalk-seg.is-reached { background: var(--success); }
@@ -3827,8 +3829,8 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3827
3829
  /* BarRow */
3828
3830
  .ds-bar-row { display: flex; align-items: center; gap: 8px; margin: 3px 0; font-size: var(--fs-tiny); }
3829
3831
  .ds-bar-row-label { width: 100px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
3830
- .ds-bar-bg { flex: 1; min-width: 60px; background: var(--bg-3); border-radius: 2px; height: 6px; overflow: hidden; }
3831
- .ds-bar-fill { background: var(--accent); height: 100%; border-radius: 2px; }
3832
+ .ds-bar-bg { flex: 1; min-width: 60px; background: var(--bg-3); border-radius: var(--r-hair); height: 6px; overflow: hidden; }
3833
+ .ds-bar-fill { background: var(--accent); height: 100%; border-radius: var(--r-hair); }
3832
3834
  .ds-bar-row-value { flex-shrink: 0; color: var(--fg-2); max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
3833
3835
  @media (max-width: 400px) {
3834
3836
  .ds-bar-row-label { width: 72px; }
@@ -3843,7 +3845,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3843
3845
  .ds-stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-1); }
3844
3846
  }
3845
3847
  .ds-stats-grid-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-tiny); }
3846
- .ds-stat { min-width: 0; background: var(--bg-3); border-radius: 4px; padding: 10px 12px; }
3848
+ .ds-stat { min-width: 0; background: var(--bg-3); border-radius: var(--r-0); padding: 10px 12px; }
3847
3849
  .ds-stat-val { font-size: clamp(18px, 5cqi, 22px); font-weight: 700; color: var(--accent-ink); overflow-wrap: anywhere; }
3848
3850
  .ds-stat-val.rate-big { font-size: clamp(24px, 7cqi, 32px); color: var(--success); }
3849
3851
  .ds-stat-val.err-rate { font-size: clamp(24px, 7cqi, 32px); color: var(--warn); }
@@ -3854,7 +3856,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3854
3856
  .ds-sub-grid-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-tiny); }
3855
3857
  .ds-sub-btn {
3856
3858
  padding: 6px 10px; background: var(--bg-3); border: var(--bw-hair) solid var(--bg-3);
3857
- border-radius: 4px; font-size: var(--fs-tiny); cursor: pointer; color: var(--fg);
3859
+ border-radius: var(--r-0); font-size: var(--fs-tiny); cursor: pointer; color: var(--fg);
3858
3860
  text-align: left; font-family: var(--ff-body);
3859
3861
  }
3860
3862
  .ds-sub-btn:hover { border-color: var(--accent); color: var(--accent-ink); }
@@ -3885,7 +3887,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3885
3887
  /* DevRow */
3886
3888
  .ds-dev-row {
3887
3889
  background: var(--danger-surface); border-left: var(--bw-chunk) solid var(--warn);
3888
- padding: 8px 12px; margin: 4px 0; border-radius: 3px; font-size: var(--fs-tiny);
3890
+ padding: 8px 12px; margin: 4px 0; border-radius: var(--r-hair); font-size: var(--fs-tiny);
3889
3891
  }
3890
3892
  .ds-dev-row strong { color: var(--warn); }
3891
3893
 
@@ -3905,7 +3907,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3905
3907
  .ds-live-log-entry { padding: 2px 8px; border-bottom: var(--bw-hair) solid var(--bg-3); overflow-wrap: anywhere; }
3906
3908
  .ds-live-log-entry:hover { background: var(--bg-3); }
3907
3909
  .ds-live-log-ts { margin-right: 6px; color: var(--fg-3); }
3908
- .ds-live-log-subtag { margin-right: 6px; padding: 0 5px; border-radius: 2px; font-size: var(--fs-micro); }
3910
+ .ds-live-log-subtag { margin-right: 6px; padding: 0 5px; border-radius: var(--r-hair); font-size: var(--fs-micro); }
3909
3911
  .ds-live-log-preview { margin-left: 6px; color: var(--fg-3); word-break: break-word; }
3910
3912
 
3911
3913
  /* Touch floors for the dense controls (not covered by the mobile width blocks). */
@@ -3941,6 +3943,13 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3941
3943
  @media (max-width: 760px) {
3942
3944
  .ds-panel-duo { grid-template-columns: 1fr; }
3943
3945
  }
3946
+ /* Wide-viewport density: auto-fit grid so panel COUNT tracks actual children
3947
+ instead of a hardcoded column number — 2 children sit 2-up, 5 wrap to a
3948
+ third row, never an arbitrary 3-card reflex (same auto-fit/minmax pattern
3949
+ as .ds-tile-grid). Panels floor at 280px before wrapping, so ultra-wide
3950
+ screens still get more columns than a fixed repeat(3, ...) ever allowed. */
3951
+ .ds-panel-trio { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: var(--space-2); margin: var(--space-2) 0; }
3952
+ .ds-panel-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--space-2); margin: var(--space-2) 0; }
3944
3953
  /* wide dense rows/tables scroll inside their panel, never the page */
3945
3954
  .ds-scroll-x { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
3946
3955
 
@@ -3951,7 +3960,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3951
3960
  max-width: min(1100px, 100%);
3952
3961
  margin: var(--space-3) auto;
3953
3962
  background: var(--bg-2);
3954
- border-radius: 18px;
3963
+ border-radius: var(--r-2);
3955
3964
  padding: clamp(16px, 5vw, 64px);
3956
3965
  box-sizing: border-box;
3957
3966
  display: flex;
@@ -4013,7 +4022,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4013
4022
  .ds-slide-split { grid-template-columns: 1fr; }
4014
4023
  }
4015
4024
  .ds-slide-split-cell {
4016
- padding: 18px; background: var(--bg-2); border-radius: 14px;
4025
+ padding: 18px; background: var(--bg-2); border-radius: var(--r-2);
4017
4026
  color: var(--fg-2); font-size: var(--fs-lg); line-height: var(--lh-base); min-width: 0;
4018
4027
  }
4019
4028
  .ds-slide-split-cell--accent { border-left: 3px solid var(--slide-accent, var(--accent)); }
@@ -4030,7 +4039,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4030
4039
  .ds-err-path {
4031
4040
  display: inline-flex; gap: 6px; align-items: baseline; flex-wrap: wrap; max-width: 100%;
4032
4041
  font-family: var(--ff-mono); font-size: 13px; color: var(--panel-text-2);
4033
- background: var(--panel-1); padding: 6px 12px; border-radius: 8px;
4042
+ background: var(--panel-1); padding: 6px 12px; border-radius: var(--r-0);
4034
4043
  overflow-wrap: anywhere; word-break: break-all;
4035
4044
  }
4036
4045
 
@@ -4046,10 +4055,15 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4046
4055
  }
4047
4056
  .ds-gallery-tile {
4048
4057
  cursor: pointer; display: flex; flex-direction: column; gap: 6px;
4049
- padding: 12px; border-radius: 10px; min-height: clamp(120px, 18vw, 160px);
4058
+ padding: 12px; border-radius: var(--r-1); min-height: clamp(120px, 18vw, 160px);
4050
4059
  border: 0; text-align: left; font: inherit; color: inherit;
4051
4060
  background: var(--tile-tone, var(--panel-1));
4061
+ transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease);
4052
4062
  }
4063
+ /* Flat tonal fill only (house style: no bespoke tile chrome, no borders — see
4064
+ .ds-feature above), so the hover affordance is a lift, matching the same
4065
+ translateY + shadow idiom .chat-msg:hover .chat-bubble already uses. */
4066
+ .ds-gallery-tile:hover { transform: translateY(-2px); box-shadow: 0 2px 8px color-mix(in oklab, var(--fg) 10%, transparent); }
4053
4067
  .ds-gallery-tile:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
4054
4068
  .ds-gallery-tile--tight { min-height: clamp(96px, 14vw, 120px); }
4055
4069
  .ds-lightbox {
@@ -4060,7 +4074,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4060
4074
  z-index: 50;
4061
4075
  }
4062
4076
  .ds-lightbox-card {
4063
- background: var(--panel-0); border-radius: 14px; padding: clamp(16px, 4vw, 28px);
4077
+ background: var(--panel-0); border-radius: var(--r-2); padding: clamp(16px, 4vw, 28px);
4064
4078
  width: min(520px, 100%); min-width: 0;
4065
4079
  max-height: calc(100vh - 24px);
4066
4080
  max-height: calc(100dvh - 24px);
@@ -4068,7 +4082,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4068
4082
  display: flex; flex-direction: column; gap: 14px;
4069
4083
  }
4070
4084
  .ds-lightbox-preview {
4071
- padding: clamp(16px, 6vw, 36px); border-radius: 10px; text-align: center;
4085
+ padding: clamp(16px, 6vw, 36px); border-radius: var(--r-1); text-align: center;
4072
4086
  font-family: var(--ff-mono); white-space: pre-line; font-size: clamp(16px, 5vw, 24px);
4073
4087
  background: var(--tile-tone, var(--panel-1));
4074
4088
  }
@@ -4090,7 +4104,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4090
4104
  }
4091
4105
  .ds-swatch-grid-lg { grid-template-columns: repeat(auto-fill, minmax(min(150px, 100%), 1fr)); }
4092
4106
  .ds-swatch-col { display: flex; flex-direction: column; gap: 6px; }
4093
- .ds-swatch-chip { height: 48px; border-radius: 10px; border: 1px solid var(--rule); background: var(--swatch, var(--panel-1)); }
4107
+ .ds-swatch-chip { height: 48px; border-radius: var(--r-1); border: 1px solid var(--rule); background: var(--swatch, var(--panel-1)); }
4094
4108
  .ds-swatch-chip--big { height: 64px; }
4095
4109
  .ds-swatch-name { font-family: var(--ff-mono); font-size: 11px; color: var(--fg-3); }
4096
4110
  .ds-type-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 14px; }
@@ -4152,14 +4166,14 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4152
4166
  .ds-savebar {
4153
4167
  position: sticky; bottom: 8px; display: flex; align-items: center;
4154
4168
  justify-content: flex-end; gap: 8px; flex-wrap: wrap; padding: 10px;
4155
- background: var(--panel-2); border-radius: 10px; margin: 8px 0;
4169
+ background: var(--panel-2); border-radius: var(--r-1); margin: 8px 0;
4156
4170
  }
4157
4171
  .ds-savebar-note { flex: 1 1 160px; min-width: 0; color: var(--panel-text-2); }
4158
4172
  .ds-settings-modal { min-width: min(320px, calc(100vw - 32px)); max-width: 480px; }
4159
4173
  .ds-modal-body-form { padding: 16px; display: flex; flex-direction: column; gap: 12px; }
4160
4174
  .ds-modal-note { margin: 0 0 8px; color: var(--panel-text-2); font-size: 14px; }
4161
4175
  .ds-draft-preview {
4162
- background: var(--panel-1); padding: 12px; border-radius: 6px;
4176
+ background: var(--panel-1); padding: 12px; border-radius: var(--r-0);
4163
4177
  font-size: 13px; color: var(--panel-text-2); max-height: 120px;
4164
4178
  overflow-y: auto; font-family: var(--ff-mono); overflow-wrap: anywhere;
4165
4179
  }
@@ -4180,7 +4194,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4180
4194
  .ds-auth-remember { display: flex; align-items: center; gap: 6px; cursor: pointer; }
4181
4195
  .ds-auth-remember-text { color: var(--panel-text-2); font-size: 13px; }
4182
4196
  .ds-auth-forgot { font-size: 13px; }
4183
- .ds-auth-error { padding: 8px 10px; background: var(--panel-1); border-radius: 8px; color: var(--danger); font-size: 13px; overflow-wrap: anywhere; }
4197
+ .ds-auth-error { padding: 8px 10px; background: var(--panel-1); border-radius: var(--r-0); color: var(--danger); font-size: 13px; overflow-wrap: anywhere; }
4184
4198
  .ds-auth-divider { display: flex; align-items: center; gap: 10px; margin: 6px 0; color: var(--panel-text-3); font-size: 12px; }
4185
4199
  .ds-auth-divider-line { flex: 1; height: 1px; background: var(--panel-2); }
4186
4200
  .ds-auth-providers { display: flex; gap: 8px; flex-wrap: wrap; }
@@ -4204,7 +4218,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4204
4218
  .ds-tile-meta { display: flex; align-items: center; justify-content: space-between; gap: 6px; font-size: 12px; flex-wrap: wrap; min-width: 0; }
4205
4219
  .ds-tile-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); }
4206
4220
  .ds-tile-label { color: var(--panel-text); overflow-wrap: anywhere; }
4207
- .ds-gal-swatch { height: 64px; border-radius: 8px; background: var(--swatch, var(--panel-1)); }
4221
+ .ds-gal-swatch { height: 64px; border-radius: var(--r-0); background: var(--swatch, var(--panel-1)); }
4208
4222
  .ds-gal-swatch-meta { display: flex; justify-content: space-between; gap: 6px; flex-wrap: wrap; font-family: var(--ff-mono); font-size: 11px; min-width: 0; }
4209
4223
  .ds-gal-swatch-name { color: var(--panel-text); }
4210
4224
  .ds-gal-swatch-hint { color: var(--panel-text-3); overflow-wrap: anywhere; }
@@ -4225,7 +4239,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4225
4239
  .ds-cli-warn .prompt, .ds-cli-warn .cmd { color: var(--mascot); }
4226
4240
  .ds-cli-log .prompt { color: var(--fg-3); }
4227
4241
  .ds-cli-log .cmd { color: var(--fg-2); font-family: var(--ff-mono); }
4228
- .ds-term-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; background: var(--bg-2); border-radius: 10px; }
4242
+ .ds-term-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; background: var(--bg-2); border-radius: var(--r-1); }
4229
4243
  .ds-term-body--tall { min-height: 280px; }
4230
4244
  .ds-term-input-row { margin-top: 6px; }
4231
4245
  .ds-term-input { flex: 1; min-width: 0; background: transparent; border: 0; outline: 0; font-family: var(--ff-mono); font-size: 13px; color: var(--fg); }