User1342 commited on
Commit
10528d6
·
1 Parent(s): 4d2b94b

Hold every component colour against gradio prose repainting

Browse files
Files changed (1) hide show
  1. distinct_server/presentation.py +144 -139
distinct_server/presentation.py CHANGED
@@ -301,14 +301,14 @@ footer,.gradio-container footer{display:none !important;}
301
  .c-eyebrow{
302
  display:flex; align-items:baseline; justify-content:space-between; gap:var(--s2);
303
  font-size:var(--t-micro); font-weight:600; letter-spacing:.09em;
304
- text-transform:uppercase; color:var(--c-muted);
305
  margin:var(--s4) 0 var(--s2); padding-bottom:var(--s2);
306
  border-bottom:1px solid var(--c-hairline) !important;
307
  }
308
  .c-side>*:first-child .c-eyebrow,.c-eyebrow:first-child{margin-top:0;}
309
  .c-eyebrow__note{text-transform:none; letter-spacing:0; font-weight:400;}
310
  .c-note{display:flex; align-items:flex-start; gap:var(--s2); flex-wrap:wrap;
311
- margin:0; font-size:var(--t-micro); color:var(--c-muted);}
312
  .c-note__text{max-width:var(--measure); line-height:1.5;}
313
 
314
  /* ========================================================================
@@ -321,16 +321,16 @@ footer,.gradio-container footer{display:none !important;}
321
  }
322
  .c-header__brand{display:flex; align-items:baseline; gap:var(--s3); min-width:0;}
323
  .c-wordmark{font-size:var(--t-display); font-weight:700; letter-spacing:-.045em;
324
- line-height:1; color:var(--c-text); white-space:nowrap;}
325
- .c-wordmark__dot{color:var(--c-sage-dark);}
326
- .c-tagline{font-size:var(--t-label); font-weight:400; color:var(--c-text-2);
327
  line-height:1; white-space:nowrap; overflow:hidden;
328
  text-overflow:ellipsis; padding-left:var(--s3);
329
  border-left:1px solid var(--c-hairline) !important;}
330
  /* Who you are, said quietly. This was a floating white pill with a shadow,
331
  which gave the top of the page a second object competing with the
332
  wordmark for the eye; it is a caption, so it is set like one. */
333
- .c-identity{font-size:var(--t-micro); color:var(--c-muted); white-space:nowrap;
334
  overflow:hidden; text-overflow:ellipsis; max-width:38ch;}
335
  .c-identity--link{text-decoration:underline; cursor:pointer;}
336
 
@@ -361,19 +361,19 @@ footer,.gradio-container footer{display:none !important;}
361
  .c-splash__head{display:flex; flex-direction:column; align-items:flex-start;
362
  gap:var(--s4);}
363
  .c-splash__mark{margin:0; font-size:var(--t-display); font-weight:700;
364
- letter-spacing:-.045em; line-height:1; color:var(--c-text);}
365
  .c-splash__display{
366
  margin:0; font-family:var(--font-display);
367
  font-size:clamp(2.6rem,1.1rem + 4.6vw,4.6rem);
368
- line-height:1.02; letter-spacing:-.035em; color:var(--c-text);
369
  font-weight:680; font-optical-sizing:auto; text-wrap:balance;
370
  }
371
  /* The second line carries the claim, so it is the one that changes colour and
372
  weight. Sage-deep at 9.2:1 clears AA comfortably at any size. */
373
- .c-splash__display-2{color:var(--c-sage-deep); font-weight:560;}
374
  .c-splash__lede{margin:0; max-width:46ch; font-size:var(--t-lg);
375
- line-height:1.5; color:var(--c-text-2);}
376
- .c-splash__meta{margin:0; font-size:var(--t-micro); color:var(--c-muted);
377
  letter-spacing:.02em;}
378
  .c-splash__figure{margin:0; display:flex; flex-direction:column; gap:var(--s3);
379
  min-width:0;}
@@ -381,9 +381,9 @@ footer,.gradio-container footer{display:none !important;}
381
  box-shadow:var(--e2);}
382
  /* The credit sits beside the image it belongs to and is never collapsed
383
  behind a control. It is a licence condition, not a caption. */
384
- .c-splash__credit{font-size:var(--t-micro); line-height:1.5; color:var(--c-muted);
385
  max-width:52ch;}
386
- .c-splash__credit a{color:var(--c-sage-deep); text-decoration:underline;}
387
  .c-splash__copy button.primary{
388
  min-width:190px !important; padding:12px 22px !important;
389
  font-size:var(--t-body) !important; flex:0 0 auto !important;
@@ -422,29 +422,34 @@ footer,.gradio-container footer{display:none !important;}
422
  which a non-flex parent then put on a line of its own. */
423
  .c-notice__summary{display:flex !important; align-items:flex-start; gap:var(--s3);
424
  flex-wrap:wrap; cursor:pointer; list-style:none;
425
- font-size:var(--t-label); color:var(--c-text-2);
426
  line-height:1.5;}
427
  .c-notice__summary>span:nth-child(2){flex:1 1 180px; min-width:0;}
428
  .c-notice__summary::-webkit-details-marker{display:none;}
429
- .c-notice__summary strong{color:var(--c-text); font-weight:600;}
430
  /* inline-grid, not grid: a block-level box in a row that failed to become a
431
  flex container takes the whole line to itself, which is exactly how this
432
  mark ended up stranded above its own sentence. Inline-grid centres the
433
  glyph just as well and cannot claim a line. */
434
  .c-notice__mark{flex:none; width:16px; height:16px; border-radius:50%;
435
  margin-top:2px;
436
- border:1.5px solid var(--c-warn-rule) !important; color:var(--c-warn-rule);
 
 
 
 
 
437
  font-size:10px; font-weight:700;
438
  display:inline-grid; place-items:center;}
439
  .c-notice__toggle{margin-left:auto; white-space:nowrap; font-size:var(--t-micro);
440
- color:var(--c-muted); text-decoration:underline;
441
  text-underline-offset:2px; padding-left:var(--s3);}
442
  @media (max-width:700px){
443
  /* Its own line, aligned with the sentence it opens rather than the mark. */
444
  .c-notice__toggle{flex:1 0 100%; margin:var(--s2) 0 0 28px; padding-left:0;}
445
  }
446
  .c-notice__body{margin:var(--s3) 0 var(--s1) 28px; font-size:var(--t-micro);
447
- line-height:1.6; color:var(--c-text-2); max-width:var(--measure);}
448
  .c-notice__summary:focus-visible{outline:3px solid var(--c-sage); outline-offset:3px;
449
  border-radius:var(--r-md);}
450
 
@@ -489,15 +494,15 @@ footer,.gradio-container footer{display:none !important;}
489
  display:inline-flex; align-items:center; gap:5px;
490
  height:22px; padding:0 9px; border-radius:var(--r-pill);
491
  font-size:var(--t-micro); line-height:1; white-space:nowrap;
492
- background:var(--c-fill); color:var(--c-text-2);
493
  border:1px solid transparent !important;
494
  }
495
  .c-chip__glyph{font-size:8px; line-height:1;}
496
- .c-chip--ok{background:var(--c-mint); color:#22402C;}
497
- .c-chip--work{background:#E7EFE2; color:var(--c-sage-deep);}
498
- .c-chip--warn{background:#F5EDDB; color:#5A4512;}
499
- .c-chip--off{background:#ECEDEA; color:#454A45;}
500
- .c-chip--outline{background:transparent; color:var(--c-muted);
501
  border:1px dashed var(--c-border) !important;}
502
 
503
  /* ========================================================================
@@ -509,8 +514,8 @@ footer,.gradio-container footer{display:none !important;}
509
  .c-worker--offline{opacity:.7;}
510
  .c-worker__name{display:flex; align-items:baseline; gap:var(--s2); flex-wrap:wrap;
511
  margin:0 0 var(--s2); font-size:var(--t-label); font-weight:600;
512
- color:var(--c-text); min-width:0; overflow-wrap:anywhere;}
513
- .c-worker__id{font-family:var(--mono); font-size:10.5px; color:var(--c-muted);
514
  font-weight:400; overflow-wrap:anywhere;}
515
  /* An agent name, hostname or model id is chosen on someone else's machine. It
516
  is escaped on the way in by render.esc, which stops it becoming markup, but
@@ -526,22 +531,22 @@ footer,.gradio-container footer{display:none !important;}
526
  padding:var(--s4); box-shadow:var(--e1);}
527
  .c-panel__head{display:flex; align-items:baseline; justify-content:space-between;
528
  gap:var(--s2); margin:0 0 var(--s3);}
529
- .c-panel__title{font-size:var(--t-label); font-weight:600; color:var(--c-text);}
530
  .c-panel__boundary{font-size:10.5px; font-weight:600; letter-spacing:.07em;
531
- text-transform:uppercase; color:var(--c-muted); white-space:nowrap;}
532
  .c-panel__caveat{margin:var(--s3) 0 0; font-size:var(--t-micro); line-height:1.5;
533
- color:var(--c-muted);}
534
  .c-panel__never{margin:var(--s3) 0 0; padding-top:var(--s3); font-size:var(--t-micro);
535
- line-height:1.5; color:var(--c-muted);
536
  border-top:1px dashed var(--c-border) !important;}
537
  .c-energy{display:flex; flex-direction:column; gap:var(--s1);}
538
  .c-energy__value{margin:0; font-size:var(--t-body); font-weight:600;
539
- color:var(--c-text); font-variant-numeric:tabular-nums;}
540
  /* An absence is marked, never numeric. */
541
- .c-energy__value--absent{color:var(--c-text-2); font-weight:500;}
542
- .c-energy__dash{font-family:var(--mono); color:var(--c-muted); padding-right:6px;}
543
  .c-energy__line{margin:0; font-size:var(--t-micro); line-height:1.5;
544
- color:var(--c-text-2);}
545
 
546
  /* ========================================================================
547
  GRADE SHEET
@@ -554,21 +559,21 @@ footer,.gradio-container footer{display:none !important;}
554
  .c-rubric{display:flex; flex-direction:column; gap:var(--s4);}
555
  .c-legend{background:var(--c-fill); border-radius:var(--r-md); padding:var(--s4);}
556
  .c-legend__title{margin:0 0 var(--s2); font-size:var(--t-label); font-weight:600;
557
- color:var(--c-text);}
558
  .c-legend__body{margin:0; font-size:var(--t-label); line-height:1.55;
559
- color:var(--c-text-2); max-width:var(--measure);}
560
- .c-legend__body strong{color:var(--c-text); font-weight:600;}
561
  .c-legend__example{display:flex; gap:var(--s2); align-items:flex-start;
562
  margin:var(--s3) 0 0; padding:var(--s3);
563
  background:var(--c-surface); border-radius:var(--r-md);
564
- font-size:var(--t-micro); line-height:1.55; color:var(--c-text-2);
565
  max-width:var(--measure);}
566
  .c-legend__example-mark{flex:none; width:16px; height:16px; border-radius:50%;
567
- background:var(--c-sage-dark); color:#fff; font-size:11px;
568
  font-weight:700; display:grid; place-items:center;
569
  margin-top:1px;}
570
  .c-legend__never{margin:var(--s3) 0 0; padding-top:var(--s3); font-size:var(--t-micro);
571
- line-height:1.5; color:var(--c-muted);
572
  border-top:1px dashed var(--c-border) !important;}
573
 
574
  .c-grade-cards{display:grid; gap:var(--s3);
@@ -578,23 +583,23 @@ footer,.gradio-container footer{display:none !important;}
578
  display:flex; flex-direction:column; gap:var(--s3);}
579
  .c-grade-card__head{display:flex; align-items:baseline; justify-content:space-between;
580
  gap:var(--s2); margin:0; flex-wrap:wrap;}
581
- .c-grade-card__name{font-size:var(--t-body); font-weight:600; color:var(--c-text);}
582
- .c-grade-card__link{font-size:var(--t-micro); color:var(--c-sage-deep);
583
  text-decoration:underline; white-space:nowrap;}
584
  /* Coverage sits in the card head, beside the name, because it qualifies the
585
  whole card. "three of six areas published" is not a score and must never be
586
  read as one, so it is set as quiet metadata rather than as a result. */
587
- .c-grade-card__coverage{font-size:var(--t-micro); color:var(--c-text-2);
588
  font-variant-numeric:tabular-nums;}
589
  .c-grade-card__note{margin:0; padding-top:var(--s3); font-size:var(--t-micro);
590
- line-height:1.5; color:var(--c-muted);
591
  border-top:1px solid var(--c-hairline) !important;}
592
  .c-grade-rows{display:flex; flex-direction:column; gap:var(--s1);}
593
  .c-grade-row{display:flex; align-items:center; justify-content:space-between;
594
  gap:var(--s3); margin:0; padding:var(--s1) 0;
595
  border-bottom:1px solid var(--c-hairline) !important;}
596
  .c-grade-row:last-child{border-bottom:none !important;}
597
- .c-grade-row__label{font-size:var(--t-label); color:var(--c-text-2);}
598
 
599
  /* ONE TOKEN, NOT A NUMBER WITH A CAPTION.
600
  The figure and the method that produced it share a single border and a single
@@ -610,11 +615,11 @@ footer,.gradio-container footer{display:none !important;}
610
  border:1px solid var(--c-border) !important; border-radius:8px; overflow:hidden;
611
  font-variant-numeric:tabular-nums;}
612
  .c-fig__value{display:flex; align-items:center; padding:6px 9px;
613
- font-size:var(--t-label); font-weight:600; color:#22402C;
614
  background:var(--c-mint); white-space:nowrap;}
615
  .c-fig__method{display:flex; align-items:center; padding:0 8px;
616
  font-size:9.5px; font-weight:600; letter-spacing:.08em;
617
- text-transform:uppercase; color:var(--c-muted);
618
  background:var(--c-surface);
619
  border-left:1px solid var(--c-border) !important; white-space:nowrap;}
620
  /* A measured figure is the only one that gets the filled value. A modelled one
@@ -622,25 +627,25 @@ footer,.gradio-container footer{display:none !important;}
622
  by calculation rather than by metering, and the difference should read at a
623
  glance without either being dressed as a fault. */
624
  .c-fig--modelled .c-fig__value,
625
- .c-fig--proxy .c-fig__value{background:var(--c-fill); color:var(--c-text);}
626
  .c-fig--unknown{border-style:dotted;}
627
- .c-fig--unknown .c-fig__value{background:transparent; color:var(--c-text-2);}
628
  /* An absence is dashed, wordy and unfilled: it differs from a figure in shape,
629
  fill and content, because an absence drawn as a small number asserts a light
630
  result that nobody measured. */
631
  .c-fig--none{border-style:dashed; background:transparent;}
632
  .c-fig__word{display:flex; align-items:center; padding:6px 10px;
633
- font-size:var(--t-micro); font-weight:500; color:var(--c-muted);
634
  white-space:nowrap;}
635
 
636
  /* The card's own prose. Summary sits above the figures because a reader who
637
  stops after one paragraph should stop having read the caveat, not the
638
  headline number. */
639
  .c-grade-card__summary{margin:0; font-size:var(--t-label); line-height:1.6;
640
- color:var(--c-text-2);}
641
  .c-grade-card__covers{margin:0; font-size:var(--t-micro); line-height:1.55;
642
- color:var(--c-muted);}
643
- .c-grade-card__covers strong{color:var(--c-text-2); font-weight:600;}
644
  .c-grade-card__links{display:flex; flex-wrap:wrap; gap:var(--s3); margin:0;
645
  padding-top:var(--s3);
646
  border-top:1px solid var(--c-hairline) !important;}
@@ -651,7 +656,7 @@ footer,.gradio-container footer{display:none !important;}
651
  that is both complete and readable. */
652
  .c-sources{border-top:1px solid var(--c-hairline) !important; padding-top:var(--s3);}
653
  .c-sources__summary{cursor:pointer; font-size:var(--t-micro); font-weight:600;
654
- letter-spacing:.04em; color:var(--c-sage-deep);}
655
  .c-sources__summary:focus-visible{outline:2px solid var(--c-sage);
656
  outline-offset:2px; border-radius:3px;}
657
  .c-sources__body{display:flex; flex-direction:column; gap:var(--s2);
@@ -659,22 +664,22 @@ footer,.gradio-container footer{display:none !important;}
659
  .c-source{display:grid; grid-template-columns:minmax(88px,auto) 1fr;
660
  gap:var(--s1) var(--s3); margin:0; font-size:var(--t-micro);
661
  line-height:1.55;}
662
- .c-source__label{color:var(--c-text-2); font-weight:600;}
663
- .c-source__body{color:var(--c-muted);}
664
- .c-source__link{color:var(--c-sage-deep); text-decoration:underline;
665
  white-space:nowrap;}
666
 
667
  .c-reading{padding-top:var(--s3); border-top:1px dashed var(--c-border) !important;}
668
  .c-reading__title{margin:0 0 var(--s2); font-size:var(--t-micro); font-weight:600;
669
  letter-spacing:.06em; text-transform:uppercase;
670
- color:var(--c-muted);}
671
  .c-reading__links{display:flex; flex-direction:column; gap:var(--s1); margin:0;}
672
- .c-reading__link{font-size:var(--t-micro); color:var(--c-sage-deep);
673
  text-decoration:underline;}
674
 
675
  .c-rubric__warning{margin:0; padding:var(--s3); background:var(--c-mint);
676
  border-radius:var(--r-md); font-size:var(--t-micro);
677
- line-height:1.55; color:var(--c-text);}
678
 
679
  .c-legend__pair{display:grid; gap:var(--s3); margin:var(--s3) 0 0;
680
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));}
@@ -682,8 +687,8 @@ footer,.gradio-container footer{display:none !important;}
682
  gap:var(--s2); padding:var(--s3); background:var(--c-surface);
683
  border-radius:var(--r-md);}
684
  .c-legend__scale-body{margin:0; font-size:var(--t-micro); line-height:1.55;
685
- color:var(--c-text-2);}
686
- .c-legend__scale-body strong{color:var(--c-text); font-weight:600;}
687
 
688
  /* ========================================================================
689
  EMPTY STATES: no dashed drop-zone rectangles
@@ -691,11 +696,11 @@ footer,.gradio-container footer{display:none !important;}
691
  .c-empty{display:flex; flex-direction:column; align-items:flex-start;
692
  justify-content:center; text-align:left; gap:var(--s2);
693
  padding:var(--s5) var(--s4); height:100%;}
694
- .c-empty__glyph{font-size:16px; color:var(--c-sage-dark); opacity:.75; line-height:1;}
695
- .c-empty__title{margin:0; font-size:var(--t-lg); font-weight:600; color:var(--c-text);
696
  letter-spacing:-.015em;}
697
  .c-empty__body{margin:0; font-size:var(--t-label); line-height:1.55;
698
- color:var(--c-text-2); max-width:44ch;}
699
  .c-empty--compact{padding:var(--s4) 0; height:auto;}
700
  .c-empty--compact .c-empty__body{max-width:32ch; font-size:var(--t-micro);}
701
 
@@ -790,48 +795,48 @@ footer,.gradio-container footer{display:none !important;}
790
  .c-usage-panel{display:flex; flex-direction:column; gap:var(--s4);}
791
  .c-usage{display:flex; flex-direction:column; gap:1px;}
792
  .c-usage__label{margin:0; font-size:var(--t-micro); font-weight:600;
793
- letter-spacing:.04em; color:var(--c-muted);}
794
  .c-usage__figure{margin:2px 0 0; font-size:22px; line-height:1.15; font-weight:600;
795
- color:var(--c-text); font-variant-numeric:tabular-nums;}
796
- .c-usage--absent .c-usage__figure{color:var(--c-muted); font-size:18px;}
797
- .c-usage__means{margin:2px 0 0; font-size:var(--t-micro); color:var(--c-sage-dark);
798
  line-height:1.45;}
799
- .c-usage--absent .c-usage__means{color:var(--c-muted); font-style:italic;}
800
- .c-usage__detail{margin:3px 0 0; font-size:11px; color:var(--c-muted); line-height:1.45;}
801
  .c-usage__more{margin-top:var(--s3); border-top:1px solid var(--c-hairline) !important;
802
  padding-top:var(--s3);}
803
- .c-usage__moretoggle{cursor:pointer; font-size:var(--t-micro); color:var(--c-muted);
804
  list-style:none;}
805
  .c-usage__moretoggle::-webkit-details-marker{display:none;}
806
  .c-usage__moretoggle::after{content:" +"; opacity:.7;}
807
  details[open] .c-usage__moretoggle::after{content:" -";}
808
  .c-usage__morebody{margin-top:var(--s2); font-size:11px; line-height:1.5;
809
- color:var(--c-muted);}
810
 
811
  /* The worker's own figures, on the card for the machine they describe. */
812
  .c-worker__energy{margin:var(--s3) 0 0; display:flex; flex-direction:column; gap:1px;
813
  padding-top:var(--s3); border-top:1px solid var(--c-hairline) !important;}
814
- .c-worker__energy-figure{font-size:15px; font-weight:600; color:var(--c-text);
815
  font-variant-numeric:tabular-nums;}
816
- .c-worker__energy-means{font-size:var(--t-micro); color:var(--c-sage-dark);}
817
- .c-worker__energy-total{margin-top:3px; font-size:11px; color:var(--c-muted);
818
  line-height:1.45;}
819
- .c-worker__energy-note{margin-top:2px; font-size:11px; color:var(--c-muted);
820
  font-style:italic;}
821
- .c-worker__energy--absent{font-size:var(--t-micro); color:var(--c-muted);
822
  line-height:1.45; font-style:italic;}
823
 
824
  /* Scope headings inside the energy panel. Small and quiet: they label the
825
  figure, they are not the figure. */
826
  .c-energy__scope{font-size:var(--t-micro); font-weight:600; letter-spacing:.04em;
827
- color:var(--c-muted); margin:var(--s3) 0 2px;}
828
  .c-energy>.c-energy__scope:first-child{margin-top:0;}
829
 
830
  /* An explanation under a worker card, for a state the chips cannot carry
831
  alone. Used by "unapproved", where the useful information is what the
832
  operator has to do next. */
833
  .c-worker__note{margin:var(--s2) 0 0; font-size:var(--t-micro); line-height:1.45;
834
- color:var(--c-muted); max-width:44ch;}
835
 
836
  /* ========================================================================
837
  LIVE ACTIVITY
@@ -845,11 +850,11 @@ details[open] .c-usage__moretoggle::after{content:" -";}
845
  .c-activity--wait{border-left-color:#C8A24A;}
846
  .c-activity--done{border-left-color:var(--c-sage-dark);}
847
  .c-activity__head{display:flex; align-items:center; gap:var(--s2); margin:0;}
848
- .c-activity__headline{font-weight:600; color:var(--c-text); font-size:var(--t-body);}
849
- .c-activity__dot{color:var(--c-sage-dark);}
850
- .c-activity__detail{margin:6px 0 0; color:var(--c-muted); line-height:1.5;
851
  max-width:var(--measure); overflow-wrap:anywhere;}
852
- .c-activity__timing,.c-activity__note{margin:6px 0 0; color:var(--c-muted);
853
  font-size:var(--t-micro);}
854
  .c-activity__note{font-style:italic;}
855
  .c-activity__bar{margin-top:var(--s3); height:4px; border-radius:2px;
@@ -894,11 +899,11 @@ details[open] .c-usage__moretoggle::after{content:" -";}
894
  .c-receipt{padding:var(--s3) 0; border-top:1px solid var(--c-hairline) !important;}
895
  .c-receipt__head{margin:0; display:flex; align-items:baseline; gap:var(--s2);
896
  flex-wrap:wrap;}
897
- .c-receipt__turn{font-size:var(--t-micro); font-weight:600; color:var(--c-muted);
898
  letter-spacing:.04em;}
899
- .c-receipt__cost{font-size:16px; font-weight:600; color:var(--c-text);
900
  font-variant-numeric:tabular-nums;}
901
- .c-receipt__means{font-size:var(--t-micro); color:var(--c-sage-dark);}
902
  .c-receipt .c-chips{margin-top:2px;}
903
  .c-receipt .c-steps{margin-top:var(--s2); padding-top:var(--s2);}
904
 
@@ -906,13 +911,13 @@ details[open] .c-usage__moretoggle::after{content:" -";}
906
  Folded away by default: the trace above already says which tools ran, and
907
  this is for the moment you want to know why. */
908
  .c-turns{margin-top:var(--s2); font-size:var(--t-micro);}
909
- .c-turns__toggle{cursor:pointer; color:var(--c-muted); list-style:none;
910
  padding:2px 0; user-select:none;}
911
  .c-turns__toggle::-webkit-details-marker{display:none;}
912
  .c-turns__toggle::after{content:" +"; opacity:.7;}
913
  details[open]>.c-turns__toggle::after{content:" -";}
914
  .c-turns .c-steps{margin-top:var(--s1); border-top:1px solid var(--c-hairline) !important;}
915
- .c-step__lead{color:var(--c-muted); margin-right:5px;}
916
 
917
  /* A run that ended without an answer. It is not a message and it is not a
918
  cost, so it is neither a bubble nor a receipt: one line, attached to the
@@ -923,8 +928,8 @@ details[open]>.c-turns__toggle::after{content:" -";}
923
  background:#FDF8EA; border-left:2px solid var(--c-warn-rule) !important;
924
  border-radius:0 var(--r-md) var(--r-md) 0;
925
  padding:var(--s2) var(--s3); font-size:var(--t-micro);
926
- color:var(--c-text-2);}
927
- .c-outcome__turn{flex:0 0 auto; font-weight:600; color:#5A4512;}
928
  .c-outcome__text{min-width:0; overflow-wrap:anywhere;}
929
 
930
  /* ========================================================================
@@ -934,15 +939,15 @@ details[open]>.c-turns__toggle::after{content:" -";}
934
  border-top:1px solid var(--c-hairline) !important;
935
  display:flex; flex-direction:column; gap:5px;}
936
  .c-step{display:flex; align-items:flex-start; gap:var(--s2);
937
- font-size:var(--t-micro); line-height:1.45; color:var(--c-muted);}
938
- .c-step__mark{flex:0 0 12px; text-align:center; color:var(--c-muted);}
939
- .c-step--ok .c-step__mark{color:var(--c-sage-dark);}
940
- .c-step--warn .c-step__mark{color:#A8541F;}
941
- .c-step--work .c-step__mark{color:var(--c-text);}
942
  .c-step__body{min-width:0; overflow-wrap:anywhere;}
943
  .c-step__tool{background:var(--c-fill); border-radius:4px; padding:1px 5px;
944
- margin-right:6px; font-size:11px; color:var(--c-text);}
945
- .c-step__timing{margin-left:auto; flex:0 0 auto; color:var(--c-muted);
946
  font-variant-numeric:tabular-nums;}
947
 
948
  /* ========================================================================
@@ -1175,7 +1180,7 @@ details[open]>.c-turns__toggle::after{content:" -";}
1175
 
1176
  /* What the offered library members actually do, one click from the picker. */
1177
  .c-libhelp{margin:var(--s2) 0 0; font-size:var(--t-micro);}
1178
- .c-libhelp__toggle{cursor:pointer; color:var(--c-muted); list-style:none;}
1179
  .c-libhelp__toggle::-webkit-details-marker{display:none;}
1180
  .c-libhelp__toggle::after{content:" +"; opacity:.7;}
1181
  details[open] .c-libhelp__toggle::after{content:" -";}
@@ -1183,13 +1188,13 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1183
  display:flex; flex-direction:column; gap:6px;}
1184
  .c-libhelp__item{display:flex; flex-wrap:wrap; align-items:baseline; gap:6px;
1185
  line-height:1.45;}
1186
- .c-libhelp__name{font-weight:600; color:var(--c-text);}
1187
- .c-libhelp__kind{font-size:11px; color:var(--c-muted); text-transform:uppercase;
1188
  letter-spacing:.06em;}
1189
  .c-libhelp__ref{background:var(--c-fill); border-radius:4px; padding:1px 5px;
1190
- font-size:11px; color:var(--c-muted);}
1191
- .c-libhelp__what{flex:1 1 100%; color:var(--c-muted); max-width:var(--measure);}
1192
- .c-libhelp__note{margin:var(--s2) 0 0; color:var(--c-muted); font-style:italic;}
1193
 
1194
  .c-composer-foot{display:flex !important; align-items:center !important;
1195
  justify-content:space-between !important; gap:var(--s3) !important;
@@ -1284,7 +1289,7 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1284
  .c-shell>*:has(.c-skip){height:0 !important; min-height:0 !important;
1285
  overflow:visible !important;}
1286
  .c-skip{position:absolute; left:-9999px; top:0; background:var(--c-surface);
1287
- color:var(--c-sage-deep); padding:var(--s3) var(--s4);
1288
  border-radius:var(--r-md); z-index:100; font-weight:600;}
1289
  .c-skip:focus{left:var(--s4); top:var(--s4);}
1290
 
@@ -1301,20 +1306,20 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1301
  The address and the code are the two things a person copies, so they are
1302
  the two things drawn as copyable blocks rather than as prose. */
1303
  .c-join{display:flex; flex-direction:column; gap:var(--s2); max-width:var(--measure);}
1304
- .c-join__lead{margin:var(--s2) 0 0; font-size:var(--t-micro); color:var(--c-muted);}
1305
  .c-join__address,.c-join__code{
1306
  display:block; background:var(--c-fill); border:1px solid var(--c-hairline) !important;
1307
  border-radius:var(--r-md); padding:var(--s3); font-family:var(--mono);
1308
- font-size:var(--t-label); color:var(--c-text); word-break:break-all;
1309
  user-select:all;}
1310
  .c-join__alts{list-style:none; margin:0; padding:0; display:flex;
1311
  flex-direction:column; gap:4px;}
1312
- .c-join__alt{font-family:var(--mono); font-size:var(--t-micro); color:var(--c-muted);}
1313
  .c-join__cmd{margin:0; background:var(--c-surface); border:1px solid var(--c-hairline) !important;
1314
  border-radius:var(--r-md); padding:var(--s3); font-family:var(--mono);
1315
  font-size:11.5px; line-height:1.6; overflow-x:auto; white-space:pre;
1316
- color:var(--c-text-2); user-select:all;}
1317
- .c-join__note{margin:0; font-size:var(--t-micro); color:var(--c-muted);
1318
  line-height:1.55; max-width:56ch;}
1319
  .c-join__note code{font-family:var(--mono); font-size:11px;
1320
  background:var(--c-fill); border-radius:4px; padding:1px 5px;}
@@ -1330,12 +1335,12 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1330
  .c-step-num{display:flex; gap:var(--s3); align-items:flex-start;}
1331
  .c-step-num__n{flex:none; width:24px; height:24px; border-radius:50%;
1332
  display:grid; place-items:center; margin-top:1px;
1333
- background:var(--c-mint); color:var(--c-sage-deep);
1334
  font-size:12px; font-weight:700;}
1335
  .c-step-num__body{flex:1 1 auto; min-width:0; display:flex;
1336
  flex-direction:column; gap:var(--s2);}
1337
  .c-step-num__head{margin:0; font-size:var(--t-body); font-weight:650;
1338
- color:var(--c-text); letter-spacing:-.01em;}
1339
 
1340
  .c-join__qr{margin-top:var(--s3);}
1341
  .c-join__qr svg{width:160px; height:160px; display:block;
@@ -1369,8 +1374,8 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1369
  .c-credit{display:flex; align-items:flex-start; gap:var(--s3); margin:0; max-width:100%;}
1370
  .c-credit__img{width:56px; height:36px; object-fit:cover; border-radius:6px;
1371
  display:block; flex:none;}
1372
- .c-credit__text{font-size:10.5px; line-height:1.45; color:var(--c-muted);}
1373
- .c-credit__text a{color:var(--c-sage-deep); text-decoration:underline;}
1374
  .c-credit--compact{gap:var(--s2);}
1375
  .c-credit--compact .c-credit__img{width:44px; height:28px;}
1376
 
@@ -1502,18 +1507,18 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1502
  selected state has to survive a squint test: accent border, filled check,
1503
  tinted wash — three signals, any one of which is enough. */
1504
  .c-libpage{max-width:var(--shell-max); margin:0 auto; padding:var(--s5) var(--shell-pad) var(--s8);}
1505
- .c-libpage__back{font-size:var(--t-label); color:var(--c-text-2); text-decoration:none;
1506
  display:inline-flex; align-items:center; gap:6px;}
1507
- .c-libpage__back:hover{color:var(--c-text);}
1508
  .c-libpage__title{margin:var(--s3) 0 4px; font-family:var(--font-display);
1509
  font-weight:600; font-size:clamp(26px,4vw,34px); letter-spacing:-.015em;
1510
- color:var(--c-text);}
1511
- .c-libpage__lede{margin:0 0 var(--s5); max-width:var(--measure); color:var(--c-text-2);}
1512
  .c-libsave{position:sticky; top:0; z-index:9; display:flex; align-items:center; gap:var(--s3);
1513
  background:color-mix(in srgb, var(--c-canvas) 88%, transparent);
1514
  backdrop-filter:blur(6px); padding:var(--s2) 0; margin-bottom:var(--s2);}
1515
- .c-libsave__count{font-size:var(--t-label); color:var(--c-text-2);}
1516
- .c-libsave__count strong{color:var(--c-sage-deep); font-weight:650;}
1517
 
1518
  .c-libgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
1519
  gap:var(--s4); margin:var(--s4) 0;}
@@ -1532,11 +1537,11 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1532
  width:24px; height:24px; border-radius:50%;
1533
  display:flex; align-items:center; justify-content:center;
1534
  font-size:14px; line-height:1;
1535
- border:1.5px solid var(--c-border) !important; color:var(--c-muted);
1536
  background:var(--c-surface);
1537
  transition:all .15s ease;}
1538
  .c-libcard.is-on .c-libcard__check{border-color:var(--c-accent);
1539
- background:var(--c-accent); color:#fff;}
1540
  .c-libcard__check::before{content:"+";}
1541
  .c-libcard.is-on .c-libcard__check::before{content:"✓";}
1542
  .c-libcard__media{margin:calc(var(--s4)*-1) calc(var(--s4)*-1) var(--s2);
@@ -1553,12 +1558,12 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1553
  .c-libcard__media.is-playing .c-libcard__poster{opacity:0;}
1554
  .c-libcard__play{position:relative; z-index:1;
1555
  display:inline-flex; align-items:center; gap:6px;
1556
- font-size:var(--t-micro); color:var(--c-text-2);
1557
  background:color-mix(in srgb, var(--c-surface) 92%, transparent);
1558
  border:1px solid var(--c-hairline) !important; backdrop-filter:blur(3px);
1559
  border-radius:999px; padding:4px 10px; opacity:0;
1560
  transition:opacity .15s ease;}
1561
- .c-libcard__play::before{content:"▶"; font-size:9px; color:var(--c-sage-deep);}
1562
  /* The invitation appears on approach and never sits permanently over the
1563
  result it is inviting you to watch. Always visible where there is no
1564
  poster to obscure, since then it is the only thing in the frame. */
@@ -1569,17 +1574,17 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1569
  .c-libcard__head{display:flex; align-items:center; gap:var(--s2); padding-right:28px;}
1570
  .c-libcard__kind{font-size:var(--t-micro); letter-spacing:.06em; text-transform:uppercase;
1571
  padding:2px 8px; border-radius:999px; background:var(--c-fill);
1572
- color:var(--c-text-2); flex:none;}
1573
- .c-libcard__kind--skill{background:var(--c-mint); color:var(--c-sage-deep);}
1574
- .c-libcard__name{margin:0; font-size:var(--t-body); font-weight:650; color:var(--c-text);
1575
  text-transform:capitalize;}
1576
- .c-libcard__author{margin:0; font-size:var(--t-micro); color:var(--c-muted);}
1577
  .c-libcard__desc{margin:2px 0 0; font-size:13px; line-height:1.5;
1578
- color:var(--c-text-2);
1579
  display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical;
1580
  overflow:hidden;}
1581
  .c-libcard__ref{margin-top:auto; padding-top:var(--s2); font-family:var(--mono);
1582
- font-size:11px; color:var(--c-muted);}
1583
 
1584
  /* ---- Navigation, in the header band -----------------------------------
1585
  A button (the library, which navigates) beside a link (a section of this
@@ -1697,8 +1702,8 @@ details[open] .c-libhelp__toggle::after{content:" -";}
1697
  .c-shell:has(.c-identity:not(:empty)):has(.c-noworker-hook) .c-chat{
1698
  min-height:300px !important; max-height:300px !important;}
1699
  }
1700
- .c-veil__title{margin:0 0 6px; font-weight:650; font-size:var(--t-lg); color:var(--c-text);}
1701
- .c-veil__body{margin:0 0 var(--s4); color:var(--c-text-2); line-height:1.55;}
1702
  /* The colour is forced for the same reason the borders are: gradio styles
1703
  anchors inside its container with two classes, which outranks ours, so the
1704
  white label on this button was being repainted the theme's link green —
@@ -1764,9 +1769,9 @@ nav.navbar, .gradio-container .navbar{display:none !important;}
1764
  padding:8px var(--s3); border-bottom:1px solid var(--c-hairline) !important;
1765
  background:var(--c-fill);}
1766
  .c-madecard__dot{width:8px; height:8px; border-radius:50%; background:var(--c-accent); flex:none;}
1767
- .c-madecard__name{font-family:var(--mono); font-size:12px; color:var(--c-text);
1768
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
1769
- .c-madecard__kind{margin-left:auto; flex:none; font-size:var(--t-micro); color:var(--c-muted);
1770
  letter-spacing:.05em; text-transform:uppercase;}
1771
  /* A glance, not a document viewer. The preview sits inside a conversation
1772
  and has to read as one object at one glance; at 340px it was a scrolling
@@ -1781,7 +1786,7 @@ nav.navbar, .gradio-container .navbar{display:none !important;}
1781
  background:linear-gradient(to bottom, transparent, var(--c-surface));}
1782
  /* A document page: a white sheet with real margins and the actual text. */
1783
  .c-made--doc .c-madecard__body{font-family:Georgia,'Times New Roman',serif;
1784
- color:#26241F; line-height:1.6; font-size:13.5px;}
1785
  .c-made--doc .c-madecard__body h4{margin:0 0 8px; font-size:16px; font-weight:700;}
1786
  .c-made--doc .c-madecard__body p{margin:0 0 8px;}
1787
  /* A sheet: a real grid of the actual cells. */
@@ -1794,8 +1799,8 @@ nav.navbar, .gradio-container .navbar{display:none !important;}
1794
  gap:var(--s2);}
1795
  .c-madeslide{aspect-ratio:16/9; border:1px solid var(--c-hairline) !important; border-radius:6px;
1796
  background:#fff; padding:8px; display:flex; flex-direction:column; gap:3px; overflow:hidden;}
1797
- .c-madeslide__no{font-size:9px; color:var(--c-muted);}
1798
- .c-madeslide__title{font-size:11px; font-weight:650; color:var(--c-text); line-height:1.25;}
1799
  .c-madeslide__line{height:3px; border-radius:2px; background:var(--c-fill); width:86%;}
1800
  .c-madeslide__line+.c-madeslide__line{width:70%;}
1801
  /* Code or plain text: the content itself, monospaced. */
@@ -1805,10 +1810,10 @@ nav.navbar, .gradio-container .navbar{display:none !important;}
1805
  its own taller cap, which meant a stylesheet came back twice the height of
1806
  a document and the shelf of results had no common measure. */
1807
  .c-made--text pre{margin:0; padding:var(--s3) var(--s4); font-family:var(--mono);
1808
- font-size:12px; line-height:1.55; color:var(--c-text); overflow:hidden; max-height:210px;
1809
  white-space:pre-wrap; overflow-wrap:anywhere;}
1810
  .c-made__foot{padding:6px var(--s3); border-top:1px solid var(--c-hairline) !important;
1811
- font-size:var(--t-micro); color:var(--c-muted);}
1812
 
1813
  @media (max-width:700px){
1814
  .c-libgrid{grid-template-columns:1fr; gap:var(--s3);}
 
301
  .c-eyebrow{
302
  display:flex; align-items:baseline; justify-content:space-between; gap:var(--s2);
303
  font-size:var(--t-micro); font-weight:600; letter-spacing:.09em;
304
+ text-transform:uppercase; color:var(--c-muted) !important;
305
  margin:var(--s4) 0 var(--s2); padding-bottom:var(--s2);
306
  border-bottom:1px solid var(--c-hairline) !important;
307
  }
308
  .c-side>*:first-child .c-eyebrow,.c-eyebrow:first-child{margin-top:0;}
309
  .c-eyebrow__note{text-transform:none; letter-spacing:0; font-weight:400;}
310
  .c-note{display:flex; align-items:flex-start; gap:var(--s2); flex-wrap:wrap;
311
+ margin:0; font-size:var(--t-micro); color:var(--c-muted) !important;}
312
  .c-note__text{max-width:var(--measure); line-height:1.5;}
313
 
314
  /* ========================================================================
 
321
  }
322
  .c-header__brand{display:flex; align-items:baseline; gap:var(--s3); min-width:0;}
323
  .c-wordmark{font-size:var(--t-display); font-weight:700; letter-spacing:-.045em;
324
+ line-height:1; color:var(--c-text) !important; white-space:nowrap;}
325
+ .c-wordmark__dot{color:var(--c-sage-dark) !important;}
326
+ .c-tagline{font-size:var(--t-label); font-weight:400; color:var(--c-text-2) !important;
327
  line-height:1; white-space:nowrap; overflow:hidden;
328
  text-overflow:ellipsis; padding-left:var(--s3);
329
  border-left:1px solid var(--c-hairline) !important;}
330
  /* Who you are, said quietly. This was a floating white pill with a shadow,
331
  which gave the top of the page a second object competing with the
332
  wordmark for the eye; it is a caption, so it is set like one. */
333
+ .c-identity{font-size:var(--t-micro); color:var(--c-muted) !important; white-space:nowrap;
334
  overflow:hidden; text-overflow:ellipsis; max-width:38ch;}
335
  .c-identity--link{text-decoration:underline; cursor:pointer;}
336
 
 
361
  .c-splash__head{display:flex; flex-direction:column; align-items:flex-start;
362
  gap:var(--s4);}
363
  .c-splash__mark{margin:0; font-size:var(--t-display); font-weight:700;
364
+ letter-spacing:-.045em; line-height:1; color:var(--c-text) !important;}
365
  .c-splash__display{
366
  margin:0; font-family:var(--font-display);
367
  font-size:clamp(2.6rem,1.1rem + 4.6vw,4.6rem);
368
+ line-height:1.02; letter-spacing:-.035em; color:var(--c-text) !important;
369
  font-weight:680; font-optical-sizing:auto; text-wrap:balance;
370
  }
371
  /* The second line carries the claim, so it is the one that changes colour and
372
  weight. Sage-deep at 9.2:1 clears AA comfortably at any size. */
373
+ .c-splash__display-2{color:var(--c-sage-deep) !important; font-weight:560;}
374
  .c-splash__lede{margin:0; max-width:46ch; font-size:var(--t-lg);
375
+ line-height:1.5; color:var(--c-text-2) !important;}
376
+ .c-splash__meta{margin:0; font-size:var(--t-micro); color:var(--c-muted) !important;
377
  letter-spacing:.02em;}
378
  .c-splash__figure{margin:0; display:flex; flex-direction:column; gap:var(--s3);
379
  min-width:0;}
 
381
  box-shadow:var(--e2);}
382
  /* The credit sits beside the image it belongs to and is never collapsed
383
  behind a control. It is a licence condition, not a caption. */
384
+ .c-splash__credit{font-size:var(--t-micro); line-height:1.5; color:var(--c-muted) !important;
385
  max-width:52ch;}
386
+ .c-splash__credit a{color:var(--c-sage-deep) !important; text-decoration:underline;}
387
  .c-splash__copy button.primary{
388
  min-width:190px !important; padding:12px 22px !important;
389
  font-size:var(--t-body) !important; flex:0 0 auto !important;
 
422
  which a non-flex parent then put on a line of its own. */
423
  .c-notice__summary{display:flex !important; align-items:flex-start; gap:var(--s3);
424
  flex-wrap:wrap; cursor:pointer; list-style:none;
425
+ font-size:var(--t-label); color:var(--c-text-2) !important;
426
  line-height:1.5;}
427
  .c-notice__summary>span:nth-child(2){flex:1 1 180px; min-width:0;}
428
  .c-notice__summary::-webkit-details-marker{display:none;}
429
+ .c-notice__summary strong{color:var(--c-text) !important; font-weight:600 !important;}
430
  /* inline-grid, not grid: a block-level box in a row that failed to become a
431
  flex container takes the whole line to itself, which is exactly how this
432
  mark ended up stranded above its own sentence. Inline-grid centres the
433
  glyph just as well and cannot claim a line. */
434
  .c-notice__mark{flex:none; width:16px; height:16px; border-radius:50%;
435
  margin-top:2px;
436
+ border:1.5px solid var(--c-warn-rule) !important;
437
+ /* Forced for the same reason as the border: gradio paints
438
+ everything inside `.prose` with the body ink at a
439
+ specificity ours cannot reach, which left an ochre ring
440
+ around a black glyph. */
441
+ color:var(--c-warn-rule) !important;
442
  font-size:10px; font-weight:700;
443
  display:inline-grid; place-items:center;}
444
  .c-notice__toggle{margin-left:auto; white-space:nowrap; font-size:var(--t-micro);
445
+ color:var(--c-muted) !important; text-decoration:underline;
446
  text-underline-offset:2px; padding-left:var(--s3);}
447
  @media (max-width:700px){
448
  /* Its own line, aligned with the sentence it opens rather than the mark. */
449
  .c-notice__toggle{flex:1 0 100%; margin:var(--s2) 0 0 28px; padding-left:0;}
450
  }
451
  .c-notice__body{margin:var(--s3) 0 var(--s1) 28px; font-size:var(--t-micro);
452
+ line-height:1.6; color:var(--c-text-2) !important; max-width:var(--measure);}
453
  .c-notice__summary:focus-visible{outline:3px solid var(--c-sage); outline-offset:3px;
454
  border-radius:var(--r-md);}
455
 
 
494
  display:inline-flex; align-items:center; gap:5px;
495
  height:22px; padding:0 9px; border-radius:var(--r-pill);
496
  font-size:var(--t-micro); line-height:1; white-space:nowrap;
497
+ background:var(--c-fill); color:var(--c-text-2) !important;
498
  border:1px solid transparent !important;
499
  }
500
  .c-chip__glyph{font-size:8px; line-height:1;}
501
+ .c-chip--ok{background:var(--c-mint); color:#22402C !important;}
502
+ .c-chip--work{background:#E7EFE2; color:var(--c-sage-deep) !important;}
503
+ .c-chip--warn{background:#F5EDDB; color:#5A4512 !important;}
504
+ .c-chip--off{background:#ECEDEA; color:#454A45 !important;}
505
+ .c-chip--outline{background:transparent; color:var(--c-muted) !important;
506
  border:1px dashed var(--c-border) !important;}
507
 
508
  /* ========================================================================
 
514
  .c-worker--offline{opacity:.7;}
515
  .c-worker__name{display:flex; align-items:baseline; gap:var(--s2); flex-wrap:wrap;
516
  margin:0 0 var(--s2); font-size:var(--t-label); font-weight:600;
517
+ color:var(--c-text) !important; min-width:0; overflow-wrap:anywhere;}
518
+ .c-worker__id{font-family:var(--mono); font-size:10.5px; color:var(--c-muted) !important;
519
  font-weight:400; overflow-wrap:anywhere;}
520
  /* An agent name, hostname or model id is chosen on someone else's machine. It
521
  is escaped on the way in by render.esc, which stops it becoming markup, but
 
531
  padding:var(--s4); box-shadow:var(--e1);}
532
  .c-panel__head{display:flex; align-items:baseline; justify-content:space-between;
533
  gap:var(--s2); margin:0 0 var(--s3);}
534
+ .c-panel__title{font-size:var(--t-label); font-weight:600; color:var(--c-text) !important;}
535
  .c-panel__boundary{font-size:10.5px; font-weight:600; letter-spacing:.07em;
536
+ text-transform:uppercase; color:var(--c-muted) !important; white-space:nowrap;}
537
  .c-panel__caveat{margin:var(--s3) 0 0; font-size:var(--t-micro); line-height:1.5;
538
+ color:var(--c-muted) !important;}
539
  .c-panel__never{margin:var(--s3) 0 0; padding-top:var(--s3); font-size:var(--t-micro);
540
+ line-height:1.5; color:var(--c-muted) !important;
541
  border-top:1px dashed var(--c-border) !important;}
542
  .c-energy{display:flex; flex-direction:column; gap:var(--s1);}
543
  .c-energy__value{margin:0; font-size:var(--t-body); font-weight:600;
544
+ color:var(--c-text) !important; font-variant-numeric:tabular-nums;}
545
  /* An absence is marked, never numeric. */
546
+ .c-energy__value--absent{color:var(--c-text-2) !important; font-weight:500;}
547
+ .c-energy__dash{font-family:var(--mono); color:var(--c-muted) !important; padding-right:6px;}
548
  .c-energy__line{margin:0; font-size:var(--t-micro); line-height:1.5;
549
+ color:var(--c-text-2) !important;}
550
 
551
  /* ========================================================================
552
  GRADE SHEET
 
559
  .c-rubric{display:flex; flex-direction:column; gap:var(--s4);}
560
  .c-legend{background:var(--c-fill); border-radius:var(--r-md); padding:var(--s4);}
561
  .c-legend__title{margin:0 0 var(--s2); font-size:var(--t-label); font-weight:600;
562
+ color:var(--c-text) !important;}
563
  .c-legend__body{margin:0; font-size:var(--t-label); line-height:1.55;
564
+ color:var(--c-text-2) !important; max-width:var(--measure);}
565
+ .c-legend__body strong{color:var(--c-text) !important; font-weight:600;}
566
  .c-legend__example{display:flex; gap:var(--s2); align-items:flex-start;
567
  margin:var(--s3) 0 0; padding:var(--s3);
568
  background:var(--c-surface); border-radius:var(--r-md);
569
+ font-size:var(--t-micro); line-height:1.55; color:var(--c-text-2) !important;
570
  max-width:var(--measure);}
571
  .c-legend__example-mark{flex:none; width:16px; height:16px; border-radius:50%;
572
+ background:var(--c-sage-dark); color:#fff !important; font-size:11px;
573
  font-weight:700; display:grid; place-items:center;
574
  margin-top:1px;}
575
  .c-legend__never{margin:var(--s3) 0 0; padding-top:var(--s3); font-size:var(--t-micro);
576
+ line-height:1.5; color:var(--c-muted) !important;
577
  border-top:1px dashed var(--c-border) !important;}
578
 
579
  .c-grade-cards{display:grid; gap:var(--s3);
 
583
  display:flex; flex-direction:column; gap:var(--s3);}
584
  .c-grade-card__head{display:flex; align-items:baseline; justify-content:space-between;
585
  gap:var(--s2); margin:0; flex-wrap:wrap;}
586
+ .c-grade-card__name{font-size:var(--t-body); font-weight:600; color:var(--c-text) !important;}
587
+ .c-grade-card__link{font-size:var(--t-micro); color:var(--c-sage-deep) !important;
588
  text-decoration:underline; white-space:nowrap;}
589
  /* Coverage sits in the card head, beside the name, because it qualifies the
590
  whole card. "three of six areas published" is not a score and must never be
591
  read as one, so it is set as quiet metadata rather than as a result. */
592
+ .c-grade-card__coverage{font-size:var(--t-micro); color:var(--c-text-2) !important;
593
  font-variant-numeric:tabular-nums;}
594
  .c-grade-card__note{margin:0; padding-top:var(--s3); font-size:var(--t-micro);
595
+ line-height:1.5; color:var(--c-muted) !important;
596
  border-top:1px solid var(--c-hairline) !important;}
597
  .c-grade-rows{display:flex; flex-direction:column; gap:var(--s1);}
598
  .c-grade-row{display:flex; align-items:center; justify-content:space-between;
599
  gap:var(--s3); margin:0; padding:var(--s1) 0;
600
  border-bottom:1px solid var(--c-hairline) !important;}
601
  .c-grade-row:last-child{border-bottom:none !important;}
602
+ .c-grade-row__label{font-size:var(--t-label); color:var(--c-text-2) !important;}
603
 
604
  /* ONE TOKEN, NOT A NUMBER WITH A CAPTION.
605
  The figure and the method that produced it share a single border and a single
 
615
  border:1px solid var(--c-border) !important; border-radius:8px; overflow:hidden;
616
  font-variant-numeric:tabular-nums;}
617
  .c-fig__value{display:flex; align-items:center; padding:6px 9px;
618
+ font-size:var(--t-label); font-weight:600; color:#22402C !important;
619
  background:var(--c-mint); white-space:nowrap;}
620
  .c-fig__method{display:flex; align-items:center; padding:0 8px;
621
  font-size:9.5px; font-weight:600; letter-spacing:.08em;
622
+ text-transform:uppercase; color:var(--c-muted) !important;
623
  background:var(--c-surface);
624
  border-left:1px solid var(--c-border) !important; white-space:nowrap;}
625
  /* A measured figure is the only one that gets the filled value. A modelled one
 
627
  by calculation rather than by metering, and the difference should read at a
628
  glance without either being dressed as a fault. */
629
  .c-fig--modelled .c-fig__value,
630
+ .c-fig--proxy .c-fig__value{background:var(--c-fill); color:var(--c-text) !important;}
631
  .c-fig--unknown{border-style:dotted;}
632
+ .c-fig--unknown .c-fig__value{background:transparent; color:var(--c-text-2) !important;}
633
  /* An absence is dashed, wordy and unfilled: it differs from a figure in shape,
634
  fill and content, because an absence drawn as a small number asserts a light
635
  result that nobody measured. */
636
  .c-fig--none{border-style:dashed; background:transparent;}
637
  .c-fig__word{display:flex; align-items:center; padding:6px 10px;
638
+ font-size:var(--t-micro); font-weight:500; color:var(--c-muted) !important;
639
  white-space:nowrap;}
640
 
641
  /* The card's own prose. Summary sits above the figures because a reader who
642
  stops after one paragraph should stop having read the caveat, not the
643
  headline number. */
644
  .c-grade-card__summary{margin:0; font-size:var(--t-label); line-height:1.6;
645
+ color:var(--c-text-2) !important;}
646
  .c-grade-card__covers{margin:0; font-size:var(--t-micro); line-height:1.55;
647
+ color:var(--c-muted) !important;}
648
+ .c-grade-card__covers strong{color:var(--c-text-2) !important; font-weight:600;}
649
  .c-grade-card__links{display:flex; flex-wrap:wrap; gap:var(--s3); margin:0;
650
  padding-top:var(--s3);
651
  border-top:1px solid var(--c-hairline) !important;}
 
656
  that is both complete and readable. */
657
  .c-sources{border-top:1px solid var(--c-hairline) !important; padding-top:var(--s3);}
658
  .c-sources__summary{cursor:pointer; font-size:var(--t-micro); font-weight:600;
659
+ letter-spacing:.04em; color:var(--c-sage-deep) !important;}
660
  .c-sources__summary:focus-visible{outline:2px solid var(--c-sage);
661
  outline-offset:2px; border-radius:3px;}
662
  .c-sources__body{display:flex; flex-direction:column; gap:var(--s2);
 
664
  .c-source{display:grid; grid-template-columns:minmax(88px,auto) 1fr;
665
  gap:var(--s1) var(--s3); margin:0; font-size:var(--t-micro);
666
  line-height:1.55;}
667
+ .c-source__label{color:var(--c-text-2) !important; font-weight:600;}
668
+ .c-source__body{color:var(--c-muted) !important;}
669
+ .c-source__link{color:var(--c-sage-deep) !important; text-decoration:underline;
670
  white-space:nowrap;}
671
 
672
  .c-reading{padding-top:var(--s3); border-top:1px dashed var(--c-border) !important;}
673
  .c-reading__title{margin:0 0 var(--s2); font-size:var(--t-micro); font-weight:600;
674
  letter-spacing:.06em; text-transform:uppercase;
675
+ color:var(--c-muted) !important;}
676
  .c-reading__links{display:flex; flex-direction:column; gap:var(--s1); margin:0;}
677
+ .c-reading__link{font-size:var(--t-micro); color:var(--c-sage-deep) !important;
678
  text-decoration:underline;}
679
 
680
  .c-rubric__warning{margin:0; padding:var(--s3); background:var(--c-mint);
681
  border-radius:var(--r-md); font-size:var(--t-micro);
682
+ line-height:1.55; color:var(--c-text) !important;}
683
 
684
  .c-legend__pair{display:grid; gap:var(--s3); margin:var(--s3) 0 0;
685
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));}
 
687
  gap:var(--s2); padding:var(--s3); background:var(--c-surface);
688
  border-radius:var(--r-md);}
689
  .c-legend__scale-body{margin:0; font-size:var(--t-micro); line-height:1.55;
690
+ color:var(--c-text-2) !important;}
691
+ .c-legend__scale-body strong{color:var(--c-text) !important; font-weight:600;}
692
 
693
  /* ========================================================================
694
  EMPTY STATES: no dashed drop-zone rectangles
 
696
  .c-empty{display:flex; flex-direction:column; align-items:flex-start;
697
  justify-content:center; text-align:left; gap:var(--s2);
698
  padding:var(--s5) var(--s4); height:100%;}
699
+ .c-empty__glyph{font-size:16px; color:var(--c-sage-dark) !important; opacity:.75; line-height:1;}
700
+ .c-empty__title{margin:0; font-size:var(--t-lg); font-weight:600; color:var(--c-text) !important;
701
  letter-spacing:-.015em;}
702
  .c-empty__body{margin:0; font-size:var(--t-label); line-height:1.55;
703
+ color:var(--c-text-2) !important; max-width:44ch;}
704
  .c-empty--compact{padding:var(--s4) 0; height:auto;}
705
  .c-empty--compact .c-empty__body{max-width:32ch; font-size:var(--t-micro);}
706
 
 
795
  .c-usage-panel{display:flex; flex-direction:column; gap:var(--s4);}
796
  .c-usage{display:flex; flex-direction:column; gap:1px;}
797
  .c-usage__label{margin:0; font-size:var(--t-micro); font-weight:600;
798
+ letter-spacing:.04em; color:var(--c-muted) !important;}
799
  .c-usage__figure{margin:2px 0 0; font-size:22px; line-height:1.15; font-weight:600;
800
+ color:var(--c-text) !important; font-variant-numeric:tabular-nums;}
801
+ .c-usage--absent .c-usage__figure{color:var(--c-muted) !important; font-size:18px;}
802
+ .c-usage__means{margin:2px 0 0; font-size:var(--t-micro); color:var(--c-sage-dark) !important;
803
  line-height:1.45;}
804
+ .c-usage--absent .c-usage__means{color:var(--c-muted) !important; font-style:italic;}
805
+ .c-usage__detail{margin:3px 0 0; font-size:11px; color:var(--c-muted) !important; line-height:1.45;}
806
  .c-usage__more{margin-top:var(--s3); border-top:1px solid var(--c-hairline) !important;
807
  padding-top:var(--s3);}
808
+ .c-usage__moretoggle{cursor:pointer; font-size:var(--t-micro); color:var(--c-muted) !important;
809
  list-style:none;}
810
  .c-usage__moretoggle::-webkit-details-marker{display:none;}
811
  .c-usage__moretoggle::after{content:" +"; opacity:.7;}
812
  details[open] .c-usage__moretoggle::after{content:" -";}
813
  .c-usage__morebody{margin-top:var(--s2); font-size:11px; line-height:1.5;
814
+ color:var(--c-muted) !important;}
815
 
816
  /* The worker's own figures, on the card for the machine they describe. */
817
  .c-worker__energy{margin:var(--s3) 0 0; display:flex; flex-direction:column; gap:1px;
818
  padding-top:var(--s3); border-top:1px solid var(--c-hairline) !important;}
819
+ .c-worker__energy-figure{font-size:15px; font-weight:600; color:var(--c-text) !important;
820
  font-variant-numeric:tabular-nums;}
821
+ .c-worker__energy-means{font-size:var(--t-micro); color:var(--c-sage-dark) !important;}
822
+ .c-worker__energy-total{margin-top:3px; font-size:11px; color:var(--c-muted) !important;
823
  line-height:1.45;}
824
+ .c-worker__energy-note{margin-top:2px; font-size:11px; color:var(--c-muted) !important;
825
  font-style:italic;}
826
+ .c-worker__energy--absent{font-size:var(--t-micro); color:var(--c-muted) !important;
827
  line-height:1.45; font-style:italic;}
828
 
829
  /* Scope headings inside the energy panel. Small and quiet: they label the
830
  figure, they are not the figure. */
831
  .c-energy__scope{font-size:var(--t-micro); font-weight:600; letter-spacing:.04em;
832
+ color:var(--c-muted) !important; margin:var(--s3) 0 2px;}
833
  .c-energy>.c-energy__scope:first-child{margin-top:0;}
834
 
835
  /* An explanation under a worker card, for a state the chips cannot carry
836
  alone. Used by "unapproved", where the useful information is what the
837
  operator has to do next. */
838
  .c-worker__note{margin:var(--s2) 0 0; font-size:var(--t-micro); line-height:1.45;
839
+ color:var(--c-muted) !important; max-width:44ch;}
840
 
841
  /* ========================================================================
842
  LIVE ACTIVITY
 
850
  .c-activity--wait{border-left-color:#C8A24A;}
851
  .c-activity--done{border-left-color:var(--c-sage-dark);}
852
  .c-activity__head{display:flex; align-items:center; gap:var(--s2); margin:0;}
853
+ .c-activity__headline{font-weight:600; color:var(--c-text) !important; font-size:var(--t-body);}
854
+ .c-activity__dot{color:var(--c-sage-dark) !important;}
855
+ .c-activity__detail{margin:6px 0 0; color:var(--c-muted) !important; line-height:1.5;
856
  max-width:var(--measure); overflow-wrap:anywhere;}
857
+ .c-activity__timing,.c-activity__note{margin:6px 0 0; color:var(--c-muted) !important;
858
  font-size:var(--t-micro);}
859
  .c-activity__note{font-style:italic;}
860
  .c-activity__bar{margin-top:var(--s3); height:4px; border-radius:2px;
 
899
  .c-receipt{padding:var(--s3) 0; border-top:1px solid var(--c-hairline) !important;}
900
  .c-receipt__head{margin:0; display:flex; align-items:baseline; gap:var(--s2);
901
  flex-wrap:wrap;}
902
+ .c-receipt__turn{font-size:var(--t-micro); font-weight:600; color:var(--c-muted) !important;
903
  letter-spacing:.04em;}
904
+ .c-receipt__cost{font-size:16px; font-weight:600; color:var(--c-text) !important;
905
  font-variant-numeric:tabular-nums;}
906
+ .c-receipt__means{font-size:var(--t-micro); color:var(--c-sage-dark) !important;}
907
  .c-receipt .c-chips{margin-top:2px;}
908
  .c-receipt .c-steps{margin-top:var(--s2); padding-top:var(--s2);}
909
 
 
911
  Folded away by default: the trace above already says which tools ran, and
912
  this is for the moment you want to know why. */
913
  .c-turns{margin-top:var(--s2); font-size:var(--t-micro);}
914
+ .c-turns__toggle{cursor:pointer; color:var(--c-muted) !important; list-style:none;
915
  padding:2px 0; user-select:none;}
916
  .c-turns__toggle::-webkit-details-marker{display:none;}
917
  .c-turns__toggle::after{content:" +"; opacity:.7;}
918
  details[open]>.c-turns__toggle::after{content:" -";}
919
  .c-turns .c-steps{margin-top:var(--s1); border-top:1px solid var(--c-hairline) !important;}
920
+ .c-step__lead{color:var(--c-muted) !important; margin-right:5px;}
921
 
922
  /* A run that ended without an answer. It is not a message and it is not a
923
  cost, so it is neither a bubble nor a receipt: one line, attached to the
 
928
  background:#FDF8EA; border-left:2px solid var(--c-warn-rule) !important;
929
  border-radius:0 var(--r-md) var(--r-md) 0;
930
  padding:var(--s2) var(--s3); font-size:var(--t-micro);
931
+ color:var(--c-text-2) !important;}
932
+ .c-outcome__turn{flex:0 0 auto; font-weight:600; color:#5A4512 !important;}
933
  .c-outcome__text{min-width:0; overflow-wrap:anywhere;}
934
 
935
  /* ========================================================================
 
939
  border-top:1px solid var(--c-hairline) !important;
940
  display:flex; flex-direction:column; gap:5px;}
941
  .c-step{display:flex; align-items:flex-start; gap:var(--s2);
942
+ font-size:var(--t-micro); line-height:1.45; color:var(--c-muted) !important;}
943
+ .c-step__mark{flex:0 0 12px; text-align:center; color:var(--c-muted) !important;}
944
+ .c-step--ok .c-step__mark{color:var(--c-sage-dark) !important;}
945
+ .c-step--warn .c-step__mark{color:#A8541F !important;}
946
+ .c-step--work .c-step__mark{color:var(--c-text) !important;}
947
  .c-step__body{min-width:0; overflow-wrap:anywhere;}
948
  .c-step__tool{background:var(--c-fill); border-radius:4px; padding:1px 5px;
949
+ margin-right:6px; font-size:11px; color:var(--c-text) !important;}
950
+ .c-step__timing{margin-left:auto; flex:0 0 auto; color:var(--c-muted) !important;
951
  font-variant-numeric:tabular-nums;}
952
 
953
  /* ========================================================================
 
1180
 
1181
  /* What the offered library members actually do, one click from the picker. */
1182
  .c-libhelp{margin:var(--s2) 0 0; font-size:var(--t-micro);}
1183
+ .c-libhelp__toggle{cursor:pointer; color:var(--c-muted) !important; list-style:none;}
1184
  .c-libhelp__toggle::-webkit-details-marker{display:none;}
1185
  .c-libhelp__toggle::after{content:" +"; opacity:.7;}
1186
  details[open] .c-libhelp__toggle::after{content:" -";}
 
1188
  display:flex; flex-direction:column; gap:6px;}
1189
  .c-libhelp__item{display:flex; flex-wrap:wrap; align-items:baseline; gap:6px;
1190
  line-height:1.45;}
1191
+ .c-libhelp__name{font-weight:600; color:var(--c-text) !important;}
1192
+ .c-libhelp__kind{font-size:11px; color:var(--c-muted) !important; text-transform:uppercase;
1193
  letter-spacing:.06em;}
1194
  .c-libhelp__ref{background:var(--c-fill); border-radius:4px; padding:1px 5px;
1195
+ font-size:11px; color:var(--c-muted) !important;}
1196
+ .c-libhelp__what{flex:1 1 100%; color:var(--c-muted) !important; max-width:var(--measure);}
1197
+ .c-libhelp__note{margin:var(--s2) 0 0; color:var(--c-muted) !important; font-style:italic;}
1198
 
1199
  .c-composer-foot{display:flex !important; align-items:center !important;
1200
  justify-content:space-between !important; gap:var(--s3) !important;
 
1289
  .c-shell>*:has(.c-skip){height:0 !important; min-height:0 !important;
1290
  overflow:visible !important;}
1291
  .c-skip{position:absolute; left:-9999px; top:0; background:var(--c-surface);
1292
+ color:var(--c-sage-deep) !important; padding:var(--s3) var(--s4);
1293
  border-radius:var(--r-md); z-index:100; font-weight:600;}
1294
  .c-skip:focus{left:var(--s4); top:var(--s4);}
1295
 
 
1306
  The address and the code are the two things a person copies, so they are
1307
  the two things drawn as copyable blocks rather than as prose. */
1308
  .c-join{display:flex; flex-direction:column; gap:var(--s2); max-width:var(--measure);}
1309
+ .c-join__lead{margin:var(--s2) 0 0; font-size:var(--t-micro); color:var(--c-muted) !important;}
1310
  .c-join__address,.c-join__code{
1311
  display:block; background:var(--c-fill); border:1px solid var(--c-hairline) !important;
1312
  border-radius:var(--r-md); padding:var(--s3); font-family:var(--mono);
1313
+ font-size:var(--t-label); color:var(--c-text) !important; word-break:break-all;
1314
  user-select:all;}
1315
  .c-join__alts{list-style:none; margin:0; padding:0; display:flex;
1316
  flex-direction:column; gap:4px;}
1317
+ .c-join__alt{font-family:var(--mono); font-size:var(--t-micro); color:var(--c-muted) !important;}
1318
  .c-join__cmd{margin:0; background:var(--c-surface); border:1px solid var(--c-hairline) !important;
1319
  border-radius:var(--r-md); padding:var(--s3); font-family:var(--mono);
1320
  font-size:11.5px; line-height:1.6; overflow-x:auto; white-space:pre;
1321
+ color:var(--c-text-2) !important; user-select:all;}
1322
+ .c-join__note{margin:0; font-size:var(--t-micro); color:var(--c-muted) !important;
1323
  line-height:1.55; max-width:56ch;}
1324
  .c-join__note code{font-family:var(--mono); font-size:11px;
1325
  background:var(--c-fill); border-radius:4px; padding:1px 5px;}
 
1335
  .c-step-num{display:flex; gap:var(--s3); align-items:flex-start;}
1336
  .c-step-num__n{flex:none; width:24px; height:24px; border-radius:50%;
1337
  display:grid; place-items:center; margin-top:1px;
1338
+ background:var(--c-mint); color:var(--c-sage-deep) !important;
1339
  font-size:12px; font-weight:700;}
1340
  .c-step-num__body{flex:1 1 auto; min-width:0; display:flex;
1341
  flex-direction:column; gap:var(--s2);}
1342
  .c-step-num__head{margin:0; font-size:var(--t-body); font-weight:650;
1343
+ color:var(--c-text) !important; letter-spacing:-.01em;}
1344
 
1345
  .c-join__qr{margin-top:var(--s3);}
1346
  .c-join__qr svg{width:160px; height:160px; display:block;
 
1374
  .c-credit{display:flex; align-items:flex-start; gap:var(--s3); margin:0; max-width:100%;}
1375
  .c-credit__img{width:56px; height:36px; object-fit:cover; border-radius:6px;
1376
  display:block; flex:none;}
1377
+ .c-credit__text{font-size:10.5px; line-height:1.45; color:var(--c-muted) !important;}
1378
+ .c-credit__text a{color:var(--c-sage-deep) !important; text-decoration:underline;}
1379
  .c-credit--compact{gap:var(--s2);}
1380
  .c-credit--compact .c-credit__img{width:44px; height:28px;}
1381
 
 
1507
  selected state has to survive a squint test: accent border, filled check,
1508
  tinted wash — three signals, any one of which is enough. */
1509
  .c-libpage{max-width:var(--shell-max); margin:0 auto; padding:var(--s5) var(--shell-pad) var(--s8);}
1510
+ .c-libpage__back{font-size:var(--t-label); color:var(--c-text-2) !important; text-decoration:none;
1511
  display:inline-flex; align-items:center; gap:6px;}
1512
+ .c-libpage__back:hover{color:var(--c-text) !important;}
1513
  .c-libpage__title{margin:var(--s3) 0 4px; font-family:var(--font-display);
1514
  font-weight:600; font-size:clamp(26px,4vw,34px); letter-spacing:-.015em;
1515
+ color:var(--c-text) !important;}
1516
+ .c-libpage__lede{margin:0 0 var(--s5); max-width:var(--measure); color:var(--c-text-2) !important;}
1517
  .c-libsave{position:sticky; top:0; z-index:9; display:flex; align-items:center; gap:var(--s3);
1518
  background:color-mix(in srgb, var(--c-canvas) 88%, transparent);
1519
  backdrop-filter:blur(6px); padding:var(--s2) 0; margin-bottom:var(--s2);}
1520
+ .c-libsave__count{font-size:var(--t-label); color:var(--c-text-2) !important;}
1521
+ .c-libsave__count strong{color:var(--c-sage-deep) !important; font-weight:650;}
1522
 
1523
  .c-libgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
1524
  gap:var(--s4); margin:var(--s4) 0;}
 
1537
  width:24px; height:24px; border-radius:50%;
1538
  display:flex; align-items:center; justify-content:center;
1539
  font-size:14px; line-height:1;
1540
+ border:1.5px solid var(--c-border) !important; color:var(--c-muted) !important;
1541
  background:var(--c-surface);
1542
  transition:all .15s ease;}
1543
  .c-libcard.is-on .c-libcard__check{border-color:var(--c-accent);
1544
+ background:var(--c-accent); color:#fff !important;}
1545
  .c-libcard__check::before{content:"+";}
1546
  .c-libcard.is-on .c-libcard__check::before{content:"✓";}
1547
  .c-libcard__media{margin:calc(var(--s4)*-1) calc(var(--s4)*-1) var(--s2);
 
1558
  .c-libcard__media.is-playing .c-libcard__poster{opacity:0;}
1559
  .c-libcard__play{position:relative; z-index:1;
1560
  display:inline-flex; align-items:center; gap:6px;
1561
+ font-size:var(--t-micro); color:var(--c-text-2) !important;
1562
  background:color-mix(in srgb, var(--c-surface) 92%, transparent);
1563
  border:1px solid var(--c-hairline) !important; backdrop-filter:blur(3px);
1564
  border-radius:999px; padding:4px 10px; opacity:0;
1565
  transition:opacity .15s ease;}
1566
+ .c-libcard__play::before{content:"▶"; font-size:9px; color:var(--c-sage-deep) !important;}
1567
  /* The invitation appears on approach and never sits permanently over the
1568
  result it is inviting you to watch. Always visible where there is no
1569
  poster to obscure, since then it is the only thing in the frame. */
 
1574
  .c-libcard__head{display:flex; align-items:center; gap:var(--s2); padding-right:28px;}
1575
  .c-libcard__kind{font-size:var(--t-micro); letter-spacing:.06em; text-transform:uppercase;
1576
  padding:2px 8px; border-radius:999px; background:var(--c-fill);
1577
+ color:var(--c-text-2) !important; flex:none;}
1578
+ .c-libcard__kind--skill{background:var(--c-mint); color:var(--c-sage-deep) !important;}
1579
+ .c-libcard__name{margin:0; font-size:var(--t-body); font-weight:650; color:var(--c-text) !important;
1580
  text-transform:capitalize;}
1581
+ .c-libcard__author{margin:0; font-size:var(--t-micro); color:var(--c-muted) !important;}
1582
  .c-libcard__desc{margin:2px 0 0; font-size:13px; line-height:1.5;
1583
+ color:var(--c-text-2) !important;
1584
  display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical;
1585
  overflow:hidden;}
1586
  .c-libcard__ref{margin-top:auto; padding-top:var(--s2); font-family:var(--mono);
1587
+ font-size:11px; color:var(--c-muted) !important;}
1588
 
1589
  /* ---- Navigation, in the header band -----------------------------------
1590
  A button (the library, which navigates) beside a link (a section of this
 
1702
  .c-shell:has(.c-identity:not(:empty)):has(.c-noworker-hook) .c-chat{
1703
  min-height:300px !important; max-height:300px !important;}
1704
  }
1705
+ .c-veil__title{margin:0 0 6px; font-weight:650; font-size:var(--t-lg); color:var(--c-text) !important;}
1706
+ .c-veil__body{margin:0 0 var(--s4); color:var(--c-text-2) !important; line-height:1.55;}
1707
  /* The colour is forced for the same reason the borders are: gradio styles
1708
  anchors inside its container with two classes, which outranks ours, so the
1709
  white label on this button was being repainted the theme's link green —
 
1769
  padding:8px var(--s3); border-bottom:1px solid var(--c-hairline) !important;
1770
  background:var(--c-fill);}
1771
  .c-madecard__dot{width:8px; height:8px; border-radius:50%; background:var(--c-accent); flex:none;}
1772
+ .c-madecard__name{font-family:var(--mono); font-size:12px; color:var(--c-text) !important;
1773
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
1774
+ .c-madecard__kind{margin-left:auto; flex:none; font-size:var(--t-micro); color:var(--c-muted) !important;
1775
  letter-spacing:.05em; text-transform:uppercase;}
1776
  /* A glance, not a document viewer. The preview sits inside a conversation
1777
  and has to read as one object at one glance; at 340px it was a scrolling
 
1786
  background:linear-gradient(to bottom, transparent, var(--c-surface));}
1787
  /* A document page: a white sheet with real margins and the actual text. */
1788
  .c-made--doc .c-madecard__body{font-family:Georgia,'Times New Roman',serif;
1789
+ color:#26241F !important; line-height:1.6; font-size:13.5px;}
1790
  .c-made--doc .c-madecard__body h4{margin:0 0 8px; font-size:16px; font-weight:700;}
1791
  .c-made--doc .c-madecard__body p{margin:0 0 8px;}
1792
  /* A sheet: a real grid of the actual cells. */
 
1799
  gap:var(--s2);}
1800
  .c-madeslide{aspect-ratio:16/9; border:1px solid var(--c-hairline) !important; border-radius:6px;
1801
  background:#fff; padding:8px; display:flex; flex-direction:column; gap:3px; overflow:hidden;}
1802
+ .c-madeslide__no{font-size:9px; color:var(--c-muted) !important;}
1803
+ .c-madeslide__title{font-size:11px; font-weight:650; color:var(--c-text) !important; line-height:1.25;}
1804
  .c-madeslide__line{height:3px; border-radius:2px; background:var(--c-fill); width:86%;}
1805
  .c-madeslide__line+.c-madeslide__line{width:70%;}
1806
  /* Code or plain text: the content itself, monospaced. */
 
1810
  its own taller cap, which meant a stylesheet came back twice the height of
1811
  a document and the shelf of results had no common measure. */
1812
  .c-made--text pre{margin:0; padding:var(--s3) var(--s4); font-family:var(--mono);
1813
+ font-size:12px; line-height:1.55; color:var(--c-text) !important; overflow:hidden; max-height:210px;
1814
  white-space:pre-wrap; overflow-wrap:anywhere;}
1815
  .c-made__foot{padding:6px var(--s3); border-top:1px solid var(--c-hairline) !important;
1816
+ font-size:var(--t-micro); color:var(--c-muted) !important;}
1817
 
1818
  @media (max-width:700px){
1819
  .c-libgrid{grid-template-columns:1fr; gap:var(--s3);}